/* =============================================================================
   みさわ小 経営ダッシュボード — Components (sugao 準拠 + みさわ世界観)
   ========================================================================== */

/* ---------- Reset / Base ---------- */
*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; scroll-behavior: smooth; }
body {
  margin: 0;
  font-family: var(--font-body);
  font-size: var(--fs-body);
  line-height: var(--lh-body);
  color: var(--text-primary);
  background: var(--bg-app);
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
}
h1,h2,h3,h4,p,figure,ul,ol { margin: 0; }
ul,ol { padding: 0; list-style: none; }
a { color: var(--text-link); text-decoration: none; }
a:hover { text-decoration: underline; }
img { max-width: 100%; display: block; }
button { font-family: inherit; cursor: pointer; }
:focus-visible { outline: 2px solid var(--c-blue); outline-offset: 2px; border-radius: 2px; }
::selection { background: var(--c-brand-76); color: var(--text-primary); }

/* ---------- Layout ---------- */
.container { width: 100%; max-width: var(--container); margin-inline: auto; padding-inline: var(--space-5); }
.container.narrow { max-width: var(--container-narrow); }
.section { padding-block: var(--space-12); }
.section.tight { padding-block: var(--space-8); }
.stack > * + * { margin-top: var(--space-4); }
.grid { display: grid; gap: var(--space-5); }
/* grid/flex 子要素が内容（pre・長い文字列・テーブル）で広がりすぎないよう縮小を許可 */
.grid > * { min-width: 0; }
.card { min-width: 0; }
pre { max-width: 100%; overflow-x: auto; }
/* 長いID・URL・ファイル名などの非改行文字列で横はみ出ししないよう折り返す */
.v, .nd-file, .src-detail, .grounded-body, .mem-link, .ec-rev-i, .bb-t { overflow-wrap: anywhere; }
.cols-2 { grid-template-columns: repeat(2, 1fr); }
.cols-3 { grid-template-columns: repeat(3, 1fr); }
.cols-4 { grid-template-columns: repeat(4, 1fr); }
.cols-auto { grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); }
@media (max-width: 900px){
  .cols-3,.cols-4 { grid-template-columns: repeat(2,1fr); }
}
@media (max-width: 600px){
  .cols-2,.cols-3,.cols-4 { grid-template-columns: 1fr; }
  .container { padding-inline: var(--space-4); }
}

/* ---------- Typography helpers ---------- */
.display { font-family: var(--font-display); font-weight: var(--fw-bold); line-height: var(--lh-tight); letter-spacing: -.01em; }
.h1 { font-family: var(--font-display); font-size: var(--fs-h1); font-weight: 700; line-height: var(--lh-heading); }
.h2 { font-family: var(--font-display); font-size: var(--fs-h2); font-weight: 700; line-height: var(--lh-heading); }
.h3 { font-size: var(--fs-h3); font-weight: 700; }
.h4 { font-size: var(--fs-h4); font-weight: 700; }
.lead { font-size: var(--fs-body-lg); color: var(--text-secondary); line-height: var(--lh-snug); }
.muted { color: var(--text-tertiary); }
.small { font-size: var(--fs-caption); }
.micro { font-size: var(--fs-micro); }
.t-sec { color: var(--text-secondary); }
.strong { font-weight: 700; }
.center { text-align: center; }
.num { font-variant-numeric: tabular-nums; }

/* eyebrow / kicker */
.eyebrow {
  display: inline-flex; align-items: center; gap: var(--space-2);
  font-size: var(--fs-micro); font-weight: 700; letter-spacing: .14em;
  text-transform: uppercase; color: var(--text-accent);
}
.eyebrow::before { content:""; width: 18px; height: 2px; background: var(--c-ginkgo); border-radius: 2px; }

/* sugao シグネチャ：黄色い左バー付き見出し */
.section-head { display: flex; align-items: center; gap: var(--space-3); margin-bottom: var(--space-5); }
.section-head .bar { width: 6px; height: 26px; background: var(--c-brand); border-radius: var(--radius-full); flex: none; }
.section-head h2 { font-family: var(--font-display); font-size: var(--fs-h2); font-weight: 700; }
.section-head .sub { color: var(--text-tertiary); font-size: var(--fs-caption); margin-left: auto; }
@media (max-width: 640px){
  .section-head { flex-wrap: wrap; }
  .section-head h2 { flex: 1 1 auto; }
  .section-head .sub { margin-left: 0; flex-basis: 100%; order: 3; }
}

/* ---------- Header ---------- */
.site-header {
  position: sticky; top: 0; z-index: var(--z-header);
  background: rgba(255,255,255,.88); backdrop-filter: saturate(1.4) blur(10px);
  border-bottom: 1px solid var(--border-subtle);
}
.site-header::before { content:""; display:block; height: 3px;
  background: linear-gradient(90deg, var(--c-brand) 0%, var(--c-ginkgo) 40%, var(--c-school) 100%); }
.site-header .bar-inner {
  height: var(--header-h); display: flex; align-items: center; gap: var(--space-5);
  max-width: var(--container); margin-inline: auto; padding-inline: var(--space-5);
}
.brand-mark { display: flex; align-items: center; gap: var(--space-3); flex: none; }
.brand-mark:hover { text-decoration: none; }
.brand-emblem { width: 34px; height: 34px; flex: none; }
.brand-text b { font-family: var(--font-display); font-size: 15px; font-weight: 700; color: var(--text-primary); display:block; line-height: 1.15; letter-spacing: -.01em; }
.brand-text span { font-size: 10px; letter-spacing: .12em; color: var(--text-tertiary); text-transform: uppercase; }
.site-nav { display: flex; align-items: center; gap: 2px; margin-left: auto; }
.site-nav a {
  display: inline-flex; align-items: center; gap: 6px;
  padding: 7px 12px; border-radius: var(--radius-md);
  color: var(--text-secondary); font-size: var(--fs-sm); font-weight: 500; white-space: nowrap;
  transition: background var(--dur), color var(--dur);
}
.site-nav a:hover { background: var(--bg-neutral); color: var(--text-primary); text-decoration: none; }
.site-nav a.active { background: var(--c-brand-bg); color: var(--text-primary); font-weight: 700; }
.site-nav a .ic { width: 15px; height: 15px; opacity: .7; }
.nav-toggle { display: none; margin-left: auto; background: none; border: 1px solid var(--border-default);
  border-radius: var(--radius-md); width: 40px; height: 38px; align-items: center; justify-content: center; }
@media (max-width: 860px){
  .site-nav { position: fixed; inset: var(--header-h) 0 auto 0; flex-direction: column; align-items: stretch;
    background: var(--bg-default); border-bottom: 1px solid var(--border-default); padding: var(--space-3);
    gap: 2px; margin: 0; box-shadow: var(--shadow-200); transform: translateY(-8px); opacity: 0; pointer-events: none;
    transition: opacity var(--dur), transform var(--dur); }
  .site-nav.open { opacity: 1; transform: none; pointer-events: auto; }
  .site-nav a { padding: 12px; font-size: var(--fs-body); }
  .nav-toggle { display: inline-flex; }
}

/* --- 二行ナビ：実体ラベル(主)＋学校メタファー(従) --- */
.site-nav a { gap: 8px; }
.nav-label { display: inline-flex; flex-direction: column; line-height: 1.12; }
.nav-main { font-size: var(--fs-sm); font-weight: 600; }
.nav-meta { font-size: 9.5px; letter-spacing: .02em; color: var(--text-tertiary); margin-top: 1px; }
.site-nav a.active .nav-meta { color: var(--c-brown); }
@media (max-width: 860px){
  .nav-label { flex-direction: row; gap: 8px; align-items: baseline; }
  .nav-meta { font-size: 11px; }
}

/* --- 先生を選ぶ（?me= パーソナライズの入口） --- */
.me-picker { position: relative; flex: none; }
.me-btn { display: inline-flex; align-items: center; gap: 6px; padding: 7px 12px; border: 1px solid var(--border-default);
  border-radius: var(--radius-full); background: var(--bg-default); color: var(--text-secondary); font-size: var(--fs-sm); font-weight: 600; cursor: pointer; white-space: nowrap; }
.me-btn:hover { background: var(--c-brand-bg); color: var(--text-primary); border-color: var(--c-brand-strong); }
.me-btn .ic { width: 15px; height: 15px; opacity: .8; }
.me-menu { position: absolute; right: 0; top: calc(100% + 6px); z-index: 60; min-width: 232px; max-height: 72vh; overflow: auto;
  background: var(--bg-default); border: 1px solid var(--border-default); border-radius: 12px; box-shadow: var(--shadow-200); padding: 6px; }
.me-menu-head { padding: 8px 12px 6px; font-size: 11px; color: var(--text-tertiary); }
.me-item { display: flex; align-items: center; justify-content: space-between; gap: 12px; width: 100%; text-align: left;
  padding: 9px 12px; border: 0; background: none; border-radius: var(--radius-md); cursor: pointer; font-size: var(--fs-sm); color: var(--text-primary); }
.me-item:hover { background: var(--bg-neutral); }
.me-item.on { background: var(--c-brand-bg); font-weight: 700; }
.me-item-teams { font-size: 11px; color: var(--text-tertiary); flex: none; }
.me-clear { color: var(--text-tertiary); justify-content: center; margin-top: 4px; border-top: 1px solid var(--border-subtle); border-radius: 0; }
@media (max-width: 860px){ .me-btn span { display: none; } .me-btn { padding: 8px; } }
/* モバイルでヘッダー右側コントロールが viewport を超えて横スクロールが出る不具合を是正。
   ブランド名を縮められるようにし、余白を詰める（全ページ共通ヘッダー） */
