/* a.css */

/* ============================================================
   A 组：企業の方へ、案件ボード（一覧・詳細）、事例 —— v4（09-24 网站统一执行契约）
   另有首页（pages/home.py，主会话维护）在用的三组类名：.a-note、会員ステップ（.a-wall / .a-lv）、FAQ（.a-faq），放在最前面，不要删。
   v4 的公共样式（首屏、编号区块、页尾、渐变字）在 css/v2.css；这里只写本组页面的内容块。
   规则：渐变是唯一的强调色，其余只用黑白灰；分类用文字或细边框；编号用等宽字（--mono）；
   列表一律「上方一条黑线 + 每项下方一条细线」，和首页的事業一覧、University 三层同一做法。
   ============================================================ */

/* ================================================================ 首页在用（pages/home.py） */
.a-note { font-size: 12px; color: var(--text-3); }

/* 会員ステップ：Raycast 功能墙。左边一段话，悬停或点某一句，右边换成那一级（不自动轮播） */
.a-wall { display: grid; grid-template-columns: minmax(0, 1fr); gap: 24px; word-break: auto-phrase; }
.a-wall-q { font-size: 17px; font-weight: 700; }
.a-wall-text { margin-top: 10px; font-size: 22px; font-weight: 700; line-height: 2; }
.a-wall-s { display: inline; padding: 0; border: 0; background: none; font: inherit; line-height: inherit; color: var(--text-3); text-align: left; cursor: pointer; transition: color 150ms var(--ease-std); }
.a-wall-s:hover { color: var(--text-2); }
.a-wall-s.is-on { color: var(--text); background: linear-gradient(transparent 64%, rgba(101, 71, 245, 0.2) 64%); }
.a-wall-s:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; border-radius: 4px; }
.a-wall-hint { margin-top: 16px; font-size: 13px; color: var(--text-3); }
.a-wall-hint .is-mouse { display: none; }
@media (hover: hover) { .a-wall-hint .is-mouse { display: inline; } .a-wall-hint .is-touch { display: none; } }
.a-lv { padding: 22px; border: 1px solid var(--border); border-radius: var(--r-lg); background: var(--surface); box-shadow: 0 30px 60px -44px rgba(9, 9, 9, 0.4); }
.a-lv[hidden] { display: none; }
.a-lv-top { display: flex; align-items: center; justify-content: space-between; gap: 12px; font-size: 13px; color: var(--text-3); font-variant-numeric: tabular-nums; }
.a-lv-rail { list-style: none; margin: 0; padding: 0; display: flex; gap: 6px; }
.a-lv-rail li { width: 22px; height: 4px; border-radius: 2px; background: var(--surface-2); }
.a-lv-rail li.done { background: #C9BEFB; }
.a-lv-rail li.on { background: var(--accent); }
.a-lv-en { margin-top: 18px; font-size: 12px; font-weight: 600; letter-spacing: 0.16em; color: var(--accent); }
.a-lv h3 { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; margin-top: 4px; font-size: 28px; }
.a-lv-tag { display: inline-flex; align-items: center; height: 26px; padding: 0 10px; border: 1px solid var(--border-strong); border-radius: var(--r-pill); font-size: 12px; font-weight: 500; color: var(--text-2); }
.a-lv-dl { margin: 18px 0 0; display: flex; flex-direction: column; }
.a-lv-dl > div { display: grid; grid-template-columns: minmax(0, 1fr); gap: 4px; padding: 12px 0; border-top: 1px solid var(--border); }
.a-lv-dl dt { font-size: 12px; color: var(--text-3); }
.a-lv-dl dd { margin: 0; font-size: 15px; }
.a-lv-dl ul { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 4px; }
.a-lv-dl li { position: relative; padding-left: 16px; }
.a-lv-dl li::before { content: ""; position: absolute; left: 0; top: 0.8em; width: 7px; height: 2px; border-radius: 1px; background: var(--accent); }

/* FAQ（shadcn Accordion 的做法，字号放大） */
.a-faq { max-width: 880px; border-top: 1px solid var(--border); word-break: auto-phrase; }
.a-faq-item { border-bottom: 1px solid var(--border); }
.a-faq-item summary { display: flex; align-items: center; justify-content: space-between; gap: 16px; min-height: 64px; padding: 14px 0; font-size: 17px; font-weight: 500; cursor: pointer; list-style: none; }
.a-faq-item summary::-webkit-details-marker { display: none; }
.a-faq-item summary:hover .a-faq-icon { border-color: var(--border-hover); }
.a-faq-icon { display: inline-flex; align-items: center; justify-content: center; width: 32px; height: 32px; flex-shrink: 0; border: 1px solid var(--border); border-radius: 50%; transition: transform 150ms var(--ease-std), border-color 150ms var(--ease-std); }
.a-faq-item[open] .a-faq-icon { transform: rotate(45deg); }
.a-faq-item p { max-width: 720px; padding: 0 48px 20px 0; font-size: 15px; color: var(--text-2); }

@media (min-width: 768px) {
  .a-lv-dl > div { grid-template-columns: 110px minmax(0, 1fr); gap: 16px; }
}
@media (min-width: 1100px) {
  .a-wall { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 64px; align-items: center; }
  .a-wall-text { font-size: 30px; line-height: 1.65; }
  .a-lv { min-height: 440px; padding: 28px 32px; }
  .a-faq-item summary { min-height: 72px; font-size: 19px; }
  .a-faq-item p { font-size: 16px; }
}

/* ================================================================ v4 内页共用（main.v2.a-v4） */
.a-v4 { word-break: auto-phrase; }
/* 首屏自己有下边线，紧跟的第一个区块不再画上边线（两条叠成 2px） */
.a-v4 .v2-phero + .v2-sec { border-top: 0; }
/* 黑底区块：v2.css 给首页黑底块的上边距只有 24px（它接在黑底大字后面）；内页的黑底块接在白底后面，恢复正常上边距 */
.a-v4 .v2-dark.v2-sec { padding-top: 64px; }
/* 可点区域不小于 44px：文字链接外观不变，只把可点范围上下扩开 */
.a-v4 .link { position: relative; }
.a-v4 .link::after { content: ""; position: absolute; left: 0; right: 0; top: 50%; height: 44px; transform: translateY(-50%); }
/* 输入框、按钮的聚焦框用黑色（渐变之外不再用紫色） */
.a-v4 input:focus-visible, .a-v4 select:focus-visible, .a-v4 button:focus-visible { outline: 2px solid var(--text); outline-offset: 2px; }
/* 页尾两行大字：本组的收尾句比首页长（最长一行 12 字），字号降一档、允许按词组换行，手机上不横向溢出。
   Safari 不认 auto-phrase，先写 normal 兜住：不支持时按普通规则换行 */
.a-v4 .v2-final .v2-slogan { font-size: clamp(34px, 7vw, 96px); word-break: normal; word-break: auto-phrase; }
.a-v4 .v2-final .v2-slogan .l2 { white-space: normal; }

.a-sample { display: inline-flex; align-items: center; height: 22px; padding: 0 8px; border-radius: 2px; border: 1px dashed var(--border-strong); font-size: 11px; font-weight: 500; color: var(--text-3); white-space: nowrap; }
.a-fine { margin-top: 16px; font-size: 13px; color: var(--text-3); }
.a-tax { margin-left: 4px; font-size: 13px; color: var(--text-3); }
.a-skills { display: flex; flex-wrap: wrap; gap: 6px; }
.a-skill { display: inline-flex; align-items: center; height: 26px; padding: 0 10px; border: 1px solid var(--border-strong); border-radius: 2px; font-size: 12px; font-weight: 500; color: var(--text); white-space: nowrap; }
/* 等宽小编号（01.1、02.3 …） */
.a-v4 .n { font-family: var(--mono); font-size: 11px; font-weight: 600; letter-spacing: 0.04em; color: var(--text-3); font-variant-numeric: tabular-nums; }

@media (min-width: 768px) {
  .a-v4 .v2-dark.v2-sec { padding-top: 96px; }
}

/* ================================================================ 事例 */
/* 按「Echo の関わり方」筛选（单选胶囊） */
.a-pills-row { display: flex; flex-direction: column; gap: 10px; margin-bottom: 20px; }
.a-pills-k { font-size: 13px; color: var(--text-3); }
.a-pills { display: flex; flex-wrap: wrap; gap: 8px; }
.a-pills button { display: inline-flex; align-items: center; gap: 8px; height: 44px; padding: 0 18px; border: 1px solid var(--border-strong); border-radius: var(--r-pill); background: transparent; font-family: var(--font-body); font-size: 14px; color: var(--text); cursor: pointer; transition: background-color 150ms var(--ease-std), border-color 150ms var(--ease-std), color 150ms var(--ease-std); }
.a-pills button .n { color: var(--text-3); }
.a-pills button:hover { border-color: var(--text); }
.a-pills button[aria-pressed="true"] { background: var(--text); border-color: var(--text); color: var(--bg); }
.a-pills button[aria-pressed="true"] .n { color: rgba(255, 255, 255, 0.64); }

/* 事例卡：等宽编号行 → 课题 → 固定字段；有真实数字的那张占满一行，左边渐变大数字 */
.a-cases { display: grid; grid-template-columns: minmax(0, 1fr); gap: 12px; }
.a-case { display: flex; flex-direction: column; padding: 20px; color: var(--text); }
.a-case[hidden] { display: none; }
.a-case-num { padding-bottom: 18px; }
.a-case-big { font-family: var(--font-display); font-size: 72px; font-weight: 700; line-height: 1; letter-spacing: -0.03em; }
.a-case-big small { font-size: 0.45em; }
.a-case-cap { margin-top: 8px; font-size: 13px; color: var(--text-2); }
.a-case-meta { display: flex; flex-wrap: wrap; gap: 4px 12px; font-family: var(--mono); font-size: 11px; color: var(--text-3); }
.a-case h3 { margin-top: 8px; font-size: 19px; line-height: 1.45; }
.a-case-dl { margin: 14px 0 0; border-top: 1px solid var(--border); }
.a-case-dl > div { display: grid; grid-template-columns: 7.5em minmax(0, 1fr); gap: 12px; padding: 9px 0; border-bottom: 1px solid var(--border); font-size: 14px; }
.a-case-dl dt { padding-top: 2px; font-size: 12px; color: var(--text-3); }
.a-case-dl dd { margin: 0; }
.a-case-res b { font-size: 17px; }
.a-case .a-note { margin-top: 10px; }
.a-cases-empty { padding: 24px 0; color: var(--text-2); }
.a-cases-empty[hidden] { display: none; }

/* 事例に載せる内容（黑底）：8 项 */
.a-chain { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); column-gap: 20px; border-top: 1px solid var(--text); }
.a-chain li { display: flex; flex-direction: column; gap: 6px; padding: 16px 0 20px; border-bottom: 1px solid var(--border); }
.a-chain b { font-size: 16px; }
.a-chain span:last-child { font-size: 13px; color: var(--text-2); }

@media (min-width: 768px) {
  .a-pills-row { flex-direction: row; align-items: center; gap: 16px; }
  .a-cases { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .a-case.is-wide { grid-column: 1 / -1; display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.8fr); column-gap: 40px; padding: 28px; }
  .a-case.is-wide .a-case-num { padding-bottom: 0; }
  .a-case.is-wide .a-case-big { font-size: 112px; }
  .a-chain { grid-template-columns: repeat(4, minmax(0, 1fr)); column-gap: 28px; }
  .a-chain li { padding: 20px 0 26px; }
}
@media (min-width: 1100px) {
  .a-cases { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .a-case.is-wide .a-case-big { font-size: 144px; }
}

/* ================================================================ 企業の方へ */
/* H1 里的小字行「企業向け AI 導入支援」：和首屏副行同字号 */
.a-ph1-k { display: block; margin-top: 14px; font-size: 17px; font-weight: 700; line-height: 1.5; letter-spacing: 0; }

/* 01 サービス一覧（黑底）：目录式一行一项 */
.a-svcidx { border-top: 1px solid var(--text); }
.a-svcrow { display: grid; grid-template-columns: minmax(0, 1fr); gap: 8px; padding: 20px 0 14px; border-bottom: 1px solid var(--border); }
.a-svcrow-main h3 { font-family: var(--font-display); font-size: 26px; font-weight: 600; letter-spacing: -0.01em; }
.a-svcrow-main p { margin-top: 4px; font-size: 14px; color: var(--text-2); }
.a-svcrow-facts { margin: 4px 0 0; }
.a-svcrow-facts > div { display: grid; grid-template-columns: 9em minmax(0, 1fr); gap: 12px; padding: 5px 0; font-size: 13px; }
.a-svcrow-facts dt { color: var(--text-3); }
.a-svcrow-facts dd { margin: 0; color: var(--text); }
.a-svcrow-go { justify-self: start; font-size: 14px; }

/* 02 サービスの詳細：固定字段（PickHub 服务大厅），每项之间一条细线 */
.a-svcs { border-top: 1px solid var(--text); }
.a-svc { padding: 28px 0 32px; border-bottom: 1px solid var(--border); }
.a-svc:last-child { padding-bottom: 0; border-bottom: 0; }
.a-svc-head { display: flex; flex-direction: column; gap: 16px; padding-bottom: 20px; }
.a-svc-no { font-family: var(--mono); font-size: 11px; font-weight: 600; color: var(--text-3); }
.a-svc-title h3 { margin-top: 6px; font-size: 24px; }
.a-svc-sum { margin-top: 8px; max-width: 46em; font-size: 15px; color: var(--text-2); }
.a-svc-cta { display: flex; flex-wrap: wrap; align-items: center; gap: 12px 24px; }
.a-svc-keys { margin: 0; display: grid; grid-template-columns: minmax(0, 1fr); border-top: 1px solid var(--border); }
.a-svc-keys > div { padding: 14px 0; border-bottom: 1px solid var(--border); }
.a-svc-keys dt { margin-bottom: 4px; font-size: 12px; color: var(--text-3); }
.a-svc-keys dd { margin: 0; font-size: 15px; font-weight: 500; }
.a-svc-lists { display: grid; grid-template-columns: minmax(0, 1fr); gap: 18px; padding: 20px 0; }
.a-svc-lists h4 { margin-bottom: 8px; font-size: 13px; font-weight: 700; }
.a-svc-lists ul { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 6px; }
.a-svc-lists li { position: relative; padding-left: 16px; font-size: 14px; color: var(--text-2); }
.a-svc-lists li::before { content: ""; position: absolute; left: 0; top: 0.85em; width: 8px; height: 1px; background: var(--text-3); }
.a-svc-case { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 16px; padding-top: 12px; border-top: 1px dashed var(--border-strong); font-size: 14px; }
.a-svc-case .k { font-family: var(--mono); font-size: 11px; color: var(--text-3); }
.a-svc-case .v { flex: 1; min-width: 12em; }
.a-svc-case .a-note { margin-left: 10px; }
.a-svc-term { margin-bottom: 20px; }
.a-svc-term-k { margin-bottom: 8px; font-size: 12px; color: var(--text-3); }
.a-models { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; margin-top: 12px; }
.a-models-k { margin-right: 4px; font-size: 12px; color: var(--text-3); }
.a-model { display: inline-flex; align-items: center; height: 32px; padding: 0 14px; border: 1px solid var(--border-strong); border-radius: var(--r-pill); font-family: var(--font-display); font-size: 13px; font-weight: 500; }
.a-model.is-more { border-style: dashed; font-family: var(--font-body); color: var(--text-3); }

/* 03 FDE の働き方：左 哑铃图、右 六项能力，下面一段说明 */
.a-work { display: grid; grid-template-columns: minmax(0, 1fr); border-top: 1px solid var(--text); }
.a-work > div { min-width: 0; padding: 24px 0; border-bottom: 1px solid var(--border); }
.a-work-caps h3 { font-size: 19px; }
.a-work-caps > p { margin-top: 4px; font-size: 14px; color: var(--text-2); }
.a-caps { list-style: none; margin: 14px 0 0; padding: 0; border-top: 1px solid var(--border); }
.a-caps li { display: flex; align-items: baseline; gap: 14px; padding: 10px 0; border-bottom: 1px solid var(--border); font-size: 15px; font-weight: 500; }
.a-work-quote { border-bottom: 0 !important; }
.a-quote { max-width: 24em; font-size: 22px; font-weight: 700; line-height: 1.5; }
.a-work-quote .a-quote + p { margin-top: 10px; max-width: 42em; font-size: 15px; color: var(--text-2); }
.a-work-quote .link { margin-top: 14px; }

/* 哑铃图：deck 第 5 页的示意数字，三项都换算成「従来 = 100」共用一根轴。灰 = 従来、黑 = 改善後 */
.a-db { display: flex; flex-direction: column; gap: 12px; }
.a-db-head { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; font-size: 12px; color: var(--text-3); }
.a-ex { display: inline-flex; align-items: center; height: 22px; padding: 0 8px; border-radius: 2px; background: var(--text); color: var(--bg); font-size: 12px; font-weight: 700; }
.a-db-t { font-size: 19px; line-height: 1.4; }
.a-db-legend { display: flex; flex-wrap: wrap; gap: 6px 18px; font-size: 13px; color: var(--text-2); }
.a-db-legend span { display: inline-flex; align-items: center; gap: 8px; }
.a-db-legend i { width: 10px; height: 10px; border-radius: 50%; flex-shrink: 0; }
.a-db-legend i.is-before, .a-db-dot.is-before { background: #BDBDB8; }
.a-db-legend i.is-after, .a-db-dot.is-after { background: var(--text); }
.a-db-row { display: grid; grid-template-columns: 40px minmax(0, 1fr); align-items: center; gap: 12px; padding: 14px 0 30px; border-bottom: 1px solid var(--border); }
.a-db-k { font-size: 13px; font-weight: 500; }
.a-db-track { position: relative; height: 12px; margin: 0 6px; }
.a-db-track::before { content: ""; position: absolute; left: 0; right: 0; top: 50%; height: 1px; background: var(--border); }
.a-db-line { position: absolute; top: 50%; left: var(--a); right: 0; height: 2px; margin-top: -1px; background: #BDBDB8; }
.a-db-dot { position: absolute; top: 50%; width: 12px; height: 12px; margin: -6px 0 0 -6px; border-radius: 50%; box-shadow: 0 0 0 2px var(--bg); cursor: default; }
.a-db-dot.is-after { left: var(--a); }
.a-db-dot.is-before { left: 100%; }
.a-db-v { position: absolute; top: 16px; font-size: 13px; font-weight: 600; white-space: nowrap; font-variant-numeric: tabular-nums; }
.a-db-v.is-after { left: var(--a); transform: translateX(-50%); }
.a-db-v.is-before { right: -6px; color: var(--text-2); }
.a-db-axis { display: grid; grid-template-columns: 1fr auto 1fr; margin-left: 58px; margin-right: 6px; font-size: 11px; color: var(--text-3); }
.a-db-axis span:nth-child(2) { text-align: center; }
.a-db-axis span:last-child { text-align: right; }

/* 04 なぜ今（黑底）：一句结论（99.7% 用渐变），下面引文和出处 */
.a-why { display: grid; grid-template-columns: minmax(0, 1fr); gap: 28px; }
.a-why-lead { max-width: 18em; font-size: clamp(26px, 4.4vw, 52px); font-weight: 700; line-height: 1.35; }
.a-why-lead b { font-weight: 700; white-space: nowrap; }
.a-why-body { max-width: 44em; }
.a-quote-long { padding-left: 16px; border-left: 1px solid var(--border-strong); font-size: 15px; color: var(--text-2); }
.a-src { margin-top: 14px; font-size: 12px; color: var(--text-3); }

/* 05 ご相談から検収までの流れ：七段，最后一格是相談入口 */
.a-steps7 { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: minmax(0, 1fr); column-gap: 32px; border-top: 1px solid var(--text); }
.a-steps7 > li { display: flex; flex-direction: column; gap: 6px; padding: 18px 0 20px; border-bottom: 1px solid var(--border); }
.a-steps7 b { font-size: 16px; }
.a-steps7 > li > span:last-child { font-size: 14px; color: var(--text-2); }
.a-steps7 > li.a-steps7-cta { gap: 12px; }
.a-steps7-cta p { font-size: 17px; font-weight: 700; }
.a-steps7-cta .btn { align-self: flex-start; }
.a-steps7 > li.a-steps7-cta > span:last-child { font-size: 12px; color: var(--text-3); }

@media (min-width: 768px) {
  .a-svc-keys { grid-template-columns: repeat(2, minmax(0, 1fr)); column-gap: 28px; }
  .a-svc-lists { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 28px; }
  .a-steps7 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (min-width: 1024px) {
  .a-ph1-k { font-size: 20px; }
  .a-svcrow { grid-template-columns: 64px minmax(0, 1fr) minmax(0, 1.05fr) auto; column-gap: 32px; align-items: start; padding: 28px 0; }
  .a-svcrow .n { padding-top: 12px; }
  .a-svcrow-main h3 { font-size: 32px; }
  .a-svcrow-facts { margin: 0; }
  .a-svcrow-go { margin-top: 6px; }
  .a-work { grid-template-columns: minmax(0, 1.7fr) minmax(0, 1fr); column-gap: 48px; }
  .a-work-quote { grid-column: 1 / -1; }
  .a-why { grid-template-columns: minmax(0, 1.15fr) minmax(0, 1fr); gap: 64px; align-items: end; }
}
@media (min-width: 1100px) {
  .a-svc { padding: 40px 0 44px; }
  .a-svc-head { flex-direction: row; align-items: flex-end; justify-content: space-between; gap: 40px; }
  .a-svc-cta { flex-shrink: 0; }
  .a-svc-title h3 { font-size: 30px; }
  .a-svc-keys { grid-template-columns: 1.5fr 1fr 1fr 1.4fr; }
  .a-svc-keys > div { padding: 18px 0; }
  .a-steps7 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
  .a-steps7 > li { min-height: 156px; padding: 20px 0 24px; }
}

/* ================================================================ 案件ボード（一覧） */
.a-board { display: grid; grid-template-columns: minmax(0, 1fr); gap: 16px; }
.a-results { min-width: 0; }

/* 左侧筛选：手机收成一个「絞り込み」开关，桌面一直展开并钉住 */
.a-side { border: 1px solid var(--border); border-radius: 4px; background: var(--surface); }
.a-side-sum { display: flex; align-items: center; gap: 8px; min-height: 48px; padding: 0 16px; cursor: pointer; list-style: none; font-size: 15px; font-weight: 500; }
.a-side-sum::-webkit-details-marker { display: none; }
.a-side-sum > svg:last-child { margin-left: auto; transform: rotate(90deg); transition: transform 150ms var(--ease-std); color: var(--text-3); }
.a-side[open] > .a-side-sum > svg:last-child { transform: rotate(-90deg); }
.a-side-n { display: inline-flex; align-items: center; justify-content: center; min-width: 20px; height: 20px; padding: 0 6px; border-radius: 10px; background: var(--text); color: var(--bg); font-family: var(--mono); font-size: 12px; font-variant-numeric: tabular-nums; }
.a-side-n[hidden] { display: none; }
.a-side-body { padding: 0 16px 16px; border-top: 1px solid var(--border); }
.a-fgroup { border: 0; margin: 0; padding: 14px 0 4px; min-width: 0; }
.a-fgroup + .a-fgroup { border-top: 1px solid var(--border); }
.a-fgroup legend { float: left; width: 100%; padding: 0; margin-bottom: 4px; font-size: 13px; font-weight: 700; }
.a-fgroup legend + * { clear: both; }
.a-check { display: flex; align-items: center; gap: 10px; min-height: 44px; font-size: 14px; cursor: pointer; }
.a-check input { width: 18px; height: 18px; margin: 0; accent-color: var(--text); flex-shrink: 0; cursor: pointer; }
.a-check .t { flex: 1; min-width: 0; line-height: 1.45; }
.a-check .n { min-width: 26px; text-align: center; }
.a-side .a-clear { width: 100%; justify-content: flex-start; margin-top: 6px; padding: 0 10px; }
.a-side-note { display: flex; gap: 8px; margin-top: 10px; padding-top: 14px; border-top: 1px solid var(--border); font-size: 12px; line-height: 1.6; color: var(--text-3); }
.a-side-note svg { margin-top: 2px; }

/* 状态标签：分类后面带数量，选中的下面一条黑线 */
.a-tabs { display: flex; gap: 2px; border-bottom: 1px solid var(--border); overflow-x: auto; scrollbar-width: none; }
.a-tabs::-webkit-scrollbar { display: none; }
.a-tab { position: relative; display: inline-flex; align-items: center; gap: 8px; min-height: 44px; padding: 0 12px; border: 0; background: none; font-family: var(--font-body); font-size: 15px; color: var(--text-2); cursor: pointer; white-space: nowrap; transition: color 150ms var(--ease-std); }
.a-tab:hover { color: var(--text); }
.a-tab[aria-pressed="true"] { color: var(--text); font-weight: 500; }
.a-tab[aria-pressed="true"]::after { content: ""; position: absolute; left: 8px; right: 8px; bottom: -1px; height: 2px; background: var(--text); }

/* 搜索、排序、列表/表格切换 */
.a-toolbar { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 8px; margin-top: 16px; }
.a-search { grid-column: 1 / -1; position: relative; display: flex; align-items: center; }
.a-search svg, .a-sort svg { position: absolute; left: 14px; color: var(--text-3); pointer-events: none; }
.a-search input, .a-sort select { height: 44px; border: 1px solid var(--border-strong); border-radius: 4px; background: var(--surface); font-family: var(--font-body); color: var(--text); transition: border-color 150ms var(--ease-std); }
.a-search input { width: 100%; padding: 0 14px 0 40px; font-size: 15px; }
.a-search input:focus, .a-sort select:focus { outline: none; border-color: var(--text); }
.a-sort { position: relative; display: flex; align-items: center; min-width: 0; }
.a-sort select { width: 100%; padding: 0 12px 0 38px; font-size: 14px; cursor: pointer; }
.a-view { display: inline-flex; }
.a-view button { display: inline-flex; align-items: center; gap: 6px; height: 44px; padding: 0 14px; border: 1px solid var(--border-strong); background: var(--surface); font-family: var(--font-body); font-size: 14px; color: var(--text-2); cursor: pointer; transition: background-color 150ms var(--ease-std), color 150ms var(--ease-std); }
.a-view button:first-child { border-radius: 4px 0 0 4px; }
.a-view button:last-child { border-left: 0; border-radius: 0 4px 4px 0; }
.a-view button[aria-pressed="true"] { background: var(--text); border-color: var(--text); color: var(--bg); font-weight: 500; }
.a-showing { display: flex; flex-wrap: wrap; align-items: baseline; justify-content: space-between; gap: 4px 12px; margin: 16px 0 12px; font-size: 14px; color: var(--text-2); }
.a-showing .latin { font-family: var(--mono); font-variant-numeric: tabular-nums; color: var(--text); font-weight: 600; }
.a-showing-note { font-size: 12px; color: var(--text-3); }

/* 列表：一行一个案件 */
.a-list { display: flex; flex-direction: column; gap: 10px; }
.a-proj { display: flex; flex-direction: column; gap: 10px; padding: 18px 20px; color: var(--text); }
.a-proj[hidden], .a-table tr[hidden] { display: none; }
.a-proj-top { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; }
.a-proj-no { margin-right: 4px; font-family: var(--mono); font-size: 11px; font-weight: 600; color: var(--text-3); }
.a-proj-ind { margin-left: auto; font-size: 13px; color: var(--text-3); }
.a-proj h3 { font-size: 18px; line-height: 1.45; }
.a-proj-sum { font-size: 14px; color: var(--text-2); }
.a-proj-foot { display: flex; flex-direction: column; gap: 10px; }
.a-proj-meta { display: grid; grid-template-columns: minmax(0, 1fr); row-gap: 2px; margin: 0; font-size: 13px; color: var(--text-2); }
.a-proj-meta > div { display: flex; gap: 6px; }
.a-proj-meta dt { color: var(--text-3); white-space: nowrap; }
.a-proj-meta dd { margin: 0; }
.a-proj-lock { display: flex; align-items: center; gap: 8px; padding-top: 12px; border-top: 1px dashed var(--border-strong); font-size: 13px; color: var(--text-3); }
.a-proj:has(.a-st-closed) h3, .a-proj:has(.a-st-closed) .a-proj-sum { color: var(--text-3); }

/* 表格：首列横向滚动时固定 */
.a-table-wrap { display: none; overflow-x: auto; border: 1px solid var(--border); border-radius: 4px; background: var(--surface); }
[data-a-view="table"] .a-table-wrap { display: block; }
[data-a-view="table"] .a-list { display: none; }
.a-table { width: 100%; min-width: 900px; border-collapse: separate; border-spacing: 0; font-size: 14px; }
.a-table th, .a-table td { padding: 14px 16px; border-bottom: 1px solid var(--border); text-align: left; vertical-align: top; }
.a-table thead th { font-size: 12px; font-weight: 500; color: var(--text-3); background: var(--surface); border-bottom-color: var(--text); white-space: nowrap; }
.a-table thead th:first-child, .a-table tbody th { position: sticky; left: 0; z-index: 1; border-right: 1px solid var(--border); }
.a-table tbody th { width: 300px; font-weight: 500; background: var(--surface); }
.a-table tbody th a { display: block; margin-bottom: 6px; line-height: 1.5; }
.a-table tbody th a:hover { text-decoration: underline; }
.a-table tbody tr:last-child > * { border-bottom: 0; }
.a-table tbody tr:hover > * { background: var(--bg-soft); }
.a-table td { color: var(--text-2); }
.a-table td .a-skills { max-width: 220px; }
.a-table tbody td:nth-of-type(3), .a-table tbody td:nth-of-type(4), .a-table tbody td:nth-of-type(5) { white-space: nowrap; }

.a-empty { display: flex; flex-direction: column; align-items: center; gap: 14px; padding: 36px 20px; border: 1px dashed var(--border-strong); border-radius: 4px; text-align: center; color: var(--text-2); }
.a-empty[hidden] { display: none; }
.a-empty-t { font-size: 15px; font-weight: 500; color: var(--text); }
.a-empty-d { max-width: 30em; margin-top: -6px; font-size: 13px; color: var(--text-2); }

/* 02 応募から着手までの流れ（黑底）：六段 */
.a-flow { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: minmax(0, 1fr); column-gap: 32px; border-top: 1px solid var(--text); }
.a-flow li { padding: 18px 0 20px; border-bottom: 1px solid var(--border); }
.a-flow h3 { margin-top: 6px; font-size: 17px; }
.a-flow p { margin-top: 4px; font-size: 14px; color: var(--text-2); }

/* 03 認定メンバーになるには：三步 + 按钮 */
.a-cert { display: grid; gap: 24px; }
.a-cert-steps { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: minmax(0, 1fr); column-gap: 32px; border-top: 1px solid var(--text); }
.a-cert-steps li { display: flex; flex-direction: column; gap: 4px; padding: 18px 0 20px; border-bottom: 1px solid var(--border); }
.a-cert-steps b { font-size: 17px; }
.a-cert-steps span:last-child { font-size: 14px; color: var(--text-2); }
.a-cert-act { display: flex; flex-wrap: wrap; align-items: center; gap: 12px 24px; }

@media (min-width: 768px) {
  .a-toolbar { grid-template-columns: minmax(0, 1fr) 200px auto; }
  .a-search { grid-column: auto; }
  .a-proj-foot { flex-direction: row; align-items: center; justify-content: space-between; gap: 16px; }
  .a-proj-meta { display: flex; flex-wrap: wrap; justify-content: flex-end; row-gap: 4px; }
  .a-proj-meta > div { padding-right: 12px; margin-right: 12px; border-right: 1px solid var(--border); }
  .a-proj-meta > div:last-child { padding-right: 0; margin-right: 0; border-right: 0; }
  .a-flow { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .a-cert-steps { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}
@media (min-width: 1100px) {
  .a-board { grid-template-columns: 248px minmax(0, 1fr); gap: 32px; align-items: start; }
  .a-side { position: sticky; top: 88px; border: 0; background: transparent; }
  .a-side-sum { display: none; }
  .a-side-body { padding: 0; border-top: 1px solid var(--text); }
  .a-proj { padding: 20px 24px; }
  .a-flow { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .a-flow li { padding: 22px 0 28px; }
}

/* ================================================================ 案件の詳細（详情页：保留正文布局，只换 v4 的字体和编号） */
.a-detail .crumb a { display: inline-flex; align-items: center; min-height: 44px; }
.a-detail .event-head .chips { margin-top: 8px; }
.a-detail .a-dh1 { margin: 16px 0 10px; font-size: 30px; font-weight: 900; line-height: 1.28; letter-spacing: 0.01em; font-feature-settings: "palt"; }
.a-dh1-k { display: block; margin-bottom: 10px; font-size: 15px; font-weight: 700; letter-spacing: 0.02em; line-height: 1.5; }
.a-detail .info-row { grid-template-columns: 96px minmax(0, 1fr); align-items: center; }
.a-only-member .info-row { grid-template-columns: 124px minmax(0, 1fr); }
/* 区块标题：等宽编号「01/03」+ 标题，上方一条黑线 */
.a-bhead { display: flex; align-items: baseline; gap: 16px; margin-bottom: 16px; padding-top: 14px; border-top: 1px solid var(--text); }
.block .a-bhead h2 { margin: 0; font-size: 22px; }
.a-h-note { display: inline-flex; margin-left: 10px; padding: 1px 8px; border: 1px solid var(--border-strong); border-radius: 2px; font-size: 12px; font-weight: 500; color: var(--text-2); vertical-align: 3px; }
.a-sumgrid { display: grid; grid-template-columns: minmax(0, 1fr); gap: 10px; }
.a-sumgrid > div { padding: 16px 18px; border: 1px solid var(--border); border-radius: 4px; }
.a-sumgrid h3 { margin-bottom: 6px; font-size: 13px; font-weight: 500; color: var(--text-3); }
.a-sumgrid p { font-size: 15px; }
/* 锁住的项目：写明谁能看（原来是模糊灰条，没有信息） */
.a-locked { border: 1px solid var(--border); border-radius: 4px; }
.a-locked-list { list-style: none; margin: 0; padding: 4px 18px; }
.a-locked-list li { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 4px 14px; padding: 12px 0; border-bottom: 1px solid var(--border); font-size: 15px; }
.a-locked-list li:last-child { border-bottom: 0; }
.a-locked-list .v { display: inline-flex; align-items: center; gap: 6px; font-size: 12px; color: var(--text-3); }
.a-locked-foot { display: flex; flex-direction: column; align-items: flex-start; gap: 12px; padding: 16px 18px 18px; border-top: 1px solid var(--border); }
.a-locked-foot p { display: flex; align-items: center; gap: 8px; font-size: 15px; font-weight: 500; }
.a-mini-steps { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; }
.a-mini-steps li { display: flex; align-items: center; gap: 10px; min-height: 52px; padding: 0 14px; border: 1px solid var(--border); border-radius: 4px; font-size: 14px; font-weight: 500; }
.a-guide-t { display: flex; align-items: center; gap: 8px; font-size: 17px; font-weight: 700; }
.a-guide-d { margin-top: 6px; font-size: 14px; color: var(--text-2); }
.a-guide-steps { list-style: none; margin: 14px 0 16px; padding: 0; border-top: 1px solid var(--text); }
.a-guide-steps li { display: flex; align-items: baseline; gap: 10px; padding: 10px 0; border-bottom: 1px solid var(--border); font-size: 14px; }
.a-guide .btn + .btn { margin-top: 8px; }
.a-apply-row { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 8px; margin-bottom: 14px; font-size: 13px; }
.a-apply-m .apply-note { margin-top: 12px; }
/* 原型用的「未認定 / 認定メンバー」切换：上线版不显示（09-24 用户要成品网站），两种状态的内容仍在页面里 */
.a-proto { display: none !important; }
.a-detail[data-a-view="guest"] .a-only-member, .a-detail[data-a-view="member"] .a-only-guest { display: none !important; }

@media (min-width: 768px) {
  .a-detail .a-dh1 { font-size: 40px; }
  .a-dh1-k { font-size: 17px; }
  .a-sumgrid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .a-locked-foot { flex-direction: row; align-items: center; justify-content: space-between; }
  .a-mini-steps { grid-template-columns: repeat(4, minmax(0, 1fr)); }
  .a-only-member .info-row { grid-template-columns: 200px minmax(0, 1fr); }
}
@media (min-width: 1100px) {
  .a-detail .a-dh1 { font-size: 48px; }
}

/* b.css */

/* ================================================================
   B 组：Incubator・応募フォーム・応募完了・Demo Day（investment）・メンバー企業（类名一律 b- 开头）
   09-24 v4（docs/网站统一-v4-执行契约.md）：统一成首页样式。首屏、编号区块、页尾用 lib.py 的 v2_page_hero / v2_section /
   v2_final，样式在 css/v2.css；这里只写本组独有的部分。
   - 每页 main 带 class="v2 b-v4 b-xxx"：v2 让 v2.css 的链接、按钮、卡片规则生效；b-inc / b-inv / b-mem / b-reg / b-done 按页微调。
   - 渐变是唯一的强调色：原来用紫色（--accent）的编号、进度、标签底色，一律改成黑白灰；要强调的地方（选中的支援卡、
     AI 时代的路线、六阶段进度线）用品牌渐变。表单的输入状态（聚焦、选中、必填标签）照旧：契约第 5 节，表单页只统一页头。
   - 黑底块（v2_section dark=True）里的颜色全部走变量，黑底时自动反色。
   ================================================================ */

/* ---------- 共用 ---------- */
.b-note { margin-top: 12px; font-size: 12px; color: var(--text-3); }
.b-h3 { font-size: 20px; margin-bottom: 20px; }
.b-subblock { margin-top: 48px; }
.b-br { display: none; }                      /* H1 里只在宽屏断行，手机上让它自然换行 */
.b-nw { white-space: nowrap; }                /* 日期不从中间断开 */
/* 首页的黑底块紧接在黑底大字后面，上边距只有 24px；本组的黑底块前面是白底，上边距和普通区块一样 */
.b-v4 .v2-dark.v2-sec { padding-top: 64px; }
.b-v4 .v2-sec + .v2-dark, .b-v4 .v2-dark + .v2-sec { border-top: 0; }

/* 首屏按钮行：按钮之后是「締切胶囊 + 倒计时」一组，窄屏时整组换到下一行 */
.b-v4 .v2-phero .actions { align-items: center; gap: 12px 10px; }
.b-hero-dl { display: inline-flex; flex-wrap: wrap; align-items: center; gap: 10px 16px; }
.b-hero-meta { display: flex; flex-wrap: wrap; gap: 6px 20px; flex-basis: 100%; margin: 6px 0 0; font-size: 14px; color: var(--text-2); }
.b-hero-meta > span { display: inline-flex; align-items: center; gap: 8px; }
.b-h1-note { display: block; margin-top: 12px; font-size: 0.4em; font-weight: 700; line-height: 1.4; letter-spacing: 0; }
.b-consent-note { display: inline-flex; align-items: center; gap: 8px; min-height: 36px; margin: 0; padding: 6px 14px; border: 1px solid var(--text); border-radius: var(--r-pill); font-size: 14px; font-weight: 700; }

/* 编号按钮行（区块里的应募按钮等） */
.b-cta-row { display: flex; flex-direction: column; gap: 10px; margin-top: 32px; }
.b-cta-row .countdown { justify-content: center; }

/* ---------- 约束三条（01 募集要項の最上段） ---------- */
.b-promises { list-style: none; margin: 0 0 40px; padding: 0; display: grid; grid-template-columns: minmax(0, 1fr); border-top: 1px solid var(--text); }
.b-promise { display: grid; grid-template-columns: 40px minmax(0, 1fr); column-gap: 12px; row-gap: 4px; padding: 18px 0 20px; border-bottom: 1px solid var(--border); }
.b-promise-no { grid-row: span 2; padding-top: 7px; font-family: var(--mono); font-size: 12px; font-weight: 600; color: var(--text-3); }
.b-promise h3 { font-size: 20px; }
.b-promise p { font-size: 14px; color: var(--text-2); }

/* 要項表：黑底块里用。项目名等宽小字 */
.b-req .req-row dt { font-family: var(--mono); font-size: 12px; letter-spacing: 0.04em; }

/* ---------- 编号流程（手机竖排、桌面横排；当前步黑底，已完成的打勾） ---------- */
.b-flow { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: minmax(0, 1fr); }
.b-flow-step { position: relative; display: grid; grid-template-columns: 36px minmax(0, 1fr); align-content: start; gap: 14px; padding-bottom: 22px; }
.b-flow-step:last-child { padding-bottom: 0; }
.b-flow-step::before { content: ""; position: absolute; left: 17.5px; top: 42px; bottom: 6px; width: 1px; background: var(--border-strong); }
.b-flow-step:last-child::before { display: none; }
.b-flow-no { display: grid; place-items: center; width: 36px; height: 36px; border-radius: 50%; border: 1px solid var(--border-strong); background: var(--bg); font-family: var(--mono); font-size: 12px; font-weight: 600; }
.b-flow-no svg { width: 16px; height: 16px; stroke-width: 2.5; }
.b-flow-step.is-now .b-flow-no { background: var(--text); border-color: var(--text); color: var(--bg); }
.b-flow-step.is-done .b-flow-no { border-color: var(--text); color: var(--text); }
.b-flow-body { padding-top: 6px; }
.b-flow-body h4 { font-size: 16px; }
.b-flow-when { margin-top: 2px; font-family: var(--mono); font-size: 12px; color: var(--text-2); }
.b-flow-body > p:last-child { margin-top: 4px; font-size: 14px; color: var(--text-2); }
.b-stagekey .b-flow-body > p:last-child { font-size: 13px; }

/* ---------- 「項目：値」要点（incubator.py 的 b_facts）：窄卡片里项目名在上、值在下 ---------- */
.b-facts { margin: 0; border-top: 1px solid var(--border); }
.b-facts > div { display: grid; grid-template-columns: minmax(0, 1fr); gap: 2px; padding: 9px 0; border-bottom: 1px solid var(--border); font-size: 14px; }
.b-facts dt { font-size: 12px; color: var(--text-3); }
.b-facts dd { margin: 0; color: var(--text); }
.b-facts.is-foot { margin-top: auto; }            /* 同一行的卡片，要点和链接都落到底边 */

/* ---------- 折叠问答（原生 details；和首页 FAQ 同一个样子：细线分隔、右侧圆形加号） ---------- */
.b-faq { max-width: 880px; border-top: 1px solid var(--text); }
.b-faq-item { border-bottom: 1px solid var(--border); }
.b-faq-item summary { display: flex; align-items: center; justify-content: space-between; gap: 16px; min-height: 64px; padding: 14px 0; font-size: 16px; font-weight: 500; cursor: pointer; list-style: none; }
.b-faq-item summary::-webkit-details-marker { display: none; }
.b-faq-item summary:focus-visible { outline: 2px solid var(--text); outline-offset: 2px; border-radius: 4px; }
.b-pm { display: inline-grid; place-items: center; flex-shrink: 0; width: 32px; height: 32px; border: 1px solid var(--border-strong); border-radius: 50%; transition: transform 150ms var(--ease-std); }
.b-faq-item[open] .b-pm { transform: rotate(45deg); }
.b-faq-item p { max-width: 720px; padding: 0 48px 20px 0; font-size: 15px; color: var(--text-2); }

/* ---------- AI 時代の起業ルート（deck 第 4 页：同一时间刻度上的两条路线；AI 时代的条用品牌渐变） ---------- */
.b-route { padding: 18px 16px 16px; }
.b-route-group + .b-route-group { margin-top: 16px; padding-top: 16px; border-top: 1px dashed var(--border-strong); }
.b-route-name { display: flex; flex-wrap: wrap; align-items: baseline; justify-content: space-between; gap: 2px 16px; margin-bottom: 6px; font-size: 16px; }
.b-route-sum { font-family: var(--mono); font-size: 12px; font-weight: 500; color: var(--text-2); }
.b-route-sum b { font-family: var(--font-body); font-size: 16px; font-weight: 700; color: var(--text); }
.b-route-rows { list-style: none; margin: 0; padding: 0; }
.b-route-row { display: grid; grid-template-columns: minmax(0, 1fr); gap: 6px; padding: 8px 0; }
.b-route-axisrow { padding: 4px 0 2px; }
.b-route-axisrow > span:first-child { display: none; }
.b-route-axis { position: relative; height: 18px; font-family: var(--mono); font-size: 11px; color: var(--text-3); font-variant-numeric: tabular-nums; }
.b-route-axis span { position: absolute; top: 0; padding: 0 4px; background: var(--surface); transform: translateX(-50%); white-space: nowrap; }
.b-route-axis span:first-child { transform: none; }
.b-route-axis span:last-child { transform: translateX(-100%); }
.b-route-lab .n { display: flex; justify-content: space-between; gap: 12px; font-size: 14px; font-weight: 700; }
.b-route-lab .t { font-weight: 500; color: var(--text-2); font-variant-numeric: tabular-nums; white-space: nowrap; }
.b-route-lab .d { margin-top: 2px; font-size: 12px; color: var(--text-3); }
.b-route-track { position: relative; height: 14px; border-right: 1px solid var(--border); background: linear-gradient(to right, var(--border) 1px, transparent 1px) 0 0 / 25% 100% repeat-x; }
.b-bar { --c: var(--text-2); position: absolute; top: 2px; bottom: 2px; border-radius: 2px; background: linear-gradient(90deg, var(--c) var(--solid, 100%), color-mix(in srgb, var(--c) 22%, transparent) var(--solid, 100%)); }
/* AI 时代：渐变图像的大小和位置由 incubator.py 按每根条的位置写在 style 里，整组看起来是一条连续的渐变 */
.is-ai .b-bar { background-image: var(--echo-grad); background-repeat: no-repeat; }
.b-bar.is-cont { -webkit-mask-image: repeating-linear-gradient(90deg, #000 0 8px, transparent 8px 13px); mask-image: repeating-linear-gradient(90deg, #000 0 8px, transparent 8px 13px); }
.b-route-after { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; margin-top: 16px; padding-top: 16px; border-top: 1px solid var(--border); font-size: 13px; }
.b-route-after .k { margin-right: 4px; color: var(--text-3); }
.b-route-after svg { color: var(--text-3); }
.b-ms { display: inline-flex; align-items: center; height: 28px; padding: 0 12px; border-radius: var(--r-pill); border: 1px solid var(--border-strong); font-weight: 500; white-space: nowrap; }
.b-ms.is-exit { border-color: var(--text); font-weight: 700; }
.b-route-legend { display: flex; flex-wrap: wrap; gap: 6px 16px; margin-top: 12px; font-size: 12px; color: var(--text-3); }
.b-route-legend span { display: inline-flex; align-items: center; gap: 6px; }
.b-route-legend .sw { display: inline-block; width: 18px; height: 8px; border-radius: 2px; }
.sw.s-solid { background: var(--text-2); }
.sw.s-light { background: color-mix(in srgb, var(--text-2) 22%, transparent); }
.sw.s-ai { background: var(--echo-grad) 100% 50% / 160% 100%; }
.sw.s-cont { background: var(--echo-grad) 100% 50% / 160% 100%; -webkit-mask-image: repeating-linear-gradient(90deg, #000 0 4px, transparent 4px 7px); mask-image: repeating-linear-gradient(90deg, #000 0 4px, transparent 4px 7px); }

/* ---------- 5 项支援：Raycast 功能墙（短句随悬停高亮，选中的一句用渐变，和首页会員ステップ同一做法）+ 卡片拼块 ---------- */
.b-wall { display: grid; grid-template-columns: minmax(0, 1fr); gap: 24px; }
.b-wall-q { margin-bottom: 6px; font-size: 18px; font-weight: 700; }
.b-wall-p { font-size: 22px; font-weight: 700; line-height: 1.6; }
.b-wall-s { display: inline; margin: 0; padding: 0; border: 0; background: none; font: inherit; line-height: inherit; letter-spacing: inherit; text-align: left; color: color-mix(in srgb, var(--text) 28%, transparent); cursor: pointer; transition: color 150ms var(--ease-std); }
.b-wall-s:hover { color: var(--text); }
.b-wall-s.is-on { background: var(--echo-grad) 100% 50% / 160% 100%; -webkit-background-clip: text; background-clip: text; color: transparent; -webkit-text-fill-color: transparent; }
.b-wall-s:focus-visible { outline: 2px solid var(--text); outline-offset: 2px; border-radius: 4px; }
.b-wall-cap { display: none; margin-top: 20px; }
.b-wall-cap.is-on { display: block; }
.b-wall-chip { font-family: var(--mono); font-size: 12px; font-weight: 600; color: var(--text-2); }
.b-wall-cap p { margin-top: 6px; max-width: 28em; font-size: 14px; color: var(--text-2); }
.b-wall-hint { margin-top: 16px; font-size: 12px; color: var(--text-3); }
.b-sup { gap: 10px; }
/* 选中的卡片：外圈一道 2px 的品牌渐变（伪元素描边，不改卡片尺寸） */
.b-sup::after { content: ""; position: absolute; inset: -1px; z-index: 1; padding: 2px; border-radius: inherit; background: var(--echo-grad) 100% 50% / 160% 100%; -webkit-mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0); -webkit-mask-composite: xor; mask: linear-gradient(#000 0 0) content-box exclude, linear-gradient(#000 0 0); opacity: 0; pointer-events: none; transition: opacity 150ms var(--ease-std); }
.b-sup.is-lit::after { opacity: 1; }
.b-sup-no { font-family: var(--mono); font-size: 12px; font-weight: 600; color: var(--text-3); font-variant-numeric: tabular-nums; }
.b-sup h3 { font-size: 19px; }
.b-sup p { font-size: 14px; color: var(--text-2); }
/* シェアリングオフィス（整行卡）：09-24 删掉照片后，左边名称和说明、右边要点，宽屏两栏、手机上下排 */
.b-sup-office { display: grid; grid-template-columns: minmax(0, 1fr); gap: 16px; align-items: start; }
.b-sup-text { display: flex; flex-direction: column; gap: 10px; }
.b-brandline { display: flex; align-items: center; gap: 6px; font-family: var(--font-display); font-size: 13px; color: var(--text-2); }
.b-brandline img { width: 18px; }
.b-brandline b { color: var(--text); font-weight: 600; }
.b-sup-go { align-self: flex-start; min-height: 44px; margin-bottom: -10px; font-size: 14px; }

/* ---------- 03 メンタリング：两张形式卡（月次のクローズド会・個別メンタリング），不放人物 ---------- */
.b-mtr-grid { display: grid; grid-template-columns: minmax(0, 1fr); gap: 12px; }
.b-mtr { display: flex; flex-direction: column; gap: 10px; padding: 22px; }
.b-mtr h3 { font-size: 19px; }
.b-mtr .b-facts { margin-top: 2px; }

/* ---------- 05 六阶段滚动叙事（结构和脚本在 site.css / site.js，这里只换颜色：编号等宽、进度线用品牌渐变） ---------- */
.b-v4 .story-no { font-family: var(--mono); font-size: 12px; color: var(--text); }
.b-v4 .story-no span { color: var(--text-3); }
.b-v4 .story-panel.is-active::before { background: var(--text); border-color: var(--text); }

/* ---------- Demo Day（Next.js Conf 的细线框：左主区、右侧要点、底部小框）。在黑底块里 ---------- */
.b-ddf { display: grid; grid-template-columns: minmax(0, 1fr); border: 1px solid var(--border-strong); border-radius: 4px; overflow: hidden; }
.b-ddf-main { display: flex; flex-direction: column; gap: 14px; padding: 22px 20px 24px; }
.b-ddf-meta { display: flex; flex-wrap: wrap; gap: 6px 20px; font-family: var(--mono); font-size: 12px; letter-spacing: 0.04em; color: var(--text-2); }
.b-ddf-meta > span { display: inline-flex; align-items: center; gap: 8px; }
.b-ddf-meta > span::before { content: ""; width: 6px; height: 6px; background: var(--text); }
.b-ddf-lead { font-size: 22px; font-weight: 700; line-height: 1.45; }
.b-ddf-text { font-size: 15px; color: var(--text-2); }
.b-ddf-main .btn { align-self: flex-start; max-width: 100%; height: auto; min-height: 44px; padding-top: 10px; padding-bottom: 10px; white-space: normal; text-align: left; }
.b-ddf-side { display: flex; flex-direction: column; border-top: 1px solid var(--border-strong); }
.b-ddf-k { padding: 14px 20px; border-bottom: 1px solid var(--border); font-family: var(--mono); font-size: 12px; color: var(--text-3); }
.b-ddf-list { list-style: none; margin: 0; padding: 0; }
.b-ddf-list li { display: flex; align-items: center; gap: 12px; padding: 14px 20px; border-bottom: 1px dashed var(--border-strong); font-size: 14px; }
.b-ddf-list svg { color: var(--text-2); }
.b-ddf-box { display: flex; flex-direction: column; gap: 10px; margin: 16px; padding: 16px; border: 1px solid var(--border); border-radius: 4px; font-size: 13px; color: var(--text-2); }
.b-ddf-box .link { align-self: flex-start; min-height: 44px; }

/* ============ ≥768px ============ */
@media (min-width: 768px) {
  .b-br { display: inline; }
  .b-v4 .v2-dark.v2-sec { padding-top: 96px; }
  .b-hero-dl { margin-left: 8px; }
  .b-promises { grid-template-columns: repeat(3, minmax(0, 1fr)); column-gap: 32px; }
  .b-promise { display: flex; flex-direction: column; gap: 8px; padding: 20px 0 24px; border-bottom: 0; }
  .b-promise-no { padding-top: 0; }
  .b-promise h3 { font-size: 24px; }
  .b-cta-row { flex-direction: row; flex-wrap: wrap; align-items: center; gap: 12px 16px; }
  .b-cta-row .countdown { justify-content: flex-start; }
  .b-faq-item summary { min-height: 72px; font-size: 18px; }
  .b-faq-item p { font-size: 16px; }
  .b-route { padding: 26px 30px 22px; }
  .b-route-row { position: relative; grid-template-columns: 250px minmax(0, 1fr); align-items: center; gap: 24px; padding: 7px 0; }
  .b-route-axisrow > span:first-child { display: block; }
  /* 桌面：刻度线从上到下连成一条（250 标签栏 + 24 间距之后开始） */
  .b-route-rows { position: relative; }
  .b-route-rows::before { content: ""; position: absolute; top: 0; bottom: 0; left: 274px; right: 0; border-right: 1px solid var(--border); background: linear-gradient(to right, var(--border) 1px, transparent 1px) 0 0 / 25% 100% repeat-x; pointer-events: none; }
  .b-route-track { background: none; border-right: 0; }
  .b-route-lab .n { display: block; }
  .b-route-lab .t { display: block; font-size: 12px; }
  .b-sup-grid .w6 { grid-column: 1 / -1; }
  .b-sup-office { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); column-gap: 40px; }
  .b-mtr-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .b-facts.is-row > div { grid-template-columns: 8.5em minmax(0, 1fr); gap: 12px; align-items: baseline; }
  .b-facts.is-row dt { font-size: 13px; }
}

/* ============ ≥1100px ============ */
@media (min-width: 1100px) {
  .b-h3 { font-size: 24px; }
  .b-flow { grid-template-columns: repeat(var(--n, 5), minmax(0, 1fr)); gap: 20px; }
  .b-flow-step { grid-template-columns: minmax(0, 1fr); gap: 12px; padding-bottom: 0; }
  .b-flow-step::before { left: 46px; right: -14px; top: 17.5px; bottom: auto; width: auto; height: 1px; }
  .b-flow-body { padding-top: 0; }
  .b-wall { grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); gap: 56px; align-items: start; }
  .b-wall-text { position: sticky; top: 140px; }
  .b-wall-q { font-size: 20px; }
  .b-wall-p { font-size: 30px; line-height: 1.55; }
  .b-ddf { grid-template-columns: minmax(0, 1fr) 360px; }
  .b-ddf-main { padding: 36px 44px 40px; }
  .b-ddf-lead { font-size: 30px; }
  .b-ddf-side { border-top: 0; border-left: 1px solid var(--border-strong); }
  .b-ddf-box { margin-top: auto; }
  /* 六阶段：左栏的进度线用品牌渐变（竖向），当前阶段的编号变黑 */
  .b-v4 .rail-fill { background: linear-gradient(180deg, #6547F5, #B83AA8 55%, #F55200); }
  .b-v4 .rail-fill::after { background: var(--text); box-shadow: 0 0 0 4px var(--surface-2); }
  .b-v4 .story-rail button .no { font-family: var(--mono); font-size: 12px; }
  .b-v4 .story-rail button[aria-current="step"] .no { color: var(--text); }
}
/* 六阶段：左栏只剩阶段名和进度线，窄屏时它们本来就不显示，整栏去掉（免得留一段空白） */
@media (max-width: 1099px) { .b-v4 .story-aside { display: none; } }

/* ================================================================
   Incubator（b-inc）
   ================================================================ */
/* H1「AI 起業の／インキュベーション・プログラム」：第二行是一个 15 字的片假名词，按统一字号在 1440 宽放不下一行、
   在 390 宽「インキュベーション・」一段就超出版心。按实测收小一档，词不从中间断开 */
.b-inc .v2-ph1 { font-size: 28px; }
/* 页尾「10 月 31 日まで。」比首页的「会いましょう。」长，按这一行收小字号，390–1440 宽都不溢出 */
.b-inc .v2-final .v2-slogan { font-size: clamp(36px, 9.6vw, 132px); }
@media (min-width: 768px) { .b-inc .v2-ph1 { font-size: 40px; } }
@media (min-width: 1024px) { .b-inc .v2-ph1 { font-size: 52px; } }

/* ================================================================
   応募フォーム（b-reg）：页头是 v2_page_hero，下面「あなたの応募」、表单、摘要、底部操作条的布局和逻辑照旧
   （Vercel Ship 报名页：细线中栏 + 编号段落 + 右侧摘要；SPC：段落标签、卡片单选、字数计数；YC：申请后台、成员卡、未入力一览）
   ================================================================ */
.b-reg { --b-danger: #C62F2F; }
.b-reg [hidden] { display: none !important; }
/* 钉住的段落导航（共用 subnav 的样子）+ 自动保存提示 */
.b-apply-nav .container { height: auto; min-height: 48px; flex-wrap: wrap; gap: 0 12px; overflow: visible; padding-top: 2px; padding-bottom: 6px; }
.b-apply-links { display: flex; gap: 2px; flex: 1 1 100%; min-width: 0; overflow-x: auto; scrollbar-width: none; }
.b-apply-links::-webkit-scrollbar { display: none; }
.subnav .b-apply-links a { display: inline-flex; align-items: center; gap: 6px; min-height: 44px; padding: 0 10px; white-space: nowrap; }
.b-apply-links .no { display: inline-grid; place-items: center; width: 20px; height: 20px; border-radius: 50%; border: 1px solid var(--border-strong); font-size: 11px; font-weight: 600; color: var(--text-2); }
.b-apply-links .no svg { display: none; width: 12px; height: 12px; stroke-width: 2.5; }
.b-apply-links a.is-done .no { border-color: var(--accent); background: var(--accent); color: var(--bg); }
.b-apply-links a.is-done .no .d { display: none; }
.b-apply-links a.is-done .no svg { display: block; }
.b-save { display: inline-flex; align-items: center; gap: 6px; margin: 0; font-size: 12px; color: var(--text-3); white-space: nowrap; }
.b-save svg { color: var(--brand-green); }

.b-reg-grid { display: grid; grid-template-columns: minmax(0, 1fr); }
.b-reg-main { min-width: 0; padding: 20px 0 32px; }
.b-reg-status { display: flex; flex-wrap: wrap; align-items: center; gap: 10px 16px; }
.b-reg-lead { margin-top: 14px; font-size: 15px; color: var(--text-2); }

.b-form { margin-top: 28px; border-top: 1px solid var(--border); }
.b-fs { padding: 32px 0; border-bottom: 1px solid var(--border); scroll-margin-top: 150px; }
/* 段落标题：等宽编号「00/09」（v4 的 v2-no）在上，标题在下；桌面编号占左边一栏 */
.b-fs-head { display: grid; grid-template-columns: minmax(0, 1fr); gap: 6px; margin-bottom: 22px; }
.b-fs-head h2 { font-size: 22px; line-height: 1.35; }
.b-fs-desc { margin-top: 2px; font-size: 14px; color: var(--text-2); }
.b-fields { display: flex; flex-direction: column; gap: 26px; }
.b-field { display: flex; flex-direction: column; gap: 8px; min-width: 0; }
.b-label { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; margin: 0; padding: 0; font-size: 14px; font-weight: 700; color: var(--text); }
.b-tag { display: inline-flex; align-items: center; height: 20px; padding: 0 6px; border-radius: 4px; font-size: 11px; font-weight: 700; }
.b-tag.req { color: var(--accent); background: color-mix(in srgb, var(--accent) 10%, transparent); }
.b-tag.opt { color: var(--text-3); background: var(--surface-2); }
.b-hint { font-size: 13px; color: var(--text-3); }
.b-fs-note { padding: 12px 14px; border-radius: var(--r-sm); background: var(--bg-soft); font-size: 13px; color: var(--text-2); }
.b-form .input { width: 100%; font-size: 16px; transition: border-color 150ms var(--ease-std), box-shadow 150ms var(--ease-std); }
.b-form .input:focus, .b-prefix:focus-within { outline: none; border-color: var(--accent); box-shadow: 0 0 0 3px color-mix(in srgb, var(--accent) 20%, transparent); }
.b-textarea { height: auto; min-height: 64px; padding: 12px 14px; line-height: 1.7; resize: vertical; }
.b-count { align-self: flex-end; margin-top: -2px; font-size: 12px; color: var(--text-3); font-variant-numeric: tabular-nums; }
.b-count.is-over { color: var(--b-danger); font-weight: 700; }
.b-group { min-width: 0; margin: 0; padding: 0; border: 0; }
.b-group > legend { float: left; width: 100%; margin-bottom: 10px; padding: 0; }
.b-group > legend + * { clear: both; }
.b-group > .b-hint { margin: -2px 0 12px; }
.b-grid2 { display: grid; grid-template-columns: minmax(0, 1fr); gap: 26px; }
.b-readonly { display: flex; align-items: center; gap: 8px; min-height: 44px; padding: 0 14px; border-radius: var(--r-sm); background: var(--surface-2); font-size: 15px; color: var(--text-2); }
.b-readonly svg { color: var(--text-3); }

/* 卡片单选・多选（SPC：标题 + 一句说明；选中后描边和底色变成紫） */
.b-choices { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; }
.b-choice { position: relative; display: flex; flex-direction: column; gap: 2px; min-height: 44px; padding: 12px 14px 14px; border: 1px solid var(--border-strong); border-radius: var(--r-md); background: var(--surface); cursor: pointer; transition: border-color 150ms var(--ease-std), background-color 150ms var(--ease-std), box-shadow 150ms var(--ease-std); }
.b-choice:hover { background: var(--bg-soft); }
.b-choice input { position: absolute; width: 1px; height: 1px; opacity: 0; pointer-events: none; }
.b-choice-top { display: flex; align-items: center; justify-content: space-between; margin-bottom: 6px; }
.b-choice .no { font-size: 12px; font-weight: 600; color: var(--text-3); }
.b-choice .mark { display: grid; place-items: center; width: 20px; height: 20px; border-radius: 50%; border: 1px solid var(--border-strong); background: var(--surface); color: transparent; transition: background-color 150ms var(--ease-std), border-color 150ms var(--ease-std); }
.b-choice .mark svg { width: 12px; height: 12px; stroke-width: 2.5; }
.b-choice.is-multi .mark { border-radius: 5px; }
.b-choice .t { font-size: 15px; font-weight: 700; }
.b-choice .d { font-size: 12px; line-height: 1.5; color: var(--text-2); }
.b-choice.is-checked, .b-choice:has(input:checked) { border-color: var(--accent); background: color-mix(in srgb, var(--accent) 6%, var(--surface)); box-shadow: inset 0 0 0 1px var(--accent); }
.b-choice.is-checked .mark, .b-choice:has(input:checked) .mark { border-color: var(--accent); background: var(--accent); color: var(--bg); }
.b-choice:has(input:focus-visible) { outline: 2px solid var(--accent); outline-offset: 2px; }
.b-choice.is-wide { grid-column: 1 / -1; }
.b-or { grid-column: 1 / -1; display: flex; align-items: center; gap: 10px; margin: 6px 0 0; font-size: 12px; color: var(--text-3); }
.b-or::after { content: ""; flex: 1; height: 1px; background: var(--border); }
/* 小胶囊单选・多选 */
.b-opts { display: flex; flex-wrap: wrap; gap: 8px; }
.b-opt { position: relative; display: inline-flex; }
.b-opt input { position: absolute; width: 1px; height: 1px; opacity: 0; pointer-events: none; }
.b-opt span { display: inline-flex; align-items: center; min-height: 44px; padding: 0 16px; border: 1px solid var(--border-strong); border-radius: var(--r-pill); font-size: 14px; cursor: pointer; transition: border-color 150ms var(--ease-std), background-color 150ms var(--ease-std), color 150ms var(--ease-std); }
.b-opt span:hover { background: var(--bg-soft); }
.b-opt input:checked + span { border-color: var(--accent); background: color-mix(in srgb, var(--accent) 8%, var(--surface)); color: var(--accent); font-weight: 700; }
.b-opt input:focus-visible + span { outline: 2px solid var(--accent); outline-offset: 2px; }
/* 带前缀的输入框（SPC 的 linkedin.com/in/） */
.b-prefixes, .b-links { display: flex; flex-direction: column; gap: 8px; }
.b-prefix { display: flex; align-items: stretch; height: 44px; border: 1px solid var(--border-strong); border-radius: var(--r-sm); background: var(--surface); overflow: hidden; transition: border-color 150ms var(--ease-std), box-shadow 150ms var(--ease-std); }
.b-prefix .pre { display: flex; align-items: center; flex-shrink: 0; padding: 0 10px 0 12px; border-right: 1px solid var(--border); background: var(--surface-2); font-size: 14px; color: var(--text-2); }
.b-prefix input { flex: 1; min-width: 0; padding: 0 12px; border: 0; outline: 0; background: transparent; color: var(--text); font-family: var(--font-body); font-size: 16px; }
.b-w-sm { max-width: 320px; }
/* 第 0 段：邮件链接登录（speedrun / OpenAI DevDay 的邮箱一栏 + 胶囊按钮） */
.b-login-form { display: flex; flex-direction: column; gap: 8px; }
.b-inline { display: flex; flex-direction: column; gap: 8px; }
.b-login-sent { display: flex; gap: 14px; padding: 16px; border: 1px solid color-mix(in srgb, var(--accent) 28%, transparent); border-radius: var(--r-md); background: color-mix(in srgb, var(--accent) 6%, var(--surface)); }
.b-sent-icon { display: grid; place-items: center; flex-shrink: 0; width: 36px; height: 36px; border-radius: 50%; background: var(--accent); color: var(--bg); }
.b-sent-t { margin-bottom: 4px; font-size: 15px; word-break: break-all; }
.b-login-sent .btn { margin-top: 8px; padding-left: 0; }
/* 第 9 段：两个同意分开勾选 */
.b-consent { display: grid; grid-template-columns: 22px minmax(0, 1fr); gap: 12px; padding: 16px; border: 1px solid var(--border-strong); border-radius: var(--r-md); cursor: pointer; transition: border-color 150ms var(--ease-std); }
.b-consent input { width: 20px; height: 20px; margin: 2px 0 0; accent-color: var(--accent); }
.b-consent > span { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 8px; font-size: 14px; }
.b-consent .b-hint { flex-basis: 100%; }
.b-consent:has(input:checked) { border-color: var(--accent); }
/* 右侧摘要（Vercel Ship 的 Order summary） */
.b-reg-side { min-width: 0; padding: 8px 0 56px; }
.b-summary { display: flex; flex-direction: column; gap: 10px; padding: 22px 20px; border: 1px solid var(--border); border-radius: var(--r-lg); background: var(--surface); }
.b-summary h2 { margin-bottom: 4px; font-size: 20px; }
.b-sum-k { font-size: 12px; color: var(--text-3); }
.b-sum-v { margin-top: -8px; font-size: 16px; font-weight: 700; }
.b-sum-sub { font-size: 13px; color: var(--text-2); }
.b-sum-dl { display: flex; flex-direction: column; gap: 8px; margin: 6px 0 0; padding: 12px 0; border-top: 1px solid var(--border); border-bottom: 1px solid var(--border); }
.b-sum-dl > div { display: flex; justify-content: space-between; gap: 12px; font-size: 13px; }
.b-sum-dl dt { flex-shrink: 0; color: var(--text-3); }
.b-sum-dl dd { margin: 0; font-weight: 500; text-align: right; }
.b-sum-progress p { display: flex; justify-content: space-between; margin-bottom: 6px; font-size: 13px; color: var(--text-2); }
.b-sum-bar { height: 6px; border-radius: var(--r-pill); background: var(--surface-2); overflow: hidden; }
.b-sum-bar span { display: block; width: 0; height: 100%; border-radius: inherit; background: var(--accent); transition: width 300ms var(--ease-std); }
.b-sum-note { font-size: 12px; color: var(--text-3); }

/* 申请后台首页（YC My Applications：標題、進行中／過去 标签、一张「始める」卡；右栏是链接和提醒） */
.b-apps { border-bottom: 1px solid var(--border); }
.b-apps-grid { display: grid; grid-template-columns: minmax(0, 1fr); gap: 28px; padding-top: 40px; padding-bottom: 40px; }
.b-apps-main { min-width: 0; }
.b-apps-title { font-size: 30px; line-height: 1.25; letter-spacing: -0.01em; }
.b-apps-tabs { display: flex; gap: 4px; margin: 14px 0 16px; border-bottom: 1px solid var(--border); }
.b-apps-tabs button { position: relative; min-height: 44px; padding: 0 12px; border: 0; background: none; font-family: var(--font-body); font-size: 15px; font-weight: 500; color: var(--text-3); cursor: pointer; transition: color 150ms var(--ease-std); }
.b-apps-tabs button:hover { color: var(--text-2); }
.b-apps-tabs button[aria-selected="true"] { color: var(--text); }
.b-apps-tabs button[aria-selected="true"]::after { content: ""; position: absolute; left: 8px; right: 8px; bottom: -1px; height: 2px; border-radius: 2px; background: var(--text); }
.b-apps-tabs button:focus-visible { outline: 2px solid var(--accent); outline-offset: -2px; border-radius: 6px; }
.b-apps-card { display: grid; grid-template-columns: minmax(0, 1fr); gap: 6px; padding: 24px 22px; }
.b-apps-k { font-size: 12px; color: var(--text-3); }
.b-apps-card h3 { font-size: 22px; }
.b-apps-card p:not(.b-apps-k) { color: var(--text-2); }
.b-apps-card .btn { justify-self: start; margin-top: 12px; }
.b-apps-empty { padding: 32px 20px; border: 1px dashed var(--border-strong); border-radius: 4px; text-align: center; color: var(--text-3); }
.b-apps-side { display: flex; flex-direction: column; gap: 14px; }
.b-apps-links { display: flex; flex-direction: column; margin: 0; padding: 10px 0; border-top: 1px solid var(--border); border-bottom: 1px solid var(--border); list-style: none; }
.b-apps-links a { display: inline-flex; align-items: center; min-height: 44px; text-decoration: underline; text-decoration-color: var(--border-strong); text-underline-offset: 4px; transition: text-decoration-color 150ms var(--ease-std); }
.b-apps-links a:hover { text-decoration-color: var(--text); }
.b-apps-remind { font-size: 14px; color: var(--text-2); }
.b-apps-remind a { color: var(--text); text-decoration: underline; text-underline-offset: 4px; }

/* 表单标题（YC：‹ Back + 大标题 + 批次）。v4：批次是等宽小字，标题和区块标题同一字重 */
.b-back-top { display: inline-flex; align-items: center; gap: 4px; min-height: 44px; font-size: 14px; color: var(--text-2); transition: color 150ms var(--ease-std); }
.b-back-top:hover { color: var(--text); }
.b-reg-k { margin: 6px 0 0; }
.b-reg-title { margin: 4px 0 14px; font-size: 30px; line-height: 1.25; letter-spacing: -0.01em; }

/* チーム：一人一张卡（YC Founders：名字 + 红色「资料未完成」标签 + 右侧「完成させる →」；+ メンバーを追加 是黑色胶囊） */
.b-mcards { display: flex; flex-direction: column; gap: 10px; }
.b-mcard2 { display: flex; flex-direction: column; gap: 12px; padding: 14px 16px; border: 1px solid var(--text); border-radius: var(--r-sm); background: var(--surface); }
.b-mcard2.is-new { border-style: dashed; border-color: var(--border-strong); }
.b-mc-top { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 12px; }
.b-mc-name { display: inline-flex; flex-wrap: wrap; align-items: baseline; gap: 2px 8px; margin: 0; font-size: 16px; font-weight: 700; }
.b-you { font-size: 12px; font-weight: 500; color: var(--text-3); }
.b-badge { display: inline-flex; align-items: center; gap: 6px; height: 26px; padding: 0 10px; border-radius: var(--r-pill); background: var(--b-danger); color: var(--bg); font-size: 12px; font-weight: 700; white-space: nowrap; }
.b-badge svg { width: 14px; height: 14px; }
.b-badge.is-ok { background: color-mix(in srgb, var(--brand-green) 24%, var(--surface)); color: var(--text); }
.b-mc-link { display: inline-flex; align-items: center; gap: 6px; min-height: 44px; margin-left: auto; font-size: 14px; font-weight: 500; transition: color 150ms var(--ease-std); }
.b-mc-link:hover { color: var(--accent); }
.b-mc-remove { display: grid; place-items: center; width: 44px; height: 44px; margin-left: auto; border: 0; border-radius: var(--r-pill); background: none; color: var(--text-3); cursor: pointer; transition: background-color 150ms var(--ease-std), color 150ms var(--ease-std); }
.b-mc-remove:hover { background: var(--surface-2); color: var(--text); }
.b-mc-role { display: flex; align-items: center; gap: 10px; font-size: 13px; color: var(--text-2); }
.b-mc-role span { flex-shrink: 0; }
.b-form .b-mc-role .input { width: auto; min-width: 0; flex: 1; max-width: 240px; }
.b-mc-fields { display: grid; grid-template-columns: minmax(0, 1fr); gap: 8px; }
.b-add-member { align-self: flex-start; margin-top: 10px; }
.b-note-ic { display: flex; align-items: flex-start; gap: 8px; }
.b-note-ic svg { flex-shrink: 0; margin-top: 3px; color: var(--accent); }

/* 页底「未入力の項目」（YC：红字逐条列出，点一条跳到那一题） */
.b-missing { margin-top: 32px; padding: 20px; border: 1px solid color-mix(in srgb, var(--b-danger) 35%, transparent); border-radius: var(--r-md); background: color-mix(in srgb, var(--b-danger) 5%, var(--surface)); scroll-margin-top: 150px; }
.b-missing-h { display: flex; align-items: center; gap: 8px; font-size: 17px; color: var(--b-danger); }
.b-missing-n { display: inline-grid; place-items: center; min-width: 24px; height: 22px; padding: 0 7px; border-radius: var(--r-pill); background: var(--b-danger); color: var(--bg); font-size: 12px; font-variant-numeric: tabular-nums; }
.b-missing > .b-hint { margin-top: 4px; }
.b-missing-list { display: grid; grid-template-columns: minmax(0, 1fr); gap: 0 20px; margin: 10px 0 0; padding: 0; list-style: none; }
.b-missing-list a { display: flex; align-items: center; gap: 8px; min-height: 44px; font-size: 14px; color: var(--b-danger); }
.b-missing-list a:hover span { text-decoration: underline; text-underline-offset: 3px; }
.b-missing-list svg { flex-shrink: 0; }
.b-missing-ok { display: flex; align-items: center; gap: 8px; margin-top: 12px; font-weight: 700; }
.b-missing-ok svg { color: var(--brand-green); }
.b-missing.is-clear { border-color: color-mix(in srgb, var(--brand-green) 50%, transparent); background: color-mix(in srgb, var(--brand-green) 7%, var(--surface)); }
.b-missing.is-clear .b-missing-h { color: var(--text); }
.b-missing.is-clear .b-missing-h svg, .b-missing.is-clear .b-missing-n, .b-missing.is-clear > .b-hint { display: none; }
.b-sum-miss.is-clear { background: color-mix(in srgb, var(--brand-green) 12%, var(--surface)); color: var(--text); }
.b-sum-miss.is-clear b { display: none; }
.b-sum-miss { display: flex; align-items: center; gap: 8px; min-height: 44px; padding: 0 12px; border-radius: var(--r-sm); background: color-mix(in srgb, var(--b-danger) 7%, var(--surface)); color: var(--b-danger); font-size: 13px; font-weight: 700; }
.b-sum-miss b { margin-left: auto; font-variant-numeric: tabular-nums; }

/* 底部固定操作条（YC：‹ Back / Save changes / Submit application；未填完时提交按钮是灰的）。
   sticky 放在 main 的最后：滚到页底时回到正常位置，不会一直盖住最后一个输入框 */
.b-actbar { position: sticky; bottom: 0; z-index: 20; border-top: 1px solid var(--border); background: color-mix(in srgb, var(--bg) 92%, transparent); -webkit-backdrop-filter: blur(10px); backdrop-filter: blur(10px); box-shadow: 0 -10px 24px -20px var(--border-strong); }
.b-actbar-in { display: flex; align-items: center; gap: 8px; min-height: 64px; padding-top: 10px; padding-bottom: calc(10px + env(safe-area-inset-bottom, 0px)); }
.b-act-back { display: inline-flex; align-items: center; gap: 2px; min-height: 44px; padding-right: 4px; font-size: 14px; color: var(--text-2); transition: color 150ms var(--ease-std); }
.b-act-back:hover { color: var(--text); }
.b-act-miss { display: none; align-items: center; gap: 6px; min-height: 44px; font-size: 13px; color: var(--b-danger); }
.b-act-miss b { font-variant-numeric: tabular-nums; }
.b-act-btns { display: flex; gap: 8px; margin-left: auto; }
.b-act-btns .btn { padding: 0 14px; font-size: 14px; }
html:has(.b-actbar) { scroll-padding-bottom: 96px; }

@media (max-width: 1099px) {
  .b-reg-side { display: none; }
}
@media (max-width: 767px) {
  .b-choices.is-5 { grid-template-columns: minmax(0, 1fr); }
}
@media (min-width: 768px) {
  .b-grid2 { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 20px; }
  .b-choices { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .b-inline { flex-direction: row; }
  .b-inline .input { flex: 1; border-radius: var(--r-pill); padding: 0 18px; }
  .b-fs-head { grid-template-columns: 64px minmax(0, 1fr); column-gap: 16px; align-items: baseline; }
  .b-mc-fields { grid-template-columns: minmax(0, 1fr) minmax(0, 1.3fr) auto; align-items: center; }
  .b-missing-list { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .b-act-miss { display: inline-flex; }
  .b-act-btns .btn { padding: 0 22px; font-size: 15px; }
  .b-apps-title, .b-reg-title { font-size: 44px; }
}
@media (min-width: 1100px) {
  .b-apply-nav .container { flex-wrap: nowrap; padding-top: 2px; padding-bottom: 2px; }
  .b-apply-links { flex: 1 1 auto; }
  .b-reg-grid { grid-template-columns: minmax(0, 1fr) 340px; }
  .b-reg-main { padding: 40px 56px 64px; border-left: 1px solid var(--border); border-right: 1px solid var(--border); }
  .b-reg-side { padding: 40px 0 64px 32px; }
  .b-summary { position: sticky; top: 140px; }
  .b-fs-head h2 { font-size: 26px; }
  .b-fs { padding: 40px 0; }
  .b-apps-grid { grid-template-columns: minmax(0, 1fr) 340px; gap: 64px; padding-top: 56px; padding-bottom: 64px; }
  .b-apps-card { grid-template-columns: minmax(0, 1fr) auto; column-gap: 32px; padding: 32px 36px; }
  .b-apps-card .btn { grid-column: 2; grid-row: 1 / span 3; align-self: end; margin-top: 0; }
  .b-apps-side { padding-top: 64px; }
  .b-act-miss { margin-left: 16px; }
}

/* ================================================================
   応募完了（b-done）：页头是 v2_page_hero；控え・状況・流れ的卡片布局照旧，卡片标题前加等宽编号
   ================================================================ */
.b-done-grid { display: grid; grid-template-columns: minmax(0, 1fr); gap: 16px; padding-top: 32px; }
.b-done-col { display: flex; flex-direction: column; gap: 16px; min-width: 0; }
.b-done-card { display: flex; flex-direction: column; gap: 14px; padding: 22px 20px; }
.b-done-card h2, .b-done-help h2 { font-size: 20px; }
.b-done-card .v2-no, .b-done-help .v2-no { margin-bottom: -8px; }
.b-done-card .btn { align-self: flex-start; }
.b-done-help { display: flex; flex-direction: column; gap: 14px; padding: 4px 2px; }
.b-done-actions { display: flex; flex-wrap: wrap; gap: 10px; padding-top: 24px; padding-bottom: 64px; }
.b-dl2 { margin: 0; border-top: 1px solid var(--border); }
.b-dl-row2 { display: grid; grid-template-columns: 112px minmax(0, 1fr); gap: 12px; padding: 12px 0; border-bottom: 1px solid var(--border); font-size: 14px; }
.b-dl-row2 dt { color: var(--text-3); }
.b-dl-row2 dd { margin: 0; }
.b-states { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 22px; margin: 0; padding: 0; list-style: none; }
.b-states li { position: relative; display: inline-flex; align-items: center; height: 30px; padding: 0 12px; border: 1px solid var(--border); border-radius: var(--r-pill); font-size: 13px; color: var(--text-3); }
.b-states li + li::before { content: ""; position: absolute; left: -17px; top: 50%; width: 12px; height: 1px; background: var(--border-strong); }
.b-states li.is-done { color: var(--text-2); }
.b-states li.is-now { border-color: var(--text); background: var(--text); color: var(--bg); font-weight: 700; }
@media (max-width: 767px) {
  .b-states { gap: 8px; }
  .b-states li + li::before { display: none; }
}
@media (min-width: 1100px) {
  .b-done-grid { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 20px; padding-top: 40px; align-items: start; }
  .b-flow.is-vertical { grid-template-columns: minmax(0, 1fr); gap: 0; }
  .b-flow.is-vertical .b-flow-step { grid-template-columns: 36px minmax(0, 1fr); gap: 14px; padding-bottom: 22px; }
  .b-flow.is-vertical .b-flow-step:last-child { padding-bottom: 0; }
  .b-flow.is-vertical .b-flow-step::before { left: 17.5px; right: auto; top: 42px; bottom: 6px; width: 1px; height: auto; }
  .b-flow.is-vertical .b-flow-body { padding-top: 6px; }
}

/* ================================================================
   Demo Day（investment、b-inv）
   ================================================================ */
/* 01 Demo Day について（GFS：照片 + 说明两栏）。在黑底块里。09-24 删掉有人物的 space.jpg，拼贴改成屋顶照片一张、占满左栏 */
.b-gfs-about { display: grid; grid-template-columns: minmax(0, 1fr); gap: 28px; }
.b-inv-photo { position: relative; min-height: 240px; margin: 0; border-radius: 4px; overflow: hidden; }
.b-inv-photo img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.b-inv-photo .photo-caption { left: 10px; bottom: 10px; }
.b-gfs-text { display: flex; flex-direction: column; gap: 12px; }
.b-gfs-text h3 { font-size: 22px; }
.b-gfs-text p { color: var(--text-2); }
.b-gfs-text .b-dl2 { margin-top: 8px; }
/* 当日の流れ（Next.js Conf 的虚线表格，表头是等宽小字） */
.b-tt { border-top: 1px dashed var(--border-strong); }
.b-tt-row { display: grid; grid-template-columns: 96px minmax(0, 1fr); gap: 4px 16px; padding: 14px 0; border-bottom: 1px dashed var(--border-strong); }
.b-tt-row .who { grid-column: 2; font-size: 13px; color: var(--text-3); }
.b-tt-row.is-head { padding: 10px 0; }
.b-tt-row.is-head > span { font-family: var(--mono); font-size: 11px; font-weight: 600; letter-spacing: 0.08em; color: var(--text-3); }
.b-tt-row.is-head .who { display: none; }
.b-tt-row .it { font-weight: 500; }
/* 登壇チーム（去掉代表者照片后只剩团队信息，单栏卡片） */
.b-gfs-grid { display: grid; grid-template-columns: minmax(0, 1fr); gap: 12px; }
.b-gfs { display: flex; flex-direction: column; gap: 8px; padding: 18px; border: 1px solid var(--border-strong); border-radius: 4px; }
.b-gfs-logo { font-size: 12px; }
.b-gfs h4 { font-size: 18px; }
.b-gfs p { font-size: 13px; color: var(--text-2); }
.b-gfs-foot { display: flex; justify-content: space-between; align-items: center; margin-top: auto; font-size: 12px; }
.b-more { display: flex; justify-content: center; margin-top: 20px; }
/* 02 こんな方へ：两张卡，底部是「項目：値」要点 */
.b-who { display: grid; grid-template-columns: minmax(0, 1fr); gap: 12px; }
.b-who-card { display: flex; flex-direction: column; gap: 10px; padding: 22px; }
.b-who-card h3 { font-size: 20px; }
.b-who-card > p { font-size: 14px; color: var(--text-2); }
.b-who-card .link { align-self: flex-start; min-height: 44px; margin-bottom: -10px; }
.b-who-facts { margin-top: auto; }
.b-ticks { display: flex; flex-direction: column; gap: 6px; margin: 2px 0 4px; padding: 0; list-style: none; font-size: 14px; }
.b-ticks li { position: relative; padding-left: 18px; }
.b-ticks li::before { content: ""; position: absolute; left: 2px; top: 0.55em; width: 8px; height: 4px; border-left: 1.5px solid var(--text); border-bottom: 1.5px solid var(--text); transform: rotate(-45deg); }
/* 03 資金調達支援：难点一行 + 四张卡 */
.b-pain { display: flex; flex-direction: column; gap: 4px; margin-bottom: 16px; padding: 16px 18px; border-left: 3px solid var(--text); background: var(--bg-soft); }
.b-pain .k { font-size: 12px; color: var(--text-3); }
.b-pain .v { font-size: 16px; font-weight: 700; }
.b-fund { display: grid; grid-template-columns: minmax(0, 1fr); gap: 12px; }
.b-fund-card { display: flex; flex-direction: column; gap: 10px; padding: 22px; }
.b-fund-top { display: flex; align-items: center; justify-content: space-between; color: var(--text-2); }
.b-fund-top svg { width: 20px; height: 20px; }
.b-fund-card h3 { font-size: 18px; }
.b-fund-card p { font-size: 14px; color: var(--text-2); }
.b-more-link { margin-top: 18px; }
.b-more-link .link { min-height: 44px; }
/* 04 Echo の立場（黑底）：一句话 + すること／しないこと两栏 */
.b-policy { display: flex; flex-direction: column; gap: 32px; }
.b-policy-main { max-width: 22em; font-size: 26px; font-weight: 700; line-height: 1.45; word-break: auto-phrase; }
.b-policy-cols { display: grid; grid-template-columns: minmax(0, 1fr); gap: 28px; }
.b-policy-k { margin-bottom: 10px; font-family: var(--mono); font-size: 12px; font-weight: 600; letter-spacing: 0.06em; color: var(--text-3); }
.b-policy-do, .b-policy-dont { list-style: none; margin: 0; padding: 0; border-top: 1px solid var(--text); }
.b-policy-do li { display: grid; grid-template-columns: 40px minmax(0, 1fr); gap: 2px 12px; padding: 16px 0; border-bottom: 1px solid var(--border); }
.b-policy-do .n { grid-row: span 2; padding-top: 5px; font-family: var(--mono); font-size: 12px; color: var(--text-3); }
.b-policy-do b { font-size: 18px; }
.b-policy-do span:last-child { font-size: 14px; color: var(--text-2); }
.b-policy-dont li { position: relative; padding: 16px 0 16px 28px; border-bottom: 1px solid var(--border); font-size: 16px; font-weight: 700; }
/* しないこと：行头一个斜杠（线条图标，不用字符） */
.b-policy-dont li::before { content: ""; position: absolute; left: 4px; top: 50%; width: 14px; height: 14px; border: 1.5px solid var(--text-3); border-radius: 50%; transform: translateY(-50%); }
.b-policy-dont li::after { content: ""; position: absolute; left: 10.25px; top: 50%; width: 1.5px; height: 14px; background: var(--text-3); transform: translateY(-50%) rotate(45deg); }

@media (min-width: 768px) {
  .b-gfs-about { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 48px; align-items: start; }
  .b-gfs-about { align-items: stretch; }
  .b-inv-photo { min-height: 360px; }
  .b-tt-row { grid-template-columns: 120px minmax(0, 1fr) 160px; }
  .b-tt-row .who { grid-column: auto; text-align: right; }
  .b-tt-row.is-head .who { display: block; }
  .b-gfs-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .b-who { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .b-fund { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .b-policy-main { font-size: 40px; }
  .b-policy-cols { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 40px; }
}
@media (min-width: 1100px) {
  .b-fund { grid-template-columns: repeat(4, minmax(0, 1fr)); }
  .b-policy-main { font-size: 52px; }
}
/* 手机上「こんな方へ」的要点改成项目名在上、值在下（112px 的项目栏会把值挤成三四行） */
@media (max-width: 767px) {
  .b-who-facts .b-dl-row2 { grid-template-columns: minmax(0, 1fr); gap: 2px; padding: 9px 0; }
  .b-who-facts dt { font-size: 12px; }
}

/* ================================================================
   メンバー企業（b-mem；YC Startup Directory：分组筛选带数量 + 搜索 + 卡片小标签；OpenRouter：钉住的筛选栏）
   ================================================================ */
.b-dir { display: grid; grid-template-columns: minmax(0, 1fr); gap: 16px; }
.b-dir-filter { border: 1px solid var(--border); border-radius: 4px; background: var(--surface); }
.b-dir-filter > summary { display: flex; align-items: center; gap: 8px; min-height: 48px; padding: 0 16px; font-size: 15px; font-weight: 700; cursor: pointer; list-style: none; }
.b-dir-filter > summary::-webkit-details-marker { display: none; }
.b-fsum { margin-left: auto; font-family: var(--mono); font-size: 12px; font-weight: 500; color: var(--text-2); }
.b-fbody { display: flex; flex-direction: column; gap: 18px; padding: 4px 16px 16px; }
.b-fgroup { display: flex; flex-direction: column; gap: 2px; padding-top: 14px; border-top: 1px solid var(--border); }
.b-fg-t { margin-bottom: 6px; font-family: var(--mono); font-size: 12px; font-weight: 600; letter-spacing: 0.04em; color: var(--text-2); }
.b-fopt { display: flex; align-items: center; gap: 10px; min-height: 36px; font-size: 14px; cursor: pointer; }
.b-fopt input { width: 18px; height: 18px; margin: 0; accent-color: var(--text); }
.b-fopt .n { font-family: var(--mono); font-size: 11px; color: var(--text-3); font-variant-numeric: tabular-nums; }
.b-freset { align-self: flex-start; padding-left: 8px; }
.b-dir-main { min-width: 0; }
.b-dir-search { display: flex; align-items: center; gap: 10px; height: 48px; padding: 0 14px; border: 1px solid var(--border-strong); border-radius: 4px; background: var(--surface); color: var(--text-3); transition: border-color 150ms var(--ease-std); }
.b-dir-search:focus-within { border-color: var(--text); }
.b-dir-search input { flex: 1; min-width: 0; height: 100%; border: 0; outline: 0; background: transparent; color: var(--text); font-family: var(--font-body); font-size: 16px; }
.b-dir-bar { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 8px 16px; margin: 14px 0 12px; font-size: 14px; color: var(--text-2); }
.b-dir-bar b { color: var(--text); font-variant-numeric: tabular-nums; }
.b-sort { display: inline-flex; align-items: center; gap: 8px; }
.b-sort .input { width: auto; padding: 0 12px; font-size: 14px; }
.b-mlist { display: flex; flex-direction: column; gap: 10px; }
.b-mcard { display: grid; grid-template-columns: 52px minmax(0, 1fr); gap: 14px; padding: 18px; }
.b-mlogo { display: grid; place-items: center; width: 52px; height: 52px; border: 1px dashed var(--border-strong); border-radius: 50%; font-size: 10px; }
.b-mbody { display: flex; flex-direction: column; gap: 6px; min-width: 0; }
.b-mhead { display: flex; flex-wrap: wrap; align-items: baseline; gap: 4px 10px; }
.b-mhead h3 { font-size: 18px; }
.b-mstage { display: inline-flex; align-items: baseline; gap: 6px; font-size: 12px; font-weight: 700; }
.b-mstage .n { font-family: var(--mono); font-size: 11px; font-weight: 500; color: var(--text-3); }
.b-mone { font-size: 14px; }
.b-mtags { display: flex; flex-wrap: wrap; gap: 6px; }
.b-ytag { display: inline-flex; align-items: center; height: 22px; padding: 0 8px; border: 1px solid var(--border-strong); border-radius: 3px; font-size: 11px; font-weight: 500; color: var(--text-2); }
.b-mmeta { display: flex; flex-wrap: wrap; gap: 4px 0; font-size: 13px; color: var(--text-2); }
.b-mmeta span + span::before { content: ""; display: inline-block; width: 1px; height: 12px; margin: 0 10px; vertical-align: -1px; background: var(--border-strong); }
.b-mact { grid-column: 1 / -1; }
.b-mact .btn { width: 100%; }
.b-empty { display: flex; flex-direction: column; align-items: center; gap: 8px; padding: 48px 20px; border: 1px dashed var(--border-strong); border-radius: 4px; text-align: center; color: var(--text-2); }
.b-empty svg { color: var(--text-3); }
.b-empty .t { font-weight: 700; color: var(--text); }
.b-empty .btn { margin-top: 8px; }
.b-notes { display: flex; flex-direction: column; max-width: 880px; margin: 0; padding: 0; list-style: none; border-top: 1px solid var(--text); }
.b-notes li { padding: 18px 0; border-bottom: 1px solid var(--border); font-size: 15px; color: var(--text-2); }
.b-notes b { color: var(--text); }
/* 页尾「ここに並ぶチームを、／募集しています。」比首页的长，按第一行收小字号 */
.b-mem .v2-final .v2-slogan { font-size: clamp(34px, 8.6vw, 112px); }
.b-mem .v2-final .v2-slogan .l1 { white-space: nowrap; }

@media (min-width: 768px) {
  .b-mcard { grid-template-columns: 56px minmax(0, 1fr) auto; align-items: center; gap: 18px; padding: 20px 22px; }
  .b-mlogo { width: 56px; height: 56px; }
  .b-mact { grid-column: auto; }
  .b-mact .btn { width: auto; }
}
@media (min-width: 1100px) {
  .b-dir { grid-template-columns: 280px minmax(0, 1fr); gap: 24px; align-items: start; }
  .b-dir-side { position: sticky; top: 88px; }
  .b-dir-filter > summary { display: none; }
  .b-fbody { padding-top: 2px; }
  .b-fgroup:first-child { border-top: 0; }
}
/* hidden 属性要压过上面的 display 设置 */
.b-dir [hidden], .b-wall [hidden] { display: none !important; }

/* ---------- 日文按词组换行（span、li、dd 也要，不只 p 和标题） ---------- */
.b-v4 { word-break: auto-phrase; }

/* c.css */

/* ============================================================
   页面组 C：イベント一覧・詳細、Echo University、FDE（类名前缀 c-）
   v4（09-24，执行契约 docs/网站统一-v4-执行契约.md）：和首页同一套样式（css/v2.css，main 上有 .v2）。
   - 页面上唯一的强调色是品牌渐变（--echo-grad）；其余只用黑白灰。卡片不放彩色底，分类只用文字或细边框。
   - 列表的写法：上边一条黑线，行与行之间一条细线；编号和英文小标签用等宽字（--mono）。
   - 活动详情页左侧的封面卡 .c-cover 是用户认可的做法，样式原样保留（这一处保留课程层的淡色和点阵）。
   参照：Luma 东京页与日历页、AI Tinkerers 东京、OpenRouter 模型目录、connpass、Peatix、NEURON、
   Code w/ Claude 东京议程、PyCon JP 手机时间表、JSConf JP 交通、Vercel Ship 日程页签、Figma Config 议程筛选、Origin UI Timeline
   ============================================================ */

/* ---------- 共通 ---------- */
.c-v4 { word-break: auto-phrase; }
.c-nw { white-space: nowrap; }
.c-v4 [hidden] { display: none !important; }
/* 首屏下边线和第一个区块的上边线挨在一起会变成两条，去掉区块那条（有页内导航时同理） */
.c-v4 .v2-phero + .v2-sec, .c-v4 .subnav + .v2-sec { border-top: 0; }
/* 内页的黑底区块是单独出现的（首页的黑底块紧跟在黑底大字后面，v2.css 把上边距压到 24px），这里恢复正常上边距 */
.c-v4 .v2-dark.v2-sec { padding-top: 64px; }
.c-v4 .v2-dark + .v2-sec { border-top: 0; }

.c-kind { background: transparent; color: var(--text); border: 1px solid var(--border-strong); font-weight: 500; }
.c-tag { background: transparent; color: var(--text-2); border: 1px solid var(--border); font-weight: 500; }
.c-num { font-family: var(--mono); font-size: 12px; font-weight: 500; color: var(--text-3); font-variant-numeric: tabular-nums; }
.c-cap { margin-top: 10px; font-size: 12px; color: var(--text-3); }
.c-mini-k { font-size: 12px; color: var(--text-3); }
/* 样例标签：和案件ボード的「サンプル」同一个样子 */
.c-sample { display: inline-flex; align-items: center; height: 22px; padding: 0 8px; border-radius: 4px; border: 1px dashed var(--border-strong); font-size: 11px; font-weight: 500; color: var(--text-3); white-space: nowrap; vertical-align: 1px; }
/* 大号数字（和首页事例的「-30%」同一做法：渐变平涂、静止） */
.c-big { width: fit-content; margin: 0; font-family: var(--font-display); font-size: 72px; font-weight: 700; line-height: 1; letter-spacing: -0.04em; }
.c-big small { font-size: 0.45em; letter-spacing: 0; }
.c-big-l { margin-top: 10px; font-size: 14px; font-weight: 700; }

/* 分段切换（Luma 的「今後／過去」、OpenRouter 的「List／Table」）。按钮 36px，外圈补足 44px 的可点区域 */
.c-seg { display: inline-flex; align-items: center; gap: 2px; padding: 3px; border-radius: var(--r-pill); background: var(--surface-2); border: 1px solid var(--border); flex-shrink: 0; }
.c-seg button { position: relative; display: inline-flex; align-items: center; gap: 6px; height: 36px; padding: 0 14px; border: 0; border-radius: var(--r-pill); background: transparent; color: var(--text-2); font-family: var(--font-body); font-size: 14px; font-weight: 500; cursor: pointer; white-space: nowrap; transition: background-color 150ms var(--ease-std), color 150ms var(--ease-std), box-shadow 150ms var(--ease-std); }
.c-seg button::after { content: ""; position: absolute; inset: -4px 0; }
.c-seg button:hover { color: var(--text); }
.c-seg button[aria-pressed="true"] { background: var(--surface); color: var(--text); box-shadow: 0 1px 2px rgba(9, 9, 9, 0.08), 0 0 0 1px var(--border); }

/* 带数量的胶囊筛选（AI Tinkerers 东京的 FILTER 条） */
.c-pill { position: relative; display: inline-flex; align-items: center; gap: 8px; height: 36px; padding: 0 14px; border-radius: var(--r-pill); border: 1px solid var(--border-strong); background: var(--surface); color: var(--text-2); font-family: var(--font-body); font-size: 14px; font-weight: 500; cursor: pointer; white-space: nowrap; flex-shrink: 0; transition: background-color 150ms var(--ease-std), border-color 150ms var(--ease-std), color 150ms var(--ease-std); }
.c-pill::after { content: ""; position: absolute; inset: -4px -2px; }
.c-pill:hover { border-color: var(--text); color: var(--text); }
.c-pill[aria-pressed="true"] { background: var(--text); border-color: var(--text); color: var(--bg); }
.c-pill[aria-pressed="true"] .c-num { color: rgba(255, 255, 255, 0.66); }

/* 折叠问答：原生 details（和首页的 FAQ 同样的尺寸） */
.c-faq { max-width: 880px; border-top: 1px solid var(--text); }
.c-faq .faq-item { padding: 0; }
.c-faq .faq-item > summary { display: flex; align-items: center; justify-content: space-between; gap: 16px; min-height: 64px; padding: 14px 0; font-size: 17px; font-weight: 500; cursor: pointer; list-style: none; }
.c-faq .faq-item > summary::-webkit-details-marker { display: none; }
.c-pm { display: inline-flex; align-items: center; justify-content: center; width: 32px; height: 32px; flex-shrink: 0; border: 1px solid var(--border-strong); border-radius: 50%; color: var(--text); transition: transform 150ms var(--ease-std), border-color 150ms var(--ease-std); }
.c-faq .faq-item > summary:hover .c-pm { border-color: var(--text); }
.c-faq .faq-item[open] .c-pm { transform: rotate(45deg); }
.c-faq .faq-a { margin: 0; padding: 0 48px 20px 0; font-size: 15px; }

/* 结果件数、空状态 */
.c-result { display: flex; flex-wrap: wrap; align-items: baseline; gap: 4px 10px; margin: 8px 0 18px; font-size: 14px; color: var(--text-2); }
.c-result b { font-family: var(--mono); font-size: 17px; color: var(--text); font-variant-numeric: tabular-nums; }
.c-result-note { font-size: 12px; color: var(--text-3); }
.c-empty .btn { height: 44px; }
.c-empty { display: flex; flex-direction: column; align-items: center; gap: 8px; padding: 48px 20px; border: 1px dashed var(--border-strong); border-radius: 4px; text-align: center; color: var(--text-2); }
.c-empty .icon { width: 28px; height: 28px; color: var(--text-3); }
.c-empty-s { font-size: 13px; color: var(--text-3); }

.c-toolbar { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 10px; }
.c-toolbar-r { display: flex; align-items: center; gap: 8px; }
.c-kinds { display: flex; gap: 8px; margin: 14px 0 2px; padding: 4px 2px; overflow-x: auto; scrollbar-width: none; }
.c-kinds::-webkit-scrollbar { display: none; }
.c-icbtn { display: inline-flex; align-items: center; justify-content: center; width: 44px; height: 44px; border-radius: 50%; border: 1px solid var(--border-strong); background: var(--surface); color: var(--text); cursor: pointer; transition: border-color 150ms var(--ease-std); }
.c-icbtn:hover { border-color: var(--text); }
.c-icbtn[disabled] { opacity: 0.35; cursor: default; }

/* 页尾（v2_final）里的邮件登记 */
.c-cta-form { display: flex; flex-direction: column; gap: 8px; width: 100%; max-width: 460px; }
.c-cta-form .input { width: 100%; }

/* 日期小方块（Luma 的月／日） */
.c-datetile { display: flex; flex-direction: column; width: 56px; flex-shrink: 0; border: 1px solid var(--text); border-radius: 4px; overflow: hidden; background: var(--surface); text-align: center; }
.c-datetile .m { font-size: 11px; font-weight: 700; line-height: 20px; color: var(--bg); background: var(--text); }
.c-datetile .d { font-size: 16px; font-weight: 600; line-height: 34px; color: var(--text-3); }

/* ============ イベント一覧 ============ */
/* 左栏筛选（OpenRouter：钉住、分组折叠、每项带数量） */
.c-evlayout { display: grid; grid-template-columns: minmax(0, 1fr); gap: 16px; }
.c-evmain { min-width: 0; order: 1; }
.c-side { display: none; order: 2; padding: 0 16px 16px; border: 1px solid var(--text); border-radius: 4px; background: var(--surface); }
.c-side.is-open { display: block; order: 0; }
.c-side-head { display: flex; align-items: center; justify-content: space-between; min-height: 48px; font-size: 14px; font-weight: 700; border-bottom: 1px solid var(--border); }
.c-clear { height: 44px; padding: 0 10px; border: 0; border-radius: var(--r-sm); background: none; color: var(--text); font-family: var(--font-body); font-size: 13px; font-weight: 600; text-decoration: underline; text-underline-offset: 3px; cursor: pointer; }
.c-clear:hover { background: var(--surface-2); }
.c-fgroup { padding: 2px 0 8px; border-bottom: 1px solid var(--border); }
.c-fgroup > summary { list-style: none; display: flex; align-items: center; justify-content: space-between; min-height: 44px; font-size: 13px; font-weight: 700; cursor: pointer; }
.c-fgroup > summary::-webkit-details-marker { display: none; }
.c-fgroup > summary svg { color: var(--text-3); transition: transform 150ms var(--ease-std); }
.c-fgroup:not([open]) > summary svg { transform: rotate(-90deg); }
.c-check { position: relative; display: flex; align-items: center; gap: 10px; min-height: 44px; font-size: 14px; color: var(--text-2); cursor: pointer; transition: color 150ms var(--ease-std); }
.c-check:hover { color: var(--text); }
.c-check input { position: absolute; width: 1px; height: 1px; opacity: 0; pointer-events: none; }
.c-box { display: inline-flex; align-items: center; justify-content: center; width: 18px; height: 18px; flex-shrink: 0; border-radius: 4px; border: 1px solid var(--border-strong); background: var(--surface); transition: background-color 150ms var(--ease-std), border-color 150ms var(--ease-std); }
.c-box svg { width: 12px; height: 12px; color: #FFFFFF; opacity: 0; }
.c-check input:checked + .c-box { background: var(--text); border-color: var(--text); }
.c-check input:checked + .c-box svg { opacity: 1; }
.c-check input:focus-visible + .c-box { outline: 2px solid var(--accent); outline-offset: 2px; }
.c-check-l { flex: 1; min-width: 0; }
.c-check .c-num { min-width: 20px; text-align: right; }
.c-check.is-zero { color: var(--text-3); }
.c-follow { margin-top: 20px; padding-top: 16px; border-top: 1px solid var(--text); }
.c-follow-k { font-family: var(--mono); font-size: 11px; letter-spacing: 0.08em; color: var(--text-3); }
.c-follow-t { margin-top: 4px; font-size: 15px; font-weight: 700; line-height: 1.5; }
.c-follow-f { display: flex; gap: 6px; margin-top: 12px; }
.c-follow-f .input { flex: 1; min-width: 0; height: 44px; padding: 0 12px; font-size: 14px; }
.c-follow-f .btn { height: 44px; }
.c-follow-n { margin-top: 8px; font-size: 12px; color: var(--text-3); }
.c-ftoggle { display: inline-flex; align-items: center; gap: 6px; white-space: nowrap; height: 44px; padding: 0 14px; border-radius: var(--r-pill); border: 1px solid var(--border-strong); background: var(--surface); color: var(--text); font-family: var(--font-body); font-size: 14px; font-weight: 500; cursor: pointer; }
.c-ftoggle[aria-expanded="true"] { border-color: var(--text); }
.c-badge { display: inline-flex; align-items: center; justify-content: center; min-width: 20px; height: 20px; padding: 0 6px; border-radius: 10px; background: var(--text); color: var(--bg); font-family: var(--mono); font-size: 11px; font-weight: 600; }

/* 按日期分组（Luma 东京页：今日／明日／9月26日(土)）。每组上边一条黑线，组里一场一行 */
.c-list { display: flex; flex-direction: column; gap: 32px; }
.c-day { border-top: 1px solid var(--text); }
.c-day-h { display: flex; flex-wrap: wrap; align-items: baseline; gap: 2px 10px; margin: 0; padding: 12px 0 10px; font-size: 15px; font-weight: 500; color: var(--text-2); }
.c-day-h b { font-size: 16px; font-weight: 700; color: var(--text); }
.c-day-n { font-family: var(--mono); font-size: 11px; font-weight: 400; color: var(--text-3); }
.c-day-cards { display: flex; flex-direction: column; }

/* 活动一行：时刻 → 标题 → 主办・地点・定员 → 标签（Luma 的字段顺序）。悬停时标题显示渐变、箭头右移 */
.c-card { border-top: 1px solid var(--border); }
.c-card-a { display: grid; grid-template-columns: minmax(0, 1fr) 20px; grid-template-areas: "time go" "body go" "chips go"; gap: 4px 12px; padding: 16px 0 18px; color: var(--text); }
.c-card-time { grid-area: time; font-family: var(--mono); font-size: 12px; color: var(--text-2); font-variant-numeric: tabular-nums; }
.c-card-time .latin { font-family: var(--mono); }
.c-card-body { grid-area: body; min-width: 0; }
.c-card-t { font-size: 17px; line-height: 1.45; background-image: var(--echo-grad); background-size: 160% 100%; background-position: 100% 50%; -webkit-background-clip: text; background-clip: text; color: var(--text); transition: color 250ms var(--ease-std); }
.c-card-a:hover .c-card-t { color: transparent; }
.c-card-meta { display: flex; flex-wrap: wrap; gap: 2px 14px; margin-top: 6px; font-size: 13px; line-height: 1.6; color: var(--text-2); }
.c-mi { display: inline-flex; align-items: center; gap: 5px; }
.c-mi svg { color: var(--text-3); }
.c-card-chips { grid-area: chips; margin-top: 8px; }
.c-card-go { grid-area: go; align-self: center; display: inline-flex; color: var(--text-3); transition: transform 250ms var(--ease-std), color 250ms var(--ease-std); }
.c-card-a:hover .c-card-go { color: var(--text); transform: translateX(4px); }
.c-card-foot { display: inline-flex; align-items: center; gap: 6px; margin-top: 8px; font-size: 13px; font-weight: 600; }
.c-card[data-when="past"] .c-card-t { color: var(--text-2); }

/* 月历（Luma 日历页：有活动的日子打点，今天高亮）。講座は黒丸、交流会などは白抜き */
.c-cal { display: grid; grid-template-columns: minmax(0, 1fr); gap: 20px; }
.c-cal-box { padding-top: 12px; border-top: 1px solid var(--text); }
.c-cal-head { display: flex; align-items: center; justify-content: space-between; gap: 8px; margin-bottom: 6px; }
.c-cal-title { font-family: var(--mono); font-size: 16px; font-weight: 600; font-variant-numeric: tabular-nums; }
.c-cal-nav { display: flex; gap: 6px; }
.c-cal-dow, .c-cal-grid { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); }
.c-cal-dow span { padding: 6px 0; text-align: center; font-size: 12px; color: var(--text-3); }
.c-cell { display: flex; flex-direction: column; align-items: center; gap: 3px; min-height: 48px; padding: 5px 0 4px; border: 0; border-radius: 4px; background: transparent; color: var(--text-3); font-family: var(--mono); font-size: 13px; font-weight: 500; font-variant-numeric: tabular-nums; }
button.c-cell { color: var(--text); cursor: pointer; transition: background-color 150ms var(--ease-std); }
button.c-cell:hover { background: var(--surface-2); }
.c-cell .n { display: inline-flex; align-items: center; justify-content: center; width: 26px; height: 26px; border-radius: 50%; }
.c-cell.is-today .n { background: var(--text); color: var(--bg); }
.c-cell.is-sel { box-shadow: inset 0 0 0 1px var(--text); }
.c-cell-dots { display: flex; gap: 3px; height: 6px; }
.c-cell-dots i, .c-cal-legend i { width: 6px; height: 6px; border-radius: 50%; background: var(--text); }
.c-cell-dots i.is-comm, .c-cal-legend i.is-comm { background: transparent; box-shadow: inset 0 0 0 1.5px var(--text); }
.c-cell-dots i.is-past { opacity: 0.35; }
.c-cal-legend { display: flex; flex-wrap: wrap; gap: 6px 16px; margin-top: 12px; padding-top: 12px; border-top: 1px solid var(--border); font-size: 12px; color: var(--text-2); }
.c-cal-legend span { display: inline-flex; align-items: center; gap: 6px; }
.c-cal-panel { min-width: 0; }
.c-cal-ph { margin-bottom: 8px; font-size: 15px; font-weight: 700; }
.c-cal-ph .placeholder { font-weight: 500; }
.c-cal-list { display: flex; flex-direction: column; border-top: 1px solid var(--text); }
.c-cal-list .c-card:first-child { border-top: 0; }

/* 4 つの形式：講座一块（3 层 × 3 门课），交流会・Demo Day・技術イベント三栏 */
.c-fmt { display: grid; grid-template-columns: minmax(0, 1fr); gap: 40px; }
.c-fmt-course { padding-top: 18px; border-top: 1px solid var(--text); }
.c-fmt-head { display: flex; flex-direction: column; gap: 10px; }
.c-fmt-head > .link { align-self: flex-start; min-height: 44px; font-size: 14px; }
.c-fmt-k { font-family: var(--mono); font-size: 11px; letter-spacing: 0.08em; color: var(--text-3); }
.c-fmt-course h3, .c-fmt-item h3 { margin-top: 4px; font-size: 22px; }
.c-fmt-p { margin-top: 6px; font-size: 14px; color: var(--text-2); }
.c-fmt-fee { margin-top: 6px; font-size: 13px; font-weight: 700; }
.c-fmt-layers { display: grid; grid-template-columns: minmax(0, 1fr); gap: 18px; margin-top: 18px; padding-top: 16px; border-top: 1px solid var(--border); }
.c-fmt-lh { display: flex; align-items: baseline; gap: 10px; margin-bottom: 8px; font-size: 14px; font-weight: 700; }
.c-fmt-lh .n { font-family: var(--mono); font-size: 11px; font-weight: 400; color: var(--text-3); }
.c-fmt-layer ul { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 8px; }
.c-fmt-layer li { display: flex; flex-direction: column; }
.c-fmt-layer li b { font-size: 14px; font-weight: 500; line-height: 1.5; }
.c-fmt-layer li span { font-size: 12px; color: var(--text-3); }
.c-fmt-comm { display: grid; grid-template-columns: minmax(0, 1fr); border-top: 1px solid var(--text); }
.c-fmt-item { display: flex; flex-direction: column; padding: 18px 0 22px; border-bottom: 1px solid var(--border); }
/* 「項目：値」的小表：左列项目名，右列内容（活动形式、FDE 能力的案件例共用一个写法） */
.c-fmt-dl, .c-skx-dl { display: flex; flex-direction: column; gap: 6px; margin: 0; }
.c-fmt-dl > div, .c-skx-dl > div { display: grid; grid-template-columns: 5.5em minmax(0, 1fr); gap: 10px; font-size: 13px; line-height: 1.6; }
.c-fmt-dl dt, .c-skx-dl dt { color: var(--text-3); }
.c-fmt-dl dd, .c-skx-dl dd { margin: 0; color: var(--text); }
.c-fmt-dl { margin-top: 12px; padding-top: 12px; border-top: 1px solid var(--border); }
.c-fmt-go { align-self: flex-start; margin-top: auto; padding-top: 10px; min-height: 44px; font-size: 14px; }

/* 受付状态的看法（本页的黑底块） */
.c-legend { border-top: 1px solid var(--text); }
.c-legend-row { display: grid; grid-template-columns: minmax(0, 1fr); gap: 8px; align-items: center; padding: 14px 0; border-bottom: 1px solid var(--border); font-size: 14px; color: var(--text-2); }
.c-legend-head { display: none; }
.c-legend-btn { display: inline-flex; width: fit-content; align-items: center; height: 30px; padding: 0 12px; border-radius: var(--r-pill); border: 1px solid var(--border-strong); font-size: 13px; font-weight: 500; color: var(--text); }

/* ============ イベント詳細 ============ */
/* 页内导航右侧的申込按钮（NEURON）。共用 .subnav a 的颜色和内边距会压过按钮样式，这里还原 */
.c-sub-cta { display: none; flex-shrink: 0; margin-left: auto; padding-left: 12px; }
.subnav .c-sub-cta .btn { height: 44px; padding: 0 18px; }
.subnav .c-sub-cta .btn-primary, .subnav .c-sub-cta .btn-primary:hover { color: var(--btn-fg); }

/* 两栏：左栏封面与主办（Luma），右栏正文 */
.c-ev .crumb { padding-top: 16px; }
.c-ev-grid { display: grid; grid-template-columns: minmax(0, 1fr); gap: 20px; padding: 16px 0 48px; }
.c-ev-main { min-width: 0; }
.c-ev-leftinfo { display: none; }
/* 封面卡：用户认可，原样保留 */
.c-cover { position: relative; display: flex; flex-direction: column; justify-content: flex-end; aspect-ratio: 16 / 10; padding: 20px; overflow: hidden; border-radius: var(--r-lg); background: var(--tone-soft); }
.c-cover::before { content: ""; position: absolute; inset: 0; background-image: radial-gradient(circle, color-mix(in srgb, var(--tone) 40%, transparent) 1.2px, transparent 1.7px); background-size: 16px 16px; -webkit-mask-image: linear-gradient(200deg, #000 20%, transparent 75%); mask-image: linear-gradient(200deg, #000 20%, transparent 75%); }
.c-cover::after { content: ""; position: absolute; right: -30%; top: -40%; width: 90%; height: 90%; border-radius: 50%; background: radial-gradient(closest-side, color-mix(in srgb, var(--tone) 30%, transparent), transparent); }
.c-cover-k { position: absolute; left: 20px; top: 18px; z-index: 1; font-size: 11px; font-weight: 600; letter-spacing: 0.12em; color: var(--text-2); }
.c-cover-t { position: relative; z-index: 1; font-size: 52px; font-weight: 700; line-height: 0.95; letter-spacing: -0.03em; }
.c-cover-s { position: relative; z-index: 1; margin-top: 10px; font-size: 14px; font-weight: 500; color: var(--text-2); }
.c-cover-ph { position: absolute; right: 16px; bottom: 14px; z-index: 1; font-size: 12px; color: var(--text-3); }
.c-hostcard { padding: 16px 0; border-bottom: 1px solid var(--border); }
.c-hostrow { display: flex; align-items: center; gap: 12px; margin-top: 10px; }
.c-hostrow img { width: 30px; }
.c-hostrow .n { font-size: 15px; font-weight: 700; }
.c-hostrow .s { font-size: 13px; color: var(--text-2); }
.c-leftlinks { list-style: none; margin: 0; padding: 8px 0; border-bottom: 1px solid var(--border); }
.c-leftlinks a { display: flex; align-items: center; min-height: 44px; font-size: 14px; color: var(--text-2); transition: color 150ms var(--ease-std); }
.c-leftlinks a:hover { color: var(--text); }
.c-ev-leftinfo .chips { margin-top: 14px; }

.c-ev-head h1 { margin: 12px 0 10px; font-size: 32px; font-weight: 900; line-height: 1.2; letter-spacing: 0.01em; font-feature-settings: "palt"; }
.c-ev-lead { font-size: 17px; font-weight: 700; }
.c-ev-host { display: flex; flex-wrap: wrap; align-items: center; margin-top: 12px; font-size: 13px; color: var(--text-2); }
.c-ev-host img { width: 16px; margin-right: 8px; }
.c-ev-host .sep { margin: 0 8px; color: var(--text-3); }

/* 日時・会場（Luma 日期方块 + 定位方块；connpass 的 Google カレンダー／ics） */
.c-ev-when { display: flex; flex-direction: column; gap: 16px; margin-top: 24px; padding-top: 20px; border-top: 1px solid var(--text); }
.c-when-row { display: grid; grid-template-columns: 48px minmax(0, 1fr); gap: 14px; align-items: start; }
.c-when-row .c-datetile { width: 48px; }
.c-when-row .c-datetile .d { font-size: 13px; line-height: 27px; }
.c-tile { display: inline-flex; align-items: center; justify-content: center; width: 48px; height: 48px; border: 1px solid var(--border-strong); border-radius: 4px; color: var(--text); }
.c-when-t { font-size: 16px; font-weight: 700; }
.c-when-t a { text-decoration: underline; text-decoration-color: var(--border-strong); text-underline-offset: 3px; }
.c-when-t svg { vertical-align: -2px; color: var(--text-3); }
.c-when-s { margin-top: 2px; font-size: 13px; color: var(--text-2); }
.c-when-s .sep { margin: 0 6px; color: var(--text-3); }
.c-when-links { display: flex; flex-wrap: wrap; gap: 0 18px; margin-top: 4px; font-size: 13px; }
.c-when-links .link { min-height: 44px; }

/* 报名卡（Luma：状态行 + 一句说明 + 唯一主按钮；connpass：参加枠「参加者／定員」、募集期間）。黑色细框，不放彩色底 */
.c-apply { margin-top: 24px; border: 1px solid var(--text); border-radius: 4px; background: var(--surface); }
.c-apply-h { padding: 10px 18px; font-family: var(--mono); font-size: 11px; letter-spacing: 0.08em; color: var(--text-3); border-bottom: 1px solid var(--border); }
.c-apply-st { display: flex; gap: 12px; padding: 16px 18px; border-bottom: 1px solid var(--border); }
.c-st-ic { display: inline-flex; align-items: center; justify-content: center; width: 38px; height: 38px; flex-shrink: 0; border-radius: 50%; border: 1px solid var(--border-strong); color: var(--text); }
.c-apply-st .t { font-size: 16px; font-weight: 700; }
.c-apply-st .d { margin-top: 2px; font-size: 13px; color: var(--text-2); }
.c-apply-body { display: flex; flex-direction: column; gap: 14px; padding: 16px 18px 18px; }
.c-apply-w { font-size: 14px; }
.c-ticket { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 12px 14px; border: 1px solid var(--border); border-radius: 4px; }
.c-ticket-n { font-size: 15px; font-weight: 700; }
.c-ticket-s { font-size: 12px; color: var(--text-2); }
.c-ticket-s .sep { margin: 0 6px; color: var(--text-3); }
.c-ticket-r { flex-shrink: 0; text-align: right; }
.c-ticket-r .k { font-size: 11px; color: var(--text-3); }
.c-ticket-r .v { font-size: 20px; font-weight: 600; font-variant-numeric: tabular-nums; }
.c-ticket-r .v .placeholder { font-family: var(--font-body); font-size: 15px; }
.c-ticket-r .u { font-family: var(--font-body); font-size: 13px; font-weight: 500; color: var(--text-2); }
.c-apply-actions .btn { height: 48px; font-size: 16px; }
.c-apply-note { font-size: 13px; color: var(--text-2); text-align: center; }
.c-apply-sub { margin-top: -6px; font-size: 12px; color: var(--text-3); text-align: center; }
.c-apply-foot { display: flex; flex-direction: column; gap: 6px; margin: 0; padding: 12px 18px; border-top: 1px solid var(--border); }
.c-apply-foot div { display: grid; grid-template-columns: 88px minmax(0, 1fr); gap: 8px; font-size: 13px; }
.c-apply-foot dt { color: var(--text-3); }
.c-apply-foot dd { margin: 0; color: var(--text-2); }
.c-apply-login { padding: 0 18px 12px; font-size: 13px; color: var(--text-2); text-align: center; }
.c-apply-login .link { min-height: 44px; }

/* 正文区块：等宽编号「01/05」+ 标题（一个渐变词）+ 右侧补充 */
.c-blk { margin-top: 48px; padding-top: 20px; border-top: 1px solid var(--text); }
.c-blk-h { display: flex; flex-wrap: wrap; align-items: baseline; gap: 4px 14px; margin-bottom: 18px; }
.c-blk-h .v2-no { flex-basis: 100%; }
.c-blk-h h2 { font-size: 24px; line-height: 1.3; }
.c-blk-n { margin-left: auto; font-size: 13px; color: var(--text-3); }
.c-blk p + p { margin-top: 10px; }
.c-about-grid { display: grid; grid-template-columns: minmax(0, 1fr); gap: 20px; margin-top: 24px; }
.c-about-grid h3 { margin-bottom: 8px; font-size: 15px; }
.c-dash { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 6px; font-size: 15px; color: var(--text-2); }
.c-dash li { position: relative; padding-left: 16px; }
.c-dash li::before { content: ""; position: absolute; left: 0; top: 0.85em; width: 7px; height: 1px; background: var(--text-3); }
.c-term-wrap { margin-top: 28px; }

/* 时间表：桌面树状列表（Code w/ Claude 东京），手机横向滑动 + 跳转胶囊（PyCon JP），「次回」高亮 */
.c-tt-wrap { display: grid; grid-template-columns: minmax(0, 1fr); gap: 14px; }
.c-tt-side { display: flex; flex-direction: column; gap: 4px; font-size: 13px; color: var(--text-2); }
.c-tt-side b { color: var(--text); }
.c-tt-legend { display: flex; align-items: center; gap: 8px; margin-top: 4px; font-size: 12px; }
.c-next-chip { height: 22px; padding: 0 8px; background: var(--text); color: var(--bg); font-size: 11px; }
.c-tt-main { min-width: 0; }
.c-tt-jump { display: flex; gap: 6px; margin-bottom: 8px; padding: 4px 2px; overflow-x: auto; scrollbar-width: none; }
.c-tt-jump::-webkit-scrollbar { display: none; }
.c-tt-jump .c-pill { height: 36px; font-size: 13px; }
.c-tt { list-style: none; margin: 0 calc(var(--gutter) * -1); padding: 2px var(--gutter) 8px; display: flex; gap: 10px; overflow-x: auto; scroll-snap-type: x mandatory; scroll-padding-left: var(--gutter); scrollbar-width: none; }
.c-tt::-webkit-scrollbar { display: none; }
.c-tt-item { flex: 0 0 80%; display: flex; flex-direction: column; gap: 10px; padding: 16px; scroll-snap-align: start; border: 1px solid var(--border-strong); border-radius: 4px; background: var(--surface); }
.c-tt-item.is-next { border-color: var(--text); box-shadow: inset 0 0 0 1px var(--text); }
.c-tt-when { display: flex; flex-wrap: wrap; align-items: baseline; gap: 2px 10px; font-size: 13px; color: var(--text-2); }
.c-tt-when .no { font-family: var(--mono); font-size: 12px; font-weight: 600; color: var(--text); }
.c-tt-when .t { font-family: var(--mono); font-size: 12px; font-variant-numeric: tabular-nums; }
.c-tt-t { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; font-size: 16px; font-weight: 700; }
.c-tt-d { margin-top: 4px; font-size: 14px; color: var(--text-2); }
.c-tt-m { margin-top: 6px; font-size: 12px; color: var(--text-3); }

/* 参加者向け情報：申し込むと見られる項目を写明（connpass「参加者への情報」） */
.c-lock { padding: 18px; border: 1px dashed var(--border-strong); border-radius: 4px; }
.c-lock-t { display: flex; align-items: center; gap: 10px; font-size: 15px; font-weight: 700; }
.c-lock-ic { display: inline-flex; align-items: center; justify-content: center; width: 32px; height: 32px; flex-shrink: 0; border-radius: 50%; background: var(--text); color: var(--bg); }
.c-lock-items { list-style: none; display: flex; flex-wrap: wrap; gap: 8px; margin: 14px 0 0; padding: 0; }
.c-lock-items li { display: inline-flex; align-items: center; height: 30px; padding: 0 12px; border: 1px solid var(--border); border-radius: var(--r-pill); font-size: 13px; color: var(--text-2); }

/* 会場・アクセス（JSConf JP：场馆、地址、地图、车站 + 出口 + 步行分钟）。地图还没有：放写明内容的占位框 */
.c-venue { display: grid; grid-template-columns: minmax(0, 1fr); gap: 12px; }
.c-map-ph { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 6px; min-height: 150px; padding: 20px; border: 1px dashed var(--border-strong); border-radius: 4px; text-align: center; }
.c-map-ph-ic { display: inline-flex; align-items: center; justify-content: center; width: 40px; height: 40px; margin-bottom: 2px; border-radius: 50%; border: 1px solid var(--border); color: var(--text-2); }
.c-map-ph-t { font-size: 15px; font-weight: 500; }
.c-info { margin: 0; }
.c-info-row { display: grid; grid-template-columns: 88px minmax(0, 1fr); gap: 12px; padding: 14px 16px; border-bottom: 1px solid var(--border); font-size: 14px; }
.c-info-row:last-child { border-bottom: 0; }
.c-info-row dt { color: var(--text-3); }
.c-info-row dd { margin: 0; }
.c-venue-info { border: 1px solid var(--border-strong); border-radius: 4px; }
.c-venue-info .link { min-height: 44px; margin: -10px 0; }
.c-sub-h { margin: 22px 0 8px; font-size: 15px; }
.c-access { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 8px; font-size: 14px; }
.c-access li { display: flex; align-items: center; gap: 8px; }
.c-access svg { color: var(--text-3); }

/* 主催（connpass 主办组群卡） */
.c-org { padding: 20px; border: 1px solid var(--border-strong); border-radius: 4px; }
.c-org-top { display: flex; align-items: center; gap: 14px; }
.c-org-top img { width: 38px; }
.c-org-top .n { font-size: 17px; font-weight: 700; }
.c-org-top .s { font-size: 13px; color: var(--text-2); }
.c-org-stats { display: flex; gap: 28px; margin: 16px 0 0; padding: 12px 0; border-top: 1px solid var(--border); border-bottom: 1px solid var(--border); }
.c-org-stats dt { font-size: 12px; color: var(--text-3); }
.c-org-stats dd { margin: 0; font-size: 15px; font-weight: 500; }
.c-org-btns { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 16px; }

/* 手机底部固定按钮（Peatix「チケットを申し込む」、TopView 底栏：背景模糊、避开底部横条） */
.c-mbar { position: sticky; bottom: 0; z-index: 20; padding-bottom: env(safe-area-inset-bottom); border-top: 1px solid var(--text); background: rgba(255, 255, 255, 0.9); -webkit-backdrop-filter: blur(20px) saturate(1.3); backdrop-filter: blur(20px) saturate(1.3); }
.c-mbar-in { display: flex; align-items: center; justify-content: space-between; gap: 12px; max-width: calc(var(--container) + var(--gutter) * 2); margin: 0 auto; padding: 10px var(--gutter); }
.c-mbar-info { flex: 1; min-width: 0; }
.c-mbar-st { display: flex; align-items: center; gap: 6px; font-size: 14px; font-weight: 700; }
.c-mbar-st::before { content: ""; width: 6px; height: 6px; border-radius: 50%; background: #1FA85A; }
/* 手机底栏的状态圆点跟着受付状態变色（和状态标签 .dot-open / .dot-few / .dot-review 一致）；满席、受付终了是灰色 */
.c-mbar-st[data-state="few"]::before { background: var(--brand-pink); }
.c-mbar-st[data-state="review"]::before, .c-mbar-st[data-state="member"]::before { background: var(--brand-purple); }
.c-mbar-st[data-state="full"]::before, .c-mbar-st[data-state="closed"]::before { background: var(--text-3); }
.c-mbar-s { overflow: hidden; font-size: 12px; color: var(--text-2); white-space: nowrap; text-overflow: ellipsis; }
.c-mbar .btn { flex-shrink: 0; }

/* ============ Echo University ============ */
.c-uni-bar { margin-bottom: 2px; }
.c-uni-tabs { margin: 0; }
.c-layers { display: flex; flex-direction: column; }
/* 三层：每层一行，上边一条黑线；课程卡只用细边框（分类靠层名文字） */
.c-layer { display: grid; grid-template-columns: minmax(0, 1fr); gap: 14px; padding: 18px 0 28px; border-top: 1px solid var(--text); }
.c-layer-h { display: flex; flex-direction: column; gap: 4px; }
.c-layer-no { font-family: var(--mono); font-size: 12px; font-weight: 600; color: var(--text-3); }
.c-layer-h h3 { font-size: 20px; }
.c-layer-h p { font-size: 14px; color: var(--text-2); }
.c-layer-n { font-family: var(--mono); font-size: 11px; color: var(--text-3); }
.c-layer-cards { display: grid; grid-template-columns: minmax(0, 1fr); gap: 10px; }
.c-course { display: flex; flex-direction: column; gap: 10px; padding: 18px; border: 1px solid var(--border-strong); border-radius: 4px; background: var(--surface); color: var(--text); transition: border-color 150ms var(--ease-std); }
.c-course:hover { border-color: var(--text); }
.c-course-top { display: flex; flex-wrap: wrap; gap: 6px; }
.c-course h3 { font-size: 18px; line-height: 1.4; }
.c-course-lead { font-size: 14px; color: var(--text-2); }
.c-course-facts { display: flex; flex-wrap: wrap; gap: 6px 22px; margin: auto 0 0; padding-top: 12px; border-top: 1px solid var(--border); }
.c-course-facts dt { font-size: 11px; color: var(--text-3); }
.c-course-facts dd { margin: 0; font-size: 14px; font-weight: 500; }
.c-course-go { display: inline-flex; align-items: center; gap: 6px; font-size: 13px; font-weight: 600; }
.c-course-go svg { transition: transform 150ms var(--ease-std); }
.c-course:hover .c-course-go svg { transform: translateX(3px); }
/* 列表视图（Figma Config 的列表／网格切换） */
.c-layers.is-list .c-layer-cards { gap: 0; }
.c-layers.is-list .c-course { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 6px 16px; align-items: center; padding: 14px 4px; border: 0; border-top: 1px solid var(--border); border-radius: 0; background: transparent; }
.c-layers.is-list .c-course h3 { grid-column: 1; grid-row: 1; font-size: 16px; }
.c-layers.is-list .c-course-top { grid-column: 1; grid-row: 2; }
.c-layers.is-list .c-course-facts { grid-column: 1; grid-row: 3; margin: 0; padding: 0; border: 0; }
.c-layers.is-list .c-course-go { grid-column: 2; grid-row: 1 / span 3; font-size: 0; gap: 0; }
.c-layers.is-list .c-course-go svg { width: 18px; height: 18px; color: var(--text-3); }
.c-layers.is-list .c-course-lead { display: none; }

/* 旗舰课程（PickHub 旗舰项目）：上边一条黑线，左边课程要点，右边 6 项能力 */
.c-flag { display: grid; grid-template-columns: minmax(0, 1fr); gap: 28px; padding-top: 22px; border-top: 1px solid var(--text); }
.c-flag-k { font-family: var(--mono); font-size: 11px; letter-spacing: 0.08em; color: var(--text-3); }
.c-flag h3 { margin: 4px 0 10px; font-size: 26px; }
.c-flag-lead { max-width: 36em; font-size: 15px; color: var(--text-2); }
.c-flag-facts { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px 20px; margin: 20px 0 0; }
.c-flag-facts dt { font-size: 12px; color: var(--text-3); }
.c-flag-facts dd { margin: 2px 0 0; font-size: 15px; font-weight: 500; }
.c-flag-facts div:nth-child(n+3) { grid-column: 1 / -1; }
.c-flag-btns { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 22px; }
.c-flag-side { padding-top: 18px; border-top: 1px solid var(--border); }
.c-skill-list { list-style: none; margin: 8px 0 14px; padding: 0; }
.c-skill-list li { display: flex; align-items: baseline; gap: 12px; padding: 9px 0; border-bottom: 1px solid var(--border); font-size: 15px; font-weight: 500; }
.c-skill-list span { font-family: var(--mono); font-size: 12px; font-weight: 600; color: var(--text-3); }
.c-flag-ex { display: flex; flex-direction: column; align-items: flex-start; gap: 2px; }
.c-flag-ex-p { font-size: 13px; line-height: 1.7; color: var(--text-2); }
.c-flag-ex-p .c-sample { margin-left: 6px; }
.c-flag-ex .link { min-height: 44px; font-size: 14px; }

/* 成长地图（黑底块。PickHub L4→L1；Origin UI Timeline：左边阶段号，中间节点和竖线，右边内容；起点用渐变圆点） */
.c-growth { display: grid; grid-template-columns: minmax(0, 1fr); gap: 28px; }
.c-growth-big { margin-bottom: 12px; font-size: 26px; font-weight: 900; line-height: 1.3; }
.c-growth-side > p:not(.c-growth-big):not(.c-cap) { font-size: 15px; color: var(--text-2); }
.c-tl { list-style: none; margin: 0; padding: 0; }
.c-tl-item { position: relative; padding: 0 0 28px 34px; }
.c-tl-item:last-child { padding-bottom: 0; }
.c-tl-item::before { content: ""; position: absolute; left: 7px; top: 22px; bottom: 2px; width: 1px; background: var(--border-strong); }
.c-tl-item:last-child::before { display: none; }
.c-tl-node { position: absolute; left: 0; top: 3px; width: 15px; height: 15px; border-radius: 50%; border: 1px solid var(--text); background: var(--bg); }
.c-tl-item.is-start .c-tl-node { border: 0; background: var(--echo-grad); }
.c-tl-k { font-family: var(--mono); font-size: 11px; font-weight: 600; letter-spacing: 0.06em; color: var(--text-3); }
.c-tl-body h3 { font-size: 19px; }
.c-tl-goal { margin-top: 2px; font-size: 14px; color: var(--text-2); }
.c-tl-dl { display: grid; grid-template-columns: minmax(0, 1fr); gap: 10px; margin: 12px 0 0; padding-top: 12px; border-top: 1px solid var(--border-strong); }
.c-tl-dl dt { font-size: 11px; color: var(--text-3); }
.c-tl-dl dd { margin: 2px 0 0; font-size: 14px; }

/* 开讲日程（Vercel Ship 的页签 + 表格；PickHub 班期卡字段） */
.c-tabs { display: flex; overflow-x: auto; border-bottom: 1px solid var(--text); scrollbar-width: none; }
.c-tabs::-webkit-scrollbar { display: none; }
.c-tabs button { display: inline-flex; align-items: center; gap: 8px; height: 46px; margin-bottom: -1px; padding: 0 18px; border: 0; border-bottom: 2px solid transparent; background: transparent; color: var(--text-2); font-family: var(--font-body); font-size: 14px; font-weight: 500; white-space: nowrap; cursor: pointer; transition: color 150ms var(--ease-std); }
.c-tabs button:hover { color: var(--text); }
.c-tabs button[aria-selected="true"] { color: var(--text); border-bottom-color: var(--text); font-weight: 700; }
.c-tabpanel { padding-top: 6px; }
.c-tabpanel .c-empty { margin-top: 16px; }
.c-runs { display: flex; flex-direction: column; }
.c-run { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); grid-template-areas: "c c" "d cap" "fee st" "go go"; gap: 10px 12px; align-items: center; padding: 16px 0; border-bottom: 1px solid var(--border); font-size: 14px; }
.c-run-head { display: none; }
.c-run-c { grid-area: c; }
.c-run-c b { font-size: 16px; }
.c-run-no { display: none; }
.c-run-d { grid-area: d; }
.c-run-cap { grid-area: cap; }
.c-run-fee { grid-area: fee; }
.c-run-st { grid-area: st; }
.c-run-go { grid-area: go; }
.c-run-go .btn { width: 100%; height: 44px; }
.c-run-sub { display: block; margin-top: 2px; font-size: 12px; color: var(--text-3); }
.c-run-c .c-run-sub { margin-top: 4px; }

/* 受講の流れ（黑底块。Origin UI Timeline：手机竖向，桌面横向） */
.c-hflow { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: minmax(0, 1fr); }
.c-hflow li { position: relative; padding: 0 0 26px 52px; }
.c-hflow li::before { content: ""; position: absolute; left: 17px; top: 38px; bottom: 2px; width: 1px; background: var(--border-strong); }
.c-hflow li:last-child { padding-bottom: 0; }
.c-hflow li:last-child::before { display: none; }
.c-hflow-node { position: absolute; left: 0; top: 0; display: inline-flex; align-items: center; justify-content: center; width: 36px; height: 36px; border-radius: 50%; border: 1px solid var(--text); font-family: var(--mono); font-size: 12px; font-weight: 600; color: var(--text); }
.c-hflow h3 { padding-top: 6px; font-size: 17px; }
.c-hflow p { margin-top: 4px; font-size: 14px; color: var(--text-2); }

/* ============ FDE ============ */
.c-fde-about { display: grid; grid-template-columns: minmax(0, 1fr); gap: 32px; }
.c-fde-en { font-family: var(--mono); font-size: 12px; letter-spacing: 0.08em; text-transform: uppercase; color: var(--text-3); }
.c-fde-ja { margin-top: 2px; font-size: 15px; font-weight: 700; }
.c-quote { margin: 18px 0; padding: 2px 0 2px 18px; border-left: 3px solid var(--text); font-size: 24px; font-weight: 900; line-height: 1.45; word-break: auto-phrase; text-wrap: balance; }
.c-fde-p { font-size: 15px; line-height: 1.9; color: var(--text-2); }
.c-ways { list-style: none; margin: 10px 0 0; padding: 0; border-top: 1px solid var(--text); }
.c-ways li { display: grid; grid-template-columns: 40px minmax(0, 1fr); gap: 2px 8px; padding: 14px 0; border-bottom: 1px solid var(--border); }
.c-ways .n { grid-row: 1 / 3; padding-top: 4px; font-family: var(--mono); font-size: 12px; font-weight: 600; color: var(--text-3); }
.c-ways b { font-size: 17px; }
.c-ways .d { font-size: 14px; color: var(--text-2); }

/* 6 つの能力：3 列（手机 1 列），每项上边一条黑线；底部一个「案件の例」（案件ボードの样例案件） */
.c-skills { display: grid; grid-template-columns: minmax(0, 1fr); gap: 28px 32px; }
.c-skill { display: flex; flex-direction: column; gap: 6px; padding-top: 16px; border-top: 1px solid var(--text); }
.c-skill-no { font-family: var(--mono); font-size: 12px; font-weight: 600; color: var(--text-3); }
.c-skill h3 { font-size: 19px; }
.c-skill-d { font-size: 14px; color: var(--text-2); }
.c-skx { display: flex; flex-direction: column; gap: 8px; margin-top: auto; padding-top: 14px; border-top: 1px solid var(--border); }
.c-skill-d + .c-skx { margin-top: 8px; }
.c-skx .c-skx-k { display: flex; align-items: center; justify-content: space-between; gap: 8px; font-size: 12px; color: var(--text-3); }
.c-skx .c-skx-t { font-size: 15px; font-weight: 700; line-height: 1.55; color: var(--text); }
.c-skx-note { display: flex; flex-wrap: wrap; align-items: center; gap: 2px 12px; margin-top: 20px; }
.c-skx-note .link { min-height: 44px; font-size: 13px; }

/* 成果（例）：前后对比，改善后的条用渐变；事例卡 */
.c-result-grid { display: grid; grid-template-columns: minmax(0, 1fr); gap: 16px; }
.c-cmp { border: 1px solid var(--text); border-radius: 4px; background: var(--surface); }
.c-cmp-top { display: flex; align-items: center; gap: 12px; min-height: 44px; padding: 0 18px; border-bottom: 1px solid var(--border); }
.c-cmp-title { font-size: 14px; font-weight: 700; }
.c-ex { display: inline-flex; align-items: center; height: 22px; margin-left: auto; padding: 0 10px; border-radius: var(--r-pill); background: var(--text); color: var(--bg); font-size: 12px; font-weight: 700; }
.c-cmp-body { padding: 18px; }
.c-cmp-cols { display: grid; grid-template-columns: minmax(0, 1fr); gap: 10px; }
.c-cmp-col { padding: 14px 16px; border: 1px solid var(--border); border-radius: 4px; }
.c-cmp-col.is-after { border-color: var(--text); }
.c-cmp-k { font-size: 12px; color: var(--text-2); }
.c-cmp-v { margin-top: 4px; font-size: 15px; font-weight: 700; }
.c-cmp-v .latin { font-size: 22px; }
.c-cmp-mid { display: flex; align-items: center; justify-content: center; gap: 8px; font-size: 13px; color: var(--text-2); }
.c-cmp-mid svg { transform: rotate(90deg); }
.c-cmp-ms { display: grid; grid-template-columns: minmax(0, 1fr); gap: 14px; margin-top: 20px; }
.c-cmp-m .k { margin-bottom: 6px; font-size: 12px; color: var(--text-3); }
.c-cmp-bars { display: flex; flex-direction: column; gap: 6px; }
.c-cmp-bar { position: relative; height: 26px; }
.c-cmp-bar span { display: block; height: 100%; border-radius: 2px; background: var(--surface-2); }
.c-cmp-bar.is-after span { background: var(--echo-grad); }
.c-cmp-bar b { position: absolute; left: 10px; top: 50%; transform: translateY(-50%); font-size: 12px; font-weight: 600; white-space: nowrap; }
.c-cmp-bar.is-after b { color: #FFFFFF; }
.c-cmp-ai { display: flex; align-items: center; gap: 14px; margin-top: 18px; padding-top: 16px; border-top: 1px solid var(--border); font-size: 14px; }
.c-cmp-ai-bar { flex: 1; height: 8px; overflow: hidden; border-radius: 2px; background: var(--surface-2); }
.c-cmp-ai-bar span { display: block; height: 100%; background: var(--echo-grad); }
.c-cmp-ai b { font-size: 18px; }
.c-cmp-note { padding: 10px 18px 14px; border-top: 1px solid var(--border); font-size: 12px; color: var(--text-3); }
.c-case { display: flex; flex-direction: column; gap: 14px; padding: 20px; border: 1px solid var(--border-strong); border-radius: 4px; }
.c-case-top { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 8px; }
.c-case-flag { display: inline-flex; align-items: center; height: 24px; padding: 0 10px; border: 1px dashed var(--border-strong); border-radius: var(--r-pill); font-size: 12px; color: var(--text-2); }
.c-case h3 { font-size: 22px; }
.c-case-facts { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; margin: 0; border-top: 1px solid var(--border); }
.c-case-facts div { padding: 10px 0 0; }
.c-case-facts dt { font-size: 11px; color: var(--text-3); }
.c-case-facts dd { margin: 2px 0 0; font-size: 15px; font-weight: 500; }
.c-case-mid { display: flex; gap: 18px; font-size: 15px; font-weight: 500; }
.c-case-mid .latin { font-size: 18px; font-weight: 600; }
.c-case-result { margin-top: auto; padding-top: 8px; }

/* なぜ今（黑底块：大号渐变数字 + 出处；职种的来路） */
.c-why { display: grid; grid-template-columns: minmax(0, 1fr); gap: 28px; }
.c-why-num .c-big { font-size: 96px; }
.c-src { margin-top: 10px; font-size: 12px; color: var(--text-3); }
.c-why-lead { margin-bottom: 12px; font-size: 22px; font-weight: 900; }
.c-why-text > p:not(.c-why-lead) { font-size: 15px; line-height: 1.9; color: var(--text-2); }
.c-chain { list-style: none; margin: 22px 0 0; padding: 0; display: grid; grid-template-columns: minmax(0, 1fr); gap: 8px; }
.c-chain li { position: relative; display: flex; flex-direction: column; gap: 2px; padding: 14px 16px; border: 1px solid var(--border-strong); border-radius: 4px; }
.c-chain span { font-size: 15px; font-weight: 600; }
.c-chain b { font-size: 13px; font-weight: 500; color: var(--text-2); }
.c-chain li:last-child { border-color: var(--text); background: var(--text); color: var(--bg); }
.c-chain li:last-child b { color: inherit; opacity: 0.75; }

/* 育成ルート（Origin UI Timeline：手机竖向，桌面横向；起点用渐变圆点） */
.c-route { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: minmax(0, 1fr); }
.c-route-item { position: relative; padding: 0 0 28px 36px; }
.c-route-item:last-child { padding-bottom: 0; }
.c-route-item::before { content: ""; position: absolute; left: 7px; top: 22px; bottom: 2px; width: 1px; background: var(--border-strong); }
.c-route-item:last-child::before { display: none; }
.c-route-node { position: absolute; left: 0; top: 3px; width: 15px; height: 15px; border-radius: 50%; border: 1px solid var(--text); background: var(--bg); }
.c-route-item.is-start .c-route-node { border: 0; background: var(--echo-grad); }
.c-route-no { font-family: var(--mono); font-size: 12px; font-weight: 600; color: var(--text-3); }
.c-route-item h3 { margin-top: 2px; font-size: 19px; }
.c-route-meta { margin-top: 4px; font-size: 13px; font-weight: 700; color: var(--text); }
.c-route-d { margin-top: 6px; font-size: 14px; color: var(--text-2); }
.c-route-item .link { min-height: 44px; margin-top: 2px; font-size: 14px; }

/* 募集要項（黑底块） */
.c-req { border-top: 1px solid var(--text); }
.c-req-note { display: block; margin-top: 6px; font-size: 13px; font-weight: 400; color: var(--text-2); }

/* 企業の方へ */
.c-ent { display: grid; grid-template-columns: minmax(0, 1fr); gap: 20px; padding-top: 22px; border-top: 1px solid var(--text); }
.c-ent h3 { margin: 0 0 10px; font-size: 24px; }
.c-ent p { max-width: 40em; font-size: 15px; color: var(--text-2); }
.c-ent-facts { display: flex; flex-wrap: wrap; gap: 10px 28px; margin: 18px 0 0; }
.c-ent-facts dt { font-size: 12px; color: var(--text-3); }
.c-ent-facts dd { margin: 2px 0 0; font-size: 15px; font-weight: 500; }
.c-ent-btns { display: flex; flex-wrap: wrap; align-items: flex-start; gap: 10px; }

/* ============ 窄屏：视图切换只留图标；形式胶囊右侧淡出，提示可以横滑 ============ */
@media (max-width: 479px) {
  .c-mbar .btn { padding: 0 16px; }
  .c-seg[data-c-view] button span { display: none; }
  .c-seg[data-c-view] button { padding: 0 13px; }
  .c-big { font-size: 64px; }
  .c-why-num .c-big { font-size: 80px; }
}
@media (max-width: 1099px) {
  .c-kinds { -webkit-mask-image: linear-gradient(to right, #000 86%, transparent); mask-image: linear-gradient(to right, #000 86%, transparent); padding-right: 32px; }
}

/* ============ ≥768px ============ */
@media (min-width: 768px) {
  .c-v4 .v2-dark.v2-sec { padding-top: 96px; }
  .c-cta-form { flex-direction: row; }
  .c-cta-form .input { flex: 1; }
  .c-card-a { grid-template-columns: 112px minmax(0, 1fr) auto 24px; grid-template-areas: "time body chips go"; align-items: start; gap: 0 20px; padding: 18px 0; }
  .c-card-time { padding-top: 4px; }
  .c-card-t { font-size: 19px; }
  .c-card-chips { max-width: 280px; margin-top: 2px; justify-content: flex-end; }
  .c-card-go { align-self: start; padding-top: 4px; }
  .c-cal-list .c-card-a { grid-template-columns: minmax(0, 1fr) 20px; grid-template-areas: "time go" "body go" "chips go"; gap: 4px 12px; padding: 14px 0 16px; }
  .c-cal-list .c-card-chips { justify-content: flex-start; max-width: none; margin-top: 8px; }
  .c-cal-list .c-card-t { font-size: 17px; }
  .c-cell { min-height: 62px; font-size: 14px; }
  .c-fmt-head { flex-direction: row; align-items: flex-end; justify-content: space-between; gap: 24px; }
  .c-fmt-layers { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 24px 32px; }
  .c-fmt-comm { grid-template-columns: repeat(3, minmax(0, 1fr)); column-gap: 32px; }
  .c-fmt-item { border-bottom: 0; }
  .c-legend-row { grid-template-columns: 210px minmax(0, 1fr) 190px; gap: 20px; }
  .c-legend-head { display: grid; padding: 10px 0; font-size: 12px; color: var(--text-3); }
  .c-ev-head h1 { font-size: 44px; }
  .c-about-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 32px; }
  .c-blk-h .v2-no { flex-basis: auto; min-width: 64px; }
  .c-venue { grid-template-columns: minmax(0, 1fr) minmax(0, 1.15fr); }
  .c-map-ph { min-height: 0; }
  .c-tt-jump { display: none; }
  .c-tt { display: block; margin: 0; padding: 0; overflow: visible; }
  .c-tt-item { display: grid; grid-template-columns: 150px minmax(0, 1fr); gap: 0 20px; padding: 0; border: 0; border-radius: 0; background: none; box-shadow: none; }
  .c-tt-item.is-next { box-shadow: none; }
  .c-tt-when { flex-direction: column; align-items: flex-start; gap: 0; padding: 16px 0; }
  .c-tt-body { position: relative; padding: 16px 0 16px 28px; border-left: 1px solid var(--border-strong); }
  .c-tt-body::before { content: ""; position: absolute; left: 0; top: 29px; width: 16px; border-top: 1px solid var(--border-strong); }
  .c-tt-item:first-child .c-tt-body { border-image: linear-gradient(to bottom, transparent 29px, var(--border-strong) 29px) 1; }
  .c-tt-item:last-child .c-tt-body { border-image: linear-gradient(to bottom, var(--border-strong) 30px, transparent 30px) 1; }
  .c-tt-item.is-next .c-tt-body::before { border-top: 2px solid var(--text); }
  .c-tt-item.is-next .c-tt-when .t { color: var(--text); font-weight: 600; }
  .c-layer-cards { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .c-layers.is-list .c-layer-cards { grid-template-columns: minmax(0, 1fr); }
  .c-layers.is-list .c-course { grid-template-columns: minmax(0, 1.4fr) 170px minmax(0, 1.1fr) 24px; }
  .c-layers.is-list .c-course h3 { grid-column: 1; grid-row: 1; }
  .c-layers.is-list .c-course-top { grid-column: 2; grid-row: 1; }
  .c-layers.is-list .c-course-facts { grid-column: 3; grid-row: 1; }
  .c-layers.is-list .c-course-go { grid-column: 4; grid-row: 1; }
  .c-tl-item { padding-left: 128px; }
  .c-tl-k { position: absolute; left: 0; top: 3px; width: 92px; text-align: right; }
  .c-tl-node { left: 106px; }
  .c-tl-item::before { left: 113px; }
  .c-tl-dl { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 16px; }
  .c-run { grid-template-columns: minmax(0, 2fr) minmax(0, 1.3fr) minmax(0, 1fr) minmax(0, 0.8fr) minmax(0, 1.3fr) 136px; grid-template-areas: "c d cap fee st go"; }
  .c-run-head { display: grid; padding: 10px 0; font-size: 12px; color: var(--text-3); }
  .c-run-head span:nth-child(1) { grid-area: c; } .c-run-head span:nth-child(3) { grid-area: d; } .c-run-head span:nth-child(4) { grid-area: cap; }
  .c-run-head span:nth-child(5) { grid-area: fee; } .c-run-head span:nth-child(6) { grid-area: st; } .c-run-head span:nth-child(2), .c-run-head span:nth-child(7) { display: none; }
  .c-run-go .btn { width: 100%; height: 44px; }
  .c-skills { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .c-cmp-cols { grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr); align-items: center; }
  .c-cmp-mid { flex-direction: column; gap: 4px; max-width: 110px; text-align: center; }
  .c-cmp-mid svg { transform: none; }
  .c-cmp-ms { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 20px; }
  .c-chain { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .c-big { font-size: 88px; }
  .c-why-num .c-big { font-size: 128px; }
}

/* ============ ≥1100px ============ */
@media (min-width: 1100px) {
  .c-evlayout { grid-template-columns: 236px minmax(0, 1fr); gap: 40px; align-items: start; }
  .c-side, .c-side.is-open { display: block; order: 0; position: sticky; top: 88px; max-height: calc(100vh - 104px); overflow-y: auto; padding: 0 4px 0 0; border: 0; border-radius: 0; background: none; scrollbar-width: thin; }
  .c-side-head { border-top: 1px solid var(--text); }
  .c-ftoggle { display: none; }
  .c-cal { grid-template-columns: minmax(0, 1.15fr) minmax(0, 1fr); gap: 32px; align-items: start; }
  .c-sub-cta { display: inline-flex; }
  .c-ev-grid { grid-template-columns: 330px minmax(0, 1fr); gap: 56px; padding: 24px 0 96px; align-items: start; }
  .c-ev-left { position: sticky; top: 137px; }
  .c-ev-leftinfo { display: block; }
  .c-ev-main { max-width: 780px; }
  .c-cover { aspect-ratio: 1; padding: 26px; }
  .c-cover-t { font-size: 60px; }
  .c-ev-head h1 { font-size: 52px; }
  .c-tt-wrap { grid-template-columns: 170px minmax(0, 1fr); gap: 28px; }
  .c-tt-side { position: sticky; top: 140px; align-self: start; padding-top: 16px; }
  .c-mbar { display: none; }
  .c-layer { grid-template-columns: 220px minmax(0, 1fr); gap: 32px; padding: 22px 0 32px; }
  .c-flag { grid-template-columns: minmax(0, 1.2fr) minmax(0, 1fr); gap: 56px; }
  .c-flag h3 { font-size: 34px; }
  .c-flag-side { padding: 0 0 0 40px; border-top: 0; border-left: 1px solid var(--border); }
  .c-growth { grid-template-columns: 300px minmax(0, 1fr); gap: 64px; }
  .c-growth-side { position: sticky; top: 140px; align-self: start; }
  .c-growth-big { font-size: 32px; }
  .c-run { grid-template-columns: minmax(0, 2.1fr) 64px minmax(0, 1.4fr) minmax(0, 1fr) minmax(0, 0.8fr) minmax(0, 1.4fr) 150px; grid-template-areas: "c no d cap fee st go"; }
  .c-run-no { display: block; grid-area: no; color: var(--text-2); }
  .c-run-head span:nth-child(2) { display: block; grid-area: no; }
  .c-hflow { grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 20px; }
  .c-hflow li { padding: 52px 0 0; }
  .c-hflow li::before { left: 44px; right: -14px; top: 18px; bottom: auto; width: auto; height: 1px; }
  .c-hflow li:last-child::before { display: none; }
  .c-hflow h3 { padding-top: 0; }
  .c-fde-about { grid-template-columns: minmax(0, 1.15fr) minmax(0, 1fr); gap: 64px; align-items: start; }
  .c-quote { font-size: 30px; }
  .c-skills { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .c-result-grid { grid-template-columns: minmax(0, 1.5fr) minmax(0, 1fr); align-items: stretch; }
  .c-why { grid-template-columns: minmax(0, 0.9fr) minmax(0, 1.1fr); gap: 64px; align-items: center; }
  .c-why-lead { font-size: 26px; }
  .c-route { grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 24px; }
  .c-route-item { padding: 34px 0 0; }
  .c-route-item::before { left: 22px; right: -22px; top: 10px; bottom: auto; width: auto; height: 1px; }
  .c-route-item:last-child::before { display: none; }
  .c-ent { grid-template-columns: minmax(0, 1fr) auto; align-items: end; }
  .c-ent h3 { font-size: 30px; }
}

/* 课程卡顶部的封面卡贴齐卡片边缘（卡片内边距 18px）；列表视图不显示封面 */
.c-course > .c-cover.is-card { margin: -18px -18px 4px; border-radius: 3px 3px 0 0; }
/* 列表视图：封面卡退回成一行标题（占原来 h3 的位置），不显示底色、点阵和小字 */
.c-layers.is-list .c-course > .c-cover { grid-column: 1; grid-row: 1; aspect-ratio: auto; margin: 0; padding: 0; background: none; border-radius: 0; overflow: visible; }
.c-layers.is-list .c-course > .c-cover::before, .c-layers.is-list .c-course > .c-cover::after, .c-layers.is-list .c-course > .c-cover .c-cover-k { display: none; }
.c-layers.is-list .c-course > .c-cover .c-cover-t { font-size: 16px; font-weight: 700; line-height: 1.5; letter-spacing: 0; }

/* 活动页 01 近日開催（09-25 从首页挪来）：申込の種類一行 + 3 张封面卡 */
.c-kinds-row { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 10px; margin-bottom: 20px; font-size: 13px; color: var(--text-2); }
.c-kinds-k { margin-right: 4px; }
.c-pick { padding: 0 0 18px; overflow: hidden; }
.c-pick > .c-cover.is-card { margin: 0 0 4px; border-radius: 0; }
.c-pick > .chips, .c-pick > .meta, .c-pick > .card-foot { padding: 0 18px; }

/* University 成長マップ：滚到第几步，圆点就亮到第几步，竖线跟着填上主题色（09-25 用户：圆点不会跟着往下走）；js/c.js */
.c-tl-item.is-start .c-tl-node { background: var(--bg); border: 1px solid var(--text); }
.c-tl-item.is-reached .c-tl-node { border-color: var(--tone); background: var(--tone); }
.theme-dark .c-tl-item.is-reached .c-tl-node { border-color: var(--tone-on-dark, var(--tone)); background: var(--tone-on-dark, var(--tone)); }
.c-tl-item.is-current .c-tl-node { box-shadow: 0 0 0 5px color-mix(in srgb, var(--tone-on-dark, var(--tone)) 28%, transparent); }
.c-tl-item.is-reached:not(.is-current)::before { background: var(--tone-on-dark, var(--tone)); }
[data-motion="on"] .c-tl-node { transition: background-color 0.3s, border-color 0.3s, box-shadow 0.3s; }
[data-motion="on"] .c-tl-item::before { transition: background-color 0.3s; }

/* d.css */

/* D 组：Echo とは（about）・拠点一覧（spots）・拠点詳細（spot）・店内 QR 落地（welcome）・ログイン（login）
   v4（09-24）：about、spots、spot 统一成首页样式——首屏、编号区块、页尾用 css/v2.css 的 v2_page_hero / v2_section / v2_final，
   这里只写各页独有的部分。颜色只用黑白灰和品牌渐变（--echo-grad）：去掉卡片彩色淡底、分类彩色底、色团和光晕。
   welcome 与 login 维持原样（本文件后半）。类名一律 d- 开头。 */

/* 本组元素带 hidden 属性时一律隐藏（避免 display:flex / grid 盖掉 hidden） */
[class^="d-"][hidden], [class*=" d-"][hidden] { display: none !important; }
.d-br { display: none; }

/* ---------- 活动横条（spot、welcome 共用：Luma 列表行 + AI Tinkerers 的日期方块） ---------- */
.d-date { display: inline-flex; flex-direction: column; width: 52px; border: 1px solid var(--border-strong); border-radius: 8px; overflow: hidden; text-align: center; flex-shrink: 0; background: var(--surface); }
.d-date .m { display: block; padding: 2px 0; background: var(--text); color: var(--bg); font-size: 11px; font-weight: 700; letter-spacing: 0.04em; }
.d-date .d { display: block; padding: 5px 0 6px; font-size: 15px; font-weight: 700; font-variant-numeric: tabular-nums; }
.d-evs { display: flex; flex-direction: column; gap: 8px; }
.d-ev { display: grid; grid-template-columns: auto minmax(0, 1fr) auto; gap: 14px; align-items: center; padding: 12px 14px; }
.d-ev-body { display: flex; flex-direction: column; gap: 3px; min-width: 0; }
.d-ev-time { font-size: 13px; font-weight: 600; color: var(--text-2); font-variant-numeric: tabular-nums; }
.d-ev-t { font-size: 15px; font-weight: 700; line-height: 1.45; }
.d-ev-meta { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; margin-top: 3px; font-size: 12px; color: var(--text-2); }
.d-ev > svg { color: var(--text-3); }
.v2 .d-date { border-radius: 4px; }

/* ================================================================== v4 公共（main.v2.d-page：about、spots、spot） */
/* 单独成行的链接：点按区域不小于 44px */
.d-page .v2-head .link, .d-page .d-links .link, .d-page .d-duo-links .link, .d-page .d-layer-links .link, .d-page .d-toc-card .link { min-height: 44px; }
/* 页尾两行大字：页尾句比首页长的页，在 main 上写 --d-fin（最长一行约占几个字宽），字号按它算，两行都不超出版心 */
.d-page[style*="--d-fin"] .v2-final .v2-slogan { font-size: min(148px, calc(min(100vw - var(--gutter) * 2, var(--container)) / var(--d-fin))); }
/* 还没有的图（地图、フロアマップ、写真）：写明内容的虚线占位框 */
.d-ph-box { display: flex; align-items: center; justify-content: center; min-width: 0; padding: 12px; border: 1px dashed var(--border-strong); border-radius: 4px; color: var(--text-3); font-size: 13px; line-height: 1.6; text-align: center; word-break: auto-phrase; }
/* 状态、种类的小标签：细边框，不用底色 */
.d-kind { display: inline-flex; align-items: center; gap: 5px; height: 24px; padding: 0 10px; border: 1px solid var(--border-strong); border-radius: var(--r-pill); font-size: 12px; font-weight: 500; white-space: nowrap; }

/* ---------- 可展开问答（和首页「よくある質問」同一做法） ---------- */
.d-faq { max-width: 880px; border-top: 1px solid var(--text); word-break: auto-phrase; }
.d-faq details { border-bottom: 1px solid var(--border); }
.d-faq summary { list-style: none; display: flex; align-items: center; justify-content: space-between; gap: 16px; min-height: 64px; padding: 14px 0; font-size: 17px; font-weight: 500; cursor: pointer; }
.d-faq summary::-webkit-details-marker { display: none; }
.d-faq summary svg { flex-shrink: 0; box-sizing: content-box; padding: 7px; border: 1px solid var(--border); border-radius: 50%; color: var(--text); transition: transform 150ms var(--ease-std), border-color 150ms var(--ease-std); }
.d-faq summary:hover svg { border-color: var(--border-hover); }
.d-faq details[open] summary svg { transform: rotate(45deg); }
.d-faq-a { max-width: 720px; padding: 0 48px 20px 0; font-size: 15px; color: var(--text-2); }

/* ================================================================== about.html */
/* 首屏 H1「AI インキュベーター。」不拆开（约 9.3 字宽）：手机上字号按这一段的宽度算，最大 38px（和其他页一致） */
@media (max-width: 767px) { .d-about .v2-ph1 { font-size: min(38px, calc((100vw - var(--gutter) * 2) / 9.6)); } }
/* 宣言：黑底一句大字（首页 v2-statement 同款） */
.d-say .v2-say { max-width: 16em; }

/* 01 私たちが信じていること：标题行就是 v2-head（编号、标题字号和其他区块一致）；≥1100px 标题竖排、钉在左侧 */
.d-bel-grid { display: grid; grid-template-columns: minmax(0, 1fr); }
.d-bel-list { margin: 0; padding: 0; list-style: none; border-top: 1px solid var(--text); }
.d-bel { display: grid; grid-template-columns: minmax(0, 1fr); gap: 14px; padding: 24px 0 28px; border-bottom: 1px solid var(--border); }
.d-bel-t { font-size: 24px; font-weight: 900; line-height: 1.4; letter-spacing: 0.02em; font-feature-settings: "palt"; }
.d-bel-b { font-size: 15px; line-height: 2; color: var(--text-2); }
.d-bel-eq { display: flex; flex-direction: column; gap: 10px; margin: 0; padding: 0; list-style: none; font-size: 15px; line-height: 1.9; color: var(--text-2); }
.d-bel-eq b { color: var(--text); }

/* 02 インキュベーターであり、コミュニティでもある：两栏，黑线开头 */
.d-duo { display: grid; grid-template-columns: minmax(0, 1fr); gap: 40px; }
.d-duo-col { display: flex; flex-direction: column; gap: 16px; padding-top: 20px; border-top: 1px solid var(--text); }
.d-lockup { display: flex; align-items: center; gap: 10px; font-family: var(--font-display); font-size: 26px; font-weight: 500; letter-spacing: -0.01em; }
.d-lockup img { width: 26px; height: auto; }
.d-lockup b { font-weight: 700; }
.d-duo-text { font-size: 15px; line-height: 1.9; }
.d-duo-facts { margin: 0; border-top: 1px solid var(--border); word-break: auto-phrase; }
.d-duo-facts > div { display: grid; grid-template-columns: minmax(0, 1fr); gap: 2px; padding: 10px 0; border-bottom: 1px solid var(--border); font-size: 14px; line-height: 1.6; }
.d-duo-facts dt { color: var(--text-3); }
.d-duo-facts dd { margin: 0; font-weight: 600; }
.d-duo-links { display: flex; flex-wrap: wrap; gap: 0 24px; margin-top: auto; }

/* 03 五つのレイヤー：黑白线稿；指到的那一层用品牌渐变描边（渐变定义在 svg 里） */
.d-layers { display: grid; grid-template-columns: minmax(0, 1fr); gap: 24px; }
.d-iso { margin: 0; }
.d-iso-svg { display: block; width: 100%; max-width: 400px; margin: 0 auto; overflow: visible; }
.d-plate .top { fill: var(--surface); stroke: var(--text); stroke-width: 1; transition: fill 150ms var(--ease-std); }
.d-plate .side { fill: var(--surface-2); stroke: var(--text); stroke-width: 1; }
.d-plate .side.r { fill: #E7E7E3; }
.d-plate text { fill: var(--text-3); font-family: var(--mono); font-size: 14px; font-weight: 600; }
.d-plate.is-future .top, .d-plate.is-future .side { fill: var(--bg); stroke: var(--text-3); stroke-dasharray: 5 4; }
.d-plate.is-on .top { fill: var(--surface-2); stroke: url(#d-iso-grad); stroke-width: 3; }
.d-plate.is-on text { fill: var(--text); }
.d-spine { stroke: var(--text); stroke-width: 1.5; stroke-dasharray: 4 4; }
.d-node { fill: var(--text); }
.d-iso figcaption { display: flex; align-items: center; justify-content: center; gap: 8px; margin-top: 10px; font-size: 13px; color: var(--text-2); text-align: center; }
.d-spine-key { flex-shrink: 0; width: 18px; border-top: 1.5px dashed var(--text); }
.d-layer-list { margin: 0; padding: 0; list-style: none; border-top: 1px solid var(--text); }
.d-layer { padding: 16px 12px 10px; border-bottom: 1px solid var(--border); transition: background-color 150ms var(--ease-std); }
.d-layer.is-on { background: var(--surface-2); }
.d-layer-head { display: flex; flex-wrap: wrap; align-items: baseline; gap: 4px 12px; }
.d-layer-no { font-family: var(--mono); font-size: 12px; font-weight: 600; color: var(--text-3); }
.d-layer-name { font-size: 20px; font-weight: 600; }
.d-layer-role { font-size: 13px; color: var(--text-2); }
.d-layer-head .chip-status { align-self: center; }
.d-layer-desc { margin-top: 6px; font-size: 14px; line-height: 1.8; color: var(--text-2); word-break: auto-phrase; }
.d-layer-links { display: flex; flex-wrap: wrap; gap: 0 20px; }
.d-layer-links .link { font-size: 14px; }

/* 04 運営会社 */
.d-info { margin: 0; border-top: 1px solid var(--text); }
.d-info > div { display: grid; grid-template-columns: minmax(0, 1fr); gap: 2px; padding: 16px 0; border-bottom: 1px solid var(--border); }
.d-info dt { font-size: 13px; color: var(--text-3); }
.d-info dd { margin: 0; font-size: 16px; font-weight: 500; }

/* ================================================================== spots.html */
/* 01 使い方は 3 ステップ（黑底块）：三栏步骤 + 一行要点 */
.d-how { display: grid; grid-template-columns: minmax(0, 1fr); margin: 0; padding: 0; list-style: none; border-top: 1px solid var(--text); }
.d-how-step { display: flex; flex-direction: column; gap: 8px; padding: 20px 0 24px; border-bottom: 1px solid var(--border); }
.d-how-no { font-family: var(--mono); font-size: 11px; color: var(--text-3); }
.d-how-step h3 { font-size: 20px; }
.d-how-text { font-size: 14px; line-height: 1.8; color: var(--text-2); }
.d-how-info { margin-top: 6px; word-break: auto-phrase; }
.d-how-k { display: flex; align-items: center; gap: 8px; font-size: 12px; font-weight: 600; color: var(--text-2); }
.d-how-info dl { margin: 8px 0 0; }
.d-how-info dl > div { display: grid; grid-template-columns: minmax(0, 1fr); gap: 2px; padding: 9px 0; border-top: 1px solid var(--border); font-size: 13px; line-height: 1.55; }
.d-how-info dt { color: var(--text-3); }
.d-how-info dd { margin: 0; font-weight: 500; }
.d-keys { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0 20px; margin: 32px 0 0; border-top: 1px solid var(--text); word-break: auto-phrase; }
.d-keys > div { display: flex; flex-direction: column; gap: 4px; padding: 14px 0; border-bottom: 1px solid var(--border); }
.d-keys dt { font-size: 12px; line-height: 1.5; color: var(--text-3); }
.d-keys dd { margin: 0; font-size: 20px; font-weight: 700; }

/* 02 拠点一覧：筛选栏（带数量的胶囊、营业中开关、エリア）+ 列表 + 右栏（地图占位、パートナー入口） */
.d-filter { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 10px; margin-bottom: 24px; padding: 10px 0; border-top: 1px solid var(--text); border-bottom: 1px solid var(--border); }
.d-filter-ic { display: inline-flex; align-items: center; justify-content: center; width: 32px; height: 44px; color: var(--text-3); }
.d-pills { display: flex; flex-wrap: wrap; gap: 6px; }
.d-pill { display: inline-flex; align-items: center; gap: 8px; height: 44px; padding: 0 16px; border: 1px solid var(--border-strong); border-radius: var(--r-pill); background: transparent; color: var(--text); font-family: var(--font-body); font-size: 14px; font-weight: 500; cursor: pointer; transition: background-color 150ms var(--ease-std), color 150ms var(--ease-std), border-color 150ms var(--ease-std); }
.d-pill:hover { border-color: var(--text); }
.d-pill .n { font-family: var(--mono); font-size: 12px; font-weight: 600; color: var(--text-3); }
.d-pill[aria-pressed="true"] { background: var(--text); border-color: var(--text); color: var(--bg); }
.d-pill[aria-pressed="true"] .n { color: var(--bg); opacity: 0.7; }
.d-toggle { position: relative; display: inline-flex; align-items: center; gap: 10px; min-height: 44px; padding: 0 6px; font-size: 14px; cursor: pointer; }
.d-toggle input { position: absolute; opacity: 0; width: 1px; height: 1px; }
.d-toggle-sw { position: relative; width: 38px; height: 22px; border-radius: var(--r-pill); background: var(--surface-2); border: 1px solid var(--border-strong); transition: background-color 150ms var(--ease-std); }
.d-toggle-sw::after { content: ""; position: absolute; left: 2px; top: 2px; width: 16px; height: 16px; border-radius: 50%; background: var(--surface); box-shadow: 0 1px 2px rgba(9, 9, 9, 0.24); transition: transform 150ms var(--ease-std); }
.d-toggle input:checked + .d-toggle-sw { background: var(--text); border-color: var(--text); }
.d-toggle input:checked + .d-toggle-sw::after { transform: translateX(16px); }
.d-toggle input:focus-visible + .d-toggle-sw { outline: 2px solid var(--accent); outline-offset: 2px; }
.d-select { position: relative; display: inline-flex; align-items: center; color: var(--text-2); }
.d-select svg { position: absolute; left: 14px; pointer-events: none; }
.d-select select { height: 44px; padding: 0 34px 0 36px; border: 1px solid var(--border-strong); border-radius: var(--r-pill); background: var(--surface) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%2355555A' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E") no-repeat right 14px center; color: var(--text); font-family: var(--font-body); font-size: 14px; appearance: none; -webkit-appearance: none; cursor: pointer; }
.d-count { margin-left: auto; padding-right: 2px; font-size: 13px; color: var(--text-2); }
.d-count span { font-family: var(--mono); font-size: 15px; font-weight: 600; color: var(--text); }

.d-finder-body { display: grid; grid-template-columns: minmax(0, 1fr); gap: 20px; }
.d-group + .d-group { margin-top: 32px; }
.d-group-h { display: flex; align-items: center; gap: 10px; margin-bottom: 12px; font-size: 15px; font-weight: 700; }
.d-group-h::before { content: ""; width: 8px; height: 8px; border-radius: 50%; border: 1.5px solid var(--text-3); }
.d-group[data-d-group="live"] .d-group-h::before { border-color: #1FA85A; background: #1FA85A; }
.d-group-list { display: flex; flex-direction: column; gap: 10px; }
.d-spot { display: grid; grid-template-columns: minmax(0, 1fr) 76px; gap: 14px; padding: 16px; }
.d-spot-body { display: flex; flex-direction: column; min-width: 0; }
.d-spot-top { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 8px; }
.d-spot-no { font-family: var(--mono); font-size: 11px; color: var(--text-3); }
.d-spot-name { margin-top: 10px; font-size: 20px; }
.d-spot-area { display: flex; align-items: center; gap: 6px; margin-top: 2px; font-size: 14px; color: var(--text-2); }
.d-spot-dl { display: grid; gap: 4px; margin: 12px 0 0; font-size: 13px; }
.d-spot-dl div { display: grid; grid-template-columns: 64px minmax(0, 1fr); gap: 8px; }
.d-spot-dl dt { color: var(--text-3); }
.d-spot-dl dd { margin: 0; }
.d-spot-foot { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 12px; margin-top: 14px; }
.d-tags { display: flex; flex-wrap: wrap; gap: 4px 12px; margin: 0; padding: 0; list-style: none; font-size: 12px; color: var(--text-2); }
.d-tags li::before { content: "— "; color: var(--text-3); }
.d-spot-btn { flex-shrink: 0; }
.d-spot-photo { width: 76px; height: 76px; padding: 4px; font-size: 11px; }
.d-spot[data-status="soon"] .d-spot-name { color: var(--text-2); }
.d-empty { display: flex; flex-direction: column; align-items: flex-start; gap: 12px; padding: 24px; border: 1px dashed var(--border-strong); border-radius: 4px; color: var(--text-2); }
.d-disclaimer { display: flex; gap: 8px; margin-top: 20px; font-size: 12px; color: var(--text-3); }
.d-disclaimer svg { margin-top: 2px; }
.d-finder-side { display: flex; flex-direction: column; gap: 12px; order: -1; }
.d-map-ph { aspect-ratio: 3 / 1; }
.d-side-partner { display: none; }

/* 03 拠点パートナー募集：两栏列表 + 开店流程（和首页「参加の流れ」同一做法）+ 按钮 */
.d-aud { margin: -8px 0 24px; font-size: 13px; color: var(--text-2); }
.d-partner { display: grid; grid-template-columns: minmax(0, 1fr); gap: 32px; }
.d-offer { padding-top: 16px; border-top: 1px solid var(--text); }
.d-offer h3 { margin-bottom: 6px; font-size: 20px; }
.d-olist { margin: 0; padding: 0; list-style: none; }
.d-olist li { display: flex; flex-direction: column; gap: 2px; padding: 12px 0; border-bottom: 1px solid var(--border); }
.d-olist b { font-size: 15px; }
.d-olist span { font-size: 14px; color: var(--text-2); }
.v2-sub.d-flow-k { margin-top: 44px; }
.d-flow { display: grid; grid-template-columns: minmax(0, 1fr); margin: 0; padding: 0; list-style: none; border-top: 1px solid var(--text); }
.d-flow li { display: grid; grid-template-columns: 46px minmax(0, 1fr); gap: 2px 8px; padding: 14px 0; border-bottom: 1px solid var(--border); }
.d-flow .n { grid-row: 1 / 3; padding-top: 4px; font-family: var(--mono); font-size: 11px; color: var(--text-3); }
.d-flow b { font-size: 15px; }
.d-flow span:not(.n) { font-size: 13px; color: var(--text-2); }
.d-partner-cta { display: flex; flex-wrap: wrap; align-items: center; gap: 10px 20px; margin-top: 32px; }
.d-partner-cta p { font-size: 13px; color: var(--text-2); }

/* ================================================================== spot.html（正文布局不变：左边六块、右边钉住的目录） */
.d-crumb { display: inline-block; padding: 14px 0; margin: -14px 0; color: var(--text-2); transition: color 150ms var(--ease-std); }
.d-crumb:hover { color: var(--text); }
.d-crumb-sep { margin: 0 8px; color: var(--text-3); }
.d-sp-chips { display: inline-flex; flex-wrap: wrap; align-items: center; gap: 6px; vertical-align: middle; }
.d-sp-bg { padding: 8px 0 64px; }
.d-sp-grid { display: grid; grid-template-columns: minmax(0, 1fr); gap: 20px; }
.d-sp-main { display: flex; flex-direction: column; min-width: 0; }
.d-sp-card { padding: 28px 0 44px; border-top: 1px solid var(--text); }
.d-sp-card:first-child { border-top: 0; padding-top: 16px; }
.d-sp-card > .v2-head + * { margin-top: 0; }
.d-photos { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; margin-top: 18px; }
.d-photo { aspect-ratio: 4 / 3; }
.d-photo:first-child { grid-column: 1 / -1; aspect-ratio: 16 / 8; }
.d-sp-info { margin-top: 20px; }
.d-sp-info .info-row { grid-template-columns: 104px minmax(0, 1fr); }
.d-floor { display: grid; grid-template-columns: minmax(0, 1fr); gap: 18px; margin-top: 18px; }
.d-floor-ph { aspect-ratio: 400 / 340; }
.d-zones { margin: 0; padding: 0; list-style: none; border-top: 1px solid var(--text); }
.d-zones li { display: grid; grid-template-columns: 28px minmax(0, 1fr); gap: 8px; padding: 12px 0; border-bottom: 1px solid var(--border); }
.d-zones .no, .d-wsteps .no { padding-top: 3px; font-family: var(--mono); font-size: 12px; font-weight: 600; color: var(--text-3); }
.d-zones b { display: block; font-size: 15px; }
.d-zones p { font-size: 14px; color: var(--text-2); }
.d-wsteps { margin: 18px 0 0; padding: 0; list-style: none; border-top: 1px solid var(--text); }
.d-wsteps li { display: grid; grid-template-columns: 28px minmax(0, 1fr); gap: 8px; padding: 14px 0; border-bottom: 1px solid var(--border); }
.d-wsteps b { display: block; font-size: 16px; }
.d-wsteps p { font-size: 14px; color: var(--text-2); }
.d-callout { display: flex; gap: 12px; margin-top: 16px; padding: 16px; border-radius: 4px; background: var(--bg-soft); }
.d-callout > svg { margin-top: 3px; color: var(--text-2); }
.d-callout b { font-size: 15px; }
.d-callout p { font-size: 14px; color: var(--text-2); }
.d-links { display: flex; flex-wrap: wrap; gap: 0 22px; margin-top: 10px; }
.d-sp-card .d-evs { margin-top: 18px; }
.d-acc-name { margin-top: 18px; font-size: 18px; font-weight: 700; }
.d-acc-addr { font-size: 14px; color: var(--text-2); }
.d-acc-ph { margin-top: 14px; aspect-ratio: 4 / 3; }
.d-acc-h { margin: 24px 0 8px; font-size: 17px; }
.d-acc-list { margin: 0; padding: 0; list-style: none; border-top: 1px solid var(--border); }
.d-acc-list li { display: flex; gap: 10px; padding: 8px 0; border-bottom: 1px solid var(--border); font-size: 15px; }
.d-acc-list svg { margin-top: 4px; color: var(--text-2); }
.d-acc-btns { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 22px; }
.d-sp-card .notes { margin-top: 16px; }
/* 右侧钉住的目录（QWS：当前项前面一个点）；手机用共用的 subnav 横条 */
.d-toc { display: none; }
.d-toc-k { margin-bottom: 10px; font-size: 12px; font-weight: 600; color: var(--text-3); }
.d-toc ol { display: flex; flex-direction: column; gap: 2px; margin: 0; padding: 0; list-style: none; border-top: 1px solid var(--text); }
.d-toc ol a { position: relative; display: flex; align-items: center; min-height: 44px; padding: 0 0 0 18px; font-size: 14px; color: var(--text-3); transition: color 150ms var(--ease-std); }
.d-toc ol a::before { content: ""; position: absolute; left: 2px; top: 50%; width: 7px; height: 7px; margin-top: -3.5px; border-radius: 50%; background: var(--echo-grad); opacity: 0; transition: opacity 150ms var(--ease-std); }
.d-toc ol a:hover { color: var(--text-2); }
.d-toc ol a.is-current { color: var(--text); font-weight: 600; }
.d-toc ol a.is-current::before { opacity: 1; }
.d-toc-card { display: flex; flex-direction: column; align-items: flex-start; gap: 12px; margin-top: 24px; padding: 18px; border: 1px solid var(--border-strong); border-radius: 4px; }
.d-toc-hours { display: flex; flex-direction: column; font-size: 13px; color: var(--text-2); }
.d-toc-hours b { font-size: 15px; color: var(--text); }

/* ================================================================== welcome.html（TopView 输入区层次 + Peatix 底部固定按钮；不放强动效） */
body:has(.d-wel) .notice { display: none; }
.d-inapp { background: var(--text); color: var(--bg); font-size: 13px; }
.d-inapp .container { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 8px 16px; padding-top: 10px; padding-bottom: 10px; }
.d-inapp-btn { height: 44px; background: var(--bg); color: var(--text); }
.d-wel { padding: 14px 0 104px; }
.d-tv { position: relative; padding: 22px 14px 16px; border: 1px solid var(--border); border-radius: 24px; text-align: center; background: radial-gradient(130% 50% at 50% 100%, var(--glow-1), transparent 72%), radial-gradient(70% 30% at 50% 100%, var(--glow-2), transparent 72%), var(--bg); overflow: hidden; }
.d-wel .pg-beam { display: none !important; }
.d-wel .pg-ring { padding: 1px !important; background: var(--pg-full) !important; }
.d-wel-h { margin: 14px 0 8px; font-size: 26px; font-weight: 900; line-height: 1.35; letter-spacing: 0.02em; font-feature-settings: "palt"; }
.d-wel-lead { font-size: 14px; color: var(--text-2); }
.d-wifi { display: inline-flex; align-items: center; gap: 6px; margin-top: 10px; font-size: 13px; font-weight: 500; color: var(--text-2); }
.d-wifi-ic { display: inline-flex; align-items: center; justify-content: center; width: 20px; height: 20px; border-radius: 50%; background: var(--brand-green); color: var(--brand-black); }
.d-wifi-ic svg { width: 12px; height: 12px; stroke-width: 2.5; }
.d-tv-card { margin-top: 14px; padding: 0 14px 14px; text-align: left; background: var(--surface); border: 1px solid var(--border); border-radius: 16px; box-shadow: 0 1px 2px rgba(9, 9, 9, 0.04), 0 16px 36px -20px rgba(9, 9, 9, 0.28); }
.d-code { margin: 14px 0 0; padding: 14px; border-radius: 12px; background: var(--bg-soft); }
.d-code-t { display: flex; align-items: center; gap: 8px; font-size: 14px; font-weight: 700; }
.d-code-d { margin-top: 4px; font-size: 13px; color: var(--text-2); }
.d-code-row { display: flex; gap: 8px; margin-top: 10px; }
.d-code-input { flex: 1; min-width: 0; height: 48px; font-size: 18px; letter-spacing: 0.3em; font-variant-numeric: tabular-nums; }
.d-code-input::placeholder { font-family: var(--font-body); font-size: 14px; letter-spacing: 0; }
.d-code-row .btn { height: 48px; }
.d-wel-sec { margin-top: 28px; }
.d-wel-sec-h { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 12px; }
.d-wel-sec-h h2 { font-size: 18px; }
.d-wel-sec-h .link { min-height: 44px; font-size: 14px; }
/* 下方胶囊入口（TopView 技能胶囊：缩略图 + 文字，最后一个用强调色） */
.d-chips-row { display: flex; flex-wrap: wrap; gap: 8px; }
.d-chipl { display: inline-flex; align-items: center; gap: 10px; height: 52px; padding: 0 16px 0 7px; border: 1px solid var(--border); border-radius: 14px; background: var(--surface); font-size: 14px; font-weight: 500; box-shadow: 0 5px 18px -10px rgba(9, 9, 9, 0.22); transition: border-color 150ms var(--ease-std); }
.d-chipl:hover { border-color: var(--border-hover); }
.d-chipl .th { display: inline-flex; align-items: center; justify-content: center; width: 38px; height: 38px; border-radius: 10px; background: var(--tone-soft); color: var(--tone); }
.d-chipl.is-more { background: var(--accent); border-color: var(--accent); color: var(--btn-fg); }
.d-chipl.is-more .th { background: rgba(255, 255, 255, 0.16); color: var(--btn-fg); }
/* 手机底部固定主按钮（Peatix）：页面里的送信按钮滚出屏幕时才出现 */
.d-wel-bar { position: fixed; left: 0; right: 0; bottom: 0; z-index: 40; padding: 10px 16px max(10px, env(safe-area-inset-bottom)); background: rgba(255, 255, 255, 0.9); -webkit-backdrop-filter: blur(16px) saturate(1.2); backdrop-filter: blur(16px) saturate(1.2); border-top: 1px solid var(--border); }
.d-wel-bar .btn { width: 100%; height: 48px; }

/* ================================================================== 登录表单（welcome、login 共用） */
.d-tabrow { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.d-auth-line .d-tabrow { margin: 0 -14px 16px; padding: 0 8px; border-bottom: 1px solid var(--border); }
.d-auth-line .d-seg { display: flex; gap: 2px; }
.d-auth-line .d-seg button { position: relative; height: 48px; padding: 0 10px; border: 0; background: none; color: var(--text-3); font-family: var(--font-body); font-size: 14px; font-weight: 500; cursor: pointer; transition: color 150ms var(--ease-std); }
.d-auth-line .d-seg button:hover { color: var(--text-2); }
.d-auth-line .d-seg button[aria-pressed="true"] { color: var(--text); }
.d-auth-line .d-seg button[aria-pressed="true"]::after { content: ""; position: absolute; left: 8px; right: 8px; bottom: -1px; height: 2px; border-radius: 2px; background: var(--text); }
.d-auth-seg .d-tabrow { margin-bottom: 16px; }
.d-auth-seg .d-seg { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); width: 100%; padding: 2px; border-radius: var(--r-pill); background: var(--surface-2); }
.d-auth-seg .d-seg button { height: 44px; border: 0; border-radius: var(--r-pill); background: transparent; color: var(--text-2); font-family: var(--font-body); font-size: 14px; font-weight: 500; cursor: pointer; transition: background-color 150ms var(--ease-std), color 150ms var(--ease-std); }
.d-auth-seg .d-seg button[aria-pressed="true"] { background: var(--surface); color: var(--text); box-shadow: 0 1px 3px rgba(9, 9, 9, 0.1), 0 0 0 1px var(--border); }
.d-seg button:focus-visible { outline: 2px solid var(--accent); outline-offset: -2px; }
.d-form { display: flex; flex-direction: column; gap: 16px; }
.d-field { display: flex; flex-direction: column; gap: 6px; }
.d-field label { font-size: 13px; font-weight: 500; color: var(--text-2); }
.d-auth .input { width: 100%; height: 48px; font-size: 16px; border-color: var(--text-3); transition: border-color 150ms var(--ease-std), box-shadow 150ms var(--ease-std); }
.d-auth .input:focus { outline: none; border-color: var(--accent); box-shadow: 0 0 0 3px rgba(101, 71, 245, 0.22); }
.d-auth .input[aria-invalid="true"] { border-color: var(--danger); }
.d-err { font-size: 13px; font-weight: 500; color: var(--danger); }
.d-consent { display: flex; flex-direction: column; min-width: 0; margin: 0; padding: 0; border: 0; }
.d-consent-h { display: flex; align-items: center; gap: 10px; margin-bottom: 2px; padding: 0; font-size: 13px; font-weight: 500; color: var(--text-2); }
.d-check { position: relative; display: grid; grid-template-columns: 22px minmax(0, 1fr); gap: 12px; align-items: start; min-height: 44px; padding: 10px 0; font-size: 14px; line-height: 1.6; cursor: pointer; }
.d-check + .d-check { border-top: 1px solid var(--border); }
.d-check input { position: absolute; left: 0; top: 10px; width: 22px; height: 22px; margin: 0; opacity: 0; }
.d-box { display: inline-flex; align-items: center; justify-content: center; width: 22px; height: 22px; margin-top: 1px; border: 1.5px solid var(--text-3); border-radius: 6px; background: var(--surface); color: transparent; transition: background-color 150ms var(--ease-std), border-color 150ms var(--ease-std); }
.d-tick { width: 14px; height: 14px; stroke-width: 3; }
.d-check input:checked + .d-box { background: var(--btn-bg); border-color: var(--btn-bg); color: var(--btn-fg); }
.d-check input:focus-visible + .d-box { box-shadow: 0 0 0 3px rgba(101, 71, 245, 0.3); }
.d-check.is-error .d-box { border-color: var(--danger); }
.d-check-t a { color: var(--accent); text-decoration: underline; text-underline-offset: 2px; }
.d-tag-req, .d-tag-opt { display: inline-block; margin-left: 8px; padding: 0 6px; border-radius: 4px; font-size: 11px; font-weight: 700; line-height: 18px; vertical-align: 1px; }
.d-tag-req { background: var(--text); color: var(--bg); }
.d-tag-opt { background: var(--surface-2); color: var(--text-2); }
.d-check-note { display: block; margin-top: 2px; font-size: 12px; color: var(--text-3); }
.d-actrow { display: flex; flex-direction: column-reverse; gap: 10px; }
.d-submit { width: 100%; height: 48px; }
.d-idle, .d-busy { display: inline-flex; align-items: center; gap: 8px; }
.d-note { font-size: 12px; color: var(--text-3); }
.d-sent { display: flex; flex-direction: column; align-items: flex-start; gap: 12px; padding: 18px 0 4px; }
.d-sent:focus { outline: none; }
.d-sent-icon { display: flex; align-items: center; justify-content: center; width: 52px; height: 52px; border-radius: 50%; background: var(--tone-soft, var(--surface-2)); color: var(--text); }
.d-sent-icon svg { width: 24px; height: 24px; }
.d-sent-h { font-size: 22px; }
.d-sent-to { font-size: 15px; }
.d-sent-to b { word-break: break-all; }
.d-sent-next { font-size: 14px; color: var(--text-2); }
.d-sent-tips { align-self: stretch; margin: 0; padding: 12px 14px 12px 30px; border-radius: 10px; background: var(--bg-soft); font-size: 13px; color: var(--text-2); }
.d-sent-actions { display: flex; flex-wrap: wrap; gap: 8px; }
.d-sent-actions .btn[disabled] { opacity: 0.5; }
.d-sent-actions .btn .latin, .d-sent-actions .btn { font-variant-numeric: tabular-nums; }
.d-ok { display: flex; align-items: center; gap: 6px; font-size: 13px; color: var(--text-2); }
.d-ok svg { color: var(--brand-green); }
.d-proto { display: inline-flex; align-items: center; gap: 8px; min-height: 44px; padding: 0 12px; border: 1px dashed var(--border-strong); border-radius: 10px; font-size: 13px; color: var(--text-2); transition: border-color 150ms var(--ease-std); }
.d-proto:hover { border-color: var(--text-3); }
.d-proto-tag { padding: 2px 6px; border-radius: 4px; background: var(--surface-2); font-size: 10px; font-weight: 700; letter-spacing: 0.12em; }

/* ================================================================== login.html（Vercel Ship 购票页的编号步骤与单选卡 + EF 入口列表） */
.d-login .section.frame > .container { padding-top: 32px; padding-bottom: 48px; }
.d-login-grid { display: grid; grid-template-columns: minmax(0, 1fr); gap: 40px; }
.d-login-h { margin-top: 8px; font-size: 36px; font-weight: 700; letter-spacing: -0.01em; }
.d-login-sub { margin-top: 8px; font-size: 14px; color: var(--text-2); }
.d-step { margin-top: 36px; }
.d-step-h { display: flex; align-items: center; gap: 14px; margin-bottom: 16px; font-size: 22px; font-weight: 500; letter-spacing: -0.005em; }
.d-step-no { display: inline-flex; align-items: center; justify-content: center; flex-shrink: 0; width: 30px; height: 28px; border: 1px solid var(--border); background: var(--surface-2); font-size: 14px; font-weight: 600; color: var(--text-2); }
.d-login .d-consent-h { margin: 8px 0 8px; font-size: 22px; font-weight: 500; color: var(--text); gap: 14px; }
.d-roles { display: flex; flex-direction: column; gap: 10px; }
.d-role { display: flex; align-items: center; justify-content: space-between; gap: 14px; width: 100%; min-height: 76px; padding: 14px 14px 14px 18px; border: 1px solid var(--border-strong); border-radius: var(--r-md); background: var(--surface); color: var(--text); font-family: var(--font-body); text-align: left; cursor: pointer; transition: background-color 150ms var(--ease-std), border-color 150ms var(--ease-std), color 150ms var(--ease-std); }
.d-role:hover { border-color: var(--text-3); }
.d-role:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
.d-role-body { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.d-role-t { font-size: 16px; font-weight: 700; }
.d-role-d { font-size: 13px; color: var(--text-2); }
.d-role-badge { flex-shrink: 0; padding: 8px 12px; border-radius: 6px; background: var(--text); color: var(--bg); font-size: 12px; font-weight: 700; white-space: nowrap; }
.d-role[aria-checked="true"] { background: var(--text); border-color: var(--text); color: var(--bg); }
.d-role[aria-checked="true"] .d-role-d { color: var(--bg); opacity: 0.72; }
.d-role[aria-checked="true"] .d-role-badge { background: var(--bg); color: var(--text); }
.d-entry { padding: 18px 0 8px; border-top: 1px solid var(--text); }
.d-entry + .d-entry { border-top-color: var(--border); }
.d-entry-t { display: flex; gap: 10px; font-size: 17px; font-weight: 700; line-height: 1.5; }
.d-entry-mark { font-family: var(--font-display); color: var(--text-2); }
.d-entry-meta { margin: 6px 0 0 22px; font-size: 13px; font-weight: 700; }
.d-entry-d { margin: 6px 0 0 22px; font-size: 14px; color: var(--text-2); }
.d-entry-link { display: inline-flex; align-items: center; gap: 4px; min-height: 44px; margin-left: 22px; color: var(--accent); font-size: 15px; font-weight: 500; text-decoration: underline; text-underline-offset: 4px; }
/* 右栏（Vercel 的 Order summary：细线分行、最后一行像「合计」） */
.d-login-aside { align-self: start; }
.d-sum-h { font-size: 26px; font-weight: 500; letter-spacing: -0.01em; }
.d-sum-sub { margin-top: 4px; font-size: 13px; color: var(--text-3); }
.d-sum-list { margin: 20px 0 0; border-top: 1px solid var(--border); }
.d-sum-row { padding: 14px 0; border-bottom: 1px solid var(--border); }
.d-sum-row dt { font-size: 12px; font-weight: 600; letter-spacing: 0.1em; color: var(--text-3); }
.d-sum-row dd { margin: 4px 0 0; font-size: 14px; }
.d-sum-total { padding: 18px 0; border-bottom: 1px solid var(--border); }
.d-sum-k { font-size: 12px; font-weight: 600; letter-spacing: 0.1em; color: var(--text-3); }
.d-sum-v { margin-top: 2px; font-size: 22px; font-weight: 700; }
.d-sum-note { margin-top: 4px; font-size: 13px; color: var(--text-2); }
.d-sum-btn { margin-top: 20px; }
.d-sum-help { margin-top: 16px; font-size: 13px; color: var(--text-2); }
.d-sum-help a { color: var(--accent); text-decoration: underline; text-underline-offset: 3px; }

/* 登录页：邮件链接之外的三种方式（PRD 5.8） */
.d-or { display: flex; align-items: center; gap: 12px; margin: 20px 0 12px; font-size: 12px; color: var(--text-3); }
.d-or::before, .d-or::after { content: ""; flex: 1; height: 1px; background: var(--border); }
.d-social { display: grid; grid-template-columns: minmax(0, 1fr); gap: 8px; }
.d-pw { margin-top: 12px; font-size: 14px; }
.d-pw .link { min-height: 44px; }
.d-soc-note { margin-top: 4px; font-size: 12px; color: var(--text-3); }
@media (min-width: 768px) { .d-social { grid-template-columns: repeat(2, minmax(0, 1fr)); } }

/* ================================================================== 黑底块的上边距
   v2.css 里黑底区块的上边距只有 24px（首页的黑底区块紧跟在黑底大字后面）；本组的黑底块前面是白底，补回普通区块的上边距 */
.d-page .v2-dark.v2-sec { padding-top: 64px; }

/* ============ ≥768px ============ */
@media (min-width: 768px) {
  .d-br { display: inline; }
  .d-page .v2-dark.v2-sec { padding-top: 96px; }
  /* about */
  .d-bel-t { font-size: 30px; }
  .d-duo { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 56px; }
  .d-lockup { font-size: 32px; }
  .d-lockup img { width: 30px; }
  .d-info > div { grid-template-columns: 200px minmax(0, 1fr); align-items: baseline; gap: 20px; }
  /* spots */
  .d-how { grid-template-columns: repeat(3, minmax(0, 1fr)); column-gap: 32px; }
  .d-how-step { border-bottom: 0; }
  .d-keys { grid-template-columns: repeat(4, minmax(0, 1fr)); column-gap: 32px; }
  .d-spot { grid-template-columns: minmax(0, 1fr) 120px; padding: 18px 20px; }
  .d-spot-photo { width: 120px; height: 120px; }
  .d-partner { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .d-faq summary { min-height: 72px; font-size: 19px; }
  .d-faq-a { font-size: 16px; }
  /* spot */
  .d-photos { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .d-photo:first-child { grid-column: auto; aspect-ratio: 4 / 3; }
  .d-floor { grid-template-columns: minmax(0, 1.1fr) minmax(0, 1fr); align-items: start; gap: 28px; }
  .d-acc-ph { aspect-ratio: 16 / 7; }
  /* welcome、login（原样） */
  .d-wel { padding: 32px 0 72px; }
  .d-wel-bar { display: none !important; }
  .d-tv { padding: 40px 40px 36px; border-radius: 28px; }
  .d-wel-h { font-size: 40px; }
  .d-wel-lead { font-size: 15px; }
  .d-tv-card { max-width: 580px; margin: 22px auto 0; padding: 0 20px 20px; }
  .d-auth-line .d-tabrow { margin: 0 -20px 18px; padding: 0 14px; }
  .d-actrow { flex-direction: row; align-items: center; justify-content: space-between; gap: 16px; }
  .d-submit { width: auto; flex-shrink: 0; }
  .d-login-h { font-size: 44px; }
  .d-step-h { font-size: 26px; }
  .d-login .d-consent-h { font-size: 26px; }
}

/* ============ ≥1100px ============ */
@media (min-width: 1100px) {
  /* about */
  .d-bel-grid { grid-template-columns: 120px minmax(0, 1fr); column-gap: 48px; }
  .d-bel-side.v2-head { position: sticky; top: 112px; align-self: start; grid-template-columns: minmax(0, 1fr); gap: 20px; margin: 0; }
  .d-bel-side .d-bel-h { writing-mode: vertical-rl; white-space: nowrap; font-size: 34px; line-height: 1.3; letter-spacing: 0.14em; }
  .d-bel { grid-template-columns: minmax(0, 1.05fr) minmax(0, 1fr); gap: 16px 64px; padding: 48px 0 52px; }
  .d-bel-t { font-size: 36px; line-height: 1.35; }
  .d-bel-b, .d-bel-eq { padding-top: 8px; font-size: 16px; }
  .d-duo-facts > div { grid-template-columns: 8em minmax(0, 1fr); gap: 12px; }
  .d-layers { grid-template-columns: 400px minmax(0, 1fr); gap: 64px; align-items: center; }
  /* spots */
  .d-how-info dl > div { grid-template-columns: 7.5em minmax(0, 1fr); gap: 10px; }
  .d-finder-body { grid-template-columns: minmax(0, 1fr) 320px; gap: 40px; align-items: start; }
  .d-finder-side { position: sticky; top: 88px; order: 0; }
  .d-map-ph { aspect-ratio: 4 / 5; }
  .d-side-partner { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 14px 16px; border: 1px solid var(--text); border-radius: 4px; transition: background-color 150ms var(--ease-std); }
  .d-side-partner:hover { background: var(--surface-2); }
  .d-side-partner b { display: block; font-size: 15px; }
  .d-side-partner span span { display: block; font-size: 13px; color: var(--text-2); }
  .d-spot { grid-template-columns: minmax(0, 1fr) 132px; }
  .d-spot-photo { width: 132px; height: 132px; }
  .d-spot-dl { grid-auto-flow: column; justify-content: start; gap: 4px 28px; }
  .d-flow { grid-template-columns: repeat(5, minmax(0, 1fr)); column-gap: 24px; }
  .d-flow li { grid-template-columns: minmax(0, 1fr); border-bottom: 0; }
  .d-flow .n { grid-row: auto; padding-top: 0; }
  /* spot */
  .d-sp .subnav { display: none; }
  .d-sp-bg { padding: 16px 0 104px; }
  .d-sp-grid { grid-template-columns: minmax(0, 1fr) 232px; gap: 64px; }
  .d-toc { display: block; position: sticky; top: 96px; align-self: start; padding-top: 16px; }
  .d-sp-card { padding: 36px 0 56px; }
  /* welcome、login（原样） */
  .d-wel-h { font-size: 48px; }
  .d-login .section.frame > .container { padding-top: 56px; padding-bottom: 80px; }
  .d-login-grid { grid-template-columns: minmax(0, 1fr) 360px; gap: 0; }
  .d-login-main { padding: 0 64px 0 48px; border-right: 1px solid var(--border); }
  .d-login-aside { position: sticky; top: 96px; padding: 0 16px 0 48px; }
  .d-login-h { font-size: 52px; }
}


/* Echo とは 宣言：进场时先显示「ひびき・めぐる・エコー」的假名，逐字还原成正文（09-25 用户要求恢复；js/d.js） */
[data-d-scramble] .d-sc { display: inline; }
[data-d-scramble] .d-sc.is-hidden { color: transparent; }
[data-d-scramble] .d-sc.is-rand { color: var(--text-3); }

/* ---------- 同意确认页（consent.html）：只有一栏，不要右侧的「メンバーになると」 ---------- */
.d-cf-grid { max-width: 760px; }
@media (min-width: 1100px) {
  .d-cf-grid { grid-template-columns: minmax(0, 1fr); }
  .d-cf-grid .d-login-main { padding: 0 48px; border-right: 0; }
}

/* e.css */

/* ============================================================
   E 组：会员区（mypage / ticket / settings）与运营后台（admin-*）
   应用型页面：白底、1px 描边、不加投影、没有进场动画；只有悬停（150ms）和点击反馈。
   参照：OpenRouter 模型目录与排行页（左侧目录、统计、骨架占位）、Vercel 模型表（工具条、首列固定）、
   Origin UI Timeline（成长地图）、Next.js Conf 票面、Kibo UI QR Code、SmoothUI Apple Invites、
   GitHub Universe 票种卡、shadcn blocks 侧栏。
   ============================================================ */
:root {
  --e-danger: #C93434;                         /* 白底对比 5.3 */
  --e-danger-soft: rgba(201, 52, 52, 0.06);
  --e-accent-soft: rgba(101, 71, 245, 0.07);
  --e-row-hover: #FAFAF8;
}
.e-member [hidden], .e-admin [hidden], .e-drawer[hidden] { display: none !important; }
.e-dim { color: var(--text-3); }
.e-note { font-size: 12px; color: var(--text-3); line-height: 1.6; }
.e-more { margin-top: 14px; font-size: 14px; }
.e-member .btn .icon-sm, .e-admin .btn .icon-sm { flex-shrink: 0; }


/* ---------- 会员区外壳：手机顶部分页，桌面左侧目录（OpenRouter 排行页） ---------- */
.e-member { padding: 0 0 72px; }
.e-member-grid { display: grid; grid-template-columns: minmax(0, 1fr); }
.e-side { position: sticky; top: 64px; z-index: 20; margin: 0 calc(var(--gutter) * -1); padding: 0 var(--gutter); background: rgba(255, 255, 255, 0.94); -webkit-backdrop-filter: blur(10px); backdrop-filter: blur(10px); border-bottom: 1px solid var(--border); }
.e-side-user, .e-side-foot { display: none; }
.e-subnav { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); }
.e-subnav a { display: flex; align-items: center; justify-content: center; gap: 6px; height: 48px; margin-bottom: -1px; font-size: 14px; color: var(--text-2); border-bottom: 2px solid transparent; white-space: nowrap; transition: color 150ms var(--ease-std), background-color 150ms var(--ease-std); }
.e-subnav a:hover { color: var(--text); }
.e-subnav a.is-active { color: var(--text); font-weight: 500; border-bottom-color: var(--text); }
.e-member-main { min-width: 0; padding-top: 24px; }
.e-avatar { width: 40px; height: 40px; border-radius: 50%; border: 1px dashed var(--border-strong); background: var(--surface-2); flex-shrink: 0; }

/* 页面标题 */
.e-head { display: flex; flex-direction: column; gap: 12px; margin-bottom: 20px; }
.e-head h1 { font-size: 26px; letter-spacing: -0.01em; }
.e-head-sub { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 10px; margin-top: 6px; font-size: 14px; color: var(--text-2); }
.e-head-actions { display: flex; flex-wrap: wrap; gap: 8px; }

/* 会员等级小标签 */
.e-lvchip { display: inline-flex; align-items: center; gap: 6px; height: 24px; padding: 0 10px; border-radius: var(--r-pill); font-size: 12px; font-weight: 700; line-height: 1; white-space: nowrap; border: 1px solid var(--border-strong); color: var(--text); background: var(--surface); }
.e-lvchip::before { content: ""; width: 6px; height: 6px; border-radius: 50%; background: var(--text-3); }
.e-lv-basic::before { background: #E84FD3; }
.e-lv-active::before { background: #1FA85A; }
.e-lv-premium { background: #6547F5; border-color: #6547F5; color: #FFFFFF; }
.e-lv-premium::before { background: #FFFFFF; }
.e-lv-corp { background: #090909; border-color: #090909; color: #FFFFFF; }
.e-lv-corp::before { background: #FFFFFF; }

/* 面板 */
.e-panel { position: relative; border: 1px solid var(--border); border-radius: var(--r-md); background: var(--surface); padding: 20px; min-width: 0; }
.e-ph { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; margin-bottom: 16px; }
.e-ph h2 { display: flex; align-items: center; gap: 8px; font-size: 17px; }
.e-ph h2 .icon-sm { color: var(--text-3); }
.e-ph p { margin-top: 3px; font-size: 13px; color: var(--text-3); }
.e-ph > .link { flex-shrink: 0; font-size: 13px; min-height: 32px; }

/* 统计行：用共用 .stats，这里只补单位和第二行说明 */
.e-member .stats, .e-admin .stats { margin-bottom: 16px; border-radius: 0; }
.e-member .stat, .e-admin .stat { padding: 18px 16px; background: var(--surface); }
.e-member .stat .v, .e-admin .stat .v { font-size: 30px; }
.stat .v .placeholder { font-weight: 600; }
.stat .e-u { margin-left: 3px; font-family: var(--font-body); font-size: 14px; font-weight: 500; color: var(--text-2); letter-spacing: 0; }
.stat .e-u.pre { margin: 0 2px 0 0; font-family: var(--font-display); font-size: 0.6em; }
.stat .l .e-dim { font-size: 12px; }

/* ---------- 成长地图（Origin UI Timeline：过去实心、当前高亮、未到空心） ---------- */
.e-map { list-style: none; margin: 0; padding: 0; display: grid; }
.e-lv { --lv: var(--tone, var(--text-3)); position: relative; padding: 0 0 22px 30px; }
.e-lv::before { content: ""; position: absolute; left: 7px; top: 22px; bottom: 2px; width: 2px; border-radius: 1px; background: repeating-linear-gradient(to bottom, var(--border-strong) 0 4px, transparent 4px 8px); }
.e-lv.is-done::before, .e-lv.is-current::before { background: var(--text); }
.e-lv.is-current::before { background: repeating-linear-gradient(to bottom, var(--text) 0 4px, transparent 4px 8px); }
.e-lv:last-child::before { display: none; }
.e-lv-dot { position: absolute; left: 0; top: 3px; width: 16px; height: 16px; border-radius: 50%; border: 2px solid var(--border-strong); background: var(--surface); }
.e-lv.is-done .e-lv-dot { border-color: var(--text); background: var(--text); }
.e-lv.is-current .e-lv-dot { border-color: var(--lv); background: var(--lv); outline: 4px solid color-mix(in srgb, var(--lv) 20%, transparent); }
.e-lv.is-next .e-lv-dot { border-color: var(--lv); }
.e-lv-top { display: flex; align-items: center; flex-wrap: wrap; gap: 4px 10px; }
.e-lv-no { font-size: 12px; font-weight: 600; color: var(--text-3); font-variant-numeric: tabular-nums; }
.e-lv h3 { font-size: 16px; }
.e-lv-tag { display: inline-flex; align-items: center; height: 20px; padding: 0 8px; border-radius: var(--r-pill); font-size: 11px; font-weight: 700; white-space: nowrap; }
.e-lv-tag.done { color: var(--text-3); border: 1px solid var(--border); }
.e-lv-tag.now { background: var(--lv); color: #FFFFFF; }
.e-lv-tag.next { color: var(--lv); border: 1px solid var(--lv); }
.e-lv dl { margin: 8px 0 0; display: grid; gap: 8px; font-size: 13px; }
.e-lv dt { font-size: 11px; color: var(--text-3); letter-spacing: 0.04em; }
.e-lv dd { margin: 2px 0 0; color: var(--text-2); }
.e-lv dd ul { margin: 0; padding: 0; list-style: none; display: grid; gap: 3px; }
.e-lv dd li { position: relative; padding-left: 12px; }
.e-lv dd li::before { content: ""; position: absolute; left: 0; top: 0.8em; width: 5px; height: 5px; border-radius: 50%; background: var(--lv); opacity: 0.7; }
.e-lv.is-next dd.cond { color: var(--text); font-weight: 500; }
.e-lv-extra { margin-top: 8px; font-size: 12px; color: var(--text-3); }
.e-lv.is-current .e-lv-body { margin: -8px 0 0 -2px; padding: 10px 12px 12px; border-radius: var(--r-md); background: var(--tone-soft, var(--e-accent-soft)); }
.e-lv.is-done h3, .e-lv.is-done dd { color: var(--text-3); }

.e-next { display: flex; flex-direction: column; gap: 12px; margin-top: 8px; padding: 16px; border-radius: var(--r-md); border: 1px solid var(--border); background: var(--bg-soft); }
.e-next .k { font-size: 12px; font-weight: 700; color: var(--accent); }
.e-next .t { margin-top: 2px; font-size: 15px; font-weight: 500; }

/* ---------- 看板两栏 ---------- */
.e-dash { display: grid; grid-template-columns: minmax(0, 1fr); gap: 16px; margin-top: 16px; }
.e-col { display: flex; flex-direction: column; gap: 16px; min-width: 0; }

/* 参加予定のイベント（OpenRouter 排行的行：图标 + 名称 + 右侧数值） */
.e-evs { list-style: none; margin: 0; padding: 0; border-top: 1px solid var(--border); }
.e-evr { display: grid; grid-template-columns: 40px minmax(0, 1fr); gap: 12px 14px; padding: 16px 0; border-bottom: 1px solid var(--border); }
.e-evr-ic { display: grid; place-items: center; width: 40px; height: 40px; border-radius: 10px; background: var(--tone-soft); color: var(--tone); }
.e-evr-chips { display: flex; flex-wrap: wrap; gap: 6px; margin-bottom: 6px; }
.e-evr h3 { font-size: 16px; }
.e-evr h3 a { transition: color 150ms var(--ease-std); }
.e-evr h3 a:hover { color: var(--accent); }
/* 一行元信息，用竖线分隔（OpenRouter 模型行）。折行时，行首的竖线被外层裁掉 */
.e-meta { overflow: hidden; margin-top: 4px; font-size: 13px; color: var(--text-2); }
.e-meta > div { display: flex; flex-wrap: wrap; align-items: center; gap: 3px 0; margin-left: -11px; }
.e-meta > div > span { display: inline-flex; align-items: center; gap: 5px; padding: 0 10px; border-left: 1px solid var(--border-strong); line-height: 1.3; }
.e-meta .icon-sm { width: 14px; height: 14px; color: var(--text-3); }
.e-evr-note { margin-top: 6px; font-size: 12px; color: var(--text-3); }
.e-evr-act { grid-column: 2; }
.e-evr-act .btn { gap: 6px; }

/* Token 残高（数字等宽；读取中显示骨架占位，OpenRouter 排行页做法） */
.e-bals { border-top: 1px solid var(--border); }
.e-bal { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; padding: 14px 0; border-bottom: 1px solid var(--border); }
.e-bal .k { font-size: 14px; font-weight: 500; }
.e-bal .exp { margin-top: 2px; font-size: 12px; line-height: 1.6; color: var(--text-3); }
.e-bal .v { font-family: var(--font-display); font-size: 26px; font-weight: 600; line-height: 1.2; font-variant-numeric: tabular-nums; white-space: nowrap; text-align: right; }
.e-bal .yen { margin-right: 2px; font-size: 16px; color: var(--text-2); }
.e-skel { display: none; width: 104px; height: 28px; border-radius: 6px; background: var(--surface-2); vertical-align: middle; }
.is-loading .e-skel { display: inline-block; }
.is-loading .e-val { display: none; }
[data-motion="on"] .is-loading .e-skel { animation: e-pulse 1.4s var(--ease-std) infinite; }
@keyframes e-pulse { 50% { opacity: 0.45; } }
.e-panel .e-note { margin-top: 12px; }
.e-panel .btn-block { margin-top: 14px; }
.e-ibtn { display: inline-grid; place-items: center; width: 44px; height: 44px; flex-shrink: 0; border: 1px solid var(--border); border-radius: var(--r-sm); background: var(--surface); color: var(--text-2); cursor: pointer; transition: background-color 150ms var(--ease-std), color 150ms var(--ease-std), border-color 150ms var(--ease-std); }
.e-ibtn:hover { background: var(--surface-2); color: var(--text); }
.e-ibtn:disabled { opacity: 0.5; cursor: progress; }
.e-ph .e-ibtn { margin: -6px -6px 0 0; }

/* Incubator 应募进度 */
.e-prog-now { display: flex; align-items: baseline; gap: 8px; font-size: 13px; color: var(--text-2); }
.e-prog-now b { font-size: 15px; color: var(--text); }
.e-prog-now .latin { margin-left: auto; font-size: 13px; color: var(--text-3); font-variant-numeric: tabular-nums; }
.e-prog { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 4px; margin: 12px 0 0; padding: 0; list-style: none; }
.e-prog li { font-size: 11px; line-height: 1.4; color: var(--text-3); white-space: nowrap; }
.e-prog li::before { content: ""; display: block; height: 6px; margin-bottom: 8px; border-radius: var(--r-pill); background: var(--surface-2); }
.e-prog li.is-done { color: var(--text-2); }
.e-prog li.is-done::before { background: var(--text); }
.e-prog li.is-current { color: var(--accent); font-weight: 700; }
.e-prog li.is-current::before { background: var(--accent); }

.e-kv { margin: 16px 0 0; border-top: 1px solid var(--border); }
.e-kv > div { display: grid; grid-template-columns: 108px minmax(0, 1fr); gap: 12px; padding: 10px 0; border-bottom: 1px solid var(--border); font-size: 14px; }
.e-kv dt { font-size: 13px; color: var(--text-3); }
.e-kv dd { margin: 0; min-width: 0; }

/* お知らせ */
.e-news { list-style: none; margin: 0; padding: 0; border-top: 1px solid var(--border); }
.e-news a { display: grid; grid-template-columns: 72px minmax(0, 1fr); align-items: start; gap: 4px 10px; min-height: 44px; padding: 12px 0; border-bottom: 1px solid var(--border); font-size: 14px; }
.e-news .t { transition: color 150ms var(--ease-std); }
.e-news a:hover .t { color: var(--accent); }
.e-news .d { grid-column: 2; font-size: 12px; color: var(--text-3); }
.e-tag { justify-self: start; display: inline-flex; align-items: center; gap: 6px; height: 22px; padding: 0 8px; border: 1px solid var(--border-strong); border-radius: var(--r-pill); font-size: 11px; font-weight: 500; color: var(--text-2); white-space: nowrap; }
.e-tag::before { content: ""; width: 6px; height: 6px; border-radius: 50%; background: var(--text-3); }
.e-tag-price::before { background: var(--brand-purple); }
.e-tag-alert::before { background: var(--e-danger); }

/* ---------- マイチケット ---------- */
.e-demo { display: flex; flex-direction: column; gap: 8px; margin-bottom: 16px; padding: 12px; border: 1px dashed var(--border-strong); border-radius: var(--r-md); }
.e-demo-k { font-size: 12px; color: var(--text-3); }
.e-seg { display: flex; gap: 2px; padding: 3px; border-radius: var(--r-pill); background: var(--surface-2); }
.e-seg button { flex: 1 1 auto; height: 44px; padding: 0 10px; border: 0; border-radius: var(--r-pill); background: transparent; font-family: var(--font-body); font-size: 13px; font-weight: 500; color: var(--text-2); cursor: pointer; white-space: nowrap; transition: background-color 150ms var(--ease-std), color 150ms var(--ease-std); }
.e-seg button:hover { color: var(--text); }
.e-seg button[aria-pressed="true"] { background: var(--surface); color: var(--text); box-shadow: inset 0 0 0 1px var(--border); }

.e-tk-wrap { display: grid; grid-template-columns: minmax(0, 1fr); gap: 16px; }
.e-tk-main { min-width: 0; }
.e-tk-side { display: flex; flex-direction: column; gap: 16px; min-width: 0; }

/* 票面：Next.js Conf 的缺口与副券。手机竖版（副券在下），宽屏横版（副券在右） */
.e-pass { --notch: 22px; --cutm: 16px; position: relative; display: grid; grid-template-columns: minmax(0, 1fr); border: 1px solid var(--border-strong); border-radius: 20px; background: var(--surface); }
.e-pass-main { min-width: 0; border-radius: 19px 19px 0 0; overflow: hidden; }
.e-pass-band { height: 8px; background: linear-gradient(90deg, #6547F5, #F57AE5 40%, #F55200 72%, #3ED67D); }
.e-pass-body { position: relative; padding: 18px 20px 18px; }
.e-pass-body::after { content: ""; position: absolute; right: 0; top: 0; width: 160px; height: 120px; pointer-events: none; background-image: radial-gradient(rgba(9, 9, 9, 0.12) 1.2px, transparent 1.4px); background-size: 12px 12px; -webkit-mask-image: linear-gradient(225deg, #000, transparent 70%); mask-image: linear-gradient(225deg, #000, transparent 70%); }
.e-pass-eyebrow { margin-bottom: 10px; font-size: 11px; font-weight: 600; letter-spacing: 0.16em; color: var(--text-3); }
.e-pass h2 { margin: 12px 0 2px; font-size: 24px; letter-spacing: -0.01em; }
.e-pass .ses { font-size: 14px; color: var(--text-2); }
.e-pass-dl { margin: 16px 0 0; display: grid; gap: 8px; font-size: 14px; }
.e-pass-dl > div { display: grid; grid-template-columns: 56px minmax(0, 1fr); gap: 8px; }
.e-pass-dl dt { padding-top: 1px; font-size: 12px; color: var(--text-3); }
.e-pass-dl dd { margin: 0; }
.e-pass-no { display: flex; align-items: baseline; justify-content: space-between; gap: 12px; margin-top: 16px; padding-top: 12px; border-top: 1px solid var(--border); font-size: 12px; color: var(--text-3); }
.e-pass-no .latin { font-size: 15px; font-weight: 600; letter-spacing: 0.08em; color: var(--text); font-variant-numeric: tabular-nums; }
.e-pass-cut { position: relative; height: 0; margin: 0 var(--cutm); border-top: 2px dashed var(--border-strong); }
.e-pass-cut::before, .e-pass-cut::after { content: ""; position: absolute; top: calc(var(--notch) / -2 - 1px); width: var(--notch); height: var(--notch); border-radius: 50%; background: var(--bg); border: 1px solid var(--border-strong); }
.e-pass-cut::before { left: calc(-1 * var(--cutm) - var(--notch) / 2 - 0.5px); clip-path: inset(0 0 0 calc(50% - 1px)); }
.e-pass-cut::after { right: calc(-1 * var(--cutm) - var(--notch) / 2 - 0.5px); clip-path: inset(0 calc(50% - 1px) 0 0); }
.e-pass-stub { display: flex; align-items: center; justify-content: center; padding: 22px 20px 24px; text-align: center; }
.e-stub-state { display: flex; flex-direction: column; align-items: center; gap: 6px; }
.e-stub-state .t { max-width: 240px; font-size: 15px; font-weight: 500; }
.e-stub-state .d { max-width: 260px; font-size: 13px; color: var(--text-2); }
.e-big-ic { width: 44px; height: 44px; color: var(--text-3); stroke-width: 1.5; margin-bottom: 4px; }
[data-e-when="done"] .e-big-ic { color: #1FA85A; }
/* 二维码：固定黑码白底、四周 4 格白边；角标装饰只放在码的外面（Kibo UI QR Code 的预览框） */
.e-qr-frame { position: relative; padding: 10px; background:
  linear-gradient(var(--text), var(--text)) left top / 18px 2px no-repeat, linear-gradient(var(--text), var(--text)) left top / 2px 18px no-repeat,
  linear-gradient(var(--text), var(--text)) right top / 18px 2px no-repeat, linear-gradient(var(--text), var(--text)) right top / 2px 18px no-repeat,
  linear-gradient(var(--text), var(--text)) left bottom / 18px 2px no-repeat, linear-gradient(var(--text), var(--text)) left bottom / 2px 18px no-repeat,
  linear-gradient(var(--text), var(--text)) right bottom / 18px 2px no-repeat, linear-gradient(var(--text), var(--text)) right bottom / 2px 18px no-repeat; }
.e-qr { display: block; width: 176px; height: 176px; border: 1px solid var(--border); background: #FFFFFF; }
.e-qr-cap { font-size: 11px; color: var(--text-3); }
.e-code-k { margin-top: 8px; font-size: 12px; color: var(--text-3); }
.e-code { font-size: 28px; font-weight: 600; letter-spacing: 0.1em; line-height: 1.2; font-variant-numeric: tabular-nums; }
.e-tk-actions { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 16px; }
.e-tk-actions .btn { gap: 6px; }
.e-tk-main > .e-note { margin-top: 8px; }
.e-cancel { color: var(--e-danger); }
.e-cancel:hover { color: var(--e-danger); background: var(--e-danger-soft); }

/* 会場での流れ：GitHub Universe「What's included」的编号清单 */
.e-flow { list-style: none; margin: 0; padding: 0; counter-reset: f; border-top: 1px solid var(--border); }
.e-flow li { display: grid; grid-template-columns: 28px minmax(0, 1fr); gap: 6px; padding: 12px 0; border-bottom: 1px solid var(--border); font-size: 14px; color: var(--text-2); }
.e-flow li::before { counter-increment: f; content: counter(f); font-family: var(--font-display); font-weight: 600; color: var(--accent); }
.e-notes { margin: 0; padding: 0; list-style: none; display: grid; gap: 8px; font-size: 14px; color: var(--text-2); }
.e-notes li { position: relative; padding-left: 16px; }
.e-notes li::before { content: ""; position: absolute; left: 2px; top: 0.72em; width: 6px; height: 6px; border-radius: 50%; background: var(--text-3); }

/* 邀请卡（SmoothUI Apple Invites）：代表色淡底 + 点阵，状态胶囊在左上 */
.e-tk-others { margin-top: 32px; }
/* 手机：横向滑动的一排（Apple Invites 的轮播），露出下一张的边；宽屏：三列 */
.e-invites { display: grid; grid-auto-flow: column; grid-auto-columns: 74%; gap: 12px; margin: 0 calc(var(--gutter) * -1); padding: 0 var(--gutter) 4px; overflow-x: auto; scroll-snap-type: x mandatory; scroll-padding: 0 var(--gutter); scrollbar-width: none; }
.e-invites::-webkit-scrollbar { display: none; }
.e-invites > .e-inv { scroll-snap-align: start; }
.e-inv { display: flex; flex-direction: column; border: 1px solid var(--border); border-radius: 16px; overflow: hidden; background: var(--surface); transition: border-color 150ms var(--ease-std); }
.e-inv:hover { border-color: var(--border-hover); }
.e-inv-body { display: flex; flex-direction: column; gap: 4px; padding: 14px 16px 16px; }
.e-inv-body .chips { margin-bottom: 4px; }
.e-inv h3 { font-size: 15px; }
.e-inv p { font-size: 12px; color: var(--text-2); }
.e-inv p.n { color: var(--text-3); }

/* 空状态：共用 mini_ui 灰块小界面 + 一句引导 */
.e-empty { display: grid; grid-template-columns: minmax(0, 1fr); gap: 16px; align-items: center; padding: 16px; border: 1px dashed var(--border-strong); border-radius: var(--r-md); }
.e-empty .mini-ui { min-height: 0; max-width: 280px; }
.e-empty .t { font-size: 15px; font-weight: 500; }
.e-empty .d { margin: 2px 0 8px; font-size: 13px; color: var(--text-2); }

/* ---------- 設定 ---------- */
.e-set { border: 1px solid var(--border); border-radius: var(--r-md); background: var(--surface); }
.e-set + .e-set { margin-top: 16px; }
.e-set-h { padding: 18px 20px 14px; border-bottom: 1px solid var(--border); }
.e-set-h h2 { display: flex; align-items: center; gap: 8px; font-size: 17px; }
.e-set-h p { margin-top: 4px; font-size: 13px; color: var(--text-2); }
.e-set-row { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: center; gap: 10px 16px; padding: 16px 20px; border-bottom: 1px solid var(--border); }
.e-set-row:last-child { border-bottom: 0; }
.e-set-row .t { font-size: 15px; font-weight: 500; }
.e-set-row .d { margin-top: 2px; font-size: 13px; color: var(--text-2); }
.e-set-row .btn { gap: 6px; }
.e-set-form { grid-template-columns: minmax(0, 1fr); align-items: start; }
.e-set-form .btn { justify-self: start; }
.e-set-stack { grid-template-columns: minmax(0, 1fr); gap: 14px; }
.e-state { font-size: 13px; color: var(--text-2); white-space: nowrap; }
.e-state.on::before { content: ""; display: inline-block; width: 6px; height: 6px; margin-right: 6px; border-radius: 50%; background: var(--brand-green); vertical-align: middle; }
.e-saved { display: flex; align-items: center; gap: 6px; font-size: 13px; color: #1A8A4C; }
.e-consent { grid-template-columns: 36px minmax(0, 1fr); align-items: start; }
.e-consent-ic { display: grid; place-items: center; width: 36px; height: 36px; border-radius: 10px; background: var(--surface-2); color: var(--text-2); }
.e-consent-s { grid-column: 2; display: flex; flex-wrap: wrap; align-items: center; gap: 6px 10px; }
.e-consent-s p { font-size: 12px; color: var(--text-3); }
.e-consent .d .link { margin-left: 4px; }
.e-consent .e-links { display: flex; flex-wrap: wrap; gap: 4px 16px; margin-top: 4px; }
.e-consent .e-links .link { margin-left: 0; }
.e-must { display: inline-flex; align-items: center; height: 18px; margin-left: 8px; padding: 0 6px; border-radius: 4px; font-size: 11px; font-weight: 500; color: var(--e-danger); background: var(--e-danger-soft); vertical-align: 2px; }
.e-must.opt { color: var(--text-3); background: var(--surface-2); }
.e-danger { border-color: rgba(201, 52, 52, 0.4); }
.e-danger .e-set-h { border-bottom-color: rgba(201, 52, 52, 0.18); }
.e-danger .e-set-h h2 { color: var(--e-danger); }
.e-danger-note { font-size: 13px; color: var(--text-2); }
.e-btn-danger-o { background: transparent; color: var(--e-danger); border-color: rgba(201, 52, 52, 0.5); }
.e-btn-danger-o:hover { background: var(--e-danger-soft); }
.e-btn-danger { background: var(--e-danger); color: #FFFFFF; }
.e-btn-danger:hover { opacity: 0.9; }
/* 取り消し・退会の確認：白地に細線（09-25 淡い赤の地をやめた。危ない操作であることは赤いボタンだけで示す） */
.e-withdraw { display: flex; flex-direction: column; gap: 12px; padding: 16px; border-radius: var(--r-md); background: var(--surface); border: 1px solid var(--border); }
.e-withdraw .t { font-size: 15px; font-weight: 700; }
.e-withdraw-btns { display: flex; flex-wrap: wrap; gap: 8px; }
.e-check { display: flex; align-items: center; gap: 10px; min-height: 44px; font-size: 14px; cursor: pointer; }
.e-check input { width: 18px; height: 18px; margin: 0; accent-color: var(--accent); flex-shrink: 0; }

/* 开关（role="switch"）：点击区域 52×44，里面是 44×24 的轨道 */
.e-switch { position: relative; width: 52px; height: 44px; padding: 0; border: 0; background: transparent; cursor: pointer; flex-shrink: 0; }
.e-switch::before { content: ""; position: absolute; left: 4px; top: 10px; width: 44px; height: 24px; border-radius: 999px; background: var(--surface-2); box-shadow: inset 0 0 0 1px var(--border-strong); transition: background-color 150ms var(--ease-std), box-shadow 150ms var(--ease-std); }
.e-switch::after { content: ""; position: absolute; left: 7px; top: 13px; width: 18px; height: 18px; border-radius: 50%; background: #FFFFFF; box-shadow: inset 0 0 0 1px var(--border-strong); transition: transform 150ms var(--ease-std); }
.e-switch[aria-checked="true"]::before { background: var(--accent); box-shadow: none; }
.e-switch[aria-checked="true"]::after { transform: translateX(20px); box-shadow: none; }
.e-switch:disabled { opacity: 0.4; cursor: not-allowed; }
.e-switch:focus-visible { outline: 2px solid var(--accent); outline-offset: -2px; border-radius: 12px; }

/* ---------- 表单（会员区和后台共用） ---------- */
.e-field { display: flex; flex-direction: column; gap: 6px; min-width: 0; }
.e-field > label, .e-label { display: flex; align-items: center; gap: 8px; font-size: 13px; font-weight: 500; color: var(--text); }
.e-count { margin-left: auto; font-size: 12px; font-weight: 400; color: var(--text-3); font-variant-numeric: tabular-nums; }
.e-field.is-over .e-count { color: var(--e-danger); }
.e-help { font-size: 12px; line-height: 1.6; color: var(--text-3); }
.e-req { font-size: 11px; font-weight: 500; color: var(--e-danger); }
.e-member .input, .e-admin .input { width: 100%; min-width: 0; transition: border-color 150ms var(--ease-std); }
.e-member .input:hover, .e-admin .input:hover { border-color: rgba(9, 9, 9, 0.32); }
.e-member .input:focus, .e-admin .input:focus, .e-textarea:focus, .e-select:focus { outline: none; border-color: var(--accent); box-shadow: 0 0 0 3px rgba(101, 71, 245, 0.18); }
.e-admin .input:disabled, .e-admin .e-select:disabled { background: var(--surface-2); color: var(--text-3); cursor: not-allowed; }
.e-textarea { width: 100%; min-height: 128px; padding: 12px 14px; border: 1px solid var(--border-strong); border-radius: var(--r-sm); background: var(--surface); color: var(--text); font-family: var(--font-body); font-size: 15px; line-height: 1.7; resize: vertical; }
.e-select { height: 44px; padding: 0 36px 0 14px; border: 1px solid var(--border-strong); border-radius: var(--r-sm); background: var(--surface) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%236B6B70' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E") no-repeat right 12px center; -webkit-appearance: none; appearance: none; font-family: var(--font-body); font-size: 14px; color: var(--text); cursor: pointer; transition: border-color 150ms var(--ease-std), background-color 150ms var(--ease-std); }
.e-select:hover { border-color: rgba(9, 9, 9, 0.32); }

/* ============================================================
   运营后台：顶栏 + 左侧栏（shadcn blocks 的侧栏）+ 主区
   ============================================================ */
.e-admin { min-height: 100vh; background: var(--bg); }
.e-atop { position: sticky; top: 0; z-index: 30; display: flex; align-items: center; justify-content: space-between; gap: 12px; height: 60px; padding: 0 var(--gutter); border-bottom: 1px solid var(--border); background: rgba(255, 255, 255, 0.92); -webkit-backdrop-filter: blur(12px); backdrop-filter: blur(12px); }
.e-atop .logo { gap: 10px; min-height: 44px; }
.e-atop .logo-mark { width: 24px; }
.e-atop-title { font-size: 15px; font-weight: 700; white-space: nowrap; }
.e-atop-title .latin { font-weight: 600; }
.e-atop-r { display: flex; align-items: center; gap: 8px; }
.e-atop-link { display: none; align-items: center; gap: 6px; height: 44px; padding: 0 12px; border-radius: var(--r-sm); font-size: 13px; color: var(--text-2); transition: background-color 150ms var(--ease-std), color 150ms var(--ease-std); }
.e-atop-link:hover { background: var(--surface-2); color: var(--text); }
.e-op { display: flex; align-items: center; gap: 8px; height: 44px; padding: 0 4px 0 10px; border-left: 1px solid var(--border); font-size: 13px; }
.e-op .e-av { width: 30px; height: 30px; }
.e-av { display: inline-grid; place-items: center; width: 32px; height: 32px; border-radius: 50%; border: 1px dashed var(--border-strong); background: var(--surface-2); flex-shrink: 0; }
.e-op .n { max-width: 88px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.e-op .r { display: none; font-size: 11px; color: var(--text-3); }
/* 顶栏的语言切换（后台日中英三语，09-30）：手机上收窄，三样东西放得下，不超出屏幕 */
.e-lang { display: flex; }
@media (max-width: 767px) {
  .e-lang .e-select { height: 36px; padding: 0 26px 0 10px; font-size: 13px; background-position: right 8px center; }
}

.e-abody { display: grid; grid-template-columns: minmax(0, 1fr); }
.e-aside { position: sticky; top: 60px; z-index: 20; border-bottom: 1px solid var(--border); background: rgba(255, 255, 255, 0.94); -webkit-backdrop-filter: blur(10px); backdrop-filter: blur(10px); }
.e-aside-k, .e-aside-foot { display: none; }
.e-anav { display: flex; gap: 4px; padding: 0 var(--gutter); overflow-x: auto; scrollbar-width: none; }
.e-anav::-webkit-scrollbar { display: none; }
.e-anav a { display: inline-flex; flex-shrink: 0; align-items: center; gap: 8px; height: 48px; margin-bottom: -1px; padding: 0 10px; border-bottom: 2px solid transparent; font-size: 14px; color: var(--text-2); white-space: nowrap; transition: color 150ms var(--ease-std), background-color 150ms var(--ease-std); }
.e-anav a:hover { color: var(--text); }
.e-anav a.is-active { color: var(--text); font-weight: 500; border-bottom-color: var(--text); }
.e-anav .icon-sm { color: var(--text-3); }
.e-anav a.is-active .icon-sm { color: var(--text); }
.e-amain { min-width: 0; padding: 20px var(--gutter) 40px; }

.e-crumb { display: flex; flex-wrap: wrap; align-items: center; gap: 4px; margin-bottom: 8px; font-size: 13px; color: var(--text-3); }
.e-crumb a { display: inline-flex; align-items: center; min-height: 28px; transition: color 150ms var(--ease-std); }
.e-crumb a:hover { color: var(--text); }
.e-crumb .icon-sm { width: 14px; height: 14px; }
.e-ahead { display: flex; flex-direction: column; gap: 14px; margin-bottom: 20px; }
.e-ahead h1 { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 12px; font-size: 24px; letter-spacing: -0.01em; }
.e-ahead p { max-width: 760px; margin-top: 4px; font-size: 14px; color: var(--text-2); }
.e-ahead-btns { display: flex; flex-wrap: wrap; gap: 8px; }
.e-ahead-btns .btn { gap: 6px; }

/* 工具条（Vercel 模型表：搜索 + 分段 + 下拉筛选） */
.e-toolbar { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; margin-bottom: 12px; }
.e-search { position: relative; flex: 1 1 100%; min-width: 0; }
.e-search .icon-sm { position: absolute; left: 14px; top: 14px; color: var(--text-3); pointer-events: none; }
.e-search .input { padding-left: 40px; }
/* 外框用 outline 画在按钮上层，按钮本身保持 44px 高，和旁边的输入框对齐 */
.e-segtabs { display: flex; max-width: 100%; overflow-x: auto; scrollbar-width: none; border-radius: var(--r-sm); background: var(--surface); outline: 1px solid var(--border-strong); outline-offset: -1px; }
.e-segtabs::-webkit-scrollbar { display: none; }
.e-segtabs button { display: inline-flex; flex-shrink: 0; align-items: center; gap: 6px; height: 44px; padding: 0 12px; border: 0; border-right: 1px solid var(--border); background: transparent; font-family: var(--font-body); font-size: 14px; color: var(--text-2); cursor: pointer; white-space: nowrap; transition: background-color 150ms var(--ease-std), color 150ms var(--ease-std); }
.e-segtabs button:last-child { border-right: 0; }
.e-segtabs button:hover { color: var(--text); background: var(--bg-soft); }
.e-segtabs button[aria-pressed="true"] { color: var(--text); font-weight: 500; background: var(--surface-2); }
.e-segtabs .n { font-family: var(--font-display); font-size: 12px; color: var(--text-3); font-variant-numeric: tabular-nums; }
.e-toolbar .e-select { flex: 1 1 auto; }
.e-sample { display: inline-flex; align-items: center; height: 22px; padding: 0 8px; border: 1px dashed var(--border-strong); border-radius: var(--r-pill); font-size: 11px; font-weight: 500; color: var(--text-3); white-space: nowrap; vertical-align: middle; }

/* 表格（Vercel：首列固定、右边一条分隔线） */
.e-tablebox { border: 1px solid var(--border); border-radius: var(--r-md); background: var(--surface); overflow: hidden; }
.e-tablescroll { overflow-x: auto; }
.e-table { width: 100%; border-collapse: separate; border-spacing: 0; font-size: 14px; }
.e-table th { padding: 11px 16px; border-bottom: 1px solid var(--border); background: var(--bg-soft); font-size: 12px; font-weight: 500; color: var(--text-3); text-align: left; white-space: nowrap; }
.e-table td { padding: 14px 16px; border-bottom: 1px solid var(--border); background: var(--surface); vertical-align: middle; transition: background-color 150ms var(--ease-std); }
.e-table tbody tr:last-child td { border-bottom: 0; }
.e-table tbody tr:hover td { background: var(--e-row-hover); }
.e-table .e-first { min-width: 240px; }
.e-table .num { text-align: right; white-space: nowrap; font-variant-numeric: tabular-nums; }
.e-table .nowrap { white-space: nowrap; }
.e-table .sub { display: block; margin-top: 2px; font-size: 12px; color: var(--text-3); }
.e-tname { font-weight: 500; }
.e-tname a { transition: color 150ms var(--ease-std); }
.e-tname a:hover { color: var(--accent); }
.e-tchips { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 6px; }
.e-flag { display: flex; width: fit-content; align-items: center; gap: 5px; margin-top: 4px; font-size: 12px; font-weight: 400; color: var(--text-2); white-space: nowrap; }
.num .e-flag { margin-left: auto; }
.e-flag::before { content: ""; width: 6px; height: 6px; border-radius: 50%; background: var(--brand-purple); }
.e-flag.few::before { background: #E84FD3; }
.e-flag.full::before { background: var(--text-3); }
.e-st-draft { border-style: dashed; color: var(--text-3); }
.e-st-ended { color: var(--text-3); border-color: var(--border); }

.e-acts { display: flex; align-items: center; gap: 2px; white-space: nowrap; }
.e-act { display: inline-flex; align-items: center; gap: 6px; min-height: 44px; padding: 0 10px; border-radius: var(--r-sm); font-size: 13px; color: var(--text-2); background: none; border: 0; font-family: var(--font-body); cursor: pointer; transition: background-color 150ms var(--ease-std), color 150ms var(--ease-std); }
.e-act:hover { background: var(--surface-2); color: var(--text); }
.e-act.strong { color: var(--text); font-weight: 500; box-shadow: inset 0 0 0 1px var(--border-strong); }
.e-table-tight th, .e-table-tight td { padding-left: 12px; padding-right: 12px; }
.e-table-tight td { white-space: nowrap; }
.e-tfoot { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 8px; padding: 10px 16px; border-top: 1px solid var(--border); background: var(--bg-soft); font-size: 13px; color: var(--text-3); }
.e-pager { display: flex; gap: 4px; }
.e-pager .e-ibtn:disabled { opacity: 0.4; cursor: not-allowed; }
.e-noresult { padding: 24px 16px; }
.e-noresult .mini-ui { max-width: 320px; min-height: 0; margin-bottom: 12px; }
.e-noresult p { font-size: 14px; color: var(--text-2); }

/* 手机：表格改成卡片列表（每张卡两列：标签在上、值在下） */
@media (max-width: 767px) {
  .e-tablebox { border: 0; border-radius: 0; background: transparent; overflow: visible; }
  .e-tablescroll { overflow: visible; }
  .e-table, .e-table tbody { display: block; width: 100%; }
  .e-table thead { display: none; }
  .e-table tr { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px 14px; margin-bottom: 10px; padding: 14px 16px 0; border: 1px solid var(--border); border-radius: var(--r-md); background: var(--surface); }
  .e-table td { display: block; min-width: 0; padding: 0; border: 0; background: transparent !important; font-size: 13px; }
  .e-table td::before { content: attr(data-label); display: block; margin-bottom: 2px; font-size: 11px; color: var(--text-3); }
  /* 后台三语（10-01）：网站的后台在 data-th 里放当前语言的列名；data-label 保持日语（测试和下面「状態」的定位用）。原型页没有 data-th，照旧显示 data-label */
  .e-table td[data-th]::before { content: attr(data-th); }
  .e-table td.e-first { grid-column: 1 / -1; order: -1; min-width: 0; }
  .e-table td.e-first::before, .e-table td.e-td-act::before { content: none; }
  .e-table td.e-td-act { grid-column: 1 / -1; margin: 0 -16px; padding: 2px 8px; border-top: 1px solid var(--border); }
  .e-table .num { text-align: left; }
  .e-table .num .e-flag { margin-left: 0; }
  .e-table .e-flag { white-space: normal; }
  /* 状态标签可能很长（キャンセル待ち [N] 番目 等），状态一格占满卡片宽度 */
  .e-table td[data-label="状態"] { grid-column: 1 / -1; }
  /* 缺项提醒：按钮放到说明下面，说明不被挤窄 */
  .e-warns li { grid-template-columns: 36px minmax(0, 1fr); }
  .e-warns .e-act { grid-column: 2; justify-self: start; }
  .e-table .nowrap { white-space: normal; }
  .e-tfoot { margin-top: 4px; border: 1px solid var(--border); border-radius: var(--r-md); }
}
@media (min-width: 768px) {
  .e-table .e-sticky { position: sticky; left: 0; z-index: 1; box-shadow: inset -1px 0 0 var(--border); }
  .e-table-tight td.e-td-act { width: 1%; }
}

/* 页面统计格 */
.e-admin .stat .l { font-size: 12px; }

/* 后台表单 */
.e-edit { display: grid; grid-template-columns: minmax(0, 1fr); gap: 16px; }
.e-form { display: grid; gap: 16px; min-width: 0; }
.e-fs { min-width: 0; border: 1px solid var(--border); border-radius: var(--r-md); background: var(--surface); padding: 20px; }
.e-fs-h { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; }
.e-fs-h h2 { display: flex; align-items: center; gap: 10px; font-size: 17px; }
.e-fs-h h2 .no { font-family: var(--font-display); font-size: 12px; font-weight: 600; color: var(--text-3); }
.e-fs-h p { margin-top: 4px; font-size: 13px; color: var(--text-2); }
.e-fields { display: grid; gap: 18px; margin-top: 18px; }
.e-row2, .e-row3 { display: grid; grid-template-columns: minmax(0, 1fr); gap: 18px; }
.e-dt { display: grid; grid-template-columns: minmax(0, 1.3fr) minmax(0, 1fr); gap: 8px; }
.e-unit { display: flex; align-items: center; gap: 8px; }
.e-unit .input { max-width: 120px; }
.e-unit span { font-size: 14px; color: var(--text-2); white-space: nowrap; }
.e-pills { display: flex; flex-wrap: wrap; gap: 8px; }
.e-pill { position: relative; display: inline-flex; }
.e-pill input { position: absolute; inset: 0; width: 100%; height: 100%; margin: 0; opacity: 0; cursor: pointer; }
.e-pill span { display: inline-flex; align-items: center; gap: 6px; height: 44px; padding: 0 16px; border: 1px solid var(--border-strong); border-radius: var(--r-pill); font-size: 14px; color: var(--text-2); white-space: nowrap; transition: border-color 150ms var(--ease-std), background-color 150ms var(--ease-std), color 150ms var(--ease-std); }
.e-pill:hover span { border-color: rgba(9, 9, 9, 0.34); color: var(--text); }
.e-pill input:checked + span { border-color: var(--accent); background: var(--e-accent-soft); color: var(--accent); font-weight: 500; }
.e-pill input:focus-visible + span { outline: 2px solid var(--accent); outline-offset: 2px; }
.e-pill .dot { width: 8px; height: 8px; border-radius: 50%; background: var(--tone); }
.e-rcards { display: grid; grid-template-columns: minmax(0, 1fr); gap: 8px; }
.e-rcard { display: flex; align-items: flex-start; gap: 12px; padding: 14px 16px; border: 1px solid var(--border-strong); border-radius: var(--r-md); cursor: pointer; transition: border-color 150ms var(--ease-std), background-color 150ms var(--ease-std); }
.e-rcard:hover { border-color: rgba(9, 9, 9, 0.34); }
.e-rcard input { flex-shrink: 0; width: 18px; height: 18px; margin: 3px 0 0; accent-color: var(--accent); cursor: pointer; }
.e-rcard .t { display: block; font-size: 15px; font-weight: 500; }
.e-rcard .d { display: block; margin-top: 2px; font-size: 13px; line-height: 1.6; color: var(--text-2); }
.e-rcard:has(input:checked) { border-color: var(--accent); background: var(--e-accent-soft); }
.e-toggle { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: center; gap: 4px 16px; padding: 12px 14px; border: 1px solid var(--border); border-radius: var(--r-md); }
.e-toggle .t { font-size: 14px; font-weight: 500; }
.e-toggle .e-help { grid-column: 1; }
.e-toggle .e-switch { grid-column: 2; grid-row: 1 / span 2; }
.is-off { opacity: 0.55; }
.is-off .e-help .why { display: inline; }
.e-help .why { display: none; color: var(--accent); }
.e-info { display: flex; gap: 10px; padding: 12px 14px; border-radius: var(--r-md); background: var(--bg-soft); font-size: 13px; color: var(--text-2); }
.e-info .icon-sm { margin-top: 3px; color: var(--text-3); }

/* 讲师 */
.e-speaker { display: grid; grid-template-columns: 72px minmax(0, 1fr); gap: 14px; padding: 14px; border: 1px solid var(--border); border-radius: var(--r-md); }
.e-photo { display: grid; place-items: center; align-content: center; gap: 4px; width: 72px; height: 72px; border: 1px dashed var(--border-strong); border-radius: 50%; background: var(--surface-2); font-size: 11px; color: var(--text-3); cursor: pointer; }
.e-speaker .e-fields { margin-top: 0; gap: 12px; }

/* 时间表（可增减行） */
.e-tt-head { display: none; }
.e-tt-row { display: grid; grid-template-columns: minmax(0, 1fr) 44px; gap: 8px; padding: 12px 0; border-bottom: 1px solid var(--border); }
.e-tt-row .c-when { grid-column: 1; grid-row: 1; }
.e-tt-row .c-del { grid-column: 2; grid-row: 1; }
.e-tt-row .c-what { grid-column: 1 / -1; grid-row: 2; }
.e-tt-row .c-who { grid-column: 1 / -1; grid-row: 3; }
.e-tt-add { margin-top: 12px; gap: 6px; }

/* 右侧预览（公開ページのプレビュー） */
.e-edit-side { display: grid; gap: 16px; align-content: start; min-width: 0; }
.e-pv-k { display: flex; align-items: center; gap: 8px; margin-bottom: 10px; font-size: 13px; font-weight: 500; color: var(--text-2); }
.e-pv .event-card { min-height: 0; cursor: default; }
.e-pv .event-card:hover { border-color: var(--border); }
.e-pv .card-foot { flex-direction: column; align-items: stretch; gap: 8px; }
.e-pv-note { font-size: 12px; color: var(--text-3); text-align: center; }
.e-hist { list-style: none; margin: 0; padding: 0; display: grid; gap: 10px; font-size: 13px; }
.e-hist li { display: grid; gap: 2px; padding-left: 14px; border-left: 2px solid var(--border); }
.e-hist .w { font-size: 12px; color: var(--text-3); }

/* 保存条（钉在底部） */
.e-savebar { position: sticky; bottom: 0; z-index: 15; display: flex; flex-direction: column; gap: 10px; margin: 20px calc(var(--gutter) * -1) -40px; padding: 12px var(--gutter) 16px; border-top: 1px solid var(--border); background: rgba(255, 255, 255, 0.95); -webkit-backdrop-filter: blur(12px); backdrop-filter: blur(12px); }
.e-savebar .t { font-size: 13px; font-weight: 500; }
.e-savebar .w { font-size: 12px; color: var(--text-3); }
.e-savebar-btns { display: flex; gap: 8px; }
.e-savebar-btns .btn { flex: 1; }
.e-savebar .e-saved { font-size: 12px; }

/* 会员页：左侧筛选栏（OpenRouter 模型目录） */
.e-mlayout { display: grid; grid-template-columns: minmax(0, 1fr); gap: 12px; }
.e-ftoggle { display: inline-flex; gap: 6px; }
.e-fpanel { display: none; padding: 4px 16px; border: 1px solid var(--border); border-radius: var(--r-md); background: var(--surface); }
.e-fpanel.is-open { display: block; }
.e-fgroup { padding: 10px 0; border-bottom: 1px solid var(--border); }
.e-fgroup:last-child { border-bottom: 0; }
.e-fgroup h3 { display: flex; align-items: center; gap: 8px; height: 36px; font-size: 13px; font-weight: 500; }
.e-fgroup h3 .icon-sm { color: var(--text-3); }
.e-fcheck { display: flex; align-items: center; gap: 10px; min-height: 44px; font-size: 14px; color: var(--text-2); cursor: pointer; transition: color 150ms var(--ease-std); }
.e-fcheck:hover { color: var(--text); }
.e-fcheck input { width: 16px; height: 16px; margin: 0; accent-color: var(--accent); cursor: pointer; }
.e-fcheck .n { margin-left: auto; font-family: var(--font-display); font-size: 12px; color: var(--text-3); font-variant-numeric: tabular-nums; }
.e-mrow { cursor: pointer; }
.e-mrow:focus-visible td { background: var(--e-accent-soft); outline: none; }
.e-mrow.is-selected td { background: var(--e-accent-soft) !important; }
.e-mname { display: flex; align-items: center; gap: 10px; }
.e-mname .e-av { width: 32px; height: 32px; }
.e-mail { font-family: var(--font-display); font-size: 13px; color: var(--text-2); }
.e-status { display: inline-flex; align-items: center; gap: 6px; font-size: 13px; white-space: nowrap; }
.e-status::before { content: ""; width: 6px; height: 6px; border-radius: 50%; background: var(--brand-green); }
.e-status.off { color: var(--e-danger); }
.e-status.off::before { background: var(--e-danger); }

/* 会员详情侧栏 */
.e-drawer { position: fixed; inset: 0; z-index: 80; }
.e-drawer-bg { position: absolute; inset: 0; background: rgba(9, 9, 9, 0.28); }
.e-drawer-panel { position: absolute; top: 0; right: 0; bottom: 0; display: flex; flex-direction: column; width: min(460px, 100%); border-left: 1px solid var(--border); background: var(--surface); }
.e-drawer-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; padding: 14px 16px 14px 20px; border-bottom: 1px solid var(--border); }
.e-drawer-head .k { font-size: 12px; color: var(--text-3); }
.e-drawer-head h2 { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; margin-top: 2px; font-size: 20px; }
.e-drawer-head .m { margin-top: 2px; font-size: 13px; color: var(--text-2); }
.e-drawer-body { flex: 1; overflow-y: auto; padding: 0 20px 24px; }
.e-dsec { padding: 18px 0; border-bottom: 1px solid var(--border); }
.e-dsec:last-child { border-bottom: 0; }
.e-dsec > h3 { display: flex; align-items: center; justify-content: space-between; gap: 8px; margin-bottom: 12px; font-size: 13px; font-weight: 500; color: var(--text-3); }
.e-dsec .e-kv { margin-top: 0; }
.e-dsec .e-fields { margin-top: 12px; gap: 12px; }
.e-dsec .e-bal .v { font-size: 22px; }
.e-mini-list { list-style: none; margin: 0; padding: 0; border-top: 1px solid var(--border); }
.e-mini-list li { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 10px 0; border-bottom: 1px solid var(--border); font-size: 14px; }
.e-mini-list .w { font-size: 12px; color: var(--text-3); }
body.e-lock { overflow: hidden; }

/* トップページ内容 */
.e-heropv { position: relative; overflow: hidden; padding: 24px; border: 1px solid var(--border); border-radius: var(--r-md); background: var(--bg); }
.e-heropv .hero-dots { width: 60%; }
.e-heropv-in { position: relative; }
.e-heropv .t { font-size: 40px; font-weight: 900; line-height: 1.15; letter-spacing: -0.01em; }
.e-heropv .l { margin-top: 10px; font-size: 15px; font-weight: 500; }
.e-heropv .s { margin-top: 2px; font-size: 13px; color: var(--text-2); }
.e-pvlabel { display: flex; align-items: center; gap: 8px; margin-bottom: 8px; font-size: 12px; color: var(--text-3); }
.e-noticepv { display: grid; gap: 8px; }
.e-noticepv .notice { border: 1px solid var(--border); border-radius: var(--r-sm); }
.e-noticepv .notice .container { padding-left: 12px; padding-right: 12px; }
.e-noticepv .notice .full, .e-noticepv .notice .short { display: inline !important; }
.e-noticepv.is-hidden .notice { opacity: 0.4; }
.e-noticepv .e-off-note { display: none; font-size: 12px; color: var(--e-danger); }
.e-noticepv.is-hidden .e-off-note { display: block; }
.e-handle { display: inline-flex; align-items: center; gap: 4px; color: var(--text-3); cursor: grab; }
.e-handle .no { font-family: var(--font-display); font-size: 13px; font-weight: 600; color: var(--text); font-variant-numeric: tabular-nums; }
.e-logo-cell { display: inline-flex; align-items: center; gap: 8px; font-size: 13px; color: var(--text-2); white-space: nowrap; }
.e-logo-thumb { display: inline-grid; place-items: center; width: 56px; height: 28px; border: 1px dashed var(--border-strong); border-radius: 6px; font-size: 10px; color: var(--text-3); }
.e-table .e-select { height: 40px; min-width: 128px; font-size: 13px; }
.e-logopv .logo-wall > span { height: 64px; font-size: 16px; }
.e-logopv-row + .e-logopv-row { margin-top: 12px; }

/* ============ ≥768px ============ */
@media (min-width: 768px) {
  .e-head { flex-direction: row; align-items: flex-end; justify-content: space-between; }
  .e-head h1 { font-size: 30px; }
  .e-panel { padding: 24px; }
  .e-next { flex-direction: row; align-items: center; justify-content: space-between; gap: 20px; }
  .e-next .btn { flex-shrink: 0; }
  .e-evr { grid-template-columns: 40px minmax(0, 1fr) auto; align-items: center; }
  .e-evr-act { grid-column: auto; }
  .e-prog li { font-size: 12px; }
  .e-invites { grid-auto-flow: row; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 16px; margin: 0; padding: 0; overflow: visible; }
  .e-qr { width: 196px; height: 196px; }
  .e-empty { grid-template-columns: 280px minmax(0, 1fr); gap: 24px; padding: 20px; }
  .e-set-form { grid-template-columns: minmax(0, 1fr) auto; align-items: end; }
  .e-set-form .e-saved { grid-column: 1 / -1; }
  .e-set-form .btn { margin-bottom: 25px; }
  .e-consent { grid-template-columns: 36px minmax(0, 1fr) auto; align-items: center; }
  .e-consent-s { grid-column: auto; flex-direction: column; align-items: flex-end; gap: 4px; }
  /* 票面横版：副券在右，虚线竖向，缺口在上下 */
  .e-pass { grid-template-columns: minmax(0, 1fr) 0 272px; }
  .e-pass-main { border-radius: 19px 0 0 19px; }
  .e-pass-body { padding: 22px 24px 20px; }
  .e-pass h2 { font-size: 30px; }
  .e-pass-cut { width: 0; height: auto; margin: var(--cutm) 0; border-top: 0; border-left: 2px dashed var(--border-strong); }
  .e-pass-cut::before { top: calc(-1 * var(--cutm) - var(--notch) / 2 - 0.5px); left: calc(var(--notch) / -2 - 1px); clip-path: inset(calc(50% - 1px) 0 0 0); }
  .e-pass-cut::after { top: auto; bottom: calc(-1 * var(--cutm) - var(--notch) / 2 - 0.5px); right: auto; left: calc(var(--notch) / -2 - 1px); clip-path: inset(0 0 calc(50% - 1px) 0); }
  .e-pass-stub { padding: 20px; }
  /* 后台 */
  .e-atop-link { display: inline-flex; }
  .e-act-t { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; }
  .e-op .r { display: block; }
  .e-ahead { flex-direction: row; align-items: flex-end; justify-content: space-between; }
  .e-ahead h1 { font-size: 28px; }
  .e-search { flex: 1 1 180px; }
  .e-toolbar .e-select { flex: 0 0 auto; }
  .e-row2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .e-row3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .e-rcards { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .e-fs { padding: 24px; }
  .e-tt-head { display: grid; grid-template-columns: 200px minmax(0, 1fr) 180px 44px; gap: 8px; padding-bottom: 8px; border-bottom: 1px solid var(--border); font-size: 12px; color: var(--text-3); }
  .e-tt-row { grid-template-columns: 200px minmax(0, 1fr) 180px 44px; padding: 8px 0; border-bottom: 0; }
  .e-tt-row .c-when, .e-tt-row .c-what, .e-tt-row .c-who, .e-tt-row .c-del { grid-column: auto; grid-row: auto; }
  .e-savebar { flex-direction: row; align-items: center; justify-content: space-between; gap: 16px; }
  .e-savebar-btns .btn { flex: none; }
  .e-heropv { padding: 32px; }
  .e-heropv .t { font-size: 56px; }
}

/* ============ ≥1100px ============ */
@media (min-width: 1100px) {
  .e-member-grid { grid-template-columns: 216px minmax(0, 1fr); gap: 48px; }
  .e-side { position: sticky; top: 88px; align-self: start; margin: 0; padding: 32px 0 0; border-bottom: 0; background: none; -webkit-backdrop-filter: none; backdrop-filter: none; }
  .e-side-user { display: flex; align-items: center; gap: 12px; padding: 0 12px 16px; margin-bottom: 8px; border-bottom: 1px solid var(--border); }
  .e-side-user .n { font-size: 14px; font-weight: 500; }
  .e-side-user .l { margin-top: 4px; }
  .e-subnav { display: flex; flex-direction: column; gap: 2px; }
  .e-subnav a { justify-content: flex-start; gap: 10px; height: 44px; margin: 0; padding: 0 12px; border: 0; border-radius: var(--r-sm); }
  .e-subnav a:hover { background: var(--surface-2); }
  .e-subnav a.is-active { color: var(--accent); background: var(--e-accent-soft); }
  .e-subnav a .icon-sm { color: var(--text-3); }
  .e-subnav a.is-active .icon-sm { color: var(--accent); }
  .e-side-foot { display: block; margin-top: 16px; padding-top: 8px; border-top: 1px solid var(--border); }
  .e-side-foot a { display: flex; align-items: center; gap: 10px; height: 44px; padding: 0 12px; border-radius: var(--r-sm); font-size: 14px; color: var(--text-2); transition: background-color 150ms var(--ease-std), color 150ms var(--ease-std); }
  .e-side-foot a:hover { background: var(--surface-2); color: var(--text); }
  .e-member-main { padding-top: 32px; }
  .e-head { margin-bottom: 24px; }
  .e-head h1 { font-size: 32px; }
  .e-member .stat .v { font-size: 36px; }
  /* 成长地图横向 */
  .e-map { grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 12px; }
  .e-lv { padding: 30px 0 18px; }
  .e-lv::before { left: 22px; right: -8px; top: 7px; bottom: auto; width: auto; height: 2px; background: repeating-linear-gradient(to right, var(--border-strong) 0 4px, transparent 4px 8px); }
  .e-lv.is-current::before { background: repeating-linear-gradient(to right, var(--text) 0 4px, transparent 4px 8px); }
  .e-lv-dot { top: 0; }
  .e-lv.is-current .e-lv-body { margin: -10px -10px 0; padding: 10px 10px 12px; }
  .e-dash { grid-template-columns: minmax(0, 1.45fr) minmax(0, 1fr); }
  .e-tk-wrap { grid-template-columns: minmax(0, 1fr) 320px; gap: 24px; align-items: start; }
  /* 后台：左侧栏 + 主区 */
  .e-abody { grid-template-columns: 232px minmax(0, 1fr); }
  .e-aside { top: 60px; display: flex; flex-direction: column; align-self: start; height: calc(100vh - 60px); padding: 16px 12px; border-bottom: 0; border-right: 1px solid var(--border); background: var(--bg-soft); -webkit-backdrop-filter: none; backdrop-filter: none; }
  .e-aside-k { display: block; padding: 8px 12px 6px; font-size: 12px; color: var(--text-3); }
  .e-anav { flex-direction: column; gap: 2px; padding: 0; overflow: visible; }
  .e-anav a { height: 44px; margin: 0; padding: 0 12px; border: 0; border-radius: var(--r-sm); }
  .e-anav a:hover { background: rgba(9, 9, 9, 0.04); }
  .e-anav a.is-active { background: var(--surface); box-shadow: inset 0 0 0 1px var(--border); }
  .e-aside-foot { display: block; margin-top: auto; padding: 12px; border-top: 1px solid var(--border); font-size: 12px; line-height: 1.6; color: var(--text-3); }
  .e-amain { padding: 28px 40px 40px; }
  .e-savebar { margin: 24px -40px -40px; padding: 14px 40px; }
  .e-edit { grid-template-columns: minmax(0, 1fr) 320px; gap: 24px; align-items: start; }
  .e-edit-side { position: sticky; top: 84px; }
  .e-mlayout { grid-template-columns: 216px minmax(0, 1fr); gap: 20px; align-items: start; }
  .e-ftoggle { display: none; }
  .e-fpanel { display: block; position: sticky; top: 84px; padding: 0 14px; }
}

/* YC「My Applications」右栏の做法：締切の残り日数 + いつまでに出せばいつ結果が来るか、を一続きで書く */
.e-deadline { margin-top: 16px; padding: 14px 16px; border: 1px solid var(--border); border-radius: var(--r-md); background: var(--bg-soft); }
.e-deadline .countdown { margin-bottom: 6px; }
.e-deadline p:not(.countdown) { font-size: 13px; color: var(--text-2); }

/* ============================================================
   イベント管理（admin-event.html）：结构照 Luma 主办方的活动管理页
   活动名下 6 个标签、快捷卡、活动页缩略预览、缺项提醒、状态卡 + 弹窗、群发、系统消息
   ============================================================ */
.e-mhead { display: flex; flex-direction: column; gap: 14px; }
.e-mhead-l { display: flex; align-items: flex-start; gap: 14px; min-width: 0; }
.e-mhead-ic { display: grid; place-items: center; width: 48px; height: 48px; flex-shrink: 0; border-radius: 12px; background: var(--tone-soft); color: var(--tone); }
.e-mhead-ic .icon-sm { width: 22px; height: 22px; }
.e-mhead h1 { margin-top: 6px; font-size: 24px; letter-spacing: -0.01em; }
.e-mhead-meta { margin-top: 4px; font-size: 13px; color: var(--text-2); }
.e-mtabs { display: flex; gap: 4px; margin: 16px calc(var(--gutter) * -1) 20px; padding: 0 var(--gutter); overflow-x: auto; scrollbar-width: none; border-bottom: 1px solid var(--border); }
.e-mtabs::-webkit-scrollbar { display: none; }
.e-mtabs a { display: inline-flex; flex-shrink: 0; align-items: center; height: 44px; margin-bottom: -1px; padding: 0 10px; border-bottom: 2px solid transparent; font-size: 15px; color: var(--text-2); white-space: nowrap; transition: color 150ms var(--ease-std); }
.e-mtabs a:hover { color: var(--text); }
.e-mtabs a[aria-selected="true"] { color: var(--text); font-weight: 500; border-bottom-color: var(--text); }
.e-mtabs a:focus-visible { outline: 2px solid var(--accent); outline-offset: -4px; border-radius: 8px; }
.e-tabpanel { display: grid; gap: 16px; min-width: 0; }
.e-mic { display: grid; place-items: center; width: 40px; height: 40px; flex-shrink: 0; border-radius: 10px; background: var(--tone-soft, var(--surface-2)); color: var(--tone, var(--text-2)); }
.e-mic.sm { width: 36px; height: 36px; border-radius: 9px; }
.e-mic .icon-sm { width: 18px; height: 18px; }
.e-h2 { display: flex; align-items: center; font-size: 17px; }
.e-count2 { display: inline-grid; place-items: center; min-width: 22px; height: 22px; margin-left: 8px; padding: 0 6px; border-radius: var(--r-pill); background: var(--surface-2); font-family: var(--font-display); font-size: 12px; font-weight: 600; color: var(--text-2); font-variant-numeric: tabular-nums; }
.e-msec { min-width: 0; padding: 20px; border: 1px solid var(--border); border-radius: var(--r-md); background: var(--surface); }
.e-p { max-width: 760px; margin: 6px 0 14px; font-size: 14px; color: var(--text-2); }

/* 快捷卡（Luma：邀请参加者／发送广播／分享活动） */
.e-qa-grid { display: grid; grid-template-columns: minmax(0, 1fr); gap: 10px; }
.e-qa { display: flex; align-items: center; gap: 12px; min-height: 64px; padding: 12px 14px; border: 1px solid var(--border); border-radius: var(--r-md); background: var(--surface); font-family: var(--font-body); text-align: left; color: var(--text); cursor: pointer; transition: border-color 150ms var(--ease-std), background-color 150ms var(--ease-std); }
.e-qa:hover { border-color: var(--border-hover); background: var(--bg-soft); }
.e-qa.is-static { cursor: default; }
.e-qa.is-static:hover { border-color: var(--border); background: var(--surface); }
.e-qa .tx { display: flex; flex: 1; flex-direction: column; min-width: 0; }
.e-qa .t { font-size: 15px; font-weight: 500; }
.e-qa .s { font-size: 12px; line-height: 1.5; color: var(--text-3); }

/* 概要：左边活动页缩略预览，右边日時と会場 + 缺项提醒 */
.e-ov { display: grid; grid-template-columns: minmax(0, 1fr); gap: 20px; padding: 20px; border: 1px solid var(--border); border-radius: var(--r-lg); background: var(--surface); }
.e-ovpv { min-width: 0; }
.e-ovpv-card { overflow: hidden; border: 1px solid var(--border); border-radius: var(--r-md); background: var(--bg); }
.e-ovpv-cover { position: relative; height: 88px; background-color: var(--tone-soft); background-image: radial-gradient(color-mix(in srgb, var(--tone) 34%, transparent) 1.3px, transparent 1.5px); background-size: 14px 14px; }
.e-ovpv-cover span { position: absolute; left: 14px; bottom: 8px; font-size: 20px; font-weight: 700; color: var(--tone); }
.e-ovpv-body { display: grid; gap: 8px; padding: 14px 16px 16px; }
.e-ovpv-body .t { font-size: 18px; font-weight: 700; }
.e-ovpv-body .r { display: flex; align-items: center; gap: 8px; font-size: 13px; color: var(--text-2); }
.e-ovpv-body .r .icon-sm { color: var(--text-3); }
.e-ovpv-reg { display: grid; gap: 6px; margin-top: 4px; padding: 12px; border-radius: var(--r-sm); background: var(--bg-soft); }
.e-ovpv-reg .k { display: flex; align-items: center; gap: 6px; font-size: 13px; font-weight: 700; }
.e-ovpv-reg .d { font-size: 12px; color: var(--text-2); }
.e-ovpv-reg .btn { cursor: default; }
.e-sharelink { display: flex; align-items: center; justify-content: space-between; gap: 8px; margin-top: 10px; padding: 0 0 0 14px; border: 1px solid var(--border); border-radius: var(--r-sm); background: var(--bg-soft); }
.e-sharelink .u { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 13px; color: var(--text-2); }
.e-sharelink .e-act { flex-shrink: 0; background: var(--surface); }
.e-ovinfo { display: flex; flex-direction: column; gap: 14px; min-width: 0; }
.e-when { display: flex; align-items: center; gap: 12px; }
.e-when .t { font-size: 15px; font-weight: 500; }
.e-when .d { font-size: 13px; color: var(--text-2); }
.e-warn-t { color: var(--text-3); font-weight: 500; }
.e-warns { list-style: none; margin: 0; padding: 0; display: grid; gap: 8px; }
.e-warns li { display: grid; grid-template-columns: 36px minmax(0, 1fr) auto; align-items: center; gap: 12px; padding: 10px 10px 10px 12px; border: 1px solid var(--border); border-radius: var(--r-md); background: var(--surface); }
.e-wic { display: grid; place-items: center; width: 36px; height: 36px; border-radius: 9px; background: var(--surface-2); color: var(--text-2); }
.e-warns .t { font-size: 14px; font-weight: 500; color: var(--text); }
.e-warns .d { font-size: 13px; color: var(--text-2); }
.e-warns .e-act { background: var(--surface); }
.e-ovbtns { display: flex; flex-wrap: wrap; gap: 8px; margin-top: auto; padding-top: 4px; }
.e-ovbtns .btn, .e-mhead .btn { gap: 6px; }

/* 参加者 */
.e-capnote { display: flex; align-items: flex-start; gap: 8px; font-size: 13px; color: var(--text-2); }
.e-capnote .icon-sm { margin-top: 3px; color: var(--text-3); }
.e-rvs { list-style: none; margin: 0; padding: 0; border-top: 1px solid var(--border); }
.e-rv { display: grid; grid-template-columns: minmax(0, 1fr); gap: 10px; padding: 14px 0; border-bottom: 1px solid var(--border); }
.e-rv:last-child { border-bottom: 0; padding-bottom: 0; }
.e-rv-who { display: flex; align-items: center; gap: 10px; min-width: 0; }
.e-rv-who .n { font-size: 15px; font-weight: 500; }
.e-rv-who .m { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 8px; margin-top: 2px; font-size: 12px; color: var(--text-3); }
.e-rv-ans { min-width: 0; }
.e-rv-ans .k { font-size: 11px; color: var(--text-3); }
.e-rv-ans p + p { font-size: 14px; }
.e-rv-btns { display: flex; flex-wrap: wrap; gap: 8px; }
.e-rv-btns .btn { gap: 6px; }
.e-rv.is-declined .e-rv-who, .e-rv.is-declined .e-rv-ans { opacity: 0.5; }

/* 申込設定：三张状态卡（点开弹窗改） */
.e-scards { display: grid; grid-template-columns: minmax(0, 1fr); gap: 10px; }
.e-scard { display: flex; align-items: center; gap: 12px; min-height: 72px; padding: 12px 14px; border: 1px solid var(--border); border-radius: var(--r-md); background: var(--surface); font-family: var(--font-body); text-align: left; color: var(--text); cursor: pointer; transition: border-color 150ms var(--ease-std), background-color 150ms var(--ease-std); }
.e-scard:hover { border-color: var(--border-hover); background: var(--bg-soft); }
.e-scard .tx { display: flex; flex: 1; flex-direction: column; min-width: 0; }
.e-scard .t { font-size: 15px; font-weight: 500; }
.e-scard .v { font-size: 13px; color: var(--text-2); }
.e-scard .ed { color: var(--text-3); }
.e-qcards { display: grid; grid-template-columns: minmax(0, 1fr); gap: 10px; }
.e-qcard { display: flex; flex-direction: column; gap: 10px; padding: 14px; border: 1px solid var(--border); border-radius: var(--r-md); }
.e-qcard .h { display: flex; align-items: center; gap: 10px; }
.e-qcard .t { font-size: 15px; font-weight: 500; }
.e-qcard .e-select { width: 100%; }
.e-sub-k { margin: 18px 0 8px; }
.e-cqs { list-style: none; margin: 0; padding: 0; display: grid; gap: 8px; }
.e-cq { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 8px 8px 8px 16px; border: 1px solid var(--border); border-radius: var(--r-md); }
.e-cq .t { font-size: 15px; font-weight: 500; }
.e-cq .d { font-size: 12px; color: var(--text-3); }
.e-mails { list-style: none; margin: 0; padding: 0; border-top: 1px solid var(--border); }
.e-mailrow { display: grid; grid-template-columns: 36px minmax(0, 1fr); align-items: center; gap: 8px 12px; padding: 14px 0; border-bottom: 1px solid var(--border); }
.e-mailrow:last-child { border-bottom: 0; padding-bottom: 0; }
.e-mailrow .tx { min-width: 0; }
.e-mailrow .t { font-size: 15px; font-weight: 500; }
.e-mailrow .d { font-size: 13px; color: var(--text-2); }
.e-mailrow .e-act { grid-column: 2; justify-self: start; }

/* お知らせ配信 */
.e-compose { display: grid; gap: 14px; padding: 20px; border: 1px solid var(--border); border-radius: var(--r-md); background: var(--surface); }
.e-compose .e-fields { margin-top: 0; }
.e-recips { display: flex; flex-wrap: wrap; gap: 8px; }
.e-rcheck { display: inline-flex; align-items: center; gap: 8px; min-height: 44px; padding: 0 14px; border: 1px solid var(--border-strong); border-radius: var(--r-pill); font-size: 14px; cursor: pointer; transition: border-color 150ms var(--ease-std), background-color 150ms var(--ease-std); }
.e-rcheck input { width: 16px; height: 16px; margin: 0; accent-color: var(--accent); cursor: pointer; }
.e-rcheck:has(input:checked) { border-color: var(--accent); background: var(--e-accent-soft); }
.e-rcheck .n { font-size: 12px; color: var(--text-3); }
.e-compose-btns { display: flex; justify-content: flex-end; }
.e-compose-btns .btn { gap: 6px; }
.e-autos { list-style: none; margin: 0; padding: 0; border-top: 1px solid var(--border); }
.e-autos li { display: grid; grid-template-columns: 36px minmax(0, 1fr) auto; align-items: center; gap: 8px 12px; padding: 14px 0; border-bottom: 1px solid var(--border); }
.e-autos li:last-child { border-bottom: 0; padding-bottom: 0; }
.e-autos .tx { min-width: 0; }
.e-autos .t { font-size: 15px; font-weight: 500; }
.e-autos .d { font-size: 13px; color: var(--text-2); }
.e-autos .e-act { grid-column: 2 / -1; justify-self: start; }

/* 分析 */
.e-ins { display: grid; grid-template-columns: minmax(0, 1fr); gap: 16px; }
.e-ins .mini-ui { min-height: 0; padding: 0; border: 0; }
.e-srcs { list-style: none; margin: 0; padding: 0; border-top: 1px solid var(--border); }
.e-srcs li { display: flex; justify-content: space-between; gap: 12px; padding: 10px 0; border-bottom: 1px solid var(--border); font-size: 14px; }
.e-srcs .n { color: var(--text-2); font-variant-numeric: tabular-nums; }
.e-ins-fb .e-empty { margin-top: 4px; }

/* その他 */
.e-urlrow { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; }
.e-urlrow .pre { display: inline-flex; align-items: center; height: 44px; padding: 0 12px; border: 1px solid var(--border-strong); border-radius: var(--r-sm); background: var(--bg-soft); font-size: 14px; color: var(--text-2); white-space: nowrap; }
.e-urlrow .input { flex: 1 1 160px; max-width: 280px; }

/* 弹窗（Luma 的人数上限、签到弹窗：左上图标、标题、说明、字段、按钮） */
.e-modal { position: fixed; inset: 0; z-index: 90; display: grid; place-items: center; padding: 16px; }
.e-modal-bg { position: absolute; inset: 0; background: rgba(9, 9, 9, 0.32); }
.e-modal-box { position: relative; display: grid; gap: 12px; width: min(460px, 100%); max-height: calc(100vh - 32px); overflow-y: auto; padding: 24px; border: 1px solid var(--border); border-radius: var(--r-lg); background: var(--surface); }
.e-modal-box h2 { margin-top: 2px; font-size: 20px; }
.e-modal-d { font-size: 14px; color: var(--text-2); }
.e-modal-body { display: grid; gap: 14px; }
.e-modal-btns { display: flex; gap: 8px; margin-top: 6px; }
.e-modal-btns .btn { flex: 1; }
.e-modal-x { position: absolute; top: 12px; right: 12px; }
.e-modrow { display: flex; align-items: center; justify-content: space-between; gap: 12px; min-height: 48px; font-size: 14px; }
.e-modrow + .e-modrow { padding-top: 6px; border-top: 1px solid var(--border); }
.e-rcards.e-rcards-1 { grid-template-columns: minmax(0, 1fr); }
.e-ways { display: grid; gap: 10px; }
.e-way { display: grid; grid-template-columns: 24px minmax(0, 1fr); gap: 8px; padding: 14px; border: 1px solid var(--border); border-radius: var(--r-md); }
.e-way .no { font-weight: 600; color: var(--accent); }
.e-way .t { font-size: 15px; font-weight: 500; }
.e-way .d { margin: 4px 0 10px; font-size: 13px; color: var(--text-2); }
.e-way .btn { gap: 6px; }
.e-codein { display: flex; gap: 8px; margin-bottom: 8px; }
.e-codein .input { flex: 1; min-width: 0; letter-spacing: 0.08em; }
.e-mailpv { max-height: 200px; overflow-y: auto; padding: 14px; border-radius: var(--r-sm); background: var(--bg-soft); font-size: 14px; white-space: pre-wrap; }

/* 操作提示（Sonner 的做法：底部居中一条，过一会儿自己消失） */
.e-toast { position: fixed; left: 50%; bottom: 24px; z-index: 100; max-width: calc(100% - 32px); padding: 12px 16px; border-radius: var(--r-md); background: var(--text); color: var(--bg); font-size: 14px; transform: translateX(-50%); }

@media (min-width: 768px) {
  .e-mhead { flex-direction: row; align-items: flex-end; justify-content: space-between; }
  .e-mhead h1 { font-size: 30px; }
  .e-qa-grid, .e-scards, .e-qcards { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .e-mailrow { grid-template-columns: 36px minmax(0, 1fr) auto; }
  .e-mailrow .e-act { grid-column: auto; }
  .e-autos li { grid-template-columns: 36px minmax(0, 1fr) auto auto; }
  .e-autos .e-act { grid-column: auto; }
  .e-msec, .e-compose { padding: 24px; }
  .e-tabpanel .e-danger .e-set-h, .e-tabpanel .e-danger .e-set-row { padding-left: 24px; padding-right: 24px; }
}
@media (min-width: 1100px) {
  .e-mtabs { margin: 18px 0 24px; padding: 0; }
  .e-ov { grid-template-columns: 380px minmax(0, 1fr); gap: 32px; padding: 24px; }
  .e-rv { grid-template-columns: minmax(0, 1.1fr) minmax(0, 1fr) 170px 230px; align-items: center; gap: 16px; }
  .e-rv-act { justify-self: end; }
  .e-ins { grid-template-columns: minmax(0, 1.4fr) minmax(0, 1fr); }
}

/* 09-24 空状态只有一句说明和链接时（原来左栏放灰块小界面）：一栏排开 */
.e-empty.e-empty-text { grid-template-columns: minmax(0, 1fr); }

/* ---------- ホーム（看板）：上面「今日やること」，下面 8 个数字（docs/后台方案-v1.md 第 2 节） ---------- */
.e-dsh { margin-top: 24px; }
.e-dsh .e-h2 { gap: 8px; margin-bottom: 12px; }
.e-dsh .e-note { margin-top: 10px; }
.e-todos { list-style: none; margin: 0; padding: 0; border: 1px solid var(--border); border-radius: var(--r-md); background: var(--surface); overflow: hidden; }
.e-todos li + li { border-top: 1px solid var(--border); }
.e-todo { display: flex; align-items: center; gap: 14px; min-height: 64px; padding: 12px 12px 12px 16px; transition: background-color 150ms var(--ease-std); }
.e-todo:hover { background: var(--e-row-hover); }
.e-todo .tx { display: grid; gap: 2px; flex: 1; min-width: 0; }
.e-todo .t { font-size: 15px; font-weight: 500; }
.e-todo .d { font-size: 13px; color: var(--text-2); }
.e-todo .n { flex-shrink: 0; font-size: 22px; font-weight: 600; font-variant-numeric: tabular-nums; }
.e-todo .n .e-u { margin-left: 2px; font-family: var(--font-body); font-size: 12px; font-weight: 500; color: var(--text-2); }
.e-todo > .icon-sm { flex-shrink: 0; color: var(--text-3); }
.e-todo.is-alert .e-mic { background: var(--e-danger-soft); color: var(--e-danger); }
.e-todo.is-alert .n, .e-todo.is-alert .n .placeholder { color: var(--e-danger); }
/* 8 个数字：1px 线分格（间隙露出底色当分隔线），手机两列、宽屏四列 */
.e-kpis { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1px; border: 1px solid var(--border); border-radius: var(--r-md); background: var(--border); overflow: hidden; }
.e-kpi { display: flex; flex-direction: column; gap: 4px; min-width: 0; padding: 16px; background: var(--surface); transition: background-color 150ms var(--ease-std); }
.e-kpi:hover { background: var(--e-row-hover); }
.e-kpi .h { display: grid; gap: 2px; }
.e-kpi .t { font-size: 13px; font-weight: 500; }
.e-kpi .p { font-size: 11px; color: var(--text-3); }
.e-kpi .v { margin-top: 6px; font-size: 28px; font-weight: 600; line-height: 1.15; letter-spacing: -0.01em; font-variant-numeric: tabular-nums; }
.e-kpi .v .e-u { margin: 0 2px; font-family: var(--font-body); font-size: 13px; font-weight: 500; color: var(--text-2); letter-spacing: 0; }
.e-kpi .s { font-size: 13px; color: var(--text-2); font-variant-numeric: tabular-nums; }
.e-kpi .d { margin-top: auto; padding-top: 8px; font-size: 12px; line-height: 1.6; color: var(--text-3); }
.e-kpi.is-alert .v, .e-kpi.is-alert .v .placeholder { color: var(--e-danger); }
@media (min-width: 1100px) { .e-kpis { grid-template-columns: repeat(4, minmax(0, 1fr)); } }

/* ---------- 応募・問い合わせ（来件收件箱） ---------- */
.e-type { font-size: 13px; white-space: nowrap; }
.e-muted { color: var(--text-3); }
.e-due { display: inline-flex; align-items: center; gap: 6px; font-size: 13px; color: var(--text-2); white-space: nowrap; }
.e-due.over { color: var(--e-danger); font-weight: 500; }
.e-due.over::before { content: ""; flex-shrink: 0; width: 6px; height: 6px; border-radius: 50%; background: var(--e-danger); }
@media (max-width: 767px) { .e-due { align-items: flex-start; white-space: normal; } .e-due.over::before { margin-top: 0.6em; } }
.e-ap-new .status-dot { background: var(--text); }
.e-ap-doing .status-dot { background: transparent; box-shadow: inset 0 0 0 1.5px var(--text-2); }
.e-ap-ok .status-dot { background: var(--brand-green); }
.e-ap-no { color: var(--text-3); border-color: var(--border); }
/* 详情里的状态进度：做过的一段深灰，当前一段黑 */
.e-steps { display: flex; gap: 4px; list-style: none; margin: 0 0 8px; padding: 0; }
.e-steps li { flex: 1; min-width: 0; padding-top: 12px; border-top: 4px solid var(--border); font-size: 12px; color: var(--text-3); }
.e-steps li.is-done { border-top-color: var(--text-3); }
.e-steps li.is-current { border-top-color: var(--text); color: var(--text); font-weight: 500; }
/* 应募回答：问题在上、回答在下（问题长，放不进左栏） */
.e-kv.is-stack > div { grid-template-columns: minmax(0, 1fr); gap: 4px; }
[data-e-appdrawer][data-type="batch"] [data-ap-for="other"], [data-e-appdrawer][data-type="other"] [data-ap-for="batch"] { display: none; }
/* 表格筛完没有结果：一句说明 + 解除按钮 */
.e-noresult .t { font-size: 15px; font-weight: 500; color: var(--text); }
.e-noresult .btn { margin-top: 12px; }
/* 还没有数据的图：写明将来显示什么 */
.e-phbox { display: grid; place-items: center; min-height: 160px; padding: 20px; border: 1px dashed var(--border-strong); border-radius: var(--r-md); font-size: 13px; line-height: 1.7; color: var(--text-3); text-align: center; }

/* ---------- 接数据库的后台页（web/app/admin、admin-inbox）补充 ---------- */
.e-anav .e-nav-n { display: inline-grid; place-items: center; min-width: 20px; height: 20px; margin-left: auto; padding: 0 6px; border-radius: 10px; background: var(--text); color: var(--bg); font-size: 11px; font-weight: 600; font-variant-numeric: tabular-nums; }
.e-flip { display: inline-flex; transform: rotate(180deg); }
.e-dsub { margin: 16px 0 0; font-size: 12px; font-weight: 500; color: var(--text-3); }
.e-kv.is-stack { margin-top: 6px; }
.e-pre { white-space: pre-wrap; overflow-wrap: anywhere; }
.e-inline-form { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 4px 12px; margin-top: 14px; padding-top: 12px; border-top: 1px dashed var(--border); }
.e-inline-form .e-help { margin: 0; }
.e-msgs { list-style: none; margin: 16px 0 0; padding: 0; border-top: 1px solid var(--border); }
.e-msgs li { border-bottom: 1px solid var(--border); }
.e-msgs summary { display: grid; gap: 2px; padding: 10px 0; cursor: pointer; list-style: none; }
.e-msgs summary::-webkit-details-marker { display: none; }
.e-msgs .t { font-size: 14px; font-weight: 500; }
.e-msgs .w { font-size: 12px; color: var(--text-3); }
.e-msgs .b { margin: 0 0 12px; padding: 12px; border-radius: var(--r-sm); background: var(--surface-2); font-size: 13px; white-space: pre-wrap; overflow-wrap: anywhere; }
/* 还没接上数据的数字和待办：灰掉、不能点，写明什么时候接上 */
.e-kpi.is-pending, .e-kpi.is-static { cursor: default; }
.e-kpi.is-pending:hover, .e-kpi.is-static:hover, .e-todo.is-pending:hover { background: var(--surface); }
.e-kpi.is-pending .v { color: var(--text-3); }
.e-todo.is-pending { cursor: default; }
.e-todo.is-pending .t { color: var(--text-2); }
.e-todo.is-pending .n { font-size: 13px; font-weight: 400; color: var(--text-3); }

/* ---------- 设定页「プロフィール」（应募时每位成员都要填完）：和原来的「ニックネーム」一样的排法，
   几个输入框排成一栏，保存按钮在右下；缺哪几项用一行字写在下面 ---------- */
.e-pf-fields { display: grid; gap: 16px; min-width: 0; }
.e-set-form .e-pf-state { grid-column: 1 / -1; }
.e-set-row .d b { color: var(--text); font-weight: 600; }
/* 从邀请或「プロフィールを完成させる」跳到 #profile 时，标题不要被顶部固定的导航挡住 */
.e-set { scroll-margin-top: 136px; }

/* 表格还没有任何数据：图标 + 一句说明（+ 按钮），默认显示；有行时 JS 藏起来 */
.e-nodata { display: grid; justify-items: center; gap: 4px; padding: 40px 16px 44px; text-align: center; }
.e-nodata[hidden] { display: none; }
.e-nodata .e-mic { margin-bottom: 8px; }
.e-nodata .t { font-size: 15px; font-weight: 500; color: var(--text); }
.e-nodata .d { max-width: 420px; font-size: 13px; color: var(--text-2); }
.e-nodata .btn { gap: 6px; margin-top: 12px; }
@media (max-width: 767px) {
  .e-nodata { border: 1px solid var(--border); border-radius: var(--r-md); background: var(--surface); }
}

/* 会員を追加：入力エラー */
.e-err { margin-top: 4px; font-size: 13px; font-weight: 500; color: var(--e-danger); }
.e-err[hidden] { display: none; }
.e-admin .input[aria-invalid="true"] { border-color: var(--e-danger); }

/* ---------- 管理者（admin-staff.html） ---------- */
.e-tablebox-menu { overflow: visible; }
.e-tablebox-menu .e-tfoot { border-radius: 0 0 var(--r-md) var(--r-md); }
.e-you { display: inline-flex; align-items: center; height: 20px; margin-left: 6px; padding: 0 8px; border-radius: var(--r-pill); background: var(--surface-2); font-size: 11px; font-weight: 500; color: var(--text-2); vertical-align: middle; }
.e-role { font-size: 13px; }
.e-status.is-wait { color: var(--text-2); }
.e-status.is-wait::before { background: transparent; box-shadow: inset 0 0 0 1.5px var(--text-3); }
.e-roles { margin-top: 16px; }
.e-roles .e-kv dt { font-weight: 500; color: var(--text); }
.e-roles + .e-note { margin-top: 12px; }
/* 行の操作メニュー */
.e-menu-wrap { position: relative; display: inline-block; }
.e-menu { position: absolute; right: 0; top: calc(100% + 4px); z-index: 30; display: grid; width: 260px; padding: 6px; border: 1px solid var(--border); border-radius: var(--r-md); background: var(--surface); box-shadow: 0 8px 24px rgba(9, 9, 9, 0.12); }
.e-menu[hidden] { display: none; }
.e-menu button { display: flex; align-items: center; min-height: 40px; padding: 0 10px; border: 0; border-radius: var(--r-sm); background: none; font-family: var(--font-body); font-size: 14px; color: var(--text); text-align: left; cursor: pointer; }
.e-menu button:hover:not(:disabled) { background: var(--surface-2); }
.e-menu button:disabled { color: var(--text-3); cursor: not-allowed; }
.e-menu button.is-danger { color: var(--e-danger); }
.e-menu-note { margin: 4px 0 2px; padding: 8px 10px 4px; border-top: 1px solid var(--border); font-size: 12px; line-height: 1.6; color: var(--text-3); white-space: normal; }
@media (max-width: 767px) { .e-menu { right: auto; left: 0; } }

/* ---------- 拠点（admin-spots / admin-spot-edit） ---------- */
.e-checks { display: flex; flex-wrap: wrap; gap: 4px 16px; }
.e-hours { display: grid; border-top: 1px solid var(--border); }
.e-hour-row { display: grid; grid-template-columns: 64px auto minmax(0, 1fr) auto minmax(0, 1fr); align-items: center; gap: 10px; padding: 8px 0; border-bottom: 1px solid var(--border); }
.e-hour-row .d { font-size: 14px; font-weight: 500; }
.e-hour-row .sep { color: var(--text-3); }
@media (max-width: 560px) {
  .e-hour-row { grid-template-columns: 1fr auto; }
  .e-hour-row .input { grid-column: 1 / -1; }
  .e-hour-row .sep { display: none; }
}
.e-regflow { display: grid; grid-template-columns: minmax(0, 1fr); gap: 8px; list-style: none; margin: 0; padding: 0; counter-reset: eregflow; }
.e-regflow li { display: grid; gap: 2px; padding: 12px 14px 12px 44px; position: relative; border: 1px solid var(--border); border-radius: var(--r-md); background: var(--bg-soft); counter-increment: eregflow; }
.e-regflow li::before { content: counter(eregflow); position: absolute; left: 14px; top: 12px; font-family: var(--font-display); font-weight: 600; color: var(--text-3); }
.e-regflow b { font-size: 14px; font-weight: 500; }
.e-regflow span { font-size: 12px; color: var(--text-2); }
@media (min-width: 768px) { .e-regflow { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
.e-btnrow { display: flex; flex-wrap: wrap; gap: 8px; }
.e-btnrow .btn { gap: 6px; }
.e-upslots { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; margin-top: 16px; }
@media (min-width: 900px) { .e-upslots { grid-template-columns: repeat(4, minmax(0, 1fr)); } }
.e-upslot { display: grid; place-items: center; align-content: center; gap: 6px; min-height: 112px; padding: 12px; border: 1px dashed var(--border-strong); border-radius: var(--r-md); background: var(--bg-soft); font-family: var(--font-body); font-size: 13px; color: var(--text-2); cursor: pointer; transition: border-color 150ms var(--ease-std), background-color 150ms var(--ease-std); }
.e-upslot:hover { border-color: var(--border-hover); background: var(--surface); }
.e-private { display: inline-flex; align-items: center; gap: 4px; height: 22px; margin-left: 8px; padding: 0 8px; border-radius: var(--r-pill); background: var(--surface-2); font-size: 11px; font-weight: 500; color: var(--text-2); vertical-align: middle; }
.e-private .icon-sm { width: 12px; height: 12px; }
.e-fs-private { background: var(--bg-soft); }
.e-pv-spot { margin: 0; }
.e-pv-spot .d-tags:empty { display: none; }
.e-admin .e-pv-spot { grid-template-columns: minmax(0, 1fr) 76px; }
.e-admin .e-pv-spot .d-spot-photo { width: 76px; height: 76px; }
.e-admin .e-pv-spot .d-spot-dl { grid-auto-flow: row; gap: 4px; }

/* f.css */

/* ============================================================
   D2 组（原 F 组）：ブログ・記事・FAQ・お問い合わせ・法務（pages/f_content.py）。09-24 v4 统一
   依据 docs/网站统一-v4-执行契约.md；首屏、编号区块、页尾用 lib.py 的 v4 组件，样式在 css/v2.css。
   main 带 .v2，首页的通用规则直接生效（链接下划线渐变、主按钮悬停渐变、卡片 4px 圆角、分类标签黑框）；这里只写本组的部件。
   颜色：只用黑白灰和品牌渐变（--echo-grad）。选中、当前位置、进度一律用渐变或黑色，不再用紫色 --accent 和事业代表色。
   表单的错误提示保留红色（--f-danger）：这是功能色，不是装饰
   ============================================================ */
.f-page { --f-danger: #C4312B; }
.f-page [hidden] { display: none !important; }
.f-page :focus-visible { outline: 2px solid var(--text); outline-offset: 2px; }

/* ---------- 本组共用的小件 ---------- */
.f-meta { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 10px; margin: 0; font-size: 13px; color: var(--text-3); }
/* 分类标签：黑色细框（首页活动卡的分类标签同款） */
.f-cat { display: inline-flex; align-items: center; height: 22px; padding: 0 9px; border: 1px solid var(--text); border-radius: var(--r-pill); font-size: 11px; font-weight: 600; line-height: 1; color: var(--text); white-space: nowrap; }
.f-sample { display: inline-flex; align-items: center; height: 22px; padding: 0 8px; border: 1px dashed var(--border-strong); border-radius: var(--r-pill); font-size: 11px; font-weight: 500; line-height: 1; color: var(--text-3); white-space: nowrap; }
.f-date { font-family: var(--mono); font-size: 12px; font-variant-numeric: tabular-nums; }
.f-by { display: inline-flex; align-items: center; font-size: 13px; color: var(--text-2); }
.f-go { display: inline-flex; align-items: center; gap: 6px; font-size: 14px; font-weight: 600; color: var(--text); }
.f-go svg { transition: transform 250ms var(--ease-std); }
.f-stretch::after { content: ""; position: absolute; inset: 0; z-index: 2; border-radius: inherit; }
.f-empty { padding: 32px 0; color: var(--text-3); font-size: 14px; }
.f-note { margin-top: 10px; font-size: 13px; color: var(--text-3); }
.f-chev { transition: transform 200ms var(--ease-std); }
.f-side-k, .f-toc-k { margin-bottom: 10px; font-family: var(--mono); font-size: 11px; font-weight: 600; letter-spacing: 0.08em; text-transform: uppercase; color: var(--text-3); }
/* 标题悬停时变成品牌渐变（首页「事業一覧」的做法）：平时黑字，指到整条时字变渐变 */
.f-hg { background-image: var(--echo-grad); background-size: 160% 100%; background-position: 100% 50%; -webkit-background-clip: text; background-clip: text; color: var(--text); transition: color 250ms var(--ease-std); }
a:hover > .f-hg, a:hover .f-arch-text > .f-hg, .f-hg:has(> a:hover), .bento-item:hover .f-hg { color: transparent; }
a:hover .f-go svg, .bento-item:hover .f-go svg { transform: translateX(4px); }

/* 横向条带：手机上放不下就横着滑（两端贴屏幕边），桌面上一行排开 */
.f-strip { display: flex; overflow-x: auto; scrollbar-width: none; margin: 0 calc(var(--gutter) * -1); padding: 0 var(--gutter); }
.f-strip::-webkit-scrollbar { display: none; }

/* 首屏里的附加内容（按钮行放的是署名和搜索框，不是按钮）；H1 里的站名不在中间断行 */
.f-page .v2-phero .actions > .f-byline, .f-page .v2-phero .actions > .f-search { flex: 1 1 100%; }
.f-nw { white-space: nowrap; }
/* 点按区域扩到 44px 以上、不改排版：区块标题右边的链接、侧栏链接、同意框里的链接（伪元素上下各伸出 10px） */
.f-page .v2-head .link, .f-page .f-help .link, .f-page .f-side-faq > .link, .f-page .f-agree .link, .f-page .f-rtoc-note .link { position: relative; }
.f-page .v2-head .link::after, .f-page .f-help .link::after, .f-page .f-side-faq > .link::after, .f-page .f-agree .link::after, .f-page .f-rtoc-note .link::after { content: ""; position: absolute; left: 0; right: 0; top: -10px; bottom: -10px; }

/* ================================================================== ブログ */
/* 分类筛选：选中的一项下面一条渐变线（首页会员步骤「当前」的做法） */
.f-tabs { gap: 2px; margin-bottom: 28px; border-bottom: 1px solid var(--border); }
.f-tab { position: relative; flex-shrink: 0; display: inline-flex; align-items: center; gap: 8px; height: 48px; padding: 0 14px; border: 0; background: none; font-family: var(--font-body); font-size: 15px; font-weight: 500; color: var(--text-2); cursor: pointer; white-space: nowrap; transition: color 150ms var(--ease-std); }
.f-tab:first-child { padding-left: 0; }
.f-tab .n { font-family: var(--mono); font-size: 11px; color: var(--text-3); font-variant-numeric: tabular-nums; }
.f-tab::after { content: ""; position: absolute; left: 14px; right: 14px; bottom: -1px; height: 2px; background: transparent; }
.f-tab:first-child::after { left: 0; }
.f-tab:hover, .f-tab[aria-pressed="true"] { color: var(--text); }
.f-tab[aria-pressed="true"] { font-weight: 700; }
.f-tab[aria-pressed="true"] .n { color: var(--text); }
.f-tab[aria-pressed="true"]::after { background: var(--echo-grad); }

/* 置顶：大卡（募集要点）+ 两张小卡，白底细框。大卡原来的照片有人物，09-24 删掉，只留文字 */
.f-pinned { margin-bottom: 40px; }
.bento-item.f-feat { padding: 0; }
.f-feat-body { display: flex; flex-direction: column; justify-content: center; gap: 12px; height: 100%; padding: 22px; }
.f-feat h3 { font-size: 22px; line-height: 1.45; }
.f-feat-body > p:not(.f-meta) { font-size: 15px; color: var(--text-2); }
.f-pick { font-family: var(--mono); font-size: 11px; font-weight: 600; letter-spacing: 0.1em; text-transform: uppercase; color: var(--text); }
.f-feat-facts { display: flex; flex-wrap: wrap; gap: 12px 28px; margin: 2px 0 0; padding: 14px 0; border-top: 1px solid var(--text); border-bottom: 1px solid var(--border); }
.f-feat-facts dt { font-size: 12px; color: var(--text-3); }
.f-feat-facts dd { margin: 2px 0 0; font-size: 15px; font-weight: 600; white-space: nowrap; font-variant-numeric: tabular-nums; }
.f-feat-foot { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-top: 6px; }
.bento-item.f-pin { gap: 12px; }
.f-pin h3 { font-size: 17px; line-height: 1.5; }
.f-pin .f-pin-sum { display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; }
.f-pin .f-pin-go { margin-top: auto; padding-top: 2px; }

/* 一覧：纯文字条目，上面一条黑线、条目之间细线（首页「事例」「できること」的做法） */
.f-grid { display: grid; grid-template-columns: minmax(0, 1fr); border-top: 1px solid var(--text); }
.f-card { position: relative; display: flex; flex-direction: column; gap: 8px; padding: 20px 0 22px; border-bottom: 1px solid var(--border); color: var(--text); }
.f-card h3 { font-size: 18px; line-height: 1.5; }
.f-card-sum { display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; font-size: 14px; color: var(--text-2); }
.f-card > .f-by { margin-top: auto; padding-top: 4px; }

/* 過去の記事：按月分组，每组上面一条黑线；左边日期、右边标题 */
.f-arch { display: grid; grid-template-columns: minmax(0, 1fr); gap: 40px; }
.f-arch-group + .f-arch-group { margin-top: 36px; }
.f-arch-date { display: flex; align-items: baseline; gap: 12px; margin: 0; padding-bottom: 10px; border-bottom: 1px solid var(--text); font-size: 15px; }
.f-arch-date b { font-weight: 700; }
.f-arch-n { font-family: var(--mono); font-size: 11px; color: var(--text-3); }
.f-arch-item { display: grid; grid-template-columns: minmax(0, 1fr); gap: 4px; padding: 16px 0 18px; border-bottom: 1px solid var(--border); color: var(--text); }
.f-arch-time { font-family: var(--mono); font-size: 12px; font-variant-numeric: tabular-nums; }
.f-arch-text { min-width: 0; }
.f-arch-item h3 { font-size: 17px; line-height: 1.5; }
.f-arch-sum { margin-top: 4px; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; font-size: 14px; color: var(--text-2); }
.f-arch-item .f-meta { margin-top: 10px; }
.f-side-card { display: flex; flex-direction: column; gap: 12px; padding: 22px; }
.f-side-ico { display: grid; place-items: center; width: 48px; height: 48px; border-radius: 50%; border: 1px solid var(--border); }
.f-side-ico img { width: 24px; }
.f-side-card h3 { font-size: 18px; }
.f-side-card > p { font-size: 14px; color: var(--text-2); }
.f-side-cats { list-style: none; margin: 4px 0; padding: 0; border-top: 1px solid var(--text); }
.f-side-cats button { display: flex; align-items: center; gap: 10px; width: 100%; min-height: 44px; padding: 0 2px; border: 0; border-bottom: 1px solid var(--border); background: none; font-family: var(--font-body); font-size: 14px; color: var(--text); text-align: left; cursor: pointer; }
.f-side-cats button:hover { font-weight: 700; }
.f-side-cats .n { margin-left: auto; font-family: var(--mono); font-size: 11px; color: var(--text-3); font-variant-numeric: tabular-nums; }
.f-side-note { font-size: 12px; color: var(--text-3); }

/* ================================================================== 記事 */
/* 阅读进度：顶端一条渐变细线 */
.f-progress { position: fixed; left: 0; right: 0; top: 0; z-index: 50; height: 2px; pointer-events: none; }
.f-progress span { display: block; height: 100%; background: var(--echo-grad); transform-origin: 0 50%; transform: scaleX(var(--p, 0)); }
/* 首屏：记事标题比栏目页的 H1 长，字号小一档；面包屑在等宽小字一行里，点按区域扩到 44px */
.f-postp .v2-ph1 { max-width: 19em; font-size: 30px; line-height: 1.3; }
.f-crumb { display: inline-flex; flex-wrap: wrap; align-items: center; gap: 0 8px; }
.f-crumb a { display: inline-flex; align-items: center; padding: 14px 0; margin: -14px 0; color: var(--text-2); }
.f-crumb a:hover { color: var(--text); }
.f-byline { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 12px; margin-top: 4px; padding-top: 16px; border-top: 1px solid var(--border); }
.f-by-t { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 12px; }
.f-acts { display: flex; align-items: center; gap: 6px; }
.f-act { display: inline-flex; align-items: center; justify-content: center; gap: 6px; height: 44px; padding: 0 16px; border-radius: var(--r-pill); border: 1px solid var(--border-strong); background: var(--surface); color: var(--text); font-family: var(--font-body); font-size: 13px; font-weight: 500; cursor: pointer; transition: background-color 150ms var(--ease-std), border-color 150ms var(--ease-std); }
.f-act:hover { border-color: var(--text); }
.f-act-i { width: 44px; padding: 0; }
.f-act.is-done, .f-sbtn.is-done { border-color: var(--text); background: var(--text); color: var(--bg); }
/* 正文 + 右侧目次（保留原版式）。正文左边和首屏标题对齐 */
.f-art-layout { display: grid; grid-template-columns: minmax(0, 1fr); gap: 40px; padding: 32px 0 64px; }
.f-art { min-width: 0; max-width: 720px; }
/* 手机：正文前的目次（桌面改为右侧钉住） */
.f-toc-m { border-top: 1px solid var(--text); border-bottom: 1px solid var(--border); }
.f-toc-m summary { list-style: none; display: flex; align-items: center; justify-content: space-between; min-height: 48px; font-size: 14px; font-weight: 700; cursor: pointer; }
.f-toc-m summary::-webkit-details-marker { display: none; }
.f-toc-m[open] .f-chev { transform: rotate(180deg); }
.f-toc-m ol { list-style: none; margin: 0; padding: 0 0 6px; counter-reset: toc; }
.f-toc-m li { counter-increment: toc; }
.f-toc-m a { display: flex; align-items: center; gap: 12px; min-height: 44px; border-top: 1px solid var(--border); font-size: 14px; color: var(--text-2); }
.f-toc-m a::before { content: counter(toc, decimal-leading-zero); font-family: var(--mono); font-size: 11px; font-weight: 600; color: var(--text-3); }
/* 正文：宽 720px 以内，行高放宽；小标题前的编号用等宽字 */
.f-prose { margin-top: 32px; font-size: 16px; line-height: 1.95; }
.f-prose > * + * { margin-top: 18px; }
.f-prose > h2 { margin-top: 56px; padding-top: 16px; border-top: 1px solid var(--text); }
.f-prose h2 { display: flex; align-items: baseline; gap: 14px; font-size: 22px; line-height: 1.45; }
.f-h-no, .f-sn { font-family: var(--mono); font-size: 12px; font-weight: 600; letter-spacing: 0.04em; color: var(--text-3); }
.f-first { font-size: 17px; }
.f-kv { margin: 0; border-top: 1px solid var(--border); }
.f-kv > div { display: grid; grid-template-columns: minmax(0, 1fr); gap: 2px; padding: 12px 0; border-bottom: 1px solid var(--border); }
.f-kv dt { font-size: 13px; color: var(--text-3); }
.f-kv dd { margin: 0; font-size: 16px; font-weight: 500; line-height: 1.7; }
.f-ul { margin: 0; padding-left: 1.3em; }
.f-ul li + li { margin-top: 6px; }
.f-supports { list-style: none; margin: 0; padding: 0; border-top: 1px solid var(--border); }
.f-supports li { display: grid; grid-template-columns: 36px minmax(0, 1fr); gap: 10px; padding: 18px 0; border-bottom: 1px solid var(--border); }
.f-sn { line-height: 2.3; }
.f-supports h3 { font-size: 17px; line-height: 1.6; }
.f-supports p { margin-top: 4px; font-size: 15px; line-height: 1.85; color: var(--text-2); }
.f-prose > .f-quote { margin-top: 32px; }
.f-quote { margin: 0; padding: 4px 0 4px 20px; border-left: 2px solid var(--text); }
.f-quote p { font-size: 19px; font-weight: 700; line-height: 1.7; }
.f-quote .f-quote-sub { margin-top: 10px; font-size: 15px; font-weight: 400; color: var(--text-2); }
.f-quote cite { display: block; margin-top: 10px; font-size: 13px; font-style: normal; color: var(--text-3); }
.f-apply { display: flex; flex-direction: column; align-items: flex-start; gap: 16px; padding: 20px; border: 1px solid var(--text); border-radius: 4px; }
.f-apply-k { font-size: 12px; color: var(--text-2); }
.f-apply-v { font-size: 20px; font-weight: 600; line-height: 1.4; }
.f-apply .countdown { margin-top: 6px; }
/* 文末：分享、前后文章 */
.f-share { margin-top: 48px; padding-top: 20px; border-top: 1px solid var(--border); }
.f-share-k { margin-bottom: 10px; font-size: 13px; color: var(--text-3); }
.f-share-row { display: flex; flex-wrap: wrap; gap: 8px; }
.f-sbtn { position: relative; display: inline-flex; align-items: center; gap: 8px; height: 44px; padding: 0 16px; border-radius: var(--r-pill); border: 1px solid var(--border-strong); background: var(--surface); color: var(--text); font-family: var(--font-body); font-size: 14px; font-weight: 500; cursor: pointer; transition: border-color 150ms var(--ease-std); }
.f-sbtn:hover { border-color: var(--text); }
.f-share-i .f-sbtn { width: 44px; padding: 0; justify-content: center; }
.f-share-i .f-sbtn span { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
.f-pn { display: grid; grid-template-columns: minmax(0, 1fr); gap: 12px; margin-top: 32px; }
.f-pn-a { display: flex; flex-direction: column; gap: 6px; padding: 16px 18px; }
.f-pn-a .k { display: inline-flex; align-items: center; gap: 6px; font-size: 12px; color: var(--text-3); }
.f-pn-a .t { font-size: 15px; font-weight: 500; line-height: 1.5; }
.f-pn-next { align-items: flex-end; text-align: right; }
/* 右侧钉住：目次（当前项前面一个渐变圆点）、分享、募集の告知 */
.f-art-side { display: none; }
.f-toc ol { list-style: none; margin: 0; padding: 0; border-top: 1px solid var(--text); }
.f-toc a { position: relative; display: block; padding: 7px 0 7px 18px; font-size: 14px; line-height: 1.5; color: var(--text-3); transition: color 150ms var(--ease-std); }
.f-toc a::before { content: ""; position: absolute; left: 2px; top: 16px; width: 6px; height: 6px; border-radius: 50%; background: var(--echo-grad); opacity: 0; transition: opacity 150ms var(--ease-std); }
.f-toc a:hover { color: var(--text); }
.f-toc a.is-current { color: var(--text); font-weight: 700; }
.f-toc a.is-current::before { opacity: 1; }
.f-side-share .f-share-row { gap: 6px; }
.f-promo { display: flex; flex-direction: column; align-items: flex-start; gap: 8px; padding: 18px; border: 1px solid var(--text); border-radius: 4px; }
.f-promo h3 { font-size: 16px; }
.f-promo p { font-size: 13px; color: var(--text-2); }
.f-promo .btn { margin-top: 6px; }
/* 黑底块：拠点での受け取り方（首页「参加の流れ」同款的三步） */
.f-steps { display: grid; grid-template-columns: minmax(0, 1fr); margin: 0; padding: 0; border-top: 1px solid var(--text); }
.f-steps li { display: grid; align-content: start; grid-template-columns: 46px minmax(0, 1fr); gap: 2px 8px; padding: 14px 0; border-bottom: 1px solid var(--border); list-style: none; }
.f-steps .n { grid-row: 1 / 3; padding-top: 4px; font-family: var(--mono); font-size: 11px; color: var(--text-3); }
.f-steps b { font-size: 15px; }
.f-steps span:not(.n) { font-size: 13px; color: var(--text-2); }
.f-token-go { margin-top: 28px; }

/* ================================================================== FAQ */
/* 搜索框放在首屏（胶囊形，和按钮一致） */
.f-search { position: relative; max-width: 560px; }
.f-search > svg { position: absolute; left: 17px; top: 16px; color: var(--text-3); pointer-events: none; }
.f-search-in { width: 100%; height: 48px; padding: 0 18px 0 44px; border: 1px solid var(--text); border-radius: var(--r-pill); background: var(--surface); color: var(--text); font-family: var(--font-body); font-size: 15px; -webkit-appearance: none; appearance: none; }
.f-search-in::placeholder { color: var(--text-3); }
.f-search-in:focus { outline: none; box-shadow: 0 0 0 3px rgba(9, 9, 9, 0.12); }
.f-search-n { margin-top: 10px; font-size: 13px; color: var(--text-2); }
.f-faq-wrap { padding-bottom: 72px; }
.f-faq { display: grid; grid-template-columns: minmax(0, 1fr); gap: 32px; }
.f-faq-main { min-width: 0; }
.f-faq-side { display: none; }
/* 编号区块嵌在右栏里：去掉区块自己的版心边距，区块之间细线分隔 */
.f-faq-main > .v2-sec, .f-legal-main > .v2-sec { padding: 48px 0 8px; }
.f-faq-main > .v2-sec > .container, .f-legal-main > .v2-sec > .container { max-width: none; padding: 0; }
.f-faq-main > .v2-sec:first-child, .f-legal-main > .v2-sec:first-child { border-top: 0; padding-top: 36px; }
.f-faq-main .v2-head, .f-legal-main .v2-head { margin-bottom: 20px; }
.f-faq-main .v2-head h2, .f-legal-main .v2-head h2 { font-size: 26px; }
/* 问答：和首页「よくある質問」同款（一行问题、右侧圆形加号，展开后转成叉） */
.f-acc { max-width: 880px; border-top: 1px solid var(--text); word-break: auto-phrase; }
.f-qa { border-bottom: 1px solid var(--border); }
.f-qa > summary { display: flex; align-items: center; justify-content: space-between; gap: 16px; min-height: 64px; padding: 14px 0; font-size: 16px; font-weight: 500; line-height: 1.6; cursor: pointer; list-style: none; }
.f-qa > summary::-webkit-details-marker { display: none; }
.f-qa-icon { display: inline-flex; align-items: center; justify-content: center; width: 32px; height: 32px; flex-shrink: 0; border: 1px solid var(--border); border-radius: 50%; transition: transform 150ms var(--ease-std), border-color 150ms var(--ease-std); }
.f-qa > summary:hover .f-qa-icon { border-color: var(--text); }
.f-qa[open] .f-qa-icon { transform: rotate(45deg); }
.f-at { max-width: 720px; padding: 0 48px 20px 0; font-size: 15px; line-height: 1.85; color: var(--text-2); }
.f-at p + p, .f-at p + ul, .f-at ul + p { margin-top: 8px; }
.f-at ul { margin: 6px 0 0; padding-left: 1.2em; }
.f-at li + li { margin-top: 4px; }
.f-faq-empty { display: flex; flex-direction: column; align-items: flex-start; gap: 16px; padding: 48px 0; color: var(--text-2); }
/* 左侧分类导航：等宽编号 + 名称 + 件数，当前项左边一条渐变竖线 */
.f-side-nav { display: flex; flex-direction: column; border-top: 1px solid var(--text); }
.f-side-link { position: relative; display: grid; grid-template-columns: 30px minmax(0, 1fr) auto; align-items: center; gap: 8px; min-height: 44px; padding: 0 2px; border-bottom: 1px solid var(--border); font-size: 14px; color: var(--text-2); transition: color 150ms var(--ease-std); }
.f-side-link .n, .f-side-link .c { font-family: var(--mono); font-size: 11px; color: var(--text-3); font-variant-numeric: tabular-nums; }
.f-side-link:hover { color: var(--text); }
.f-side-link.is-current { color: var(--text); font-weight: 700; }
.f-side-link.is-current .n { color: var(--text); }
.f-side-link.is-current::before { content: ""; position: absolute; left: -14px; top: 12px; bottom: 12px; width: 2px; background: var(--echo-grad); }
.f-help { display: flex; flex-direction: column; align-items: flex-start; gap: 6px; margin-top: 24px; font-size: 13px; color: var(--text-2); }
.f-help-t { font-size: 14px; font-weight: 700; color: var(--text); }

/* ================================================================== お問い合わせ（表单结构不动，只换页头和步骤编号） */
.f-contact-sec { padding: 40px 0 72px; }
.f-contact { display: grid; grid-template-columns: minmax(0, 1fr); gap: 40px; }
.f-contact-main { min-width: 0; }
.f-form { display: flex; flex-direction: column; gap: 44px; }
.f-req-note { display: flex; align-items: center; gap: 6px; font-size: 13px; color: var(--text-2); }
/* 步骤标题：等宽「01/04」（首页区块编号同款）+ 标题 */
.f-step-h { display: flex; flex-wrap: wrap; align-items: baseline; gap: 4px 16px; padding-top: 14px; border-top: 1px solid var(--text); font-size: 22px; line-height: 1.4; }
.f-step-no { font-family: var(--mono); font-size: 12px; font-weight: 600; letter-spacing: 0.06em; color: var(--text); }
.f-step-no span { font-weight: 400; color: var(--text-3); }
.f-step-d { margin: 6px 0 18px; font-size: 14px; color: var(--text-2); }
.f-step-h + .f-grid2, .f-step-h + .f-field { margin-top: 18px; }
/* 种别的卡片单选：选中时黑框、图标黑底 */
.f-types-fs { min-width: 0; margin: 0; padding: 0; border: 0; }
.f-types { display: grid; grid-template-columns: minmax(0, 1fr); gap: 10px; }
.f-type { position: relative; display: grid; grid-template-columns: 40px minmax(0, 1fr) 20px; column-gap: 14px; align-items: center; min-height: 72px; padding: 14px 16px; border: 1px solid var(--border-strong); border-radius: 4px; background: var(--surface); cursor: pointer; transition: border-color 150ms var(--ease-std), box-shadow 150ms var(--ease-std); }
.f-type input { position: absolute; width: 1px; height: 1px; opacity: 0; pointer-events: none; }
.f-type:hover { border-color: var(--text-3); }
.f-type-i { grid-row: 1 / span 2; display: grid; place-items: center; width: 40px; height: 40px; border-radius: 50%; border: 1px solid var(--border); color: var(--text-2); transition: background-color 150ms var(--ease-std), color 150ms var(--ease-std); }
.f-type-t { font-size: 15px; font-weight: 700; line-height: 1.4; }
.f-type-d { grid-column: 2; font-size: 13px; line-height: 1.5; color: var(--text-2); }
.f-radio { grid-column: 3; grid-row: 1 / span 2; width: 20px; height: 20px; border-radius: 50%; border: 1.5px solid var(--border-strong); background: var(--surface); transition: border 150ms var(--ease-std); }
.f-type.is-on { border-color: var(--text); box-shadow: inset 0 0 0 1px var(--text); }
.f-type.is-on .f-type-i { border-color: var(--text); background: var(--text); color: var(--bg); }
.f-type.is-on .f-radio { border: 6px solid var(--text); }
.f-type:has(input:focus-visible) { outline: 2px solid var(--text); outline-offset: 2px; }
/* 字段：两栏 */
.f-grid2 { display: grid; grid-template-columns: minmax(0, 1fr); gap: 18px; }
.f-field { display: flex; flex-direction: column; gap: 8px; min-width: 0; margin: 0; padding: 0; border: 0; }
.f-field > label, .f-field > legend { display: flex; align-items: center; gap: 8px; padding: 0; font-size: 14px; font-weight: 500; }
.f-field > legend { margin-bottom: 8px; }
.f-req, .f-opt { display: inline-flex; align-items: center; height: 20px; padding: 0 6px; border-radius: 4px; font-size: 11px; font-weight: 700; line-height: 1; white-space: nowrap; }
.f-req { background: var(--text); color: var(--bg); }
.f-opt { border: 1px solid var(--border-strong); color: var(--text-3); font-weight: 500; }
.f-form .input { width: 100%; border-radius: 4px; }
.f-form .input::placeholder { color: var(--text-3); }
.f-form .input:focus { outline: none; border-color: var(--text); box-shadow: 0 0 0 3px rgba(9, 9, 9, 0.12); }
.f-select { position: relative; }
.f-select select { padding-right: 40px; -webkit-appearance: none; appearance: none; cursor: pointer; }
.f-select .f-chev { position: absolute; right: 14px; top: 50%; margin-top: -8px; color: var(--text-3); pointer-events: none; }
.f-textarea { height: auto; min-height: 168px; padding: 12px 14px; line-height: 1.7; resize: vertical; }
.f-under { display: flex; justify-content: space-between; gap: 12px; }
.f-counter { margin-left: auto; font-family: var(--mono); font-size: 12px; color: var(--text-3); font-variant-numeric: tabular-nums; white-space: nowrap; }
.f-counter.is-near { color: var(--f-danger); }
.f-hint { font-size: 12px; line-height: 1.6; color: var(--text-3); }
.f-err { font-size: 13px; line-height: 1.5; color: var(--f-danger); }
.f-field.is-invalid .input, .f-field.is-invalid .f-chk, .f-field.is-invalid .f-box { border-color: var(--f-danger); }
.f-pills { display: flex; flex-wrap: wrap; gap: 8px; }
.f-chk { position: relative; display: inline-flex; align-items: center; gap: 6px; min-height: 44px; padding: 0 16px 0 12px; border: 1px solid var(--border-strong); border-radius: var(--r-pill); background: var(--surface); font-size: 14px; cursor: pointer; transition: background-color 150ms var(--ease-std), border-color 150ms var(--ease-std), color 150ms var(--ease-std); }
.f-chk input { position: absolute; width: 1px; height: 1px; opacity: 0; pointer-events: none; }
.f-chk svg { color: var(--border-strong); }
.f-chk:hover { border-color: var(--text-3); }
.f-chk.is-on { border-color: var(--text); background: var(--text); color: var(--bg); }
.f-chk.is-on svg { color: var(--bg); }
.f-chk:has(input:focus-visible) { outline: 2px solid var(--text); outline-offset: 2px; }
.f-none { padding: 14px 16px; border: 1px dashed var(--border-strong); border-radius: 4px; font-size: 14px; color: var(--text-2); }
.f-field > .f-agree { position: relative; align-items: flex-start; gap: 12px; min-height: 44px; padding: 10px 0; font-size: 15px; font-weight: 400; cursor: pointer; }
.f-agree input { position: absolute; width: 1px; height: 1px; opacity: 0; }
.f-agree .f-req { margin-left: 8px; vertical-align: 2px; }
.f-box { display: grid; place-items: center; width: 22px; height: 22px; margin-top: 1px; border-radius: 4px; border: 1.5px solid var(--border-strong); background: var(--surface); color: transparent; flex-shrink: 0; transition: background-color 150ms var(--ease-std), border-color 150ms var(--ease-std); }
.f-agree.is-on .f-box { border-color: var(--text); background: var(--text); color: var(--bg); }
.f-agree:has(input:focus-visible) .f-box { outline: 2px solid var(--text); outline-offset: 2px; }
.f-submit { display: flex; flex-direction: column; align-items: flex-start; gap: 10px; margin-top: 12px; }
.f-submit .btn { min-width: 220px; }
.f-err-sum { font-weight: 500; }
/* 送信完了 */
.f-done { display: flex; flex-direction: column; align-items: flex-start; gap: 14px; }
.f-done:focus { outline: none; }
.f-done-i { display: grid; place-items: center; width: 56px; height: 56px; border-radius: 50%; border: 1px solid var(--text); color: var(--text); }
.f-done-i svg { width: 28px; height: 28px; }
.f-done h2 { font-size: 28px; }
.f-done > p { color: var(--text-2); }
.f-receipt { width: 100%; margin: 6px 0 4px; border-top: 1px solid var(--text); }
.f-receipt > div { display: grid; grid-template-columns: 104px minmax(0, 1fr); gap: 12px; padding: 12px 0; border-bottom: 1px solid var(--border); font-size: 15px; }
.f-receipt dt { font-size: 13px; line-height: 1.9; color: var(--text-3); }
.f-receipt dd { margin: 0; overflow-wrap: anywhere; }
.f-done-acts { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 8px; }
/* 右侧摘要：选了哪种、多久回复、必填填了几项（进度条用渐变） */
.f-contact-side .f-side-sticky { display: flex; flex-direction: column; gap: 28px; }
.f-sum { padding: 20px; border: 1px solid var(--text); border-radius: 4px; background: var(--surface); }
.f-sum h2 { font-size: 20px; }
.f-sum-type { margin-top: 6px; font-size: 15px; font-weight: 500; }
.f-sum-dl { margin: 16px 0 0; border-top: 1px solid var(--border); }
.f-sum-dl > div { display: flex; justify-content: space-between; gap: 12px; padding: 12px 0; border-bottom: 1px solid var(--border); font-size: 14px; }
.f-sum-dl dt { color: var(--text-3); white-space: nowrap; }
.f-sum-dl dd { margin: 0; text-align: right; font-variant-numeric: tabular-nums; }
.f-meter { height: 4px; margin-top: 14px; border-radius: var(--r-pill); background: var(--surface-2); overflow: hidden; }
.f-meter span { display: block; width: 0; height: 100%; border-radius: inherit; background: var(--echo-grad); transition: width 200ms var(--ease-std); }
.f-sum-note { margin-top: 12px; font-size: 12px; color: var(--text-3); }
.f-side-faq ul { list-style: none; margin: 0 0 12px; padding: 0; border-top: 1px solid var(--text); }
.f-side-faq li a { display: flex; align-items: center; justify-content: space-between; gap: 12px; min-height: 48px; padding: 10px 0; border-bottom: 1px solid var(--border); font-size: 14px; line-height: 1.5; }
.f-side-faq li a:hover { font-weight: 700; }
.f-side-faq li svg { color: var(--text-3); flex-shrink: 0; }
.f-side-info { display: flex; flex-direction: column; gap: 12px; font-size: 13px; color: var(--text-2); }
.f-side-info b { display: block; font-size: 12px; font-weight: 500; color: var(--text-3); }

/* ================================================================== 法務（条文全部保留；三份文件各是一个编号区块） */
.f-l-long { display: none; }
.f-legal-wrap { padding-bottom: 72px; }
.f-legal { display: grid; grid-template-columns: minmax(0, 1fr); gap: 32px; }
.f-legal-main { min-width: 0; }
.f-doc { max-width: 800px; }
.f-doc-toc { margin: 0 0 8px; border-top: 1px solid var(--text); border-bottom: 1px solid var(--border); }
.f-doc-toc summary { list-style: none; display: flex; align-items: center; justify-content: space-between; min-height: 48px; font-size: 14px; font-weight: 700; cursor: pointer; }
.f-doc-toc summary::-webkit-details-marker { display: none; }
.f-doc-toc[open] .f-chev { transform: rotate(180deg); }
.f-doc-toc ol { list-style: none; margin: 0; padding: 0 0 8px; }
.f-doc-toc a { display: flex; align-items: center; gap: 10px; min-height: 44px; border-top: 1px solid var(--border); font-size: 14px; color: var(--text-2); }
.f-doc-toc .n, .f-rtoc .n { min-width: 48px; font-family: var(--mono); font-size: 11px; color: var(--text-3); }
.f-toc-num .n { min-width: 24px; }
.f-art-sec { padding: 20px 0; border-bottom: 1px solid var(--border); }
.f-art-sec:last-child { border-bottom: 0; }
.f-art-sec h3 { display: flex; align-items: baseline; gap: 12px; margin-bottom: 8px; font-size: 16px; line-height: 1.6; }
.f-art-no { font-family: var(--mono); font-size: 12px; font-weight: 600; color: var(--text-3); white-space: nowrap; }
.f-art-sec p, .f-art-sec li { font-size: 15px; line-height: 1.9; color: var(--text-2); }
.f-art-sec b { color: var(--text); }
.f-art-sec ul { margin: 0; padding-left: 1.2em; }
.f-art-sec li + li { margin-top: 4px; }
.f-art-sec p + p, .f-art-sec p + .f-table-wrap, .f-table-wrap + p { margin-top: 12px; }
/* 纯平表格：只有横向细线，没有外框和底色 */
.f-table { width: 100%; border-collapse: collapse; font-size: 14px; }
.f-table th, .f-table td { padding: 12px 16px 12px 0; border-bottom: 1px solid var(--border); text-align: left; vertical-align: top; line-height: 1.7; }
.f-table thead th { font-size: 12px; font-weight: 500; color: var(--text-3); border-bottom-color: var(--border-strong); }
.f-table td { color: var(--text-2); }
.f-kv-table { border-top: 1px solid var(--text); }
.f-kv-table th { width: 36%; font-size: 14px; font-weight: 500; color: var(--text-2); }
.f-kv-table td { color: var(--text); }
.f-legal-side { display: none; }
.f-rtoc-doc + .f-rtoc-doc { margin-top: 4px; }
.f-rtoc-h { display: flex; align-items: center; min-height: 36px; font-size: 14px; font-weight: 700; color: var(--text-3); transition: color 150ms var(--ease-std); }
.f-rtoc-h:hover, .f-rtoc-doc.is-open .f-rtoc-h { color: var(--text); }
.f-rtoc ol { display: none; list-style: none; margin: 2px 0 10px; padding: 0; }
.f-rtoc-doc.is-open ol { display: block; }
.f-rtoc ol a { position: relative; display: flex; gap: 6px; padding: 4px 0 4px 16px; font-size: 13px; line-height: 1.55; color: var(--text-3); transition: color 150ms var(--ease-std); }
.f-rtoc ol a::before { content: ""; position: absolute; left: 1px; top: 11px; width: 6px; height: 6px; border-radius: 50%; background: var(--echo-grad); opacity: 0; transition: opacity 150ms var(--ease-std); }
.f-rtoc ol a:hover { color: var(--text); }
.f-rtoc ol a.is-current { color: var(--text); font-weight: 700; }
.f-rtoc ol a.is-current::before { opacity: 1; }
.f-rtoc .n { min-width: 42px; }
.f-rtoc .f-toc-num .n { min-width: 22px; }
.f-rtoc-note { margin-top: 20px; font-size: 13px; color: var(--text-3); }

/* ================================================================== 手机：表格拆成上下排列 */
@media (max-width: 767px) {
  .f-qa > summary { font-size: 15px; }
  .f-at { padding-right: 8px; }
  .f-table-wrap thead { display: none; }
  .f-table-wrap tr { display: block; padding: 10px 0; border-bottom: 1px solid var(--border); }
  .f-table-wrap td { display: grid; grid-template-columns: 112px minmax(0, 1fr); gap: 10px; padding: 4px 0; border: 0; }
  .f-table-wrap td::before { content: attr(data-label); font-size: 12px; line-height: 1.9; color: var(--text-3); }
  .f-kv-table tr { display: block; padding: 12px 0; border-bottom: 1px solid var(--border); }
  .f-kv-table th, .f-kv-table td { display: block; width: auto; padding: 0; border: 0; }
  .f-kv-table th { margin-bottom: 2px; font-size: 12px; color: var(--text-3); }
}

/* ================================================================== ≥768px */
@media (min-width: 768px) {
  .f-strip { margin: 0; padding: 0; }
  .f-l-long { display: inline; }
  .f-l-short { display: none; }
  .bento-item.f-feat { grid-column: 1 / -1; }
  .f-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); column-gap: 32px; }
  .f-arch-item { grid-template-columns: 120px minmax(0, 1fr); column-gap: 24px; padding: 20px 0; }
  .f-arch-time { padding-top: 4px; }
  .f-postp .v2-ph1 { font-size: 44px; }
  .f-kv > div { grid-template-columns: 200px minmax(0, 1fr); gap: 16px; align-items: baseline; }
  .f-apply { flex-direction: row; align-items: center; justify-content: space-between; padding: 24px; }
  .f-pn { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .f-steps { grid-template-columns: repeat(3, minmax(0, 1fr)); column-gap: 32px; }
  .f-steps li { border-bottom: 0; }
  .f-faq-main .v2-head h2, .f-legal-main .v2-head h2 { font-size: 32px; }
  .f-types { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .f-type-wide { grid-column: 1 / -1; }
  .f-grid2 { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 20px 16px; }
  .f-wide { grid-column: 1 / -1; }
}

/* ================================================================== ≥1100px */
@media (min-width: 1100px) {
  .f-side-sticky { position: sticky; top: 96px; }
  /* ブログ */
  .bento-item.f-feat { grid-column: span 4; }
  .f-feat-body { padding: 32px 40px; }
  .f-feat h3 { font-size: 28px; }
  .f-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .f-arch { grid-template-columns: minmax(0, 1fr) 300px; gap: 56px; align-items: start; }
  .f-arch-side { position: sticky; top: 96px; }
  /* 記事：正文靠左和首屏标题对齐，目次靠右 */
  .f-postp .v2-ph1 { font-size: 56px; }
  .f-art-layout { grid-template-columns: minmax(0, 720px) 248px; justify-content: space-between; gap: 64px; padding: 48px 0 96px; }
  .f-art-side { display: block; }
  .f-art-side .f-side-sticky { display: flex; flex-direction: column; gap: 28px; }
  .f-toc-m { display: none; }
  .f-prose { font-size: 17px; }
  .f-prose h2 { font-size: 26px; }
  /* FAQ：左栏分类导航，右栏问答；手机用的横向页签收起来 */
  .f-faqp .subnav { display: none; }
  .f-faq { grid-template-columns: 220px minmax(0, 1fr); gap: 72px; }
  .f-faq-side { display: block; padding-top: 44px; }
  /* お問い合わせ：表单与摘要之间一条竖线 */
  .f-contact { grid-template-columns: minmax(0, 1fr) 320px; gap: 0; }
  .f-contact-main { padding-right: 56px; }
  .f-contact-side { padding-left: 40px; border-left: 1px solid var(--border); }
  .f-step-h { font-size: 26px; }
  /* 法務：右侧钉住目录 */
  .f-legal { grid-template-columns: minmax(0, 1fr) 256px; gap: 56px; }
  .f-legal-side { display: block; padding-top: 44px; }
  .f-legal-side .f-side-sticky { top: 136px; }
  .f-doc-toc { display: none; }
}

/* m.css */

/* メンバーシップ页与首页「会員ステップ」5 句（09-25 新建；类名 m- 开头） */
.m-path-q { margin-bottom: 14px; font-size: 15px; font-weight: 700; }
.m-path-text { font-size: 26px; font-weight: 800; line-height: 1.55; }
.m-path-s { display: block; color: var(--text); transition: color 150ms var(--ease-std); }
.m-path-s:hover { background-image: var(--echo-grad); -webkit-background-clip: text; background-clip: text; color: transparent; -webkit-text-fill-color: transparent; }
@media (min-width: 1024px) { .m-path-text { font-size: 36px; } }
.m-tiers { display: grid; grid-template-columns: minmax(0, 1fr); gap: 16px; }
.m-tier { scroll-margin-top: 140px; padding: 20px; border: 1px solid var(--border-strong); border-radius: 4px; }
.m-tier:target { border-color: var(--text); box-shadow: 0 0 0 1px var(--text); }
.m-tier header { display: grid; gap: 2px; margin-bottom: 12px; }
.m-tier-no { font-family: var(--mono); font-size: 12px; color: var(--text-3); }
.m-tier-en { font-size: 11px; font-weight: 600; letter-spacing: 0.12em; color: var(--text-2); }
.m-tier h3 { font-size: 22px; }
.m-tag { margin-left: 10px; padding: 2px 8px; border: 1px solid var(--border-strong); border-radius: 999px; font-size: 12px; font-weight: 500; vertical-align: 4px; }
.m-tier dl { display: grid; gap: 12px; margin: 0; }
.m-tier dt { font-size: 12px; color: var(--text-3); }
.m-tier dd { margin: 2px 0 0; font-size: 14px; line-height: 1.7; }
.m-tier dd ul { margin: 0; padding-left: 1.1em; }
@media (min-width: 900px) { .m-tier dl { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 20px; } }
.m-price { overflow-x: auto; }
.m-price table { width: 100%; min-width: 520px; border-collapse: collapse; font-size: 14px; }
.m-price th, .m-price td { padding: 14px 12px 14px 0; border-bottom: 1px solid var(--border); text-align: left; vertical-align: top; }
.m-price thead th { font-size: 12px; font-weight: 500; color: var(--text-3); }
.m-price tbody th { font-weight: 700; white-space: nowrap; }

/* v2.css */

/* ============================================================
   v2（09-24 第二轮）：先在首页做样例，确认后推到全站。范围限定在 main.v2 里，别的页面不受影响。
   四条规则（用户 09-24 的四条意见）：
   1. 页面上唯一的颜色是品牌渐变（紫→粉→橙→绿）。卡片底色、分类色、色团、点阵全部去掉，其余只用黑白灰。
   2. 渐变推到极致：首屏标语和页尾标语整句用渐变，宽 ≥1024px 且允许动效时缓慢流动（18 秒一个来回），
      手机和关掉动效时静止；每个区块标题里有一个词用渐变，进场时扫一次；按钮和链接悬停时出现渐变。
      依据：参考库 01 #7 Aurora Text（字内渐变流动）、04 B8 PFN（日文渐变大字）、02 #44 Resend（标题里一个词渐变）。
   3. 回声与不完美：首屏标语第二行右边重复两次，一次比一次小、一次比一次淡（像延迟效果），最后一次越过版心右边、在视口边被裁掉；
      倒计时贴纸歪 4 度。（09-24 初版用的是叠在字后的描边副本，用户反馈看着眼花，已改）
   4. 偏执：区块编号「01/08」用等宽字；标题右上角写条目数，数字由数据算出；首屏写东京时间，每分钟更新。
   ============================================================ */

/* 变量放在 :root，内页用 v4 组件（gk、g、v2_section）时也取得到（09-24 推到全站） */
:root, .v2 {
  /* 顺序是绿→紫→粉→橙：橙和绿不相邻，流动时不经过土黄色。静止时显示紫→粉→橙那一段 */
  --echo-grad: linear-gradient(90deg, #1FA85A 0%, #6547F5 34%, #B83AA8 66%, #F55200 100%);
  --mono: ui-monospace, "SF Mono", "JetBrains Mono", Menlo, Consolas, monospace;
}
.v2 { display: block; }

/* 支持的浏览器按 OKLCH 混色：绿到紫之间经过青蓝，比按 RGB 混出的灰蓝更亮（Chrome 111+、Safari 16.2+、Firefox 127+）。
   不支持的浏览器沿用上面的普通渐变。写在 @supports 里，因为变量里放了不认识的值会让整条背景失效，不会回退 */
@supports (background-image: linear-gradient(in oklch 90deg, red, blue)) {
  :root, .v2 { --echo-grad: linear-gradient(in oklch 90deg, #1FA85A 0%, #6547F5 34%, #B83AA8 66%, #F55200 100%); }
}

/* ---------- 渐变字 ---------- */
.v2-grad {
  background-image: var(--echo-grad);
  background-size: 160% 100%;
  background-position: 100% 50%;
  -webkit-background-clip: text;
  background-clip: text;
  color: transparent;
  -webkit-text-fill-color: transparent;
}
/* 区块标题里的那个词：进场时从绿青扫到紫粉，只扫一次 */
.v2-sweep { background-size: 300% 100%; background-position: 0% 50%; transition: background-position 1.4s var(--ease-out) 0.2s; }
[data-reveal].is-in .v2-sweep { background-position: 51% 50%; }
[data-motion="off"] .v2-sweep { transition: none; background-position: 51% 50%; }
/* 「巡る。」和它的两次回声：渐变来回流动，6 秒一趟（09-24 用户要求加快，原来 18 秒、只在桌面动）。
   关掉动效或系统设了减少动态效果时静止 */
[data-motion="on"] .v2-key, [data-motion="on"] .v2-flow { background-size: 260% 100%; animation: v2-flow 6s ease-in-out infinite alternate; }
@keyframes v2-flow { from { background-position: 100% 50%; } to { background-position: 0% 50%; } }

/* ---------- 标语与回声 ----------
   09-24 改：描边副本叠在字上看着眼花，去掉。回声改成第二行右边的两次重复：字号依次减半、不透明度 0.32 → 0.14，
   和正文不重叠。出现时间按 120 BPM 排：正文先出，两次重复各晚一个八分音符（0.25 秒） */
.v2-slogan {
  position: relative;
  display: block;
  margin: 0;
  font-family: var(--font-body);
  font-weight: 900;
  font-size: clamp(64px, 21vw, 236px);
  line-height: 1.04;
  letter-spacing: -0.035em;
  font-feature-settings: "palt";
  word-break: keep-all;
}
.v2-slogan .l1, .v2-slogan .l2 { display: block; }
.v2-slogan .l2 { padding-left: 0.6em; white-space: nowrap; }
.v2-rep { display: inline-block; margin-left: 0.12em; font-size: 0.4em; opacity: 0.32; user-select: none; }
.v2-rep.r2 { display: none; font-size: 0.5em; opacity: 0.44; }   /* 手机上只留一次重复 */
[data-motion="on"] .v2-slogan { animation: v2-in 0.9s var(--ease-out) both; }
[data-motion="on"] .v2-rep { animation: v2-fade 0.6s var(--ease-out) 0.65s both; }
[data-motion="on"] .v2-rep.r2 { animation-delay: 0.9s; }
@keyframes v2-in { from { opacity: 0; transform: translateY(16px); } to { opacity: 1; transform: none; } }
@keyframes v2-fade { from { opacity: 0; } }

/* ---------- 首屏标语 ----------
   09-24 用户定：「響きは、」黑色实心，「巡る。」品牌渐变平涂（「先用这一版吧，不用那种线条的文字了」）。
   线条填字停用，做法存档在 _versions/v3；流动速度见上面的 v2-flow 规则 */
.v2-slogan .l1 .v2-fill { color: var(--text); }
.v2-key {
  background-image: var(--echo-grad); background-size: 160% 100%; background-position: 100% 50%;
  -webkit-background-clip: text; background-clip: text; color: transparent; -webkit-text-fill-color: transparent;
}

/* ---------- 首屏 ---------- */
[data-motion="on"] .v2-hero .v2-load { animation: v2-in 0.9s var(--ease-out) var(--d, 0s) both; }
.v2-hero { position: relative; padding: 28px 0 56px; overflow-x: hidden; overflow-x: clip; }
.v2-hero .container { position: relative; }
.v2-meta { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 6px 24px; margin-bottom: 28px; font-family: var(--mono); font-size: 11px; letter-spacing: 0.08em; text-transform: uppercase; color: var(--text-3); }
.v2-meta b { font-weight: 600; color: var(--text); font-variant-numeric: tabular-nums; }
.v2-sticker.countdown { position: relative; z-index: 2; display: inline-flex; margin-top: 20px; padding: 9px 14px; gap: 8px; background: var(--text); color: #F1F1F1; font-family: var(--mono); font-size: 12px; border-radius: 2px; transform: translate(var(--dx, 0px), var(--dy, 0px)) rotate(calc(-4deg + var(--tilt, 0deg))); box-shadow: 3px 4px 0 rgba(9, 9, 9, 0.14); }
/* 贴纸可以用鼠标按住拖动（09-24 用户要求）。只在有鼠标的设备上开（手机上拖动会和滚动抢手势）；
   按住时抬起一点、随横向速度微微倾斜，松手后摆正 */
.v2-sticker.is-draggable { cursor: grab; touch-action: none; user-select: none; -webkit-user-select: none; transition: transform 0.3s var(--ease-out), box-shadow 0.2s; }
.v2-sticker.is-dragging { cursor: grabbing; transition: box-shadow 0.2s; box-shadow: 8px 12px 0 rgba(9, 9, 9, 0.16); }
.v2-sticker .cd-dot { background: #1FA85A; }
.v2-sticker .num { font-family: var(--mono); font-size: 15px; color: #FFFFFF; }
.v2-h1 { margin-top: 28px; max-width: 30em; font-size: 20px; font-weight: 700; line-height: 1.5; word-break: auto-phrase; }
.v2-hero .actions { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 20px; }
/* トンボ（裁ち落としの目印）：首屏四角 */
.v2-tombo { position: absolute; width: 14px; height: 14px; pointer-events: none; }
.v2-tombo::before, .v2-tombo::after { content: ""; position: absolute; background: var(--text); }
.v2-tombo::before { left: 6px; top: 0; width: 1px; height: 14px; }
.v2-tombo::after { top: 6px; left: 0; width: 14px; height: 1px; }
.v2-tombo.tl { left: 2px; top: -16px; } .v2-tombo.tr { right: 2px; top: -16px; }
.v2-tombo.bl { left: 2px; bottom: -40px; } .v2-tombo.br { right: 2px; bottom: -40px; }

/* ---------- 区块 ---------- */
.v2-sec { padding: 64px 0; border-top: 1px solid var(--border); }
.v2-head { display: grid; grid-template-columns: minmax(0, 1fr); gap: 10px; margin-bottom: 28px; }
.v2-no { margin: 0; font-family: var(--mono); font-size: 12px; font-weight: 600; letter-spacing: 0.06em; color: var(--text); }
.v2-no span { color: var(--text-3); font-weight: 400; }
.v2-head h2 { font-size: 30px; line-height: 1.25; letter-spacing: -0.01em; }
.v2-count { margin-left: 6px; font-family: var(--mono); font-size: 13px; font-weight: 600; color: var(--text-3); vertical-align: super; }
.v2-head p { margin-top: 8px; font-size: 15px; color: var(--text-2); }
.v2-head .link { justify-self: start; }
.v2 .link { color: var(--text); font-weight: 600; background: var(--echo-grad) no-repeat 0 100% / 0% 2px; padding-bottom: 2px; transition: background-size 250ms var(--ease-std); }
.v2 .link:hover { background-size: 100% 2px; }
.v2-sub { margin: 0 0 12px; font-family: var(--mono); font-size: 11px; letter-spacing: 0.08em; text-transform: uppercase; color: var(--text-3); }

/* 按钮：悬停时黑底换成渐变 */
.v2 .btn-primary { position: relative; isolation: isolate; overflow: hidden; }
.v2 .btn-primary::before { content: ""; position: absolute; inset: 0; z-index: -1; background: var(--echo-grad); background-size: 200% 100%; opacity: 0; transition: opacity 150ms var(--ease-std); }
.v2 .btn-primary:hover::before { opacity: 1; }

/* 分类标签、卡片：全部去底色，只留黑白 */
.v2 .chip-work, .v2 .chip-code, .v2 .chip-content, .v2 .chip-community { background: transparent; color: var(--text); border: 1px solid var(--text); font-weight: 600; }
.v2 .dot-open { background: #1FA85A; } .v2 .dot-few { background: #F55200; } .v2 .dot-review { background: #6547F5; }
.v2 .card { border-radius: 4px; }
.v2 .card:hover { border-color: var(--text); }

/* ---------- 01 事業：目录式列表 ---------- */
.v2-biz { border-top: 1px solid var(--text); }
.v2-bizk { display: grid; gap: 2px; margin: 0; padding: 18px 0 10px; font-size: 13px; font-weight: 700; }
.v2-bizk span { font-weight: 400; color: var(--text-2); }
.v2-bizrow { display: grid; grid-template-columns: 34px minmax(0, 1fr) 24px; column-gap: 8px; row-gap: 4px; align-items: baseline; padding: 16px 0; border-top: 1px solid var(--border); color: var(--text); }
.v2-bizrow .n { font-family: var(--mono); font-size: 12px; color: var(--text-3); }
.v2-bizrow .t { font-family: var(--font-display); font-size: 24px; font-weight: 600; letter-spacing: -0.01em; background-image: var(--echo-grad); background-size: 160% 100%; background-position: 100% 50%; -webkit-background-clip: text; background-clip: text; color: var(--text); transition: color 250ms var(--ease-std); }
.v2-bizrow .d { grid-column: 2 / 3; font-size: 14px; color: var(--text-2); }
.v2-bizrow .models { display: block; margin-top: 4px; font-family: var(--mono); font-size: 11px; letter-spacing: 0.04em; color: var(--text-3); }
.v2-bizrow .go { grid-column: 3; grid-row: 1; justify-self: end; color: var(--text-3); transition: transform 250ms var(--ease-std), color 250ms var(--ease-std); }
.v2-bizrow:hover .t { color: transparent; }
.v2-bizrow:hover .go { color: var(--text); transform: translateX(4px); }

/* ---------- 02 できること：四项文字 ---------- */
.v2-can { display: grid; grid-template-columns: minmax(0, 1fr); border-top: 1px solid var(--text); }
.v2-canitem { display: grid; align-content: start; gap: 6px; padding: 18px 0 20px; border-bottom: 1px solid var(--border); color: var(--text); }
.v2-canitem .n { font-family: var(--mono); font-size: 11px; color: var(--text-3); }
.v2-canitem h3 { font-size: 19px; }
.v2-canitem p { font-size: 14px; color: var(--text-2); }
.v2-canitem .go { font-size: 13px; font-weight: 600; }

/* ---------- 03 イベント ---------- */
.v2-kinds { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 14px; margin: -8px 0 20px; font-size: 12px; color: var(--text-2); }
.v2-kinds .chip { height: 22px; }
.v2-join { display: grid; grid-template-columns: minmax(0, 1fr); margin-top: 28px; border-top: 1px solid var(--text); }
.v2-join li { display: grid; align-content: start; grid-template-columns: 46px minmax(0, 1fr); gap: 2px 8px; padding: 14px 0; border-bottom: 1px solid var(--border); list-style: none; }
.v2-join .n { grid-row: 1 / 3; font-family: var(--mono); font-size: 11px; color: var(--text-3); padding-top: 4px; }
.v2-join b { font-size: 15px; }
.v2-join span:not(.n) { font-size: 13px; color: var(--text-2); }
.v2-join-wrap { margin: 0; padding: 0; }

/* ---------- 04 University ---------- */
.v2-uni-intro { display: grid; gap: 12px; max-width: 640px; margin-bottom: 28px; }
.v2-uni-intro .lead { font-size: 19px; font-weight: 700; }
.v2-uni-intro p { font-size: 15px; color: var(--text-2); }
.v2-uni-intro .btn { justify-self: start; }
.v2-layers { display: grid; grid-template-columns: minmax(0, 1fr); gap: 0; border-top: 1px solid var(--text); }
.v2-layer { padding: 18px 0 20px; border-bottom: 1px solid var(--border); }
.v2-layer h3 { margin-top: 4px; font-size: 19px; }
.v2-layer ul { list-style: none; margin: 12px 0 0; padding: 0; display: grid; gap: 10px; }
.v2-layer li b { display: block; font-size: 15px; }
.v2-layer li span { font-size: 12px; color: var(--text-3); font-variant-numeric: tabular-nums; }
.v2-layer .more { margin-top: 10px; font-size: 12px; color: var(--text-3); }

/* ---------- 05 拠点 ---------- */
.v2-spots { display: grid; grid-template-columns: minmax(0, 1fr); gap: 12px; }
.v2-spot { display: flex; flex-direction: column; gap: 8px; padding: 20px; }
.v2-spot-top { display: flex; align-items: center; justify-content: space-between; gap: 8px; font-family: var(--mono); font-size: 11px; color: var(--text-3); }
.v2-spot h3 { font-size: 22px; }
.v2-spot .area, .v2-spot .type { font-size: 13px; color: var(--text-2); }
.v2-spot .area { display: flex; align-items: center; gap: 4px; }
.v2-spot .cond { font-size: 14px; color: var(--text-2); }
.v2-spot ul { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: 4px 12px; font-size: 12px; color: var(--text-2); }
.v2-spot ul li::before { content: "— "; color: var(--text-3); }
.v2-spot .btn { margin-top: auto; }
.v2-spot.theme-dark { border-color: var(--bg); }

/* ---------- 06 会員ステップ：选中的那句用渐变 ---------- */
.v2 .a-wall-s.is-on { background: var(--echo-grad) 100% 50% / 160% 100%; -webkit-background-clip: text; background-clip: text; color: transparent; -webkit-text-fill-color: transparent; }
.v2 .a-lv { border-radius: 4px; box-shadow: none; border-color: var(--text); }
.v2 .a-lv-rail li.done { background: var(--text-3); }
.v2 .a-lv-rail li.on { background: var(--echo-grad); }
.v2 .a-lv-en { color: var(--text-2); font-family: var(--mono); }
.v2 .a-lv-dl li::before { background: var(--text); }

/* ---------- 07 事例 ---------- */
.v2-cases { display: grid; grid-template-columns: minmax(0, 1fr); gap: 12px; }
.v2-case { display: flex; flex-direction: column; gap: 8px; padding: 20px; color: var(--text); }
.v2-case .big { font-family: var(--font-display); font-size: 64px; font-weight: 700; line-height: 1; letter-spacing: -0.03em; }
.v2-case .big small { font-size: 0.45em; }
.v2-case .meta { display: flex; flex-direction: row; flex-wrap: wrap; gap: 4px 12px; font-family: var(--mono); font-size: 11px; color: var(--text-3); }
.v2-case h3 { font-size: 18px; }
.v2-case .res { font-size: 14px; color: var(--text-2); }
.v2-partners { display: grid; gap: 10px; margin-top: 28px; padding-top: 18px; border-top: 1px solid var(--text); }
.v2-partners h3 { font-size: 17px; }
.v2-partners p { font-size: 14px; color: var(--text-2); }
.v2-partners .btn { justify-self: start; }

/* ---------- 页尾 ---------- */
.v2-final { padding: 72px 0 80px; background: var(--bg); color: var(--text); }
.v2-final .v2-slogan { font-size: clamp(44px, 12vw, 148px); letter-spacing: -0.04em; }
.v2-final .v2-slogan .l2 { padding-left: 0.45em; }
.v2-final-text { margin-top: 28px; font-size: 15px; color: var(--text-2); }
.v2-final .actions { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 20px; }

/* ---------- 桌面 ---------- */
@media (min-width: 768px) {
  .v2-hero { padding: 36px 0 72px; }
  .v2-slogan .l2 { padding-left: 1.05em; }
  .v2-rep { font-size: 0.5em; margin-left: 0.14em; }
  .v2-rep.r2 { display: inline-block; font-size: 0.25em; opacity: 0.14; }
  .v2-meta { font-size: 12px; }
      .v2-sec { padding: 96px 0; }
  .v2-head { grid-template-columns: 80px minmax(0, 1fr) auto; align-items: baseline; column-gap: 20px; margin-bottom: 36px; }
  .v2-head h2 { font-size: 44px; }
  .v2-head .link { align-self: end; }
  .v2-bizk { grid-template-columns: 220px minmax(0, 1fr); gap: 20px; padding: 24px 0 12px; }
  .v2-bizrow { grid-template-columns: 60px minmax(0, 360px) minmax(0, 1fr) 32px; column-gap: 20px; padding: 22px 0; align-items: center; }
  .v2-bizrow .t { font-size: 36px; }
  .v2-bizrow .d { grid-column: 3; grid-row: 1; font-size: 15px; }
  .v2-bizrow .go { grid-column: 4; }
  .v2-can { grid-template-columns: repeat(2, minmax(0, 1fr)); column-gap: 32px; }
  .v2-join { grid-template-columns: repeat(3, minmax(0, 1fr)); column-gap: 32px; }
  .v2-join li { border-bottom: 0; }
  .v2-layers { grid-template-columns: repeat(3, minmax(0, 1fr)); column-gap: 32px; }
  .v2-layer { border-bottom: 0; }
  .v2-spots { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .v2-cases { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .v2-partners { grid-template-columns: minmax(0, 1fr) auto; align-items: center; column-gap: 32px; }
  .v2-partners .btn { grid-column: 2; grid-row: 1 / 3; }
  .v2-final { padding: 112px 0 120px; }
}
@media (min-width: 1024px) {
  .v2-sticker.countdown { position: absolute; left: 60%; top: 43%; margin: 0; font-size: 13px; z-index: 2; }
  .v2-h1 { font-size: 24px; }
  .v2-can { grid-template-columns: repeat(4, minmax(0, 1fr)); }
  .v2-canitem { border-bottom: 0; padding-right: 8px; }
}

/* ---------- 黑底块（09-24 用户：白色为主，黑色块也可以用；参照 gsap.com） ---------- */
.v2-statement { padding: 88px 0 64px; background: var(--bg); color: var(--text); }
.v2-label { margin: 0 0 24px; font-family: var(--mono); font-size: 13px; color: var(--text-2); }
.v2-say { margin: 0; max-width: 21em; font-size: clamp(28px, 5vw, 68px); font-weight: 700; line-height: 1.32; letter-spacing: -0.005em; word-break: auto-phrase; }
.v2-say .w { transition: none; }
/* 每句另起一行，只在词与词之间换行（js/v2.js 插入 <wbr>）；极窄屏上单个词放不下时才在词内折行 */
.v2-say .s { display: block; }
.v2-say[data-v2-say] { word-break: keep-all; overflow-wrap: anywhere; }
.v2-dark.v2-sec { background: var(--bg); color: var(--text); border-top: 0; }
/* 首页黑底大字后面紧跟的黑底块才压小上边距；内页单独出现的黑底块用普通区块的上边距（09-24 A、C 组提出） */
.v2-statement + .v2-dark.v2-sec { padding-top: 24px; }
.v2-biz2 { display: grid; grid-template-columns: minmax(0, 1fr); gap: 40px; }
.v2-bizcol .k { margin: 0 0 10px; font-size: 14px; font-weight: 700; }
.v2-bizcol .k.c1 { color: #3ED67D; }   /* 品牌绿，黑底对比约 10:1 */
.v2-bizcol .k.c2 { color: #FF8A4C; }   /* 品牌橙提亮，黑底对比约 7.9:1 */
.v2-bizcol a { display: block; padding: 16px 0; border-top: 1px solid var(--border); color: var(--text); }
.v2-bizcol a .t { display: inline-flex; align-items: center; gap: 8px; font-family: var(--font-display); font-size: 28px; font-weight: 600; letter-spacing: -0.01em;
  background: var(--echo-grad) 100% 50% / 160% 100%; -webkit-background-clip: text; background-clip: text; color: var(--text); transition: color 250ms var(--ease-std); }
.v2-bizcol a .t .icon-sm { color: var(--text-2); }
.v2-bizcol a:hover .t { color: transparent; }
.v2-bizcol a .d { display: block; margin-top: 4px; font-size: 14px; color: var(--text-2); }
.v2-bizcol a .models { display: block; margin-top: 4px; font-family: var(--mono); font-size: 11px; color: var(--text-3); }
@media (min-width: 768px) {
  .v2-statement { padding: 128px 0 88px; }
  .v2-biz2 { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 56px; }
  .v2-bizcol a .t { font-size: 34px; }
}

/* ---------- 内页首屏（v4，09-24）：首页做法搬到内页，字号比首页标语小一档；不放光晕、点阵、色团 ---------- */
.v2-phero { padding: 28px 0 48px; border-bottom: 1px solid var(--border); }
.v2-ph1 { max-width: 16em; font-size: 30px; font-weight: 900; line-height: 1.18; letter-spacing: 0.01em; font-feature-settings: "palt"; word-break: auto-phrase; }
.v2-phsub { margin-top: 14px; font-size: 17px; font-weight: 700; }
.v2-plead { margin-top: 14px; max-width: 36em; font-size: 15px; line-height: 1.8; color: var(--text-2); }
.v2-phero .actions { margin-top: 24px; }
.v2-pnote { margin-top: 18px; font-size: 13px; color: var(--text-3); }
@media (min-width: 768px) { .v2-ph1 { font-size: 44px; } }
@media (min-width: 1024px) { .v2-phero { padding: 36px 0 64px; } .v2-ph1 { font-size: 56px; } .v2-phsub { font-size: 20px; } }

/* 内页首屏的下边线和第一个区块的上边线不叠成两条（09-24 A、C 组提出） */
.v2-phero + .v2-sec { border-top: 0; }
/* 内页页尾（lib.v2_final）：收尾句比首页长，字号小一档，允许按词换行，不横向溢出（09-24 A 组提出） */
.v2-final-inner .v2-slogan { font-size: clamp(34px, 7vw, 96px); }
.v2-final-inner .v2-slogan .l2 { white-space: normal; word-break: auto-phrase; }

/* 区块标题右边的文字链接（すべて見る 等）：点按区域上下各扩 10px，排版不变，手机上点得准（09-24 D2 组提出） */
.v2-head .link { position: relative; }
.v2-head .link::after { content: ""; position: absolute; left: 0; right: 0; top: -10px; bottom: -10px; }

/* ---------- 内页主题色（09-25 用户：渐变效果只留首页，其他页面用上一版那几个主题色） ----------
   首页 <body> 不带 data-tone，照旧用品牌渐变。其他页 <body data-tone="…">（build.py 的 TONE_BY_PAGE）：
   页面里所有引用 --echo-grad 的地方（标题关键词、链接下划线、时间线圆点等）都变成这一页主题色的实色，也不再流动 */
[data-tone], [data-tone] .v2 { --echo-grad: linear-gradient(90deg, var(--tone), var(--tone)); }
[data-tone] .theme-dark { --echo-grad: linear-gradient(90deg, var(--tone-on-dark), var(--tone-on-dark)); }
[data-tone] .v2-key, [data-tone] .v2-flow { animation: none !important; }
[data-tone] .grad-text { background-image: linear-gradient(90deg, var(--tone), var(--tone)); }
[data-tone] .pill-glow { --pg-full: conic-gradient(var(--tone), var(--tone)); }
[data-motion="on"] [data-tone] .pg-ring { background: color-mix(in srgb, var(--tone) 28%, transparent); }
[data-motion="on"] [data-tone] .pg-beam { background: linear-gradient(to right, transparent, var(--tone)); }

/* ---------- 内页结尾：一条矮的行动栏（lib.v2_final；大字结尾只留首页） ---------- */
.v2-cta { padding: 40px 0; border-top: 1px solid var(--border); background: var(--tone-soft, var(--surface)); }
.v2-cta-in { display: grid; gap: 18px; }
.v2-cta-t { font-size: 22px; font-weight: 800; line-height: 1.4; }
.v2-cta-t .k { color: var(--tone, var(--text)); }
.v2-cta-d { margin-top: 6px; font-size: 14px; color: var(--text-2); }
.v2-cta .actions { display: flex; flex-wrap: wrap; gap: 10px; }
@media (min-width: 768px) {
  .v2-cta { padding: 48px 0; }
  .v2-cta-in { grid-template-columns: minmax(0, 1fr) auto; align-items: center; column-gap: 40px; }
  .v2-cta-t { font-size: 28px; }
}

/* ---------- 内页首屏：铺这一页事业的淡底色，左上角同色圆点 + 页面名（09-25 用户：用上一版那几个主题色，像菜单里的事业卡片）；
   右下角切一个斜角，和事业卡片同一形状 ---------- */
[data-tone] .v2-phero { background: var(--tone-soft); border-bottom: 0; }
[data-tone] .v2-phero .v2-meta span:first-child::before { content: ""; display: inline-block; width: 8px; height: 8px; margin-right: 8px; border-radius: 50%; background: var(--tone); vertical-align: 1px; }
@media (min-width: 768px) { [data-tone] .v2-phero { clip-path: polygon(0 0, 100% 0, 100% calc(100% - 44px), calc(100% - 44px) 100%, 0 100%); } }

/* ---------- 封面卡放在卡片顶部时的小尺寸（lib.cover(..., cls="is-card")） ---------- */
.c-cover.is-card { aspect-ratio: 16 / 9; margin: -1px -1px 16px; padding: 16px 18px; border-radius: var(--r-md) var(--r-md) 0 0; }
.c-cover.is-card .c-cover-k { left: 18px; top: 14px; font-size: 10px; }
.c-cover.is-card .c-cover-t { font-size: 26px; font-weight: 800; line-height: 1.15; letter-spacing: -0.01em; }
@media (min-width: 1024px) { .c-cover.is-card { aspect-ratio: 16 / 9; padding: 18px 20px; } .c-cover.is-card .c-cover-t { font-size: 28px; } }

/* 首页 H1「東京発、コミュニティ主導の AI インキュベーター。」放大，关键词渐变（09-25：Echo とは 的首屏大标题并进首页） */
.v2-hero .v2-h1 { max-width: 22em; font-size: 24px; line-height: 1.4; }
@media (min-width: 768px) { .v2-hero .v2-h1 { font-size: 32px; } }
@media (min-width: 1024px) { .v2-hero .v2-h1 { font-size: 40px; } }
/* 首页页尾「会いに来てください。」一行 10 个字：字号按屏宽算，不超出版心 */
.v2-final-home .v2-slogan { font-size: min(8.4vw, 112px); }

/* 首屏标语的解释句（09-25 用户：「響きは、巡る。」要配上这句解释），紧跟在标语下面 */
.v2-slogan-note { margin-top: 16px; font-size: 18px; font-weight: 500; line-height: 1.6; letter-spacing: 0.02em; color: var(--text-2); }
@media (min-width: 768px) { .v2-slogan-note { font-size: 22px; } }
@media (min-width: 1024px) { .v2-slogan-note { margin-top: 20px; font-size: 26px; } }

/* z-blog.css */

/* ============================================================
   C3 ブログ（Next.js 版で追加）：接上数据库后才需要的几处样式。类名前缀 c3-，只用于ブログ的公开页和后台。
   - 正文：原型的记事正文是手写的 HTML（小标题前的编号 f-h-no、条目 f-ul、第一段 f-first）；
     正式版的正文由简单标记生成（web/lib/markup.tsx：要点表 f-kv、番号付きカード f-supports、引用 f-quote、応募締切 f-apply は原型のクラスで出る），
     ここでは普通の段落・箇条書き・リンクを原型の見た目に合わせる
   - 一覧の置顶区：只有大きいカード、没有横のピン留め时，大卡占满一行
   - 后台（/admin-blog）：标题的表示イメージ、本文のプレビュー框、書き方の一覧、一覧のカードの見え方
   ============================================================ */

/* ---------- 正文（公开页 .f-prose.c3-prose 和后台预览共用） ---------- */
.c3-prose { counter-reset: c3-h; }
.c3-prose > h2 { counter-increment: c3-h; }
.c3-prose > h2::before { content: counter(c3-h, decimal-leading-zero); font-family: var(--mono); font-size: 12px; font-weight: 600; letter-spacing: 0.04em; color: var(--text-3); }
.c3-prose > p:first-child { font-size: 17px; }
/* 普通の箇条書きだけ（要点の表 f-kv、番号付きカード f-supports は原型の書き方のまま） */
.c3-prose ul:not([class]), .c3-prose ol:not([class]) { margin: 0; padding-left: 1.3em; }
.c3-prose :is(ul, ol):not([class]) li + li { margin-top: 6px; }
.c3-prose a:not(.btn) { font-weight: 600; text-decoration: underline; text-decoration-thickness: 1px; text-underline-offset: 0.25em; }
.c3-prose a:not(.btn):hover { text-decoration-thickness: 2px; }

/* ---------- 一覧：大卡单独一张时占满一行 ---------- */
.bento-item.f-feat.c3-solo { grid-column: 1 / -1; }

/* ---------- 后台 ---------- */
.c3-titlepv { font-size: 22px; font-weight: 900; line-height: 1.35; font-feature-settings: "palt"; word-break: auto-phrase; }
.c3-pv { max-height: 720px; overflow-y: auto; padding: 16px 20px 20px; border: 1px solid var(--border); border-radius: var(--r-md); background: var(--surface); }
.c3-pv .f-toc { margin-bottom: 16px; }
.c3-pv .f-prose { margin-top: 0; font-size: 15px; line-height: 1.85; }
.c3-pv .f-prose > h2 { margin-top: 28px; padding-top: 12px; }
.c3-pv .f-prose h2 { font-size: 18px; }
.c3-pv .c3-prose > p:first-child { font-size: 16px; }
.c3-howto summary { min-height: 32px; font-size: 13px; color: var(--text-2); cursor: pointer; }
.c3-howto .e-kv { margin-top: 6px; }
.c3-howto .e-kv > div { grid-template-columns: 150px minmax(0, 1fr); }
.c3-howto dt { font-family: var(--mono); font-size: 12px; color: var(--text); }
.c3-howto dd { font-size: 13px; color: var(--text-2); }
.c3-howto .e-help { margin-top: 8px; }
.c3-cardpv { border-top: 1px solid var(--text); }
.c3-cardpv .f-card { padding-bottom: 0; border-bottom: 0; }
/* 一覧：「すべて」のとき見える記事がない（公開中の記事が全部ピン留め）なら、一覧の上の黒線も出さない */
.c3-grid:not(:has(> [data-f-post]:not([hidden]))) { border-top: 0; }
/* 後台カテゴリ：押せないボタン（記事があるカテゴリの削除、いちばん上・下の並べ替え）は薄く表示 */
.c3-cats .e-act:disabled, .c3-cats .e-ibtn:disabled { opacity: 0.4; cursor: not-allowed; }

/* z-content.css */

/* ============================================================
   后台「トップページ内容」（admin-content，阶段 C 模块 C1）只用的样式，类名前缀 c1-
   ============================================================ */
/* 表示イメージ里的渐变：后台页面带 data-tone，品牌渐变 --echo-grad 在里面被换成主题色的实色（v2.css 末尾「内页主题色」），
   标语的 2 行目、大見出し里的渐变语会显示成黑字，看不出哪几个字会变成渐变。
   表示イメージ画的是首页（首页不带 data-tone，用品牌渐变），所以只在这个框里换回首页的渐变。
   --c1-home-grad 在 :root 上取值，那里还是首页的渐变；改品牌渐变时这里不用跟着改 */
:root { --c1-home-grad: var(--echo-grad); }
.c1-heropv { --echo-grad: var(--c1-home-grad); }

/* z-courses.css */

/* ============================================================
   W1 講座（Echo University）：公开页 /university 里，原有样式没有覆盖到的一处。
   类名一律 w1- 开头，只放本模块的样式
   ============================================================ */

/* よくある質問的回答：原型每问只有一段（c.css 的 .c-faq .faq-a）；
   接数据库后回答是后台写的简单标记（web/lib/markup.tsx），会有多段、条目、链接 */
.w1-fa ul, .w1-fa ol { margin: 0; padding-left: 1.2em; }
.w1-fa > :not(:first-child) { margin-top: 8px; }
.w1-fa li + li { margin-top: 4px; }
/* 全站把 a 的下划线去掉了（site.css），回答里的链接要看得出能点 */
.w1-fa a { text-decoration: underline; text-decoration-color: var(--border-strong); text-underline-offset: 3px; transition: text-decoration-color 150ms var(--ease-std); }
.w1-fa a:hover { text-decoration-color: currentColor; }

/* z-faq.css */

/* ============================================================
   C2 よくある質問（阶段 C）：公开页 /faq、首页「よくある質問」、后台 /admin-faq 里，原有样式没有覆盖到的几处。
   回答是运营在后台写的简单标记（web/lib/markup.tsx），会出现原型回答里没有的链接、编号条目，首页的回答也可能有多段。
   类名一律 c2- 开头，只放本模块的样式（阶段 C 开发说明第 3 节）
   ============================================================ */

/* 回答里的链接：全站把 a 的下划线去掉了（site.css），正文里的链接要看得出能点 */
.c2-at a, .c2-hat a { text-decoration: underline; text-decoration-color: var(--border-strong); text-underline-offset: 3px; transition: text-decoration-color 150ms var(--ease-std); }
.c2-at a:hover, .c2-hat a:hover { text-decoration-color: currentColor; }
/* /faq 的回答：编号条目（「1. 」）和「- 」条目（f.css .f-at ul）同样的间距 */
.c2-at ol { margin: 6px 0 0; padding-left: 1.4em; }
.c2-at p + ol, .c2-at ol + p, .c2-at ol + ul, .c2-at ul + ol { margin-top: 8px; }

/* 首页的回答：原型每问只有一段（a.css .a-faq-item p）；多段、条目时段与段之间 8px，最后一块下面照原型留 20px */
.c2-hat > p:not(:last-child) { padding-bottom: 8px; }
.c2-hat > ul, .c2-hat > ol { max-width: 720px; margin: 0; padding: 0 48px 20px 1.2em; font-size: 15px; color: var(--text-2); }
.c2-hat > ul:not(:last-child), .c2-hat > ol:not(:last-child) { padding-bottom: 8px; }
.c2-hat li + li { margin-top: 4px; }
/* 首页没有要显示的问答时的一行说明：没有问题那一行，上面补上同样的留白 */
.c2-home-note { padding-top: 20px; }
@media (min-width: 1100px) {
  .c2-hat > ul, .c2-hat > ol { font-size: 16px; }
}

/* 后台：分节框（e-fs）里放工具条和表格的一栏。列宽限定在框内（e-fields 的列按内容撑开，分类按钮一多就会超出框） */
.c2-fs-body { display: grid; grid-template-columns: minmax(0, 1fr); gap: 12px; margin-top: 18px; }
.c2-fs-body > .e-toolbar { margin-bottom: 0; }
/* 后台：编辑面板里的「表示イメージ」（和公开页一问展开时的样子相同） */
.c2-pv { padding: 14px 16px 0; border: 1px solid var(--border); border-radius: var(--r-md); background: var(--bg); word-break: auto-phrase; }
.c2-pv-q { font-size: 15px; font-weight: 500; line-height: 1.6; }
.c2-pv .f-at { margin-top: 8px; padding: 0 0 14px; font-size: 14px; }
/* 后台：编辑面板的底栏（保存按钮钉在面板下沿，内容长时也不用滚到最后） */
.c2-drawer-foot { display: flex; flex-direction: column; gap: 10px; padding: 12px 20px 16px; border-top: 1px solid var(--border); background: var(--surface); }
.c2-drawer-msg .t { font-size: 12px; color: var(--text-3); }
.c2-drawer-btns { display: flex; gap: 8px; }
.c2-drawer-btns .btn { flex: 1; }

/* z-settings.css */

/* ============================================================
   后台「設定」（Next.js 版 web/app/admin-settings，阶段 C 的 C4）只用的样式，类名前缀 c4-。
   其余一律沿用 e.css 的后台写法（e-fs、e-fields、e-unit、e-mails…）。原型里没有这一页
   ============================================================ */
/* 「返信期限と祝日」的节假日一览：按年分组，一个日期一格，右边是「外す」按钮；窄屏两列 */
.c4-hols { display: grid; grid-template-columns: repeat(auto-fill, minmax(148px, 1fr)); gap: 6px; list-style: none; margin: 0 0 8px; padding: 0; }
.c4-hol { display: flex; align-items: center; justify-content: space-between; gap: 4px; min-height: 40px; padding: 0 2px 0 12px; border: 1px solid var(--border); border-radius: var(--r-sm); background: var(--surface); font-size: 14px; font-variant-numeric: tabular-nums; white-space: nowrap; }
.c4-hol .e-act { min-height: 36px; padding: 0 8px; color: var(--text-3); }
.c4-hol .e-act:hover { color: var(--text); }
/* 追加：日付の入力と「祝日を追加」ボタンを横に並べる */
.c4-holadd { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; }
.c4-holadd .input { width: auto; min-width: 180px; }