@media (max-width: 560px){
  .site-header .bar-inner { gap: var(--space-3); }
  .brand-mark { flex: 1 1 auto; min-width: 0; }
  .brand-text { min-width: 0; }
  .brand-text b { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
}

/* --- 目的ストリップ（sticky）＋ セクションチップ（スクロールスパイ） --- */
.page-strip { position: sticky; top: var(--header-h); z-index: 90;
  background: rgba(251,248,238,.92); backdrop-filter: saturate(1.3) blur(8px);
  border-bottom: 1px solid var(--border-subtle); }
.page-strip-inner { max-width: var(--container); margin-inline: auto; padding: 8px var(--space-5);
  display: flex; align-items: center; gap: 8px 16px; flex-wrap: wrap; }
.ps-lead { display: inline-flex; align-items: baseline; gap: 10px; flex: 1 1 auto; min-width: 0; flex-wrap: wrap; }
.ps-name { font-family: var(--font-display); font-weight: 700; color: var(--text-primary); font-size: var(--fs-body); }
.ps-meta { font-size: 11px; color: var(--text-tertiary); }
.ps-purpose { font-size: var(--fs-sm); color: var(--text-secondary); }
.ps-anchors { display: inline-flex; align-items: center; gap: 6px; flex-wrap: wrap; margin-left: auto; }
.ps-chip { font-size: var(--fs-caption); color: var(--text-secondary); padding: 4px 11px; border-radius: var(--radius-full);
  border: 1px solid var(--border-subtle); background: rgba(255,255,255,.55); text-decoration: none; white-space: nowrap;
  transition: background var(--dur), color var(--dur), border-color var(--dur); }
.ps-chip:hover { color: var(--text-primary); background: #fff; border-color: var(--border-default); text-decoration: none; }
.ps-chip.on { color: var(--text-primary); background: var(--c-brand-bg); border-color: var(--c-brand-strong); font-weight: 700; }
@media (max-width: 600px){
  .page-strip-inner { flex-wrap: nowrap; align-items: center; gap: 8px; overflow: hidden; }
  .ps-lead { flex: 0 1 auto; flex-wrap: nowrap; overflow: hidden; }
  .ps-purpose { display: none; }
  .ps-anchors { flex-wrap: nowrap; overflow-x: auto; margin-left: 6px; padding-bottom: 2px; scrollbar-width: none; }
  .ps-anchors::-webkit-scrollbar { display: none; }
}

/* --- アンカースクロール（sticky header＋strip 分のオフセット＆スムーズ） --- */
html { scroll-behavior: smooth; }
:target { scroll-margin-top: calc(var(--header-h) + 60px); }
@media (prefers-reduced-motion: reduce){ html { scroll-behavior: auto; } }

/* --- メガメニュー（ヘッダー：ホバー/フォーカスでページ内セクションへドリルダウン） --- */
.nav-item { position: relative; display: inline-flex; }
.site-nav a .nav-chev { width: 12px; height: 12px; opacity: .45; margin-left: -3px; transition: transform var(--dur); }
.nav-item.has-mega.open > .nav-link .nav-chev { transform: rotate(180deg); }
.mega { position: absolute; top: calc(100% + 9px); left: 0; z-index: 70; min-width: 250px; max-width: 330px;
  opacity: 0; transform: translateY(-6px); pointer-events: none;
  transition: opacity var(--dur) var(--ease), transform var(--dur) var(--ease); }
.mega::before { content: ""; position: absolute; top: -12px; left: 0; right: 0; height: 14px; }   /* hover橋渡し */
.nav-item.has-mega.open > .mega { opacity: 1; transform: none; pointer-events: auto; }
.mega-inner { position: relative; background: var(--bg-default); border: 1px solid var(--border-subtle);
  border-radius: var(--radius-lg); box-shadow: var(--shadow-200); padding: 12px 12px 10px; }
.mega-head { display: flex; align-items: baseline; gap: 8px; padding: 0 6px; }
.mega-head-name { font-family: var(--font-display); font-weight: 700; font-size: var(--fs-body); color: var(--text-primary); }
.mega-head-meta { font-size: 11px; color: var(--text-tertiary); }
.mega-chalk { display: block; width: calc(100% - 8px); height: 6px; margin: 3px 4px 6px; overflow: visible; }
.mega-chalk path { fill: none; stroke: var(--c-ginkgo); stroke-width: 2.2; stroke-linecap: round;
  stroke-dasharray: 290; stroke-dashoffset: 290; transition: stroke-dashoffset .55s var(--ease) .04s; }
.nav-item.has-mega.open .mega-chalk path { stroke-dashoffset: 0; }
.mega-grid { display: grid; gap: 1px; }
.site-nav a.mega-item { display: flex; align-items: flex-start; gap: 10px; padding: 9px 10px; border-radius: var(--radius-md);
  color: var(--text-secondary); font-weight: 500; white-space: normal; }
.site-nav a.mega-item:hover { background: var(--c-brand-bg); color: var(--text-primary); }
.site-nav a.mega-item:focus-visible { background: var(--c-brand-bg); color: var(--text-primary); outline: none; box-shadow: inset 0 0 0 2px var(--c-brand-strong); }
.site-nav a.mega-item.on { background: var(--c-brand-bg); }
.mega-item-ic { width: 16px; height: 16px; opacity: .55; flex: none; margin-top: 2px; }
.mega-item-tx { display: flex; flex-direction: column; min-width: 0; }
.mega-item-label { font-weight: 700; color: var(--text-primary); font-size: var(--fs-sm); line-height: 1.3; }
.mega-item-sub { font-weight: 400; color: var(--text-tertiary); font-size: var(--fs-micro); margin-left: 6px; }
.mega-item-desc { font-size: var(--fs-caption); color: var(--text-secondary); line-height: 1.5; margin-top: 3px; }
@media (max-width: 860px){
  .nav-item { display: block; position: static; }
  .mega { display: none !important; }   /* モバイルはドロップダウンを出さず、stickyストリップのチップで代替 */
  .site-nav a .nav-chev { display: none; }
}
@media (prefers-reduced-motion: reduce){
  .mega { transition: none; }
  .mega-chalk path { transition: none; stroke-dashoffset: 0; }
  .site-nav a .nav-chev, .ps-chip { transition: none; }
}

/* ---------- Footer ---------- */
.site-footer { background: var(--c-school-deep); color: var(--text-ondark); margin-top: var(--space-20); }
.site-footer .container { padding-block: var(--space-10); }
.site-footer a { color: #cfe6df; }
.site-footer .foot-grid { display: flex; flex-wrap: wrap; gap: var(--space-8); justify-content: space-between; }
.site-footer h4 { font-family: var(--font-display); margin-bottom: var(--space-3); color: #fff; font-size: var(--fs-h4); }
.site-footer .muted { color: #9fbdb4; }
.site-footer ul li { margin-bottom: 6px; font-size: var(--fs-sm); }

/* ---------- Card ---------- */
.card {
  background: var(--bg-default); border: 1px solid var(--border-subtle);
  border-radius: var(--radius-lg); box-shadow: var(--shadow-50);
  padding: var(--space-5);
}
.card.pad-lg { padding: var(--space-6); }
.card.flat { box-shadow: none; }
.card-link { display: block; color: inherit; transition: transform var(--dur), box-shadow var(--dur), border-color var(--dur); position: relative; }
.card-link:hover { text-decoration: none; transform: translateY(-2px); box-shadow: var(--shadow-hover); border-color: var(--border-default); }
.card-link::after { content: "→"; position: absolute; right: var(--space-5); bottom: var(--space-4);
  color: var(--text-tertiary); opacity: 0; transition: opacity var(--dur), transform var(--dur); }
.card-link:hover::after { opacity: 1; transform: translateX(3px); }
.card-head { display: flex; align-items: center; gap: var(--space-3); margin-bottom: var(--space-4); }
.card-title { font-weight: 700; font-size: var(--fs-h4); }

/* ---------- KPI / Stat ---------- */
.stat { display: flex; flex-direction: column; gap: 4px; }
.stat-label { font-size: var(--fs-caption); color: var(--text-tertiary); font-weight: 500; display:flex; align-items:center; gap:6px; }
.stat-value { font-family: var(--font-display); font-size: 30px; font-weight: 700; line-height: 1.1; color: var(--text-primary); font-variant-numeric: tabular-nums; }
.stat-value .unit { font-size: 15px; font-weight: 700; color: var(--text-secondary); margin-left: 2px; font-family: var(--font-body); }
.stat-sub { font-size: var(--fs-caption); color: var(--text-tertiary); }
.delta { display: inline-flex; align-items: center; gap: 3px; font-size: var(--fs-caption); font-weight: 700; padding: 1px 7px; border-radius: var(--radius-full); }
.delta.up { color: var(--c-green); background: var(--c-green-wash); }
.delta.down { color: var(--c-red); background: var(--c-red-wash); }
.delta.flat { color: var(--text-tertiary); background: var(--bg-neutral); }

/* progress bar (達成率) */
.progress { height: 8px; border-radius: var(--radius-full); background: var(--bg-emphasis); overflow: hidden; }
.progress > i { display: block; height: 100%; border-radius: inherit; background: var(--c-brand-strong); }
.progress.good > i { background: var(--status-good); }
.progress.warn > i { background: var(--status-warn); }
.progress.risk > i { background: var(--status-risk); }

/* ---------- Badge / Chip ---------- */
.badge { display: inline-flex; align-items: center; gap: 5px; font-size: var(--fs-micro); font-weight: 700;
  padding: 2px 8px; border-radius: var(--radius-full); line-height: 1.6; white-space: nowrap; }
.badge.good { color: var(--c-green-deep); background: var(--status-good-bg); }
.badge.warn { color: var(--c-orange-deep); background: var(--status-warn-bg); }
.badge.risk { color: var(--c-red-700); background: var(--status-risk-bg); }
.badge.info { color: var(--c-blue-600); background: var(--status-info-bg); }
.badge.idle { color: var(--text-tertiary); background: var(--status-idle-bg); }
.badge.neutral { color: var(--text-secondary); background: var(--bg-emphasis); }
.badge.brand { color: var(--c-brown); background: var(--c-brand-bg); }
.badge.outline { background: transparent; border: 1px solid var(--border-default); color: var(--text-secondary); }
.tag { display:inline-flex; align-items:center; gap: 4px; font-size: var(--fs-micro); color: var(--text-secondary);
  background: var(--bg-neutral); border: 1px solid var(--border-subtle); padding: 1px 8px; border-radius: var(--radius-sm); }
.tag .ic { width: 1em; height: 1em; vertical-align: -0.12em; opacity: .7; flex: none; }
/* ★アイコン共通の既定サイズ。文脈別ルール（.badge .ic 等）は specificity で優先される。
   サイズ指定の無い .ic がviewBox既定(巨大)で描画されるバグ類型を全廃する安全網。 */
.ic { width: 1em; height: 1em; flex: none; vertical-align: -0.13em; }
/* 外部環境：先頭「全体の流れ」サマリ（脱AI＝全周border+影） */
.env-flow { display: flex; flex-wrap: wrap; align-items: stretch; gap: 8px; }
.env-flow-step { flex: 1 1 160px; min-width: 148px; background: var(--bg-default); border: 1px solid var(--border-subtle); border-radius: var(--radius-md); box-shadow: var(--shadow-50); padding: 12px 14px; }
.env-flow-arrow { display: inline-flex; align-items: center; color: var(--c-ginkgo-deep); font-weight: 700; font-size: 18px; flex: none; }
@media (max-width: 760px) { .env-flow-arrow { display: none; } }
.env-subsection { margin-top: 10px; }
.env-sub-h { font-family: var(--font-display); font-weight: 700; font-size: var(--fs-h3); color: var(--c-ginkgo-deep); padding-bottom: 6px; border-bottom: 2px solid var(--c-sand-2); }
/* 外部環境：アコーディオン（折りたたみで回遊） */
.env-acc-head { cursor: pointer; user-select: none; border-radius: var(--radius-md); transition: background var(--dur); }
.env-acc-head:hover { background: var(--bg-hover); }
.env-acc-head:hover h2 { color: var(--c-ginkgo-deep); }
.env-acc-head .sub { margin-left: 8px; }
.env-acc-chev { margin-left: auto; flex: none; color: var(--text-tertiary); transition: transform var(--dur) var(--ease); }
.env-acc-chev svg { width: 20px; height: 20px; display: block; }
.env-acc-head.open .env-acc-chev { transform: rotate(180deg); color: var(--c-ginkgo-deep); }
.env-acc-body[hidden] { display: none; }
.env-acc-body { margin-top: 16px; }
/* アコーディオン見出しの開閉affordance（「開く/閉じる」明示ラベル＋chevron）＝トグルと気づかせる */
.env-acc-toggle { margin-left: auto; display: inline-flex; align-items: center; gap: 7px; flex: none; }
.env-acc-toggle .env-acc-chev { margin-left: 0; }
.env-acc-hint { font-size: var(--fs-caption); font-weight: 700; color: var(--text-tertiary); background: var(--bg-subtle); border: 1px solid var(--border-default); border-radius: var(--radius-full); padding: 2px 11px; transition: background var(--dur), color var(--dur), border-color var(--dur); }
.env-acc-head:hover .env-acc-hint { background: var(--c-brand-bg); border-color: var(--c-brand-strong); color: var(--text-primary); }
.env-acc-head.open .env-acc-hint { background: var(--c-brand); border-color: var(--c-brand-strong); color: var(--text-onbrand); }
/* 市場ページの目次（各セクションへジャンプ） */
.mkt-toc { display: flex; flex-wrap: wrap; align-items: center; gap: 7px; margin: 16px 0 2px; }
.mkt-toc-h { font-size: var(--fs-caption); font-weight: 700; color: var(--text-tertiary); display: inline-flex; align-items: center; gap: 5px; margin-right: 4px; }
.mkt-toc-h .ic { width: 14px; height: 14px; flex: none; }
.mkt-toc-chip { border: 1px solid var(--border-default); background: var(--bg-default); color: var(--text-secondary); border-radius: var(--radius-full); padding: 5px 12px; font-size: var(--fs-caption); cursor: pointer; transition: background var(--dur), color var(--dur), border-color var(--dur); }
.mkt-toc-chip:hover { background: var(--c-brand); border-color: var(--c-brand-strong); color: var(--text-onbrand); }
/* ターゲット別に深掘り（市場機会の傘下＝ターゲット分析の統合・展開カード） */
.mkt-tgt { border: 1px solid var(--border-default); border-radius: var(--radius-lg); background: var(--bg-default); box-shadow: var(--shadow-50); margin-bottom: 10px; }
.mkt-tgt > summary { list-style: none; cursor: pointer; display: flex; align-items: center; gap: 10px; padding: 13px 16px; border-radius: var(--radius-lg); }
.mkt-tgt > summary::-webkit-details-marker { display: none; }
.mkt-tgt > summary:hover { background: var(--bg-subtle); }
.mkt-tgt-sum > .ic { width: 18px; height: 18px; flex: none; color: var(--c-ginkgo-deep); }
.mkt-tgt-name { font-weight: 700; font-size: var(--fs-body-lg); flex: none; }
.mkt-tgt-tag { color: var(--text-tertiary); font-size: var(--fs-sm); flex: 1; min-width: 0; }
.mkt-tgt-chev { margin-left: auto; color: var(--text-tertiary); display: inline-flex; transition: transform var(--dur); }
.mkt-tgt-chev .ic { width: 18px; height: 18px; }
.mkt-tgt[open] .mkt-tgt-chev { transform: rotate(180deg); color: var(--c-ginkgo-deep); }
.mkt-tgt-body { padding: 2px 16px 16px; }
.mkt-tgt-measures { margin: 0; padding-left: 1.2em; }
.mkt-tgt-measures li { margin: 5px 0; line-height: 1.6; color: var(--text-secondary); font-size: var(--fs-sm); }

/* status dot signal */
.signal { width: 9px; height: 9px; border-radius: var(--radius-full); flex: none; display:inline-block; }
.signal.good { background: var(--status-good); box-shadow: 0 0 0 3px var(--status-good-bg); }
.signal.warn { background: var(--status-warn); box-shadow: 0 0 0 3px var(--status-warn-bg); }
.signal.risk { background: var(--status-risk); box-shadow: 0 0 0 3px var(--status-risk-bg); }
.signal.idle { background: var(--status-idle); box-shadow: 0 0 0 3px var(--status-idle-bg); }

/* ---------- Buttons ---------- */
.btn { display: inline-flex; align-items: center; justify-content:center; gap: var(--space-2);
  padding: 9px 16px; border-radius: var(--radius-md); font-size: var(--fs-sm); font-weight: 700;
  border: 1px solid transparent; transition: background var(--dur), box-shadow var(--dur), transform var(--dur); }
.btn:hover { text-decoration: none; }
.btn:active { transform: translateY(1px); }
.btn-primary { background: var(--c-brand); color: var(--text-onbrand); box-shadow: var(--shadow-brand); }
.btn-primary:hover { background: var(--c-brand-strong); }
.btn-secondary { background: var(--bg-default); color: var(--text-primary); border-color: var(--border-default); }
.btn-secondary:hover { background: var(--bg-neutral); }
.btn-dark { background: var(--c-school); color: #fff; }
.btn-dark:hover { background: var(--c-school-deep); }
.btn-ghost { background: transparent; color: var(--text-secondary); }
.btn-ghost:hover { background: var(--bg-neutral); color: var(--text-primary); }
.btn.sm { padding: 6px 12px; font-size: var(--fs-caption); }

/* ---------- Table (sugao data table) ---------- */
.table-wrap { overflow-x: auto; border: 1px solid var(--border-subtle); border-radius: var(--radius-md); }
table.table { width: 100%; border-collapse: collapse; font-size: var(--fs-sm); background: var(--bg-default); }
.table thead th { background: var(--bg-neutral); color: var(--text-secondary); font-weight: 700; font-size: var(--fs-caption);
  text-align: left; padding: 10px 14px; border-bottom: 1px solid var(--border-default); white-space: nowrap; position: sticky; top: 0; }
.table tbody td { padding: 11px 14px; border-bottom: 1px solid var(--border-subtle); vertical-align: middle; }
.table tbody tr:last-child td { border-bottom: 0; }
.table tbody tr:hover { background: var(--bg-subtle); }
.table td.num, .table th.num { text-align: right; font-variant-numeric: tabular-nums; }
.table td.strong { font-weight: 700; }
.table .row-total td { background: var(--c-brand-bg2); font-weight: 700; }

/* ---------- Tabs ---------- */
.tabs { display: flex; gap: 2px; border-bottom: 1px solid var(--border-default); margin-bottom: var(--space-5); overflow-x:auto; }
.tabs button { background: none; border: 0; padding: 10px 14px; font-size: var(--fs-sm); font-weight: 700;
  color: var(--text-tertiary); border-bottom: 2px solid transparent; white-space: nowrap; }
.tabs button:hover { color: var(--text-secondary); }
.tabs button.active { color: var(--text-primary); border-bottom-color: var(--c-brand-strong); }

/* ---------- Chalkboard panel (みさわ signature) ---------- */
.chalkboard {
  background:
    radial-gradient(120% 140% at 12% 8%, rgba(255,255,255,.05), transparent 55%),
    linear-gradient(180deg, #0c352c 0%, #06251f 100%);
  border: 8px solid #6b4f2e;          /* 黒板の木枠 */
  border-radius: var(--radius-md);
  box-shadow: var(--shadow-200), inset 0 0 60px rgba(0,0,0,.35);
  color: var(--text-ondark);
  padding: var(--space-6) var(--space-6);
  position: relative;
}
.chalkboard h3, .chalkboard .ch-title { font-family: var(--font-display); color: #fff; }
.chalkboard .chalk-line { color: #eef3ec; }
.chalkboard .chalk-accent { color: var(--c-brand-48); }
.chalkboard a { color: var(--c-brand-76); }
.chalk-list li { display: flex; gap: var(--space-3); padding: 9px 0; border-bottom: 1px dashed rgba(244,241,232,.22); }
.chalk-list li:last-child { border-bottom: 0; }
.chalk-date { font-variant-numeric: tabular-nums; color: var(--c-brand-48); font-weight: 700; font-size: var(--fs-caption); flex:none; min-width: 84px; }

/* ---------- Hero ---------- */
.hero { position: relative; overflow: hidden; background: var(--c-school-deep); color: #fff; }
.hero .hero-bg { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; opacity: .42; }
.hero .hero-shade { position: absolute; inset: 0;
  background: linear-gradient(100deg, rgba(6,37,31,.94) 0%, rgba(6,37,31,.7) 46%, rgba(6,37,31,.25) 100%); }
.hero .hero-inner { position: relative; padding-block: var(--space-16); }
.hero .display { color: #fff; font-size: clamp(28px, 4.4vw, 52px); }
.hero .hero-lead { color: rgba(255,255,255,.82); font-size: var(--fs-body-lg); max-width: 640px; line-height: 1.8; }
.hero .ginkgo-accent { color: var(--c-brand); }

/* eyebrow on dark */
.hero .eyebrow { color: var(--c-brand-48); }
.hero .eyebrow::before { background: var(--c-brand); }

/* ---------- Source / freshness ---------- */
.source { display:inline-flex; align-items:center; gap: 5px; font-size: var(--fs-micro); color: var(--text-tertiary); }
.source .ic { width: 12px; height: 12px; opacity: .7; }
.fresh-dot { width: 7px; height: 7px; border-radius: 50%; display:inline-block; }
.fresh-fresh .fresh-dot { background: var(--status-good); }
.fresh-ok .fresh-dot { background: var(--status-warn); }
.fresh-stale .fresh-dot { background: var(--status-risk); }

/* ---------- Misc ---------- */
.divider { height: 1px; background: var(--border-subtle); border: 0; margin-block: var(--space-6); }
.kbd { font-family: var(--font-num); font-size: var(--fs-micro); background: var(--bg-emphasis); border:1px solid var(--border-default);
  border-radius: var(--radius-sm); padding: 1px 6px; }
.pill-row { display: flex; flex-wrap: wrap; gap: var(--space-2); }
.note { background: var(--bg-attention); border: 1px solid var(--c-brand-deep); border-radius: var(--radius-md);
  padding: var(--space-3) var(--space-4); font-size: var(--fs-sm); }
.note.info { background: var(--bg-selected); border-color: var(--c-blue-200); }
.note.risk { background: var(--bg-error); border-color: var(--c-red-300); }
.callout-q { font-family: var(--font-display); font-size: var(--fs-h3); color: var(--text-accent); }

/* reveal-on-scroll */
.reveal { opacity: 0; transform: translateY(14px); transition: opacity .5s var(--ease), transform .5s var(--ease); }
.reveal.in { opacity: 1; transform: none; }
@media (prefers-reduced-motion: reduce){ .reveal { opacity:1; transform:none; transition:none; } }

/* ---------- Charts ---------- */
.chart-card { background: var(--bg-default); border: 1px solid var(--border-subtle); border-radius: var(--radius-lg);
  box-shadow: var(--shadow-50); padding: var(--space-5); }
.donut-wrap { display: flex; align-items: center; gap: var(--space-6); flex-wrap: wrap; }
.donut-wrap > svg { flex: none; }
.chart-legend { flex: 1; min-width: 180px; }
.chart-legend li { display: flex; align-items: center; gap: var(--space-2); padding: 6px 0; font-size: var(--fs-sm); border-bottom: 1px dashed var(--border-subtle); }
.chart-legend li:last-child { border-bottom: 0; }
.chart-legend .dot { width: 10px; height: 10px; border-radius: 3px; flex: none; }
.chart-legend .lg-label { color: var(--text-secondary); }
.chart-legend .lg-val { margin-left: auto; font-weight: 700; font-variant-numeric: tabular-nums; }

/* ---------- KPI row ---------- */
.kpi-card { display: flex; flex-direction: column; gap: 6px; min-height: 118px; justify-content: center; position: relative; }
.kpi-card .spark { position: absolute; right: var(--space-4); top: var(--space-4); width: 110px; opacity: .9; }

/* ---------- Team signal grid ---------- */
.team-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(248px,1fr)); gap: var(--space-4); }
.team-chip { display: flex; flex-direction: column; gap: var(--space-2); padding: var(--space-4); background: var(--bg-default);
  border: 1px solid var(--border-subtle); border-radius: var(--radius-lg); box-shadow: var(--shadow-50);
  transition: transform var(--dur), box-shadow var(--dur), border-color var(--dur); color: inherit; }
a.team-chip:hover { text-decoration: none; transform: translateY(-2px); box-shadow: var(--shadow-hover); border-color: var(--border-default); }
.team-chip .tc-top { display: flex; align-items: center; gap: var(--space-2); }
.team-chip .tc-emoji { font-size: 18px; line-height: 1; }
.team-chip .tc-name { font-weight: 700; font-size: var(--fs-body); }
.team-chip .tc-owner { font-size: var(--fs-micro); color: var(--text-tertiary); margin-left: auto; }
.team-chip .tc-head { font-size: var(--fs-caption); color: var(--text-secondary); line-height: 1.6; min-height: 2.2em; }
.team-chip .tc-foot { display: flex; align-items: center; gap: var(--space-2); margin-top: 2px; }
.team-chip .tc-foot .fresh { margin-left: auto; font-size: var(--fs-micro); color: var(--text-tertiary); display: inline-flex; align-items: center; gap: 5px; }

/* ---------- Event list ---------- */
.event-list { display: flex; flex-direction: column; }
.event-row { display: flex; align-items: flex-start; gap: var(--space-3); padding: 12px 4px; border-bottom: 1px solid var(--border-subtle); }
.event-row:last-child { border-bottom: 0; }
.event-date { flex: none; min-width: 86px; font-variant-numeric: tabular-nums; font-weight: 700; font-size: var(--fs-sm); color: var(--text-primary); }
.event-date .wd { color: var(--text-tertiary); font-weight: 500; font-size: var(--fs-micro); margin-left: 2px; }
.event-body { flex: 1; font-size: var(--fs-sm); line-height: 1.55; }
.event-body .ev-team { font-size: var(--fs-micro); color: var(--text-tertiary); }
/* カテゴリ色は KaoNavi 流の小ドットで表示（一辺の色枠は使わない） */
.event-row { position: relative; padding-left: 14px; }
.event-row[class*="kind-"]::before { content: ""; position: absolute; left: 0; top: 15px;
  width: 7px; height: 7px; border-radius: var(--radius-full); background: var(--border-strong); }
.event-row.kind-deadline::before  { background: var(--c-red); }
.event-row.kind-booking::before   { background: var(--c-brand-strong); }
.event-row.kind-milestone::before { background: var(--c-green-500); }
.event-row.kind-meeting::before   { background: var(--c-blue); }
.event-row.kind-ops::before       { background: var(--border-strong); }

/* days-until pill */
.dleft { font-size: var(--fs-micro); font-weight: 700; padding: 1px 7px; border-radius: var(--radius-full); background: var(--bg-emphasis); color: var(--text-secondary); white-space: nowrap; }
.dleft.soon { background: var(--c-red-wash); color: var(--c-red-700); }
.dleft.today { background: var(--c-brand); color: #4a3a00; }

/* ---------- FY1 / point grid ---------- */
.fy1-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(200px,1fr)); gap: var(--space-3); }
.fy1-item { background: var(--bg-default); border: 1px solid var(--border-subtle); border-radius: var(--radius-md); padding: var(--space-4); }
.fy1-item .fy-label { font-size: var(--fs-micro); color: var(--text-tertiary); }
.fy1-item .fy-value { font-family: var(--font-display); font-size: 22px; font-weight: 700; color: var(--text-primary); line-height: 1.2; font-variant-numeric: tabular-nums; }
.fy1-item .fy-value .unit { font-size: 13px; color: var(--text-secondary); margin-left: 2px; }
.fy1-item .fy-note { font-size: var(--fs-micro); color: var(--text-tertiary); line-height: 1.5; margin-top: 4px; }

/* ---------- Bands ---------- */
.band-cream { background: var(--bg-cream); border-block: 1px solid var(--c-sand-2); }
.band-sand  { background: var(--bg-sand); }
.hero-cta { display: flex; flex-wrap: wrap; gap: var(--space-3); margin-top: var(--space-6); }

/* concept big quote */
.concept-quote { font-family: var(--font-display); font-size: clamp(20px, 2.6vw, 30px); line-height: 1.6; color: var(--text-primary); font-weight: 700; }
.concept-quote .hl { background: linear-gradient(transparent 62%, var(--c-brand-76) 62%); padding: 0 2px; }

/* split layout */
.split { display: grid; grid-template-columns: 1.35fr 1fr; gap: var(--space-6); align-items: start; }
@media (max-width: 900px){ .split { grid-template-columns: 1fr; } }

/* photo accents */
.photo-card { border-radius: var(--radius-lg); overflow: hidden; box-shadow: var(--shadow-100); position: relative; }
.photo-card img { width: 100%; height: 100%; object-fit: cover; display: block; }
.photo-cap { position: absolute; left: 0; right: 0; bottom: 0; padding: 18px 14px 10px;
  background: linear-gradient(transparent, rgba(6,37,31,.78)); color: #fff; font-size: var(--fs-caption); font-weight: 700; }

/* ---------- 今週のスポットライト（Mouse-Tracked Glow） ---------- */
.spotlight-card {
  position: relative; overflow: hidden; max-width: 680px;
  border-radius: var(--radius-lg); border: 1px solid var(--border-subtle);
  background: var(--bg-default); box-shadow: var(--shadow-100);
  padding: var(--space-6) var(--space-8); cursor: pointer;
  transition: box-shadow var(--dur), border-color var(--dur), transform var(--dur);
}
.spotlight-card:hover { transform: translateY(-2px); box-shadow: var(--shadow-brand); border-color: var(--c-brand-strong); }
.spotlight-glow {
  position: absolute; inset: -40%; pointer-events: none; transition: background .06s linear;
  background: radial-gradient(circle at var(--mx) var(--my), rgba(255,218,27,.22) 0%, transparent 60%);
}
.spotlight-body { position: relative; z-index: 1; }
.spotlight-who { font-family: var(--font-display); font-size: 28px; font-weight: 700; color: var(--text-primary); margin: 12px 0 4px; }
.spotlight-honorific { font-size: 16px; color: var(--text-secondary); margin-left: 4px; }
.spotlight-headline { font-size: var(--fs-body-lg); font-weight: 700; color: var(--text-secondary); margin: 6px 0 12px; line-height: var(--lh-snug); }
.spotlight-metric { margin: 0 0 14px; font-size: var(--fs-sm); }
.spotlight-hint { margin-top: 2px; }
@media (prefers-reduced-motion: reduce) {
  .spotlight-glow { display: none; }
  .spotlight-card { transition: none; }
  .spotlight-card:hover { transform: none; }
}
/* スポットライト モーダル */
#spotlight-modal { position: fixed; inset: 0; z-index: var(--z-modal); display: flex; align-items: center; justify-content: center; padding: 20px; }
#spotlight-modal[hidden] { display: none; }
.sm-backdrop { position: fixed; inset: 0; background: rgba(6,37,31,.55); backdrop-filter: blur(3px); z-index: 0; }
.sm-box { position: relative; z-index: 1; background: var(--bg-default); border-radius: var(--radius-xl); max-width: 480px; width: 100%; padding: 28px 24px; box-shadow: var(--shadow-200); }
.sm-head { margin-bottom: 14px; }
.sm-who { font-family: var(--font-display); font-size: var(--fs-h2); font-weight: 700; margin: 8px 0 4px; }
.sm-hl { font-size: var(--fs-body); color: var(--text-secondary); margin-bottom: 2px; }
.sm-episode { font-size: var(--fs-body); line-height: var(--lh-body); color: var(--text-secondary); border-top: 1px solid var(--border-subtle); padding-top: 14px; margin-top: 4px; }

/* ---------- アイデア室（idea board） ---------- */
.idea-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); gap: var(--space-4); align-items: start; }
#ideas-grid > .idea-grid { margin-top: 2px; }
.idea-cluster-sec + .idea-cluster-sec { margin-top: var(--space-6); }
.idea-card { text-align: left; font: inherit; background: var(--bg-default); border: 1px solid var(--border-subtle); border-radius: var(--radius-lg); box-shadow: var(--shadow-100); padding: var(--space-5); cursor: pointer; display: flex; flex-direction: column; gap: 10px; transition: box-shadow var(--dur), border-color var(--dur), transform var(--dur); }
.idea-card:hover { transform: translateY(-2px); box-shadow: var(--shadow-brand); border-color: var(--c-brand-strong); }
.idea-card-head { display: flex; align-items: flex-start; gap: 10px; }
.idea-emoji { font-size: 26px; line-height: 1; flex: none; }
.idea-emoji.lg { font-size: 42px; }
.idea-who { display: flex; flex-direction: column; min-width: 0; flex: 1; }
.idea-name { font-family: var(--font-display); font-weight: 700; color: var(--text-primary); }
.idea-name.lg { font-size: var(--fs-h3); }
.idea-grade { font-size: var(--fs-micro); color: var(--text-tertiary); margin-top: 2px; }
.idea-cluster { flex: none; align-self: flex-start; }
.idea-oneline { color: var(--text-secondary); line-height: var(--lh-snug); font-weight: 500; flex: 1; margin: 0; }
.idea-more { font-size: var(--fs-sm); color: var(--c-brand-strong); font-weight: 700; }
.idea-tags { display: flex; flex-wrap: wrap; gap: 5px; }
.idea-tag { font-size: var(--fs-micro); color: var(--text-tertiary); background: var(--bg-emphasis); border-radius: var(--radius-full); padding: 2px 9px; line-height: 1.5; }
/* 詳細モーダル */
#idea-modal, #sol-modal { position: fixed; inset: 0; z-index: var(--z-modal); display: flex; align-items: flex-start; justify-content: center; padding: 4vh 16px; overflow-y: auto; }
#idea-modal[hidden], #sol-modal[hidden] { display: none; }
.idea-box { position: relative; z-index: 1; background: var(--bg-default); border-radius: var(--radius-xl); max-width: 820px; width: 100%; padding: 30px 28px 34px; box-shadow: var(--shadow-200); margin: auto; }
.idea-close { position: absolute; top: 14px; right: 14px; width: 34px; height: 34px; border-radius: 50%; border: 1px solid var(--border-subtle); background: var(--bg-default); cursor: pointer; font-size: 15px; color: var(--text-secondary); }
.idea-close:hover { background: var(--bg-emphasis); }
.idea-detail-head { display: flex; gap: 16px; align-items: flex-start; margin-bottom: 16px; padding-right: 30px; }
.idea-persona { font-size: var(--fs-sm); color: var(--text-secondary); margin-top: 6px; line-height: var(--lh-snug); }
.idea-title { font-family: var(--font-display); font-size: var(--fs-h3); margin: 8px 0 8px; color: var(--text-primary); }
.idea-quote { font-weight: 700; color: var(--c-brand-strong); background: var(--c-brand-bg); padding: 10px 14px; border-radius: 8px; margin: 0 0 14px; line-height: var(--lh-snug); }
.idea-summary { color: var(--text-secondary); line-height: var(--lh-body); margin: 0 0 16px; }
.idea-visual { background: #202226; color: #e8e8ea; border-radius: 10px; padding: 14px 16px; font-size: var(--fs-sm); line-height: var(--lh-snug); margin-bottom: 18px; }
.idea-visual-label { display: inline-block; font-weight: 700; color: var(--c-brand); margin-right: 8px; font-size: var(--fs-micro); letter-spacing: .05em; }
.idea-figure { margin: 0 0 18px; border-radius: 12px; overflow: hidden; border: 1px solid var(--border-subtle); }
.idea-figure img { display: block; width: 100%; height: 210px; object-fit: cover; background: var(--c-school-deep); }
.idea-figure-cap { display: block; padding: 11px 15px; font-size: var(--fs-sm); line-height: var(--lh-snug);
  color: #eaf3ee; background: linear-gradient(165deg, #0b3a31, #02241d); }
.idea-figure-tag { display: inline-block; font-size: var(--fs-micro); font-weight: 700; color: var(--c-brand);
  margin-right: 8px; letter-spacing: .06em; vertical-align: 1px; }

/* --- お客様の構成（客層ビュー・玄関） --- */
.cust-stack { display: flex; height: 26px; border-radius: var(--radius-full); overflow: hidden; margin-bottom: 18px; border: 1px solid var(--border-subtle); }
.cust-seg-fill { height: 100%; transition: opacity var(--dur); }
.cust-seg-fill:hover { opacity: .82; }
.cust-rows { display: grid; gap: 1px; margin-bottom: 26px; }
.cust-row { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 12px; padding: 10px 12px; border-radius: var(--radius-md); }
.cust-row:hover { background: var(--bg-neutral); }
.cust-dot { width: 10px; height: 10px; border-radius: 50%; flex: none; }
.cust-label { font-weight: 700; color: var(--text-primary); min-width: 108px; }
.cust-pct { font-family: var(--font-display); font-weight: 700; color: var(--text-primary); min-width: 34px; }
.cust-people { color: var(--text-tertiary); font-size: var(--fs-caption); white-space: nowrap; }
.cust-who { flex: 1 1 300px; color: var(--text-secondary); font-size: var(--fs-caption); line-height: 1.55; }
.cust-persona-head { font-family: var(--font-display); font-weight: 700; font-size: var(--fs-h4); margin: 4px 0 12px; }
.cust-persona { background: var(--bg-default); border: 1px solid var(--border-subtle); border-radius: var(--radius-lg); padding: 14px 16px; }
.cust-persona-top { display: flex; gap: 10px; align-items: center; margin-bottom: 8px; }
.cust-persona-emoji { font-size: 22px; flex: none; }
.cust-persona-title { display: block; font-weight: 700; font-family: var(--font-display); color: var(--text-primary); }
.cust-persona-from { display: block; font-size: var(--fs-micro); color: var(--text-tertiary); }
.cust-persona-detail { font-size: var(--fs-sm); color: var(--text-secondary); line-height: 1.7; margin: 0; }
.cust-gaps { margin-top: 14px; }
.cust-gaps > summary { cursor: pointer; font-size: var(--fs-sm); font-weight: 700; color: var(--text-tertiary); padding: 8px 0; }
.cust-known ul { margin: 6px 0 10px; padding-left: 20px; }
.cust-known li { font-size: var(--fs-sm); color: var(--text-secondary); line-height: 1.7; }

/* --- 販路とプラン（market：掲載チャネル台帳） --- */
.ch-plans-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 14px; }
.ch-plan { background: var(--bg-default); border: 1px solid var(--border-subtle); border-radius: var(--radius-lg); padding: 16px; }
.ch-plan-name { font-family: var(--font-display); font-weight: 700; font-size: var(--fs-h4); margin-bottom: 8px; }
.ch-plan-price { font-family: var(--font-display); font-weight: 700; font-size: 22px; color: var(--text-primary); }
.ch-plan-pricen { font-size: var(--fs-caption); color: var(--text-tertiary); font-weight: 400; margin-left: 6px; }
.ch-plan-inc { font-size: var(--fs-sm); color: var(--text-secondary); line-height: 1.6; margin: 8px 0; }
.ch-plan-meta { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; }
.ch-plan-ch { font-size: var(--fs-caption); color: var(--text-tertiary); }
.ch-sub { font-family: var(--font-display); font-size: var(--fs-h4); margin: 8px 0 12px; }
.ch-pf-list { display: grid; grid-template-columns: repeat(2, 1fr); gap: 8px; }
.ch-pf { display: flex; align-items: center; gap: 10px; padding: 9px 12px; background: var(--bg-subtle); border-radius: var(--radius-md); font-size: var(--fs-sm); }
.ch-pf-name { font-weight: 700; min-width: 132px; }
.ch-pf-fee { color: var(--text-tertiary); font-size: var(--fs-caption); flex: 1 1 auto; }
@media (max-width: 720px){ .ch-plans-grid, .ch-pf-list { grid-template-columns: 1fr; } }

/* --- 課題から考えるヒント（ideas：課題×解決） --- */
.sol-card { background: var(--bg-default); border: 1px solid var(--border-subtle); border-radius: var(--radius-lg); padding: 16px 18px; }
.sol-head { display: flex; align-items: center; gap: 8px; margin-bottom: 10px; flex-wrap: wrap; }
.sol-emoji { font-size: 22px; }
.sol-team { text-decoration: none; }
.sol-problem { font-size: var(--fs-body); color: var(--text-primary); font-weight: 600; line-height: 1.6; margin-bottom: 10px; }
.sol-q { display: inline-block; font-size: var(--fs-micro); font-weight: 700; color: var(--c-red-600); background: var(--c-red-wash); border-radius: var(--radius-sm); padding: 1px 7px; margin-right: 8px; }
.sol-hint { font-size: var(--fs-sm); color: var(--text-secondary); line-height: 1.75; }
.sol-a { display: inline-block; font-size: var(--fs-micro); font-weight: 700; color: var(--c-green-deep); background: var(--c-green-wash); border-radius: var(--radius-sm); padding: 1px 7px; margin-right: 8px; }
.sol-tools { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 12px; }
.sol-tool { font-size: var(--fs-micro); color: var(--text-tertiary); background: var(--bg-subtle); border: 1px solid var(--border-subtle); border-radius: var(--radius-full); padding: 2px 10px; }
/* sol-card は button 化したので見た目を整える＋クリック可演出 */
.sol-card { width: 100%; text-align: left; font: inherit; cursor: default; display: block; }
.sol-card.clk { cursor: pointer; transition: border-color .14s, box-shadow .14s, transform .08s; }
.sol-card.clk:hover { border-color: var(--c-brand-strong); box-shadow: var(--shadow-hover, 0 6px 20px rgba(0,0,0,.1)); }
.sol-card.clk:active { transform: translateY(1px); }
.sol-card.clk:focus-visible { outline: 2px solid var(--c-brand); outline-offset: 2px; }
.sol-cta { margin-top: 13px; padding-top: 11px; border-top: 1px dashed var(--border-subtle); font-size: var(--fs-caption); font-weight: 700; color: var(--c-ginkgo-deep); display: inline-flex; align-items: center; gap: 5px; }
.sol-cta .ic { width: 1.05em; height: 1.05em; vertical-align: -0.16em; }
/* 課題ヒント → 5人モーダル */
.sol-box { max-width: 760px; }
.sol-modal-eyebrow { font-size: var(--fs-micro); font-weight: 700; color: var(--text-tertiary); letter-spacing: .04em; margin-bottom: 10px; }
.sol-modal-eyebrow .ic { width: 1.05em; height: 1.05em; vertical-align: -0.16em; color: var(--c-ginkgo-deep); }
.sol-modal-problem { font-family: var(--font-display); font-weight: 700; font-size: 18px; color: var(--text-primary); line-height: 1.55; margin-bottom: 10px; }
.sol-modal-hint { font-size: var(--fs-sm); color: var(--text-secondary); line-height: 1.75; background: var(--bg-subtle); border-radius: var(--radius-md); padding: 11px 13px; }
.sol-st-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.sol-st-card { display: flex; gap: 11px; text-align: left; font: inherit; background: var(--bg-default); border: 1px solid var(--border-subtle); border-radius: var(--radius-md); padding: 13px; cursor: pointer; transition: border-color .14s, box-shadow .14s, transform .08s; align-items: flex-start; }
.sol-st-card:hover { border-color: var(--c-brand-strong); box-shadow: var(--shadow-hover, 0 6px 20px rgba(0,0,0,.1)); }
.sol-st-card:active { transform: translateY(1px); }
.sol-st-av { width: 38px; height: 38px; border-radius: 50%; color: #fff; font-family: var(--font-display); font-weight: 800; font-size: 15px; display: flex; align-items: center; justify-content: center; flex: none; }
.sol-st-av.lg { width: 48px; height: 48px; font-size: 19px; }
.sol-st-main { display: flex; flex-direction: column; gap: 3px; min-width: 0; flex: 1; }
.sol-st-name { font-family: var(--font-display); font-weight: 700; font-size: var(--fs-sm); color: var(--text-primary); }
.sol-st-name.lg { font-size: 18px; }
.sol-st-grade { font-family: var(--font-body); font-weight: 400; font-size: var(--fs-micro); color: var(--text-tertiary); }
.sol-st-persona { font-size: var(--fs-micro); color: var(--c-ginkgo-deep); font-weight: 700; }
.sol-st-persona2 { font-size: var(--fs-caption); color: var(--text-secondary); margin-top: 3px; line-height: 1.5; }
.sol-st-title { font-weight: 700; font-size: var(--fs-sm); color: var(--text-primary); margin-top: 3px; line-height: 1.4; }
.sol-st-one { font-size: var(--fs-caption); color: var(--text-secondary); line-height: 1.6; }
.sol-st-foot { display: flex; flex-wrap: wrap; align-items: center; gap: 5px; margin-top: 5px; }
.sol-st-more { font-size: var(--fs-micro); color: var(--text-tertiary); white-space: nowrap; align-self: center; }
.sol-real { font-size: 10px; font-weight: 700; padding: 1px 8px; border-radius: var(--radius-full); white-space: nowrap; }
.sol-real-lo { background: rgba(48,161,67,.13); color: #277a38; }
.sol-real-hi { background: rgba(224,136,58,.16); color: #b5671f; }
.sol-back { background: none; border: none; color: var(--c-ginkgo-deep); font-size: var(--fs-caption); font-weight: 700; cursor: pointer; padding: 0; margin-bottom: 12px; display: block; }
.sol-back:hover { text-decoration: underline; }
.sol-detail-head { display: flex; gap: 13px; align-items: center; margin-bottom: 8px; }
.sol-d-title { font-family: var(--font-display); font-weight: 700; font-size: 20px; color: var(--text-primary); margin: 10px 0 6px; line-height: 1.4; }
.sol-d-quote { font-size: var(--fs-body); color: var(--c-ginkgo-deep); font-weight: 600; line-height: 1.7; margin: 0 0 10px; }
.sol-d-summary { font-size: var(--fs-sm); color: var(--text-secondary); line-height: 1.8; }
.sol-steps { display: flex; flex-direction: column; gap: 8px; }
.sol-step { display: flex; gap: 10px; align-items: flex-start; }
.sol-step-n { width: 24px; height: 24px; border-radius: 50%; background: var(--c-brand); color: var(--text-onbrand); font-family: var(--font-display); font-weight: 800; font-size: 13px; display: flex; align-items: center; justify-content: center; flex: none; }
.sol-step span:last-child { font-size: var(--fs-sm); color: var(--text-secondary); line-height: 1.65; padding-top: 2px; }
.sol-two { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; margin-top: 16px; }
.sol-block { border-radius: var(--radius-md); padding: 12px 14px; }
.sol-block.effect { background: rgba(48,161,67,.08); border: 1px solid rgba(48,161,67,.2); }
.sol-block.concern { background: rgba(224,136,58,.08); border: 1px solid rgba(224,136,58,.2); }
.sol-block p { font-size: var(--fs-sm); color: var(--text-secondary); line-height: 1.7; margin: 0; }
@media (max-width: 640px){ .sol-st-grid, .sol-two { grid-template-columns: 1fr; } }

/* --- 視聴覚室（AI活用：4軸詳細＋4層＋半年スパン候補） --- */
.ai-layers-row.ai-layers-4 { display: flex; align-items: stretch; gap: 6px; flex-wrap: wrap; }
.ai-layers-row.ai-layers-4 .ai-layer { flex: 1 1 0; min-width: 150px; }
.ai-legend { display: flex; flex-wrap: wrap; gap: 14px; margin-bottom: 16px; }
.ai-leg { display: inline-flex; align-items: center; gap: 6px; font-size: var(--fs-caption); color: var(--text-tertiary); }
.ai-leg-dot { width: 10px; height: 10px; border-radius: 50%; flex: none; }
.ai-leg b { color: var(--text-primary); margin-right: 4px; }
.ai-axis { display: flex; gap: 10px; padding: 8px 0; border-bottom: 1px solid var(--border-subtle); font-size: var(--fs-sm); }
.ai-flow .ai-axis:first-of-type { border-top: 1px solid var(--border-subtle); margin-top: 6px; }
.ai-axis-k { flex: none; width: 84px; font-weight: 700; color: var(--text-tertiary); font-size: var(--fs-caption); line-height: 1.7; }
.ai-axis-v { color: var(--text-secondary); line-height: 1.7; }
.ai-axis-proc { align-items: flex-start; }
.ai-proc-list { margin: 0; padding-left: 18px; color: var(--text-secondary); line-height: 1.7; }
.ai-proc-list li { margin-bottom: 3px; }
.ai-detail { margin-top: 10px; }
.ai-detail > summary { cursor: pointer; font-size: var(--fs-caption); font-weight: 700; color: var(--text-tertiary); }
.ai-detail p { font-size: var(--fs-sm); color: var(--text-secondary); line-height: 1.7; margin: 8px 0 0; }
@media (max-width: 900px){ .ai-layers-row.ai-layers-4 { flex-direction: column; } .ai-layers-row.ai-layers-4 .ai-arrow { transform: rotate(90deg); } }

/* --- アイデア室の体系化（クラスタ別セクション＋タグ絞り込み） --- */
.idea-cluster-sec { margin-bottom: 32px; }
.idea-cluster-h { font-family: var(--font-display); font-size: var(--fs-h3); display: flex; align-items: center; gap: 8px;
  margin: 0 0 14px; padding-bottom: 8px; border-bottom: 2px solid var(--c-sand-2); }
.idea-cluster-emoji { font-size: 20px; }
.idea-cluster-n { font-size: var(--fs-sm); color: var(--text-tertiary); font-weight: 400; }
.idea-filt-row { display: flex; flex-wrap: wrap; gap: 6px; margin-bottom: 12px; }
.idea-tagcloud { display: flex; flex-wrap: wrap; gap: 6px; align-items: center; }
.idea-tagcloud-h { font-size: var(--fs-caption); color: var(--text-tertiary); font-weight: 700; margin-right: 2px; }
.idea-tag { cursor: pointer; transition: background var(--dur), color var(--dur), border-color var(--dur); }
.idea-tag:hover { background: var(--c-brand-bg); color: var(--text-primary); }
.idea-tag.on { background: var(--c-brand); color: var(--text-onbrand); cursor: default; }
.idea-tagbar { display: flex; align-items: center; gap: 10px; margin-bottom: 18px; font-size: var(--fs-sm); color: var(--text-secondary); flex-wrap: wrap; }
.idea-tag-clear { border: 0; background: var(--bg-neutral); border-radius: var(--radius-full); padding: 4px 13px; cursor: pointer; font-size: var(--fs-caption); color: var(--text-secondary); }
.idea-tag-clear:hover { background: var(--c-red-wash); color: var(--c-red); }
/* チーム（クラス）軸：発明クラブのカード上のチームバッジ＋クラスで絞るフィルタ行 */
.idea-teamtags { display: flex; flex-wrap: wrap; gap: 5px; margin-top: 1px; }
.idea-teamtag { display: inline-flex; align-items: center; gap: 3px; font-size: var(--fs-micro); color: var(--text-secondary); background: var(--c-brand-bg); border: 1px solid var(--border-subtle); border-radius: var(--radius-full); padding: 2px 9px; line-height: 1.5; cursor: pointer; transition: background var(--dur), color var(--dur), border-color var(--dur); }
.idea-teamtag:hover { background: var(--c-brand); color: var(--text-onbrand); border-color: var(--c-brand); }
/* チップ内アイコンのサイズを固定（無指定だとSVGが暴れてサイズ不揃い・はみ出し・非表示の原因に） */
.idea-teamtag .ic { width: 1em; height: 1em; flex: none; }
.idea-tag .ic { width: 1em; height: 1em; vertical-align: -0.13em; flex: none; }
.idea-team-row { align-items: center; }
.idea-filt-lab { font-size: var(--fs-sm); color: var(--text-tertiary); display: inline-flex; align-items: center; gap: 4px; margin-right: 2px; }
.idea-filt-lab .ic { width: 1.1em; height: 1.1em; vertical-align: -0.18em; color: var(--c-ginkgo-deep); }

/* --- 中期経営計画ロードマップ（numbers：要望1） --- */
.mt-pillars { display: grid; grid-template-columns: repeat(2, 1fr); gap: 12px; margin-bottom: 24px; }
.mt-pillar { display: block; background: var(--bg-default); border: 1px solid var(--border-subtle); border-radius: var(--radius-lg); padding: 14px 16px; text-decoration: none; }
.mt-pillar:hover { box-shadow: var(--shadow-hover); text-decoration: none; }
.mt-pillar-h { display: flex; align-items: center; gap: 8px; margin-bottom: 8px; }
.mt-pillar-n { font-family: var(--font-display); font-weight: 700; font-size: 18px; color: var(--c-ginkgo); }
.mt-pillar-name { font-weight: 700; color: var(--text-primary); }
.mt-pillar-impact { font-family: var(--font-display); font-weight: 700; color: var(--text-primary); font-size: var(--fs-body); margin-bottom: 6px; }
.mt-pillar-detail { font-size: var(--fs-sm); color: var(--text-secondary); line-height: 1.7; margin: 0; }
.mt-sub { font-family: var(--font-display); font-size: var(--fs-h4); margin: 18px 0 12px; }
.mt-roads { display: grid; gap: 10px; margin-bottom: 8px; }
.mt-road { display: grid; grid-template-columns: 156px 1fr; gap: 4px 14px; align-items: center; }
.mt-road-fy { font-weight: 700; font-size: var(--fs-sm); display: flex; gap: 6px; align-items: center; }
.mt-road-bar { position: relative; background: var(--bg-emphasis); border-radius: var(--radius-full); height: 22px; overflow: hidden; }
.mt-road-bar i { display: block; height: 100%; background: linear-gradient(90deg, var(--c-brand), var(--c-ginkgo)); border-radius: var(--radius-full); }
.mt-road-val { position: absolute; right: 10px; top: 50%; transform: translateY(-50%); font-weight: 700; font-size: var(--fs-sm); color: var(--text-primary); }
.mt-road-sub { grid-column: 2; font-size: var(--fs-caption); color: var(--text-tertiary); }
.mt-road-theme { grid-column: 1 / -1; font-size: var(--fs-caption); color: var(--text-secondary); padding-bottom: 9px; border-bottom: 1px dashed var(--border-subtle); }
@media (max-width: 640px){ .mt-pillars { grid-template-columns: 1fr; } .mt-road { grid-template-columns: 1fr; } .mt-road-sub, .mt-road-theme { grid-column: 1; } }

/* --- 職員室の名簿（members：もう一つの顔） --- */
.members-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 14px; }
.mem-section { margin-bottom: 30px; }
.mem-section-h { font-family: var(--font-display); font-size: var(--fs-h3); display: flex; align-items: center; gap: 8px;
  margin: 0 0 14px; padding-bottom: 8px; border-bottom: 2px solid var(--c-sand-2); }
.mem-section-emoji { font-size: 20px; }
.mem-section-n { font-size: var(--fs-sm); color: var(--text-tertiary); font-weight: 400; }
.mem-card { text-align: left; background: var(--bg-default); border: 1px solid var(--border-subtle); border-radius: var(--radius-lg);
  padding: 16px; cursor: pointer; display: flex; flex-direction: column; transition: box-shadow var(--dur), transform var(--dur); }
.mem-card:hover { box-shadow: var(--shadow-hover); transform: translateY(-2px); }
.mem-card-top { display: flex; gap: 12px; align-items: center; margin-bottom: 10px; }
.mem-avatar { display: inline-flex; align-items: center; justify-content: center; border-radius: 50%; color: #fff;
  font-family: var(--font-display); font-weight: 700; flex: none; box-shadow: var(--shadow-50); }
.mem-avatar-img { object-fit: cover; padding: 0; }
.mem-who { display: flex; flex-direction: column; min-width: 0; }
.mem-name { font-family: var(--font-display); font-weight: 700; color: var(--text-primary); font-size: var(--fs-body); }
.mem-name.lg { font-size: var(--fs-h2); }
.mem-nick { font-size: var(--fs-micro); color: var(--text-tertiary); margin-left: 8px; font-weight: 400; }
.mem-kana { font-size: var(--fs-caption); color: var(--text-tertiary); }
.mem-title { font-size: var(--fs-sm); color: var(--text-secondary); line-height: 1.4; margin-top: 2px; }
.mem-catch { font-family: var(--font-display); font-weight: 700; font-size: var(--fs-body); color: var(--text-primary); line-height: 1.5; margin: 0 0 10px; }
.mem-dayjob { background: var(--c-brand-bg); border-radius: var(--radius-md);
  padding: 8px 11px; font-size: var(--fs-sm); color: var(--text-primary); margin-bottom: 10px; line-height: 1.5; }
.mem-dayjob-k { display: inline-block; font-size: var(--fs-micro); font-weight: 700; color: var(--c-ginkgo-deep);
  background: #fff; border-radius: var(--radius-full); padding: 1px 8px; margin-right: 7px; }
.mem-teams { display: flex; flex-wrap: wrap; gap: 4px; margin-bottom: 8px; }
.mem-team { font-size: var(--fs-micro); color: var(--text-secondary); background: var(--bg-subtle); border-radius: var(--radius-full); padding: 1px 8px; }
.mem-tags { display: flex; flex-wrap: wrap; gap: 5px; margin-bottom: 12px; }
.mem-tag { font-size: var(--fs-micro); color: var(--c-school); background: var(--c-green-wash); border: 1px solid var(--c-green-bg);
  border-radius: var(--radius-full); padding: 1px 9px; cursor: pointer; transition: background var(--dur); }
.mem-tag:hover { background: var(--c-green-bg); }
.mem-tag.on { background: var(--c-brand); color: var(--text-onbrand); }
.mem-more { font-size: var(--fs-caption); color: var(--c-ginkgo-deep); font-weight: 700; margin-top: auto; }
.mem-skillbar { grid-column: 1 / -1; display: flex; align-items: center; gap: 10px; font-size: var(--fs-sm); color: var(--text-secondary); margin-bottom: 4px; flex-wrap: wrap; }
#mem-modal { position: fixed; inset: 0; z-index: var(--z-modal); display: flex; align-items: flex-start; justify-content: center; padding: 4vh 16px; overflow-y: auto; }
#mem-modal[hidden] { display: none; }
.mem-box { position: relative; z-index: 1; background: var(--bg-default); border-radius: var(--radius-xl); max-width: 640px; width: 100%; padding: 28px 26px; box-shadow: var(--shadow-200); margin: auto; }
.mem-detail-head { display: flex; gap: 16px; align-items: center; margin-bottom: 14px; }
.mem-intro { font-size: var(--fs-body); color: var(--text-secondary); line-height: var(--lh-body); margin: 0 0 14px; }
.mem-block { border-radius: var(--radius-md); padding: 12px 14px; margin-top: 10px; }
.mem-block-job { background: var(--c-brand-bg); }
.mem-block-hl { background: var(--c-green-wash); }
.mem-block-consult { background: var(--c-blue-wash); }
.mem-block-h { font-family: var(--font-display); font-weight: 700; font-size: var(--fs-sm); color: var(--text-primary); margin-bottom: 5px; }
.mem-block p { font-size: var(--fs-sm); color: var(--text-secondary); line-height: 1.7; margin: 0; }
@media (max-width: 900px){ .members-grid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 600px){ .members-grid { grid-template-columns: 1fr; } }

/* --- 品質を磨く質問（questions） --- */
.q-member { margin-bottom: 28px; }
.q-member-h { display: flex; align-items: center; gap: 10px; margin-bottom: 12px; padding-bottom: 8px; border-bottom: 2px solid var(--c-sand-2); }
.q-to-av { display: inline-flex; align-items: center; justify-content: center; width: 32px; height: 32px; border-radius: 50%;
  color: #fff; font-family: var(--font-display); font-weight: 700; font-size: 14px; flex: none; }
.q-to-av.lg { width: 40px; height: 40px; font-size: 18px; }
.q-member-name { font-family: var(--font-display); font-weight: 700; font-size: var(--fs-h4); color: var(--text-primary); }
.q-member-team { font-size: var(--fs-caption); color: var(--text-tertiary); font-weight: 400; margin-left: 8px; }
.q-member-n { margin-left: auto; font-size: var(--fs-sm); color: var(--text-tertiary); }
.q-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 12px; }
.q-card { position: relative; background: var(--bg-default); border: 1px solid var(--border-subtle); border-radius: var(--radius-lg); padding: 14px 16px 14px 24px; }
.q-card::before { content: ""; position: absolute; left: 12px; top: 18px; width: 7px; height: 7px; border-radius: var(--radius-full); background: var(--border-default); }
/* 質問カテゴリ色は KaoNavi 流の小ドットで表示 */
.q-card.q-cat-direct::before  { background: var(--status-warn); }
.q-card.q-cat-aim::before     { background: var(--c-blue); }
.q-card.q-cat-fact::before    { background: var(--status-good); }
.q-card.q-cat-gap::before     { background: var(--status-risk); }
.q-card.q-cat-purpose::before { background: var(--text-tertiary); }
.q-card-meta { display: flex; gap: 8px; align-items: center; margin-bottom: 8px; flex-wrap: wrap; }
.q-team { font-size: var(--fs-micro); color: var(--text-tertiary); background: var(--bg-subtle); border-radius: var(--radius-full); padding: 1px 8px; }
.q-text { font-size: var(--fs-sm); color: var(--text-primary); line-height: 1.7; margin: 0; }
.q-to { display: flex; align-items: center; gap: 7px; margin-top: 10px; font-size: var(--fs-caption); color: var(--text-secondary); font-weight: 700; }
.q-to .q-to-av { width: 22px; height: 22px; font-size: 11px; }
@media (max-width: 720px){ .q-grid { grid-template-columns: 1fr; } }
.idea-two { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; margin-bottom: 16px; }
.idea-three { display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px; margin-bottom: 8px; }
.idea-block { background: var(--bg-emphasis); border: 1px solid var(--border-subtle); border-radius: 10px; padding: 12px 14px; }
.idea-block-h { font-weight: 700; font-size: var(--fs-sm); color: var(--text-primary); margin-bottom: 6px; }
.idea-block-h .ic { width: 1.1em; height: 1.1em; vertical-align: -0.18em; margin-right: 5px; color: var(--c-ginkgo-deep); }
.idea-block > p { font-size: var(--fs-sm); color: var(--text-secondary); line-height: var(--lh-snug); margin: 0; }
.idea-bullets { margin: 0; padding-left: 18px; }
.idea-bullets li { font-size: var(--fs-sm); color: var(--text-secondary); line-height: var(--lh-snug); margin-bottom: 5px; }
.idea-experts { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; margin-top: 8px; }
.idea-expert { background: var(--c-brand-bg); border-radius: 10px; padding: 12px 14px; }
.idea-expert-lens { font-weight: 700; font-size: var(--fs-sm); color: var(--text-primary); margin-bottom: 4px; }
.idea-expert-point { font-size: var(--fs-sm); color: var(--text-secondary); line-height: var(--lh-snug); }
/* 専門家ゼミ（チャット対話・デフォルトはトグル閉じ） */
.idea-chat { margin-top: 18px; border: 1px solid var(--border-subtle); border-radius: var(--radius-md); background: var(--bg-default); overflow: hidden; }
.idea-chat > summary { list-style: none; cursor: pointer; display: flex; align-items: center; gap: 8px; padding: 12px 14px; font-family: var(--font-display); font-weight: 700; font-size: var(--fs-sm); color: var(--text-primary); background: var(--c-brand-bg); }
.idea-chat > summary::-webkit-details-marker { display: none; }
.idea-chat > summary .ic { width: 1.05em; height: 1.05em; flex: none; color: var(--c-ginkgo-deep); }
.idea-chat > summary .idea-chat-n { margin-left: auto; font-size: var(--fs-micro); font-weight: 600; color: var(--text-tertiary); }
.idea-chat[open] > summary { border-bottom: 1px solid var(--border-subtle); }
.idea-chat-thread { max-height: none; border-radius: 0; background: var(--bg-subtle); }
.idea-chat-thread .fb-av .ic { width: 16px; height: 16px; }
.idea-chat-thread .fb-name { font-size: var(--fs-caption); }
.chat-hot { color: var(--c-red-700, #c0392b); font-weight: 700; }
.idea-grounded { margin-top: 18px; border-top: 1px dashed var(--border-subtle); padding-top: 10px; }
.idea-grounded > summary { list-style: none; cursor: pointer; display: flex; align-items: center; gap: 8px;
  font-size: var(--fs-micro); font-weight: 700; color: var(--text-tertiary); letter-spacing: .04em; padding: 4px 0; }
.idea-grounded > summary::-webkit-details-marker { display: none; }
.idea-grounded > summary::before { content: "▸"; color: var(--c-ginkgo); display: inline-block; transition: transform var(--dur); }
.idea-grounded[open] > summary::before { transform: rotate(90deg); }
.idea-grounded-count { font-weight: 400; color: var(--text-tertiary); }
.grounded-list { list-style: none; margin: 8px 0 0; padding: 0; display: grid; gap: 7px; }
.grounded-list li { display: flex; gap: 8px; align-items: baseline; font-size: var(--fs-sm); color: var(--text-secondary); line-height: var(--lh-snug); }
.grounded-src { flex: none; font-size: var(--fs-micro); font-weight: 700; color: var(--c-school); background: var(--c-green-wash);
  border: 1px solid var(--c-green-bg); border-radius: var(--radius-full); padding: 1px 9px; text-decoration: none; white-space: nowrap; }
.grounded-src:hover { background: var(--c-green-bg); color: var(--c-school-deep); text-decoration: none; }
.grounded-body { color: var(--text-secondary); }
.grounded-foot { font-size: var(--fs-micro); color: var(--text-tertiary); margin: 8px 0 0; }
@media (max-width: 720px) { .idea-two, .idea-three, .idea-experts { grid-template-columns: 1fr; } }
@media (prefers-reduced-motion: reduce) { .idea-card { transition: none; } .idea-card:hover { transform: none; } }

/* ---------- 活躍ティッカー（常設帯） ---------- */
.ticker-belt { background: var(--c-school); color: #fff; overflow: hidden; height: 40px; display: flex; align-items: center; border-block: 1px solid var(--c-school-deep); }
.ticker-belt[hidden] { display: none; }
.ticker-inner { width: 100%; overflow: hidden; }
.ticker-track { display: inline-flex; align-items: center; white-space: nowrap; animation: ticker-scroll 60s linear infinite; will-change: transform; }
.ticker-track.paused { animation-play-state: paused; }
.ticker-item { padding: 0 6px; font-size: var(--fs-sm); font-weight: 500; color: #fff; }
.ticker-sep { color: var(--c-ginkgo); padding: 0 8px; opacity: .85; }
@keyframes ticker-scroll { from { transform: translateX(0); } to { transform: translateX(-50%); } }
@media (prefers-reduced-motion: reduce) { .ticker-track { animation: none; } .ticker-inner { overflow-x: auto; } }

/* ---------- 殿堂ウォール ---------- */
.awards-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(238px, 1fr)); gap: var(--space-4); }
.award-card { position: relative; background: var(--bg-default); border: 1px solid var(--border-subtle); border-radius: var(--radius-lg); box-shadow: var(--shadow-100); padding: var(--space-5); overflow: hidden; }
.award-card.award-gold { border-color: var(--c-brand-strong); box-shadow: var(--shadow-brand); }
.award-ribbon { position: absolute; top: 13px; right: -30px; width: 116px; transform: rotate(45deg); background: var(--c-brand-strong); color: #202226; text-align: center; font-size: 10px; font-weight: 700; letter-spacing: .08em; padding: 3px 0; }
.award-ribbon::after { content: "殿堂"; }
.award-photo-wrap { width: 64px; height: 64px; border-radius: 50%; overflow: hidden; margin-bottom: 12px; }
.award-photo { width: 100%; height: 100%; object-fit: cover; display: block; }
.award-avatar { width: 64px; height: 64px; border-radius: 50%; background: var(--c-brand-bg); color: var(--c-brand-strong); font-family: var(--font-display); font-weight: 700; font-size: 28px; display: flex; align-items: center; justify-content: center; }
.award-name { font-family: var(--font-display); font-weight: 700; font-size: var(--fs-body-lg); color: var(--text-primary); margin: 0 0 8px; }
.award-honorific { font-size: 13px; color: var(--text-secondary); margin-left: 3px; }
.award-month { margin: 8px 0 6px; }
.award-reason { font-size: var(--fs-sm); color: var(--text-secondary); line-height: var(--lh-snug); margin: 6px 0 0; }

/* ---------- 黒板 発散ボード ---------- */
.cb-toolbar { display: flex; gap: 10px; flex-wrap: wrap; align-items: center; margin-bottom: 14px; }
.cb-swatches { display: inline-flex; gap: 6px; }
.cb-swatch { width: 26px; height: 26px; border-radius: 6px; border: 1px solid rgba(0,0,0,.15); cursor: pointer; padding: 0; box-shadow: 0 1px 2px rgba(0,0,0,.12); }
.cb-swatch.active { outline: 2px solid var(--c-brand-strong); outline-offset: 1px; }
.cb-note { position: absolute; min-height: 92px; padding: 16px 14px 12px; border-radius: 4px; box-shadow: 0 5px 14px rgba(0,0,0,.30); cursor: grab; font-size: var(--fs-sm); color: #2c2410; border: 1px solid rgba(0,0,0,.07); user-select: none; }
.cb-note:active { cursor: grabbing; }
.cb-note-body { outline: none; min-height: 54px; line-height: 1.55; white-space: pre-wrap; word-break: break-word; }
.cb-note-body[contenteditable="true"] { cursor: text; user-select: text; }
.cb-note-body:empty::before { content: "ここに書く…"; color: rgba(0,0,0,.30); }
.cb-note-del { position: absolute; top: 3px; right: 4px; width: 20px; height: 20px; border: none; background: transparent; color: rgba(0,0,0,.38); cursor: pointer; font-size: 15px; line-height: 1; border-radius: 50%; padding: 0; }
.cb-note-del:hover { background: rgba(0,0,0,.12); color: #000; }
.cb-note-author { font-size: 10px; color: rgba(0,0,0,.5); font-weight: 700; margin-bottom: 4px; }
.cb-puff { position: absolute; width: 8px; height: 8px; border-radius: 50%; background: #fff; pointer-events: none; transition: transform .5s ease-out, opacity .5s ease-out; z-index: 9999; }
@media (prefers-reduced-motion: reduce) { .cb-puff { display: none; } }

/* ---------- 視聴覚室（AI活用） ---------- */
.ai-layers-row { display: grid; grid-template-columns: 1fr auto 1fr auto 1fr; gap: 12px; align-items: stretch; }
.ai-layer { background: var(--bg-default); border: 1px solid var(--border-subtle); border-radius: var(--radius-lg); box-shadow: var(--shadow-100); padding: var(--space-5); }
.ai-layer-h { font-family: var(--font-display); font-weight: 700; color: var(--text-primary); margin-bottom: 10px; }
.ai-layer-list { margin: 0; padding-left: 16px; }
.ai-layer-list li { font-size: var(--fs-sm); color: var(--text-secondary); line-height: var(--lh-snug); margin-bottom: 6px; }
.ai-arrow { display: flex; align-items: center; justify-content: center; color: var(--c-brand-strong); font-size: 24px; font-weight: 700; }
.ai-flow-head { display: flex; align-items: center; flex-wrap: wrap; gap: 6px 10px; margin-bottom: 12px; }
.ai-flow-emoji { font-size: 22px; flex: none; }
.ai-flow-title { font-family: var(--font-display); font-weight: 700; color: var(--text-primary); }
.ai-flow-pipe { display: flex; flex-direction: column; gap: 4px; margin-bottom: 12px; }
.ai-step { background: var(--bg-emphasis); border-radius: 8px; padding: 9px 12px; font-size: var(--fs-sm); color: var(--text-secondary); line-height: var(--lh-snug); }
.ai-step-ai { background: var(--c-brand-bg); }
.ai-step-k { display: inline-block; font-size: var(--fs-micro); font-weight: 700; color: var(--text-tertiary); margin-right: 8px; letter-spacing: .04em; }
.ai-step-arrow { text-align: center; color: var(--text-tertiary); font-size: 11px; line-height: 1.2; }
.ai-flow-impact { font-size: var(--fs-sm); color: var(--text-secondary); line-height: var(--lh-snug); }
@media (max-width: 820px) { .ai-layers-row { grid-template-columns: 1fr; } .ai-arrow { transform: rotate(90deg); } }

/* ===== 名簿：リッチプロフィール拡張 ===== */
.mem-section-blurb { font-size: var(--fs-sm); color: var(--text-tertiary); margin: -4px 0 14px; line-height: 1.6; }
.mem-deep { display: inline-block; font-size: var(--fs-micro); font-weight: 700; color: var(--c-school);
  background: var(--c-green-wash); border: 1px solid var(--c-green-bg); border-radius: var(--radius-full); padding: 0 7px; margin-left: 6px; }
.mem-tagline { font-family: var(--font-display); font-weight: 700; font-size: var(--fs-body-lg); color: var(--c-ginkgo-deep); line-height: 1.5; margin: 4px 0 12px; }
.mem-quote { position: relative; font-family: var(--font-display); font-size: var(--fs-body-lg); color: var(--text-primary); line-height: 1.7;
  background: var(--c-brand-bg); border-radius: var(--radius-md);
  padding: 12px 16px; margin: 14px 0; }
.mem-quote::before { content: "“"; } .mem-quote::after { content: "”"; }
.mem-block-story { background: var(--bg-subtle); }
.mem-block-story p { margin: 0 0 9px; font-size: var(--fs-body); line-height: 1.85; color: var(--text-secondary); }
.mem-block-story p:last-child { margin-bottom: 0; }
.mem-metrics { display: grid; grid-template-columns: repeat(auto-fit, minmax(92px, 1fr)); gap: 8px; margin: 12px 0; }
.mem-metric { background: var(--bg-default); border: 1px solid var(--border-subtle);
  border-radius: var(--radius-md); padding: 10px 8px; text-align: center; }
.mem-metric-v { display: block; font-family: var(--font-display); font-weight: 800; font-size: var(--fs-h3); color: var(--c-ginkgo-deep); line-height: 1.1; }
.mem-metric-l { display: block; font-size: var(--fs-micro); color: var(--text-tertiary); margin-top: 4px; line-height: 1.35; }
.mem-tl { list-style: none; margin: 6px 0 0; padding: 0 0 0 2px; border-left: 2px solid var(--c-green-bg); }
.mem-tl li { position: relative; padding: 0 0 11px 16px; }
.mem-tl li::before { content: ""; position: absolute; left: -6px; top: 5px; width: 9px; height: 9px; border-radius: 50%; background: var(--c-brand); border: 2px solid var(--bg-default); }
.mem-tl-t { display: inline-block; font-family: var(--font-display); font-weight: 700; font-size: var(--fs-caption); color: var(--c-school); min-width: 66px; margin-right: 6px; }
.mem-tl-e { font-size: var(--fs-sm); color: var(--text-secondary); line-height: 1.5; }
.mem-proj { list-style: none; margin: 6px 0 0; padding: 0; display: flex; flex-direction: column; gap: 6px; }
.mem-proj li { display: flex; gap: 10px; align-items: baseline; padding: 7px 11px; background: var(--bg-subtle); border-radius: var(--radius-md); }
.mem-proj-n { font-family: var(--font-display); font-weight: 700; font-size: var(--fs-sm); color: var(--text-primary); flex: none; min-width: 92px; }
.mem-proj-r { font-size: var(--fs-sm); color: var(--text-secondary); line-height: 1.5; }
.mem-links { display: flex; flex-direction: column; gap: 6px; }
.mem-link { font-size: var(--fs-sm); font-weight: 600; color: var(--text-link); padding: 8px 11px; border-radius: var(--radius-md); background: var(--bg-subtle); }
.mem-link:hover { background: var(--c-brand-bg); text-decoration: none; }
.mem-link-q { color: var(--c-ginkgo-deep); }

/* ===== 校内マップ（サイトマップ） ===== */
.smap-actions { margin: 14px 0 4px; }
.smap-cloud { display: flex; flex-wrap: wrap; gap: 7px; align-items: center; margin: 14px 0 4px; }
.smap-cloud-h { font-size: var(--fs-sm); color: var(--text-tertiary); margin-right: 2px; }
.smap-tag { font-size: var(--fs-caption); color: var(--c-ginkgo-deep); background: var(--c-brand-bg); border: 1px solid var(--c-brand-strong);
  border-radius: var(--radius-full); padding: 3px 11px; cursor: pointer; font-weight: 600; line-height: 1.5; }
.smap-tag:hover, .smap-tag.on { background: var(--c-brand); color: var(--text-onbrand); }
.smap-area { margin-bottom: 30px; }
.smap-area-h { display: flex; align-items: center; gap: 10px; margin: 8px 0 14px; padding-bottom: 8px; border-bottom: 2px dashed var(--border-default); }
.smap-area-emoji { font-size: 24px; }
.smap-area-name { font-family: var(--font-display); font-weight: 700; font-size: var(--fs-h3); color: var(--text-primary); display: flex; flex-direction: column; }
.smap-area-blurb { font-size: var(--fs-sm); color: var(--text-tertiary); font-weight: 400; margin-top: 2px; }
.smap-filter-h { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; font-family: var(--font-display); font-weight: 700; font-size: var(--fs-h3); margin: 8px 0 14px; }
.smap-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(230px, 1fr)); gap: 14px; }
.smap-room { background: var(--bg-default); border: 1px solid var(--border-subtle); border-radius: var(--radius-lg);
  overflow: hidden; box-shadow: var(--shadow-50); display: flex; flex-direction: column;
  transition: transform .18s ease, box-shadow .18s ease; animation: smapIn .5s both; animation-delay: calc(var(--i, 0) * 45ms); }
.smap-room::before { content: ""; display: block; height: 6px; background: linear-gradient(90deg, var(--c-brand), var(--c-ginkgo)); }
.smap-room:hover { box-shadow: var(--shadow-hover); transform: translateY(-3px); }
.smap-room-main { display: flex; flex-direction: column; padding: 14px 16px 10px; }
.smap-room-main:hover { text-decoration: none; }
.smap-room-emoji { font-size: 30px; line-height: 1; }
.smap-room-name { font-family: var(--font-display); font-weight: 700; font-size: var(--fs-h3); color: var(--text-primary); margin-top: 8px; }
.smap-room-formal { font-size: var(--fs-micro); color: var(--text-tertiary); font-weight: 400; margin-left: 7px; }
.smap-room-catch { font-size: var(--fs-sm); color: var(--text-secondary); line-height: 1.6; margin-top: 6px; }
.smap-room-pers { font-size: var(--fs-caption); color: var(--c-ginkgo-deep); font-style: italic; margin-top: 8px; }
.smap-room-go { font-size: var(--fs-caption); color: var(--c-school); font-weight: 700; margin-top: 10px; opacity: 0; transform: translateX(-4px); transition: .18s; }
.smap-room:hover .smap-room-go { opacity: 1; transform: none; }
.smap-room-tags { display: flex; flex-wrap: wrap; gap: 5px; padding: 0 16px 14px; margin-top: auto; }
.smap-room-tags .smap-tag { font-size: 10.5px; padding: 2px 8px; }
.smap-room.pulse { animation: smapPulse 1.1s ease 2; }
@keyframes smapIn { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: none; } }
@keyframes smapPulse { 0%, 100% { box-shadow: var(--shadow-50); } 50% { box-shadow: 0 0 0 4px var(--c-brand); } }
@media (prefers-reduced-motion: reduce) { .smap-room { animation: none; } }

/* ===== 絵文字→アイコン サイジング ===== */
.badge .ic { width: 1em; height: 1em; vertical-align: -0.13em; margin-right: 2px; }
.btn .ic { width: 1.05em; height: 1.05em; vertical-align: -0.15em; }
.mem-block-h .ic { width: 1.1em; height: 1.1em; vertical-align: -0.18em; margin-right: 5px; color: var(--c-ginkgo-deep); }
.mem-section-emoji { display: inline-flex; align-items: center; }
.mem-section-emoji .ic { width: 22px; height: 22px; color: var(--c-ginkgo-deep); }
.mem-link .ic { width: 1em; height: 1em; vertical-align: -0.13em; margin-right: 3px; }
.smap-room-emoji { display: inline-flex; }
.smap-room-emoji .ic { width: 30px; height: 30px; color: var(--c-ginkgo-deep); }
.smap-area-emoji { display: inline-flex; align-items: center; }
.smap-area-emoji .ic { width: 24px; height: 24px; color: var(--c-ginkgo-deep); }
#smap-explore .ic { width: 1.1em; height: 1.1em; vertical-align: -0.18em; margin-right: 5px; }

/* ===== 絵文字スパン内アイコンのサイジング（content 絵文字→アイコン） ===== */
.tc-emoji .ic, .idea-emoji .ic, .idea-cluster-emoji .ic, .ai-flow-emoji .ic,
.cust-persona-emoji .ic, .sol-emoji .ic, .idea-expert-lens .ic { width: 1em; height: 1em; vertical-align: -0.13em; }
.emj { display: inline-flex; align-items: center; }
.emj .ic { width: 19px; height: 19px; color: var(--c-ginkgo-deep); }
.idea-emoji .ic { color: var(--c-ginkgo-deep); }
.idea-cluster-emoji .ic { color: var(--c-ginkgo-deep); }
.ai-flow-emoji .ic { color: var(--c-ginkgo-deep); }

/* インラインアイコン（見出し等・周囲のテキスト色を継承） */
.ic.in-ic { width: 1.1em; height: 1.1em; vertical-align: -0.18em; }

/* ===== 発明クラブ：事業インパクト指標 ===== */
.idea-sort { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; margin-bottom: 12px; }
.idea-sort-h { font-size: var(--fs-sm); color: var(--text-tertiary); }
.idea-personfilt { display: flex; align-items: center; flex-wrap: wrap; gap: 8px; margin-bottom: 12px; }
.idea-personfilt-h { font-size: var(--fs-sm); color: var(--text-tertiary); display: inline-flex; align-items: center; gap: 4px; }
.idea-personfilt-h .ic { width: 1.1em; height: 1.1em; vertical-align: -0.18em; color: var(--c-ginkgo-deep); }
.idea-person-sel { font: inherit; font-size: var(--fs-sm); padding: 5px 11px; border: 1px solid var(--border-strong, #d8d2c4); border-radius: var(--radius-full); background: var(--bg-default); color: var(--text-primary); cursor: pointer; max-width: 280px; }
.idea-person-sel:focus-visible { outline: 2px solid var(--c-brand); outline-offset: 1px; }
.idea-personfilt-hint { font-size: var(--fs-micro); color: var(--text-tertiary); }
.idea-person-on { display: inline-flex; align-items: center; gap: 4px; font-weight: 700; color: var(--c-ginkgo-deep); }
.idea-person-on .ic { width: 1em; height: 1em; vertical-align: -0.13em; }
.tm-chip.clk { cursor: pointer; transition: background .12s, border-color .12s, transform .08s; }
.tm-chip.clk:hover { background: var(--c-brand-bg); border-color: var(--c-brand-strong); }
.tm-chip.clk:active { transform: translateY(1px); }
.tm-chip.clk:focus-visible { outline: 2px solid var(--c-brand); outline-offset: 1px; }
.imp-card { display: flex; align-items: center; gap: 8px 10px; flex-wrap: wrap; margin: 2px 0 10px; padding: 8px 11px; background: var(--bg-subtle); border-radius: var(--radius-md); }
.imp-tier { font-family: var(--font-display); font-weight: 700; font-size: var(--fs-micro); padding: 2px 9px; border-radius: var(--radius-full); flex: none; white-space: nowrap; }
.imp-t-hi { background: var(--c-brand); color: var(--text-onbrand); }
.imp-t-mid { background: var(--c-brand-bg); color: var(--c-ginkgo-deep); }
.imp-t-lo { background: var(--bg-neutral); color: var(--text-tertiary); }
/* 手堅さ（堅実度）バッジ */
.imp-safe { font-size: var(--fs-micro); font-weight: 700; padding: 1px 8px 1px 7px; border-radius: var(--radius-full); white-space: nowrap; display: inline-flex; align-items: center; gap: 3px; border: 1px solid transparent; }
.imp-safe::before { content: ""; width: 6px; height: 6px; border-radius: 50%; flex: none; }
.imp-s-hi { background: rgba(48,161,67,.13); color: #277a38; border-color: rgba(48,161,67,.3); }
.imp-s-hi::before { background: #30a143; }
.imp-s-mid { background: rgba(224,136,58,.13); color: #b5671f; border-color: rgba(224,136,58,.3); }
.imp-s-mid::before { background: #e0883a; }
.imp-s-lo { background: rgba(214,76,58,.12); color: #c0432e; border-color: rgba(214,76,58,.3); }
.imp-s-lo::before { background: #d64c3a; }
/* モーダル内：手堅さの要約行 */
.ec-rob { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 10px; margin: 12px 0 2px; padding: 8px 11px; border-radius: var(--radius-md); border: 1px solid; font-size: var(--fs-caption); line-height: 1.55; }
.ec-rob.imp-s-hi { background: rgba(48,161,67,.08); border-color: rgba(48,161,67,.28); }
.ec-rob.imp-s-mid { background: rgba(224,136,58,.08); border-color: rgba(224,136,58,.28); }
.ec-rob.imp-s-lo { background: rgba(214,76,58,.07); border-color: rgba(214,76,58,.28); }
.ec-rob-tag { font-family: var(--font-display); font-weight: 800; flex: none; }
.ec-rob.imp-s-hi .ec-rob-tag { color: #277a38; } .ec-rob.imp-s-mid .ec-rob-tag { color: #b5671f; } .ec-rob.imp-s-lo .ec-rob-tag { color: #c0432e; }
.ec-rob-tx { color: var(--text-secondary); } .ec-rob-tx b { color: var(--text-primary); font-weight: 700; }
.imp-lever { display: flex; align-items: center; gap: 8px; flex: 1 1 170px; min-width: 0; }
.imp-bar { display: inline-block; height: 8px; border-radius: var(--radius-full); background: var(--c-sand-2, #ececec); overflow: hidden; flex: 1 1 50px; min-width: 44px; }
.imp-bar i { display: block; height: 100%; border-radius: var(--radius-full); }
.imp-lever-tx { font-size: var(--fs-caption); color: var(--text-secondary); white-space: nowrap; }
.imp-lever-tx b { color: var(--text-primary); font-family: var(--font-display); }
.imp-meta { display: flex; align-items: center; gap: 9px; flex: none; }
.imp-effort { font-size: var(--fs-micro); color: var(--text-tertiary); display: inline-flex; align-items: center; gap: 3px; }
.imp-dot { width: 7px; height: 7px; border-radius: 50%; background: var(--c-sand-2, #ddd); display: inline-block; }
.imp-dot.on { background: var(--c-ginkgo-deep); }
.imp-pay { font-size: var(--fs-micro); color: var(--text-tertiary); background: var(--bg-default); border: 1px solid var(--border-subtle); border-radius: var(--radius-full); padding: 1px 8px; white-space: nowrap; }
.imp-gold i { background: linear-gradient(90deg, #6aa81e, #6f9c1e); }
.imp-green i { background: #30a143; } .imp-blue i { background: #3f6ecc; } .imp-teal i { background: #0e8a6e; }
.imp-orange i { background: #ee7100; } .imp-purple i { background: #9b59b6; } .imp-pink i { background: #d6589b; }
.imp-block { background: var(--c-brand-bg); border: 1px solid var(--c-brand-strong); border-radius: var(--radius-md); padding: 13px 15px; margin: 14px 0; }
.imp-block-h { display: flex; align-items: center; gap: 6px; font-family: var(--font-display); font-weight: 700; font-size: var(--fs-sm); color: var(--text-primary); margin-bottom: 10px; }
.imp-block-h .ic { width: 1.05em; height: 1.05em; vertical-align: -0.16em; color: var(--c-ginkgo-deep); }
.imp-block-h .imp-tier { margin-left: auto; }
.imp-rows { display: flex; flex-direction: column; gap: 8px; }
.imp-row { display: flex; align-items: center; gap: 10px; }
.imp-row-l { font-size: var(--fs-caption); color: var(--text-secondary); flex: 0 0 118px; }
.imp-row .imp-bar { flex: 1; height: 11px; background: rgba(255,255,255,.7); }
.imp-row-d { font-family: var(--font-display); font-weight: 700; font-size: var(--fs-sm); color: var(--text-primary); flex: 0 0 66px; text-align: right; }
.imp-foot { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; margin-top: 11px; padding-top: 9px; border-top: 1px solid rgba(0,0,0,.08); }
.imp-why { font-size: var(--fs-caption); color: var(--text-secondary); }
.imp-detail { margin-top: 9px; }
.imp-detail > summary { cursor: pointer; font-size: var(--fs-caption); color: var(--c-ginkgo-deep); font-weight: 700; list-style: none; display: inline-flex; align-items: center; gap: 5px; }
.imp-detail > summary::-webkit-details-marker { display: none; }
.imp-detail > summary .ic { width: 1.05em; height: 1.05em; vertical-align: -0.16em; }
.imp-detail[open] > summary { margin-bottom: 8px; }
.imp-basis { display: flex; flex-direction: column; gap: 8px; }
.imp-basis-row { display: flex; flex-direction: column; gap: 1px; padding-left: 9px; }
.imp-basis-l { font-size: var(--fs-caption); font-weight: 700; color: var(--text-primary); }
.imp-basis-l b { color: var(--c-ginkgo-deep); margin-left: 3px; }
.imp-basis-x { font-size: var(--fs-micro); color: var(--text-secondary); line-height: 1.55; }
.imp-note { font-size: var(--fs-micro); color: var(--text-tertiary); margin-top: 8px; line-height: 1.5; }
.idea-oneline strong, .idea-summary strong, .idea-quote strong, .idea-block strong, .idea-bullets strong, .idea-expert-point strong { font-weight: 700; color: var(--text-primary); }
.idea-quote strong { color: var(--c-ginkgo-deep); }

/* ===== 発明クラブ：実装ロードマップ（運動会トラック） ===== */
.rm-h { margin-top: 18px; }
.rm-sub { font-family: var(--font-body); font-weight: 400; font-size: var(--fs-caption); color: var(--text-tertiary); margin-left: 6px; }
.rm-track { display: flex; align-items: stretch; flex-wrap: wrap; background: repeating-linear-gradient(180deg, var(--c-green-wash) 0 7px, transparent 7px 15px); border-radius: var(--radius-md); padding: 14px 12px; }
.rm-step { display: flex; flex-direction: column; align-items: center; text-align: center; flex: 1 1 0; min-width: 116px; gap: 6px; }
.rm-num { width: 34px; height: 34px; border-radius: 50%; background: #d64c3a; color: #fff; font-family: var(--font-display); font-weight: 800; display: flex; align-items: center; justify-content: center; box-shadow: var(--shadow-50); flex: none; }
.rm-num.odd { background: #fff; color: #d64c3a; border: 2px solid #d64c3a; }
.rm-step.rm-last .rm-num { background: var(--c-brand); color: var(--text-onbrand); border: none; }
.rm-num .ic { width: 18px; height: 18px; }
.rm-t { font-family: var(--font-display); font-weight: 700; font-size: var(--fs-sm); color: var(--text-primary); }
.rm-d { font-size: var(--fs-caption); color: var(--text-secondary); line-height: 1.5; margin-top: 2px; }
.rm-link { flex: 0 0 16px; align-self: flex-start; margin-top: 17px; border-top: 3px dashed var(--c-ginkgo); height: 0; }
@media (max-width: 560px) { .rm-track { flex-direction: column; } .rm-step { flex-direction: row; text-align: left; min-width: 0; gap: 10px; } .rm-link { display: none; } .rm-tx { flex: 1; } }
/* 関わる人 */
.tm-row { display: flex; flex-wrap: wrap; gap: 8px; }
.tm-chip { display: inline-flex; align-items: center; gap: 8px; background: var(--bg-subtle); border: 1px solid var(--border-subtle); border-radius: var(--radius-full); padding: 4px 13px 4px 4px; }
a.tm-chip { text-decoration: none; color: inherit; }
/* 担当クラスのバッジ（メンバー詳細）→ クラス詳細へのリンク */
.mem-class-link { text-decoration: none; cursor: pointer; transition: background .12s, color .12s; }
.mem-class-link:hover { background: var(--c-brand); color: var(--text-onbrand); }
.tm-av { width: 26px; height: 26px; border-radius: 50%; color: #fff; font-family: var(--font-display); font-weight: 700; font-size: 12px; display: flex; align-items: center; justify-content: center; flex: none; }
.tm-tx { display: flex; flex-direction: column; line-height: 1.25; }
.tm-tx b { font-size: var(--fs-sm); color: var(--text-primary); }
.tm-role { font-size: var(--fs-micro); color: var(--text-tertiary); }
.tm-gaps { margin-top: 9px; display: flex; flex-wrap: wrap; gap: 7px; align-items: center; }
.tm-gaps-h { font-size: var(--fs-caption); color: var(--text-tertiary); }
.tm-gap { font-size: var(--fs-caption); color: var(--c-brown, #9a6b3f); background: repeating-linear-gradient(45deg, var(--bg-subtle) 0 6px, transparent 6px 12px); border: 1px dashed var(--c-sand-2, #ccc); border-radius: var(--radius-full); padding: 2px 10px; display: inline-flex; align-items: center; gap: 3px; }
.tm-gap .ic { width: 12px; height: 12px; }
/* 損益分岐チャート */
.ec-wrap { background: var(--bg-subtle); border-radius: var(--radius-md); padding: 12px 14px; }
.ec-stats { display: flex; flex-wrap: wrap; gap: 14px 22px; margin-bottom: 10px; }
.ec-stat { display: flex; flex-direction: column; line-height: 1.3; }
.ec-stat i { font-style: normal; font-size: var(--fs-micro); color: var(--text-tertiary); }
.ec-stat b { font-family: var(--font-display); font-weight: 800; font-size: var(--fs-body); color: var(--text-primary); }
.ec-stat em { font-style: normal; font-size: 10px; color: var(--text-tertiary); }
.ec-stat.hi b { color: var(--c-ginkgo-deep); }
.ec-legend { display: flex; flex-wrap: wrap; gap: 5px 14px; margin-bottom: 4px; }
.ec-lg { display: inline-flex; align-items: center; gap: 5px; font-size: var(--fs-caption); color: var(--text-secondary); }
.ec-lg b { font-family: var(--font-display); font-weight: 700; color: var(--text-primary); margin-left: 3px; }
.ec-lg i { width: 15px; height: 0; border-top: 3px solid #30a143; border-radius: 2px; flex: none; }
.ec-lg.cost i { border-top-style: dashed; border-top-color: #e0883a; }
.ec-lg.be i { border: none; width: 9px; height: 9px; border-radius: 50%; background: var(--c-brand); }
.ec-svg { width: 100%; height: auto; display: block; }
.ec-grid { stroke: rgba(0, 0, 0, .10); stroke-width: 1; }
.ec-grid.zero { stroke: var(--text-tertiary); stroke-width: 1.1; }
.ec-grid.plat-g { stroke: rgba(48, 161, 67, .32); stroke-dasharray: 3 3; }
.ec-grid.cost-g { stroke: rgba(224, 136, 58, .36); stroke-dasharray: 3 3; }
.ec-ylab, .ec-xlab { font-size: 9.5px; fill: var(--text-tertiary); }
.ec-area { fill: rgba(48, 161, 67, .13); }
.ec-revline { fill: none; stroke: #30a143; stroke-width: 2.6; stroke-linejoin: round; stroke-linecap: round; }
.ec-costline { fill: none; stroke: #e0883a; stroke-width: 2; stroke-dasharray: 5 3; }
.ec-dot { fill: #30a143; }
.ec-be { stroke: var(--c-brand-strong); stroke-width: 1.3; stroke-dasharray: 4 3; }
.ec-bedot { fill: var(--c-brand); stroke: #fff; stroke-width: 1.5; }
.ec-belab { font-size: 9.5px; fill: var(--c-brand-strong); font-weight: 700; }
.ec-band { fill: rgba(48, 161, 67, .12); stroke: none; }
.ec-edge { fill: none; stroke: rgba(48, 161, 67, .45); stroke-width: 1.1; stroke-dasharray: 4 3; }
.ec-edge.lo { stroke: rgba(214, 140, 58, .5); }
.ec-grid.hi-g { stroke: rgba(48, 161, 67, .22); stroke-dasharray: 2 3; }
.ec-lg.band i { border: none; width: 15px; height: 9px; border-radius: 2px; background: rgba(48, 161, 67, .20); }
.ec-scen-h { display: flex; align-items: center; gap: 5px; font-family: var(--font-display); font-weight: 700; font-size: var(--fs-sm); color: var(--text-primary); margin: 15px 0 6px; }
.ec-scen-h .ic { width: 1.05em; height: 1.05em; vertical-align: -0.16em; color: var(--c-ginkgo-deep); }
.ec-scen { width: 100%; border-collapse: collapse; font-size: var(--fs-caption); }
.ec-scen th { text-align: left; font-weight: 600; color: var(--text-tertiary); font-size: var(--fs-micro); padding: 4px 8px; border-bottom: 1px solid var(--border-subtle); }
.ec-scen td { padding: 6px 8px; border-bottom: 1px solid var(--border-subtle); color: var(--text-secondary); vertical-align: top; }
.ec-scen .ec-sc-l { font-weight: 700; color: var(--text-primary); white-space: nowrap; }
.ec-scen .ec-sc-v, .ec-scen .ec-sc-b { white-space: nowrap; font-variant-numeric: tabular-nums; }
.ec-scen .ec-sc-b { font-weight: 700; color: var(--text-primary); }
.ec-scen tr.on { background: var(--c-brand-bg); }
.ec-scen tr.ec-sc-low .ec-sc-l { color: #c2682f; }
.ec-scen tr.ec-sc-high .ec-sc-l { color: #2f8f43; }
.ec-drivers { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; margin-top: 9px; font-size: var(--fs-caption); }
.ec-drivers-h { color: var(--text-tertiary); }
.ec-driver { background: var(--bg-default); border: 1px solid var(--border-subtle); border-radius: var(--radius-full); padding: 2px 9px; color: var(--text-secondary); }
.ec-driver em { font-style: normal; font-weight: 700; color: var(--c-ginkgo-deep); }
.ec-detail { margin-top: 11px; border-top: 1px dashed var(--border-strong, #d8d2c4); padding-top: 9px; }
.ec-detail > summary { cursor: pointer; font-size: var(--fs-caption); color: var(--c-ginkgo-deep); font-weight: 700; list-style: none; display: inline-flex; align-items: center; gap: 5px; }
.ec-detail > summary::-webkit-details-marker { display: none; }
.ec-detail > summary .ic { width: 1.05em; height: 1.05em; vertical-align: -0.16em; }
.ec-detail[open] > summary { margin-bottom: 9px; }
.ec-detail-body { display: flex; flex-wrap: wrap; gap: 12px; }
.ec-bd { flex: 1 1 200px; min-width: 178px; background: var(--bg-default); border: 1px solid var(--border-subtle); border-radius: var(--radius-md); padding: 9px 11px; }
.ec-bd-h { font-size: var(--fs-caption); font-weight: 700; color: var(--text-primary); margin-bottom: 5px; display: flex; justify-content: space-between; gap: 8px; }
.ec-bd-h b { color: var(--c-ginkgo-deep); }
.ec-bd-t { width: 100%; border-collapse: collapse; font-size: var(--fs-micro); }
.ec-bd-t td { padding: 2px 0; color: var(--text-secondary); }
.ec-bd-t .ec-amt { text-align: right; font-variant-numeric: tabular-nums; white-space: nowrap; color: var(--text-primary); }
.ec-bd-t tfoot td { border-top: 1px solid var(--border-subtle); font-weight: 700; color: var(--text-primary); padding-top: 4px; }
.ec-rev-f { font-size: var(--fs-micro); color: var(--text-secondary); margin: 0 0 5px; line-height: 1.5; }
.ec-bd-t .ec-rev-i { color: var(--text-secondary); line-height: 1.5; padding: 3px 0; text-align: left; }
.ec-bd-t .ec-rev-i strong { color: var(--text-primary); font-weight: 700; }
/* ブレスト黒板：付箋は小さく・枚数多め・縦に伸びる */
.bb-board { background-image: linear-gradient(135deg, #234035, #19302700); background-color: #1d3a2e; border: 7px solid #6b4a2b; border-radius: 8px; padding: 14px 12px; display: flex; flex-wrap: wrap; gap: 8px; box-shadow: inset 0 0 44px rgba(0, 0, 0, .34); }
.bb-note { width: 104px; min-height: 50px; padding: 6px 8px; border-radius: 2px; box-shadow: 0 2px 7px rgba(0, 0, 0, .3); display: flex; flex-direction: column; gap: 2px; transform: rotate(-1.4deg); }
.bb-note.bb-r1 { transform: rotate(1.4deg); } .bb-note.bb-r2 { transform: rotate(-0.4deg); }
.bb-svc { background: #fff39e; } .bb-name { background: #e4d4ff; } .bb-pj { background: #bfe1ff; } .bb-copy { background: #ffd2dd; } .bb-desc { background: #d6f2c4; } .bb-tag { background: #ffdfa8; } .bb-who { background: #c7efe2; } .bb-edge { background: #ffd8c0; } .bb-exp { background: #cfe7ff; }
.bb-k { font-size: 8px; font-weight: 700; color: #6b5b00; letter-spacing: .03em; opacity: .8; }
.bb-t { font-size: 10.5px; color: #2a2a2a; line-height: 1.4; font-weight: 600; }
/* アイデアごとのフィードバック（LINE風チャット） */
.fb-intro { font-size: var(--fs-caption); color: var(--text-secondary); margin: 4px 0 12px; line-height: 1.6; }
.fb-intro b { color: var(--text-primary); }
.fb-thread { display: flex; flex-direction: column; gap: 10px; background: var(--bg-subtle); border-radius: var(--radius-md); padding: 14px; max-height: 440px; overflow-y: auto; }
.fb-empty { font-size: var(--fs-caption); color: var(--text-tertiary); text-align: center; padding: 16px 8px; line-height: 1.6; }
.fb-row { display: flex; gap: 8px; align-items: flex-end; }
.fb-row.me { justify-content: flex-end; }
.fb-row.st { justify-content: flex-start; }
.fb-av { width: 30px; height: 30px; border-radius: 50%; color: #fff; font-family: var(--font-display); font-weight: 700; font-size: 12px; display: flex; align-items: center; justify-content: center; flex: none; }
.fb-bub { max-width: 78%; padding: 9px 13px; border-radius: 16px; font-size: var(--fs-sm); line-height: 1.65; box-shadow: var(--shadow-50); word-break: break-word; }
.fb-bub.st { background: var(--bg-default); border: 1px solid var(--border-subtle); border-bottom-left-radius: 5px; color: var(--text-primary); }
.fb-bub.me { background: #8bd96b; color: #163a10; border-bottom-right-radius: 5px; }
.fb-bub.me.pending { background: #dcead0; color: var(--text-secondary); box-shadow: none; border: 1px dashed var(--c-sand-2, #c9c2b0); }
.fb-name { font-family: var(--font-display); font-weight: 700; font-size: var(--fs-micro); color: var(--c-ginkgo-deep); margin-bottom: 3px; }
.fb-changes { margin: 8px 0 0; padding-left: 16px; font-size: var(--fs-caption); color: var(--text-secondary); }
.fb-changes li { margin: 2px 0; }
.fb-ts { font-size: 10px; color: var(--text-tertiary); margin-top: 5px; }
.fb-pend { display: block; font-size: 10px; color: var(--c-brown, #9a6b3f); margin-top: 4px; font-weight: 700; }
.fb-form { display: flex; flex-direction: column; gap: 8px; margin-top: 10px; }
.fb-input { width: 100%; resize: vertical; font: inherit; font-size: var(--fs-sm); padding: 10px 12px; border: 1px solid var(--border-strong, #d8d2c4); border-radius: var(--radius-md); background: var(--bg-default); color: var(--text-primary); line-height: 1.6; }
.fb-input:focus-visible { outline: 2px solid var(--c-brand); outline-offset: 1px; }
.fb-actions { display: flex; align-items: center; gap: 8px; justify-content: flex-end; }
.fb-copy { font-size: var(--fs-caption); color: var(--text-tertiary); background: none; border: 1px solid var(--border-subtle); border-radius: var(--radius-full); padding: 5px 12px; cursor: pointer; }
.fb-copy:hover { background: var(--bg-subtle); color: var(--text-secondary); }
.fb-readonly { display: flex; align-items: center; gap: 7px; margin-top: 10px; padding: 10px 13px; border-radius: var(--radius-md); background: var(--bg-subtle); border: 1px dashed var(--border-strong, #d8d2c4); font-size: var(--fs-caption); color: var(--text-secondary); }
.fb-readonly .ic { width: 15px; height: 15px; flex: none; color: var(--c-ginkgo-deep); }
.fb-readonly b { color: var(--text-primary); }
/* 入口ゲート（校長／一般教職員） */
.gate-overlay { position: fixed; inset: 0; z-index: 300; background: radial-gradient(120% 120% at 50% 0%, rgba(38,72,58,.6), rgba(6,37,31,.74)); backdrop-filter: blur(4px); display: flex; align-items: center; justify-content: center; padding: 20px; animation: gate-in .25s ease; }
@keyframes gate-in { from { opacity: 0; } to { opacity: 1; } }
.gate-card { background: var(--bg-default, #fff); border-radius: 18px; max-width: 480px; width: 100%; padding: 30px 26px 22px; box-shadow: 0 24px 70px rgba(0,0,0,.34); text-align: center; }
.gate-card.gate-shake { animation: gate-shake .45s; }
@keyframes gate-shake { 0%,100% { transform: translateX(0); } 20% { transform: translateX(-7px); } 40% { transform: translateX(7px); } 60% { transform: translateX(-5px); } 80% { transform: translateX(5px); } }
.gate-emblem { display: inline-block; transform: scale(1.4); margin-bottom: 14px; }
.gate-eyebrow { font-size: var(--fs-micro); letter-spacing: .14em; color: var(--text-tertiary); font-weight: 700; }
.gate-title { font-family: var(--font-display); font-size: 23px; margin: 6px 0 6px; color: var(--text-primary); }
.gate-lead { color: var(--text-secondary); font-size: var(--fs-sm); line-height: 1.8; margin-bottom: 18px; }
.gate-choices { display: flex; flex-direction: column; gap: 11px; }
.gate-choice { display: flex; flex-direction: column; align-items: center; gap: 4px; text-align: center; padding: 16px 14px; border-radius: 14px; border: 1.5px solid var(--border-subtle); background: var(--bg-subtle); cursor: pointer; transition: border-color .14s, background .14s, transform .08s; }
.gate-choice:hover { border-color: var(--c-brand-strong); background: var(--c-brand-bg); }
.gate-choice:active { transform: translateY(1px); }
.gate-choice.principal { border-color: var(--c-brand); }
.gate-ic { width: 36px; height: 36px; display: inline-flex; align-items: center; justify-content: center; border-radius: 50%; background: var(--bg-default); margin-bottom: 2px; }
.gate-choice.principal .gate-ic { background: var(--c-brand); }
.gate-ic .ic { width: 18px; height: 18px; }
.gate-ch-t { font-family: var(--font-display); font-weight: 700; font-size: var(--fs-body); color: var(--text-primary); }
.gate-ch-s { font-size: var(--fs-caption); color: var(--text-tertiary); line-height: 1.5; }
.gate-pass { margin-top: 4px; text-align: left; }
.gate-pass-l { font-size: var(--fs-caption); font-weight: 700; color: var(--text-secondary); display: block; margin-bottom: 6px; }
.gate-pass-row { display: flex; gap: 8px; }
.gate-pass-in { flex: 1; font: inherit; font-size: var(--fs-sm); padding: 9px 12px; border: 1px solid var(--border-strong, #d8d2c4); border-radius: var(--radius-md); }
.gate-pass-in:focus-visible { outline: 2px solid var(--c-brand); outline-offset: 1px; }
.gate-pass-err { color: #c0432e; font-size: var(--fs-caption); margin-top: 8px; font-weight: 700; }
.gate-back { margin-top: 12px; background: none; border: none; color: var(--text-tertiary); font-size: var(--fs-caption); cursor: pointer; }
.gate-back:hover { color: var(--text-secondary); }
.gate-foot { font-size: var(--fs-micro); color: var(--text-tertiary); margin-top: 16px; line-height: 1.6; }
/* ヘッダーの名札（権限切替） */
.role-chip { display: inline-flex; align-items: center; gap: 5px; font-size: var(--fs-caption); font-weight: 700; padding: 5px 11px; border-radius: var(--radius-full); border: 1px solid var(--border-subtle); background: var(--bg-default); color: var(--text-secondary); cursor: pointer; white-space: nowrap; margin-right: 6px; }
.role-chip:hover { border-color: var(--c-brand-strong); background: var(--c-brand-bg); }
.role-chip .ic { width: 14px; height: 14px; }
.role-chip.role-principal { border-color: var(--c-brand); color: var(--c-ginkgo-deep); background: var(--c-brand-bg); }
@media (max-width: 860px) { .role-chip span { display: none; } .role-chip { padding: 6px; } }
/* 更新通知センター（校長専用） */
.notif-wrap { position: relative; }
.notif-bell { position: relative; display: inline-flex; align-items: center; justify-content: center; width: 36px; height: 36px; border-radius: 50%; border: 1px solid var(--border-subtle); background: var(--bg-default); color: var(--text-secondary); cursor: pointer; margin-right: 6px; }
.notif-bell:hover { border-color: var(--c-brand-strong); background: var(--c-brand-bg); color: var(--text-primary); }
.notif-bell .ic { width: 17px; height: 17px; }
.notif-badge { position: absolute; top: -3px; right: -1px; min-width: 17px; height: 17px; padding: 0 4px; border-radius: 9px; background: #d64c3a; color: #fff; font-size: 10px; font-weight: 700; line-height: 17px; text-align: center; box-shadow: 0 0 0 2px var(--bg-default); }
.notif-panel { position: absolute; top: calc(100% + 8px); right: 0; z-index: 95; width: 344px; max-width: 86vw; max-height: 72vh; overflow-y: auto; background: var(--bg-default); border: 1px solid var(--border-subtle); border-radius: 14px; box-shadow: var(--shadow-200, 0 18px 50px rgba(0,0,0,.22)); }
.notif-head { display: flex; align-items: center; justify-content: space-between; padding: 12px 14px; border-bottom: 1px solid var(--border-subtle); font-family: var(--font-display); font-weight: 700; font-size: var(--fs-sm); color: var(--text-primary); position: sticky; top: 0; background: var(--bg-default); }
.notif-allread { background: none; border: none; color: var(--c-ginkgo-deep); font-size: var(--fs-caption); font-weight: 700; cursor: pointer; }
.notif-allread:hover { text-decoration: underline; }
.notif-list { display: flex; flex-direction: column; }
.notif-item { display: block; padding: 11px 14px; border-bottom: 1px solid var(--border-subtle); text-decoration: none; color: inherit; transition: background .12s; }
.notif-item:last-child { border-bottom: 0; }
.notif-item:hover { background: var(--bg-subtle); }
.notif-item.unread { background: var(--c-brand-bg); }
.notif-item-top { display: flex; align-items: center; gap: 6px; font-size: var(--fs-caption); color: var(--text-secondary); }
.notif-dot { width: 7px; height: 7px; border-radius: 50%; background: transparent; flex: none; }
.notif-item.unread .notif-dot { background: #d64c3a; }
.notif-who b { color: var(--text-primary); }
.notif-time { margin-left: auto; font-size: var(--fs-micro); color: var(--text-tertiary); white-space: nowrap; }
.notif-text { font-size: var(--fs-sm); color: var(--text-primary); line-height: 1.55; margin-top: 4px; }
.notif-changes { margin: 6px 0 0; padding-left: 16px; font-size: var(--fs-caption); color: var(--text-secondary); }
.notif-changes li { margin: 1px 0; }
.notif-empty { padding: 22px 16px; text-align: center; font-size: var(--fs-caption); color: var(--text-tertiary); line-height: 1.7; }
@media (max-width: 860px) { .notif-bell { width: 34px; height: 34px; } .notif-panel { right: -36px; } }

/* ===== プラン別の見え方（B：プラン別売上 / オプション / LOS / 月別推移） ===== */
.plan-dot { display: inline-block; width: 10px; height: 10px; border-radius: 3px; flex: none; margin-right: 6px; vertical-align: middle; }
.plan-rank { display: flex; flex-direction: column; gap: 14px; }
.plan-row { min-width: 0; }
.plan-row-head { display: flex; align-items: center; gap: 6px; margin-bottom: 5px; }
.plan-row-head .plan-name { font-weight: 700; color: var(--text-primary); font-size: var(--fs-sm); min-width: 0; overflow-wrap: anywhere; }
.plan-row-head .plan-man { margin-left: auto; font-weight: 700; color: var(--text-primary); font-variant-numeric: tabular-nums; }
.plan-row-head .plan-share { color: var(--text-tertiary); font-size: var(--fs-caption); font-variant-numeric: tabular-nums; min-width: 42px; text-align: right; }
.plan-track { display: flex; height: 16px; background: var(--bg-subtle, #f4f4f2); border-radius: 5px; overflow: hidden; }
.plan-fill { height: 100%; border-radius: 5px 0 0 5px; }
.plan-fill.inf { opacity: .34; border-radius: 0 5px 5px 0; background-image: repeating-linear-gradient(45deg, rgba(255,255,255,.5) 0 3px, transparent 3px 6px); }
.plan-fill:last-child { border-radius: 5px; }
.plan-metaline { margin-top: 5px; line-height: 1.5; overflow-wrap: anywhere; }
.plan-blurb { color: var(--text-tertiary); }

.opt-list { display: flex; flex-direction: column; gap: 9px; }
.opt-row { display: flex; align-items: center; gap: 10px; min-width: 0; }
.opt-row .opt-name { flex: none; width: 120px; font-size: var(--fs-sm); color: var(--text-primary); overflow-wrap: anywhere; }
.opt-track { flex: 1; min-width: 0; height: 14px; background: var(--bg-subtle, #f4f4f2); border-radius: 4px; overflow: hidden; }
.opt-track i { display: block; height: 100%; background: var(--c-brand, #6aa81e); border-radius: 4px; }
.opt-count { flex: none; width: 52px; text-align: right; font-weight: 700; font-variant-numeric: tabular-nums; }

.plan-legend { display: flex; flex-wrap: wrap; gap: 6px 14px; }
.plan-chip { display: inline-flex; align-items: center; font-size: var(--fs-caption); color: var(--text-secondary); white-space: nowrap; }
@media (max-width: 560px) { .opt-row .opt-name { width: 88px; } }

/* 累計／今年度 トグル */
.scope-bar { display: flex; flex-wrap: wrap; align-items: center; gap: 10px 14px; margin-top: 16px; padding: 12px 14px; background: var(--c-brand-bg, #fff7e0); border: 1px solid var(--c-brand, #6aa81e); border-radius: 12px; }
.scope-label { font-weight: 700; color: var(--text-primary); font-size: var(--fs-sm); }
.scope-toggle { display: inline-flex; background: #fff; border: 1px solid var(--border, #e5e6ea); border-radius: 999px; padding: 3px; gap: 2px; }
.scope-btn { border: 0; background: transparent; cursor: pointer; font-family: inherit; font-size: var(--fs-caption); font-weight: 700; color: var(--text-secondary); padding: 6px 14px; border-radius: 999px; transition: background .15s, color .15s; white-space: nowrap; }
.scope-btn:hover { color: var(--text-primary); }
.scope-btn.active { background: var(--c-brand, #6aa81e); color: #202226; }
.scope-hint { font-size: var(--fs-micro); color: var(--text-tertiary); }
@media (max-width: 560px) { .scope-hint { flex-basis: 100%; } }

/* ===== コーナーマップ強化：目的ルーター＋できること ===== */
.smap-purposes { display: grid; grid-template-columns: repeat(auto-fill, minmax(248px, 1fr)); gap: 12px; }
.smap-purpose { display: flex; align-items: center; gap: 12px; padding: 14px 16px; background: var(--bg-default, #fff); border: 1px solid var(--border-subtle, #eceae4); border-radius: 12px; transition: box-shadow .15s, transform .15s; }
.smap-purpose:hover { box-shadow: var(--shadow-hover); transform: translateY(-2px); text-decoration: none; }
.smap-purpose-ic { flex: none; width: 38px; height: 38px; display: grid; place-items: center; background: var(--c-brand-bg, #fff7e0); border-radius: 10px; color: var(--c-ginkgo-deep, #a86f00); }
.smap-purpose-ic .ic { width: 20px; height: 20px; }
.smap-purpose-tx { display: flex; flex-direction: column; min-width: 0; }
.smap-purpose-goal { font-weight: 700; color: var(--text-primary); font-size: var(--fs-sm); line-height: 1.4; overflow-wrap: anywhere; }
.smap-purpose-room { font-size: var(--fs-micro); color: var(--c-ginkgo-deep, #a86f00); margin-top: 3px; font-weight: 700; }

.smap-room-head { display: flex; align-items: center; gap: 10px; }
.smap-room-head .smap-room-emoji { font-size: 0; }
.smap-room-head .smap-room-emoji .ic { width: 26px; height: 26px; color: var(--c-ginkgo-deep, #a86f00); }
.smap-room-head .smap-room-name { margin-top: 0; }
.smap-room-can { margin-top: 10px; padding-top: 10px; border-top: 1px dashed var(--border-subtle, #eceae4); }
.smap-can-h { font-size: var(--fs-micro); font-weight: 700; color: var(--text-tertiary); letter-spacing: .02em; }
.smap-room-can ul { list-style: none; margin: 6px 0 0; padding: 0; display: flex; flex-direction: column; gap: 4px; }
.smap-room-can li { display: flex; align-items: flex-start; gap: 6px; font-size: var(--fs-caption); color: var(--text-secondary); line-height: 1.45; }
.smap-room-can li .ic { flex: none; width: 14px; height: 14px; color: var(--status-good, #30a143); margin-top: 2px; }

/* ===== 数字ページ内タブ（アイコン＋用途説明つきカード・sticky） ===== */
.num-tabs-wrap { position: sticky; top: var(--header-h); z-index: 91; background: rgba(255,255,255,.97); backdrop-filter: saturate(1.4) blur(8px); border-bottom: 1px solid var(--border-subtle); }
.num-tabs { display: flex; gap: 8px; padding: 10px 0; overflow-x: auto; scrollbar-width: none; }
.num-tabs::-webkit-scrollbar { display: none; }
.num-tab { flex: 1 1 0; min-width: 170px; border: 1.5px solid var(--border-subtle, #eceae4); background: var(--bg-default, #fff); cursor: pointer; font-family: inherit; padding: 10px 14px; display: flex; align-items: center; gap: 11px; border-radius: 12px; text-align: left; transition: border-color .15s, box-shadow .15s, background .15s; }
.num-tab-ic { flex: none; width: 38px; height: 38px; display: grid; place-items: center; border-radius: 10px; background: var(--bg-subtle, #f4f4f2); color: var(--text-tertiary); transition: background .15s, color .15s; }
.num-tab-ic .ic { width: 20px; height: 20px; }
.num-tab-tx { display: flex; flex-direction: column; min-width: 0; }
.num-tab-main { font-weight: 700; font-size: var(--fs-base); font-family: var(--font-display, inherit); color: var(--text-primary); line-height: 1.3; }
.num-tab-desc { font-size: var(--fs-micro); color: var(--text-tertiary); line-height: 1.35; margin-top: 1px; overflow-wrap: anywhere; }
.num-tab:hover { border-color: var(--c-brand, #6aa81e); box-shadow: var(--shadow-hover); }
.num-tab.active { border-width: 2px; }
.num-tab.tone-now.active { border-color: #3f6ecc; background: #eef3fc; }
.num-tab.tone-now.active .num-tab-ic { background: #3f6ecc; color: #fff; }
.num-tab.tone-econ.active { border-color: #ee7100; background: #fdf1e6; }
.num-tab.tone-econ.active .num-tab-ic { background: #ee7100; color: #fff; }
.num-tab.tone-kpi.active { border-color: #30a143; background: #eaf6ec; }
.num-tab.tone-kpi.active .num-tab-ic { background: #30a143; color: #fff; }
.num-tab.tone-future.active { border-color: #303560; background: #eceef6; }
.num-tab.tone-future.active .num-tab-ic { background: #303560; color: #fff; }
@media (max-width: 720px) { .num-tab { min-width: 60px; flex-basis: auto; } .num-tab-desc { display: none; } .num-tab-ic { width: 32px; height: 32px; } }

/* この画面の読み方（初心者ガイド・タブ別トーン） */
.num-guide-slot { margin: 14px 0 4px; }
.num-guide { border-radius: 14px; padding: 16px 18px; border: 1px solid var(--border-subtle, #eceae4); background: var(--c-brand-bg, #fff7e0); }
.num-guide.tone-now { background: #f3f7fd; }
.num-guide.tone-econ { background: #fdf5ed; }
.num-guide.tone-kpi { background: #f0f8f1; }
.num-guide.tone-future { background: #f1f2f8; }
.num-guide-head { display: flex; align-items: center; gap: 12px; }
.num-guide-ic { flex: none; width: 40px; height: 40px; display: grid; place-items: center; border-radius: 11px; background: #fff; color: var(--text-secondary); }
.num-guide-ic .ic { width: 22px; height: 22px; }
.num-guide.tone-now .num-guide-ic { color: #3f6ecc; } .num-guide.tone-econ .num-guide-ic { color: #ee7100; } .num-guide.tone-kpi .num-guide-ic { color: #30a143; } .num-guide.tone-future .num-guide-ic { color: #303560; }
.num-guide-eye { display: block; font-size: var(--fs-micro); font-weight: 700; letter-spacing: .04em; color: var(--text-tertiary); }
.num-guide-title { display: block; font-family: var(--font-display, inherit); font-weight: 700; font-size: var(--fs-h4, 18px); color: var(--text-primary); line-height: 1.35; }
.num-guide-lead { margin: 10px 0 12px; font-size: var(--fs-sm); color: var(--text-secondary); line-height: 1.6; max-width: 880px; }
.num-guide-steps { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 10px; }
.num-guide-step { background: #fff; border-radius: 10px; padding: 11px 13px; border: 1px solid var(--border-subtle, #eceae4); }
.ngs-h { display: block; font-weight: 700; font-size: var(--fs-caption); color: var(--text-primary); margin-bottom: 3px; }
.ngs-t { display: block; font-size: var(--fs-caption); color: var(--text-secondary); line-height: 1.5; }
.num-guide-next { display: flex; align-items: flex-start; gap: 7px; margin-top: 12px; font-size: var(--fs-caption); color: var(--text-primary); background: rgba(255,255,255,.6); border-radius: 8px; padding: 9px 12px; }
.num-guide-next .ic { flex: none; width: 15px; height: 15px; margin-top: 2px; color: var(--c-ginkgo-deep, #a86f00); }

/* ===== 中期計画：戦略ストーリー（出発点マップ＋「なぜ伸びしろ」付き施策） ===== */
.mt-strat { background: var(--bg-subtle, #f8f7f3); border-radius: 16px; padding: 18px 18px 20px; margin-bottom: 24px; }
.mt-strat-h { margin-bottom: 14px; }
.mt-eye { display: inline-block; font-size: var(--fs-micro); font-weight: 700; letter-spacing: .05em; color: var(--c-ginkgo-deep, #a86f00); background: var(--c-brand-bg, #fff7e0); padding: 3px 10px; border-radius: 999px; }
.mt-strat-title { font-family: var(--font-display); font-weight: 700; font-size: var(--fs-h3, 22px); margin: 10px 0 4px; color: var(--text-primary); }
.mt-strat-lead { font-size: var(--fs-sm); color: var(--text-secondary); line-height: 1.6; margin: 0; max-width: 860px; }
.mt-gaps { display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px; margin-top: 14px; }
.mt-gap { background: #fff; border: 1px solid var(--border-subtle); border-radius: 12px; padding: 14px; }
.mt-gap-top { display: flex; align-items: center; gap: 9px; }
.mt-gap-ic { flex: none; width: 34px; height: 34px; display: grid; place-items: center; border-radius: 9px; background: var(--bg-subtle, #f4f4f2); color: var(--text-secondary); }
.mt-gap.tone-good .mt-gap-ic { background: #eaf6ec; color: #30a143; } .mt-gap.tone-info .mt-gap-ic { background: #eef3fc; color: #3f6ecc; } .mt-gap.tone-brand .mt-gap-ic { background: #fff7e0; color: #c98a00; }
.mt-gap-ic .ic { width: 18px; height: 18px; }
.mt-gap-label { font-weight: 700; color: var(--text-primary); font-size: var(--fs-sm); }
.mt-gap-now { font-size: var(--fs-caption); color: var(--text-secondary); line-height: 1.5; margin: 8px 0 10px; }
.mt-gap-arrow { display: flex; align-items: flex-start; gap: 6px; font-size: var(--fs-caption); color: var(--text-primary); }
.mt-gap-arrow .ic { flex: none; width: 14px; height: 14px; margin-top: 2px; color: var(--c-ginkgo-deep, #a86f00); }
.mt-gap-chips { display: flex; flex-wrap: wrap; gap: 5px; margin-top: 9px; }
.mt-gap-chip { font-size: var(--fs-micro); font-weight: 700; color: var(--text-primary); background: var(--bg-subtle, #f4f4f2); border-radius: 6px; padding: 3px 9px; }
.mt-pillar-ic { flex: none; width: 30px; height: 30px; display: grid; place-items: center; border-radius: 8px; background: var(--bg-subtle, #f4f4f2); color: var(--text-secondary); }
.mt-pillar-ic .ic { width: 17px; height: 17px; }
.mt-pillar.tone-good .mt-pillar-ic { color: #30a143; } .mt-pillar.tone-info .mt-pillar-ic { color: #3f6ecc; } .mt-pillar.tone-brand .mt-pillar-ic { color: #c98a00; }
.mt-lifts { display: flex; flex-wrap: wrap; align-items: center; gap: 5px; margin-bottom: 9px; }
.mt-lifts-h { font-size: var(--fs-micro); color: var(--text-tertiary); margin-right: 2px; }
.mt-lift { font-size: var(--fs-micro); font-weight: 700; color: #fff; background: var(--c-ginkgo, #6f9c1e); border-radius: 6px; padding: 3px 9px; }
.mt-pillar.tone-good .mt-lift { background: #30a143; } .mt-pillar.tone-info .mt-lift { background: #3f6ecc; } .mt-pillar.tone-brand .mt-lift { background: #6f9c1e; }
.mt-pillar-why { font-size: var(--fs-sm); color: var(--text-primary); line-height: 1.65; margin: 0 0 10px; }
.mt-pillar-impact { display: flex; align-items: center; gap: 6px; }
.mt-pillar-impact .ic { flex: none; width: 15px; height: 15px; color: var(--c-ginkgo-deep, #a86f00); }
.mt-pillar-more { margin-top: 10px; border-top: 1px dashed var(--border-subtle); padding-top: 8px; }
.mt-pillar-more summary { font-size: var(--fs-caption); color: var(--text-secondary); cursor: pointer; font-weight: 700; }
.mt-pillar-more p { font-size: var(--fs-caption); color: var(--text-secondary); line-height: 1.6; margin: 8px 0 6px; }
.mt-pillar-link { font-size: var(--fs-caption); font-weight: 700; }
.mt-road-driver { color: var(--c-ginkgo-deep, #a86f00); }
@media (max-width: 760px){ .mt-gaps { grid-template-columns: 1fr; } }

/* ===== 計算根拠トグル（数字の出どころ・算出方法・一次確認先） ===== */
.calc-basis { margin-top: 12px; border-top: 1px dashed var(--border-subtle); padding-top: 8px; }
.calc-basis > summary { display: flex; align-items: center; gap: 6px; cursor: pointer; font-size: var(--fs-caption); font-weight: 700; color: var(--text-secondary); list-style: none; }
.calc-basis > summary::-webkit-details-marker { display: none; }
.calc-basis > summary .ic { width: 14px; height: 14px; flex: none; color: var(--c-ginkgo-deep, #a86f00); }
.calc-basis[open] > summary { color: var(--text-primary); margin-bottom: 8px; }
.cb-body { font-size: var(--fs-caption); background: var(--bg-subtle, #f8f7f3); border-radius: 8px; padding: 10px 12px; }
.cb-row { display: flex; gap: 10px; padding: 5px 0; border-bottom: 1px solid var(--border-subtle); }
.cb-row:last-of-type { border-bottom: 0; }
.cb-k { flex: none; width: 168px; font-weight: 700; color: var(--text-primary); }
.cb-v { color: var(--text-secondary); line-height: 1.55; }
.cb-verify { margin: 8px 0 0; font-size: var(--fs-micro); color: var(--text-tertiary); }
@media (max-width: 560px) { .cb-row { flex-direction: column; gap: 2px; } .cb-k { width: auto; } }

/* ===== SNS・集客の実数 横バー ===== */
.sns-bars { display: flex; flex-direction: column; gap: 9px; }
.sns-bar-row { display: flex; align-items: center; gap: 10px; min-width: 0; }
.sns-bar-label { flex: none; width: 152px; font-size: var(--fs-caption); color: var(--text-primary); overflow-wrap: anywhere; line-height: 1.35; }
.sns-bar-track { flex: 1; min-width: 0; height: 15px; background: var(--bg-subtle, #f4f4f2); border-radius: 4px; overflow: hidden; }
.sns-bar-track i { display: block; height: 100%; border-radius: 4px; }
.sns-bar-val { flex: none; width: 120px; text-align: right; font-weight: 700; font-variant-numeric: tabular-nums; font-size: var(--fs-caption); }
@media (max-width: 560px) { .sns-bar-label { width: 100px; } .sns-bar-val { width: 88px; } }

/* ===== ページ内スティッキー目次（toc-bar・脱トグル動線） ===== */
.toc-bar[hidden] { display: none !important; }
.toc-bar { display: flex; align-items: center; gap: 10px; max-width: var(--container); margin-inline: auto; padding: 6px var(--space-5) 8px; border-top: 1px solid var(--border-subtle); }
.toc-lead { flex: none; font-size: 11px; font-weight: 700; color: var(--text-secondary); letter-spacing: .04em; }
.toc-inner { display: flex; gap: 6px; overflow-x: auto; scrollbar-width: none; -ms-overflow-style: none; padding-bottom: 2px; }
.toc-inner::-webkit-scrollbar { display: none; }
.toc-chip { flex: none; font-size: 12px; font-weight: 600; line-height: 1; white-space: nowrap; padding: 6px 11px; border-radius: 999px; border: 1px solid var(--border-subtle); background: var(--bg-subtle); color: var(--text-secondary); text-decoration: none; transition: background .12s, color .12s, border-color .12s; }
.toc-chip:hover { border-color: var(--c-brand); color: var(--text-primary); }
.toc-chip.on { background: var(--c-brand); border-color: var(--c-brand); color: #202226; }
@media (max-width: 640px) { .toc-bar { padding: 5px var(--space-4) 7px; gap: 7px; } .toc-lead { display: none; } }

/* ===== ページ末「次に読むと面白い」回遊カード ===== */
.next-read { padding: var(--space-6) 0 var(--space-4); border-top: 1px solid var(--border-subtle); background: var(--bg-subtle, #f7f5f0); margin-top: var(--space-6); }
.next-head { display: flex; align-items: center; gap: 10px; margin-bottom: var(--space-4); }
.next-head-ic { display: inline-flex; width: 34px; height: 34px; border-radius: 10px; background: var(--c-brand-bg, #fff1c0); color: #b8860b; align-items: center; justify-content: center; }
.next-head-ic .ic { width: 20px; height: 20px; }
.next-head-tx { display: flex; flex-direction: column; line-height: 1.3; }
.next-head-tx b { font-size: 16px; }
.next-head-tx span { font-size: 12px; color: var(--text-secondary); }
.next-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: var(--space-3); }
.next-card { display: flex; flex-direction: column; gap: 10px; padding: var(--space-4); background: #fff; border: 1px solid var(--border-subtle); border-radius: 14px; box-shadow: 0 1px 2px rgba(0,0,0,.05); text-decoration: none; transition: transform .12s, box-shadow .12s, border-color .12s; }
.next-card:hover { transform: translateY(-2px); box-shadow: 0 6px 18px rgba(0,0,0,.08); border-color: var(--c-brand); }
.next-q { font-size: 15px; font-weight: 700; color: var(--text-primary); line-height: 1.45; }
.next-dest { display: flex; align-items: center; gap: 8px; padding-top: 8px; border-top: 1px dashed var(--border-subtle); }
.next-dest .next-ic { width: 18px; height: 18px; flex: none; color: var(--text-secondary); }
.next-dest-tx { display: flex; flex-direction: column; line-height: 1.25; flex: 1; min-width: 0; }
.next-dest-tx b { font-size: 13.5px; color: var(--text-primary); }
.next-dest-tx span { font-size: 11px; color: var(--text-secondary); }
.next-arrow { flex: none; font-weight: 700; color: #b8860b; }
@media (max-width: 760px) { .next-grid { grid-template-columns: 1fr; } }

/* ===== ベストショット集（bestshots.js）ギャラリー ===== */
.bs-pill { display: inline-flex; align-items: center; gap: 6px; }
.bs-pill .ic { width: 15px; height: 15px; }
.bs-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: var(--space-4); }
.bs-card { display: flex; flex-direction: column; background: #fff; border: 1px solid var(--border-subtle); border-radius: 14px; overflow: hidden; box-shadow: 0 1px 2px rgba(0,0,0,.05); text-decoration: none; transition: transform .14s, box-shadow .14s; }
.bs-card:hover { transform: translateY(-3px); box-shadow: 0 10px 26px rgba(0,0,0,.10); }
.bs-card.viral { border-color: var(--c-brand, #6aa81e); }
.bs-thumb-wrap { position: relative; aspect-ratio: 4/5; background: var(--bg-subtle); overflow: hidden; }
.bs-thumb { width: 100%; height: 100%; object-fit: cover; display: block; }
.bs-noimg { width: 100%; height: 100%; display: flex; align-items: center; justify-content: center; font-weight: 700; font-size: 28px; }
.bs-badge { position: absolute; top: 8px; left: 8px; font-size: 10px; font-weight: 700; padding: 3px 8px; border-radius: 999px; color: #fff; }
.bs-badge.reel { background: #c1558b; } .bs-badge.feed { background: #3f6ecc; }
.bs-viral-flag { position: absolute; bottom: 8px; left: 8px; right: 8px; font-size: 10.5px; font-weight: 700; color: #fff; background: rgba(32,34,38,.72); padding: 4px 8px; border-radius: 8px; display: inline-flex; align-items: center; gap: 5px; }
.bs-viral-flag .ic { width: 13px; height: 13px; }
.bs-body { padding: 11px 12px 13px; display: flex; flex-direction: column; gap: 7px; }
.bs-meta { display: flex; justify-content: space-between; align-items: center; }
.bs-date { font-size: 11px; color: var(--text-secondary); font-variant-numeric: tabular-nums; }
.bs-open { font-size: 11px; font-weight: 700; color: #b8860b; }
.bs-name { font-size: 13.5px; font-weight: 700; line-height: 1.4; color: var(--text-primary); display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.bs-chips { display: flex; flex-wrap: wrap; gap: 5px; }
.bs-chip { display: inline-flex; align-items: baseline; gap: 3px; padding: 2px 8px; border-radius: 999px; background: var(--bg-subtle); }
.bs-chip b { font-size: 12px; font-variant-numeric: tabular-nums; }
.bs-chip span { font-size: 10px; color: var(--text-secondary); }
.bs-chip.hi { background: var(--status-good-bg, #e7f6ea); } .bs-chip.hi b { color: var(--c-green-deep, #1f7a33); }
.bs-hero { border: 1px solid var(--c-brand, #6aa81e); border-radius: 16px; overflow: hidden; background: #fff; box-shadow: 0 2px 6px rgba(0,0,0,.06); }
.bs-hero-crown { padding: 10px 16px; background: var(--c-brand-bg, #fff1c0); font-size: 13px; display: flex; align-items: center; gap: 7px; }
.bs-hero-crown .ic { width: 18px; height: 18px; color: #b8860b; }
.bs-hero-card { flex-direction: row; border: none; border-radius: 0; box-shadow: none; }
.bs-hero-card:hover { transform: none; box-shadow: none; }
.bs-hero-card .bs-thumb-wrap { flex: none; width: 42%; max-width: 360px; aspect-ratio: auto; }
.bs-hero-card .bs-body { flex: 1; justify-content: center; padding: 20px 22px; gap: 12px; }
.bs-hero-card .bs-name { font-size: 19px; -webkit-line-clamp: 3; }
.bs-hero-card .bs-chip b { font-size: 14px; } .bs-hero-card .bs-chip { padding: 4px 11px; }
@media (max-width: 640px) { .bs-grid { grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: var(--space-3); } .bs-hero-card { flex-direction: column; } .bs-hero-card .bs-thumb-wrap { width: 100%; max-width: none; aspect-ratio: 4/5; } }

/* ===== 投稿ネタガチャ（gacha.js） ===== */
.gacha-stage { display: flex; flex-direction: column; align-items: center; gap: 22px; margin-top: 24px; }
.gacha-btn { font: 700 16px "Zen Maru Gothic","Noto Sans JP",sans-serif; padding: 14px 32px; border-radius: 999px; border: none; background: var(--c-brand,#6aa81e); color: #202226; cursor: pointer; box-shadow: 0 4px 14px rgba(254,192,16,.4); transition: transform .12s, box-shadow .12s; order: 2; }
.gacha-btn:hover { transform: translateY(-2px); box-shadow: 0 8px 22px rgba(254,192,16,.5); }
.gacha-btn:active { transform: translateY(0); }
#gacha-result { order: 1; width: 100%; display: flex; justify-content: center; }
.gacha-card { width: 100%; max-width: 720px; background: #fff; border: 1px solid var(--border-subtle); border-radius: 18px; box-shadow: 0 2px 10px rgba(0,0,0,.06); padding: 24px; display: flex; flex-direction: column; gap: 16px; }
#gacha-result.pop .gacha-card { animation: gachaPop .32s cubic-bezier(.2,.9,.3,1.3); }
@keyframes gachaPop { 0% { opacity: 0; transform: scale(.94) translateY(8px); } 100% { opacity: 1; transform: none; } }
.gacha-no { align-self: flex-start; font-size: 12px; font-weight: 700; color: #b8860b; background: var(--c-brand-bg,#fff1c0); padding: 4px 12px; border-radius: 999px; }
.gacha-shot { display: flex; align-items: flex-start; gap: 12px; }
.gacha-shot-ic { flex: none; width: 40px; height: 40px; border-radius: 12px; background: var(--bg-subtle); display: inline-flex; align-items: center; justify-content: center; }
.gacha-shot-ic .ic { width: 22px; height: 22px; color: var(--text-secondary); }
.gacha-shot-tx { font-size: 21px; font-weight: 700; line-height: 1.5; color: var(--text-primary); font-family: "Zen Maru Gothic","Noto Sans JP",sans-serif; }
.gacha-shot-tx b { color: #b8860b; }
.gacha-row { display: flex; flex-wrap: wrap; gap: 8px; }
.gacha-tag { display: inline-flex; align-items: center; gap: 6px; font-size: 12.5px; font-weight: 600; padding: 6px 12px; border-radius: 999px; border: 1px solid var(--border-subtle); }
.gacha-tag .ic { width: 15px; height: 15px; }
.gacha-tag.who { color: var(--wc,#3f6ecc); border-color: var(--wc,#3f6ecc); background: var(--bg-subtle); }
.gacha-tag.season { color: var(--text-secondary); background: var(--bg-subtle); }
.gacha-cap { font-size: 15px; line-height: 1.6; padding: 14px 16px; border-radius: 12px; background: var(--bg-subtle); font-weight: 700; }
.gacha-cap-lead { display: block; font-size: 11px; font-weight: 700; color: var(--text-secondary); margin-bottom: 4px; }
.gacha-cap-sub { display: block; font-size: 12px; font-weight: 500; color: var(--text-secondary); margin-top: 4px; }
.gacha-ref { display: flex; align-items: center; gap: 12px; padding: 10px; border: 1px solid var(--border-subtle); border-radius: 12px; text-decoration: none; transition: border-color .12s; }
.gacha-ref:hover { border-color: var(--c-brand,#6aa81e); }
.gacha-ref img { width: 56px; height: 56px; border-radius: 9px; object-fit: cover; flex: none; }
.gacha-ref-tx { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 2px; }
.gacha-ref-lead { font-size: 10.5px; color: var(--text-secondary); }
.gacha-ref-tx b { font-size: 13.5px; color: var(--text-primary); }
.gacha-ref-m { font-size: 11px; color: var(--text-secondary); font-variant-numeric: tabular-nums; }
.gacha-ref-go { flex: none; font-weight: 700; color: #b8860b; }
.gacha-actions { display: flex; flex-wrap: wrap; gap: 8px; border-top: 1px dashed var(--border-subtle); padding-top: 14px; }
.gacha-link { display: inline-flex; align-items: center; gap: 6px; font-size: 12.5px; font-weight: 600; color: var(--text-primary); text-decoration: none; padding: 7px 12px; border-radius: 999px; background: var(--bg-subtle); transition: background .12s; }
.gacha-link:hover { background: var(--c-brand-bg,#fff1c0); }
.gacha-link .ic { width: 15px; height: 15px; color: var(--text-secondary); }
@media (max-width: 560px) { .gacha-shot-tx { font-size: 18px; } .gacha-card { padding: 18px; } }

/* ===== 投稿カレンダー（postcal.js） ===== */
.pc-heat-grid { display: flex; flex-direction: column; gap: 4px; max-width: 560px; }
.pc-heat-row { display: grid; grid-template-columns: 34px repeat(5, 1fr); gap: 4px; }
.pc-heat-head .pc-heat-cell-h { text-align: center; padding: 2px; }
.pc-heat-cell-h b { display: block; font-size: 11.5px; font-weight: 700; }
.pc-heat-cell-h i { font-size: 9px; color: var(--text-tertiary); font-style: normal; }
.pc-heat-day { display: flex; align-items: center; justify-content: center; font-size: 12px; font-weight: 700; color: var(--text-secondary); }
.pc-heat-cell { aspect-ratio: 1.6; border-radius: 6px; background: var(--bg-subtle); display: flex; align-items: center; justify-content: center; font-size: 11px; }
.pc-heat-cell.on { background: rgba(224,165,38,var(--op,.5)); }
.pc-heat-cell b { font-weight: 700; color: #5a3d05; }
.pc-mon { font-family: "Zen Maru Gothic","Noto Sans JP",sans-serif; font-weight: 700; font-size: 18px; }
.pc-peak { font-size: 13px; color: #527617; letter-spacing: 1px; }
.pc-plans { display: grid; grid-template-columns: repeat(3, 1fr); gap: 14px; }
@media (max-width: 820px) { .pc-plans { grid-template-columns: 1fr; } }
.pc-plan-card { border: 1px solid var(--border-subtle); border-radius: 14px; background: #fff; box-shadow: 0 1px 2px rgba(0,0,0,.05); padding: 16px; }
.pc-plan-top { display: flex; align-items: center; gap: 7px; flex-wrap: wrap; margin-bottom: 10px; }
.pc-plan-no { font-size: 12px; font-weight: 700; color: #b8860b; background: var(--c-brand-bg, #fff1c0); padding: 3px 10px; border-radius: 999px; }
.pc-plan-slot { font-size: 11px; color: var(--text-secondary); font-weight: 700; width: 100%; }
.pc-plan-theme { font-size: 15px; font-weight: 700; line-height: 1.4; margin-bottom: 8px; }
.pc-plan-theme .ic { width: 16px; height: 16px; color: var(--text-secondary); vertical-align: -2px; }
.pc-plan-links { display: flex; flex-wrap: wrap; gap: 6px; border-top: 1px dashed var(--border-subtle); padding-top: 10px; }
.pc-plan-links a { display: inline-flex; align-items: center; gap: 4px; font-size: 11px; font-weight: 600; color: var(--text-primary); text-decoration: none; background: var(--bg-subtle); padding: 5px 9px; border-radius: 999px; }
.pc-plan-links a:hover { background: var(--c-brand-bg, #fff1c0); }
.pc-plan-links .ic { width: 13px; height: 13px; color: var(--text-secondary); }

/* ===== 宿の運営（operations.js） ===== */
.ops-band { display: flex; align-items: flex-end; gap: 6px; overflow-x: auto; padding-bottom: 4px; }
.ops-band-col { display: flex; flex-direction: column; align-items: center; gap: 3px; flex: 1; min-width: 30px; justify-content: flex-end; }
.ops-band-col i { width: 100%; max-width: 34px; border-radius: 4px 4px 0 0; }
.ops-band-v { font-size: 10px; font-weight: 700; color: var(--text-secondary); font-variant-numeric: tabular-nums; }
.ops-band-l { font-size: 10px; color: var(--text-tertiary); }
.ops-cals { display: grid; grid-template-columns: repeat(3, 1fr); gap: 16px; }
@media (max-width: 820px) { .ops-cals { grid-template-columns: 1fr; } }
.ops-cal { border: 1px solid var(--border-subtle); border-radius: 12px; padding: 12px; background: #fff; }
.ops-cal-head { font-weight: 700; font-size: 13.5px; margin-bottom: 8px; }
.ops-cal-sub { font-size: 11px; color: var(--text-secondary); font-weight: 500; }
.ops-cal-dow { display: grid; grid-template-columns: repeat(7, 1fr); gap: 3px; margin-bottom: 3px; }
.ops-cal-dow span { text-align: center; font-size: 10px; color: var(--text-tertiary); }
.ops-cal-grid { display: grid; grid-template-columns: repeat(7, 1fr); gap: 3px; }
.ops-cell { aspect-ratio: 1; border-radius: 6px; background: var(--bg-subtle); display: flex; flex-direction: column; align-items: center; justify-content: center; font-size: 11px; color: var(--text-secondary); }
.ops-cell.empty { background: transparent; }
.ops-cell b { font-weight: 600; font-size: 11px; }
.ops-cell.on { background: rgba(48,161,67,var(--op,.5)); color: #14431f; }
.ops-cell.on b { color: #0f3318; font-weight: 700; }
.ops-cell.on i { font-size: 8px; font-style: normal; line-height: 1; }
.ops-cell.today { outline: 2px solid var(--c-brand, #6aa81e); outline-offset: -1px; }
.ops-econ-bars { display: flex; flex-direction: column; gap: 9px; }
.ops-econ-row { display: flex; align-items: center; gap: 12px; }
.ops-econ-name { flex: none; width: 172px; font-size: 12.5px; font-weight: 700; line-height: 1.3; }
.ops-econ-meta { display: block; font-size: 10px; color: var(--text-secondary); font-weight: 500; }
.ops-econ-bar { flex: 1; min-width: 0; height: 18px; background: var(--bg-subtle); border-radius: 5px; overflow: hidden; display: flex; }
.ops-econ-bar i { height: 100%; }
.ops-econ-bar i.cm { background: var(--c-green, #30a143); }
.ops-econ-bar i.var { background: #cfd1d4; }
.ops-econ-val { flex: none; width: 112px; text-align: right; font-size: 13px; font-weight: 700; font-variant-numeric: tabular-nums; }
.ops-econ-legend { display: flex; gap: 16px; margin-top: 10px; font-size: 11.5px; color: var(--text-secondary); }
.ops-econ-legend i { display: inline-block; width: 12px; height: 12px; border-radius: 3px; margin-right: 5px; vertical-align: -1px; }
.ops-econ-legend i.cm { background: var(--c-green, #30a143); } .ops-econ-legend i.var { background: #cfd1d4; }
.ops-pipe { display: flex; align-items: stretch; gap: 6px; overflow-x: auto; padding-bottom: 4px; }
.ops-stage { flex: 1; min-width: 132px; border: 1px solid var(--border-subtle); border-radius: 12px; background: #fff; box-shadow: 0 1px 2px rgba(0,0,0,.04); overflow: hidden; }
.ops-stage-top { border-top: 3px solid; padding: 10px 14px 0; display: flex; align-items: center; gap: 6px; flex-wrap: wrap; }
.ops-stage-name { font-size: 12.5px; font-weight: 700; }
.ops-stage-n { font-family: "Zen Maru Gothic","Noto Sans JP",sans-serif; font-weight: 700; font-size: 30px; line-height: 1; font-variant-numeric: tabular-nums; padding: 6px 14px 0; }
.ops-stage-u { font-size: 13px; font-weight: 500; margin-left: 2px; }
.ops-stage-man { font-size: 12px; color: var(--text-secondary); font-weight: 700; padding: 2px 14px 0; }
.ops-stage-desc { font-size: 10.5px; color: var(--text-tertiary); padding: 6px 14px 12px; line-height: 1.4; }
.ops-stage-arr { display: flex; align-items: center; color: #527617; font-weight: 700; flex: none; }
@media (max-width: 640px) { .ops-stage-arr { display: none; } .ops-pipe { flex-wrap: wrap; } .ops-stage { min-width: 45%; } }
.ops-sched { display: flex; flex-direction: column; gap: 8px; }
.ops-sched-row { display: flex; gap: 14px; align-items: flex-start; padding: 12px 14px; border: 1px solid var(--border-subtle); border-radius: 10px; background: #fff; }
.ops-sched-row.big { border-color: var(--status-warn, #ee7100); background: #fff9f3; }
.ops-sched-date { flex: none; width: 46px; text-align: center; display: flex; flex-direction: column; line-height: 1.1; }
.ops-sched-date b { font-size: 17px; font-weight: 700; font-variant-numeric: tabular-nums; }
.ops-sched-date i { font-size: 11px; color: var(--text-secondary); font-style: normal; }
.ops-sched-main { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 3px; }
.ops-sched-plan { font-size: 14px; font-weight: 700; }
.ops-sched-meta { font-size: 11.5px; color: var(--text-secondary); }
.ops-opts { display: flex; flex-wrap: wrap; gap: 5px; align-items: center; margin-top: 4px; }
.ops-opts-l { font-size: 10.5px; font-weight: 700; color: #c2680a; }
.ops-opt { display: inline-block; font-size: 11px; font-weight: 600; color: #8a4b00; background: #fdebd6; border-radius: 6px; padding: 2px 8px; }

/* ===== 今週の発見ダイジェスト（digest.js） ===== */
.digest-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(290px, 1fr)); gap: 14px; }
.digest-card { display: flex; gap: 12px; padding: 16px; background: #fff; border: 1px solid var(--border-subtle); border-radius: 14px; box-shadow: 0 1px 2px rgba(0,0,0,.05); }
.digest-dot { flex: none; width: 38px; height: 38px; border-radius: 11px; display: inline-flex; align-items: center; justify-content: center; }
.digest-dot .ic { width: 20px; height: 20px; }
.digest-dot.good { background: var(--status-good-bg, #e7f6ea); color: var(--c-green-deep, #1f7a33); }
.digest-dot.warn { background: #fdebd6; color: #c2680a; }
.digest-dot.info { background: #e3edff; color: #2f5fcc; }
.digest-body { flex: 1; min-width: 0; }
.digest-fact { font-size: 14.5px; font-weight: 700; line-height: 1.45; color: var(--text-primary); }
.digest-detail { font-size: 11.5px; color: var(--text-secondary); margin-top: 3px; line-height: 1.5; }
.digest-act { font-size: 12.5px; color: var(--text-primary); margin-top: 8px; line-height: 1.55; }
.digest-act b { color: #b8860b; }
.digest-src { display: inline-flex; align-items: center; gap: 3px; margin-top: 10px; font-size: 11px; font-weight: 700; color: var(--text-secondary); text-decoration: none; background: var(--bg-subtle); padding: 4px 10px; border-radius: 999px; }
.digest-src .ic { width: 13px; height: 13px; }
.digest-src:hover { color: var(--text-primary); background: var(--c-brand-bg, #fff1c0); }

/* ===== もし会議（売上シミュレータ・moshi.js） ===== */
.moshi-grid { display: grid; grid-template-columns: 1.1fr 1fr; gap: 16px; }
@media (max-width: 760px) { .moshi-grid { grid-template-columns: 1fr; } }
.moshi-result { display: flex; flex-direction: column; gap: 18px; justify-content: center; }
.moshi-big { display: flex; flex-direction: column; gap: 4px; }
.moshi-big-label { font-size: 12px; color: var(--text-secondary); font-weight: 700; }
.moshi-big-val { font-family: "Zen Maru Gothic","Noto Sans JP",sans-serif; font-weight: 700; font-size: 52px; line-height: 1; font-variant-numeric: tabular-nums; }
.moshi-big-val .u { font-size: 20px; margin-left: 4px; }
.moshi-sub { font-size: 13px; color: var(--text-secondary); line-height: 1.6; }
.moshi-over { color: var(--c-green-deep, #1f7a33); }
.moshi-bar { display: flex; flex-direction: column; gap: 8px; }
.moshi-bar-track { position: relative; height: 22px; background: var(--bg-subtle); border-radius: 999px; }
.moshi-bar-track i { display: block; height: 100%; border-radius: 999px; transition: width .15s; }
.moshi-mark { position: absolute; top: -3px; width: 2px; height: 28px; }
.moshi-mark.tg { background: var(--c-green, #30a143); } .moshi-mark.be { background: var(--status-warn, #ee7100); }
.moshi-bar-legend { display: flex; gap: 16px; font-size: 11px; color: var(--text-secondary); }
.moshi-bar-legend .dot { display: inline-block; width: 8px; height: 8px; border-radius: 2px; margin-right: 4px; }
.moshi-bar-legend .dot.tg { background: var(--c-green, #30a143); } .moshi-bar-legend .dot.be { background: var(--status-warn, #ee7100); }
.moshi-controls { display: flex; flex-direction: column; gap: 18px; }
.moshi-ctl-head { display: flex; align-items: center; gap: 8px; }
.moshi-ctl-head .emj .ic { width: 18px; height: 18px; }
.moshi-reset { margin-left: auto; font-size: 11.5px; font-weight: 600; color: var(--text-secondary); background: var(--bg-subtle); border: 1px solid var(--border-subtle); border-radius: 999px; padding: 5px 11px; cursor: pointer; }
.moshi-reset:hover { border-color: var(--c-brand); }
.moshi-ctl-top { display: flex; justify-content: space-between; align-items: baseline; margin-bottom: 6px; }
.moshi-ctl-label { font-size: 13.5px; font-weight: 700; }
.moshi-ctl-val { font-size: 18px; font-weight: 700; color: var(--c-brand-strong, #6aa81e); font-variant-numeric: tabular-nums; }
.moshi-range { -webkit-appearance: none; appearance: none; width: 100%; height: 8px; border-radius: 999px; background: var(--bg-subtle); outline: none; }
.moshi-range::-webkit-slider-thumb { -webkit-appearance: none; width: 22px; height: 22px; border-radius: 50%; background: var(--c-brand, #6aa81e); border: 2px solid #fff; box-shadow: 0 1px 4px rgba(0,0,0,.25); cursor: pointer; }
.moshi-range::-moz-range-thumb { width: 22px; height: 22px; border-radius: 50%; background: var(--c-brand, #6aa81e); border: 2px solid #fff; box-shadow: 0 1px 4px rgba(0,0,0,.25); cursor: pointer; }
.moshi-ctl-foot { display: flex; justify-content: space-between; font-size: 10.5px; color: var(--text-tertiary); margin-top: 5px; }
.moshi-base { color: #b8860b; font-weight: 700; }
.moshi-ctl-sub { font-size: 11.5px; color: var(--text-secondary); line-height: 1.5; margin-top: 4px; }
.moshi-presets { display: flex; flex-wrap: wrap; gap: 7px; align-items: center; margin-top: 4px; }
.moshi-preset { font-size: 12px; font-weight: 600; color: var(--text-primary); background: var(--c-brand-bg, #fff1c0); border: 1px solid var(--border-subtle); border-radius: 999px; padding: 6px 12px; cursor: pointer; }
.moshi-preset:hover { border-color: var(--c-brand); }

/* ===== Instagram 分析モジュール（ig-analytics.js）のタブ ===== */
.iga-tabs { flex-wrap: wrap; }
.iga-tab { font: 600 12px/1 "Noto Sans JP", sans-serif; padding: 6px 12px; border-radius: 999px; border: 1px solid var(--border-subtle); background: var(--bg-subtle); color: var(--text-secondary); cursor: pointer; transition: background .12s, color .12s, border-color .12s; }
.iga-tab:hover { border-color: var(--c-brand); }
.iga-tab.on { background: var(--c-brand); border-color: var(--c-brand); color: #202226; }
