/* ===== Phase S1b: Gup semantic design token =====
   正本 docs/GUP_UI_BASIC.md
   ここは「意味の名前」だけを定義する。色そのものの名前（--blue 等）は作らない。
   既存の base.css の色名 property は削除せず、当面は共存させる（置き換えは S1e）。
   ★ここでの定義は :root への追加のみ。①〜⑥ の既存 class は一切変更しない。 */

:root{
  /* --- font family（正本はここ 1 か所） --------------------------------------
     欧文と数字は Segoe UI、和文は Meiryo UI。
     ★font stack は「字ごとにさかのぼる」ので、Segoe UI を先頭へ置くだけで
     ローマ字・数字だけが Segoe UI になり、日本語はそのまま Meiryo UI へ落ちる。
     金額表を読むアプリなので、数字が等幅で桁がそろうことを優先する
     （実測：Segoe UI の 0〜9 は幅のばらつき 0px。Arial は 3.56px あるので候補にしない）。
     どれも OS 同梱フォントなので外部参照は増えない（offline 維持）。
     以降は Segoe UI / Meiryo UI が無い環境（macOS / Linux）のための順送り。 */
  --gup-font-sans:"Segoe UI","Meiryo UI","Meiryo","Hiragino Sans","Yu Gothic","Noto Sans JP",-apple-system,sans-serif;
  /* ロゴ（ヘッダの Gup）だけに使う書体。字形が SemiBold なので weight は regular のまま置く。
     実体は styles/brand-font.css に data: URI で埋め込んである（外部 font は読まない）。 */
  --gup-font-brand:"Orbitron SemiBold",var(--gup-font-sans);

  /* --- typography（7 段階） --------------------------------------------------- */
  --gup-fs-note:12px;    /* 注釈のみ */
  --gup-fs-sm:14px;      /* 補助情報・table 本文 */
  --gup-fs-base:16px;    /* 本文・label・input・button */
  --gup-fs-lg:18px;      /* section heading */
  --gup-fs-xl:20px;      /* screen heading */
  /* UI-TYPE2：24px は 6 段に無い。この token は「主役の 1 段下」として使われていた
     （③ 全体計画の 5 つの数字・狭い画面での主役の縮小）ので、xl（20px＝結論の値）の別名にする。 */
  --gup-fs-kpi:var(--gup-fs-xl);   /* 結論の値と同じ段（20px） */
  /* UI-TYPE2（Founder 判断）：文字の大きさは ① 付加価値（MQ）を正本にした 6 段だけ。
       28 画面の主役の数字（1 画面 1 つ） ／ 20 結論の値・カードの見出し ／ 18 画面名
       16 表の数値・入力・ボタン ／ 14 名前・本文・ラベル・補足 ／ 12 列見出し
     ★グラフの中の文字（SVG）は図の一部なので、この段の外として扱う。
     ★hero(32px) は「主役の数字」と役割が同じだったので display(28px) へそろえた
       （別名は残す。呼び口が 8 か所あり、意味は「1 画面 1 個の最重要」で変わらないため）。 */
  --gup-fs-display:28px;  /* 画面の主役の数字・大きな見出し */
  --gup-fs-hero:28px;     /* 最重要 KPI（1 画面 1 個）。display と同じ段 */

  /* --- typography（High-Density 追加段。GUP-HIGH-DENSITY-UI1 ALL VIEWS・DESIGN.md §2.6/§5.1） ---
     ★旧「12px 未満禁止・6 段だけ」は撤回済み。密度のために文字を縮めてよい（10px が床）。
       上の 6 段は 1 つも変えず、その間・下を埋める追加トークンだけを足す。
       10px 未満は使わない・長文本文を 10px にしない・主役の数字を小さくしない、が原則。 */
  --gup-fs-micro:10px;   /* 補助メタデータの床（差分の単位・件数） */
  --gup-fs-2xs:11px;     /* 表・control の label・小 badge */
  --gup-fs-xs:13px;      /* 高密度な通常本文（狭い列・compact row） */
  --gup-fs-sm2:15px;     /* section 見出しの下限（高密度画面） */
  --gup-fs-md:17px;      /* major numeric の下限 */
  --gup-fs-xl2:22px;     /* major numeric の上限・hero の下限 */

  /* --- font weight（Phase UI-TYPE1） ---------------------------------------
     Meiryo UI の物理ウェイトは Regular(400) と Bold(700) の 2 段階しかない。
     500 / 600 / 800 / 900 を指定しても実画面ではどちらかへ収束し、意味の差を作れない。
     だから **物理は 2 段階だけ**にして、意味は semantic token の名前で分ける。 */
  --gup-font-weight-regular:400;
  --gup-font-weight-bold:700;

  /* 役割ごとの weight（component はこちらを参照する） */
  --gup-type-body-weight:var(--gup-font-weight-regular);          /* 本文・説明・note */
  --gup-type-caption-weight:var(--gup-font-weight-regular);       /* caption・helper */
  --gup-type-label-weight:var(--gup-font-weight-regular);         /* field label */
  --gup-type-input-weight:var(--gup-font-weight-regular);         /* 入力中の値 */
  /* FOUNDER-WALKTHROUGH-FIX3（W10・Founder 指示）：③ の打ち手（変化率）の欄だけ Bold。
     ここは「その行で利用者が決める値」＝情報階層の主役なので、装飾ではなく階層として太くする。
     ほかの入力欄は --gup-type-input-weight（Regular）のまま。 */
  --gup-type-lever-input-weight:var(--gup-font-weight-bold);
  --gup-type-heading-weight:var(--gup-font-weight-bold);          /* page / section / panel 見出し */
  --gup-type-selected-weight:var(--gup-font-weight-bold);         /* 選択中のナビ */
  --gup-type-nav-weight:var(--gup-font-weight-regular);           /* 非選択のナビ */
  --gup-type-primary-action-weight:var(--gup-font-weight-bold);   /* 主要な実行ボタン */
  --gup-type-secondary-action-weight:var(--gup-font-weight-regular);
  --gup-type-table-header-weight:var(--gup-font-weight-bold);
  --gup-type-table-body-weight:var(--gup-font-weight-regular);
  --gup-type-total-weight:var(--gup-font-weight-bold);            /* 合計・総合計 */
  --gup-type-kpi-label-weight:var(--gup-font-weight-regular);
  --gup-type-kpi-primary-weight:var(--gup-font-weight-bold);      /* 画面の最重要 KPI だけ */
  --gup-type-badge-weight:var(--gup-font-weight-bold);            /* 短い badge ラベル */
  --gup-type-alert-heading-weight:var(--gup-font-weight-bold);    /* 警告・エラーの見出し */
  --gup-type-alert-body-weight:var(--gup-font-weight-regular);    /* 警告・エラーの本文 */

  /* 旧名（既存 class が参照している。値は上の 2 段階へ収束させる） */
  --gup-fw-normal:var(--gup-font-weight-regular);
  --gup-fw-medium:var(--gup-font-weight-regular);   /* UI-TYPE1: 500 は Regular へ */
  --gup-fw-semibold:var(--gup-font-weight-bold);    /* UI-TYPE1: 600 は Bold へ */

  --gup-lh-compact:1.25;
  --gup-lh-normal:1.5;
  --gup-lh-heading:1.3;
  /* UI-TYPE5：日本語の本文・説明・補足の行送り。単語間に空白が無いぶん、欧文の 1.5 では詰まる。 */
  --gup-lh-body:1.75;
  /* UI-TYPE5：本文 1 行の長さの上限（全角でおよそ 42 字）。これを超えると次の行頭へ目が戻れない。 */
  --gup-measure:42em;

  /* --- spacing（7 段階） ----------------------------------------------------- */
  --gup-sp-1:4px;    /* label と補助値 */
  --gup-sp-2:8px;    /* control 内部 */
  --gup-sp-3:12px;   /* compact group / table cell */
  --gup-sp-4:16px;   /* 通常 control 間 */
  --gup-sp-5:24px;   /* section 内部 */
  --gup-sp-6:32px;   /* section 間 */
  --gup-sp-7:48px;   /* 大区切り */

  /* --- radius（3 段階） ------------------------------------------------------ */
  --gup-radius-sm:6px;     /* input / select / small control */
  --gup-radius-md:10px;    /* card / drawer section / modal */
  --gup-radius-pill:999px; /* badge のみ */

  /* --- shadow（2 段階） ------------------------------------------------------ */
  --gup-shadow-none:none;                              /* 通常 card は border のみ */
  --gup-shadow-overlay:0 12px 32px rgba(23,32,42,.18); /* modal / drawer だけ */

  /* --- control height（2 種類だけ） ----------------------------------------- */
  --gup-control-standard:40px; /* 通常 button / input / select / textarea */
  --gup-control-compact:34px;  /* 月次 12 か月 table 内・高密度入力・compact filter */

  /* --- control の内部寸法（Phase UI-SYSTEM1-1B2）-----------------------------
     高さの正本は上の 2 つ。ここでは**同義の別名を作らない**（重複定義を避ける）。
     追加するのは「高さを 40 / 34 に着地させるための内部寸法」だけ。 */
  --gup-control-padding-block-standard:var(--gup-sp-2);   /*  8px 上下 */
  --gup-control-padding-block-compact:var(--gup-sp-1);    /*  4px 上下 */
  --gup-control-padding-inline-standard:var(--gup-sp-3);  /* 12px 左右 */
  --gup-control-padding-inline-compact:var(--gup-sp-2);   /*  8px 左右 */
  /* 入力欄とその単位（「円」「%」「人」）のあいだ */
  --gup-control-unit-gap:var(--gup-sp-2);
  /* textarea は固定高にしない。**下限**だけを決めて、行数と内容量で伸びる。 */
  --gup-textarea-min-height:calc(var(--gup-control-standard) * 2);  /* 80px */
  --gup-textarea-min-height-compact:calc(var(--gup-control-compact) * 2); /* 68px */
  /* checkbox / radio の四角そのもの（label を含む当たり判定とは別） */
  --gup-choice-box-size:18px;

  /* --- semantic alias（Phase UI-SYSTEM1-1A）---------------------------------
     「値」ではなく「役割」に名前を付ける層。上の scale を指すだけで、値は変えない。

     ここがあると、次のフェーズ（UI-SYSTEM1-1B）で余白を揃えるときに、
     **この 1 行を書き換えるだけ**で該当する役割の全画面が動く。
     いま raw な値で書かれている箇所を、この alias へ寄せていくのが 1B の仕事。

     ★役割が違うなら、値が同じでも alias を分ける（無理に 1 つへまとめない）。 */
  --gup-page-inline-padding:var(--gup-sp-6);   /* 画面の左右余白 */
  --gup-page-block-gap:var(--gup-sp-6);        /* 画面内の大区切り */
  --gup-section-gap:var(--gup-sp-3);           /* section の中の縦の間隔 */
  --gup-panel-padding:var(--gup-sp-5);         /* panel の内側 */
  --gup-card-padding:var(--gup-sp-5);          /* card の内側 */
  --gup-modal-padding:var(--gup-sp-5);         /* modal の内側 */
  --gup-form-row-gap:var(--gup-sp-3);          /* 入力行どうし */
  --gup-control-gap:var(--gup-sp-3);           /* control どうし */
  --gup-table-cell-block-padding:var(--gup-sp-2);   /* 表セルの上下 */
  --gup-table-cell-inline-padding:var(--gup-sp-3);  /* 表セルの左右 */

  /* ==========================================================================
     Gup Color System v1（正本 docs/UI_COLOR1_SYSTEM.md）

     2 層構造。**component は semantic だけを参照する**。
       palette   --gup-p-*    色そのもの。ここ以外から参照しない
       semantic  --gup-*      意味の名前。画面・component はこちらを使う

     色は装飾ではなく「落ち着いて経営判断するための情報」。
     強い色は意味と操作にだけ使い、面の階層は neutral で作る。
     ========================================================================== */

  /* --- palette（内部専用。component から直接参照しない） --------------------- */
  --gup-p-ink-900:#17202A;   /* on #FFF 16.5:1 */
  --gup-p-ink-700:#33383F;
  --gup-p-ink-600:#495260;
  --gup-p-ink-500:#5C636C;   /* on #FFF  6.1:1 */
  --gup-p-ink-400:#656B72;   /* on #FFF 5.4:1 ／ 最も濃い面 #F2F0EA でも 4.7:1（旧 #6E747B は 4.14:1） */
  --gup-p-ink-300:#8A92A0;   /* on #FFF  3.1:1（境界用。文字に使わない） */
  --gup-p-ink-100:#E3E0D6;
  --gup-p-paper:#F7F6F1;
  --gup-p-paper-2:#F2F0EA;
  --gup-p-paper-3:#FAF9F5;
  --gup-p-white:#FFFFFF;
  /* --- GUP-AIR-SURFACE1（Founder 決定 ＝ Variant B）：Air の面の階層 -----------
     Air を「白いアプリ」から「淡いグレーの作業面に、穏やかな情報面を置き、
     白を主に操作・入力へ残すアプリ」へ変える。
     ★白を減らすこと自体が目的ではない。**読む面と触る面が色だけで分かれる**ことが目的。
     ★warm（R−B）は既存 palette の上限 13 を超えない（beige 化を機械的に禁じる）。
     ★暗い 2 配色はこの段を見ない（themes.css が役割ごと差し替える）。 */
  --gup-p-paper-canvas:#E9E6DC;   /* ① 作業面（床）。R−B=13 */
  --gup-p-paper-content:#F9F8F3;  /* ② 情報面（読む場所）。純白をやめるのが要点 */
  --gup-p-paper-sunken:#EFECE3;   /* 引いた面。床より上・補助面より下 */
  --gup-p-ink-110:#D9D6CC;        /* 枠線。面が下がったぶん対で 1 段下げる（旧 ink-100 #E3E0D6 は床の上で 1.06:1） */
  --gup-p-ink-320:#7A828F;        /* control の境界。情報面で 3.65:1 ／ 床で 3.10:1（旧 ink-300 は 2.95:1 で 3:1 未達） */
  --gup-p-navy-700:#0F4C9E;  /* on #FFF  8.2:1  S83%（旧 #17416F S66%） */
  --gup-p-navy-600:#1660C8;  /* on #FFF  5.9:1  S80%（旧 #1E5490 S66%）主要操作 */
  --gup-p-navy-050:#EAF3FB;
  --gup-p-blue-600:#2E6DB4;  /* on #FFF  5.3:1 */
  --gup-p-blue-500:#0B79A8;  /* on #FFF  4.9:1  S88%（旧 #1F6FA8 S69%）Forecast。青の中でも cyan 寄りにして主要操作と分ける */
  --gup-p-pink-050:#FCEDF7;  /* VQ の薄いピンク。MQ会計の箱（--mg-v）と同じ意味の面 */
  --gup-p-blue-050:#EEF2FB;
  --gup-p-blue-200:#CBDCF2;  /* 薄い青の枠線。会社盤の領域識別で使う（面ではなく境界） */
  --gup-p-cyan-050:#EDF8FD;  /* Forecast の soft 面。#0B79A8 を載せて 4.5:1 */
  --gup-p-gold-700:#6B4E10;  /* on #FFF  7.7:1  S74%（旧 #6D5121 S54%） */
  --gup-p-gold-600:#96700F;  /* on #FFF  4.5:1  S82%（旧 #8A6A1F S63%）brand accent。白文字を載せられる下限 */
  --gup-p-gold-550:#7D5A08;  /* on #FFF  6.3:1  S88%（旧 #7A5B15 S71%）Plan */
  --gup-p-gold-500:#8C6805;  /* on #FFF  5.1:1  S93%（旧 #8A6620 S62%）Budget */
  --gup-p-gold-400:#B07F00;  /* on #FFF  3.6:1  S100%  枠線・マーカー専用。文字と白文字の下地には使わない */
  --gup-p-gold-200:#E6D3A0;
  --gup-p-gold-050:#FDF7EA;   /* 選択面。ごく薄いアンバー */
  --gup-p-green-600:#0F7A43; /* on #FFF  5.4:1  S78%（旧 #256B41 S49%） */
  --gup-p-green-050:#E6F4EB;
  --gup-p-green-200:#CBE3D3;
  --gup-p-teal-600:#216A5E;  /* on #FFF  6.4:1（旧 #2E8577 は 4.43:1 で AA 未達） */
  --gup-p-lime-050:#EAF1E2;   /* 固定費カテゴリのタグ面（--ui-f の背景） */
  --gup-p-red-700:#B02318;   /* on #FFF  6.8:1  S76%（旧 #8E1F16）破壊的操作だけ */
  --gup-p-red-600:#9A3B2C;   /* on #FFF  6.9:1 */
  --gup-p-red-050:#FBECEA;
  --gup-p-red-200:#F1CFC9;
  --gup-p-amber-700:#A55407; /* on #FFF  5.4:1  S92%（旧 #8A4B12 S77%）注意。danger より明るく、危険には見せない */
  --gup-p-amber-050:#FDF3E4;
  --gup-p-violet-600:#6739C7;/* on #FFF  7.0:1  S56%（旧 #5B4A93 S33%）着地見込 */
  --gup-p-violet-050:#F1ECFB;
  /* chart categorical（UI-CANVAS-COLOR1）：**線と凡例を見分けるためだけの色**。
     操作の重さ（danger）も業績の良し悪し（positive / negative）も意味しない。
     既存の vivid な色（red-700＝破壊的操作／amber-700＝注意／green-600＝良化／violet-600＝着地見込）は
     すでに意味を持っているので、系列の識別に流用せず別の段を持つ。
     色相を離して並べる（218 → 0 → 142 → 26 → 282 → 184deg）ので、隣り合う 2 本でも見分けられる。 */
  --gup-p-cat-blue:#1155CC;   /* on #FFF  6.6:1  218deg S85% */
  --gup-p-cat-red:#C62828;    /* on #FFF  5.6:1    0deg S66% */
  --gup-p-cat-green:#15803D;  /* on #FFF  5.0:1  142deg S72% */
  --gup-p-cat-orange:#B45309; /* on #FFF  5.0:1   26deg S90% */
  --gup-p-cat-purple:#7B1FA2; /* on #FFF  8.2:1  282deg S68% */
  /* ---- 運転資本の箱：買掛金（差し引く側）の紫 ----------------------------
     ★V ピンクの濃淡にしない。「在庫と同じもの」に見えて差し引く側だと読めないため
       （Founder 決定：独立した鮮やかな紫）。Gold は使わない（G / 目標の意味を守る）。
     ★塗りの上に載るインクと **対**で決めた実測値：
       light   #7B1FA2 … 白文字 8.2:1
       digital #A855F7 … 黒文字 4.6:1（V #FF6BD6 ／ P #5B84FF ／ cG #2DD4D8 と色相が離れている）
       exec    #9E6FD8 … 黒文字 5.0:1 */
  --gup-p-wc-pay-600:#7B1FA2;
  --gup-p-wc-pay-300:#A855F7;
  --gup-p-wc-pay-400:#9E6FD8;
  --gup-p-cat-teal:#00767F;   /* on #FFF  5.4:1  184deg S100% */
  /* OPQR-MU-PRODUCT1：識別色を 12 色相へ広げる（上の 6 つ＋ここの 6 つ）。
     ★上の 6 つは 1 文字も変えていない。足りないぶんだけ、色相の隙間へ足す。
       12 色相の最小間隔は 26deg（0 / 26 / 55 / 84 / 113 / 142 / 184 / 218 / 250 / 282 / 308 / 334）。
     白地の contrast はすべて 4.5:1 以上（実測値をコメントに書く）。 */
  --gup-p-cat-grass:#0F7901;   /* on #FFF  5.6:1  113deg S98% */
  --gup-p-cat-magenta:#BE04A5; /* on #FFF  5.6:1  308deg S96% */
  --gup-p-cat-indigo:#664CE6;  /* on #FFF  5.6:1  250deg S75% */
  --gup-p-cat-olive:#726903;   /* on #FFF  5.6:1   55deg S95% */
  --gup-p-cat-moss:#467401;    /* on #FFF  5.6:1   84deg S98% */
  --gup-p-cat-pink:#CB0B5E;    /* on #FFF  5.6:1  334deg S90% */
  /* 同じ 12 色相の「濃く落ち着いた段」。彩度を 23〜67pt 落としてあるので、
     同じ色相でも上の鮮やかな段と読み分けられる。13 番目以降の識別に使う。 */
  --gup-p-cat-d-blue:#334971;    /* on #FFF  9.0:1  218deg S38% */
  --gup-p-cat-d-orange:#654125;  /* on #FFF  9.0:1   26deg S46% */
  --gup-p-cat-d-grass:#295224;   /* on #FFF  9.0:1  113deg S39% */
  --gup-p-cat-d-magenta:#73306A; /* on #FFF  8.9:1  308deg S41% */
  --gup-p-cat-d-teal:#294F51;    /* on #FFF  9.0:1  184deg S33% */
  --gup-p-cat-d-indigo:#493A98;  /* on #FFF  9.0:1  250deg S45% */
  --gup-p-cat-d-olive:#4E4A22;   /* on #FFF  9.0:1   55deg S39% */
  --gup-p-cat-d-moss:#3D4F21;    /* on #FFF  9.0:1   84deg S41% */
  --gup-p-cat-d-green:#245235;   /* on #FFF  9.0:1  142deg S39% */
  --gup-p-cat-d-red:#7C3131;     /* on #FFF  9.0:1    0deg S43% */
  --gup-p-cat-d-purple:#643579;  /* on #FFF  9.0:1  282deg S39% */
  --gup-p-cat-d-pink:#792F4F;    /* on #FFF  9.0:1  334deg S44% */

  /* --- brand ---------------------------------------------------------------
     ゴールドは「ブランド・現在選択中の主要ナビ・最重要の結論」だけ。
     見出し全部／KPI 全部／ボタン全部／通常の枠線／注意／Forecast／危険には使わない。 */
  --gup-brand-ink:var(--gup-p-ink-900);
  --gup-brand-accent:var(--gup-p-gold-600);
  --gup-brand-accent-soft:var(--gup-p-gold-050);
  --gup-brand-accent-border:var(--gup-p-gold-200);

  /* --- Target（目標）と cG（キャッシュG）— GUP-HOME-PROD1 Gate A ---------------
     ★Target ＝ Gup Orange。**「行き先」を指す 1 つの色**で、利益（G＝Gold）とは別物。
       ただし色だけで G と区別させない（指示 §16）。Target には必ず
       ◆ マーカー ＋ 破線 ＋「目標」の文字を付ける。
     ★白地では #FD5E00 が 3.10:1 で本文に使えないので、文字用は 700 の段。
       マーカー・破線・塗りはブランドの 500 をそのまま使う（形と位置で見せるので contrast は面で稼がない）。
     ★面積で強くしない（指示 §17）。Orange の面を大きくしない。 */
  --gup-target:var(--gup-p-orange-700);
  --gup-target-mark:var(--gup-p-orange-500);
  --gup-cg:var(--gup-p-cg-700);

  /* --- 塗りの上のインク（GUP-HOME-PROD1 Gate A）--------------------------------
     ★MQ の箱は「塗り」と「その上の文字」が **対**になっている。
       明るい配色では P と M が濃い塗り（白文字）、V・Q・F・G が淡い塗り（濃い文字）。
       暗い配色では 6 つとも明るい塗りになるので、**6 つとも濃い文字**へ入れ替わる。
     ★だから塗りの色（--mg-*）だけをテーマで差し替えると、必ずどちらかが読めなくなる
       （実測：digital の G は 1.31:1、F は 1.50:1 になっていた）。
     ★--gup-text-on-light は「明るい面の上のインク」。--navy（＝画面の文字色）と違い、
       配色が変わっても濃いまま。--gup-text-inverse（暗い面の上の白）と対で使う。 */
  --gup-text-on-light:var(--gup-p-ink-900);
  --mg-on-p:var(--gup-text-inverse);
  --mg-on-v:var(--gup-text-on-light);
  --mg-on-m:var(--gup-text-inverse);
  --mg-on-q:var(--gup-text-on-light);
  --mg-on-f:var(--gup-text-on-light);
  --mg-on-g:var(--gup-text-on-light);
  /* ★--ui-*（タグ・線の色）は --mg-*（箱の塗り）と **明るさが逆**。
     明るい配色では --ui-q は濃いスレート（白文字）、暗い配色では明るい（濃い文字）。
     だから箱のインクとは別に持つ。実測：ここを共用したら air の Q タグが 2.81:1 になった。 */
  --ui-on-fill:var(--gup-text-inverse);

  /* --- GUP-HOME-PROD1 Gate A：暗い配色のための段 ---------------------------
     ★生の色の正本は tokens.css だけ、という契約を守るためにここへ置く。
       themes.css は hex を 1 つも持たず、この段を指し直すだけ。
     ★家系を分ける：night ＝ Digital（黒）／ midnight ＝ Executive（濃紺）。
       同じ「暗い面」でも色味が違うので、1 つの家系に混ぜない。 */
  --gup-p-night-950:#07090B;
  --gup-p-night-900:#0D1116;
  --gup-p-night-850:#131920;
  --gup-p-night-800:#151C24;
  --gup-p-night-750:#1C242E;
  --gup-p-night-700:#2A3540;
  --gup-p-midnight-950:#0A101C;
  --gup-p-midnight-900:#111A2B;
  --gup-p-midnight-850:#182338;
  --gup-p-midnight-800:#162032;
  --gup-p-midnight-750:#1E2A40;
  --gup-p-midnight-700:#33425F;
  /* 暗い面の上の文字（ink 家系の明るい段）。digital と executive で色味が違う。 */
  --gup-p-ink-050:#E8EEF4;
  --gup-p-ink-150:#9FB4C8;
  --gup-p-ink-250:#74889C;
  --gup-p-ink-350:#8892A3;
  --gup-p-ink-055:#E6ECF5;
  --gup-p-ink-155:#9AA9C0;
  --gup-p-ink-255:#6B7A93;
  --gup-p-ink-355:#54637D;
  /* Gup Orange（Target）。**面積ではなく位置と形で強くする**ので段は 2 つだけ。
     500 ＝ ブランドそのもの（暗い面の上・マーカー・破線）
     700 ＝ 白地で文字に使える段（#FD5E00 は白地 3.10:1 で本文に使えない） */
  --gup-p-orange-500:#FD5E00;
  --gup-p-orange-700:#C94A00;
  /* 暗い配色のための MQ・status の段（明度と彩度だけが違う。**色相は 3 テーマ共通**） */
  --gup-p-mq-d-p:#5B84FF;
  --gup-p-mq-d-v:#FF6BD6;
  --gup-p-mq-d-m:#FF4D4D;
  --gup-p-mq-d-q:#D5D7D9;
  --gup-p-mq-d-f:#7ED957;
  --gup-p-mq-d-g:#FFC947;
  --gup-p-mq-e-p:#6E9BFF;
  --gup-p-mq-e-v:#E07AB8;
  --gup-p-mq-e-m:#E2585C;
  --gup-p-mq-e-q:#C9CCD0;
  --gup-p-mq-e-f:#84C46E;
  --gup-p-mq-e-g:#D9A83C;
  --gup-p-cg-500:#2DD4D8;
  --gup-p-cg-450:#4FC3C7;
  --gup-p-cg-700:#0B7F84;
  --gup-p-sig-d-action:#7FA8E0;
  --gup-p-sig-d-pos:#4FC07E;
  --gup-p-sig-d-neg:#D97B76;
  --gup-p-sig-d-warn:#C9A26A;
  --gup-p-sig-d-info:#7AA7D9;
  --gup-p-sig-e-action:#5E8CE0;
  --gup-p-sig-e-pos:#4FB980;
  --gup-p-sig-e-neg:#D9666A;
  --gup-p-sig-e-warn:#D9A03C;
  --gup-p-sig-e-info:#7E9CC4;
  --gup-p-cat-l-blue:#347EFF;
  --gup-p-cat-l-red:#FE2929;
  --gup-p-cat-l-green:#32C368;
  --gup-p-cat-l-orange:#C47132;
  --gup-p-cat-l-purple:#B162D3;
  --gup-p-cat-l-teal:#00A7B4;
  /* 暗い配色の tint（面 × 色相。build-theme-tokens.mjs が生成） */
  --gup-p-tint-d-amber050:#2B2823;
  --gup-p-tint-d-green050:#182D27;
  --gup-p-tint-d-blue050:#19233B;
  --gup-p-tint-d-navy050:#19233B;
  --gup-p-tint-d-red050:#2E2225;
  --gup-p-tint-d-gold050:#342E1E;
  --gup-p-tint-d-pink050:#34273B;
  --gup-p-tint-d-lime050:#1F3120;
  --gup-p-tint-d-cyan050:#123035;
  --gup-p-tint-d-green200:#182D27;
  --gup-p-tint-d-red200:#2E2225;
  --gup-p-tint-d-blue200:#19233B;
  --gup-p-tint-d-gold200:#342E1E;
  --gup-p-tint-d-paper2:#1C1F24;
  --gup-p-tint-d-paper3:#1C1F24;
  --gup-p-tint-d-surfacerow:#1C1F24;
  --gup-p-tint-d-surfacecreamhover:#1C1F24;
  --gup-p-tint-d-surfacekbd:#1C1F24;
  --gup-p-tint-d-surfacebox:#1C1F24;
  --gup-p-tint-d-surfacegridhead:#1C1F24;
  --gup-p-tint-d-surfacewarm:#1C1F24;
  --gup-p-tint-d-slidertrack:#1C1F24;
  --gup-p-tint-d-matrixhothead:#1C1F24;
  --gup-p-tint-d-matrixhotcell:#1C1F24;
  --gup-p-tint-d-matrixhothover:#1C1F24;
  --gup-p-tint-d-helpdot:#1C1F24;
  --gup-p-tint-e-amber050:#2E3035;
  --gup-p-tint-e-green050:#1B3538;
  --gup-p-tint-e-blue050:#1D2B4D;
  --gup-p-tint-e-navy050:#1D2B4D;
  --gup-p-tint-e-red050:#312A37;
  --gup-p-tint-e-gold050:#37362F;
  --gup-p-tint-e-pink050:#372E4D;
  --gup-p-tint-e-lime050:#223932;
  --gup-p-tint-e-cyan050:#153847;
  --gup-p-tint-e-green200:#1B3538;
  --gup-p-tint-e-red200:#312A37;
  --gup-p-tint-e-blue200:#1D2B4D;
  --gup-p-tint-e-gold200:#37362F;
  --gup-p-tint-e-paper2:#1F2838;
  --gup-p-tint-e-paper3:#1F2838;
  --gup-p-tint-e-surfacerow:#1F2838;
  --gup-p-tint-e-surfacecreamhover:#1F2838;
  --gup-p-tint-e-surfacekbd:#1F2838;
  --gup-p-tint-e-surfacebox:#1F2838;
  --gup-p-tint-e-surfacegridhead:#1F2838;
  --gup-p-tint-e-surfacewarm:#1F2838;
  --gup-p-tint-e-slidertrack:#1F2838;
  --gup-p-tint-e-matrixhothead:#1F2838;
  --gup-p-tint-e-matrixhotcell:#1F2838;
  --gup-p-tint-e-matrixhothover:#1F2838;
  --gup-p-tint-e-helpdot:#1F2838;
  /* 暗い配色で読める段（色相はそのまま・明度だけ上げる。生成） */
  --gup-p-lit-d-canvasself:#8F96D6;
  --gup-p-lit-d-gupcolordanger:#E0827B;
  --gup-p-lit-d-textbluedeep:#789FC5;
  --gup-p-lit-d-selectaccentdark:#DAB462;
  --gup-p-lit-d-gupbrandaccent:#DAB862;
  --gup-p-lit-d-gupcoloraccenthover:#6A9BDC;
  --gup-p-lit-d-grey:#949BA8;
  --gup-p-lit-d-textnote:#969DA6;
  --gup-p-lit-d-actionaccenthover:#6A9BDC;
  --gup-p-lit-d-textbody:#949CA8;
  --gup-p-lit-d-textwarm:#DAB862;
  --gup-p-lit-d-gupactionprimaryhover:#6A9BDC;
  --gup-p-lit-d-textwarmnote:#DAB862;
  --gup-p-lit-d-gupcompanyrolevalue:#659BD8;
  --gup-p-lit-d-gupcompanyrolecustomer:#D88578;
  --gup-p-lit-d-gupcompanyrolefoundation:#62DA9C;
  --gup-p-lit-d-urahead:#D7867A;
  --gup-p-lit-d-pblue:#659BD8;
  --gup-p-lit-d-gupscenarioforecast:#62B6DA;
  --gup-p-lit-d-selectaccent:#DAB862;
  --gup-p-lit-d-qgreen:#79C391;
  --gup-p-lit-d-uraheaddark:#D7867A;
  --gup-p-lit-e-canvasself:#969DD9;
  --gup-p-lit-e-gupcolordanger:#E28A83;
  --gup-p-lit-e-textbluedeep:#7FA4C8;
  --gup-p-lit-e-selectaccentdark:#DAB462;
  --gup-p-lit-e-gupbrandaccent:#DAB862;
  --gup-p-lit-e-gupcoloraccenthover:#7BA6E0;
  --gup-p-lit-e-grey:#9AA1AD;
  --gup-p-lit-e-textnote:#9CA2AB;
  --gup-p-lit-e-actionaccenthover:#7BA6E0;
  --gup-p-lit-e-textbody:#9AA2AD;
  --gup-p-lit-e-textwarm:#DAB862;
  --gup-p-lit-e-gupactionprimaryhover:#7BA6E0;
  --gup-p-lit-e-textwarmnote:#DAB862;
  --gup-p-lit-e-gupcompanyrolevalue:#75A5DC;
  --gup-p-lit-e-gupcompanyrolecustomer:#DB8C80;
  --gup-p-lit-e-gupcompanyrolefoundation:#62DA9C;
  --gup-p-lit-e-urahead:#D98D82;
  --gup-p-lit-e-pblue:#75A5DC;
  --gup-p-lit-e-gupscenarioforecast:#62B6DA;
  --gup-p-lit-e-selectaccent:#DAB862;
  --gup-p-lit-e-qgreen:#79C391;
  --gup-p-lit-e-uraheaddark:#D98D82;
  /* signal を tint の上で読める明るさへ（生成） */
  --gup-p-sig2-d-actionprimary:#7FA8E0;
  --gup-p-sig2-d-positive:#4FC07E;
  --gup-p-sig2-d-negative:#DC847F;
  --gup-p-sig2-d-warning:#C9A26A;
  --gup-p-sig2-d-info:#7AA7D9;
  --gup-p-sig2-e-actionprimary:#83A5E2;
  --gup-p-sig2-e-positive:#4FB980;
  --gup-p-sig2-e-negative:#E38D90;
  --gup-p-sig2-e-warning:#D9A03C;
  --gup-p-sig2-e-info:#88A4C9;
  /* 暗い配色の分類色・買掛（build-theme-tokens.mjs が生成。色相は不変） */
  --gup-p-cat-dk-blue:#5182D6;
  --gup-p-cat-dk-olive:#D6CC51;
  --gup-p-cat-dk-teal:#51CDD6;
  --gup-p-cat-dk-pink:#D6518B;
  --gup-p-cat-dk-green:#51D683;
  --gup-p-cat-dk-purple:#B35AD8;
  --gup-p-cat-dk-grass:#61D651;
  --gup-p-cat-dk-magenta:#D651C4;
  --gup-p-cat-dk-indigo:#8573DE;
  --gup-p-cat-dk-orange:#D68B51;
  --gup-p-cat-dk-moss:#A1D651;
  --gup-p-cat-dk-red:#D65151;
  --gup-p-cat-dk-dblue:#6B88BC;
  --gup-p-cat-dk-dorange:#C68E62;
  --gup-p-cat-dk-dgrass:#73BE6A;
  --gup-p-cat-dk-dmagenta:#C068B4;
  --gup-p-cat-dk-dteal:#71B4B7;
  --gup-p-cat-dk-dindigo:#8173C9;
  --gup-p-cat-dk-dolive:#BEB66A;
  --gup-p-cat-dk-dgreen:#6ABE89;
  --gup-p-cat-dk-dred:#C26565;
  --gup-p-cat-dk-dpurple:#A46ABE;
  --gup-p-cat-dk-dpink:#C3658E;
  --gup-p-cat-dk-dmoss:#9DC068;
  --gup-p-wc-pay-dk:#AA73DE;
  --gup-p-cat-ek-blue:#5A88D8;
  --gup-p-cat-ek-olive:#D6CC51;
  --gup-p-cat-ek-teal:#51CDD6;
  --gup-p-cat-ek-pink:#D85A90;
  --gup-p-cat-ek-green:#51D683;
  --gup-p-cat-ek-purple:#B662DA;
  --gup-p-cat-ek-grass:#61D651;
  --gup-p-cat-ek-magenta:#D651C4;
  --gup-p-cat-ek-indigo:#8C7BE0;
  --gup-p-cat-ek-orange:#D68B51;
  --gup-p-cat-ek-moss:#A1D651;
  --gup-p-cat-ek-red:#DA6262;
  --gup-p-cat-ek-dblue:#6B88BC;
  --gup-p-cat-ek-dorange:#C68E62;
  --gup-p-cat-ek-dgrass:#73BE6A;
  --gup-p-cat-ek-dmagenta:#C068B4;
  --gup-p-cat-ek-dteal:#71B4B7;
  --gup-p-cat-ek-dindigo:#877ACC;
  --gup-p-cat-ek-dolive:#BEB66A;
  --gup-p-cat-ek-dgreen:#6ABE89;
  --gup-p-cat-ek-dred:#C56D6D;
  --gup-p-cat-ek-dpurple:#A871C1;
  --gup-p-cat-ek-dpink:#C3658E;
  --gup-p-cat-ek-dmoss:#9DC068;
  --gup-p-wc-pay-ek:#A377DA;
  /* --- GUP-HOME-PROD1 Gate A：ここまで生成 --- */

  /* --- surface（面の階層は neutral で作る。色付きカードを重ねない） ---------- */
  --gup-surface-app:var(--gup-p-paper-canvas);
  --gup-surface-primary:var(--gup-p-paper-content);
  --gup-surface-secondary:var(--gup-p-paper-2);
  --gup-surface-muted:var(--gup-p-paper-sunken);
  /* ★readonly は paper-2 のまま。暗い 2 配色は themes.css でこの役割を上書きしていないので、
     ここを動かすと Digital / Executive の computed 値まで変わる（今回は Air だけを変える）。 */
  --gup-surface-readonly:var(--gup-p-paper-2);
  --gup-surface-selected:var(--gup-p-gold-050);
  /* ④ 前面（dialog）。**床（app）と同じ役割で塗らない**のが今回の要点。
     値は情報面と同じでよい（Founder 決定：新しい色を増やさずに成立するなら Content 相当でよい）。
     「前面」と「床」が別の役割であることが守るべき contract。 */
  --gup-surface-overlay:var(--gup-p-paper-content);

  /* --- text ---------------------------------------------------------------- */
  --gup-text-primary:var(--gup-p-ink-900);
  --gup-text-secondary:var(--gup-p-ink-500);
  /* UI-TYPE3（Founder 判断）：文字色は 3 段だけ。
       濃い黒（--gup-text-primary）… 項目名・入力した内容・見出し
       グレー（--gup-text-secondary）… 補足・単位・ヒント
       リンク（--gup-action-primary）… 押せるもの
     ★muted は secondary とほぼ同じグレー（5.4:1 と 6.1:1）が 2 本並んでいただけなので、
       secondary へ寄せた（実測：muted 87 件が 18 画面に出ていた）。
     ★disabled は「押せない」という別の意味なので、ink-400 のまま残す。 */
  --gup-text-muted:var(--gup-text-secondary);
  /* ★「塗りの上に置くインク」。**アプリの逆色ではない。**
     濃い面（ヘッダー帯・badge・MQ の濃いセル）の上に乗る文字なので、
     配色（テーマ）が変わっても白のまま。ここをテーマで反転させると、
     濃紺の帯の上の文字が暗いテーマで消える。 */
  --gup-text-inverse:var(--gup-p-white);
  --gup-text-disabled:var(--gup-p-ink-400);
  /* ★「濃い面」。--navy（＝文字の色）と同じ値だが役割が違う。
     ヘッダー帯・ライセンス画面・badge の地に使う。
     配色が変わっても濃いままにするので、--gup-text-inverse と対で使える。
     GUP-HOME-PROD1 Gate A：1 名 2 役だった --navy から背景の 18 か所を分離した。 */
  --gup-surface-inverse:var(--gup-p-ink-900);

  /* --- border --------------------------------------------------------------- */
  --gup-border-default:var(--gup-p-ink-110);
  --gup-border-strong:var(--gup-p-ink-320);
  --gup-border-selected:var(--gup-p-gold-400);   /* 左端のマーカー。細い線なので最も鮮やかな段を使う */
  --gup-border-focus:var(--gup-p-navy-600);

  /* --- action（主要操作と選択状態を混同しない） ------------------------------
     主要操作＝濃紺の面。選択中＝薄いゴールド面＋左のマーカー。focus＝高視認の輪郭。 */
  --gup-action-primary:var(--gup-p-navy-600);
  --gup-action-primary-hover:var(--gup-p-navy-700);
  --gup-action-secondary:var(--gup-p-white);
  --gup-action-disabled:var(--gup-p-ink-300);
  --gup-focus-ring:var(--gup-p-navy-600);

  /* --- state（意味をアプリ全体で固定する） -----------------------------------
     情報＝青 ／ 成功＝緑 ／ 注意＝橙 ／ エラー・破壊的操作＝赤（danger）
     業績の悪化（negative）は danger と**別 token**。削除の赤と業績の赤を共用しない。 */
  --gup-info:var(--gup-p-blue-600);
  --gup-info-soft:var(--gup-p-blue-050);
  --gup-success:var(--gup-p-green-600);
  --gup-success-soft:var(--gup-p-green-050);
  --gup-warning:var(--gup-p-amber-700);
  --gup-warning-soft:var(--gup-p-amber-050);
  --gup-danger:var(--gup-p-red-700);
  --gup-danger-soft:var(--gup-p-red-050);
  --gup-positive:var(--gup-p-green-600);   /* 業績の好転。符号ではなく判定に使う */
  --gup-negative:var(--gup-p-red-600);     /* 業績の悪化。符号ではなく判定に使う */

  /* --- scenario（Current / Plan / Actual / Budget / Forecast / 着地見込） -----
     Actual と Current は基準なので neutral。Plan と Budget は同じゴールド系。
     Forecast は青系で Plan と明確に分ける。着地見込は紫系で Forecast と分ける。
     ★色だけで区別しない。必ずラベル（と、線なら線種）を併せて出す。 */
  --gup-scenario-current:var(--gup-p-ink-500);
  --gup-scenario-actual:var(--gup-p-ink-900);
  --gup-scenario-plan:var(--gup-p-gold-550);
  --gup-scenario-budget:var(--gup-p-gold-500);
  --gup-scenario-forecast:var(--gup-p-blue-500);
  --gup-scenario-latest-estimate:var(--gup-p-violet-600);
  --gup-scenario-current-soft:var(--gup-p-paper-2);
  --gup-scenario-actual-soft:var(--gup-p-paper-2);
  --gup-scenario-plan-soft:var(--gup-p-gold-050);
  --gup-scenario-budget-soft:var(--gup-p-gold-050);
  --gup-scenario-forecast-soft:var(--gup-p-cyan-050);
  --gup-scenario-latest-estimate-soft:var(--gup-p-violet-050);

  /* --- 互換 alias（既存 class が参照している名前。値は上の semantic が正） ----
     新しい実装では上の semantic 名を使う。ここは置き換え途中の橋渡し。 */
  --gup-color-bg:var(--gup-surface-app);
  --gup-color-surface:var(--gup-surface-primary);
  --gup-color-surface-subtle:var(--gup-surface-muted);
  --gup-color-text-primary:var(--gup-text-primary);
  --gup-color-text-secondary:var(--gup-text-secondary);
  --gup-color-text-disabled:var(--gup-text-disabled);
  --gup-color-text-on-accent:var(--gup-text-inverse);
  --gup-color-border:var(--gup-border-default);
  --gup-color-border-strong:var(--gup-border-strong);
  --gup-color-accent:var(--gup-action-primary);
  --gup-color-accent-hover:var(--gup-action-primary-hover);
  --gup-color-accent-subtle:var(--gup-p-navy-050);
  --gup-color-positive:var(--gup-positive);
  --gup-color-positive-subtle:var(--gup-success-soft);
  --gup-color-negative:var(--gup-negative);
  --gup-color-negative-subtle:var(--gup-p-red-050);

  /* 会社盤の 3 領域（UI-COMPANY-BOARD-COLOR1）。
     ★色の正本は **固定 slot**（mfg / sales / hq）であって、表示名の文字列ではない。
       名称は会社ごとに自由に書き換えられるので、文字列 match で色を決めてはいけない。
     ★戦略費の 4 色（広告/研究開発/教育/IT）とは別概念。会社盤は「組織の役割」の識別色なので、
       面はさらに薄く、彩度も抑える（同じ画面に並んでも意味を取り違えないように）。
     ★赤は danger（--gup-p-red-700 破壊的操作）でも negative（--gup-p-red-600 業績悪化）でもなく、
       「顧客をつくる側」の識別色。面は白に近い薄さに保ち、error 表示に見せない。 */
  --gup-company-role-value:var(--gup-p-blue-600);            /* 価値をつくる側 */
  --gup-company-role-value-bg:var(--gup-p-blue-050);
  --gup-company-role-value-border:var(--gup-p-blue-200);
  --gup-company-role-customer:var(--gup-p-red-600);          /* 顧客をつくる側 */
  --gup-company-role-customer-bg:var(--gup-p-red-050);
  --gup-company-role-customer-border:var(--gup-p-red-200);
  --gup-company-role-foundation:var(--gup-p-green-600);      /* 会社を支える側 */
  --gup-company-role-foundation-bg:var(--gup-p-green-050);
  --gup-company-role-foundation-border:var(--gup-p-green-200);
  /* FMGマトリクスの背景。**G（＝M−F）そのものの目盛**であって、面の階層でも状態色でもない。
     ★Founder 指示：G がプラスへ大きいほど青／マイナスへ大きいほど赤／G＝0 でほぼ白。
       positive（--gup-positive 緑）を使わないのは、緑は「業績が好転した」という
       **変化の判定**の色で、ここで示したいのは変化ではなく **水準（いまいくら稼げているか）**だから。
     ★点・線・ラベルが主役なので、面は淡くしか出さない（濃度は ui/fmg.js が G から決める）。 */
  --gup-fmg-gain:var(--gup-p-blue-600);                      /* G がプラス側 */
  --gup-fmg-loss:var(--gup-p-red-600);                       /* G がマイナス側 */
  /* 決算書ナビの貸借対照表の 3 区分（資産 / 負債 / 純資産）。
     ★これは **どの区分の残高か**を示す識別色で、良し悪し（positive / negative）でも
       操作の重さ（danger）でもない。だから数字はどの区分も同じ黒・同じ大きさ。
     ★純資産に緑を使うが、--gup-positive（業績の好転）とは役割が違うので別名で持つ
       （tokens.css の「見た目が同じでも役割が違えば分ける」に従う）。
     ★面積が大きい積み上げ図で使うので、濃い識別色ではなく白に近い段を使う。 */
  --gup-fn-asset:var(--gup-p-blue-050);
  --gup-fn-liability:var(--gup-p-pink-050);
  --gup-fn-equity:var(--gup-p-green-050);
  /* Financial diagram fills stay readable on all three surfaces. No new palette. */
  --gup-fn-asset-fill:color-mix(in srgb,var(--gup-p-blue-500) 22%,var(--gup-p-ink-050));
  --gup-fn-cash-fill:color-mix(in srgb,var(--gup-p-blue-500) 52%,var(--gup-p-ink-050));
  --gup-fn-liability-fill:color-mix(in srgb,var(--gup-p-cat-pink) 10%,var(--gup-p-ink-050));
  --gup-fn-debt-border:var(--gup-p-cat-pink);
  --gup-fn-equity-fill:color-mix(in srgb,var(--ui-f) 20%,var(--gup-p-ink-050));
  --gup-fn-wc:color-mix(in srgb,var(--gup-cg) 65%,var(--ui-f));
  --gup-fn-wc-border:var(--gup-p-teal-600);
  --gup-fn-g:color-mix(in srgb,var(--gup-p-orange-500) 75%,var(--gup-p-ink-050));
  --gup-fn-line:color-mix(in srgb,var(--gup-color-text-primary) 80%,transparent);
  --gup-trend-cash:color-mix(in srgb,var(--gup-fn-cash-fill) 75%,var(--gup-color-text-primary));
  --gup-trend-debt:color-mix(in srgb,var(--gup-fn-debt-border) 70%,var(--gup-color-text-primary));
  /* MQ会計の 5 つの箱（PQ・VQ・MQ・F・G）を KPI カードでも同じ色で示すための面。
     ★箱そのもの（--mg-*）は濃い識別色。カードは面積が大きいので、同じ色相の白に近い段だけを使う。
     ★色は「どの箱の数字か」を示すだけで、良し悪し（positive / negative）ではない。
       だから数字は 5 枚とも同じ大きさ・同じ黒。 */
  --gup-mg-pq-bg:var(--gup-p-blue-050);
  --gup-mg-vq-bg:var(--gup-p-pink-050);
  --gup-mg-mq-bg:var(--gup-p-red-050);
  --gup-mg-f-bg:var(--gup-p-green-050);
  --gup-mg-g-bg:var(--gup-p-amber-050);   /* 5 枚の結論カードは MQ会計の箱と同じ色相（G＝山吹） */
  --gup-color-warning:var(--gup-warning);
  --gup-color-warning-subtle:var(--gup-warning-soft);
  --gup-color-info:var(--gup-info);
  --gup-color-info-subtle:var(--gup-info-soft);
  --gup-color-danger:var(--gup-danger);
  --gup-color-danger-subtle:var(--gup-danger-soft);
  --gup-color-focus:var(--gup-focus-ring);
  --gup-color-overlay:rgba(23,32,42,.55);   /* 例外：合成用の半透明。palette 化しない */

  /* --- z-index（5 段階） ----------------------------------------------------- */
  --gup-z-base:0;
  --gup-z-sticky:100;
  --gup-z-dropdown:200;
  --gup-z-overlay:300;
  --gup-z-modal:400;
  --gup-z-toast:500;

  /* ==========================================================================
     画面固有・図表固有の色（UI-COLOR1 で base.css から移設）
     値は上の semantic を指すか、docs/UI_COLOR1_SYSTEM.md §16 の例外に該当する固定値。
     ここが色の唯一の正本。新しい色はまず semantic に当てはまらないか確認する。
     ========================================================================== */

  --navy:var(--gup-brand-ink);
  --grey:var(--gup-p-ink-300);
  --paper:var(--gup-surface-app);
  --card:var(--gup-surface-primary);
  --line:var(--gup-border-default);
  --slider-track:#E3E0D6;
  --slider-zero-mark:#9AA0A8;
  --p-blue:#2E6DB4;
  --v-amber:#C97A2B;
  --q-green:#398050; /* 元#3F8B5Cは白背景4.15:1でWCAG AA未達のため調整（4.80:1） */
  --f-violet:#6B5B95;
  --company-teal:var(--gup-p-teal-600);
  --bad:var(--gup-negative);
  --good:var(--gup-positive); /* 元#3F8B5Cは白背景4.15:1でWCAG AA未達のため調整（4.80:1） */
  --white:var(--gup-surface-primary);
  --warn:var(--gup-warning);
  --black:#000000;
  /* MQ会計図の枠線。**明るい配色では黒のまま**（Air は 1px も変わらない）。
     暗い配色（Digital／Executive）では地と同じ黒になって枠が消えるので、
     themes.css が明るい側へ差し替える。component に if (theme) を書かないため。 */
  --bd-frame:var(--black);
  --text-main:var(--gup-text-primary);
  /* UI-TYPE3：ラベル・列見出しは「読む文字」なので濃い黒。
     ink-600（7.9:1）は黒とグレーの中間で、3 段のどれでもなかった（実測 73 件・14 画面）。 */
  --text-label:var(--gup-text-primary);
  --text-secondary:var(--gup-text-secondary);
  --text-muted:var(--gup-text-muted); /* 元#8A92A0は白背景コントラスト比3.13:1でWCAG AA未達だったため調整（4.78:1） */
  --surface-soft:var(--gup-surface-secondary);
  --surface-muted:var(--gup-surface-muted);
  --surface-row:#F6F3EB;        /* GUP-AIR-SURFACE1：情報面から同じ距離 */
  --surface-kpi:var(--gup-surface-secondary);
  --surface-warn:var(--gup-warning-soft);
  --surface-warn-line:var(--gup-p-gold-200);
  --line-soft:var(--gup-p-paper-2);
  --bar-accent:#2A333D;
  --bar-accent-2:#38424D;
  --bar-accent-3:#5B6672;
  --canvas-self:#3A44A0;
  --select-accent:var(--gup-brand-accent);
  --select-accent-dark:var(--gup-p-gold-700);
  --select-accent-border:var(--gup-border-selected);
  /* GUP-COLOR-FIX1（CLR-04）：選択中の金の面に載るインク。
     ★塗りだけ theme で差し替えるとチェックが消える（--mg-on-* と同じ教訓）。必ず対で決める。 */
  --select-accent-ink:var(--gup-on-fill);
  --action-accent:var(--gup-action-primary);
  --action-accent-hover:var(--gup-action-primary-hover);
  --chart-border:var(--gup-border-default);
  --chart-grid:#E3E1D6;         /* GUP-AIR-SURFACE1 */
  --chart-grid-soft:#EAE7DD;    /* GUP-AIR-SURFACE1 */
  --chart-axis:#CFD3D8;
  --opqr-o:var(--navy);
  --opqr-p:var(--p-blue);
  --opqr-q:var(--q-green);
  --opqr-r:var(--bad);
  --vote-effect:#2E6DB4;
  --vote-feasible:#398050; /* 元#3F8B5Cは白背景4.15:1でWCAG AA未達のため調整（4.80:1） */
  --vote-excite:#C97A2B;
  /* 戦略キャンバスの線と凡例（UI-CANVAS-COLOR1・Founder 指摘）。
     以前は 自社 #3A44A0（S47%）／競合 #6B5B95（S24%）・#227483（S59%）… と
     どれも濁っていて、凡例を見ても線を追えなかった。彩度を上げ、色相を離す。
     ★--canvas-self は画面全体のアクセント（タブ・枠・badge）でもあるので触らない。
       グラフの 自社 線は専用の --series-self を持つ。
     並びは「競合が 2 つのとき最も離れる」順（赤 → 緑 → 橙 → 紫 → 青緑）。 */
  --series-self:var(--gup-p-cat-blue);
  --series-1:var(--gup-p-cat-red);
  --series-2:var(--gup-p-cat-green);
  --series-3:var(--gup-p-cat-orange);
  --series-4:var(--gup-p-cat-purple);
  --series-5:var(--gup-p-cat-teal);
  /* OPQR-MU-PRODUCT1：OPQR の「管理単位 × 商品」で、点の色が管理単位を表す。
     ★戦略キャンバスの --series-* とは役割が違うので別名で持つ（見た目が同じでも役割が違えば分ける）。
       とくに --series-self は「自社の線」という意味を既に持っているので、管理単位へ流用しない。
     ★識別のためだけの色。業績の良し悪し（positive / negative）も操作の重さ（danger）も意味しない。
       O/P/Q/R の 4 象限は背景の色分けと隅の大文字が示す（点の色は単位）。
     ★同じグラフに出る管理単位どうしが同じ色になってはいけない
       （同じ商品名の点が 2 つ並んだとき、色でしか区別できないため）。
     ★並びは「先に使う色ほど見分けやすい」順。
       ただし **色相の距離ではなく、色覚特性まで含めた見分けやすさ**で決めている。
       色相だけで並べると、たとえば orange と grass は 1 型色覚でほぼ同じ色になる。
       Viénot–Brettel–Mollon(1999) の近似で 4 型（正常・1 型・2 型・3 型）を作り、
       CIE76 ΔE の最悪値を先頭から順に最大化した（実測は gate/opqr-mu-product1/cvd.mjs）。
         先頭 n 色の最小 ΔE … n=2:121 / n=3:22.1 / n=4:15.5 / n=5:10.5 / n=6:9.8 / n=8:4.9
       見本 32 社の営業単位は 2〜3 なので、その帯がいちばん効く。
     ★1〜12 が鮮やかな段、13〜24 が同じ色相の濃く落ち着いた段。
       ⚠ 12 色相を使い切ると、色覚特性によっては色だけで見分けられない組がどうしても出る
         （n=10 で ΔE 1.7）。単位が多い会社では凡例と hover が手がかりになる。 */
  --gup-mu-series-1:var(--gup-p-cat-blue);      /* 218deg */
  --gup-mu-series-2:var(--gup-p-cat-olive);     /*  55deg */
  --gup-mu-series-3:var(--gup-p-cat-teal);      /* 184deg */
  --gup-mu-series-4:var(--gup-p-cat-pink);      /* 334deg */
  --gup-mu-series-5:var(--gup-p-cat-green);     /* 142deg */
  --gup-mu-series-6:var(--gup-p-cat-purple);    /* 282deg */
  --gup-mu-series-7:var(--gup-p-cat-grass);     /* 113deg */
  --gup-mu-series-8:var(--gup-p-cat-magenta);   /* 308deg */
  --gup-mu-series-9:var(--gup-p-cat-indigo);    /* 250deg */
  --gup-mu-series-10:var(--gup-p-cat-orange);   /*  26deg */
  --gup-mu-series-11:var(--gup-p-cat-moss);     /*  84deg */
  --gup-mu-series-12:var(--gup-p-cat-red);      /*   0deg */
  --gup-mu-series-13:var(--gup-p-cat-d-blue);
  --gup-mu-series-14:var(--gup-p-cat-d-orange);
  --gup-mu-series-15:var(--gup-p-cat-d-grass);
  --gup-mu-series-16:var(--gup-p-cat-d-magenta);
  --gup-mu-series-17:var(--gup-p-cat-d-teal);
  --gup-mu-series-18:var(--gup-p-cat-d-indigo);
  --gup-mu-series-19:var(--gup-p-cat-d-olive);
  --gup-mu-series-20:var(--gup-p-cat-d-green);
  --gup-mu-series-21:var(--gup-p-cat-d-red);
  --gup-mu-series-22:var(--gup-p-cat-d-purple);
  --gup-mu-series-23:var(--gup-p-cat-d-pink);
  --gup-mu-series-24:var(--gup-p-cat-d-moss);
  --outcome-positive:var(--gup-info);
  --outcome-negative:var(--gup-negative);
  --header-text:#EDEFF1;
  --header-panel:#101923;
  --header-control:#1C252F;
  --header-control-hover:#27313C;
  --header-hover:#0E151C;
  --header-line:#2A333D;
  --header-panel-line:#2C3743;
  --header-border:#38424D;
  --header-border-soft:#465260;
  --header-focus:#5A86B8;
  --header-muted:#9FB4C8;
  --header-control-text:#CFD5DB;
  --header-warn:#FFC98B;
  --header-error:#FF8A80;
  --header-gold:#FFD97A;
  --header-loss:#FF9C8C;
  --surface-cream:var(--gup-surface-app);
  --surface-cream-hover:#E6E4DB;  /* GUP-AIR-SURFACE1 */
  /* GUP-AIR-SURFACE1B：枠線の役割そのものを指す。
     生 hex のままだと 3 配色で同じ値になり、暗い配色でだけ 14.3:1 の明るい枠が浮いていた
     （themes.css がこの token を上書きしていないため）。border-default を指せば
     Air では面と対で下がり、暗い 2 配色では各配色の枠線とそろう。 */
  --surface-cream-line:var(--gup-border-default);
  --surface-kbd:#E6E4DD;          /* GUP-AIR-SURFACE1 */
  --surface-warm:#E7E7DA;         /* GUP-AIR-SURFACE1 */
  --surface-grid-head:#E2E8EB;    /* GUP-AIR-SURFACE1 */
  --surface-box:#E7E3DA;          /* GUP-AIR-SURFACE1 */
  --matrix-hot-head:#D8E6F4;
  --matrix-hot-cell:#F4F9FD;
  --matrix-hot-hover:#E5F0FA;
  --panel-blue-bg:var(--gup-info-soft);
  --panel-blue-line:var(--gup-p-navy-050);
  --panel-green-bg:var(--gup-success-soft);
  --panel-green-line:var(--gup-p-green-050);
  --panel-lime-bg:#F2F5DE;
  --panel-lime-line:#DDE3B8;
  --panel-teal-bg:#E3F3F1;
  --panel-teal-line:#C5E4E0;
  --panel-red-bg:var(--gup-danger-soft);
  --panel-red-line:var(--gup-p-red-050);
  --panel-positive-bg:var(--gup-success-soft);
  --panel-positive-line:var(--gup-p-green-050);
  --panel-negative-bg:var(--gup-danger-soft);
  --panel-negative-line:var(--gup-p-red-050);
  --text-body:var(--gup-p-ink-700);
  --text-note:var(--gup-p-ink-500); /* 元#7A828Cは白背景3.89:1でWCAG AA未達のため調整（4.67:1）。さらにフッター背景#F7F6F1では4.31:1しか出ないため再調整（5.30:1） */
  --text-disabled:var(--gup-text-disabled); /* 元#AAB4BDは白背景2.11:1でWCAG AA未達のため調整（4.72:1） */
  --text-soft:var(--gup-text-secondary); /* 元#9AA0A8は白背景2.64:1でWCAG AA未達のため調整（5.00:1）。さらに戦略チップの薄い背景色上では4.4:1前後しか出ないため再調整（5.5:1以上） */
  --text-warm:var(--gup-p-gold-600);
  --text-warm-dark:var(--gup-negative);
  --text-warm-note:var(--gup-p-gold-600);
  --text-warm-muted:var(--gup-negative); /* 元#B08070は白背景3.40:1でWCAG AA未達のため調整（5.05:1） */
  --text-link-hover:var(--gup-action-primary-hover);
  --text-success:var(--gup-positive);
  --text-caution:var(--gup-warning); /* 元#A5741Fは白背景4.10:1でWCAG AA未達のため微調整（4.84:1） */
  --text-blue-deep:#2C4A66;
  --text-blue-muted:#57728C; /* 元#5F7A94は白背景4.47:1でわずかにWCAG AA未達のため微調整（5.01:1） */
  /* UI-TYPE3：矢印は「→」だけの区切り記号なので、補足と同じグレー。
     独自の暖色グレー（#7A756A）を 4 本目の中立色として持たない。 */
  --text-arrow:var(--gup-text-secondary);
  --icon-muted:var(--gup-text-muted); /* 元#9199A1は白背景2.89:1でWCAG AA未達のため調整（5.40:1） */
  --overlay-bg:#5A6472;
  --overlay-line:#7E8A98;
  /* GUP-HOME-PREP1 Gate C：旧値（薄いグレー）の上の白文字は 1.61:1 で「?」が読めなかった。
     palette の 300 段（境界用・白地 3.1:1）へ寄せ、文字は本文色にする（下の components.css）。
     ink-300 上の本文色は 5.2:1、丸そのものも白地 3.1:1 で輪郭が見える。
     ★丸をこれ以上濃くすると 22px の塗り丸が主要操作に見えるので、
       濃くするのは面ではなく文字。palette 経由にしたので生 hex も 1 つ減る。 */
  --help-dot:var(--gup-p-ink-300);
  --print-muted:#555555;
  --print-note:#666666;
  --print-line:#CCCCCC;
  --print-line-soft:#DDDDDD;
  --chip-token-border:#B9BECA;
  --strategy-self-line:#9FC0E6;
  --strategy-a-line:#E6C79F;
  --strategy-b-line:#9FD6B3;
  --ura-head:#5C241C;
  --ura-head-dark:#451B15;
  /* GUP-COLOR-FIX1（CLR-06）：両得20 の見出し・件数の面に載るインク。
     ★--ura-head は theme で明るい側へ差し替わるのに、インクが白のままで 2.48〜2.77:1 だった。 */
  --ura-head-ink:var(--gup-text-inverse);
  --ura-soft-text:#D8C2BC;
  --chip-red:#C24A3F;
  --chip-blue:#2E6DB4;
  --chip-yellow:#D9A62E;
  --chip-green:#398050; /* 元#3F8B5Cは白背景4.15:1でWCAG AA未達のため調整（4.80:1） */
  --mg-p:#000099;  /* P・PQ＝紺（白文字） */
  --mg-v:#FF99FF;  /* V・VQ＝ピンク（濃紺文字） */
  --mg-m:#E60000;  /* M・MQ＝赤（白文字）。元#FF0000は白文字コントラスト比4.00:1でWCAG AA未達のため調整（4.81:1） */
  --mg-q:#FFFFFF;  /* Q＝白・黒枠（無彩色） */
  --mg-f:#92D050;  /* F＝黄緑（濃紺文字） */
  --mg-g:#FFC000;  /* G＝山吹（濃紺文字 10.02:1）。MQ会計の箱・ヘッダーの点。
     ★一度 favicon のオレンジ（#FD5E00）にしたが、**隣の MQ（赤 #E60000）と近く**なって
       箱が読みにくくなったため Founder 判断で戻した。箱の中では 赤 と 山吹 の差が要る。
       グラフの柱だけは白地の上に置くので、別の色（--chart-g）を使う。 */
  /* ⑤ 予実管理 の G の柱。
     ★GUP-HOME-PROD1 Gate A で **Gold へ戻した。**
       もとは favicon のオレンジ（#FD5E00）だった。白地で山吹が 1.64:1 で沈むのを避けるためで、
       当時は正しい判断だったが、Founder 決定で **#FD5E00 は Target（目標）専用**になった。
       G の柱がオレンジのままだと、同じグラフの中で「利益」と「目標」が同じ色になる
       （Executive では色覚特性下の ΔE 0.5 ＝ ほぼ同色）。
     ★白地で沈まない Gold は既に --ui-g（ダークアンバー #B8860B・4.4:1）が持っている。
       新しい色を作らず、G の UI 調整色をそのまま使う。 */
  --chart-g:var(--ui-g);
  --ui-p:#3A44A0;  /* 紺→インディゴ */
  /* ★GUP-HOME-PROD1 Gate A：#B45FB4 は白文字で 4.01:1 と AA 未達だった（V タグ）。
     色相 300°（Pink）はそのままで、白文字が 4.5:1 を満たす最小の暗さへ落とす。 */
  --ui-v:#AE53AE;  /* ピンク→マゼンタ */
  --ui-q:#5B6672;  /* 白→スレート */
  --ui-m:#B7402F;  /* 赤→ブリックレッド（MQ単体の色。Gup検証のMQ変化バー等） */
  --ui-f:#4D7527;  /* 黄緑→深緑。元#5E9732は背景#FCFBF8で3.41:1のみでWCAG AA未達のため調整（5.22:1） */
  --ui-g:#B8860B;  /* 山吹→ダークアンバー */
  /* GUP-COLOR-FIX1（CLR-09 / CLR-10）：G の **文字と目盛り** の段。
     --ui-g（#B8860B）は白地で 3.25:1 しかなく、12〜13px の文字には足りない。
     ★「G はこの色」という意味は保つ（同じ金の家系の濃い段）。塗り・線・凡例の印は --ui-g のまま。
     ★暗い配色では塗りと同じ明るい段でよいので、themes.css が指し直す。 */
  --ui-g-text:var(--gup-p-gold-700);
  /* 運転資本の箱の 買掛金。塗りの上のインクは --gup-on-fill が対で持つ。 */
  --ui-wc-pay:var(--gup-p-wc-pay-600);
  /* 変数色のベタ塗りに載せるインク。light は塗りが暗いので白、dark 系は塗りが明るいので黒。
     ★塗りだけ差し替えると文字が消える（GUP-HOME-PROD1 Gate A）。必ず対で決める。 */
  --gup-on-fill:var(--gup-text-inverse);
  /* GUP-COLOR-FIX1（CLR-08）：入力例（placeholder）。browser の既定グレーに任せない。
     ★実際に入った値（--gup-text-primary）より弱く、かつ通常文字の基準を満たす段。 */
  --gup-text-placeholder:var(--gup-text-secondary);
  /* GUP-COLOR-FIX1（CLR-07）：補足・未確認・尺度の文字。
     ★「重要度が低い」は「操作できない」ではない。disabled（--gup-text-disabled）と分ける。 */
  --gup-text-supplementary:var(--gup-text-secondary);
  /* ★白＝触れる場所。情報面を純白から外したので、入力面は **明示的に白へ留める**。
     既定のままだと --gup-surface-primary に付いてきて「読む面」と同じ色になる。
     暗い 2 配色は themes.css がこの 2 つを上書きして、いままでの値のままにする。 */
  --input-bg:var(--gup-p-white);
  --input-bg-focus:var(--gup-p-white);
  --input-border:var(--gup-border-default);
  --input-border-focus:var(--gup-focus-ring);
}

/* ==========================================================================
   UI-COLOR1: 画面固有・図表固有の色 token（base.css から移設）
   すべて上の semantic を指すか、下の「例外」に該当する固定値。
   ここが色の唯一の正本。新しい色はまず semantic に当てはまらないか確認する。
   ========================================================================== */

/* ===== Gup 配色（テーマ）— GUP-HOME-PROD1 Gate A ==========================
   正本 gate/home-prod1/COLOR_CHANNEL_CONTRACT.md ／ 反映先 docs/DESIGN.md（Gate D）

   ★このファイルは **hex を 1 つも持たない。** palette（tokens.css）を指し直すだけ。
     生の色の正本は tokens.css だけ、という契約を壊さないため。
   ★:root ＝ Air。**いまの production の値そのもの**なので、ここに air のブロックは無い。
     Air を選んだ人の画面は今までと 1 px も変わらない。
   ★役割（semantic token の名前）は 3 テーマ共通。**値だけ**が違う（指示 §11・§35）。
     component の中に if (theme === 'digital') を書かない。
   ★このファイルは gate/home-prod1/build-theme-tokens.mjs が生成する。**手で編集しない。**
   ========================================================================= */

[data-gup-theme="digital"]{
  --gup-surface-app:var(--gup-p-night-950);
  --gup-surface-primary:var(--gup-p-night-900);
  --gup-surface-secondary:var(--gup-p-night-850);
  --gup-surface-muted:var(--gup-p-night-850);
  --gup-surface-overlay:var(--gup-p-night-950);
  --input-bg:var(--gup-p-night-900);
  --input-bg-focus:var(--gup-p-night-900);
  --gup-text-primary:var(--gup-p-ink-050);
  --gup-text-secondary:var(--gup-p-ink-150);
  --gup-text-disabled:var(--gup-p-ink-350);
  --gup-border-default:var(--gup-p-night-750);
  --gup-border-strong:var(--gup-p-night-700);
  --gup-brand-ink:var(--gup-p-ink-050);
  --chart-grid:var(--gup-p-night-800);
  --chart-grid-soft:var(--gup-p-night-850);
  --chart-axis:var(--gup-p-night-700);
  --ui-p:var(--gup-p-mq-d-p);
  --ui-v:var(--gup-p-mq-d-v);
  --ui-m:var(--gup-p-mq-d-m);
  --ui-q:var(--gup-p-mq-d-q);
  --ui-f:var(--gup-p-mq-d-f);
  --ui-g:var(--gup-p-mq-d-g);
  --mg-p:var(--gup-p-mq-d-p);
  --mg-v:var(--gup-p-mq-d-v);
  --mg-m:var(--gup-p-mq-d-m);
  --mg-q:var(--gup-p-mq-d-q);
  --mg-f:var(--gup-p-mq-d-f);
  --mg-g:var(--gup-p-mq-d-g);
  --mg-on-p:var(--gup-p-ink-900);
  --mg-on-v:var(--gup-p-ink-900);
  --mg-on-m:var(--gup-p-ink-900);
  --mg-on-q:var(--gup-p-ink-900);
  --mg-on-f:var(--gup-p-ink-900);
  --mg-on-g:var(--gup-p-ink-900);
  --ui-on-fill:var(--gup-p-ink-900);
  --bd-frame:var(--gup-p-ink-050);
  --series-self:var(--gup-p-cat-l-blue);
  --series-1:var(--gup-p-cat-l-red);
  --series-2:var(--gup-p-cat-l-green);
  --series-3:var(--gup-p-cat-l-orange);
  --series-4:var(--gup-p-cat-l-purple);
  --series-5:var(--gup-p-cat-l-teal);
  --gup-target:var(--gup-p-orange-500);
  --gup-cg:var(--gup-p-cg-500);
  --ui-wc-pay:var(--gup-p-wc-pay-dk);
  --gup-on-fill:var(--gup-p-ink-900);
  --gup-action-primary:var(--gup-p-sig2-d-actionprimary);
  --gup-positive:var(--gup-p-sig2-d-positive);
  --gup-negative:var(--gup-p-sig2-d-negative);
  --gup-warning:var(--gup-p-sig2-d-warning);
  --gup-info:var(--gup-p-sig2-d-info);
  --gup-p-amber-050:var(--gup-p-tint-d-amber050);
  --gup-p-green-050:var(--gup-p-tint-d-green050);
  --gup-p-blue-050:var(--gup-p-tint-d-blue050);
  --gup-p-navy-050:var(--gup-p-tint-d-navy050);
  --gup-p-red-050:var(--gup-p-tint-d-red050);
  --gup-p-gold-050:var(--gup-p-tint-d-gold050);
  --gup-p-pink-050:var(--gup-p-tint-d-pink050);
  --gup-p-lime-050:var(--gup-p-tint-d-lime050);
  --gup-p-cyan-050:var(--gup-p-tint-d-cyan050);
  --gup-p-green-200:var(--gup-p-tint-d-green200);
  --gup-p-red-200:var(--gup-p-tint-d-red200);
  --gup-p-blue-200:var(--gup-p-tint-d-blue200);
  --gup-p-gold-200:var(--gup-p-tint-d-gold200);
  --gup-p-paper-2:var(--gup-p-tint-d-paper2);
  --gup-p-paper-3:var(--gup-p-tint-d-paper3);
  --surface-row:var(--gup-p-tint-d-surfacerow);
  --surface-cream-hover:var(--gup-p-tint-d-surfacecreamhover);
  --surface-kbd:var(--gup-p-tint-d-surfacekbd);
  --surface-box:var(--gup-p-tint-d-surfacebox);
  --surface-grid-head:var(--gup-p-tint-d-surfacegridhead);
  --surface-warm:var(--gup-p-tint-d-surfacewarm);
  --slider-track:var(--gup-p-tint-d-slidertrack);
  --matrix-hot-head:var(--gup-p-tint-d-matrixhothead);
  --matrix-hot-cell:var(--gup-p-tint-d-matrixhotcell);
  --matrix-hot-hover:var(--gup-p-tint-d-matrixhothover);
  --help-dot:var(--gup-p-tint-d-helpdot);
  --gup-color-text-on-accent:var(--gup-p-ink-900);
  --canvas-self:var(--gup-p-lit-d-canvasself);
  --gup-color-danger:var(--gup-p-lit-d-gupcolordanger);
  --text-blue-deep:var(--gup-p-lit-d-textbluedeep);
  --select-accent-dark:var(--gup-p-lit-d-selectaccentdark);
  --gup-brand-accent:var(--gup-p-lit-d-gupbrandaccent);
  --gup-color-accent-hover:var(--gup-p-lit-d-gupcoloraccenthover);
  --grey:var(--gup-p-lit-d-grey);
  --text-note:var(--gup-p-lit-d-textnote);
  --action-accent-hover:var(--gup-p-lit-d-actionaccenthover);
  --text-body:var(--gup-p-lit-d-textbody);
  --text-warm:var(--gup-p-lit-d-textwarm);
  --gup-action-primary-hover:var(--gup-p-lit-d-gupactionprimaryhover);
  --text-warm-note:var(--gup-p-lit-d-textwarmnote);
  --gup-company-role-value:var(--gup-p-lit-d-gupcompanyrolevalue);
  --gup-company-role-customer:var(--gup-p-lit-d-gupcompanyrolecustomer);
  --gup-company-role-foundation:var(--gup-p-lit-d-gupcompanyrolefoundation);
  --ura-head:var(--gup-p-lit-d-urahead);
  --p-blue:var(--gup-p-lit-d-pblue);
  --gup-scenario-forecast:var(--gup-p-lit-d-gupscenarioforecast);
  --select-accent:var(--gup-p-lit-d-selectaccent);
  --q-green:var(--gup-p-lit-d-qgreen);
  --ura-head-dark:var(--gup-p-lit-d-uraheaddark);
  --gup-mu-series-1:var(--gup-p-cat-dk-blue);
  --gup-mu-series-2:var(--gup-p-cat-dk-olive);
  --gup-mu-series-3:var(--gup-p-cat-dk-teal);
  --gup-mu-series-4:var(--gup-p-cat-dk-pink);
  --gup-mu-series-5:var(--gup-p-cat-dk-green);
  --gup-mu-series-6:var(--gup-p-cat-dk-purple);
  --gup-mu-series-7:var(--gup-p-cat-dk-grass);
  --gup-mu-series-8:var(--gup-p-cat-dk-magenta);
  --gup-mu-series-9:var(--gup-p-cat-dk-indigo);
  --gup-mu-series-10:var(--gup-p-cat-dk-orange);
  --gup-mu-series-11:var(--gup-p-cat-dk-moss);
  --gup-mu-series-12:var(--gup-p-cat-dk-red);
  --gup-mu-series-13:var(--gup-p-cat-dk-dblue);
  --gup-mu-series-14:var(--gup-p-cat-dk-dorange);
  --gup-mu-series-15:var(--gup-p-cat-dk-dgrass);
  --gup-mu-series-16:var(--gup-p-cat-dk-dmagenta);
  --gup-mu-series-17:var(--gup-p-cat-dk-dteal);
  --gup-mu-series-18:var(--gup-p-cat-dk-dindigo);
  --gup-mu-series-19:var(--gup-p-cat-dk-dolive);
  --gup-mu-series-20:var(--gup-p-cat-dk-dgreen);
  --gup-mu-series-21:var(--gup-p-cat-dk-dred);
  --gup-mu-series-22:var(--gup-p-cat-dk-dpurple);
  --gup-mu-series-23:var(--gup-p-cat-dk-dpink);
  --gup-mu-series-24:var(--gup-p-cat-dk-dmoss);
  --ui-g-text:var(--gup-p-mq-d-g);
}

[data-gup-theme="executive"]{
  --gup-surface-app:var(--gup-p-midnight-950);
  --gup-surface-primary:var(--gup-p-midnight-900);
  --gup-surface-secondary:var(--gup-p-midnight-850);
  --gup-surface-muted:var(--gup-p-midnight-850);
  --gup-surface-overlay:var(--gup-p-midnight-950);
  --input-bg:var(--gup-p-midnight-900);
  --input-bg-focus:var(--gup-p-midnight-900);
  --gup-text-primary:var(--gup-p-ink-055);
  --gup-text-secondary:var(--gup-p-ink-155);
  --gup-text-disabled:var(--gup-p-ink-355);
  --gup-border-default:var(--gup-p-midnight-750);
  --gup-border-strong:var(--gup-p-midnight-700);
  --gup-brand-ink:var(--gup-p-ink-055);
  --chart-grid:var(--gup-p-midnight-800);
  --chart-grid-soft:var(--gup-p-midnight-850);
  --chart-axis:var(--gup-p-midnight-700);
  --ui-p:var(--gup-p-mq-e-p);
  --ui-v:var(--gup-p-mq-e-v);
  --ui-m:var(--gup-p-mq-e-m);
  --ui-q:var(--gup-p-mq-e-q);
  --ui-f:var(--gup-p-mq-e-f);
  --ui-g:var(--gup-p-mq-e-g);
  --mg-p:var(--gup-p-mq-e-p);
  --mg-v:var(--gup-p-mq-e-v);
  --mg-m:var(--gup-p-mq-e-m);
  --mg-q:var(--gup-p-mq-e-q);
  --mg-f:var(--gup-p-mq-e-f);
  --mg-g:var(--gup-p-mq-e-g);
  --mg-on-p:var(--gup-p-ink-900);
  --mg-on-v:var(--gup-p-ink-900);
  --mg-on-m:var(--gup-p-ink-900);
  --mg-on-q:var(--gup-p-ink-900);
  --mg-on-f:var(--gup-p-ink-900);
  --mg-on-g:var(--gup-p-ink-900);
  --ui-on-fill:var(--gup-p-ink-900);
  --bd-frame:var(--gup-p-ink-055);
  --series-self:var(--gup-p-cat-l-blue);
  --series-1:var(--gup-p-cat-l-red);
  --series-2:var(--gup-p-cat-l-green);
  --series-3:var(--gup-p-cat-l-orange);
  --series-4:var(--gup-p-cat-l-purple);
  --series-5:var(--gup-p-cat-l-teal);
  --gup-target:var(--gup-p-orange-500);
  --gup-cg:var(--gup-p-cg-450);
  --ui-wc-pay:var(--gup-p-wc-pay-ek);
  --gup-on-fill:var(--gup-p-ink-900);
  --gup-action-primary:var(--gup-p-sig2-e-actionprimary);
  --gup-positive:var(--gup-p-sig2-e-positive);
  --gup-negative:var(--gup-p-sig2-e-negative);
  --gup-warning:var(--gup-p-sig2-e-warning);
  --gup-info:var(--gup-p-sig2-e-info);
  --gup-p-amber-050:var(--gup-p-tint-e-amber050);
  --gup-p-green-050:var(--gup-p-tint-e-green050);
  --gup-p-blue-050:var(--gup-p-tint-e-blue050);
  --gup-p-navy-050:var(--gup-p-tint-e-navy050);
  --gup-p-red-050:var(--gup-p-tint-e-red050);
  --gup-p-gold-050:var(--gup-p-tint-e-gold050);
  --gup-p-pink-050:var(--gup-p-tint-e-pink050);
  --gup-p-lime-050:var(--gup-p-tint-e-lime050);
  --gup-p-cyan-050:var(--gup-p-tint-e-cyan050);
  --gup-p-green-200:var(--gup-p-tint-e-green200);
  --gup-p-red-200:var(--gup-p-tint-e-red200);
  --gup-p-blue-200:var(--gup-p-tint-e-blue200);
  --gup-p-gold-200:var(--gup-p-tint-e-gold200);
  --gup-p-paper-2:var(--gup-p-tint-e-paper2);
  --gup-p-paper-3:var(--gup-p-tint-e-paper3);
  --surface-row:var(--gup-p-tint-e-surfacerow);
  --surface-cream-hover:var(--gup-p-tint-e-surfacecreamhover);
  --surface-kbd:var(--gup-p-tint-e-surfacekbd);
  --surface-box:var(--gup-p-tint-e-surfacebox);
  --surface-grid-head:var(--gup-p-tint-e-surfacegridhead);
  --surface-warm:var(--gup-p-tint-e-surfacewarm);
  --slider-track:var(--gup-p-tint-e-slidertrack);
  --matrix-hot-head:var(--gup-p-tint-e-matrixhothead);
  --matrix-hot-cell:var(--gup-p-tint-e-matrixhotcell);
  --matrix-hot-hover:var(--gup-p-tint-e-matrixhothover);
  --help-dot:var(--gup-p-tint-e-helpdot);
  --gup-color-text-on-accent:var(--gup-p-ink-900);
  --canvas-self:var(--gup-p-lit-e-canvasself);
  --gup-color-danger:var(--gup-p-lit-e-gupcolordanger);
  --text-blue-deep:var(--gup-p-lit-e-textbluedeep);
  --select-accent-dark:var(--gup-p-lit-e-selectaccentdark);
  --gup-brand-accent:var(--gup-p-lit-e-gupbrandaccent);
  --gup-color-accent-hover:var(--gup-p-lit-e-gupcoloraccenthover);
  --grey:var(--gup-p-lit-e-grey);
  --text-note:var(--gup-p-lit-e-textnote);
  --action-accent-hover:var(--gup-p-lit-e-actionaccenthover);
  --text-body:var(--gup-p-lit-e-textbody);
  --text-warm:var(--gup-p-lit-e-textwarm);
  --gup-action-primary-hover:var(--gup-p-lit-e-gupactionprimaryhover);
  --text-warm-note:var(--gup-p-lit-e-textwarmnote);
  --gup-company-role-value:var(--gup-p-lit-e-gupcompanyrolevalue);
  --gup-company-role-customer:var(--gup-p-lit-e-gupcompanyrolecustomer);
  --gup-company-role-foundation:var(--gup-p-lit-e-gupcompanyrolefoundation);
  --ura-head:var(--gup-p-lit-e-urahead);
  --p-blue:var(--gup-p-lit-e-pblue);
  --gup-scenario-forecast:var(--gup-p-lit-e-gupscenarioforecast);
  --select-accent:var(--gup-p-lit-e-selectaccent);
  --q-green:var(--gup-p-lit-e-qgreen);
  --ura-head-dark:var(--gup-p-lit-e-uraheaddark);
  --gup-mu-series-1:var(--gup-p-cat-ek-blue);
  --gup-mu-series-2:var(--gup-p-cat-ek-olive);
  --gup-mu-series-3:var(--gup-p-cat-ek-teal);
  --gup-mu-series-4:var(--gup-p-cat-ek-pink);
  --gup-mu-series-5:var(--gup-p-cat-ek-green);
  --gup-mu-series-6:var(--gup-p-cat-ek-purple);
  --gup-mu-series-7:var(--gup-p-cat-ek-grass);
  --gup-mu-series-8:var(--gup-p-cat-ek-magenta);
  --gup-mu-series-9:var(--gup-p-cat-ek-indigo);
  --gup-mu-series-10:var(--gup-p-cat-ek-orange);
  --gup-mu-series-11:var(--gup-p-cat-ek-moss);
  --gup-mu-series-12:var(--gup-p-cat-ek-red);
  --gup-mu-series-13:var(--gup-p-cat-ek-dblue);
  --gup-mu-series-14:var(--gup-p-cat-ek-dorange);
  --gup-mu-series-15:var(--gup-p-cat-ek-dgrass);
  --gup-mu-series-16:var(--gup-p-cat-ek-dmagenta);
  --gup-mu-series-17:var(--gup-p-cat-ek-dteal);
  --gup-mu-series-18:var(--gup-p-cat-ek-dindigo);
  --gup-mu-series-19:var(--gup-p-cat-ek-dolive);
  --gup-mu-series-20:var(--gup-p-cat-ek-dgreen);
  --gup-mu-series-21:var(--gup-p-cat-ek-dred);
  --gup-mu-series-22:var(--gup-p-cat-ek-dpurple);
  --gup-mu-series-23:var(--gup-p-cat-ek-dpink);
  --gup-mu-series-24:var(--gup-p-cat-ek-dmoss);
  --ui-g-text:var(--gup-p-mq-e-g);
}

[data-gup-theme="digital"],[data-gup-theme="executive"]{
  color-scheme:dark;
}

/* ============================================================================
   brand-font.css — ヘッダのロゴ「Gup」に使う書体（Orbitron SemiBold 600）

   ★このアプリは単一 HTML の offline 配布なので、**外部 font を読みに行かない**。
     Google Fonts の link も CDN も使わず、書体そのものを data: URI で埋め込む。
     実行時の external request は 0 のまま（build の verifyHtml が絶対 URL を弾く）。

   ★family 名を 'Orbitron SemiBold' としてウェイト記述子を持たせない。
     字形がすでに SemiBold なので、使う側は font-weight を 400（regular token）のまま置ける。
     こうすると UI-TYPE1 の契約（CSS の font-weight はすべて token 参照・
     component に 500/600/800/900 の直値を書かない）を崩さずに済む。

   ★書体: Orbitron（SIL Open Font License 1.1）。埋め込み・再配布が許諾されている。
     収録は latin サブセット 1 種類だけ（6,588 bytes）。
   ★使うのは .brand h1（ヘッダのロゴ）だけ。本文・入力欄・表には広げない。
   ============================================================================ */
@font-face{
  font-family:'Orbitron SemiBold';
  font-style:normal;
  src:url(data:font/woff2;base64,d09GMgABAAAAABm8ABAAAAAAP/wAABldAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGnwbkUIcKAZgP1NUQVQqAIRYEQgK0kC+JQuCeAABNgIkA4VsBCAFhRAHg2MMBxtUM0UHYtg4AAjcTSiKsrkZDv4/JHBjiPQPyxIOYRElStN1p2kdpktqdutkbyXu5lwb/yxYsHwxjpX326lT0cU2weLx8Ak/eKyNGFaP0NgnuTxfv8bn6dszs4SSQJit1YTCMTqwm8SlfCoywoH+EYqFAtYI7+f5bf55oII6M4fKfTpEhwFGAza6tS4dGzYzkftw0a7bXsjAXhkFa4NVuejfearL0D3d5wtEE3tMZD/WU0jZSPFCkvd26tZheZ5/d39unlpmbVmYUFsk3/0/+Cdvn/Ye4KC7aKRZGPEqhECCgQUJB5ZKbQJbemLpxPynV2ujVQuJkkmZkAmRUiwzNHG527sX3Rf2xf6dljMuV/5I1qVVuoAm4eHNtnZXV3qlXhzC8ngArwXw/386y3a+Z/VWPlaIj6lf5eX1VFREr7dGkqUZ7SwejbU+YK2PbJ8XUDq0HQKuDr17xBsA6i4pKsCiSZ06RZW+TIoyRdlER9la6HWJGJmY9rnmLC0j52oRizDCzAmhlPrz82IyXP5UK5bQABfwyT+oAtYDELYIDAQz5ggWbBAcuCB4Qgh+/BA4OAhcPIRQMQjxEhBEkhEkZiLMsxhBSoogU4AgV4qg0YquQwc6AliLFI926oxkLlg+uakoAUtGgPG/AIX2+G5FCdj/vWqwXHAJgESqlklXk8JE1OZ6e365KdL89gV+KP6q+D1MnrEncO/sR10vHiruge6Srcee14hPJR9B1IKIDc9UFkfE5mpaDcLQvCrF0r0W4lLlZAz4AK4NHay2EngPvgqNLo11mRgwA5tiS2yH3bA79sDemIsDcQgOx/E4wUnKPnfrV5cAIXZnREOrVQcaJgKOom/nR5Z7i34ZWM4vtcu2pXqJRws5i/Nimf8DmH+Z385P5uuzZj4xr57nzykzObtPb6eb05Fp9ZQ0uffHftA1reii9st/eRF1juVAJPGsz9VY2yqzxOXoH7/5wVsEPoIpM1NYsGXHgSs37jx4YvE1DYc/riDBQoQS+BxEJEYxSyvfuEQqkyuUKrVGqyNIimZYf/6t+TKog6Q9rhfAJTkWJMNy30kWdIHNIRLEBVZIo2yqqCiDKmmiNlGJh70R0QRpipvYp1XmO+I+QGDTwxNwSFx1427XdJjA8N44oKlGduaSwJaoIoICK6Ra1q2SNDbOg4KndFrxtH2Adizh83SDrej6QOHXaFNkgLr1LcR5cpsaoAU6QPIZwAr9ACiuYmPhr6iKw6mMxB/5STXpbzbYQqAIoDYxYAmtgG+AQxlQQCXHTUiUQ4DgVff9LnKJigA1xvUlnJljpCYqrHlRKgtNYo6MnhA5mQGMxctA4rxMZianiX1VVVUgXTuj2pyoOlBAIbWLqzw6RbbLvqlLm4LMHYqH2nYTy2h4k+Uly6CSa6hX+SsnXgyMmFg/8ADcDZBCqe/KHsF3tp9FCQoTDHfB6YtSAJt7n6imajsam1p72/fWfArSfXYMeDxlFZ7QQKVaibRmySrKkzlSapiSo0GvMWCdES+nNeJEwr6gs5058rssTBurZK9iCbtWkW3Gbf73mcLykXqlawye0cPKrCUibL06hRjb212SaqdxNPZWIaU5ImJa3GXEnuv0uhLUhBgIf8+1BoUb/XFGGZ10WxKaXBdF17DhyMqTL3SdVV3PB4FnGnhmBTmCyTW8r8yiOtBFk6g937DeJGAhNOTWyeVbASev57vZAaNrzTmEpX0aRF/Tc5+zYwAc4ktBdoBA2v+mMdASbYLrmnpi7tgLgfPg7YcclOd5zQrKunQXOF4tVD/+aQ6v5i/vb+KYUMQV5AEJS8BCNlHxsbStNwduMbs53LJZ5bYnjm06AV7gccDaVmhlM2p4rOlcOqAADfkk7kefj5CKnCf3XoyYstDPDs9ZcBkpAA+9fshdN3394YmLpVxDFzRuCx0vSqY0kr6E5d9fyUikZAsQvZrRtQJZk2zGIG/mo8DF565rgmuxTxO/AveBE8jtrm8WhrD22dJ/Hh5g/075GShATsUA7EFDIDARwHYEsAPt5f0CBQFAEIBqWjZAgAa2o3d+140iBk6IZ4xmughLrNXkvHbdLrliwmMvfe93//qfCKo5uZ5nedEEnU5nsrazXFgeLG8WydJ42/7/P/bgiZSj3nltXp0NuuupV37050qajeHc21jOLHf3GGjyOpdY42c0BzVKhxv478f4Fl/jWtwaNz9XD3+Bla+lr7NffTe5GwhC4Jpmb4EfAPimaIQl4ViCEgLqDPy5vW2dI7Y45azzjtpmu81qrbJHtRqrrdGsUZMNzl135Ld/uDK/h41/l61226/7KuR//Q4X7HTGceuddNpVahsZo6FjMGKCyZwNS1asuXDkxNlUbF68IT7q8QQINB3fclHCRYgRKVqsBMnEEiWZKUOmGeZbJNsCiy3UoECuPPlWIi1BIMb/NgGsAOoF8AFYdxisfwv0RoD6EyBo45PO7RA/y4klVl+CuvUQcOku50tHIG5IjTy60UrSgBagyJ83q/ksq0B9skLX3XVdojGaZnyxjCtHEApQTvP3Oc8gGL8CUYIIhCfqAZ4KaOiHHjmIjP4S24Mi0U+RaVqmvNkYdvhzQ5vVh66ZGF84nN/SyHdm7APIYJ53+xxpKCzM/2en5xAXoW+Mffxi+7JMea26ybAABl2FDhPnMGY4XCycW3LsJ4QtHcf+7cM2QbE8s2v62rV8pUvqevT5hNePl6RTMSo9F0s/zdIVKh90E/KjsWFMRgdLng9HzHWHQFxV6AkqeDgEVI29c8bWleH4q3B/7GlLB9wPjVoV/egor7RvN3Q4PaaoGx9hTo9CUnceuW8BJiMLFVu8lXIUjbGEWFM844v6gPgP6me7Rs8bURsp87kKyye7zDpDnMJ2rYi+dqIkLK/AhvZEzAqtrD0wq1xeLVB4o7yhzULCysVbW/0q5r28Ml8Izw3OA9jLGxghVGe+5GGoBhWp33drgz63MpBYlLOZZ+kY4LzXoQXxNXWem9rY0vqwapA+F1i32WmRa6uEJtjavme++lK5nLU0O6oYsB9AbaZVKf20FyF3dlsbQo9sM/pR43G5MmspGR82x4WATPGY04B//ilSYy4eNkUYL+VD82aNuIJVTBosa0iN8zgOHVe+1XP84sttngkumw2XPgG1D3jp1fIvHFemKPQHsNYQGyGYnBWowfwTmq3w3JXm86oqonp0R1ORO7KW+kPEs8eZbwjpLndBq/xjGgXDtpYyOO7EHpd5a/gV7rna+XLy5bBaoomux9QEq79ydRYyYaV+t0GSZo+ftmFfTsOyJko5dV4E2fQ3UimkwO582SMeps7xea5l3eLaogqNglWebUi0O6znGw3Q8CqSw+rmxNXfiY5rygTDKj0Zn6zKAyr4wbpb8bryKENrmOFZtgAzDuvIh7o3J2rJAN5g5G9MfuLugW+PvA/p4seLUuAY8c1pHIy1/1k0zOkvmDUZ/FYWSzQLZVsazZVLa5/jzN6MfbosazvXOlOpWOO2lipT16qNDcG9mSW2MbDGUEVTW3orRqMeuqvuDpMtsrQhReRWDz15HrXRhMTqVtHsNvqL3iGmUogMO+/ziVE8eH9fvuLpPvz+jU+LfMQHJDUrq8dANS039igyr09p+BZqUMp46PofBj3xhNsfiOByKIe5V33C8UJdo776M027psK3arrA+gDUULBQMbRWI8qyxOYatY4RF6t3mL+AaETnYVOMm7MCRX+cKgoL9iW/hSxab1rEAWj2m9i+7hnHv6ybVxBlzMeE4TeUjgjYRp/f6tIiF7DARS5hfmGpy7xtXThx2Xw076FGUfDLksec9XCcnPHZXt4KNj24+gebV9iZZrvudmeQ6G9ZvtWRo7b9hAFVEslj+TDYU5ezHw5bqDQX7c/f7PRzL5Y/746hKfjjUT8URsMqeOZhr4KnK7p9TEOMayyDFs6yVfN2RFQ9rbF2qeoGrLSlv7B+uO8zRTebaE7OjszxRK9axwqASu9gOVH6cl/DHZgY9WyHA3sOQGQqirmPRpAuA6Wqfn/lU7jk1SNmiz20+AgEkIoydChP5dHZVd3V6aE63FpVCrd96HE2RBm4N032WqakOce71O6KpW6n1vDDZFouVIJOM0+wzeOe/tLBNtQZRPdj0IgFM5NVwdaBHptSglUQaUhlZSN0zsCt/0aj3MMqd3uu464a5f6kljvxIFWABN5jbe3uSzXVjLsZRBgo/x/8qUEq8AzYADtJ4hIqZU88UZV631Dlf+UvzlYPh7RQ4bEVHMAVf4i4S2VnqyDcsN0iYUrCDjLFz2Ou5xzfmZljiFSlx4yTvtAvaqUuFVHet9mH+LZJ1irxZHgICZ9IRXoJus7O0CED/G2jWDFzALU/9FEzsOFDLdkdaJetajC+gda+YJx+vnYfI++kF+liEI/iMo/TwF57QDwtGh1FMVqwM5qQClrgeJ/jDoKE4GsZD1lclUHln6XHHaRSifpudgT0UD+xSyLMEO7MDWAaGE+sv/hTqKy+tNjrP06Tjjj6EBAI7g7pnbvXvGJOMmsmx3THNI+pLsN8sEwf3vNX1B9R+yQjFhAC28hxX5Vh8IdCD9JHoSePFjPV6vANsjsKDYwoJdU5+Uz1luPQ41oy2nCpSQs6HFGPWVha9T4/UGlEbAQCoOGBWWy1YTiK0rNjlJGMkvJuiWToSerJVdSdzgyd3o2u4xGmYTwOp9HR1mjWAKbdNFJGrDKHfgKWYI0l+zqWs60owIfVKFqHnlIPrQuhn/HnMdj5HigpQ+3CmWw9z370bCHS+yMPxNWhmEUyjdP8fsQHcI/8XfUkFMRYrNwOFKaAN1UYel6D6lfmCU7steS5EN4VA/Wi0zRorrr/YbP7t8ahwn0zmF31EXo82M0aSsVUI8dlIADxM62JoSof55F9gCNO+IRsyntTRhCBrtYDd5MJdKXKe1Be1xld2aeFXHCXRC4b4C34AJybVw8466Pt4gf7K3Lqx1lGHvAmZ2SxhFgoDCg8W4TjmM6wS8LjdthqY0UaI7KYOT7bF61JTUlkCpkAEZAWy46GWLuXLzlHrljuW29cFOK8zT66x8hbOSHvh16FsUToFZhciS9+xp9Fs/sQP50zMYcjmNV9QLkGMBdiRTu+uxQ+uB3xImDAO9G6Q0Wnizack2+Xr38mWnrlWNsxCAS35+bPCbeapqHGoRqkEC/M7Zvmwq6nGdWdmSl9+ApTrWKH55V+hPTXIRDAtmbxGZyxrUncjGEQXY9j96MYPRpC+hjUz467joZYq+EUQ82clz+AVnaSqQbeA0c8t/beX9sMEAF2KHoE9TPUntTLZeViHhml0xciXRTZ1DSkHvUxW9xcqxBDn3ZxRHntIb8e0/TUuVvC7JRPMQ6HCiTTu8imJgenpEayfVxPIz3EIXgMl+4q7p9RNBZQBZcOBID7DzCITvHHvvwqcE90ahQLsbzVtL6mi0b1LMYeprdP3MVjjKjhAodGcGMVXUkkH8cerQuq8w6SGWrGqXvsrTSdpEG9nX7/vut2ew8S7/CackUm9dNpOAgh7ulDZ9oC3q9fJad3aqmsXHjJ22D9rZbVcaYMs3XppD4hk4bpJ3NHLZrXXY8AMMbA3wS/4XLWhyzgTwCFKeXEvBQSz/KWVLONm1jyt1BSS4i4BSbYRHmLKw3MsJly7tSb26mHGDJKx/6LoeaCar6hvkf6dLKLLdGjPyo3AuuJ2HHv7S5BK5dhthiLhZ/kblLfvZxfg/IHM94PQMPlTbfn8ZyCePbTg5ygxROWiTPla319Ktdyaqgta6exP7wB38zinMQZRZAIQU1Z1Org2v3U5ZBT1fxT+hmpps2ilN+W2Ul18pooztb7O8pyg5GQWh2YwObJ5J83vkyBj/B6xnrWZDps6hxMX3bk16tGTV/ueRAOmOtyH+lcKoitkyB1q+BmBTQ+1FJxbheS6NgqYsw8+//cuoSAEMScqf3enluQjJc9tbvOl6sP1v87BwEYLuG4t3EYQgDHvo3FlwwQ+TXgQxj4XwHO+g43EEZjbyzgPpSzPuU6/jYDyrw+znP8Ffj34VeqjPUxr9lkAizmg1ezliNGVplLu3nsBlqldiposRYi3b4zM4+9VCklFUWWkjSF3uFXDLXibdQ2kdHEtekr/A5YRVBcfYQJ1dlz9RpqzQPqQc4D/KD42zfKHGVn6SiSQihq9tUFoEC9DpmGu4nUR5NHSa7Ot7kIFzWR97mkpVKTqvoxuozPURRwH7V4zuYNo+HHpIO2zBwAm3ePPdTHF7C0WxrZebzMRT2BKJKi1sprbFlwUrcWw6nFsHcX3rWH2rMP79sLcLOhWRCw8+LuS+Y1myLMrHHbdQk6AVONwPw31DvKL/WlKDwJ40LkHKDMKNObBwKNsMOm1ub0jrrvKqAJoPb78pluLz7gWuC8ZRu+J8msrL2kr3iqyMuF9Wz+Tz6wFWo04l+2tIhMFGi/KzsTuexH2aCvC8pkuzawzgEV8zglsY8qBioR7TGbItsx2zgorJYCJ1PGGU5NXz6yIQibXbMLrf2IxOjjWpQBah+h3Iypbd9M1GQhTmomt6t6UDr5/7+61JVO3nCU/P6iUECmd7HXsNZULEl5pYr5G1p16YUCN61KrdqRafMX6lWuMY+oOTT6zrSxNjPV6YO//kP6aPYIO0aPZt3Cf8n+Ki//a/Lfdjo+QTYpg65ysluCMtoqy+o1fTKQZFaWtQyPspxJ8SHLGbvhF0EDbgByHVAqKg69HYqmcTSq1woQnoq/hnoTO3dDTsPCZQ0yTopfCrhsd6tyC3FTuvHd1ih52c6lTl4kzTYR0ZTP27IXdlvtH7k4LWjnyUfawtmw4AY0UtxGmH9g9pgNtEMIYJXWNNqlqtvUGrVW3S51gJm36ASIW4zBeySLgKg1khY7nLnVSnWbWiNpuScRPshZFNm1om5Ta9RaqSOX66bmqrlqLg8VfICHYUYpaOo2tUatVbdLHaXxiYc+SaQsBJKIL4COoIVrBST3WbROrWRbSQ3W8nkkeB7PGj5jwfivqdvUGrVW6uAyN2Xx+F+S8UXQEbRwrXB5/4yZAKAxfmJ6jdaZoM5yr/ZDU9q33O1w2/rpdP4DGTi6TTe8mrH53xls/JNRA4Dd70Ak6LX0qz+lvnybl6XRsR8KH/I2oRlcyGc2IlJf+WZZyAE+tfB4bf/TyWM8XBv6WgDvNw4HvZr+kMCOXuhXpb48m9vq2sGM7nAUenJe64Ai3g3lD+HxGDNVyJBnfcQy6NkBmBex4j8W+gEfW3hM2n9x8hgN17q+5sC7tQKQN3xl0LP9iwJvKL81JRk//npzW9H0qfkdy3MGGdwBGCt/kLX11YQSK30x6m9oQrNv655a1zzO+c3d1nDK0VrTqZyH3AArBBDCXvTCMmdT9G/S6Z8BH7ZFEODz3dnB/xOH6+zTD4EFDaDANEjFfJ2S/3cHCJ/W10p+Yd9ikU+RBzoh6HhRLRCO8xOKzH/ofmXHcslzRHiEZ4gTHq/ReEEWPQWM2kNEm/8NrBfe8ecYTZA0L8VvJwOFiBBuT87P7+z7Fn7NZzpp4zVXYJPMrii+kFwSKk8nxslJglwWoiHFKd0rwl7rPH4umJZTBJ4LjQh+MAmjy5r7fiSmhpMrPqPvEeSKGF4rxljTcaE5RiDsw0DfTyteJ4iodvxcRoN25DCRfLp6AqPFgddD0EJ97K2IjhXRke4zJlpqqIgcQreldDS+1zG0iD+JkMR23guR7qnf7FlT08SuKq3JH1zaAyumYBImGJen0GIJLy9O5SWk7AjKXkiMISp6ghZUMasaBHbJAuO8jeKONpjuO1HFAehS7+aT1bzanncm+VY/G6/G3vihwZSsVehz//v0lHEd4tzX8TqMoNX4nSC8LgvwiAAMKRj1YPSDoQCjCYwMUJfCAFnYEj3kX+/IfOFcBznVL7I85IwAVsxhLJrRPsEz4b71I+iIyRTA72WkDSR4ezuQxtKDgXThTmUbWQcac7WRmtTSsoGWQnEHWrPmTm28aMpIBMB64NDxcWbJVShfAYU5cq1USKiUnMwMFZYrpFChVElLVigTaXoQlVY4LcR9FSoF0kJZCVRK87knniGJxCt/wDAxX+4ElaQJluDusTw8QcrYUTLNkClxNZ1htshXhe5YqqLv9FlUlDPKqFRIhNDo42k4oHMLyF2JnzNTaBHlrOgVCaoMCkisGSx+yfHKBzdfoVFUWe7pK5RaafqCyCWPjpSf5taQl6/0LXMaLhbs5bDiOpUpNlfKJcOSZCdMXiapld0TR2LxjpDmLRDNp/MdpwT7fFaAA265YTmtFVrtg5BkfPnJddNtd6bJMkeNGTcxx0Uy/PrzBDO4K999bdqFCMUnECbcAw8VeCRCpCjRvhZDrFAxuSIlVqqXGCqRLEVZrrx8Im1rEo8pKGFVE2GvZqZZKLOprLJatTU6Ztbe3XzbZcm21nobrLPAQoss9o0eS+bjjHk07jIn9y9jw4oHTxcYaeKt0VYWTNiKY26KpZaJFc9apy5C3S665DJjZuhFI+iwGcMWlr73gytYvEwlxeTD1Dab5MSIMCZMCAbBJEwJM9hDZLcnXnrqmclVVc8KebwEnlHi84rSX+8fwgs3vZHp3Nz/1Zwwld6uUiimhQf/fM4EU8VDuey1aXDYFeL/Le+1dwMA) format('woff2');
}

/* UI-COLOR1: 色 token の正本は styles/tokens.css の 1 か所だけ。
   ここには余白・文字サイズなど色以外のスケールだけを残す。色をここへ書き足さない。 */
:root{
  /* ===== 情報階層 ===== */
  /* ===== 面の階層 ===== */
  /* ===== 装飾・図表 ===== */
  /* ===== MG伝統配色（デッキと共通・箱型図のベタ塗り用） ===== */
  /* ===== UIトーン（同色相の作業画面用・レバー/タグ/数値） ===== */
  /* 入力欄の統一スタイル */

  /* ============================================================
     ===== デザイントークン（2026/07〜 新規追加分。既存ルールは変更していません） =====
     以下は「今後、新しいCSSを書くときはこれを優先的に使う」という基準です。
     既存の306個のクラス・26種類のフォントサイズ・12種類のmargin-topは
     このタイミングでは一切書き換えていません（見た目は完全に現状のまま）。
     ============================================================ */

  /* ----- 余白スケール：5段階のみ。この5つ以外の数値を新規に使わない ----- */
  --sp-1:4px;   /* 最小単位。アイコンの内側、詰めたグループの中の間隔 */
  --sp-2:8px;   /* 標準の小余白。ラベルと値の間、行と行の間隔 */
  --sp-3:12px;  /* カード内の小セクション同士の区切り */
  --sp-4:16px;  /* カード間・カード内の主要セクションの区切り（最も使用頻度が高い） */
  --sp-5:24px;  /* カラム間や、明確に離したい大きな区切り */

  /* ----- 文字サイズスケール：役割ごとに5段階＋特別枠1つ ----- */
  --fs-label:12px;   /* 補助ラベル・注記・凡例・ヘルプ文の小さい文字 */
  --fs-body:14px;    /* 本文・説明文・入力欄の標準サイズ */
  --fs-ui:16px;      /* ボタン・タブ・通常の操作UIの文字 */
  --fs-number:20px;  /* テーブルの数値など、通常の数値表示 */
  --fs-display:28px; /* Gや簡易CFなど、最重要な数値だけに使う強調表示 */
  --fs-hero:36px;    /* アプリ内で唯一無二、一番目立たせたい数字専用（②感度分析のG比較バナー等）。乱用しない */

  /* ----- 色の使い分け（新色は増やさず、既存変数の「役割」を明文化するだけ） -----
     選択・操作中の状態　　　→ --action-accent（青／フォーカス枠・リンク・ホバー等で既に使用中）
     最重要な数字・アクティブなタブ → --header-gold（ヘッダー内の利益G・タブのアクティブ状態）
     良い／悪いの判定色　　　→ --good（緑）／--bad（赤）
     P・V・Q・F・M・Gのレバー色　→ --ui-p／--ui-v／--ui-q／--ui-f／--ui-m／--ui-g（感度分析・簡易CF等で統一使用中）
     戦略投資4分類のタグ色　　→ --chip-red／--chip-blue／--chip-yellow／--chip-green
     カード見出しの装飾バー　　→ --bar-accent（濃さ違いで--bar-accent-2／-3もあり）
     新しく色が欲しくなった時は、まずこの一覧に当てはまる色が無いか確認してから追加する。
  ------------------------------------------------------------------------- */
}

/* UI-TYPE2（Founder 判断）：見出しにも段を持たせる。
   h3 は規則が無く、ブラウザ既定（1.17em＝18.72px）で出ている箇所があった。
   セクション見出しは 18px（--gup-fs-lg）。class や id で指定している h3 はそちらが勝つ。 */
h3{font-size:var(--gup-fs-base);}   /* UI-TYPE6：セクション見出しは 16px（18 と 20 は 2px しか違わず段にならない） */

/* 全入力欄の統一ベース */
input[type=text],input[type=number],input[type=search],input[type=password],input[type=email],input[type=url],input[type=tel],textarea,select{
  background:var(--input-bg);
  color:var(--gup-text-primary);
}
/* UX-SYSTEM1A：<button> は何も指定しないと UA の ButtonText（黒）で出る。暗い配色で
   「③ の逆算カード・② 方針の狙い／対象／根拠タブが黒文字」になっていた共通原因はこれ 1 つ。
   文字色だけ本文と同じ token を下地にする（面や枠を持つ button は各自の規則が勝つ）。 */
button{color:var(--gup-text-primary);}
input[type=text]:focus,input[type=number]:focus,textarea:focus{
  background:var(--input-bg-focus);
}
*{box-sizing:border-box;}
/* form control はブラウザ既定の書体（Arial 等）になるので、本文と同じ書体を継承させる。
   個別の font-family:inherit を書き忘れても取りこぼさないための 1 行。 */
button,input,select,textarea,optgroup{font-family:inherit;}
/* GUP-COLOR-FIX1（CLR-08）：入力例は browser の既定グレー（#757575 相当）だった。
   暗い配色では 3.78〜4.11:1 で、通常サイズの可視文字の基準に届かない。
   ★実際に入った値（--gup-text-primary）より弱いまま、読める段にする。
   ★個別の editor へ規則を足して回らない。ここ 1 か所で theme token へつなぐ。 */
input::placeholder,textarea::placeholder{color:var(--gup-text-placeholder);opacity:1;}
/* UI-TYPE1: b / strong のブラウザ既定は font-weight:bolder。親が Bold(700) だと 900 まで上がり、
   Meiryo UI に無い段へ行く。契約の Bold へ固定する。 */
b,strong{font-weight:var(--gup-font-weight-bold);}
html,body{margin:0;padding:0;background:var(--paper);color:var(--navy);
  /* UI-TYPE1: ここが 600 だったため、Meiryo UI では画面のほぼ全体が Bold になっていた。
     本文の基準は Regular。太字は役割のあるところだけに置く。 */
  font-weight:var(--gup-type-body-weight);
  /* UI-TYPE5：基準の行送り。長文の本文・補足は各役割が --gup-lh-body へ上書きする。 */
  line-height:var(--gup-lh-normal);
  font-family:var(--gup-font-sans);
  -webkit-font-smoothing:antialiased;}
.serif{font-family:var(--gup-font-sans);}

/* ライセンス認証ゲート */
.lic-gate{position:fixed;inset:0;z-index:200;background:var(--gup-surface-inverse);
  display:flex;align-items:center;justify-content:center;padding:var(--gup-sp-5);}
.lic-box{background:var(--white);border-radius:var(--gup-radius-md);max-width:420px;width:100%;padding:var(--gup-sp-6) var(--gup-sp-6);
  box-shadow:0 20px 60px rgba(0,0,0,.3);}
.lic-logo{font-size:clamp(21px,6.2vw,27px);font-weight:var(--gup-font-weight-bold);color:var(--navy);letter-spacing:.01em;white-space:nowrap;}
.lic-sub{font-size:var(--gup-fs-xl);color:var(--action-accent);font-weight:var(--gup-font-weight-bold);margin:2px 0 var(--gup-sp-4);}
.lic-help{font-size:var(--gup-fs-base);color:var(--text-secondary);font-weight:var(--gup-font-weight-regular);line-height:var(--gup-lh-body);max-width:var(--gup-measure);margin:0 0 var(--gup-sp-4);}
.lic-lbl{display:block;font-size:var(--gup-fs-base);font-weight:var(--gup-font-weight-bold);color:var(--navy);margin:var(--gup-sp-3) 0 var(--gup-sp-1);}
.lic-input{width:100%;border:1px solid var(--line);border-radius:var(--gup-radius-sm);padding:11px var(--gup-sp-3);
  font-size:var(--gup-fs-xl);font-family:inherit;color:var(--navy);box-sizing:border-box;}
.lic-input:focus{border-color:var(--action-accent);}
.lic-err{color:var(--bad);font-size:var(--gup-fs-base);font-weight:var(--gup-font-weight-bold);min-height:18px;margin:var(--gup-sp-2) 0 0;}
.lic-btn{width:100%;margin-top:var(--gup-sp-4);background:var(--gup-surface-inverse);color:var(--gup-text-inverse);border:none;
  border-radius:var(--gup-radius-sm);padding:13px;font-size:var(--gup-fs-xl);font-weight:var(--gup-font-weight-bold);cursor:pointer;}
.lic-btn:hover{background:var(--header-hover);}
.lic-foot{font-size:var(--gup-fs-sm);color:var(--text-secondary);text-align:center;margin-top:var(--gup-sp-4);line-height:var(--gup-lh-normal);}
.lic-badge{font-size:var(--gup-fs-sm);color:var(--text-secondary);}

/* header / equation strip */
/* GUP-COLOR-FIX1（CLR-02）：ここは **アプリの帯（app chrome）** だけの規則。
   裸の header{} にすると、内容側の見出し（<header class="bsw-header"> など）まで
   白文字で塗ってしまい、明るい面の上で 1.08:1 になる。
   ★局所の上書きを積まず、この規則の持ち主を body 直下の帯に限る。 */
body > header{position:sticky;top:0;z-index:30;background:var(--gup-surface-inverse);color:var(--gup-text-inverse);
  padding:var(--gup-sp-2) var(--gup-sp-4) 0 var(--gup-sp-4);box-shadow:0 8px 24px rgba(0,0,0,.18);}
.brand{display:flex;align-items:center;justify-content:space-between;gap:var(--gup-sp-3);}
/* UI-BRAND-FONT1（Founder 指示）：ロゴだけ Orbitron SemiBold 600 にする。
   字形がすでに SemiBold なので font-weight は regular token のまま（太字を重ねない）。
   字間は書体側の設計に任せて .03em をやめる。 */
.brand h1{font-size:var(--gup-fs-display);font-family:var(--gup-font-brand);font-weight:var(--gup-font-weight-regular);margin:0;color:var(--header-text);white-space:nowrap;}
/* UI-LOGO1（Founder 指示）：ヘッダのロゴは高さ 30px。帯の高さがこれ以上取れない。
   ★幅は形なりに決める（width:auto）。つぶして合わせない。
   ★色は指定しない。svg 側が currentColor なので h1 の color をそのまま継ぐ。 */
.brand h1 .brand-mark{height:30px;width:auto;display:block;}
.brand .sub{font-size:var(--gup-fs-sm);color:var(--grey);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:38vw;}
/* 通常は 1 行。拡大して収まらない場合は、操作を切らずに折り返す。
   Gup ｜ 会社・決算期 ｜ PQ MQ F G ｜ 使い方 ｜ 表示倍率 ｜ MQサマリー
   KPI だけが伸び縮みし（1fr）、ほかは中身なりの幅で右へ並ぶ。 */
.topline{display:flex;align-items:center;gap:var(--gup-sp-3);
  padding-bottom:var(--gup-sp-2);flex-wrap:wrap;min-width:0;}
.header-kpis{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:var(--gup-sp-1);
  max-width:760px;margin-left:auto;flex:1 1 300px;min-width:0;}
/* UI-IA2.3: display を持つ要素は [hidden] だけでは隠れないので、明示的に閉じる。 */
.header-kpis[hidden]{display:none;}
.hkpi{background:var(--header-panel);border:1px solid var(--header-panel-line);border-radius:var(--gup-radius-sm);padding:var(--gup-sp-1) var(--gup-sp-2);min-width:0;}
/* V2-AB1（Phase A）：ヘッダ KPI は **値が主役**。名札（PQ・VQ …）は 400 にして段を作る。 */
.hkpi .l{display:block;font-size:var(--gup-fs-note);color:var(--header-muted);font-weight:var(--gup-type-kpi-label-weight);line-height:1.1;}
.hkpi .v{display:inline-block;max-width:100%;font-size:var(--gup-fs-lg);color:var(--gup-text-inverse);font-weight:var(--gup-font-weight-bold);font-variant-numeric:tabular-nums;line-height:1.2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
/* UI-HEADER4: どの箱の数字かは**ラベルの前の点**で示す。値は 5 つとも同じ白。
   黒い面の上なので薄い面は使えず、箱そのものの識別色（--mg-*）を点として使う。 */
/* 黒い面に濃紺（PQ）が沈むので、5 つとも同じ細い輪郭を付ける（PQ だけの例外を作らない）。 */
.hkpi .l::before{content:"";display:inline-block;box-sizing:border-box;width:9px;height:9px;
  border-radius:var(--gup-radius-pill);border:1px solid var(--header-border);
  margin-right:var(--gup-sp-1);vertical-align:baseline;background:var(--header-muted);}
.hkpi.mg-pq .l::before{background:var(--mg-p);}
.hkpi.mg-vq .l::before{background:var(--mg-v);}
.hkpi.mg-mq .l::before{background:var(--mg-m);}
.hkpi.mg-f .l::before{background:var(--mg-f);}
.hkpi.mg-g .l::before{background:var(--mg-g);}
/* UI-SYSTEM1-1C1: 901〜938px では 4 列のままヘッダーの KPI が画面からはみ出していた。
   既存の breakpoint（980px）へ寄せて、はみ出す前に 2 列へ折り返す。 */
@media(max-width:980px){
  .header-kpis{grid-template-columns:repeat(2,minmax(106px,1fr));}
}
.hkpi .v.is-negative{color:var(--header-loss);}
.eqn{display:flex;align-items:center;justify-content:center;gap:var(--gup-sp-2);
  padding:var(--gup-sp-3) 0 var(--gup-sp-3) 0;font-family:var(--gup-font-sans);
  font-size:clamp(26px,4.6vw,39px);font-weight:var(--gup-font-weight-bold);flex-wrap:wrap;}
.eqn .tok{padding:2px var(--gup-sp-2);border-radius:var(--gup-radius-sm);transition:transform .25s, box-shadow .25s;}
.eqn .tok.active{box-shadow:0 0 0 2px currentColor inset;transform:translateY(-2px);}
.eqn .P{color:var(--ui-p);} .eqn .V{color:var(--ui-v);} .eqn .Q{color:var(--ui-q);} .eqn .F{color:var(--ui-f);}
.eqn .G{color:var(--gup-text-inverse);}
.eqn .val{display:block;font-size:.46em;font-weight:var(--gup-font-weight-regular);color:var(--text-secondary);margin-top:1px;text-align:center;}

/* UI-IA2: 上位ナビは左サイドの縦並びになった。見た目は styles/sidenav.css。 */
nav.tabs{display:block;}

/* 記録バー（会社×年度）：常に1行で、会社・決算期の切替と操作メニューを表示する */
.record-bar-row{display:flex;align-items:flex-start;gap:9px;border-top:1px solid var(--header-line);}
/* UI-HEADER4: ミニKPI が 5 つになったので、狭くなったときは KPI 側から縮める。
   会社・決算期のセレクトは「いまどの記録を見ているか」なので、切り詰めない。 */
.record-bar-main{min-width:0;max-width:100%;display:flex;align-items:center;gap:var(--gup-sp-2);flex-wrap:wrap;
  flex:0 1 auto;font-size:var(--gup-fs-sm);color:var(--header-muted);}
.rb-label{font-size:var(--gup-fs-base);color:var(--grey);font-weight:var(--gup-font-weight-bold);margin-right:2px;}
.rb-sel{background:var(--header-control);color:var(--gup-text-inverse);border:1px solid var(--header-border);border-radius:var(--gup-radius-sm);
  padding:6px var(--gup-sp-2);font-size:var(--gup-fs-base);font-family:inherit;max-width:190px;}
.rb-sel:focus{border-color:var(--header-focus);}
.unit-sel{background:var(--input-bg);/* GUP-AIR-SURFACE1A：入力面の役割で塗る */color:var(--navy);border:1px solid var(--input-border);border-radius:var(--gup-radius-sm);
  padding:var(--gup-sp-1) var(--gup-sp-2);font-size:var(--gup-fs-base);font-family:inherit;font-weight:var(--gup-font-weight-regular);cursor:pointer;}   /* UI-TYPE4：選んでいる値は太字にしない */
.unit-sel:focus{border-color:var(--action-accent);}
.rb-btn{background:var(--header-control);color:var(--header-control-text);border:1px solid var(--header-border);border-radius:var(--gup-radius-sm);
  padding:6px 10px;font-size:var(--gup-fs-base);font-weight:var(--gup-font-weight-bold);cursor:pointer;font-family:inherit;}
/* UI-HEADER4: ヘッダーの 1 行に並ぶボタンは折り返さない（「使い / 方」を作らない）。 */
.topline .rb-btn{white-space:nowrap;flex:none;}
.rb-btn:hover{background:var(--header-control-hover);color:var(--gup-text-inverse);}
.rb-divider{width:1px;height:20px;background:var(--header-border);margin:0 var(--gup-sp-1);}
.rb-save{font-size:var(--gup-fs-base);color:var(--header-muted);white-space:nowrap;}
/* UI-HEADER3：ふだんは空なので、余白まで空けない（困っているときだけ出る） */
.rb-save:empty{display:none;}
/* 記録バーの badge（見本データ／移行が必要）。同じ役割なので寸法は 1 つの規則で共有する。 */
.rb-migrate-badge{font-size:var(--gup-fs-note);font-weight:var(--gup-font-weight-bold);
  border-radius:var(--gup-radius-sm);padding:3px var(--gup-sp-2);white-space:nowrap;}
/* PRODUCT-MU1-2A: 旧形式・移行途中は「異常」ではなく「移行待ち」なので、danger（破壊的操作の色）は使わない。 */
.rb-migrate-badge{color:var(--text-secondary);border:1px solid var(--line);}
.rb-migrate-badge[hidden]{display:none;}
.outcome-note{white-space:pre-line;}   /* UI-SENT1：改行は文で */
.outcome-kind-note{font-size:var(--gup-fs-sm);color:var(--text-secondary);margin-bottom:var(--gup-sp-2);line-height:var(--gup-lh-body);max-width:var(--gup-measure);}
/* UI-HEADER2：「実績」は数字の種類であって業績の良し悪しではないので neutral。
   （色は意味と操作にだけ使う。positive / negative は良し悪しの判定に取っておく） */
.rec-kind-real,.rec-kind-none{font-size:var(--gup-fs-note);font-weight:var(--gup-font-weight-bold);color:var(--text-secondary);background:var(--surface-muted);
  border:1px solid var(--line);border-radius:var(--gup-radius-sm);padding:2px var(--gup-sp-2);}
/* GUP-TRUTH-CLOSE1（B）：値が読めない年度の区分。実績と同じ器で、文字だけ薄くする。 */
.rec-kind-none{color:var(--gup-color-text-disabled);}
/* STATE-PLAN-PRUNE1：⑥ の推移表にあった仮想「計画」行の CSS は、行ごと退役したので外した。 */
.plan-check{margin:var(--gup-sp-4) 0;border:1px solid var(--line);border-radius:var(--gup-radius-md);padding:var(--gup-sp-4) var(--gup-sp-4);background:var(--surface-kpi);}
.plan-check-head{font-size:var(--gup-fs-sm);font-weight:var(--gup-font-weight-bold);color:var(--text-secondary);margin-bottom:var(--gup-sp-2);}
.plan-check-row{display:flex;align-items:center;gap:var(--gup-sp-4);flex-wrap:wrap;}
.pc-item{display:flex;flex-direction:column;gap:2px;}
.pc-l{font-size:var(--gup-fs-note);color:var(--text-secondary);}
.pc-v{font-size:var(--gup-fs-xl);font-weight:var(--gup-font-weight-bold);color:var(--navy);}
.pc-arrow{font-size:var(--gup-fs-xl);color:var(--text-muted);}
.pc-result{font-size:var(--gup-fs-base);font-weight:var(--gup-font-weight-bold);border-radius:var(--gup-radius-sm);padding:var(--gup-sp-2) var(--gup-sp-4);}
.pc-result.good{color:var(--outcome-positive);background:var(--panel-positive-bg);}
.pc-result.bad{color:var(--outcome-negative);background:var(--panel-negative-bg);}
@media(max-width:680px){ .plan-check-row{flex-direction:column;align-items:flex-start;} .pc-arrow{transform:rotate(90deg);} }
/* UI-BRIDGE-TABS1（Founder 指摘）：3 つで 1 組の切替なので一列に置く。
   等幅（1fr × 3）にして、狭いときは文字を詰める（折り返して 2＋1 にしない）。 */
.bridge-mode-tabs{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--gup-sp-2);
  margin-bottom:var(--gup-sp-3);min-width:0;}
/* UI-TYPE4：文字のボタンは 16px。 */
.bmt-btn{border:1px solid var(--input-border);background:var(--white);border-radius:var(--gup-radius-sm);
  padding:7px var(--gup-sp-2);font-size:var(--gup-fs-base);font-weight:var(--gup-font-weight-bold);color:var(--text-secondary);cursor:pointer;font-family:inherit;
  min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}   /* UI-BRIDGE-TABS1：一列に収める */
/* V2-AB1（Phase B）：⑤ の比較の選択も selection grammar（soft な面 ＋ 左のマーカー）。 */
.bmt-btn.active{background:var(--gup-surface-secondary);border-color:var(--gup-color-accent);
  color:var(--gup-color-text-primary);box-shadow:inset 3px 0 0 var(--gup-color-accent);}
.bmt-btn:disabled{opacity:.4;cursor:not-allowed;}
.header-menu{position:relative;margin-left:auto;}
.mx-concept-body{margin-top:var(--gup-sp-3);max-width:680px;}
/* UI-TYPE5：②④ の概念説明。inline style を class へ（本文の行送りと 1 行の長さは token で決める） */
.mx-concept-desc{font-size:var(--gup-fs-sm);color:var(--text-secondary);line-height:var(--gup-lh-body);max-width:var(--gup-measure);}
.mx-concept-head{font-size:var(--gup-fs-sm);font-weight:var(--gup-font-weight-bold);margin-bottom:var(--gup-sp-1);}
.header-menu summary{list-style:none;background:var(--header-control);color:var(--gup-text-inverse);border:1px solid var(--header-border-soft);border-radius:var(--gup-radius-sm);
  padding:var(--gup-sp-2) var(--gup-sp-3);font-size:var(--gup-fs-base);font-weight:var(--gup-font-weight-bold);cursor:pointer;}
.header-menu summary::-webkit-details-marker{display:none;}
/* ---------------------------------------------------------------------------
   Phase UI-SYSTEM1-1B2 — control の基本寸法（element 単位の下地）

   高さは **40px（standard）／34px（compact）の 2 種類だけ**。
   ここは「宣言し忘れた control」を拾う下地なので、**下限だけ**を与える。
   高さを縮める（padding を削る）のは、40px を超えている control へ
   各画面の規則で個別に宣言したときだけ。当たり判定を勝手に縮めないため。

   ・range / checkbox / radio は入れない（専用契約 → UI_SYSTEM1_1B2 §10 §11）
   ・textarea も入れない（固定高にしない）
   ・card 型の選択部品（.sens-card / .mqli / .sf-step）は control ではなく面なので入れない
   ------------------------------------------------------------------------- */
input[type=text], input[type=number], input[type=search], select{ min-height:var(--gup-control-standard); }
/* button の label は native に上下中央へ揃うので、display は触らない。
   （`display` を書き換えると `display:none` で隠している control まで出てしまう） */
button{ min-height:var(--gup-control-standard); }
/* 記録バー（記録セレクタとその操作）は 1 行として中心線を揃える */
.rb-sel, .rb-btn{ min-height:var(--gup-control-standard); }
/* 単位 select は高密度側（既存の compact 契約を維持） */
.unit-sel{ min-height:var(--gup-control-compact); }
/* 表の中の入力は compact。行が積み上がるので、行の高さが読みやすさを決める。
   （element + attribute の詳細度が要る。class だけの規則では上の下地に負ける） */
table input[type=text], table input[type=number], table select{
  min-height:var(--gup-control-compact);
  padding-block:0;   /* 34px へ着地させる（36〜39px の 3 通りがあった） */
}
/* 単位 select は input としても select としても現れる */
input.unit-sel, select.unit-sel{ min-height:var(--gup-control-compact); padding-block:0; }
/* 装飾トークン（○ の印）は「操作 control」ではないので寸法契約の外に置く。
   FOUNDER-WALKTHROUGH-FIX1（W06）：④ の評価（効果・実現性・ワクワク）の丸 .vdot も同じ。
   16px 四方の印なのに button の 40px 下限が効いて **16×40 の縦長楕円**になっていた。 */
/* ⚠ ここに一時期あった .hm-link は退役した。
   card dashboard 版 HOME の文中リンクで、採用 prototype の Cockpit は使わない
   （実測：app/src の js・html で参照 0）。使わない class を例外に残すと、
   ここが「なぜ例外なのか」を説明できなくなるので消す。
   旧い説明（GUP-HOME-PROD1 Gate B）：
   見た目も役割も「文の中のリンク」であって control ではないのに、
   button の 40px 下限が効いて 1 行が 40px になっていた（実測：制約の 3 か所だけで 120px）。
   当たり判定は行の高さ（約 24px）で足りる。 */
.chip-token, .chip-token-mini, .vdot{ min-height:0; }

/* ---- Phase UI-SYSTEM1-1B2 ここまで ---- */

/* GUP-GLOBAL-SCENARIO-CONTEXT1：共有 KPI が何の数字かを言う小さな札。
   ★数字より小さく・弱く。指標の名前と競わせない。
   ★色は付けない（良し悪しの判定ではなく「何の数字か」だから）。 */
/* GUP-COLOR-FIX1（CLR-03）：この札は **暗い帯の上**に出る。
   明るい面のための secondary をそのまま置くと Air で 2.71:1 にしかならない。
   ★役割は同じ「弱い補足の文字」。surface が違うので chrome の段を使う。 */
.hkpi-scenario{
  display:inline-block;
  font-size:var(--gup-fs-note);
  color:var(--header-muted);
  border:1px solid var(--header-border);
  border-radius:var(--gup-radius-pill);
  padding:0 var(--gup-sp-2);
  line-height:var(--gup-lh-normal);
  white-space:nowrap;
  align-self:center;
}
.hkpi-scenario[hidden]{display:none;}
.header-box-scenario{
  font-size:var(--gup-fs-note);
  color:var(--header-muted);
  text-align:right;
  margin-top:var(--gup-sp-1);
}
.header-box-scenario[hidden]{display:none;}

.header-menu[open] summary{background:var(--header-control-hover);}
.menu-panel{position:absolute;right:0;top:calc(100% + 6px);z-index:80;width:260px;background:var(--white);color:var(--navy);
  border:1px solid var(--line);border-radius:var(--gup-radius-md);padding:var(--gup-sp-2);box-shadow:0 14px 34px rgba(0,0,0,.28);
  display:grid;grid-template-columns:1fr 1fr;gap:var(--gup-sp-2);}
.menu-panel .rb-btn{background:var(--surface-cream);color:var(--navy);border-color:var(--surface-cream-line);text-align:center;}
.menu-panel .rb-btn:hover{background:var(--surface-cream-hover);color:var(--navy);}
.menu-panel input[type=file]{display:none!important;}
#multiTabBanner{position:sticky;top:0;z-index:400;display:flex;align-items:center;gap:var(--gup-sp-3);
  background:var(--bad);color:var(--gup-text-inverse);padding:var(--gup-sp-3) var(--gup-sp-4);font-size:var(--gup-fs-base);line-height:var(--gup-lh-body);font-weight:var(--gup-font-weight-regular);}
/* WRITE-STOP1（5a）：保存停止の帯は #multiTabBanner と同じ役割なので同じ扱いにする。
   これまで position 指定が無く、少しスクロールしただけで停止の告知も退避ボタンも画面から消えていた。
   ボタンの見た目も同じ規則に載せる（新しい部品を作らない）。 */
#blockedBanner{position:sticky;top:0;z-index:400;}
#blockedBanner button{flex:none;border:none;border-radius:var(--gup-radius-sm);cursor:pointer;font-family:inherit;font-weight:var(--gup-font-weight-bold);}
#blockedBanner #blockedRawExport,#blockedBanner #blockedReload{background:var(--white);color:var(--bad);padding:var(--gup-sp-2) var(--gup-sp-4);}
#blockedBanner #blockedClose{background:transparent;color:var(--gup-text-inverse);font-size:var(--gup-fs-xl);padding:var(--gup-sp-2) var(--gup-sp-3);}
#multiTabBanner b{text-decoration:underline;}
#multiTabBanner button{flex:none;border:none;border-radius:var(--gup-radius-sm);cursor:pointer;font-family:inherit;font-weight:var(--gup-font-weight-bold);}
#multiTabBanner #multiTabReload{background:var(--white);color:var(--bad);padding:var(--gup-sp-2) var(--gup-sp-4);font-size:var(--gup-fs-base);}
#multiTabBanner #multiTabClose{background:transparent;color:var(--gup-text-inverse);font-size:var(--gup-fs-xl);padding:var(--gup-sp-2) var(--gup-sp-3);}
.rb-save.save-error{color:var(--header-error);font-weight:var(--gup-font-weight-bold);}
.rb-save.save-warn{color:var(--header-warn);font-weight:var(--gup-font-weight-bold);}
/* しきい値の操作行。OPQR（M率・MQ）と FMG（黒字側・赤字側の G 基準）で**役割は同じ**なので
   見た目の規則を共有する。
   ★class は分けてある。OPQR 側の markup は 1 文字も変えない契約なので、
     FMG が `.opqr-th-row` を名乗ると「OPQR のしきい値操作を複製した」と数えられてしまう
     （test-ui-mxcell-canvas1 #FD08 が実際にそう数えた）。同じ規則・別の名前にする。 */
.opqr-th-row,.fmg-th-row{display:flex;flex-wrap:wrap;gap:var(--gup-sp-4);align-items:flex-end;margin:var(--gup-sp-4) 0 var(--gup-sp-4);}
.opqr-th-row label,.fmg-th-row label{display:flex;flex-direction:column;gap:var(--gup-sp-1);font-size:var(--gup-fs-base);font-weight:var(--gup-font-weight-regular);color:var(--text-label);}
.opqr-th-text,.fmg-th-text{white-space:nowrap;}
/* UI-TYPE4：入力欄の値は 16px。20px は結論の値の段。 */
.opqr-th-row input,.fmg-th-row input{border:1px solid var(--line);border-radius:var(--gup-radius-sm);padding:var(--gup-sp-2) 10px;
  font-size:var(--gup-fs-base);font-family:inherit;width:150px;text-align:right;color:var(--navy);}
.opqr-th-row input:focus,.fmg-th-row input:focus{border-color:var(--action-accent);}
/* GUP-COLOR-FIX1（CLR-05）：自動 / 手動 は **値の出どころ**であって、良し悪しではない。
   ★good / warning の色を流用すると「手動＝注意」と読めてしまう（意味の取り違え）。
   ★白文字 × --good は 2.29〜2.45:1 でもあった。面を neutral にしてインクを本文色へ。
   ★色だけで分けない：自動＝面で塗る ／ 手動＝面を持たず枠で囲む（文字も「自動」「手動」）。
   ★枠は box-shadow の内側に置く（border だと 2px 太って余白が動く）。 */
.opqr-auto-tag,.fmg-auto-tag{font-size:var(--gup-fs-note);font-weight:var(--gup-font-weight-bold);color:var(--gup-text-primary);background:var(--gup-surface-muted);
  border-radius:var(--gup-radius-md);padding:1px var(--gup-sp-2);margin-left:var(--gup-sp-2);}
.opqr-auto-tag.manual,.fmg-auto-tag.manual{background:transparent;box-shadow:inset 0 0 0 1px var(--gup-border-strong);}
/* OPQR-MU-PRODUCT1：表示の切替と絞り込み。しきい値の行と同じ形にそろえる（新しい部品を作らない）。
   select の高さは control standard（40px）。狭い画面では折り返す。 */
/* ★:not([hidden]) を付ける。付けないと display:flex が UA の [hidden]{display:none} に勝ち、
     hidden を立てても消えない（PLAN-ROUTE1A で 3 か所塞いだのと同じ穴）。
     !important も inline style も使わず、詳細度だけで解く。 */
/* FC-UNIT-VIEW1：固定費（F）の「表示」切替も同じ役割なので、同じ contract を使う
   （見た目をそろえるために規則を書き写さない。class 名だけ画面に合わせて増やす）。 */
.opqr-view-row:not([hidden]),.gup-view-row:not([hidden]){display:flex;flex-wrap:wrap;gap:var(--gup-sp-4);align-items:flex-end;margin:0 0 var(--gup-sp-3);}
/* UI-CURRENT-PLAN-ALIGN1B：ラベルと select を縦に積まない（1 つの選択肢に 2 段は要らない）。
   狭い画面では wrap で従来どおり折り返す。 */
.opqr-view-row label:not([hidden]),.gup-view-row label:not([hidden]){display:flex;flex-direction:row;
  flex-wrap:wrap;align-items:center;gap:var(--gup-sp-2);font-size:var(--gup-fs-base);
  font-weight:var(--gup-font-weight-regular);color:var(--text-label);min-width:0;}
.opqr-view-row select,.gup-view-row select{min-height:var(--gup-control-standard);max-width:100%;font-family:inherit;
  font-size:var(--gup-fs-base);border:1px solid var(--line);border-radius:var(--gup-radius-sm);
  padding:0 var(--gup-sp-2);background:var(--input-bg);color:var(--navy);}
.opqr-view-row select:focus-visible,.gup-view-row select:focus-visible{border-color:var(--action-accent);}
/* 色＝管理単位の凡例。丸い印は小さな面積だけに色を使う（面は塗らない）。 */
.opqr-unit-legend:not([hidden]){display:flex;flex-wrap:wrap;gap:var(--gup-sp-2) var(--gup-sp-4);margin-top:var(--gup-sp-3);
  font-size:var(--gup-fs-base);color:var(--text-secondary);line-height:var(--gup-lh-body);}
.opqr-ulg{display:inline-flex;align-items:center;gap:var(--gup-sp-2);}
.opqr-ulg>i{width:12px;height:12px;border-radius:50%;flex:none;}
.opqr-ulg-note{color:var(--text-muted);}
.opqr-chart-wrap{overflow-x:auto;}
/* OPQR-LABEL1：内側に `min-width:min-content` を足した。
   ★これが無いと、狭い画面で **図の右側が切り落とされたまま、横スクロールでも届かない**。
     内側の div は親の幅（390px 画面で 317px）に収まる一方、中の SVG は min-width:420px。
     内側が overflow:hidden で 317px のまま止まるので、外側の wrap から見ると
     scrollWidth === clientWidth になり、overflow-x:auto があってもスクロール棒が出ない。
     実測（390px・⑲サンプル美容室 2027年3月期）：軸名「M率」・象限の O と Q・右端の目盛など
     7〜9 個の文字が枠の外にあり、どう操作しても読めなかった。全社商品モードでも同じ。
   ★内側を中身の幅（＝SVG の 420px）まで広げると scrollWidth が 420 になり、外側がスクロールできる。
     数字は書かない（min-content が SVG の min-width を拾う）。
   ★overflow:hidden は残す。もとの意図（SVG が枠を突き破ってページ全体を横に広げるのを防ぐ）は
     そのままで、実測でもページの横あふれは 0 のまま。 */
.opqr-chart-wrap>div{overflow:hidden;min-width:min-content;}
/* UI-NAV1: OPQR分析は details ではなく「資金効率」サブタブの通常カードになった。
   details 用の外皮（.opqr-disclosure / .opqr-body）は使わない。 */
.disc-state{font-size:var(--gup-fs-sm);color:var(--text-secondary);font-weight:var(--gup-font-weight-bold);white-space:nowrap;}
.disc-state::after{content:"開く";}
details[open] .disc-state::after{content:"閉じる";}
.opqr-move{display:inline-block;background:var(--surface-muted);border:1px solid var(--line);border-radius:var(--gup-radius-md);
  padding:var(--gup-sp-2) var(--gup-sp-3);margin:0 var(--gup-sp-2) var(--gup-sp-2) 0;font-size:var(--gup-fs-base);}
.opqr-legend{display:grid;grid-template-columns:1fr;gap:6px;margin-top:10px;
  font-size:var(--gup-fs-base);color:var(--text-secondary);line-height:var(--gup-lh-body);}
@media(min-width:760px){.opqr-legend{grid-template-columns:1fr 1fr;}}

/* ウェルカムガイド */
.welcome{position:fixed;inset:0;z-index:150;background:rgba(23,32,42,.55);
  display:flex;align-items:center;justify-content:center;padding:var(--gup-sp-5);}
.wg-inner{background:var(--white);border-radius:var(--gup-radius-md);max-width:600px;width:100%;padding:var(--gup-sp-6) var(--gup-sp-6);
  box-shadow:0 20px 60px rgba(0,0,0,.3);position:relative;max-height:90vh;overflow-y:auto;}
.wg-close{position:absolute;top:14px;right:16px;background:none;border:none;font-size:var(--gup-fs-xl);
  color:var(--text-disabled);cursor:pointer;}
.wg-close:hover{color:var(--navy);}
.wg-title{font-size:var(--gup-fs-display);font-weight:var(--gup-font-weight-bold);color:var(--navy);margin-bottom:var(--gup-sp-2);}
.wg-lead{font-size:var(--gup-fs-xl);color:var(--text-secondary);font-weight:var(--gup-font-weight-regular);line-height:var(--gup-lh-body);margin:0 0 var(--gup-sp-4);}
.wg-steps{display:flex;flex-direction:column;gap:var(--gup-sp-3);margin-bottom:var(--gup-sp-5);}
.wg-step{display:flex;gap:var(--gup-sp-3);align-items:flex-start;font-size:var(--gup-fs-xl);color:var(--navy);line-height:var(--gup-lh-normal);}
.wg-step b{color:var(--action-accent);}
.wg-num{flex:none;width:30px;height:30px;border-radius:50%;background:var(--gup-surface-inverse);color:var(--gup-text-inverse);
  display:flex;align-items:center;justify-content:center;font-weight:var(--gup-font-weight-bold);font-size:var(--gup-fs-xl);}
.wg-actions{display:flex;gap:var(--gup-sp-3);flex-wrap:wrap;margin-bottom:var(--gup-sp-4);}
.wg-link{background:none;border:none;color:var(--action-accent);font-size:var(--gup-fs-xl);font-weight:var(--gup-font-weight-bold);
  cursor:pointer;text-decoration:underline;font-family:inherit;padding:var(--gup-sp-1);}
.wg-link:hover{color:var(--action-accent-hover);}

/* 詳しい使い方ガイド */
.ug-inner{background:var(--white);border-radius:var(--gup-radius-md);max-width:820px;width:100%;max-height:88vh;
  padding:var(--gup-sp-5) var(--gup-sp-5);position:relative;box-shadow:0 20px 60px rgba(0,0,0,.3);display:flex;flex-direction:column;}
.ug-head{border-bottom:1px solid var(--line);padding-bottom:var(--gup-sp-4);margin-bottom:var(--gup-sp-4);flex:none;}
.ug-body{display:flex;gap:var(--gup-sp-4);overflow:hidden;flex:1;min-height:0;}
.ug-nav{flex:0 0 170px;display:flex;flex-direction:column;gap:var(--gup-sp-1);overflow-y:auto;}
.ug-nav button{text-align:left;background:var(--surface-cream);border:1px solid transparent;border-radius:var(--gup-radius-sm);
  padding:9px var(--gup-sp-3);font-size:var(--gup-fs-base);font-weight:var(--gup-font-weight-bold);color:var(--navy);cursor:pointer;font-family:inherit;}
.ug-nav button:hover{background:var(--surface-cream-hover);}
.ug-nav button.active{background:var(--gup-surface-inverse);color:var(--gup-text-inverse);}
.ug-content{flex:1;overflow-y:auto;padding-right:var(--gup-sp-2);font-size:var(--gup-fs-xl);line-height:var(--gup-lh-body);color:var(--text-body);}
/* V2-AB1（Phase A）：ガイドの中も 節 18px → 小見出し 16px。
   before は h3 も h4 も 20px で、階層が 1 つも見えなかった。 */
.ug-content h3{font-size:var(--gup-fs-lg);color:var(--navy);margin:0 0 var(--gup-sp-3);padding-bottom:var(--gup-sp-2);border-bottom:2px solid var(--action-accent);}
.ug-content h4{font-size:var(--gup-fs-base);color:var(--action-accent);margin:var(--gup-sp-4) 0 var(--gup-sp-2);}
.ug-content p{margin:0 0 var(--gup-sp-3);}
.ug-content ul{margin:0 0 var(--gup-sp-3);padding-left:var(--gup-sp-5);}
.ug-content li{margin-bottom:var(--gup-sp-1);}
.ug-content .tip{background:var(--panel-green-bg);border:1px solid var(--panel-green-line);border-radius:var(--gup-radius-md);padding:var(--gup-sp-3) var(--gup-sp-3);margin:var(--gup-sp-3) 0;font-size:var(--gup-fs-base);}
.ug-content .tip b{color:var(--text-success);}
.ug-content .warn{background:var(--surface-warn);border:1px solid var(--surface-warn-line);border-radius:var(--gup-radius-md);padding:var(--gup-sp-3) var(--gup-sp-3);margin:var(--gup-sp-3) 0;font-size:var(--gup-fs-base);}
.ug-content .warn b{color:var(--text-caution);}
.ug-content kbd{background:var(--surface-kbd);border:1px solid var(--input-border);border-radius:var(--gup-radius-sm);padding:1px var(--gup-sp-2);font-size:var(--gup-fs-base);font-family:inherit;}
@media(max-width:680px){
  /* カード見出し右側のコントロール(Qの切り口等)は、狭い画面では見出しの下段に落とす */
  .card h2.mqhead .mqhead-tools{margin-left:0;}
  .ug-body{flex-direction:column;overflow-y:auto;}
  .ug-nav{flex:none;flex-direction:row;flex-wrap:wrap;}
  .ug-nav button{flex:1 1 auto;font-size:var(--gup-fs-base);padding:7px 9px;}
}
.wg-btn{border:1px solid var(--line);background:var(--white);color:var(--navy);border-radius:var(--gup-radius-sm);
  padding:11px 18px;font-size:var(--gup-fs-xl);font-weight:var(--gup-font-weight-bold);font-family:inherit;cursor:pointer;}
.wg-btn:hover{border-color:var(--action-accent);}
.wg-btn.primary{background:var(--gup-surface-inverse);color:var(--gup-text-inverse);border-color:var(--navy);}
.wg-btn.primary:hover{background:var(--header-hover);}
.wg-dontshow{font-size:var(--gup-fs-base);color:var(--text-label);font-weight:var(--gup-font-weight-regular);display:flex;align-items:center;gap:var(--gup-sp-2);cursor:pointer;}

/* タブ冒頭のステップ案内バナー */
.sample-note{background:var(--surface-warn);border:1px solid var(--surface-warn-line);border-radius:var(--gup-radius-md);padding:var(--gup-sp-2) var(--gup-sp-3);
  font-size:var(--gup-fs-base);color:var(--text-warm);margin:var(--gup-sp-2) var(--gup-sp-3) var(--gup-sp-3);line-height:var(--gup-lh-body);}
.qs-steps{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--gup-sp-2);margin-top:var(--gup-sp-2);min-width:0;}
/* UI-SYSTEM1-1B3: 案内の帯の中の 3 項目。帯と地の色差で一群と分かるので枠を外す。 */
.qs-step{background:var(--white);border-radius:var(--gup-radius-md);padding:var(--gup-sp-2) var(--gup-sp-3);min-width:0;}
.qs-step b{display:block;font-size:var(--gup-fs-base);color:var(--navy);line-height:var(--gup-lh-heading);}
.qs-step span{display:block;font-size:var(--gup-fs-sm);color:var(--text-blue-deep);font-weight:var(--gup-font-weight-regular);   /* UI-TYPE5：説明は本文 */line-height:var(--gup-lh-body);margin-top:3px;}
@media(max-width:760px){.qs-steps{grid-template-columns:1fr;}}
/* UI-IA2.1: 画面の案内は「1 行の目的」までにして、本題（表）を上へ出す。
   全文は中の details に入っているので、情報は減らしていない。 */
.step-hint{display:flex;gap:var(--gup-sp-2);align-items:center;background:var(--panel-blue-bg);border:1px solid var(--panel-blue-line);
  border-radius:var(--gup-radius-md);padding:var(--gup-sp-2) var(--gup-sp-3);margin-bottom:var(--gup-sp-3);font-size:var(--gup-fs-sm);color:var(--text-blue-deep);line-height:var(--gup-lh-body);}
.step-hint .sh-icon{flex:none;font-size:var(--gup-fs-xl);}
.step-hint > div{min-width:0;flex:1 1 auto;}
.step-hint b{color:var(--action-accent);}
.step-hint .qs-step b{color:var(--navy);}
/* GUIDE1: 画面ごとのヘルプ入口。案内バナーの中に置き、閉じる（✕）の左に並べる。
   色・字送り・余白は既存 token を使い、新しいデザイン体系は作らない。 */
/* UI-TYPE4：文字のボタンは 16px。 */
.step-hint .sh-help{margin-left:auto;flex:none;cursor:pointer;color:var(--gup-action-primary);
  font-size:var(--gup-fs-base);background:none;border:1px solid var(--gup-border-default);
  border-radius:var(--gup-radius-pill);padding:var(--gup-sp-1) 10px;min-height:var(--gup-control-compact,34px);}
.step-hint .sh-help:hover{color:var(--gup-action-primary-hover);border-color:var(--text-blue-muted);}
.step-hint .sh-help + .sh-close{margin-left:6px;}
.step-hint .sh-close{margin-left:auto;flex:none;cursor:pointer;color:var(--gup-action-primary);font-size:var(--gup-fs-xl);background:none;border:none;padding:var(--gup-sp-2) 10px;margin:-8px -10px -8px auto;}
.step-hint .sh-close:hover{color:var(--bad);}
/* V2-AB1（Phase B）：面積のいちばん大きい色付きの面のひとつだった。
   案内であって状態ではないので、面は neutral、識別は枠だけにする。 */
.vf-guide{border:1px solid var(--panel-green-line);background:var(--gup-color-surface-subtle);border-radius:var(--gup-radius-md);margin:-4px 0 var(--gup-sp-4);overflow:hidden;}
.vf-guide>summary{list-style:none;cursor:pointer;display:grid;grid-template-columns:auto 1fr auto;gap:var(--gup-sp-3);align-items:center;
  padding:var(--gup-sp-2) var(--gup-sp-3);color:var(--text-blue-deep);font-size:var(--gup-fs-sm);font-weight:var(--gup-font-weight-bold);}
.vf-guide>summary::-webkit-details-marker{display:none;}
/* UI-COLOR2（実測）：これは説明のチップで、業績の良し悪しの判定ではない。
   positive の緑（--good）を使わず neutral にする（緑は有利差異・達成のためにとっておく）。 */
.vf-guide .vf-chip{background:var(--white);border:1px solid var(--gup-color-border);border-radius:var(--gup-radius-pill);color:var(--gup-color-text-secondary);
  font-size:var(--gup-fs-note);font-weight:var(--gup-font-weight-bold);padding:3px var(--gup-sp-2);white-space:nowrap;}
/* UI-TYPE4：補足は標準ウェイト（強調は中の <b> が担う）。 */
.vf-guide .vf-summary-text{line-height:var(--gup-lh-body);font-weight:var(--gup-font-weight-regular);max-width:var(--gup-measure);}
.vf-guide .vf-summary-text b{color:var(--navy);}
.vf-guide .vf-open{font-size:var(--gup-fs-note);color:var(--text-secondary);font-weight:var(--gup-font-weight-bold);white-space:nowrap;}
.vf-guide .vf-open::after{content:"例を見る";}
.vf-guide[open] .vf-open::after{content:"閉じる";}
.vf-guide-body{border-top:1px solid var(--panel-green-line);background:var(--white);padding:var(--gup-sp-3) var(--gup-sp-3) var(--gup-sp-3);}
.vf-guide-grid{display:grid;grid-template-columns:1fr 1fr;gap:var(--gup-sp-3);}
.vf-guide-col{border:1px solid var(--line-soft);border-radius:var(--gup-radius-md);background:var(--surface-soft);padding:var(--gup-sp-3);min-width:0;}
.vf-guide-col b{display:block;color:var(--navy);font-size:var(--gup-fs-sm);margin-bottom:var(--gup-sp-1);}
.vf-guide-col ul{margin:0;padding-left:var(--gup-sp-4);color:var(--text-secondary);font-size:var(--gup-fs-sm);font-weight:var(--gup-font-weight-regular);   /* UI-TYPE5：例示は本文 */line-height:var(--gup-lh-body);}
.vf-guide-note{margin:var(--gup-sp-2) 0 0;color:var(--text-blue-deep);font-size:var(--gup-fs-sm);font-weight:var(--gup-font-weight-regular);line-height:var(--gup-lh-body);}   /* UI-TYPE4：補足は標準ウェイト（強調は中の <b> が担う） */
@media(max-width:760px){.vf-guide-grid{grid-template-columns:1fr;}}
/* UI-HINT1（Founder 判断）：復帰ボタンは **見出しの右端**。専用の行を作らない
   （実測：帯 64〜89px に対して復帰行が 52px 返ってきて、閉じる意味がほとんど無かった）。
   置き方は「この画面の使い方」（.ph-help）と同じ＝見出しを flex にして margin-left:auto。 */
.hint-restore-row{display:none;justify-content:flex-end;position:relative;height:0;margin:0;overflow:visible;z-index:2;}
.hint-restore{position:absolute;top:0;right:0;
  border:1px solid var(--panel-blue-line);background:var(--panel-blue-bg);color:var(--text-blue-deep);
  border-radius:var(--gup-radius-pill);padding:6px var(--gup-sp-3);font-size:var(--gup-fs-sm);font-weight:var(--gup-font-weight-bold);cursor:pointer;font-family:inherit;}
.hint-restore[hidden]{display:none;}
/* UI-HINT2：ボタンが出ている画面だけ、重なる行の右側を空ける（新しい行は作らない）。
   幅はボタン（93px）＋余白。重なり先は実測で 2 か所だけ：
     ①③ の年度の行の右端にある 単位：千円 と、⑤ のカード見出し（単位がその h2 の中にある）。
     ②④⑥ は文字が左寄せで届かないので触らない（効かない CSS を足さない）。 */
.gup-has-restore .t1-year-context,
.gup-has-restore .panel-head,
.gup-has-restore .gup-subpanel:not([hidden]) > .card:first-of-type > h2{
  padding-right:calc(var(--gup-sp-7) * 2 + var(--gup-sp-3));   /* ボタン 93px ＋ 余白＝108px を token で表す */
}
.hint-restore:hover{border-color:var(--action-accent);color:var(--action-accent);background:var(--white);}
@media(max-width:560px){.rb-label{width:100%;}}
/* UI-IA2: 横並びの上位ナビは無くなった。左サイドナビの見た目は styles/sidenav.css。 */

/* ★KEY4 VISUAL POLISH：下の 90px は、以前 画面右下に position:fixed で置いていた
   ズームコントロールの逃げ場だった（そのコントロールは B-LAYOUT1 でヘッダへ移っている）。
   いま下端に常設で貼りつく要素は 1 つも無く（position:fixed の全 site を確認。.toast は一時表示）、
   カードと footer のあいだの空白でしかなかった。実測で 4 画面とも「下の空白」の大半がこれ。
   footer 自身が padding-top 16px を持つので、8px まで詰めても窮屈にならない（実測）。
   ★HOME は既に home.css:32 でこの余白を 0 にしている（同じ判断を業務画面へ一段だけ広げた）。 */
/* GUP-UX-WORLDCLASS1 Phase 2（UX-23）：overflow-x:hidden は main を **scroll container** にする（overflow-y が暗黙に auto）。実際に scroll するのは
   window なので、main の中の position:sticky（② の editor の［取消］［保存］）はどこにも留まらず、700px 送ると画面外へ消えていた（実測）。
   clip は「はみ出しを切るだけで scroll container にしない」ので、横スクロール抑制はそのまま・sticky が window に対して効く。 */
main{max-width:none;margin:0 auto;padding:var(--gup-sp-4) var(--gup-sp-4) var(--gup-sp-2);min-width:0;overflow-x:clip;}
/* 横スクロール抑制はここ(main)に限定する。html/bodyの両方にoverflow-x:hiddenを指定すると、
   ブラウザ仕様上overflow-yも暗黙にauto扱いになり、header{position:sticky}の固定表示が
   効かなくなる（bodyがスクロールコンテナ化してしまうため）。header/mainはbody直下の兄弟なので、
   はみ出しの原因（ツールチップ等の絶対配置要素）はmain内に閉じており、ここだけで抑制が完結する。 */
/* Excel風ズームコントロール（ヘッダの中・PCのみ）
   B-LAYOUT1（B-5）: 以前は画面右下に固定し、半透明とホバーで
   「隠れても読めなくはならない」形にしていたが、position:fixed である限り
   衝突はゼロにならない（実測：① の管理単位別 G の見出しと 51,000 の上に常駐していた）。
   ヘッダの中へ移して content の上から降ろした。機能・zoom 値・保存契約は変えない。 */
/* UI-HEADER2（Founder 判断）: 置き場所は topline の 3 列目（利益 G の右）。
   ヘッダの濃い面の上に乗るので、KPI カード（.hkpi）と同じ面・同じ枠の token を使う
   （白い箱をヘッダへ貼らない）。寸法・機能・zoom 値・保存契約は変えていない。 */
.zoom-ctrl{display:inline-flex;align-items:center;flex:none;
  background:var(--header-panel);border:1px solid var(--header-panel-line);border-radius:var(--gup-radius-sm);overflow:hidden;}
.zoom-anchor{display:inline-block;flex:none}
.zoom-ctrl.zoom-pinned{position:fixed;z-index:1}
@media(min-width:760px){.zoom-ctrl{display:inline-flex;}}
.zoom-ctrl button{flex:none;border:none;background:transparent;cursor:pointer;font-family:inherit;color:var(--gup-text-inverse);
  font-size:var(--gup-fs-base);font-weight:var(--gup-font-weight-bold);padding:var(--gup-sp-1) var(--gup-sp-3);line-height:1;
  min-height:var(--gup-control-compact);}
.zoom-ctrl button:hover{background:var(--header-panel-line);}
.zoom-ctrl #zoomPct{font-size:var(--gup-fs-sm);min-width:54px;
  border-left:1px solid var(--header-panel-line);border-right:1px solid var(--header-panel-line);}
.zoom-panel{position:fixed;z-index:80;box-sizing:border-box;width:260px;margin:0;
  padding:var(--gup-sp-3);border:1px solid var(--gup-color-border);border-radius:var(--gup-radius-sm);
  background:var(--gup-color-surface);color:var(--gup-color-text-primary);font-size:var(--gup-fs-sm);}
.zoom-panel[hidden]{display:none;}
.zoom-panel-head{display:flex;align-items:center;justify-content:space-between;gap:var(--gup-sp-2);margin-bottom:var(--gup-sp-2);}
.zoom-panel-stepper{display:grid;grid-template-columns:var(--gup-control-compact) minmax(0,1fr) var(--gup-control-compact);gap:var(--gup-sp-2);}
.zoom-panel-stepper > button{padding:0;}
.zoom-panel-value{display:flex;align-items:center;gap:var(--gup-sp-1);min-width:0;}
.zoom-panel-value input{width:100%;min-width:0;}
.zoom-panel-reset{width:100%;margin-top:var(--gup-sp-3);}
/* ===== 発表用1枚サマリー ===== */
#summaryOverlay{position:fixed;inset:0;z-index:500;background:var(--overlay-bg);overflow:auto;}
.sum-toolbar{position:sticky;top:0;z-index:10;display:flex;align-items:center;gap:var(--gup-sp-3);
  background:var(--gup-surface-inverse);color:var(--gup-text-inverse);padding:var(--gup-sp-3) var(--gup-sp-4);font-size:var(--gup-fs-base);}
.sum-toolbar button{border:none;border-radius:var(--gup-radius-sm);cursor:pointer;font-family:inherit;font-weight:var(--gup-font-weight-bold);
  font-size:var(--gup-fs-base);padding:9px var(--gup-sp-4);}
.sum-toolbar #sumPrint{background:var(--white);color:var(--navy);}
.sum-toolbar #sumClose{background:transparent;color:var(--gup-text-inverse);border:1px solid var(--overlay-line);}
.sum-page{background:var(--white);width:210mm;min-height:280mm;margin:var(--gup-sp-4) auto;padding:12mm 13mm;
  box-shadow:0 6px 24px rgba(0,0,0,.3);color:var(--navy);box-sizing:border-box;}
.sum-header{display:flex;align-items:baseline;gap:var(--gup-sp-4);border-bottom:3px solid var(--navy);padding-bottom:var(--gup-sp-2);margin-bottom:var(--gup-sp-3);}
.sum-header .t{font-size:var(--gup-fs-display);font-weight:var(--gup-font-weight-bold);}
/* GUP-HOME-PREP1 Gate C：印刷サマリーのアクセントは --gup-brand-accent。
   blue token は 60 の頃から一度も定義されておらず（参照 6・定義 0）、
   color は継承へ落ちて navy と同じ色で出ていた＝強調が効いていなかった。
   ★action ではない（印刷物に押せるものは無い）ので --gup-action-primary は使わない。 */
.sum-header .co{font-size:var(--gup-fs-xl);font-weight:var(--gup-font-weight-bold);color:var(--gup-brand-accent);}
.sum-header .meta{margin-left:auto;font-size:var(--gup-fs-note);color:var(--text-secondary);}
/* ★ここだけは「色が違う」ではなく **線ごと消えていた**。
   border-left は略記なので、未定義 var() で invalid になると property 全体が初期値
   （style:none）へ落ちる。実測 borderLeft = "0px none"。この修正で節の左マーカーが戻る。 */
.sum-h2{font-size:var(--gup-fs-base);font-weight:var(--gup-font-weight-bold);color:var(--navy);border-left:5px solid var(--gup-brand-accent);
  padding-left:var(--gup-sp-2);margin:var(--gup-sp-4) 0 var(--gup-sp-2);display:flex;align-items:center;gap:var(--gup-sp-2);}
.sum-h2-no{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;
  border-radius:50%;background:var(--gup-surface-inverse);color:var(--gup-text-inverse);font-size:var(--gup-fs-note);font-weight:var(--gup-font-weight-bold);flex:none;}
.sum-kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--gup-sp-2);margin-bottom:var(--gup-sp-2);}
.sum-kpis.c5{grid-template-columns:repeat(5,1fr);}
.sum-kpi{border:1px solid var(--line);border-radius:var(--gup-radius-md);padding:var(--gup-sp-2) var(--gup-sp-3);background:var(--surface-soft);}
.sum-kpi .l{font-size:var(--gup-fs-note);color:var(--text-secondary);font-weight:var(--gup-font-weight-bold);}
.sum-kpi .v{font-size:var(--gup-fs-display);font-weight:var(--gup-font-weight-bold);}
.sum-kpi .v.neg{color:var(--bad);}
.sum-2col{display:grid;grid-template-columns:0.85fr 1.15fr;gap:var(--gup-sp-3);align-items:start;}
.sum-page svg{width:100%;height:auto;display:block;}
/* OPQR-MU-PRODUCT1：管理単位 × 商品 で印刷したときの色の凡例（紙では色の意味がここにしか無い） */
.sum-opqr-legend{display:flex;flex-wrap:wrap;gap:var(--gup-sp-1) var(--gup-sp-3);margin-top:var(--gup-sp-2);
  font-size:var(--gup-fs-note);color:var(--text-secondary);line-height:var(--gup-lh-body);}
.sum-box .boxdia-wrap{overflow:visible;display:flex;justify-content:center;}
.sum-box .bd-right{width:500px;height:330px;}
.sum-box-sm .bd-right{width:400px;height:220px;}
.sum-move-2col{display:grid;grid-template-columns:1fr 1fr;gap:0 var(--gup-sp-4);margin-top:2px;}
.sum-strat.sm{font-size:var(--gup-fs-note);}
.sum-strat.sm th{padding:var(--gup-sp-1) var(--gup-table-cell-inline-padding);font-size:var(--gup-fs-note);}
.sum-strat.sm td{padding:var(--gup-sp-1) var(--gup-table-cell-inline-padding);line-height:var(--gup-lh-heading);}
.sum-sens-row{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--gup-sp-2);}
.sum-sens-card{border:1.6px solid var(--line);border-radius:var(--gup-radius-md);padding:var(--gup-sp-2) var(--gup-sp-2);text-align:center;}
.sum-sens-card.best{border-color:var(--navy);background:var(--surface-soft);}
.sum-sens-card .k{font-size:var(--gup-fs-note);font-weight:var(--gup-font-weight-bold);color:var(--text-secondary);display:flex;align-items:center;justify-content:center;gap:var(--gup-sp-1);}
.sum-sens-card .best-tag{background:var(--gup-surface-inverse);color:var(--gup-text-inverse);font-size:var(--gup-fs-note);font-weight:var(--gup-font-weight-bold);border-radius:var(--gup-radius-md);padding:1px var(--gup-sp-1);}
.sum-sens-card .r{font-size:var(--gup-fs-xl);font-weight:var(--gup-font-weight-bold);margin:3px 0;}
.sum-sens-card .a{font-size:var(--gup-fs-note);color:var(--text-secondary);}
.sum-sens-card.P .r{color:var(--ui-p);} .sum-sens-card.V .r{color:var(--ui-v);}
.sum-sens-card.Q .r{color:var(--ui-q);} .sum-sens-card.F .r{color:var(--ui-f);}
.sum-lever-explain{text-align:center;font-size:var(--gup-fs-sm);color:var(--navy);margin-top:var(--gup-sp-2);font-weight:var(--gup-font-weight-bold);}
.sum-swot{display:grid;grid-template-columns:repeat(2,1fr);gap:var(--gup-sp-2);}
.sum-swot-cell{border:1px solid var(--line);border-radius:var(--gup-radius-md);padding:var(--gup-sp-2) var(--gup-sp-3);background:var(--surface-soft);min-height:56px;}
.sum-swot-cell .h{font-weight:var(--gup-font-weight-bold);font-size:var(--gup-fs-note);color:var(--navy);margin-bottom:3px;}
.sum-swot-cell .b{font-size:var(--gup-fs-note);color:var(--text-secondary);line-height:var(--gup-lh-normal);white-space:pre-wrap;}
.sum-chips{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--gup-sp-2);}
.sum-chip{border:1px solid var(--line);border-radius:var(--gup-radius-md);padding:var(--gup-sp-2);font-size:var(--gup-fs-note);}
.sum-chip .h{font-weight:var(--gup-font-weight-bold);font-size:var(--gup-fs-sm);display:flex;align-items:center;gap:var(--gup-sp-1);}
.sum-chip .dots{margin:var(--gup-sp-1) 0;letter-spacing:2px;font-size:var(--gup-fs-base);}
.sum-chip .memo{color:var(--text-secondary);line-height:var(--gup-lh-normal);min-height:3em;}
.sum-strat{width:100%;border-collapse:collapse;font-size:var(--gup-fs-sm);}
.sum-strat th{color:var(--navy);border-bottom:2.5px solid var(--navy);padding:var(--gup-table-cell-block-padding) var(--gup-sp-2);text-align:left;font-size:var(--gup-fs-note);background:var(--surface-muted);}
.sum-strat td{border-bottom:1px solid var(--line);padding:var(--gup-table-cell-block-padding) var(--gup-sp-2);vertical-align:top;line-height:var(--gup-lh-normal);}
.sum-strat .no{font-weight:var(--gup-font-weight-bold);color:var(--gup-brand-accent);white-space:nowrap;}
.sum-strat .vt{text-align:center;font-weight:var(--gup-font-weight-bold);white-space:nowrap;}
.sum-g-banner{display:flex;align-items:center;justify-content:center;gap:var(--gup-sp-4);border:2px solid var(--navy);
  border-radius:var(--gup-radius-md);padding:var(--gup-sp-3);font-size:var(--gup-fs-xl);font-weight:var(--gup-font-weight-bold);margin-top:var(--gup-sp-2);background:var(--surface-soft);}
.sum-g-banner .arrow{color:var(--gup-brand-accent);font-size:var(--gup-fs-display);}
.sum-empty-note{color:var(--text-muted);font-size:var(--gup-fs-sm);}
.sum-foot{margin-top:var(--gup-sp-2);padding-top:var(--gup-sp-1);border-top:1px solid var(--line);font-size:var(--gup-fs-note);color:var(--text-muted);text-align:center;}
@media print{
  body.summary-printing{zoom:1!important;}
  body.summary-printing header, body.summary-printing nav.tabs, body.summary-printing main,
  body.summary-printing footer, body.summary-printing .recordbar, body.summary-printing .zoom-ctrl,
  body.summary-printing .print-header, body.summary-printing #multiTabBanner{display:none!important;}
  body.summary-printing #summaryOverlay{position:static!important;background:var(--white)!important;overflow:visible!important;}
  body.summary-printing .sum-page{width:auto;min-height:0;margin:0;padding:0;box-shadow:none;page-break-after:always;}
  body.summary-printing .sum-page:last-child{page-break-after:auto;}
}
.grid{display:grid;gap:var(--gup-sp-4);min-width:0;}
@media(min-width:880px){.grid.cols-2{grid-template-columns:1.4fr 1fr;}}

.card{background:var(--card);border:1px solid var(--line);border-radius:var(--gup-radius-md);padding:var(--gup-sp-4) var(--gup-sp-4) var(--gup-sp-4);min-width:0;}
/* V2-AB1（Phase A・Founder 決定）：20px は **画面の題**、18px は **節の見出し**。
   カードの見出しは節の見出しなので 18px へ下げ、画面の題（.ph-name 20px）との段を作る。
   before は画面の題もカードの見出しも 20px で、どちらが上位か読めなかった。 */
.card h2{font-size:var(--gup-fs-lg);margin:0 0 var(--gup-sp-3);letter-spacing:.04em;color:var(--navy);
  display:flex;align-items:center;gap:var(--gup-sp-2);}
.card h2 .bar{width:4px;height:14px;border-radius:2px;background:var(--bar-accent);display:inline-block;}
/* MQ会計表ヘッダー：タイトル＋右寄せツールを1行に収める */
.card h2.mqhead{flex-wrap:wrap;}
.card h2.mqhead .mqhead-tools{
  margin-left:auto;flex:none;display:inline-flex;align-items:center;gap:var(--gup-sp-2);
  white-space:nowrap;font-size:var(--gup-fs-sm);font-weight:var(--gup-font-weight-bold);color:var(--text-label);letter-spacing:normal;}
/* UI-TYPE2：選んでいる値はどのセレクトも同じ大きさ（control の標準 16px）。
   ここだけ 14px で、会社セレクト（16px）と混ざっていた。 */
.card h2.mqhead .mqhead-tools .unit-sel{padding:3px 7px;}
/* V2-AB1（Phase A）：「目標倍率」「表示単位」は control の名札。400。 */
.card h2.mqhead .mqhead-tools .mqht-lbl{font-weight:var(--gup-type-label-weight);}

table{width:100%;min-width:820px;border-collapse:collapse;font-size:var(--gup-fs-xl);}
#fcTable{min-width:0;}
#prodTable{table-layout:auto;width:100%;min-width:0;}
/* UI-TYPE2：列見出しは 12px（正本の段）。ここが 16px だったため、
   同じ「列見出し」が表によって 16px と 12px の 2 通りになっていた
   （.gup-table の 14px よりこの規則のほうが強く、共通表の見出しまで 16px にしていた）。 */
table th{text-align:left;font-weight:var(--gup-font-weight-bold);color:var(--text-label);font-size:var(--gup-fs-note);padding:var(--gup-sp-1) var(--gup-table-cell-inline-padding);
  border-bottom:1px solid var(--line);white-space:nowrap;}
/* 列幅はヘッダー(.prod-th-legend)と各データ行(.pg-row)で共通。ここを変えれば両方揃って変わる */
.prod-th-legend, .pg-row{
  /* UI-CURRENT1A: 集計列（PQ/VQ/MQ）は 7 桁＋区切り（例 1,008,852）が入る最小幅を確保する。
     ここを下回ると数字が隣のセルへ食い込むため、狭いときは表ごと横スクロールさせる（縮めない）。 */
  /* B-LAYOUT1（B-5）: 1440×900 で商品名が 180px 固定にされ、見本 3 行のうち 2 行が
     省略されていた。最小幅（180px）と数字の列は変えず、余った幅の取り分（fr）だけを
     商品名へ寄せる。breakpoint は 1 つも増やさない。 */
  /* VER1-FINAL-UIUX-MERGE-FIX1（Founder 指示）：列の並びを MQ 会計の文法へ。
     商品 | P | V | M | Q | 単位 | PQ | VQ | MQ | m率（単価 → 数量 → 金額）。
     col3/4＝P・V（派生・円）／col5＝M／col6＝Q（7 桁が切れない 96px）／col8-10＝PQ・VQ・MQ（千円）。 */
  /* UI-CURRENT-PLAN-ALIGN1D：商品名は 5fr で余った幅を全部吸っていて、数値の列が右へ遠かった。
     見本 98 種類の名前の実測（14px）で いちばん長いもの 206px なので、**212px で切れない**。
     B-5 の反省（180px 固定で名前が切れた）は、下限ではなく **実測した上限**で守る。
     ★先頭 22px（✕）を管理単位モードで畳むのは見送った。新しい変数を作ると
       UI-SYSTEM1-1A #8（token は :root だけ）と UI-CURRENT1B #57（layout.css の変数は 1 つだけ）に触れ、
       列の一覧を書き写すと「列定義は 1 か所」という上のルールを壊すため。 */
  --pg-cols: 22px minmax(160px,212px) minmax(100px,1fr) minmax(100px,1fr) minmax(92px,0.9fr) minmax(96px,1fr) 52px minmax(96px,1fr) minmax(96px,1fr) minmax(96px,1fr) minmax(66px,0.8fr);
  display:grid; grid-template-columns:var(--pg-cols); column-gap:6px; align-items:center;
}
/* UI-CURRENT-PLAN-ALIGN1D：③ の MQ会計表も、商品名の列で数値を右へ押し出さない。
   見本 98 種類の商品名の実測いちばん長いものが 206px なので、212px あれば切れない
   （B-LAYOUT1 B-5 が 180px 固定で名前を切ってしまった反省。下限は実測で決める）。 */
#t2panel-prod .mq1-table th:first-child,
#t2panel-prod .mq1-table td:first-child{width:212px;}
.prod-th-legend{padding:2px 0 6px;}
/* B-LAYOUT1（B-5）: 横スクロールの原因は数字の列ではなく、折り返せない列見出しだった
   （実測：はみ出していたのは見出し行だけで、データ行・合計行は 1123px に収まっていた）。
   見出しは 2 行になってよいので折り返しを許し、表そのものは 1440×900 に収める。 */
.pth-item{display:inline-flex;align-items:center;justify-content:center;gap:2px;font-size:var(--gup-fs-note);
  color:var(--text-label);white-space:normal;min-width:0;text-align:center;line-height:1.25;}
.pth-item .th-lbl{font-weight:var(--gup-font-weight-bold);color:var(--text-label);}
/* B-LAYOUT1（B-5）: 表の横スクロールの正体は数字の列ではなく、右端の列見出しに付く説明だった。
   説明は隠れていても絶対配置の箱として残るので、中央そろえのまま右へ 101px はみ出し、
   表全体が 1440×900 で横スクロールを要求していた（実測）。右端 2 列だけ右そろえにする。
   説明の中身・出し方（hover / tw-open）は変えない。 */
.prod-th-legend .pth-item:nth-last-child(-n+2) .tw-help::after{left:auto;right:0;transform:none;}
.pth-name-head{font-size:var(--gup-fs-note);font-weight:var(--gup-font-weight-bold);color:var(--text-label);}
/* ヘッダーの列位置（1=del,2=name,3=P,4=V,5=Q,6=M,7=PQ,8=VQ,9=MQ,10=m率） */
.pth-name-head{grid-column:2;text-align:left;justify-self:start;}
.pth-item[data-th="P"]{grid-column:3;}
.pth-item[data-th="V"]{grid-column:4;}
.pth-item[data-th="M"]{grid-column:5;}
.pth-item[data-th="Q"]{grid-column:6;}
.pth-item[data-th="unit"]{grid-column:7;}
.pth-item[data-th="PQ"]{grid-column:8;}
.pth-item[data-th="VQ"]{grid-column:9;}
.pth-item[data-th="MQ"]{grid-column:10;}
.pth-item[data-th="m"]{grid-column:11;}
table td{padding:3px var(--gup-sp-1);border-bottom:1px solid var(--line-soft);}
table input[type=text], table input[type=number]{
  width:100%;border:1px solid var(--input-border);background:var(--input-bg);border-radius:var(--gup-radius-sm);
  padding:6px 6px;font-size:var(--gup-fs-xl);color:var(--navy);font-family:inherit;}
/* 商品・サービス行：ヘッダーと同じ列幅のグリッドに、名前・P・V・Q・M・PQ・VQ・MQ・m率を1行で配置 */
#prodTable tr.prow td, #prodTable tr.other td, #prodTable tr.sum td{border-bottom:1px solid var(--line-soft);padding:var(--gup-sp-2) var(--gup-sp-1);}
.pg-del{grid-column:1;justify-self:center;}
/* B-LAYOUT1（B-5）: 商品名は省略せず読めること。幅の配分は --pg-cols の fr で行う
   （数字の列の最小幅は 1 つも下げていない）。 */
.pg-name{grid-column:2;font-size:var(--gup-fs-sm);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
/* Founder 指示（列の並び）：P・V・M ＝単価の世界 → Q・単位 → PQ・VQ・MQ ＝金額の世界。
   ★DOM の並び自体を情報順にする（CSS の order / 逆向きの grid-column で見た目だけ入れ替えない）。
   ★明細の派生セル（P 平均売価・V 平均変動費）は専用 class にした。
     .pg-pq / .pg-vq は **合計行・その他行の金額**（PQ・VQ）という別の意味で使われており、
     同じ class に 2 つの列を割り当てると合計行が壊れるため。 */
.pg-uprice{grid-column:3;}   /* 明細：P 平均売価（円） */
.pg-uvcost{grid-column:4;}   /* 明細：V 平均変動費（円） */
.pg-m{grid-column:5;}
.pg-q-wrap{grid-column:6;}
.pg-unit-wrap{grid-column:7;}
.pg-p-wrap{grid-column:8;}   /* 明細：PQ 売上（千円） */
.pg-v-wrap{grid-column:9;}   /* 明細：VQ 変動費（千円） */
.pg-pq{grid-column:8;}       /* 合計行・その他行：PQ */
.pg-vq{grid-column:9;}       /* 合計行・その他行：VQ */
.pg-mq{grid-column:10;}
.pg-mp{grid-column:11;}
.pg-row-other .pg-pq-wrap{grid-column:8;}
.pg-row-other .pg-vq-wrap{grid-column:9;}
.pg-flabel{display:block;}
.pg-flabel-txt{display:none;}
/* VER1-FINAL-UIUX-MERGE-FIX（Founder 指示）：表示専用セルの見た目。
   名前は入力欄と同じ位置に文字だけ・単位は中央の小さな文字（読み取り専用の表現）。 */
.pg-name-display{align-self:center;color:var(--text-main);}
.pg-unit-display{align-self:center;text-align:center;font-size:var(--gup-fs-sm);color:var(--text-secondary);}
.pg-input{width:100%;text-align:right;font-size:var(--gup-fs-base)!important;padding:5px 4px!important;}  /* Founder 指示：+2pt */
.pg-qunit{width:100%;border:1px solid var(--input-border);background:var(--input-bg);
  border-radius:var(--gup-radius-sm);padding:5px 2px;font-size:var(--gup-fs-note)!important;color:var(--navy);font-family:inherit;text-align:center;}
.pg-calc{font-size:var(--gup-fs-base);color:var(--navy);font-weight:var(--gup-font-weight-bold);font-variant-numeric:tabular-nums;text-align:right;  /* Founder 指示：+2pt */
  padding-right:2px;white-space:nowrap;
  /* UI-CURRENT1A: セル内で完結させる。隣のセルへ重ねない（min-width:0 が無いと grid item は縮まない） */
  min-width:0;overflow:hidden;text-overflow:ellipsis;}
.pg-calc b{font-weight:var(--gup-font-weight-bold);}
.pg-calc b.cell-neg{color:var(--outcome-negative);}
/* UI-TYPE2：ここは行の名前（商品名と同じ列）なので、表の本文と同じ 14px。
   12px は列見出しの段なので、行の中で使うと見出しに見える。 */
.prow-other-lbl{font-weight:var(--gup-font-weight-bold);color:var(--text-label);font-style:italic;font-size:var(--gup-fs-sm);text-align:left;justify-self:start;}
tr.sum .prow-other-lbl{font-style:normal;font-size:var(--gup-fs-base);color:var(--navy);}
/* UI-CURRENT1A: 合計行は本文と同じ列定義・同じ文字サイズで並べる。
   ここだけ大きくすると同じ列幅に収まらず、PQ・VQ・MQ・m率が重なって見えていた。 */
tr.sum .pg-calc{font-size:var(--gup-fs-base);}  /* Founder 指示：+2pt（明細と同じ大きさ） */
tr.sum .pg-row-sum{font-weight:var(--gup-font-weight-bold);}
@media(max-width:680px){
  .prod-th-legend, .pg-row{display:flex;flex-wrap:wrap;column-gap:10px;row-gap:var(--gup-sp-2);}
  .prod-th-legend{display:none;} /* スマホでは列見出しの代わりに各行内ラベルを表示 */
  #prodTable tr.prow td, #prodTable tr.other td, #prodTable tr.sum td{padding:var(--gup-table-cell-block-padding) var(--gup-sp-1);}
  .pg-name{flex:1 1 100%;font-size:var(--gup-fs-xl);order:1;}
  .pg-del{order:0;}
  .pg-flabel{display:flex;align-items:center;gap:var(--gup-sp-1);order:2;}
  .pg-flabel-txt{display:inline;font-weight:var(--gup-font-weight-bold);color:var(--text-label);font-size:var(--gup-fs-sm);}
  .pg-input{width:78px!important;font-size:var(--gup-fs-xl)!important;padding:6px 6px!important;}
  /* B-own-1：モバイルでも Q だけ 7 桁が切れない幅にする（他の列は据え置き） */
  .pg-q.pg-input{width:96px!important;}
  .pg-qunit{width:64px!important;font-size:var(--gup-fs-base)!important;padding:6px 4px!important;}
  .pg-m,.pg-pq,.pg-vq,.pg-mq,.pg-mp{font-size:var(--gup-fs-sm);order:3;}
  .pg-calc{font-size:var(--gup-fs-base);}
  .pg-m::before{content:"M ";font-weight:var(--gup-font-weight-bold);color:var(--text-secondary);font-size:var(--gup-fs-note);}
  .pg-pq::before{content:"PQ ";font-weight:var(--gup-font-weight-bold);color:var(--text-secondary);font-size:var(--gup-fs-note);}
  .pg-vq::before{content:"VQ ";font-weight:var(--gup-font-weight-bold);color:var(--text-secondary);font-size:var(--gup-fs-note);}
  .pg-mq::before{content:"MQ ";font-weight:var(--gup-font-weight-bold);color:var(--text-secondary);font-size:var(--gup-fs-note);}
  .pg-mp::before{content:"m率 ";font-weight:var(--gup-font-weight-bold);color:var(--text-secondary);font-size:var(--gup-fs-note);}
}
table input[type=number]{text-align:right;-moz-appearance:textfield;}
table input[type=number]::-webkit-outer-spin-button,
table input[type=number]::-webkit-inner-spin-button{-webkit-appearance:none;margin:0;}
/* コンマ表記の数値入力（P/V/Q・固定費・その他）は右寄せ。製品名(name)は左のまま */
table input[type=text][data-f="P"], table input[type=text][data-f="V"], table input[type=text][data-f="Q"],
table input[type=text][data-f="otherPQ"], table input[type=text][data-f="otherVQ"],
table input[type=text][data-ff="amount"]{text-align:right;font-variant-numeric:tabular-nums;}
table input:focus{border-color:var(--input-border-focus);background:var(--input-bg-focus);}
/* V2-AB1（Phase A）：導出値のセルも表の本文なので 400。 */
table .calc{color:var(--text-secondary);font-weight:var(--gup-font-weight-regular);text-align:right;font-variant-numeric:tabular-nums;}
/* ⑤Gup検証：PQ/MQ/F/Gの各列を①会社の現在地のMQ会計ボックス図と同じ配色に揃える。
   紺(P)・赤(M)はコントラストが強いので文字色に、黄緑(F)・山吹(G)は白背景では読みにくいため
   薄い背景＋濃紺の文字という、ボックス図と同じ「淡色は背景・濃色の文字を乗せる」考え方を踏襲する。 */

table tr.other td{color:var(--text-secondary);font-weight:var(--gup-font-weight-regular);font-style:italic;}
table tr.sum td{font-weight:var(--gup-font-weight-bold);border-top:2px solid var(--navy);border-bottom:none;}
.del{cursor:pointer;color:var(--icon-muted);font-size:var(--gup-fs-display);font-weight:var(--gup-font-weight-bold);
  background:none;border:none;padding:0;font-family:inherit;line-height:1;}
.del:hover{color:var(--bad);}
/* UI-CURRENT-DELROW1：hidden を立てても消えないのは、`.pg-del{grid-column:1}` などの
   display / grid 指定が UA の `[hidden]` に勝つため（この repo で何度か踏んでいる形）。
   `!important` を使わず、詳細度で勝つ規則を 1 つ置く。 */
.del[hidden], .pg-del[hidden]{display:none;}
/* UI-3CSIZE1：行を足すボタンも control の標準（16px）。20px だと本文より大きく見えていた。 */
.addrow{margin-top:var(--gup-sp-2);font-size:var(--gup-fs-base);background:none;border:1px dashed var(--grey);
  color:var(--navy);border-radius:var(--gup-radius-sm);padding:6px var(--gup-sp-3);cursor:pointer;}

/* ALIGN1F：hidden を立てたら消えること。display:grid は UA の [hidden] に勝つので明示する
   （PLAN-ROUTE1A で同じ穴を 3 か所塞いだのと同じ形。!important も inline style も使わない）。 */
.kpis:not([hidden]){display:grid;grid-template-columns:repeat(2,1fr);gap:var(--gup-sp-3);margin-top:var(--gup-sp-1);}
@media(min-width:560px){.kpis{grid-template-columns:repeat(4,1fr);}}
/* UI-SYSTEM1-1B3: card の中の KPI は枠を持たない（背景差でまとまりを示す）。 */
.kpi{background:var(--surface-kpi);border-radius:var(--gup-radius-md);padding:var(--gup-sp-3) var(--gup-sp-3);}
/* UI-TYPE2：ラベルは 14px。結論カードのラベル（.gup-kpi__label）と同じ段にそろえる。 */
.kpi .lbl{font-size:var(--gup-fs-sm);color:var(--text-secondary);font-weight:var(--gup-font-weight-bold);}
/* UI-TYPE6：28px の主役は 1 画面に多くても 1 つ。診断の KPI は 20px、主役だけ .kpi-hero で 28px。 */
.kpi .val{font-size:var(--gup-fs-xl);font-weight:var(--gup-font-weight-bold);font-variant-numeric:tabular-nums;margin-top:2px;}
.kpi.G .val{color:var(--ui-g-text);}
/* 値下げの逆算：値下げ率入力・必要個数増・コメントを1行にまとめる */
.disc-row{display:flex;align-items:center;gap:var(--gup-sp-4);flex-wrap:wrap;margin-top:var(--gup-sp-2);}
/* UI-TYPE4：項目名は 14px。 */
/* V2-AB1（Phase A）：「値下げ率 %」は項目名。結果（必要増）が主役。 */
.disc-field{display:flex;align-items:center;gap:var(--gup-sp-2);font-size:var(--gup-fs-sm);font-weight:var(--gup-type-label-weight);color:var(--text-label);white-space:nowrap;}
.disc-field input{width:60px;border:1px solid var(--input-border);border-radius:var(--gup-radius-sm);padding:6px var(--gup-sp-2);
  font-size:var(--gup-fs-base);font-family:inherit;color:var(--navy);background:var(--input-bg);text-align:right;}
.disc-field input:focus{border-color:var(--input-border-focus);}
.disc-result{font-size:var(--gup-fs-base);font-weight:var(--gup-font-weight-bold);color:var(--text-label);white-space:nowrap;}
.disc-result b{color:var(--navy);font-size:var(--gup-fs-xl);font-weight:var(--gup-font-weight-bold);margin-left:var(--gup-sp-1);}
.disc-note{font-size:var(--gup-fs-sm);   /* UI-TYPE4：補足は 14px */color:var(--text-warm-note);font-weight:var(--gup-font-weight-regular);flex:1 1 260px;min-width:0;line-height:var(--gup-lh-body);max-width:var(--gup-measure);}
.sens-summary-wrap{margin:var(--gup-sp-3) 0 var(--gup-sp-4);padding:var(--gup-sp-3);border:1px solid var(--line);border-radius:var(--gup-radius-md);background:var(--surface-soft);}
.sens-summary-head{display:flex;justify-content:space-between;align-items:baseline;gap:var(--gup-sp-3);flex-wrap:wrap;margin-bottom:var(--gup-sp-2);}
/* V2-AB1（Phase A）：「G を◯倍にする単独レバー」は見出しではなく説明。
   同じ行の右にある結論（.sens-summary-target）だけを 700 にして段を作る。 */
.sens-summary-title{font-size:var(--gup-fs-base);font-weight:var(--gup-font-weight-regular);color:var(--navy);}
.sens-summary-target{font-size:var(--gup-fs-base);font-weight:var(--gup-font-weight-bold);color:var(--text-secondary);}
.sens-summary{display:grid;grid-template-columns:repeat(2,1fr);gap:var(--gup-sp-2);}
@media(min-width:760px){.sens-summary{grid-template-columns:repeat(4,1fr);}}
.sens-card{appearance:none;-webkit-appearance:none;text-align:left;background:var(--white);border:1px solid var(--line);border-left:5px solid var(--navy);
  border-radius:var(--gup-radius-sm);padding:10px 11px;cursor:pointer;font-family:inherit;font-size:var(--gup-fs-sm);color:var(--navy);min-width:0;transition:transform .12s, box-shadow .12s, border-color .12s;}
/* UI-SYSTEM1-1B3: 通常の面には影を付けない（影は overlay だけ）。
   浮き上がりは transform だけで表す。 */
.sens-card:hover{transform:translateY(-1px);}
.sens-card.active{border-color:var(--navy);box-shadow:0 0 0 2px rgba(23,32,42,.12);}
.sens-card.P{border-left-color:var(--ui-p);}
.sens-card.V{border-left-color:var(--ui-v);}
.sens-card.Q{border-left-color:var(--ui-q);}
.sens-card.F{border-left-color:var(--ui-f);}
/* V2-AB1（Phase A）：カードの名札（P 売価）は 400。
   このカードの主役は下の率（.rate）で、そこだけ 700 のまま。 */
.sens-card .key{font-size:var(--gup-fs-base);font-weight:var(--gup-type-label-weight);color:var(--text-secondary);white-space:nowrap;}
/* Meiryo UI は数字がやや広いので、狭い画面では 2 列に収まるところまで縮める。
   ▲17.2% のような 6 文字が欠けないようにするための可変指定（上限は従来の 28px）。 */
/* UI-TYPE2：この 1 行は「その画面の結論の言い切り」なので、補足ではなく結論の段（20px）。 */
.lever-explain{text-align:center;margin-top:var(--gup-sp-4);font-size:var(--gup-fs-xl);color:var(--navy);}
/* UI-TYPE3：P/V/Q のカードは下で色が付く。色を持たないカード（合計など）は濃い黒。 */
.sens-card .rate{font-size:var(--gup-fs-xl);font-weight:var(--gup-font-weight-bold);   /* UI-TYPE6：選択肢は主役にしない */font-variant-numeric:tabular-nums;margin-top:3px;line-height:1.05;white-space:nowrap;color:var(--text-main);}
/* UI-TYPE4：ここは「売価を上げる」という打ち手の名前（項目名の段・14px・太字）。補足ではない。 */
.sens-card .note{font-size:var(--gup-fs-sm);font-weight:var(--gup-font-weight-regular);   /* UI-TYPE4：補足は標準ウェイト */color:var(--text-secondary);line-height:var(--gup-lh-normal);margin-top:5px;}
.sens-card.P .rate{color:var(--ui-p);}
.sens-card.V .rate{color:var(--ui-v);}
.sens-card.Q .rate{color:var(--ui-q);}
.sens-card.F .rate{color:var(--ui-f);}
/* UI-OUTCOME-KPI1（Founder 指示）：⑤ の 5 枚は ① の MQ会計の箱と同じ見え方にする。
   面は箱と同じ薄い色（.gup-kpi--mg-* が付ける）。枠は持たせない（面で区別が付くため）。
   6 枚目の F/M比率 だけは箱の 5 つではないので、従来どおり面なし・枠ありのまま。 */
.outcome-kpis{display:grid;grid-template-columns:repeat(6,1fr);gap:var(--gup-sp-3);margin:var(--gup-sp-3) 0 0;}
.outcome-kpi{background:var(--surface-kpi);border-radius:var(--gup-radius-md);padding:var(--gup-sp-3) var(--gup-sp-3);min-width:0;}
.outcome-kpi--ratio{background:var(--surface-kpi);border:1px solid var(--line);}
.outcome-kpi .l{font-size:var(--gup-fs-sm);color:var(--text-secondary);font-weight:var(--gup-font-weight-bold);}
.outcome-kpi .v{font-size:var(--gup-fs-xl);font-weight:var(--gup-font-weight-bold);   /* UI-TYPE6：箱の 6 枚は同じ大きさ。主役は 全社の Gup */font-variant-numeric:tabular-nums;margin-top:2px;}
.outcome-kpi .d{font-size:var(--gup-fs-sm);font-weight:var(--gup-font-weight-bold);color:var(--text-secondary);line-height:var(--gup-lh-normal);}
/* UI-COLOR2：素の金額は良し悪しではないので色を付けない。
   良し悪しの判定色は F/M比率（100% 超で赤）と、上の「計画は成立」の判定だけが持つ。 */
.outcome-kpi--ratio.good .v,.outcome-kpi--ratio.good .d{color:var(--good);}
.outcome-kpi--ratio.bad .v,.outcome-kpi--ratio.bad .d{color:var(--bad);}
.outcome-split{display:grid;grid-template-columns:1fr 1fr;gap:var(--gup-sp-4);margin-top:var(--gup-sp-4);}
.outcome-panel{border:1px solid var(--line);border-radius:var(--gup-radius-md);background:var(--white);padding:var(--gup-sp-4);min-width:0;}
.outcome-panel h3{font-size:var(--gup-fs-base);   /* UI-TYPE6：セクション見出しは 16px */margin:0 0 var(--gup-sp-2);color:var(--navy);}   /* UI-TYPE2：セクション見出しは 18px */
.outcome-bridge-row{display:grid;grid-template-columns:1fr auto;gap:var(--gup-sp-3);padding:var(--gup-table-cell-block-padding) 0;border-bottom:1px solid var(--line-soft);font-size:var(--gup-fs-xl);font-weight:var(--gup-font-weight-bold);}
.outcome-bridge-row .delta{font-variant-numeric:tabular-nums;white-space:nowrap;}
.outcome-bridge-row.good .delta{color:var(--good);}
.outcome-bridge-row.bad .delta{color:var(--bad);}
.outcome-note{font-size:var(--gup-fs-sm);   /* UI-TYPE4：補足は 14px */color:var(--text-secondary);line-height:var(--gup-lh-body);margin-top:var(--gup-sp-2);font-weight:var(--gup-font-weight-regular);}
.outcome-empty{border:1px dashed var(--line);border-radius:var(--gup-radius-md);padding:var(--gup-sp-4);background:var(--surface-soft);color:var(--text-secondary);font-size:var(--gup-fs-base);font-weight:var(--gup-font-weight-bold);line-height:var(--gup-lh-normal);}
.canvas-table .good{color:var(--good)!important;font-weight:var(--gup-font-weight-bold);}
.canvas-table .bad{color:var(--bad)!important;font-weight:var(--gup-font-weight-bold);}
@media(max-width:860px){
  .outcome-kpis{grid-template-columns:1fr 1fr;}
  .outcome-split{grid-template-columns:1fr;}
}
@media(max-width:560px){
  .outcome-kpis{grid-template-columns:1fr;}
}
/* UI-CURRENT1A: 「付加価値（MQ）」は MQ 会計表だけの全幅画面 */
.t1-mq-wrap{min-width:0;}
.t1-mq-wrap > .card{min-width:0;}
/* UI-CURRENT1C: 「人員・戦略（F1,F4）」＝ 会社盤 ｜ 戦略チップ の 2 枚だけ（固定費は「固定費・人員」へ） */
.t1-org-lead{margin:0 0 var(--gup-sp-4);}
/* 幅で自動的に列数が決まる（breakpoint を増やさない）。
   広い＝会社盤・戦略チップの 2 列。狭い＝1 列になり、DOM の並びがそのまま縦に積まれる。 */
/* UI-CURRENT1D: 会社盤と戦略費は左右で並ぶ 2 枚なので、面の高さをそろえる（align-items:stretch）。
   中身の量が違っても、カードの下端がそろっていた方が読みやすい。 */
.t1-org-top{display:grid;gap:var(--gup-sp-4);min-width:0;align-items:stretch;
  grid-template-columns:repeat(auto-fit,minmax(360px,1fr));}
.cf-board-single{grid-template-columns:1fr!important;}
/* UI-CURRENT1D: 人員・戦略（F1,F4）の 2 枚は高さをそろえるので、下の余白を詰めて中身を厚く見せる
   （ここだけ。ほかの画面の .card は触らない）。 */
.t1-org-top > .card{padding-bottom:var(--gup-sp-3);}
.t1-org-top .chip-grid-2x2{margin-bottom:0;}
.t1-f-note{margin-top:var(--gup-sp-2);}
.t1-grid{align-items:stretch;}
@media(min-width:1040px){
  .t1-grid.grid.cols-2{grid-template-columns:minmax(0,1.75fr) minmax(300px,.75fr);}
}
@media(min-width:880px) and (max-width:1039px){
  .t1-grid.grid.cols-2{grid-template-columns:1fr;}
}
.t1-grid > .card{height:100%;}
.t1-f-card .help{margin:-4px 0 var(--gup-sp-2);}   /* UI-TYPE2：大きさは .help の段に任せる */
/* UI-CURRENT1B: 全幅になったので見出し行を出す。列は 項目／金額／主な内訳／削除 の 4 つ。
   見出し・明細・合計は 1 つの規則で同じ列定義を共有する（3 か所へ書き分けてずれを作らない）。 */
/* 狭いときは表ごと横スクロール（列を潰して読めなくしない）。MQ会計表と同じ扱い。 */
.t1-f-scroll{overflow-x:auto;min-width:0;}
.t1-f-card #fcTable{width:100%;min-width:560px;font-size:var(--gup-fs-base);}
/* 見出し・明細・合計で列の左端をそろえるため、内側の余白（明細行の padding＋border）も同じにする。
   UI-CURRENT-PLAN-ALIGN1C：金額を左へ寄せ、主な内訳へ幅を回す。
   項目＝名前が読める最小限 ／ 金額＝数字が収まる最小限 ／ 内訳＝残り全部。
   金額の数字そのものは右揃え・等幅のまま（左揃えにはしない）。 */
.t1-f-card #fcTable thead tr,
.t1-f-card #fcTable tfoot tr,
.t1-f-card #fcTable tbody tr{display:grid;gap:var(--gup-sp-2);align-items:center;
  grid-template-columns:minmax(120px,180px) 96px minmax(220px,1fr) 28px;
  padding-inline:calc(var(--gup-sp-2) + 1px);}
.t1-f-card #fcTable thead th{text-align:left;padding:0 var(--gup-sp-2) var(--gup-sp-1);border-bottom:none;
  font-size:var(--gup-fs-note);color:var(--gup-text-muted);}   /* UI-TYPE4：列見出しは 12px */
.t1-f-card #fcTable tbody{display:flex;flex-direction:column;gap:var(--gup-sp-2);}
.t1-f-card #fcTable tbody tr{border:1px solid var(--line-soft);border-radius:var(--gup-radius-md);
  background:var(--surface-row);padding-block:var(--gup-sp-2);padding-inline:var(--gup-sp-2);}
.t1-f-card #fcTable td{border-bottom:none;padding:0;min-width:0;}
/* UI-CURRENT-PLAN-ALIGN1A：写しの金額は ③ 数値計画と同じ「読む数字」。右寄せ・等幅の数字・枠なし。 */
.t1-f-card #fcTable td.num{padding-inline:var(--gup-sp-2);text-align:right;font-variant-numeric:tabular-nums;}
.t1-f-card #fcTable thead th.num{text-align:right;}
/* 読む行では、入力欄の高さに合わせていた費目名の上下余白が要らない（行を必要以上に高くしない）。 */
.t1-f-card #fcTable.fc-read .fc-fixed-label{padding-block:0;}
/* UI-CURRENT-PLAN-ALIGN1B → 1C：内訳は **最大 2 行**（1 行で収まれば 1 行）。
   全文は「表示：費目 × 管理単位」と［固定費（F）を編集］から読める。
   区切りは費目 × 管理単位の表と同じ ／（新しい記号も新しい説明も作らない）。
   ★2 行にしても行を膨らませないため、内訳だけ行間を詰める（数字と費目名は縦中央のまま）。 */
.gup-fc-note-clamp{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;
  line-clamp:2;overflow:hidden;line-height:1.25;}
.t1-f-card #fcTable .fc-note-ro{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;
  line-clamp:2;overflow:hidden;line-height:1.25;}
.t1-f-card #fcTable .fc-note-unit{display:inline;}
.t1-f-card #fcTable .fc-note-unit + .fc-note-unit::before{content:"／";color:var(--gup-text-muted);
  margin:0 var(--gup-sp-1);}
/* UI-CURRENT-PLAN-ALIGN1C：③ の固定費表も ① と同じ読み方にそろえる。
   数字の列は中身の幅まで縮め、余った幅を「計画内容・根拠」へ回す（数字は右揃えのまま）。
   内訳は ① と同じ最大 2 行。 */
#fcSimRows table th.num,
#fcSimRows table td.num{width:1%;white-space:nowrap;}
/* ★clamp は td へ当てない（table cell の display が勝って効かない）。中の 1 枚（.gup-fc-note-clamp）へ。
   「費目 × 管理単位」など全文を読む表は別 class なので、そちらは畳まない。 */
#fcSimRows table .fc-note-ro .fc-note-unit{display:inline;}
#fcSimRows table .fc-note-ro .fc-note-unit + .fc-note-unit::before{content:"／";
  color:var(--gup-text-muted);margin:0 var(--gup-sp-1);}
/* UI-CURRENT-PLAN-ALIGN1E：① の「管理単位 × 費目」も ③ とまったく同じ規則にする。
   ③ には既にこの規則があり、① だけ金額列が中身の 2 倍以上に広がっていた（実測 1440：243px）。
   数字の列は中身の幅まで縮め、余った幅を「内容・主な内訳」へ回す。 */
#fcUnitTable table th.num,
#fcUnitTable table td.num{width:1%;white-space:nowrap;}
/* 費目の列も中身の幅まで縮める（残りは根拠へ）。ここを空けておくと数字が右端へ流れる。
   ★管理単位の見出し行（colspan）は対象外。nowrap にすると単位名の長さで表全体が広がるため。
   ★転置ビュー（.fc-item-table）は列そのものが管理単位なので、こちらの規則には入れない。 */
.fc-unit-scroll .gup-table:not(.fc-item-table) tr:not(.fc-unit-group) > th:first-child,
.vc-unit-scroll .gup-table:not(.vc-item-table) tr:not(.vc-unit-group) > th:first-child{
  width:1%;white-space:nowrap;}
/* 合計の ? は、縦スクロールする入れ物（.fc-unit-scroll）の中の tfoot にある。
   下へ開く吹き出しは入れ物のスクロール領域を伸ばしてしまうので、ここだけ上へ開かせる
   （① 集計表で同じことが起きた＝ALIGN1C。同じ直し方をそろえて当てる）。矢印も向きを返す。 */
.fc-unit-scroll .tw-help::after,
.vc-unit-scroll .tw-help::after{top:auto;bottom:calc(100% + 8px);}
.fc-unit-scroll .tw-help::before,
.vc-unit-scroll .tw-help::before{top:auto;bottom:calc(100% + 2px);
  border-bottom-color:transparent;border-top-color:var(--navy);}
/* ? は 22px の丸＋7px の当たり判定＝36px あるので、そのまま置くと合計行だけ 41→53px に伸びる
   （＝内側スクロールで隠れる行が 12px 増える）。**? を小さくせず**、この行の上下余白だけ詰めて
   もとの行の高さへ戻す（? の透明ボーダー 7px がそのまま余白の役をする）。 */
.fc-unit-scroll .gup-table tfoot tr.gup-total > th,
.vc-unit-scroll .gup-table tfoot tr.gup-total > th{padding-block:0;}
/* UI-CURRENT-PLAN-ALIGN1C：合計行の ? は、横スクロールする入れ物（.t1-f-scroll）の中にある。
   下へ開く吹き出しは入れ物の**縦スクロール領域**を伸ばしてしまい、
   中身は全部見えているのに card の中がスクロールできてしまった（実測 +225px）。
   ★ここだけ上へ開かせる（開始側へはみ出した分はスクロール領域に入らない）。矢印も向きを返す。 */
.t1-f-card #fcTable .tw-help::after{top:auto;bottom:calc(100% + 8px);}
.t1-f-card #fcTable .tw-help::before{top:auto;bottom:calc(100% + 2px);
  border-bottom-color:transparent;border-top-color:var(--navy);}
/* F/M比率 は合計 F のとなりへ（KPI カード 1 枚のために 1 行を使わない）。 */
.fc-sum-ratio{display:flex;align-items:baseline;gap:var(--gup-sp-2);padding-inline:var(--gup-sp-2);min-width:0;}
.fc-sum-rlbl{font-size:var(--gup-fs-sm);color:var(--text-secondary);white-space:nowrap;}
/* ALIGN1F：F/M比率 の見た目は ① と ③ で同じ（① だけの scope を外して共通契約にする）。 */
.fc-sum-ratio .val{font-size:var(--gup-fs-base);
  font-weight:var(--gup-font-weight-bold);font-variant-numeric:tabular-nums;}
/* ALIGN1F：③ は表なので、F/M比率 は合計行の最後のセル（根拠の列）へ入る。
   ★? は 22px の丸＋7px の当たり判定＝36px あり、そのままだと合計行だけ 41 → 53px に伸びる。
     ? を小さくせず、このセルの上下余白だけ外して 1 行の高さを保つ（合計 F 側と同じ直し方）。 */
.gup-table td.fc-sum-ratio-cell{padding-block:0;}
/* 吹き出しは上へ開かせる（下へ開くと入れ物のスクロール領域が伸びる。ALIGN1C・1E と同じ）。 */
.fc-sum-ratio-cell .tw-help::after{top:auto;bottom:calc(100% + 8px);}
.fc-sum-ratio-cell .tw-help::before{top:auto;bottom:calc(100% + 2px);
  border-bottom-color:transparent;border-top-color:var(--navy);}
.t1-f-card #fcTable input[type=text]{font-size:var(--gup-fs-base);padding:7px var(--gup-sp-2);min-width:0;}
/* UI-TYPE4：入力した値は太字にしない（金額欄も同じ）。 */
.t1-f-card #fcTable input[data-ff="amount"]{font-weight:var(--gup-font-weight-regular);}
.t1-f-card #fcTable tfoot tr{padding-block:var(--gup-sp-2);border-top:1px solid var(--line);margin-top:var(--gup-sp-2);}
/* UI-TYPE4：合計のラベルは項目名の段（14px）。 */
.fc-sum-lbl{font-size:var(--gup-fs-sm);padding-inline:var(--gup-sp-2);color:var(--navy);}
.fc-sum-val{display:block;padding-inline:var(--gup-sp-2);text-align:right;
  font-weight:var(--gup-font-weight-bold);font-variant-numeric:tabular-nums;}
/* UI-TYPE4：行の名前は項目名の段（14px）。 */
.fc-fixed-label{display:block;padding:var(--gup-sp-2) var(--gup-sp-2);font-size:var(--gup-fs-sm);color:var(--navy);}
.fc-fixed-label b{color:var(--ui-f);font-size:var(--gup-fs-sm);margin-right:var(--gup-sp-1);}
.t1-f-card .kpis{grid-template-columns:1fr!important;}
.kpi.kpi-hero .val{font-size:var(--gup-fs-display);}   /* UI-TYPE6：画面の主役の数字 */

/* 会社盤カード全体の背景を、①タブの主役であるMQ会計表・固定費（白背景）よりわずかに
   トーンを落とす。運転資金・OPQR分析の折りたたみ見出し（surface-soft）と同じ考え方で、
   「参考にする情報」であることを、目立たせすぎず、しかし気づける程度に示す。
   数値との連動がない可視化専用カードであることに合わせた扱い。 */
#companyFigureCard{background:var(--surface-soft);}

/* 会社盤：組織（左）と戦略投資4分類（右）を1枚の盤面として横に並べる。
   相馬さんの「MG会社盤はチップが物理的に置かれている」という発想を踏まえ、
   組織構造と投資構造を同じカードの中で同時に見えるようにしている。 */
.cf-board{display:grid;grid-template-columns:1fr 1fr;gap:var(--gup-sp-5);align-items:start;}
.cf-col{min-width:0;}
/* UI-ORG-ALIGN2（Founder 指示）：カード見出しと合計を 1 行にした（縦が 1 段減る）。
   合計は h2 の中の右端へ。専用の行（.cf-col-h）は廃止。
   ★UI-ORG-ALIGN1 の「左右で罫線の高さをそろえる」は、見出しの行を共有することで自然に成立する。 */
.cf-board > .cf-col > .cf-grid, .cf-board > .cf-col > .chip-grid-2x2{ margin-top:0; }
.cf-col-h-total{font-size:var(--gup-fs-sm);font-weight:var(--gup-font-weight-bold);color:var(--text-secondary);white-space:nowrap;
  margin-left:auto;}   /* UI-ORG-ALIGN2：見出しと同じ行の右端 */
/* 見出しの行を flex にして、左＝カード名／右＝合計 にする（4 枚とも同じ形） */
#companyFigureCard > h2, #strategyCostCard > h2,
#planCompanyFigureCard > h2, #planStrategyCostCard > h2{
  display:flex; align-items:baseline; gap:var(--gup-sp-2); flex-wrap:wrap;}
.cf-col-h-total b{color:var(--navy);font-size:var(--gup-fs-base);font-weight:var(--gup-font-weight-bold);}
/* UI-F1F4-TOTAL1（Founder 指示）：人数と人件費（F1）／F4 総額と内訳合計を **同じ 1 行**へ並べる。
   ★説明行は増やさない。desktop は 1 行、狭い画面では自然に折り返すだけにする
     （`white-space:nowrap` は項目の中だけに効かせ、行そのものは折り返せるようにする）。 */
.cf-col-h-total{white-space:normal;}
.cf-col-h-total .ctr-item{white-space:nowrap;}
.cf-hd-sep{margin:0 var(--gup-sp-2);color:var(--text-label);font-weight:var(--gup-font-weight-regular);}
/* UI-PLAN-BOARD-DELTA1（Founder 指示）：見出しの合計は **人員 ／ 金額 の 2 行**。
   1 行に詰めると 正社員・パート他・合計・人件費 が並んで読めないため。 */
.cf-col-h-total{display:flex;flex-direction:column;align-items:flex-end;gap:var(--gup-sp-1);}
.cf-hd-line{display:flex;flex-wrap:wrap;justify-content:flex-end;align-items:baseline;
  gap:0 var(--gup-sp-3);white-space:nowrap;}
.cf-hd-cell{white-space:nowrap;}
/* 駒はパート他だけ薄くする。**色は変えず同じ色の薄いほう**にするので、
   領域ごとの識別色（青・赤・緑）はそのまま効く（新しい色 token を作らない）。 */
.cf-box-token--part{opacity:.45;}
.cf-grid{display:grid;grid-template-columns:1fr 1fr;grid-template-rows:auto auto;gap:var(--gup-sp-3);min-width:0;}
/* UI-COMPANY-BOARD-COLOR1: 3 領域を面・枠・駒の色で見分ける。
   色は **data-company-role**（固定 slot 由来）だけで決まる。部署名の文字列は見ない。
   role が付いていない場合は従来の neutral（--surface-row / --line）へ落ちる。 */
.cf-box{background:var(--surface-row);border:1px solid var(--line);border-radius:var(--gup-radius-md);padding:var(--gup-sp-4) var(--gup-sp-4);
  display:flex;flex-direction:column;min-width:0;}
/* V2-AB1（Phase B・Founder 決定）：3 領域の識別色は残すが、**大きな面では塗らない**。
   before は 1 画面に色付きの面が 7 枚（会社盤 3 ＋ 戦略費 4）並び、通常 UI が neutral でなくなっていた。
   面は neutral のまま、識別は **枠 ＋ 役割の文字（価値（M）の創造 …）＋ 人型の色**が担う。
   ★色の割当（固定 slot mfg/sales/hq）も、役割の文字も、人数も 1 つも変えていない。 */
.cf-box[data-company-role="value"]{border-color:var(--gup-company-role-value-border);border-left:4px solid var(--gup-company-role-value);}
.cf-box[data-company-role="customer"]{border-color:var(--gup-company-role-customer-border);border-left:4px solid var(--gup-company-role-customer);}
.cf-box[data-company-role="foundation"]{border-color:var(--gup-company-role-foundation-border);border-left:4px solid var(--gup-company-role-foundation);}
.cf-box[data-company-role="value"] .cf-box-token{color:var(--gup-company-role-value);}
.cf-box[data-company-role="customer"] .cf-box-token{color:var(--gup-company-role-customer);}
.cf-box[data-company-role="foundation"] .cf-box-token{color:var(--gup-company-role-foundation);}
/* UI-COMPANY-BOARD-COLOR1: 箱に面が付いたので、名称欄は白のまま残して入力欄と分かるようにする
   （透明のままだと役割色へ埋没する）。 */
.cf-box-name{width:100%;border:none;background:var(--input-bg);font-size:var(--gup-fs-lg);font-weight:var(--gup-font-weight-bold);color:var(--navy);
  text-align:center;padding:3px var(--gup-sp-1);border-radius:var(--gup-radius-sm);margin-bottom:2px;}
.cf-box-name:focus{background:var(--input-bg-focus);}
/* 製造・販売の固定ラベル。「価値(M)の創造」「顧客(Q)の創造」という、MQ会計の言葉で
   その部門の役割を一言で刺す。編集不可の固定表示（部門名・説明文と違い、業種によっても変わらない）。 */
.cf-box-fixed-tag{text-align:center;font-size:var(--gup-fs-note);font-weight:var(--gup-font-weight-bold);color:var(--canvas-self);
  background:var(--surface-muted);border-radius:var(--gup-radius-md);padding:2px var(--gup-sp-3);margin:0 auto var(--gup-sp-2);width:fit-content;}
.cf-box-count-row{display:flex;align-items:center;justify-content:center;gap:var(--gup-sp-2);margin-bottom:var(--gup-sp-2);}
/* UI-TYPE4：入力した値は太字にしない（入力欄は 16px・標準）。 */
.cf-box-count-input, .cf-hc-in{width:56px;text-align:center;font-size:var(--gup-fs-base);font-weight:var(--gup-font-weight-regular);padding:5px 2px;
  border:1px solid var(--input-border);border-radius:var(--gup-radius-sm);}
.cf-box-count-lbl{font-size:var(--gup-fs-sm);color:var(--text-secondary);}
/* COMPANY-BOARD-HEADCOUNT2-UI1: 人員は 2〜3 桁の数字なので、欄を人数の幅に合わせる。
   製造・営業は 1 行（正社員／パート他／合計）。本社・間接は左の人員領域が狭いので縦に積む。
   ① と ③ で同じ class を使うので、Current 版と Plan 版は同じ見た目になる。 */
.cf-hc-rows{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;
  gap:var(--gup-sp-1) var(--gup-sp-2);margin-bottom:var(--gup-sp-2);}
.cf-hc-row{display:inline-flex;align-items:center;gap:var(--gup-sp-1);white-space:nowrap;}
/* UI-UNIT1 と同じ濃さの規則：入力欄の名前（正社員／パート他）は「読む文字」なので濃い黒。
   グレーにしてよいのは補足・単位・ヒントだけ（Founder 判断の 3 段）。 */
/* UI-TYPE4：入力欄に付く名前は 14px（12px は列見出しの段）。 */
.cf-hc-rows .cf-hc-lbl{font-size:var(--gup-fs-sm);color:var(--text-main);}
/* 3 桁（例 120 人）が spinner 込みで見える幅 */
.cf-hc-rows .cf-hc-in{flex:0 0 54px;width:54px;box-sizing:border-box;appearance:textfield;-moz-appearance:textfield;}
.cf-hc-rows .cf-hc-in::-webkit-outer-spin-button,
.cf-hc-rows .cf-hc-in::-webkit-inner-spin-button{appearance:none;margin:0;}
/* 合計は入力ではないので、入力の行とは別の行に置く */
.cf-hc-rows .cf-hc-total{flex:1 0 100%;justify-content:center;}
/* UI-PLAN-BOARD-DELTA1（Founder 指示）：本社・間接は
     正社員 5人（±0人） ／ パート他 0人（±0人） ／ 合計 5人（±0人）
   の **3 行ちょうど**にする。
   ★以前は「（現状＋10人）」のような長い注記があったので、列を折り返して計画メモへ
     潜り込まないようにする逃げ（max-width:calc(100% - 124px)・flex:1 0 100%）が要った。
     注記が「（±0人）」まで短くなったので、その逃げごと外して 1 行に戻す。 */
.cf-box-hq .cf-hc-rows > *{flex:0 0 auto;width:100%;box-sizing:border-box;}
.cf-box-hq .cf-hc-rows .cf-hc-total{justify-content:flex-start;flex-wrap:nowrap;
  white-space:nowrap;max-width:100%;}
.cf-box-hq .cf-hc-total .cfplan-cur{flex:0 0 auto;margin-left:0;white-space:nowrap;max-width:100%;}
.cf-hc-in{width:54px;min-width:0;}
.cf-hc-total{display:inline-flex;align-items:center;gap:var(--gup-sp-1);white-space:nowrap;}
.cf-hc-total b{font-size:var(--gup-fs-base);}
/* 本社・間接：正社員／パート他／合計 を縦に積み、自由記載へ食い込ませない */
.cf-box-hq .cf-hc-rows{flex-direction:column;align-items:flex-start;gap:var(--gup-sp-1);}
.cf-box-hq .cf-hc-rows{width:100%;max-width:100%;box-sizing:border-box;}
.cf-box-hq .cf-hc-rows .cf-hc-lbl{min-width:4.5em;}
.cf-box-tokens{display:flex;flex-wrap:wrap;gap:3px;justify-content:center;min-height:24px;margin-bottom:var(--gup-sp-2);}
.cf-box-token{font-size:var(--gup-fs-lg);line-height:1;color:var(--text-secondary);display:inline-flex;}
.cf-box-token svg{width:1em;height:1em;display:block;fill:currentColor;}
/* UI-COMPANY-BOARD-HEADCOUNT1: 人員内訳。会社盤の役割色は変えず、面の上でも読めるようにする。 */
.cf-hc-host{margin-bottom:var(--gup-sp-2);}
.cf-hc{display:flex;flex-wrap:wrap;row-gap:var(--gup-sp-1);align-items:center;justify-content:center;gap:var(--gup-sp-2);font-size:var(--gup-fs-sm);}
.cf-hc-none{color:var(--text-secondary);}
/* PLAN-COMPANY-BOARD1: 「まだ分けていません」「いまの内訳」の注記。
   数字と同じ大きさにしない（主役は 2 区分の人数）。 */
.cf-hc-note{color:var(--text-secondary);font-size:var(--gup-fs-note);}
.cf-hc-lbl{color:var(--text-main);}
.cf-hc-sep{color:var(--line);margin:0 var(--gup-sp-1);}
.cf-hc-editor{background:var(--input-bg);border:1px solid var(--line);border-radius:var(--gup-radius-sm);
  padding:var(--gup-sp-3);margin-bottom:var(--gup-sp-2);text-align:left;}
.cf-hc-row{display:flex;align-items:center;gap:var(--gup-sp-2);margin-bottom:var(--gup-sp-2);}
.cf-hc-row label{flex:none;width:5.5em;font-size:var(--gup-fs-sm);color:var(--text-label);}
.cf-hc-in{flex:1;min-width:0;min-height:var(--gup-control-standard);text-align:right;
  border:1px solid var(--input-border);border-radius:var(--gup-radius-sm);background:var(--input-bg);
  padding:0 var(--gup-sp-2);font-size:var(--gup-fs-base);color:var(--navy);}
.cf-hc-in:focus{border-color:var(--input-border-focus);background:var(--input-bg-focus);}
.cf-hc-unit{flex:none;font-size:var(--gup-fs-sm);color:var(--text-secondary);}
.cf-hc-sum{display:flex;justify-content:space-between;font-size:var(--gup-fs-sm);color:var(--text-secondary);}
.cf-hc-next b{color:var(--navy);}
/* WALKTHROUGH-HEADCOUNT1: 人員欄の拒否理由。拒否は業績の良し悪しではなく入力の誤りなので --bad。
   ここは以前 text-secondary（静かな灰色）だったが、それでは「知らせる」にならない。
   .cf-hc-err の定義はこの 1 か所だけにする（同名を 2 か所に置くと後勝ちで気づけない）。 */
.cf-hc-err{margin:var(--gup-sp-1) 0 0;font-size:var(--gup-fs-sm);color:var(--bad);line-height:var(--gup-lh-body);}
.cf-hc-err:empty{display:none;}
.cf-hc-acts{display:flex;flex-wrap:wrap;gap:var(--gup-sp-2);margin-top:var(--gup-sp-3);}
/* UI-TYPE4（Founder 指摘）：同じ画面の戦略費のメモは 16px なのに、ここだけ 14px だった。
   自由記載はどこでも 16px。 */
.cf-box-desc{width:100%;resize:vertical;font-size:var(--gup-fs-base);border:1px solid var(--input-border);border-radius:var(--gup-radius-sm);
  background:var(--input-bg);padding:var(--gup-sp-2) 9px;line-height:var(--gup-lh-normal);color:var(--navy);min-height:128px;}
.cf-box-desc:focus{border-color:var(--input-border-focus);background:var(--input-bg-focus);}
/* 本社・間接だけは、製造・販売より低めの高さで、横並び（左：人数＋駒／右：説明文）にする。
   MG会社盤において本社は現場を支える補助的存在という位置づけを、レイアウトの重みでも表現している。 */
.cf-box-hq{grid-column:1/3;}
.cf-box-hq-body{display:flex;gap:var(--gup-sp-4);align-items:stretch;}
.cf-box-hq-body > .cf-box-hq-desc{flex:1 1 auto;min-width:0;}
/* 左側(人数+駒)の幅を固定する。以前はflex:noneのみだったため、人数が増えて駒が
   折り返すたびに横幅自体が広がり、右側の説明文欄をどんどん圧迫していた。
   max-widthで頭打ちにし、駒はこの幅の中で縦に折り返すことで、説明文欄の広さを常に確保する。 */
/* UI-CURRENT1D 追補: 人数・駒・内訳が 110px に押し込まれていて、内訳のボタンが 50px まで潰れていた。
   左の列に幅を持たせ、内訳を 1 行に収める（結果として右の説明欄も 1 行ぶん低くなる）。 */
.cf-box-hq-left{flex:none;display:flex;flex-direction:column;align-items:center;justify-content:flex-start;
  gap:var(--gup-sp-1);width:236px;max-width:236px;}
/* ★min-width:0 だけでは中身がはみ出す。.cf-hc-row は nowrap（794 行）なので、
   ③ の「（±0人）」が付く行の min-content が 509px あるため。ここは折り返してよい。
   「折り返してよい」であって「折り返す」ではないので、幅が足りている ① は 1 行のまま（実測で不変）。 */
.cf-box-hq-left .cf-hc-row{white-space:normal;}
.cf-box-hq-left .cf-box-count-row{margin-bottom:0;}
.cf-box-hq-left .cf-box-tokens{margin-bottom:0;min-height:0;max-width:196px;max-height:72px;overflow-y:auto;}
.cf-box-hq-left .cf-hc-host{width:100%;margin-bottom:0;}
.cf-box-hq-left .cf-hc{justify-content:center;}
.cf-box-hq-desc{flex:1;min-height:56px;margin:0;min-width:0;}
/* 右側：戦略投資4分類（赤青黄緑）を2×2で配置。会社盤の右カラム専用グリッドで、
   ④タブの.chip-grid（4〜5列の横並び）とはあえて別クラスにしている。 */
.chip-grid-2x2{display:grid;grid-template-columns:1fr 1fr;gap:var(--gup-sp-3);min-width:0;}
.chip-grid-2x2 .chip-h{font-size:var(--gup-fs-base);}
.chip-grid-2x2 .chip-eff{font-size:var(--gup-fs-sm);margin:3px 0 var(--gup-sp-2) var(--gup-sp-5);min-height:0;}
/* UI-TYPE2：自由記載は 16px。ここだけ 14px で、同じ .threec-ta の中で 2 通りになっていた。 */
.chip-grid-2x2 .chip-ta{min-height:56px;}
@media(max-width:900px){
  .cf-board{grid-template-columns:1fr;}
  /* PHASE BA-INDUSTRY-HD1：狭い画面は縦へ流す。**breakpoint を増やさず既存 site へ相乗り**。
     内部スクロールを増やさない・横あふれ 0・本文を途中で切らない。 */
  #t5panel-industry .bi-pest-h{display:none;}
  #t5panel-industry .bi-pest-r{grid-template-columns:34px minmax(0,1fr);row-gap:var(--gup-sp-1);}
  #t5panel-industry .bi-pest-r .c3,
  #t5panel-industry .bi-pest-r .c4,
  #t5panel-industry .bi-pest-r .c5,
  #t5panel-industry .bi-pest-r .c6{grid-column:2;}
  #t5panel-industry .bi-pest-r .c2 b,
  #t5panel-industry .bi-pest-r .c2 i,
  #t5panel-industry .bi-pest-r .c3{white-space:normal;}
  #t5panel-industry .bi-f5-r{grid-template-columns:24px minmax(0,1fr) 22px 18px 26px;}
  #t5panel-industry .bi-f5-r .bi-bar{grid-column:2;grid-row:2;}
  #t5panel-industry .bi-f5-b .ev{white-space:normal;}
}
@media(max-width:640px){
  .cf-grid{grid-template-columns:1fr;}
  .cf-box-hq{grid-column:1;}
  .chip-grid-2x2{grid-template-columns:1fr;}
  .cf-box-hq-body{flex-direction:column;align-items:stretch;}
  /* 狭い画面では横並びになるので、幅の上限を外して押し込まない */
  .cf-box-hq-left{flex-direction:row;flex-wrap:wrap;justify-content:center;gap:var(--gup-sp-3);min-width:0;width:auto;max-width:none;}
  /* ★狭い画面は横幅そのものが足りないので、説明欄の下限（.t1-org-top の節）は外す。
     外さないと左の人員列が 95px まで押し込まれて中身がはみ出す（実測：③ 56px ／ ① 7px）。
     この画面幅の分岐は .t1-org-top の節より前にあるため、同じ詳細度では負ける。
     panel の class を 1 段足して勝たせる（!important は使わない）。 */
  .gup-subpanel .t1-org-top .cf-box-hq-body > .cf-box-hq-desc{min-width:0;}
}

/* UI-NAV1: 運転資金は details ではなく「資金効率」サブタブの通常カードになった。 */
/* UI-TYPE4：行の中の名前は項目名の段（14px）。金額は .field-row input が 16px を持つ。 */
.field-row{display:grid;grid-template-columns:1fr auto;gap:var(--gup-sp-3);align-items:center;padding:var(--gup-table-cell-block-padding) 0;border-bottom:1px solid var(--line-soft);font-size:var(--gup-fs-sm);}
.field-row label{color:var(--navy);}
/* UI-WCNOTE1 ／ UI-WCROW1（Founder 指示）：1 項目＝1 行。
   残高の名前 → 金額 → 内容 を左から順に並べる（DOM の並びもこの順なので読み上げも同じ）。
   区切り線は項目の下だけに置く（金額と内容のあいだには引かない）。
   ★狭い画面は flex-wrap が内容を次の行へ送るので、breakpoint を増やさずに収まる。 */
.wc-item{display:flex;flex-wrap:wrap;align-items:center;gap:0 var(--gup-sp-3);
  border-bottom:1px solid var(--line-soft);}
.wc-item .field-row{flex:1 1 300px;min-width:0;border-bottom:0;}
.wc-note-in{flex:2 1 260px;min-width:0;box-sizing:border-box;margin:0;
  border:1px solid var(--input-border);border-radius:var(--gup-radius-sm);
  padding:var(--gup-sp-2) var(--gup-sp-3);font-family:inherit;font-size:var(--gup-fs-base);
  color:var(--gup-color-text-primary);background:var(--input-bg);}
.wc-note-in::placeholder{color:var(--gup-color-text-secondary);}
/* UI-CFROW1：結論（簡易CF）を上、打ち手を下。2 列だと左が 627px しかなく 1 行に収まらなかった（実測）。 */
.cf-layout{display:block;}
/* GUP-CASHG1 Gate 3B：ここに入るのは「1 行のリード文」と「cG Cash Bridge」の 2 つだけ。
   以前の「結果ボックス ＋ 注記」を横に並べる flex はもう合わないので、縦に積む。 */
.cf-col-right{display:block;margin-bottom:var(--gup-sp-4);}
.cf-cg-lead{margin:0 0 var(--gup-sp-3);font-size:var(--gup-fs-sm);color:var(--gup-text-secondary);
  line-height:var(--gup-lh-body);max-width:var(--gup-measure);}
/* GUP-TRUTH-CLOSE2（C）：Δ日数が効かないときの理由。見出しの隣に小さく。 */
.cf-days-note{font-size:var(--gup-fs-note);font-weight:var(--gup-type-caption-weight);
  color:var(--gup-color-text-secondary);margin-inline-start:var(--gup-sp-2);}
.cf-section-lbl{font-size:var(--gup-fs-sm);   /* UI-TYPE4：項目名は 14px */font-weight:var(--gup-font-weight-bold);color:var(--text-secondary);margin:0 0 var(--gup-sp-2);line-height:var(--gup-lh-body);max-width:var(--gup-measure);}
/* UI-CFROW1（Founder 指示）：③ 簡易CF も 1 項目＝1 行。
   名前 → 現状から計画後 → 動かす日数 → 計画内容・根拠 を左から順に並べる。
   ★① 運転資金（.wc-item）と同じ文法にそろえる。狭い画面は flex-wrap が送るので breakpoint を増やさない。 */
.cf-wc-item{display:flex;flex-wrap:wrap;align-items:center;gap:var(--gup-sp-2) var(--gup-sp-3);
  border-bottom:1px solid var(--line-soft);padding:var(--gup-sp-2) 0;}
.cf-wc-name{flex:0 0 96px;color:var(--navy);font-size:var(--gup-fs-base);}
.cf-wc-now{flex:1 1 240px;min-width:0;color:var(--text-main);font-size:var(--gup-fs-base);
  font-variant-numeric:tabular-nums;}
.cf-wc-day{display:inline-flex;align-items:center;gap:var(--gup-sp-2);flex:0 0 auto;
  border:1px solid var(--line);border-radius:var(--gup-radius-sm);padding:6px var(--gup-sp-2) 6px var(--gup-sp-3);background:var(--surface-soft);}
.cf-wc-day span{font-size:var(--gup-fs-sm);font-weight:var(--gup-font-weight-bold);color:var(--navy);white-space:nowrap;}
.cf-wc-day input{width:64px;text-align:right;border:1px solid var(--input-border);background:var(--input-bg);
  border-radius:var(--gup-radius-sm);padding:5px 6px;font-size:var(--gup-fs-base);font-family:inherit;color:var(--navy);}
.cf-wc-note{flex:2 1 260px;min-width:0;box-sizing:border-box;
  border:1px solid var(--input-border);border-radius:var(--gup-radius-sm);
  padding:var(--gup-sp-2) var(--gup-sp-3);font-family:inherit;font-size:var(--gup-fs-base);
  color:var(--gup-color-text-primary);background:var(--input-bg);}
.cf-wc-note::placeholder{color:var(--gup-color-text-secondary);}
.cf-wc-item.total{border-bottom:none;}
.cf-wc-item.total .cf-wc-name, .cf-wc-item.total .cf-wc-now{font-weight:var(--gup-font-weight-bold);}
/* ===== 統一コンポーネント：「ラベル＋現状→計画後の数値」。今後この表示が必要な箇所は極力これを使う =====
   基本形（.stat-compare）：横並び・コンパクト（一覧の1行として使う）
   .block：ラベルを上・値を下に積む（単体のKPIカードとして使う）
   .lg：さらに強調（値を大きく、good/badで色分け）。.blockと組み合わせて使う想定 */
.stat-compare{display:flex;align-items:baseline;gap:var(--sp-3);}
.stat-compare .sc-label{font-size:var(--gup-fs-note);font-weight:var(--gup-font-weight-bold);color:var(--text-secondary);flex:0 0 auto;}
.stat-compare .sc-value{font-size:var(--gup-fs-sm);font-weight:var(--gup-font-weight-bold);color:var(--navy);font-variant-numeric:tabular-nums;white-space:nowrap;}
.stat-compare .sc-arrow{color:var(--text-arrow);font-weight:var(--gup-font-weight-bold);margin:0 var(--gup-sp-1);}
.stat-compare .sc-value.is-negative{color:var(--bad);}
.stat-compare.block{flex-direction:column;gap:var(--sp-1);}
.stat-compare.block .sc-value{font-size:var(--gup-fs-xl);}
.stat-compare.lg.block .sc-label{font-size:var(--gup-fs-sm);}
/* UI-COLOR2（Founder 指摘・積み残し）：素の金額は負値でも neutral。
   簡易CF の「現状 → 計画後」は業績の良し悪しの判定ではないので、緑で塗らない
   （同じ行の「現状」に色が付いていないのに「計画後」だけ緑、という非対称も解消する）。 */
.stat-compare.lg.block .sc-value{font-size:var(--gup-fs-xl);}
.stat-compare.lg.block .sc-value > span:last-child{font-size:var(--gup-fs-display);}   /* UI-TYPE6：結論は計画後の 1 つだけ */

.cf-result-box{background:var(--surface-soft);border:1px solid var(--line);border-radius:var(--gup-radius-md);padding:var(--sp-4);max-width:340px;}
@media(max-width:760px){ .cf-layout{grid-template-columns:1fr;} }
.inflation-tools{display:flex;flex-wrap:wrap;align-items:center;gap:var(--gup-sp-2);margin:-2px 0 var(--gup-sp-3);padding:var(--gup-sp-3) var(--gup-sp-3);
  background:var(--surface-warn);border:1px solid var(--surface-warn-line);border-radius:var(--gup-radius-md);}
/* UIUX-A-CRITICAL1（A-4）: display:flex が UA の [hidden] に勝つため明示する（PLAN-ROUTE1A と同じ穴） */
.inflation-tools[hidden]{display:none;}
.inflation-tools label{font-size:var(--gup-fs-base);font-weight:var(--gup-font-weight-bold);color:var(--navy);display:flex;align-items:center;gap:var(--gup-sp-2);}
.inflation-tools input{width:64px;border:1px solid var(--input-border);border-radius:var(--gup-radius-sm);padding:5px 7px;
  font-size:var(--gup-fs-base);text-align:right;color:var(--navy);background:var(--input-bg);font-family:inherit;}
.inflation-tools .inflation-btn{font-size:var(--gup-fs-base);padding:7px var(--gup-sp-3);border-color:var(--select-accent-border);color:var(--select-accent-dark);background:var(--white);}
.inflation-tools .inflation-btn.active{background:var(--select-accent-dark);color:var(--gup-text-inverse);border-color:var(--select-accent-dark);}
.inflation-hint{font-size:var(--gup-fs-sm);color:var(--select-accent-dark);font-weight:var(--gup-font-weight-bold);}
.fc-sim-row{display:flex;flex-wrap:wrap;gap:var(--gup-sp-2);align-items:center;padding:var(--gup-sp-2) 0;border-bottom:1px solid var(--line-soft);font-size:var(--gup-fs-xl);}
.fc-sim-row label{color:var(--navy);flex:1 1 100%;}
.fc-sim-row input[type=number]{width:72px;text-align:right;border:1px solid var(--line);border-radius:var(--gup-radius-sm);padding:6px var(--gup-sp-2);font-size:var(--gup-fs-xl);}
.headcount-plan{margin:-4px 0 var(--gup-sp-3) 0;border:1px solid var(--panel-blue-line);background:var(--panel-blue-bg);
  border-radius:var(--gup-radius-md);padding:2px var(--gup-sp-3) var(--gup-sp-3);}
.headcount-plan summary{cursor:pointer;padding:var(--gup-sp-2) 0;font-size:var(--gup-fs-base);font-weight:var(--gup-font-weight-bold);color:var(--canvas-self);list-style:none;}
.headcount-plan summary::-webkit-details-marker{display:none;}
/* ---------------------------------------------------------------------------
   Phase UI-SYSTEM1-1B2 — layout 側の control 寸法
   ------------------------------------------------------------------------- */

/* 商品表の入力は表の中なので compact（行が 12 行以上並ぶ）。
   既存の padding:5px 4px!important があるので、上下だけ !important で受け直す。 */
input.pg-input, input.pg-name, input.prow-name{ min-height:var(--gup-control-compact); padding-block:0!important; }
select.pg-qunit{ min-height:var(--gup-control-compact); }
/* 行を消す ✕ は icon-only。正方形のまま、当たり判定を compact へ揃える。 */
.pg-del{ min-width:var(--gup-control-compact); min-height:var(--gup-control-compact); }

/* 画面見出しの補助操作は compact（主要操作ではない） */
.step-hint .sh-help, .panel-head .ph-help{ min-height:var(--gup-control-compact); }
/* 閉じる ✕ は icon-only の正方形（41px の 1 種類だけ残っていた） */
.step-hint .sh-close{
  min-width:var(--gup-control-standard); min-height:var(--gup-control-standard);
  padding-block:0;
}
/* 行を足す操作は standard。文字が折り返したときは min-height を超えて伸びる。 */
.addrow{ min-height:var(--gup-control-standard); }
/* ① 利益感度分析 の P/V/Q/F 切替は主要操作なので standard へ着地させる */
/* ① OPQR のしきい値入力（43px の 1 通りだけ残っていた） */
#opqrMTh, #opqrMqTh{ min-height:var(--gup-control-standard); padding-block:0; }
/* ① 固定費表の入力（表の中なので compact。既存の padding:7px を受け直す） */
.t1-f-card #fcTable input[type=text]{ padding-block:0; }
/* 商品表の単位 select は、狭い画面の padding 指定が !important なので同じ強さで受け直す */
select.pg-qunit{ padding-block:0!important; }

/* ---- Phase UI-SYSTEM1-1B2 ここまで ---- */
/* card 型の選択部品（P/V/Q/F の感度カード）は「面」なので 40 / 34 へ潰さない */
.sens-card{ min-height:0; }

/* PRODUCT-YEAR2A: ① の年度コンテキスト（対象年度・対象期間・計画の起点）。
   6 タブ共通で 1 か所だけ。囲まずに、余白と文字階層で 1 行の帯として置く。 */
.t1-year-context{display:flex;flex-wrap:wrap;gap:var(--gup-sp-2) var(--gup-sp-5);
  margin:0 0 var(--gup-sp-2);padding:var(--gup-sp-1) 0;   /* UI-FOLD1：本題より上の帯は薄く */
  border-bottom:1px solid var(--line-soft);min-width:0;}
.t1-year-context .yc-item{display:flex;align-items:baseline;gap:var(--gup-sp-2);min-width:0;}
/* UI-UNIT1：金額の単位はこの行の右端に 1 か所だけ */
.t1-year-context .gup-context__unit{margin-left:auto;}
.t1-year-context .yc-k{font-size:var(--gup-fs-sm);color:var(--gup-text-muted);}
/* V2-AB1（Phase A）：対象年度・対象期間・計画の起点は**文脈**。画面の主役ではない。 */
.t1-year-context .yc-v{font-size:var(--gup-fs-base);color:var(--navy);
  font-weight:var(--gup-font-weight-regular);font-variant-numeric:tabular-nums;}

/* GUP-HOME-PREP1 Gate C：FOUNDER-WALKTHROUGH-FIX3（W09）の .cfp-* 8 規則を落とした。
   FIX4（W09 再設計）が ① の .cf-box をそのまま使う形へ置き換えており、
   生成 HTML の class に .cfp-grid / .cfp-box / .cfp-name / .cfp-count / .cfp-total /
   .cfp-arrow / .cfp-note / .cfp-help は **1 つも出ない**（実 instance 各 0）。
   未定義だった cf-role token の参照元の 1 つでもあった。

   FOUNDER-WALKTHROUGH-FIX4（W09 再設計）— ③ の会社盤（Plan mode）
   ① の .cf-box をそのまま使い、③ 固有の「現在 → 計画」の並びだけを足す。 */
/* ★役割（価値／顧客／基盤）は ① と同じ仕組みが ③ にも届いている：
     ・左の 4px の枠   … .cf-box[data-company-role=…]
     ・人型の駒の色     … .cf-box[data-company-role=…] .cf-box-token
     ・**文字**での明示 … .cf-box-fixed-tag（価値（M）の創造／顧客（Q）の創造／基盤（F）の構築）
   なので色だけが唯一の意味表現にはなっていない。
   部門名そのものは ① の .cf-box-name と同じく --navy（UI-COMPANY-BOARD-COLOR1 は
   「入力欄は白のまま・面へ埋没させない」＝名前は本文色という設計）。
   ③ だけ名前を役割色にすると ① と ③ で同じ会社盤の見え方が食い違うので、① へそろえる。 */
.cfplan-name{font-size:var(--gup-fs-base);font-weight:var(--gup-font-weight-bold);
  color:var(--navy);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
/* VER1-FINAL-UIUX-MERGE-FIX1（B-own-2）：（現状＋10人）等の補助値は主役ではないので
   note サイズにする（PLAN-COMPANY-BOARD1 の .cf-hc-note と同じ役割）。
   hq では第 2 列（人員エリアの残り幅）に収まるようになり、計画メモへ潜り込まない。 */
.cfplan-cur{font-size:var(--gup-fs-sm);color:var(--text-secondary);   /* UI-TYPE5：補足は 14px */
  font-variant-numeric:tabular-nums;white-space:nowrap;}
.cfplan-arrow{color:var(--text-arrow);font-weight:var(--gup-font-weight-regular);}
.cfplan-delta{font-size:var(--gup-fs-sm);color:var(--text-secondary);
  font-weight:var(--gup-font-weight-regular);margin-left:var(--gup-sp-2);}
.t2-org-lead{margin:0 0 var(--gup-sp-3);}

/* UI-TYPE5：本文 1 行の長さの上限。日本語は 45 字を超えると次の行頭へ目が戻れない。
   対象は読み物の本文・説明・補足だけ（表・入力欄・見出しには当てない）。 */
.wg-lead, .ug-content, .sample-note, .opqr-legend, .outcome-note,
.vf-guide-note, .qs-step span, .step-hint .sh-body{ max-width:var(--gup-measure); }

/* UI-FC-HEADBTN1（Founder 指示）：固定費の「編集」ボタンを見出しと同じ行の右端へ。
   ★MQ会計表ヘッダー（.mqhead .mqhead-tools）と同じ形をそのまま使う（新しい書き方を増やさない）。
   ★狭い画面では見出しが折り返すので、ボタンは次の行の右端に来る（潰さない）。 */
.card h2.fc-head{flex-wrap:wrap;}
.card h2.fc-head .fc-head-tools{
  margin-left:auto;flex:none;display:inline-flex;align-items:center;gap:var(--gup-sp-2);letter-spacing:normal;}

/* ===== VQ-BREAKDOWN1-1B：① 現状把握「変動費（V）」 =========================
   ★新しい色を作らない。V の色は既存の semantic（--ui-v）をそのまま使う。
   ★角丸・余白・寸法は既存 token だけ。card の radius / padding は増やさない。
   ★数字は項目名の近く・右揃え。残り幅は「主な内訳」へ回す（① 固定費と同じ作法）。 */
.t1-v-card .vc-note{color:var(--gup-text-primary);font-size:var(--gup-fs-sm);}
/* 内訳は 1 行に並べ、長ければ 2 行で畳む（① 固定費の主な内訳と同じ .gup-fc-note-clamp を使う） */
.t1-v-card .vc-note-item{display:inline;}
.t1-v-card .vc-note-item + .vc-note-item::before{content:"／";color:var(--gup-text-muted);
  margin:0 var(--gup-sp-1);}
.t1-v-card .vc-note-other{color:var(--gup-text-secondary);}
/* 数値の列は中身の幅まで縮め、残りを内訳へ（ALIGN1E で ①③ 固定費に当てたのと同じ規則） */
.t1-v-card .gup-table th.num,
.t1-v-card .gup-table td.num{width:1%;white-space:nowrap;}
.t1-v-card .gup-table tr:not(.vc-unit-group) > th:first-child{width:1%;white-space:nowrap;}
.t1-v-card .vc-empty{color:var(--gup-text-secondary);font-size:var(--gup-fs-sm);margin:var(--gup-sp-2) 0 0;}

/* 編集モード。**通常時には 1 つも出ない**（読む画面のままにする）。 */
.vc-edit-sec{margin-top:var(--gup-sp-3);}
.vc-edit-h{font-size:var(--gup-fs-sm);color:var(--gup-text-secondary);margin:0 0 var(--gup-sp-2);}
/* ★:not([hidden]) を付ける。display:flex は UA の [hidden]{display:none} に勝つので、hidden を立てても消えない（PLAN-ROUTE1A で踏んだのと同じ形）。 */
.vc-items:not([hidden]){display:flex;flex-direction:column;gap:var(--gup-sp-2);}
.vc-item-row{display:flex;align-items:center;gap:var(--gup-sp-2);}
.vc-item-row .vc-item-name{flex:1 1 auto;min-width:0;}
/* 管理単位 × 商品 の 1 枚。囲いを増やさず、上の線と余白だけで区切る。 */
/* SEMANTICS3：費目マスターは毎回いじるものではないので折りたたむ。
   ★開閉は inline disclosure だけ（modal / drawer / 別画面 / 大きな card を作らない）。 */
.vc-setup{margin-top:var(--gup-sp-3);}
.vc-setup-head{display:flex;flex-wrap:wrap;align-items:center;gap:var(--gup-sp-2);}
.vc-setup-sum{font-size:var(--gup-fs-sm);color:var(--gup-text-secondary);min-width:0;}
.vc-setup .vc-items{margin-top:var(--gup-sp-2);}
/* SEMANTICS3（追加指示）：編集は 費目 ｜ 金額 ｜ 主な内訳 を 1 行に並べる。
   「いくらか」と「何でできているか」を同じ行で完結させる（金額と離さない）。 */
.vc-amt-head{display:flex;align-items:center;gap:var(--gup-sp-2);margin-top:var(--gup-sp-2);
  font-size:var(--gup-fs-sm);color:var(--gup-text-secondary);}
.vc-amt-in-h{flex:0 0 auto;width:120px;text-align:right;}
.vc-amt-note-h{flex:1 1 auto;min-width:0;}
.vc-note-in{flex:1 1 auto;min-width:0;}
.vc-note-none{flex:1 1 auto;min-width:0;color:var(--gup-text-muted);}
.vc-cell{margin-top:var(--gup-sp-3);padding-top:var(--gup-sp-2);border-top:1px solid var(--line-soft);}
.vc-cell-head{display:flex;flex-wrap:wrap;align-items:baseline;gap:var(--gup-sp-2);
  margin-bottom:var(--gup-sp-2);}
.vc-cell-unit{font-size:var(--gup-fs-sm);color:var(--gup-text-secondary);}
.vc-cell-prod{font-weight:var(--gup-font-weight-bold);}
.vc-cell-vq{margin-left:auto;font-size:var(--gup-fs-sm);color:var(--gup-text-secondary);
  font-variant-numeric:tabular-nums;}
.vc-amt-row{display:flex;align-items:center;gap:var(--gup-sp-2);margin-top:var(--gup-sp-1);}
.vc-amt-lbl{flex:0 0 auto;min-width:120px;font-size:var(--gup-fs-sm);}
.vc-amt-in{flex:0 0 auto;width:120px;text-align:right;font-variant-numeric:tabular-nums;}
/* その他変動費は自動なので入力欄にしない（読める数字として置く） */
.vc-amt-other .vc-amt-auto{width:120px;text-align:right;font-variant-numeric:tabular-nums;
  color:var(--gup-text-secondary);}
.vc-over{color:var(--bad);font-size:var(--gup-fs-sm);margin:var(--gup-sp-1) 0 0;}
.vc-err{color:var(--bad);font-size:var(--gup-fs-sm);margin:var(--gup-sp-2) 0 0;}
.vc-actions{margin-top:var(--gup-sp-3);}

/* ===== VQ-BREAKDOWN1-1C：③ 数値計画「変動費（V）」 ======================
   ① 変動費（V）と同じ作法。③ 固有の 現状 / 計画 / 増減 / 増減率 を足すだけ。
   ★新しい色も新しい寸法も作らない（token だけ）。 */
.t2-v-card .gup-table th.num,
.t2-v-card .gup-table td.num{width:1%;white-space:nowrap;}
.t2-v-card .gup-table tr > th:first-child{width:1%;white-space:nowrap;}
.vcp-cell{margin-top:var(--gup-sp-3);}
.vcp-cell + .vcp-cell{padding-top:var(--gup-sp-2);border-top:1px solid var(--line-soft);}
.vcp-cell-head{display:flex;flex-wrap:wrap;align-items:baseline;gap:var(--gup-sp-2);
  margin-bottom:var(--gup-sp-2);}
.vcp-cell-unit{font-size:var(--gup-fs-sm);color:var(--gup-text-secondary);}
.vcp-cell-prod{font-weight:var(--gup-font-weight-bold);}
/* その他変動費は自動なので、入力できないことを文字で示す（色だけで区別しない） */
.vcp-auto{margin-left:var(--gup-sp-2);font-size:var(--gup-fs-note);color:var(--gup-text-muted);}
.t2-v-card .vcp-in{width:110px;text-align:right;font-variant-numeric:tabular-nums;}
.vcp-over{color:var(--bad);font-size:var(--gup-fs-sm);margin:var(--gup-sp-1) 0 0;}
.vcp-err{color:var(--bad);font-size:var(--gup-fs-sm);margin:var(--gup-sp-2) 0 0;}
.vcp-actions{margin-top:var(--gup-sp-3);}

/* ===== VQ-BREAKDOWN1-SEMANTICS2 ========================================
   ① の「主な内訳」（管理単位 × 商品 × 費目）と、③ の 増減理由・差額。
   ★新しい色も新しい寸法も作らない（token だけ）。 */
/* ① 通常表示：主な内訳は **その費目の金額のすぐ隣**（1 行で「費目 金額｜中身」）。
   ★行も card も増やさない。 */
/* VIEWMESH1：基本ビューの group 見出し（管理単位 ／ 商品）。
   ★編集画面の .vc-cell-head と同じ言い方（管理単位は弱く、商品を主に）。 */
/* ★区切りを CSS の content で作らない（読み上げにも検索にも乗らない）。
   編集画面の .vc-cell-head と同じく **余白で分ける**。 */
.vc-mesh-head{display:inline-flex;flex-wrap:wrap;align-items:baseline;gap:var(--gup-sp-3);}
.vc-mesh-unit{color:var(--gup-text-secondary);font-weight:var(--gup-font-weight-regular);}
.vc-mesh-prod{color:var(--gup-text-primary);}
/* VIEWMESH1：数値の内訳（下位の節をそのまま並べたもの。人の文章ではない）。
   ★F の内訳と同じ最大 2 行（.gup-fc-note-clamp）。数字は本文より弱く、名前と対で読む。 */
.vc-parts{color:var(--gup-text-secondary);font-size:var(--gup-fs-sm);}
.vc-part{display:inline;white-space:nowrap;}
/* ★区切りは **本文の文字**として置く（CSS の content にすると読み上げにも検索にも乗らない）。 */
.vc-part-sep{color:var(--gup-text-muted);margin:0 var(--gup-sp-2);}
.vc-part-v{margin-left:var(--gup-sp-1);font-variant-numeric:tabular-nums;color:var(--gup-text-primary);}
/* ③ の matrix：1 セルに 現状 → 計画 と 増減。4 列を全セルへ詰め込まない。 */
.vc-cell-cp{line-height:var(--gup-lh-compact);}
.vc-cp-line{display:block;font-variant-numeric:tabular-nums;}
.vc-cp-arrow{color:var(--gup-text-muted);margin:0 var(--gup-sp-1);}
.vc-cp-delta{display:block;font-size:var(--gup-fs-sm);color:var(--gup-text-secondary);
  font-variant-numeric:tabular-nums;}
.vc-note-what{color:var(--gup-text-secondary);}
.vc-note-what::before{content:"｜";color:var(--gup-text-muted);}
/* ③ 増減理由。数字より弱く、read では長い文が幅を壊さないように折り返す。 */
.t2-v-card .gup-table th:last-child,
.t2-v-card .gup-table td:last-child{width:auto;white-space:normal;}
.vcp-note{color:var(--gup-text-secondary);}
.t2-v-card .vcp-note-in{width:100%;min-width:0;}
/* ③ 差額。**色だけで良し悪しを決めない**（＋が悪いとは限らない）ので neutral のまま、
   一致しているときだけ弱める。 */
.vcp-target th, .vcp-target td{color:var(--gup-text-secondary);}
.vcp-gap th, .vcp-gap td{font-weight:var(--gup-font-weight-bold);}
.vcp-gap--settled th, .vcp-gap--settled td{font-weight:var(--gup-font-weight-regular);
  color:var(--gup-text-secondary);}

/* =============================================================================
   GUP-HIGH-DENSITY-UI1 — KEY4 VISUAL POLISH（① 会社盤／FMG分析／OPQR分析／運転資金）
     正本は gate/high-density-ui1/polish/FOUNDER_VISUAL_GATE2.md
     （real viewport 1440×765 の実機 headed Chrome で page scroll = 0 を確認済み）。

   ★このフェーズの原則：**scroll 0 は前提であって、ゴールではない**（Founder 判定）。
     4 画面とも収まってはいたが、下に 33〜37% の空白を残したまま主役が小さかった。
     今回は「全部を小さくする」のではなく **面積を重要度に比例して配り直す**。
     font は 1 段も縮めていない（会社盤はむしろ 3 段戻した）。

   ★★同じ instrument には同じ配分を当てる（Founder 補足：設計単位は view ではなく component）。
     ① 現状把握 と ③ 数値計画 は **同じ instrument** を「現状」と「計画」で使っている：
       会社盤   … .t1-org-top / .cf-grid / .chip-grid-2x2（HTML に 2 か所ずつしか無い＝①③ 専用）
       FMG図    … .fmg-body（#fmgCurrentBody ／ #fmgPlanBody）
       OPQR図   … .opqr-body（#opqrCard ／ #opqrSimCard の中身）
     だから #t1panel-* で scope せず、**instrument そのもの**へ当てる。
     そうしないと同じ図の配分を 2 か所に書くことになる（この repo が禁じている形）。
   ★逆に、ほかの画面と共有している class（.chip-token は ④ Gup戦略でも使う）は
     .t1-org-top の下へ限定する。「見た目が同じでも役割が違うなら分ける」（CLAUDE.md §8）。
   ★運転資金（#t1panel-cash）だけは ③ に対応する画面が無いので id scope のまま。
   ★font-size・control 高さは token を通す（DESIGN.md §5.1 の 12 段 density scale）。
   ============================================================================= */
/* ======== ① 会社盤 ======== */
/* =============================================================================
   ① 会社盤（t1:org）— GUP-HIGH-DENSITY-UI1 VISUAL POLISH
   layout.css の「---- ① 会社盤：3列 cf-grid ----」ブロックを **丸ごと置き換える**。

   ★実測でわかった一番大事なこと：画面下の 236px は「空き」ではない。
       main の padding-bottom 90px ＋ footer 90px ＋ viewport の余り 12px ＝ 192px
     が入っている。触ってよいのは main の 90px だけで、それを 8px まで詰めて
     **82px** を会社盤へ返す。残りは footer（利用規約・バージョン）なので削らない。
     → だから「カードを canvas の 80〜90% まで」は footer を画面外へ出さない限り成立しない。
       実測した上限は **カード 514px（canvas の 78.6%）**。

   ★形は正式へ戻す：製造・営業＝上の価値創造層 ／ 本社・間接＝下の共通基盤層。
     Key4 の 3 列は「3 部門が同格」に見えてしまうので採らない。
   ============================================================================= */

/* ---- 0. 死んだ余白を返す ----
   main{padding:16px 16px 90px}（layout.css）の下 90px は、B-LAYOUT1 で
   画面右下の固定ズームコントロールをヘッダへ移したあとの名残で、いまはカードと
   footer のあいだの空白でしかない。footer 自身が padding-top 16px を持つので、
   8px まで詰めても footer は窮屈にならない（実測：カード下端から本文まで 36px）。
   ★hidden の panel は display:none なので、この margin は会社盤を見ているときだけ効く。 */

/* ---- 1. 構造：3列 → 正式の 2列 ＋ 本社・間接は全幅の下段 ---- */
.t1-org-top .cf-grid{ grid-template-columns:1fr 1fr; gap:var(--gup-sp-2); }
.t1-org-top .cf-box-hq{ grid-column:1 / 3; }
/* 全幅に戻ったので、本社・間接は 左＝人員／右＝説明 の横並び（既定の形）へ。 */
/* ★③ 数値計画の本社・間接は人数に「（±0人）」の差分が付くので ① より横に広い。
   縮められるようにしないと、はみ出しが入れ子の 6 階層へ伝播する（実測：切れ 22→28）。
   ★折り返し（flex-wrap）は不採用：横は収まるが縦が 77px 伸びて ③ が scroll に戻る（実測）。
   左の人員列を「縮んでよい」にして、1 行のまま収める。 */
.t1-org-top .cf-box-hq-body{ flex-direction:row; gap:var(--gup-sp-4); }
.t1-org-top .cf-box-hq-body > *{ min-width:0; }
/* 人員は 正社員／パート他／合計 を 1 行に置く（縦積み 3 行で 36px 使っていた）。
   ★.cf-hc-lbl{min-width:4.5em} は縦積みで左端をそろえるための指定なので、
     横並びでは幅を食うだけ。ここだけ外さないと 360px あっても 2 行のままになる（実測）。 */
.t1-org-top .cf-box-hq .cf-hc-rows{ flex-direction:row; flex-wrap:wrap; align-items:center; }
.t1-org-top .cf-box-hq .cf-hc-rows > *{ width:auto; }
.t1-org-top .cf-box-hq .cf-hc-rows .cf-hc-total{ flex:0 0 auto; }
.t1-org-top .cf-box-hq .cf-hc-rows .cf-hc-lbl{ min-width:0; }
/* 左の列は中身ぶんの幅にして、余った横幅は説明欄へ渡す（固定 236px だと説明欄が痩せる）。 */
.t1-org-top .cf-box-hq-left{ flex:0 1 auto; min-width:0; flex-direction:column; flex-wrap:nowrap;
  align-items:flex-start; width:auto; max-width:none; }
/* ★説明欄の下限（Founder 決定 ＝ 案 A）。左の人員列は width:auto なので「中身ぶんの幅」になる。
   ① はそれで 287px に収まるが、③ は人数に「（±0人）」の差分が付くぶん min-content が 509px あり、
   545 − 509 − 16 ＝ 20px しか説明欄に残らない（実測。スクロールバーの幅だけで、1 文字も読めない）。
   ★直前の行の min-width:0（＝縮んでよい）とこの下限が対になって初めて取り分が決まる。
     下限を base 側（.cf-box-hq-body > .cf-box-hq-desc）へ書くと、同じ詳細度で
     あとに出る .t1-org-top .cf-box-hq-body > *{min-width:0} に負けるので、ここへ置く。
   ★1 行に収める指定（.cf-hc-row の nowrap）は base 側で外してある。
     「折り返してよい」であって「折り返す」ではないので、幅が足りている ① は 1 行のまま。 */
.t1-org-top .cf-box-hq-body > .cf-box-hq-desc{ min-width:220px; }

/* ---- 2. 余白：Key4 が 2px まで潰していた段を 4〜12px へ戻す ---- */
.t1-org-top > .card{ padding:6px var(--gup-sp-2) var(--gup-sp-2); }
.t1-org-top > .card > h2{ margin-bottom:2px; column-gap:var(--gup-sp-1); }
/* ★.gup-subpanel > * + * が margin-top:16px を持つ（詳細度 0,1,1）。
   instrument へ寄せる前は #t1panel-org … で勝っていたが、id を外すと負ける。
   同じ詳細度で「panel の直下にある盤」と言い直して勝たせる（!important は使わない）。 */
.gup-subpanel > .t1-org-top{ gap:var(--gup-sp-3); margin-top:0; }
.t1-org-top .cf-box{ padding:6px; }
/* 部門名は 18px のまま、行送りだけ詰めて control の compact tier（34px）へ。
   40px → 34px で 上下 2 段ぶん 12px 返る。34px 未満にはしない。 */
.t1-org-top .cf-box-name{ min-height:var(--gup-control-compact); line-height:1.25;
  padding:2px var(--gup-sp-1); }
.t1-org-top .cf-box-fixed-tag{ margin:0 auto 2px; }
.t1-org-top .cf-hc-rows{ gap:2px var(--gup-sp-2); margin-bottom:2px; }
/* 合計行は 1 行なのに行送りが 1.5 で 32px あった。詰めても文字は 1px も小さくならない。 */
.t1-org-top .cf-hc-total{ margin-bottom:0; line-height:1.2; }
.t1-org-top .cf-box-tokens{ margin-bottom:2px; min-height:0; gap:2px; }

/* ---- 3. 文字：Key4 が縮めていた段を既定へ戻す ---- */
/* ★Founder 指示：記述のマスを増やす。実測で 会社盤カードの h2 が 57px あり、
   人件費（F1）の行（263×52）が 2 行に折れているのが原因だった。14px ＋ 折り返さないで 1 行へ。
   ここは「補足の集計」なので、記述欄（16px）の読みやすさとは競合しない。 */
/* ★実測：.cf-col-h-total は既定で flex の **縦積み**（layout.css:795）なので、
   「人件費（F1）120,000千円」と「正社員 20人 パート他 13人 合計 33人」が 2 段になり、
   カード見出しが ① 57px ／ ③ 96px になっていた。横は 475px あるので 1 行に並ぶ。
   ★文字は縮めない（14px のまま）。並べ方だけを変える。 */
.t1-org-top .cf-col-h-total{
  font-size:var(--gup-fs-sm); white-space:nowrap;
  flex-direction:row; flex-wrap:wrap; align-items:center;
  gap:2px var(--gup-sp-3); line-height:1.2;
}
.t1-org-top > .card > h2{ flex-wrap:nowrap; }
/* 人員のまとめ行も補足。入力欄の高さ（34px）は 1px も触らない。 */
.t1-org-top .cf-hc-total b{ font-size:var(--gup-fs-sm); }
.t1-org-top .chip-h{ font-size:var(--gup-fs-sm2); line-height:1.2; }
.t1-org-top .chip-eff{ font-size:var(--gup-fs-xs); line-height:1.2;
  margin:2px 0 2px var(--gup-sp-4); }
.t1-org-top .chip-amt-lbl{ font-size:var(--gup-fs-xs); }
.t1-org-top .chip-cell{ padding:6px var(--gup-sp-2); }
.t1-org-top .chip-tokens{ margin:0 0 2px; gap:2px; }
.t1-org-top .chip-amt-row{ margin:0 0 2px; gap:var(--gup-sp-2); }
.t1-org-top .chip-grid-2x2{ gap:6px; }
/* 投資額合計だけは 13px のまま。14px にすると見出しが 2 行へ折り返して 32px 取られ、
   そのぶんチップのメモが 1 行ぶん減る（実測）。合計は補足なので、メモを優先する。 */
.t1-org-top #chipTotalRow{ font-size:var(--gup-fs-xs); }

/* ---- 4. 戦略チップの印を小さくして、そのぶんメモへ回す（Founder 指示）----
   .chip-token は「枚数を示す印」であって触れる部品ではない（UI-SYSTEM1-1B2 の正式な例外で、
   walkthrough-fix1 が .chip-token{min-height:0} を pin している）。だから 34px の下限は当たらない。
   26px にすると 1 チップあたり 8px がメモへ回る。 */
.t1-org-top .chip-token{ width:26px; height:26px; }

/* ---- 5. 返ってきた縦を「自由記載」へ渡す ----
   カードは .t1-org-top（align-items:stretch）で高さがそろうので、flex chain を
   通しておけば、余りは textarea だけが受け取る（見出しや余白は太らない）。
   ★.cf-board は align-items:start（既定）なので、ここだけ stretch へ。 */
.t1-org-top > .card{ display:flex; flex-direction:column; }
.t1-org-top > .card > .cf-board{ flex:1 1 auto; min-height:0; align-items:stretch; }
.t1-org-top .cf-board > .cf-col{ display:flex; flex-direction:column; min-height:0; }
.t1-org-top .cf-col > .cf-grid,
.t1-org-top .cf-col > .chip-grid-2x2{ flex:1 1 auto; min-height:0; }
.t1-org-top .chip-grid-2x2{ grid-template-rows:1fr 1fr; }
.t1-org-top .chip-cell{ display:flex; flex-direction:column; min-height:0; }
/* Key4 は 34px（16px の文字が 1 行も入らず、書いた内容が読めない）だった。 */
.t1-org-top .cf-box-desc{ height:auto; min-height:52px; flex:1 1 0; }
.t1-org-top .cf-box-hq-body{ flex:1 1 auto; min-height:0; }
.t1-org-top .cf-box-hq-desc{ min-height:52px; }
.t1-org-top .chip-cell .threec-ta{ height:auto; min-height:44px; flex:1 1 0; }

/* ---- 6. 記録によって余る縦も使い切る ----
   実測：駒の行数が会社ごとに違うので、カードは 476〜500px と 24px ばらつき、
   軽い会社（⑨建設・㉒IT開発）は下に空白が残っていた。
   下限を「いまの viewport でちょうど収まる高さ」にすると、どの会社でも同じ面積を使い、
   余りは textarea だけが受け取る（実測：⑨建設 のメモ 52 → 67px）。
     184px = panel の上端 149 ＋ カードの下 margin と main の下余白 8 ＋ footer 22 ＋ 予備 5
     （footer は Founder 指示で 90 → 22px へ詰めた。空いた 68px はこの下限を通して主役へ渡る）
   ★min-height なので、内容がこれより多いときは何も起きない。
     1440×900 では 641px まで伸び、1280×765／1024×765／900×765 では
     この行が有る／無いで **完全に同じ結果**（＝スクロールを 1px も増やさない）と実測。 */
/* ★instrument の配分（列・余白・文字）は ①③ 共通。ここだけ画面ごとに数が違うのは、
   **設計が違うからではなく、盤の上下にある app chrome の量が違うから**：
     ① 現状把握 … 盤の上端 149px ／ 下は main の余白 8 ＋ footer 22
     ③ 数値計画 … 盤の上端 161px（画面名の行に「計画」バッジと ← 現在を見る が入る）
                   ＋ 下に「CSVで出力／印刷」の行 56px がある
   どちらも意味は同じ「viewport の下端まで使い、余りは記述欄へ渡す」。 */
#t1panel-org .t1-org-top{ min-height:calc(100vh - 184px); }
#t2panel-invest .t1-org-top{ min-height:calc(100vh - 252px); }


/* ======== ① FMG分析 ======== */
/* =============================================================================
   GUP-HIGH-DENSITY-UI1 POLISH — ① FMG分析（t1:fmg）
     「収まった」で終わりにせず、空いていた面積を主図（FMGポジショニング図）へ回す。
     実測（1440×765 / theme=digital / ①食品製造 2027年3月期）：
       before  主図 622×311（panel 幅の 53.8%）／ 右の一覧は 820px 固定で 3 列が隠れていた
       after   主図 838×419（panel 幅の 72.4%・面積 26.6% → 47.2%）／ 5 列すべて見える・横スクロール 0
              ※ 上の after は「rail の列見出しを短くする renderer 1 行」（dom/fmg-final.js）と
                セットの値。CSS だけを入れた場合は 783×392（67.7%）で、5 列は見えるが
                見出しが 3 か所で単語の途中で折れる。理由は fmg-REPORT.md §3。

   ★物理制約：.fmg-svg は viewBox 720×360 の 2:1 を width:100%;height:auto で追従するだけ。
     縦を大きくする手段は「横を広げる」ことしかない（viewBox は business logic なので触らない）。
   ★もう 1 つの制約：docH は baseline で既に 765 ちょうど（main の padding-bottom 90px ＋
     footer が下を埋めている）。つまり縦の余白は「余っている」のではなく「使われていた」。
     主図を大きくするには、その死に余白をこの画面のときだけ主図へ回す必要がある（§3）。
   ============================================================================= */

/* ---- 1) 右の一覧を compact support rail にする ------------------------------
   ★最重要：layout.css の global `table{min-width:820px}` が、この一覧にも当たっていた。
     493px の列の中で表が 820px に固定され、G と FMGポジション が横スクロールの
     向こうに隠れていた（実測。screenshot でも「F（固定」で切れている）。
     rail は 300px 前後で使うので、この 1 行がないと何をしても列が隠れる。 */
table.fmg-table{ min-width:0; }
/* 図の上端と表の上端をそろえる（.fmg-scroll の既定 margin-top:12px を外す）。 */
.fmg-body .fmg-scroll{ margin-top:0; }
/* 主図より存在感を持たせない：本文 12px（12px が下限。これ未満は作らない）。 */
table.fmg-table td,
table.fmg-table th{
  font-size:var(--gup-fs-note); line-height:1.25;
  padding-top:3px; padding-bottom:3px;
  padding-left:3px; padding-right:3px;
}
/* 列見出しは 11px（DESIGN.md §5.1「表・control の label（列見出し）」の段）。
   ★word-break:keep-all は、rail が狭まっても「MQ（付加価/値）」のような語中の折返しを
     起こさせないための保険（見出しを短くした今は 1 行に収まるが、会社名が長い記録で効く）。 */
table.fmg-table thead th{
  font-size:var(--gup-fs-note); white-space:normal; word-break:keep-all; line-height:1.2;
}
table.fmg-table tbody th{ white-space:normal; word-break:keep-all; }
/* ★管理単位名と FMGポジション名は業務上の固有名。途中で折らない（Founder 指摘）。
   ここを nowrap にしないと、色の印（.fmg-dot）と名前のあいだで改行が起きる（実測）。 */
table.fmg-table tbody th.lft,
table.fmg-table tbody td.lft{ white-space:nowrap; }
/* 注記は語の切れ目（読点・空白）でだけ折る。狭い rail で「…点にしてい／ません。」の
   ような単語途中改行を作らない。 */
.fmg-body p.fmg-note,
.fmg-body p.fmg-empty{ word-break:keep-all; }

/* ---- 2) 面積配分：主図は「必要なだけ rail に渡した残り全部」 ----------------
   ★fit-content(限度) は min(max-content, max(min-content, 限度))。
     .fmg-scroll は min-width:0 の scroll container なので min-content 寄与は 0。
     結果として「表が要るだけ（max-content）。ただし限度まで」になる。
       ・見出しが短い会社  → rail 285px、主図 838px（72.4%）
       ・見出しが長い会社  → rail は限度 340px で止まり、主図は 70% 前後を保つ
   ★限度を min(340px,45%) にしてあるのは、狭い画面（390px）で rail が主図を
     食い潰さないため。45% は baseline の 55:45 と同じ配分なので、狭い画面の
     ふるまいは今までどおり（画面幅ごとの規則を 1 つも増やさない）。 */
/* ★display:grid を必ず書く。差し替え前のブロックが持っていたので、
     注入テストでは効いていて気づけなかった（実機 build で 1 列へ崩れて発覚）。 */
.fmg-body{
  display:grid;
  grid-template-columns:minmax(0,1fr) fit-content(min(280px, 45%));
  column-gap:var(--gup-sp-3);
}

/* ---- 3) 縦を詰めて、詰めたぶんを主図の横幅へ回す ---------------------------
   ★注記は「図の下」ではなく「rail の下」に置く。1fr / auto の 2 行にして図を
     2 行ぶん span させると、注記は rail の余っている縦を使うだけで、
     grid の高さ（＝主図の高さ）を 1px も押し下げない。 */
.fmg-body{ grid-template-rows:1fr auto; }
.fmg-body .fmg-chartwrap{ grid-column:1; grid-row:1 / 3; }
.fmg-body .fmg-scroll{ grid-column:2; grid-row:1; }
.fmg-body p.fmg-note,
.fmg-body p.fmg-empty{ grid-column:2; grid-row:2; margin:0; }
#t1panel-fmg .card, #t2panel-fmg .card{ padding:var(--gup-sp-2) 10px; }
#t1panel-fmg .card > h2, #t2panel-fmg .card > h2{ margin-bottom:var(--gup-sp-1); }
/* G基準の行は 1 行に置く。
   ★flex-direction:row を書かないと label が縦積み（文字／自動タグ／入力欄）になり、
     40px の行が 92px になる（実測 scroll 27px）。差し替え前のブロックが持っていた規則で、
     注入テストでは下に残っていて気づけなかった。 */
.fmg-th-row{ margin:var(--gup-sp-1) 0 0; flex-wrap:nowrap; align-items:center; }
.fmg-th-row label{ flex-direction:row; align-items:center; gap:6px; }

/* ---- 4) main 下端の死に余白を、この画面のときだけ主図へ回す -----------------
   ★実測：main{padding:16px 16px 90px}。カードの下から footer までの 90px は
     どの画面でも使われていない。FMG は「主図の高さ＝横幅÷2」なので、この 90px を
     返してもらわないと 70% に届かない（返さない場合の上限は 61%）。
   ★:has() でこの画面が出ているときだけに限定する（他の画面は 90px のまま）。
     cockpit.css に既に :has() の前例がある。
   ★値は 24px（sp-5）。OPQR 班・会社盤班も同じ 90px を返してもらう案を出しているので、
     main 全体を 24px にする共通案（_shared-mainpad.css）へ後でまとめても、この画面の
     数値は 1px も変わらない（実測：sp-2／sp-4／sp-5 のどれでも 838×419・scroll 0。
     sp-6=32px だけ 823×411 へ縮むので、そこが上限）。 */

/* ---- 5) 列幅は「表」だけで決める ------------------------------------------
   ★注記（.fmg-note）は 1 行にすると 757px あるので、そのままだと列幅の見積り
     （max-content）を注記が決めてしまい、rail が常に限度いっぱい（340px）まで太る（実測）。
     width:0 / min-width:100% にすると、見積りでは 0・実際の描画では列いっぱい、になる。 */
.fmg-body p.fmg-note{ width:0; min-width:100%; }

/* ---- 6) 数字がまだ無いときの案内は全幅で出す --------------------------------
   ★既存は .fmg-note と同じ「2 列目・2 行目」に置かれていたので、図が無い状態でも
     案内が右端の細い列へ押し込まれていた（rail を細くするとさらに読めなくなる）。
     図と同時に出ることは無いので、全幅・1 行目に置く。 */
.fmg-body p.fmg-empty{ grid-column:1 / -1; grid-row:1; width:auto; min-width:0; }

/* F-2（反証で発見）：390px で keep-all の注記が 39px はみ出して末尾が読めなくなる。
   1440 の折返し 0 を保ったまま、はみ出すときだけどこでも折れるようにする。 */
.fmg-body p.fmg-note{ overflow-wrap:anywhere; }


/* ======== ① OPQR分析 ======== */
/* =============================================================================
   GUP-HIGH-DENSITY-UI1 POLISH — ① OPQR分析（t1:opqr）
     このまま app/src/styles/layout.css の 1268〜1287 行（現行の
     「① OPQR分析：DOM は動かさない」ブロック）を置き換える形で入れられる。

   ねらい：この画面の存在理由は「商品・サービスの O/P/Q/R の位置関係を見ること」。
   だから **map を最大化**し、右は control rail に徹させる。
   DOM は 1 つも動かさない（CSS Grid の配置だけ）。UI-FOLD1（結論＝図が先、操作は下）は
   崩していない：図を左＝主、操作系を右＝従にしただけで、視線は左上から読むので図が最初に入る。

   ★実測でわかった物理制約（推測ではなく measure した値）
     ・svg は viewBox 720×360 の **2:1 固定**（app/src/ui/render-opqr.js:243 の W=720,H=360）。
       inline style は width:100%;height:auto なので、**高さは列幅の 1/2 に自動追従する**。
       viewBox は business logic なので触らない → 「map を高くする」＝「列を広くする」しかない。
     ・1440×765 で scroll 0 を保てる縦の予算は
         docH = panel上端111 + カードの外枠52 + 図の高さ + main の下余白 + footer 90
       で決まる。main の padding-bottom が **90px（token ですらない生 px）** あるため、
       これを残したまま図を大きくすると 73% で頭打ちになり（実測）、
       しかも「管理単位 × 商品」モードでは baseline より悪化する（実測 scroll 18 → 48）。
   ============================================================================= */

/* ---- ① まず余白を削る（順序 (1)）----
   カードと footer のあいだの 90px は、この画面では「使える面積」を丸ごと捨てている。
   ★OPQR を開いているときだけ詰める。ほかの画面の main は 1px も変えない
     （cockpit.css:118 に前例のある :has() で scope。実測：① FMG／運転資金は before と完全一致）。 */
#t1panel-opqr .card, #t2panel-popqr .card{ padding:6px 10px; margin-bottom:0; }
/* h2 は 36px（? の当たり判定 22＋7×2）で決まるので、詰められるのは下の余白だけ。 */
#t1panel-opqr .card > h2, #t2panel-popqr .card > h2{ margin-bottom:2px; }

/* ---- ② 面積配分を直す（順序 (2)(3)）----
   62% → 80%。図は 711×355 → 920×460（面積 +68%）。
   ★grid-template-rows の 1fr は 3 行目（O/P/Q/R 凡例）に余りを吸わせるための指定。
     しきい値の操作が図の下端とそろい、rail の下に宙ぶらりんの空白が残らない。 */
.opqr-body{
  display:grid; grid-template-columns:80% 1fr; column-gap:var(--gup-sp-3);
  grid-template-rows:auto auto 1fr auto; align-items:start;
}
/* 「管理単位 × 商品」では control が増える（select が 3 つ ＋ 色の凡例）ので rail を広げ、
   そのぶんだけ map を 80% → 75% にする。実測：この 1 行が無いと scroll 7px 残る。 */
.opqr-body:has(.opqr-unit-legend:not([hidden])){ grid-template-columns:75% 1fr; }

.opqr-body > .opqr-chart-wrap{ grid-column:1; grid-row:1 / 5; margin:0; }
.opqr-body > .opqr-view-row{ grid-column:2; grid-row:1; margin:0 0 6px; }
.opqr-body > .opqr-unit-legend{ grid-column:2; grid-row:2; }
.opqr-body > .opqr-legend{ grid-column:2; grid-row:3; }
.opqr-body > .opqr-th-row{ grid-column:2; grid-row:4; }

/* ---- ③ 右は control rail に徹する ----
   長い説明に面積を渡さない。触れる部品の高さは 1px も縮めていない（最小 36px のまま）。 */
/* 表示切替：unit モードでは select が縦に 3 つ並ぶので、行の間だけ詰める。 */
.opqr-body > .opqr-view-row:not([hidden]){ gap:var(--gup-sp-2); margin:0 0 var(--gup-sp-2); }
/* 色＝管理単位の凡例。丸い印（12px）の大きさは変えず、行送りだけ詰める。 */
.opqr-body > .opqr-unit-legend:not([hidden]){
  font-size:var(--gup-fs-xs); line-height:1.25; gap:var(--gup-sp-1) var(--gup-sp-3); margin-top:var(--gup-sp-2);
}
/* O/P/Q/R の凡例は rail の中でいちばん従属度が高い参照情報なので compact 化する
   （Founder 指示「legend は必要ならさらに compact 化」）。
   ★16px のままだと 218px の列で「R（要レビュー）：抜本的な改善／を」と 1 文字だけ次行へ落ちる
     （実測：legend の高さが 4 行 92px → 5 行 112px になる）。日本語を途中で折らないために
     **1 段だけ** 14px へ下げる。実測 82px ＝ ちょうど 4 行で折返し 0。13px まで下げる必要は無かった。 */
.opqr-body > .opqr-legend{
  font-size:var(--gup-fs-sm); line-height:1.25; gap:var(--gup-sp-1); margin:var(--gup-sp-2) 0;
  grid-template-columns:1fr;
}
/* しきい値：ラベルと「自動」タグは 1 行目、入力欄は 2 行目の全幅。
   ★before は 1 行に押し込んでいたので、列が狭くなると入力欄だけが潰れる
     （実測：218px の列では入力欄が 29px になる）。縦には余りがあるので、
     ここで使って入力欄を全幅にする。 */
.opqr-body > .opqr-th-row{
  margin:var(--gup-sp-2) 0 0; flex-direction:column; align-items:stretch; gap:6px;
}
.opqr-body > .opqr-th-row label{
  flex-direction:row; flex-wrap:wrap; align-items:center; justify-content:flex-start;
  gap:var(--gup-sp-1) 0; white-space:normal;
}
.opqr-body > .opqr-th-row input{ flex:1 0 100%; width:auto; }


/* ======== ① 運転資金 ======== */
/* =============================================================================
   ① 運転資金（t1:cash）— 高密度化 v2（Founder 判定：入力は左へ集約・結果は右へ集約）
     正本は gate/high-density-ui1/polish/cash-REPORT.md（real viewport 1440×765・
     theme=digital・記録＝食品製造 2027年3月期 で実測）。

   ★実測でわかった一番大事なこと：この画面で **縦に取り返せるのは 30px しかない**。
     panel の下の 222px は footer と左ナビが占めていて、panel を 445+30=475px より
     高くすると page scroll が出る（padding-bottom を 24/32/40px 入れて二分探索した）。
     だから再配分は **横**。結果の列を 266px → 約 500px（約 2 倍）にして、
     値を 16px → 22px ／ 主役を 18px → 28px へ上げる。

   ★FINANCIAL-BALANCES1（Founder 判断）：現金・預金と借入金は運転資金ではない。
     カードを分けて意味を混ぜない。→ 2 つのグループの面（カード相当）は
     ::before / ::after で別々に描き、1 つの巨大カードにしない。
   ★DOM は 1 byte も動かさない（display:contents ＋ grid の配置だけ）。
     test-financial-balances1 の E06（fbCash が wcVal より後ろ）は DOM 順序の assert なので
     **無傷**のまま（レイアウトだけを組み替えている）。
   ============================================================================= */

/* パネル自体を 1 つの grid にして「左＝入力（2 グループ）／右＝結果」を作る。
   isolation:isolate は、下の ::before/::after（z-index:-1 の面）を
   panel の中だけで背面へ置くため（無いと main の背景に隠れて面が見えない・実測）。 */
#t1panel-cash:not([hidden]){
  position:relative; isolation:isolate; display:grid;
  grid-template-columns:minmax(0,57%) minmax(0,1fr);
  /* 行1-5＝運転資本の入力と結果 ／ 行6＝運転資本の図 ／ 行7＝2 グループの隙間 ／ 行8-11＝財務残高 */
  grid-template-rows:auto auto auto auto auto auto var(--gup-sp-2) auto auto auto auto;
  column-gap:var(--gup-sp-4); row-gap:0; align-items:stretch;
}
/* カードの箱を解いて、2 枚の中身を同じ 2 列の grid に載せる（中身の順序は不変）。 */
#t1panel-cash > .card{ display:contents; }
#t1panel-cash .wc-cash-grid,
#t1panel-cash > .card > div:not(.wc-cash-grid){ display:contents; }
/* グループごとの面。運転資本＝行1-6（図まで）／財務残高＝行8-11。行7 が 2 つを分ける。 */
#t1panel-cash::before, #t1panel-cash::after{
  content:''; z-index:-1; grid-column:1 / 3;
  background:var(--card); border:1px solid var(--line); border-radius:var(--gup-radius-md);
}
#t1panel-cash::before{ grid-row:1 / 7; }
#t1panel-cash::after{ grid-row:8 / 12; }

/* ★行は明示的に置く。自動配置に任せると、隙間の行6 へ財務残高の入力が落ちる（実測）。
   .wc-item は wrapper に id が無いので nth-of-type で指す（div の並び順：
   .wc-cash-grid は wc-item×3 → kpis ／ 財務残高側は wc-item×2 → kpis）。 */
#t1panel-cash > .card:first-of-type > h2{ grid-column:1; grid-row:1; }
#t1panel-cash > .card:first-of-type p.help{ grid-column:1; grid-row:2; }
#t1panel-cash .wc-cash-grid > .wc-item:nth-of-type(1){ grid-column:1; grid-row:3; }
#t1panel-cash .wc-cash-grid > .wc-item:nth-of-type(2){ grid-column:1; grid-row:4; }
#t1panel-cash .wc-cash-grid > .wc-item:nth-of-type(3){ grid-column:1; grid-row:5; }
#t1panel-cash .wc-cash-grid > .kpis{ grid-column:2; grid-row:1 / 6; }
/* GUP-COCKPIT-UNIT-WC1：残高（左）と結果（右）の下に、同じ視野で読める図を 2 列ぶん置く。 */
#t1panel-cash .wc-cash-grid > .wc-visual-slot{ grid-column:1 / 3; grid-row:6;
  margin:var(--gup-sp-1) var(--gup-sp-3) var(--gup-sp-2); min-width:0; }
#t1panel-cash > .card:last-of-type > h2{ grid-column:1; grid-row:8; }
#t1panel-cash > .card:last-of-type p.help{ grid-column:1; grid-row:9; }
#t1panel-cash > .card > div:not(.wc-cash-grid) > .wc-item:nth-of-type(1){ grid-column:1; grid-row:10; }
#t1panel-cash > .card > div:not(.wc-cash-grid) > .wc-item:nth-of-type(2){ grid-column:1; grid-row:11; }
#t1panel-cash > .card > div:not(.wc-cash-grid) > .kpis{ grid-column:2; grid-row:8 / 12; }

/* 面の内側の余白は、pseudo で作れないぶんを中身側で持つ */
#t1panel-cash .card > h2{ margin:0; padding:var(--gup-sp-2) 0 0 var(--gup-sp-3); align-self:end; }
#t1panel-cash .card p.help{
  margin:2px 0 var(--gup-sp-1); padding:0 var(--gup-sp-3); max-width:none; align-self:start;
  font-size:var(--gup-fs-note); line-height:var(--gup-lh-compact); color:var(--gup-text-secondary);
}

/* ---- 左＝入力。1 項目＝1 行（名前 → 金額 → 内容）。内容欄は 266px → 約 390px ---- */
#t1panel-cash .wc-item{ margin:0 0 0 var(--gup-sp-3); gap:0 var(--gup-sp-3); padding:var(--gup-sp-2) 0; }
#t1panel-cash .wc-cash-grid > .wc-item:nth-of-type(3),
#t1panel-cash > .card > div:not(.wc-cash-grid) > .wc-item:nth-of-type(2){ margin-bottom:var(--gup-sp-2); }
/* 232px ＝ いちばん長い項目名「現金・預金残高」(14px) ＋ 金額欄 110px が折り返さない幅 */
/* ★縮む側（0 1）にする。固定（0 0）にすると狭い画面で金額欄が切れて数字が読めない（390px で実測）。 */
#t1panel-cash .wc-item .field-row{ flex:0 1 232px; gap:var(--gup-sp-2); margin:0; padding:0; }
#t1panel-cash .field-row label{ font-size:var(--gup-fs-sm); }
#t1panel-cash .wc-note-in{
  flex:1 1 220px; font-size:var(--gup-fs-sm); padding:var(--gup-sp-1) var(--gup-sp-2);
  min-height:var(--gup-control-standard);
}
#t1panel-cash input#wcInv, #t1panel-cash input#wcRec, #t1panel-cash input#wcPay,
#t1panel-cash input#fbCash, #t1panel-cash input#fbDebt{
  min-height:var(--gup-control-standard); padding:var(--gup-sp-1) var(--gup-sp-2);
}

/* ---- 右＝結果。重要度で面積を配る：日数 4 つは 2×2、金額は全幅で大きく ----
   ★.kpi の「?」（.tw-help）は 36px あって、ラベル行の高さを決めてしまう（実測）。
     縦 1 列に 5 つ積むと 362px 必要で 475px に収まらないので、日数だけ 2×2 にした。
   ★UI-TYPE6：28px は 1 画面 1 つ。.kpi-hero（必要運転資金）だけ 28px、
     ほかは 22px（16px から拡大）。 */
#t1panel-cash .kpis:not([hidden]){
  /* auto-fit：広い画面は 2 列、狭い画面は 1 列。画面幅の分岐を増やさずに畳む。
     固定 2 列だと 390px で「在庫日／数」のように語の途中で折れる（実測して直した）。
     minmax の下限 200px は、1440 で 3 列にならず 2 列で止まる値。 */
  grid-template-columns:repeat(auto-fit, minmax(200px, 1fr)); gap:var(--gup-sp-2); margin:0;
  padding:var(--gup-sp-1) var(--gup-sp-3) var(--gup-sp-1) 0;
  align-self:stretch; align-content:stretch;
}
/* 1 列に畳んだときも全幅になるよう -1 で指す（1/3 だと暗黙の 2 列目を作ってしまう） */
#t1panel-cash .kpi.kpi-hero{ grid-column:1 / -1; }
#t1panel-cash > .card > div:not(.wc-cash-grid) > .kpis{ grid-template-columns:1fr; }
#t1panel-cash .kpi{
  padding:10px var(--gup-sp-3); display:flex; flex-direction:column; justify-content:center;
}
#t1panel-cash .kpi .lbl{ margin-bottom:0; font-size:var(--gup-fs-sm); line-height:1.1; }
#t1panel-cash .kpi .val{ font-size:var(--gup-fs-xl2); line-height:1.1; margin-top:2px; }
#t1panel-cash .kpi.kpi-hero .val{ font-size:var(--gup-fs-display); }

/* ==== 運転資金：返ってきた縦を入力欄と結果へ渡す ====
   ★org と同じ考え方。184px は panel 上端 149 ＋ main の下 8 ＋ footer 22 ＋ 予備 5。 */
/* 返ってきた縦は「入力欄」と「結果」だけが受け取る。見出し・注記は太らせない。
   grid-template-rows の 1fr は 3 つの残高入力と 2 つの財務残高入力の行。 */
/* ★GUP-COCKPIT-UNIT-WC1：この宣言は上の grid-template-rows を **上書きする**（後勝ち）。
   運転資本の図の行（6）を足したので、こちらも 10 → 11 行へそろえる。
   そろえないと図が 8px の隙間の行へ落ち、はみ出して財務残高のカードに重なる（実測）。 */
#t1panel-cash:not([hidden]){ min-height:calc(100vh - 184px);
  grid-template-rows:auto auto 1fr 1fr 1fr auto var(--gup-sp-2) auto auto 1fr 1fr; }
#t1panel-cash .wc-item{ align-items:stretch; }
#t1panel-cash .wc-note-in{ align-self:stretch; }
#t1panel-cash .wc-cash-grid > .kpis,
#t1panel-cash > .card > div:not(.wc-cash-grid) > .kpis{ align-self:stretch; }

/* ==== OPQR：rail 中央の穴をなくす（反証 N2）====
   ★図が 4 行を span しているので、余った縦が rail の行へ配られる。
     1fr を凡例（3 行目）に置くと、凡例としきい値のあいだに 136px の穴が空いて「抜け」に見える。
     最終行に寄せて、rail の中身は上から詰め、余りは **rail の下**（図の下半分の横）に残す。 */
.opqr-body{ grid-template-rows:auto auto auto 1fr; }
.opqr-body:has(.opqr-unit-legend:not([hidden])){ grid-template-rows:auto auto auto 1fr; }
.opqr-body > .opqr-th-row{ align-self:start; }
/* ③ の OPQR にだけある「打ち手」の一覧。図の下へ全幅で置く（rail を押し広げない）。 */
.opqr-body{ grid-template-rows:auto auto auto 1fr auto; }
.opqr-body > .opqr-chart-wrap{ grid-row:1 / 5; }
.opqr-body > #opqrSimMoves{ grid-column:1 / -1; grid-row:5; margin:var(--gup-sp-2) 0 0; }

/* ==== ③ OPQR分析：同じ instrument だが図の縦横比が違う ====
   ★実測：① の図は viewBox 720×360（2:1）、③ の図は **720×440**（1.64:1）。
     ③ は「現状 → 計画」の矢印とラベルのぶん縦に高い。同じ列幅でも図が高くなるので、
     80% のままだと縦が 116px 超えた。**図を細くして 72% を割るのではなく**、
     図のまわりの余白（カードの上 margin・打ち手の行の余白）で吸収する。
   ★viewBox は business logic なので触っていない。 */
#t2panel-popqr .card{ margin-top:var(--gup-sp-1); }
#t2panel-popqr .opqr-body{ grid-template-columns:71% 1fr; }
/* 打ち手の一覧は rail の下へ（全幅で置くと図の下に 30px 積まれる）。 */
#t2panel-popqr .opqr-body > #opqrSimMoves{ grid-column:2; grid-row:4; }
#t2panel-popqr .opqr-body > #opqrSimMoves{ margin:var(--gup-sp-1) 0 0; }

/* =============================================================================
   GUP-HIGH-DENSITY-UI1 — ALL VIEWS：④ 戦略立案
     正本は gate/high-density-ui1/polish/g4-REPORT.md
     （real viewport 1440×765 の実機 headed Chrome で before/after を実測）。
   ============================================================================= */
/* ===========================================================================
   GUP-HIGH-DENSITY-UI1 ALL VIEWS — ④ 戦略立案（#t4）の 5 view
     戦略棚卸し / 取捨戦略 / 代償戦略200 / 両得戦略20 / 実行計画

   正本は DESIGN.md §3.1（Primary / Secondary Area Rule）と
   gate/high-density-ui1/polish/FOUNDER_VISUAL_GATE2.md。

   ★守っていること
     ・情報を 1 つも消していない（列・行・入力欄・説明文とも削除 0）
     ・触れる部品を潰さない（40px / 34px の 2 tier は不変。34px 未満を 1 つも増やしていない）
     ・font-size・余白は token 経由（生 px は 3px 以下の光学調整と、KEY4 に前例のある 6px だけ）
     ・メディア条件を 1 つも増やしていない（列は grid の auto-fit で吸収）
     ・計算・保存・schema・DOM・文言に触っていない（CSS だけ）
     ・生の色を 1 つも書いていない

   ★密度で解く順序（DESIGN.md §3.1）を守った：1 余白 → 2 面積配分 → 3 主役を大きく → 4 font 1 段。
     **盤（#mxTable / #uraTable）の文字は 1 段も落としていない**（production の 16px のまま）。
     font を 1 段落としたのは t4:current の 2 か所だけで、そこは 1〜3 を使い切ったうえでの判断。

   ★置き場は layout.css。layout.css は components.css より **前**に読まれるので、
     上書きは詳細度で勝つ必要がある。そのため全規則を `#t4`（section の id）で始めている。
     共通層（shared-ui / cockpit）は画面固有 id を名指ししない契約なので、
     `.card` `.btnrow` `.boxdia-note` `.gup-capscroll` `.gup-kpisum__list` のような
     **他画面でも使う部品は必ず #t4 の中だけへ**当てている。
   =========================================================================== */

/* ---------------------------------------------------------------------------
   [instrument] 5 view すべてが共有する外枠
     ・#mxGapBar は 5 panel の外に 1 つだけ（目標G／計画G／残り）。5 view 共通。
     ・.card / .btnrow / .boxdia-note は全画面共通の部品なので #t4 に閉じて余白だけ落とす。
   --------------------------------------------------------------------------- */

/* 帯の中の主操作［計画へ戻る］は 34px のままで、帯の余白だけを詰める。→ 5 view に 12px 返す。 */
#t4 .mx-gapbar{ padding:var(--gup-sp-1) var(--gup-sp-3); margin:0 0 var(--gup-sp-3); }

/* cockpit.css の `main .card{padding:sp-3; margin-bottom:sp-3}` を ④ だけ 1 段落とす。
   面の階層（surface → card）は変えていない。落としたのは余白だけ。 */
#t4 .card{ padding:var(--gup-sp-2) var(--gup-sp-3); margin-bottom:var(--gup-sp-1); }
#t4 .card > h2{ margin:0 0 var(--gup-sp-1); }
#t4 .card + .card{ margin-top:var(--gup-sp-2); }
#t4 .btnrow{ margin-top:var(--gup-sp-1); }

/* ---------------------------------------------------------------------------
   [instrument] .mxtable — body.html に 4 か所。すべて #t4 の中（実測）
     #mxInputTable（戦略棚卸し）／#mxTable（代償戦略200）／#uraTable（両得戦略20）／
     #mxNewTable（実行計画の旧マトリクス・既定 hidden）
     ★view ごとに別々の CSS を書かない。1 つの部品として直し、同時に効かせる。

     行の高さを決めているのは **軸ラベル（tbody th）と セルの上下余白**で、
     数字バッジ（.mc-count 34px）ではない（実測）。だから
     「触れるセルの高さ」を 34px 未満にせずに、盤の 1 行を 59px → 51px にできる。
     ★盤の軸ラベルの font-size は 1 段も落としていない（16px のまま）。
   --------------------------------------------------------------------------- */
#t4 .mxtable thead th{ padding:var(--gup-sp-1) var(--gup-table-cell-inline-padding); }
#t4 .mxtable tbody th{ padding:6px var(--gup-sp-2); line-height:1.2; }
#t4 .mxcell .mc-count{ margin:6px auto; }
/* 盤の下の凡例（.boxdia-note）は <p> なので UA の下 margin（14px）も持っていた。 */
#t4 .boxdia-note{ margin:var(--gup-sp-1) 0 0; }

/* ---------------------------------------------------------------------------
   t4:current 戦略棚卸し — 主役は 5×6 の記述マトリクスそのもの
     30 マスすべてが自由記述。行の高さは「文が何行で折り返すか」で決まるので、
     ★マスを減らすのではなく、1 行に入る文字数を増やして行数を減らす。
     16px → 15px（1 段）で、実測 5 行 → 4 行になり **1 マスに見える文字数は増える**。
     line-height は長文用の 1.5（--gup-lh-normal）のまま触っていない。
     軸ラベル（tbody th）は 20px → 18px（1 段だけ）。2 段落とす必要は無かった（実測）。
     列見出し（thead th）は 16px → 14px。これは密度のためではなく **語中の折返しを消すため**：
     16px のままだと「固定費・手間をかける」等が語の途中で折れて 語中折返し 1 が残り、
     しかも docH が 2px 足りない（実測。14px にすると 折返し 0・scroll 0）。
   --------------------------------------------------------------------------- */
#t4 #mxInputTable.mxtable.mxinput thead th{ font-size:var(--gup-fs-sm); padding:3px var(--gup-table-cell-inline-padding); }
#t4 #mxInputTable.mxtable.mxinput tbody th{ font-size:var(--gup-fs-lg); line-height:1.15; padding:var(--gup-sp-1) var(--gup-sp-2); }
/* 空のマスも標準 control の高さ（40px）は必ず確保する（押して書き始められる）。 */
#t4 .mxtable.mxinput textarea{ font-size:var(--gup-fs-sm2); padding:var(--gup-sp-1) 6px; min-height:var(--gup-control-standard); }

/* ---------------------------------------------------------------------------
   t4:errc 取捨戦略（ERRC）— 主役は 4 象限
     ★2×2 は崩さない。上段＝コストを下げる（取り除く・減らす）／
       下段＝価値を高める（増やす・付け加える）という意味の並びで、
       4 列に並べ替えると この対比が消え、記述欄の幅も 526px → 246px に痩せる（実測）。
     だから面積配分ではなく **行送りと余白**だけで詰める。文字は 1 つも小さくしていない。
   --------------------------------------------------------------------------- */
#t4 .errc-grid{ gap:var(--gup-sp-2); }
#t4 .errc-head{ line-height:1.2; }
#t4 .errc-sub{ margin:2px 0 var(--gup-sp-1); line-height:var(--gup-lh-normal); }
#t4 .errc-rows{ gap:var(--gup-sp-2); }
#t4 .errc-row .errc-tobe-row{ margin-top:var(--gup-sp-1); }
#t4 .errc-ba{ margin-top:var(--gup-sp-1); }
#t4 .errc-add{ margin-top:var(--gup-sp-1); }
/* 末尾の補足（? だけの段落）。UA の上下 margin と inline の 10px を token へ。 */
#t4 #mxErrcPane .help{ margin:var(--gup-sp-1) 0 0; }

/* ---------------------------------------------------------------------------
   [instrument] t4:library 代償戦略200 ／ t4:ura 両得戦略20
     ★この 2 view は同じ形（盤 ＋ 選んだ戦略の明細）。**同じ instrument として揃える**。

   GUP-T4-SELCARD-SCROLL1（Founder 判断）：**明細に高さの上限を置かない**。
   ここには以前、2 view の明細カードを縦 170 に切って中をスクロールさせる規則があった
   （Gate 3B の 260 をさらに詰めたもの）。狙いは「盤と明細が同時に見える」
   ＋「2 view とも page スクロール 0」。実測でどちらも成立していなかったので外した
   （①食品製造 2027年3月期・選択 2 件）：
     ・明細 1 件の高さは 353〜397（390 では 719〜777）。器は 168 なので **1 件も収まらない**
       （隠れていた量：1440 で 代償戦略200 683 ＝ 8 割 ／ 両得戦略20 276）。
     ・器の中には下の操作行（試算 ／ 解除 ／ CSVで出力）まで入っていたので、
       **器の底に沈んでいた**（内側のスクロール棒を見つけないと届かない）。
     ・「page スクロール 0」が成立していたのは **両得戦略20 の 1440×900 だけ**。
       しかもその 900 は窓の高さによる下限で、余白 0。1280 では 169・390 では 403 が
       既にスクロールしていた。代償戦略200 に至っては 1440 で 1,128 スクロールする。
       **その 1 幅・1 view のために「読めない」状態を守る意味は無い**と判断した。
   ★代償は page が伸びること（文書の高さ・実測）：
       代償戦略200 1440 2,028→2,725 ／ 1280 2,079→2,762 ／ 390 4,691→6,158
       両得戦略20 1440 900→1,151 ／ 1280 889→1,189 ／ 390 1,247→1,964
   ★情報は 1 つも減らしていない。減ったのは「隠していた量」だけ。
   ★**操作行が最初の画面に出るようになったわけではない**（1440 で ［候補戦略の効果を試算］は
     y≈2,642 ＝ 依然 fold の下）。変わったのは「器の中に隠れている」→「page を送れば必ず届く」。
   ★縦に上限を置くと横も自動でスクロール扱いになる。外したので横は元の指定へ戻った。
     いまは 3 幅とも横に切れた要素 0（専用 gate の「横に切られた要素」検査が測る）だが、
     この明細へ**長い商品名・費目名を出す変更**を入れるときは器が受け止めないので自分で確かめること。
   ★残る本当の問題は **明細 1 件の縦の大きさ**（→ docs/KNOWN_DEBT.md の KD-12）。
     詰めるなら 1 件の組み方であって、器で切ることではない（切っても読めないまま隠れるだけ）。
   --------------------------------------------------------------------------- */

/* instrument: 選んだ戦略の 1 件（.mx-sel-item は matrix.js / matrix-data.js の両方が作る
   ＝ library / ura が共有）。1 件あたりの余白と行送りを詰めて **見える情報量**を戻す
   （器を外したあとも、縦を短く保つ意味でそのまま残す）。 */
#t4 .mx-sel-item{ padding-top:var(--gup-sp-2); padding-bottom:var(--gup-sp-2); }
#t4 .mx-sel-detail{ line-height:var(--gup-lh-normal); }
#t4 .mx-sel-note{ margin-top:var(--gup-sp-1); }
#t4 .mx-sel-vote{ padding:var(--gup-sp-1) var(--gup-sp-3); }
/* 「ワクワク」は 14px で 56px 必要なのに枠が 48px しかなく、はみ出していた（library / ura 共通）。 */
#t4 .vote-label{ width:4.2em; }

/* ---------------------------------------------------------------------------
   t4:new 実行計画 — 主役は「採用した戦略のカード」（だれが・いつまでに・どのように・進捗）
     ★記述欄（どのように）は 1px も細くしていない。だから 2 列化は採らない
       （実測：2 列にすると docH は 1427 と **かえって増え**、語中の折返しが 1 → 6 に悪化した）。
     ★この画面だけは 1 画面に収まらない。実測：カード以外の器だけで 324px、
       採用カードは 1 枚 273〜294px。scroll 0 にするには器を 218px（＝1 枚未満）まで
       絞るしかなく、それは「主役を縮めて scroll 0 を買う」ことになるので採らない。
       そこで「結論（計画効果・主要KPI）は上に見えたまま、採用カード 2 枚が器の中に入り、
       主操作［数値計画に反映］へ短い page scroll で届く」形にする。
   --------------------------------------------------------------------------- */

/* 「ワクワク」が 38px の枠で ワクワ／ク と割れていた（語中の折返し 3 件の正体）。 */
#t4 .vd-label{ width:4em; }
#t4 .fr-adopt-summary{ margin-bottom:var(--gup-sp-2); }
/* 主要KPI は「見るだけ」の secondary。1 行 1 件の縦積みで 1,131px の幅を捨てていたので、
   横へ並べて面積を使う（列数は固定しない＝狭い画面では自動で 1 列へ落ちる＝メディア条件を 1 つも増やさない）。
   .gup-kpisum は shared-ui の部品だが、実測で mount 先は ④ 実行計画の 1 か所だけ。
   将来ほかの画面へ mount されたときに巻き込まないよう #t4 の中へ閉じている。 */
#t4 .gup-kpisum__list{ display:grid; grid-template-columns:repeat(auto-fit, minmax(330px, 1fr)); align-items:start; }
#t4 .gup-kpisum__row{ padding:var(--gup-sp-1) var(--gup-sp-3); }

#t4 .fr-card{ padding-top:var(--gup-sp-2); padding-bottom:var(--gup-sp-2); margin-bottom:var(--gup-sp-2); }
/* ★反証で削除：#t4 .fr-note-row .fr-note{flex:1 1 12em} は、#mxFinalRanking を 560px で
   cap しているので page 高さを 1px も減らさない（利得 0）一方、⑥アパレル縫製で
   自社メモが狭くなり語中の折返しが 3 → 4 に増えていた（回帰 1）。実測で隔離して落とした。 */
#t4 .fr-plan{ margin-top:var(--gup-sp-2); padding-top:var(--gup-sp-1); }
#t4 .fr-plan-status-row{ margin-top:var(--gup-sp-1); padding-top:var(--gup-sp-1); }
#t4 .fr-adopt-actions{ margin-top:var(--gup-sp-2); }
#t4 .mxnew-legacy-read{ margin-top:var(--gup-sp-2); }
/* 明細は page ではなく器の中でスクロールする（cockpit.css の .gup-capscroll--lg と同じ 560px。
   新しい寸法を発明していない）。採用戦略が増えても画面の高さが伸び続けない。
   560px ＝ 採用カード 2 枚ぶんで、カード（273〜294px）を 1px も潰していない。
   この 1 行で page scroll は 646 → 346 に減る。 */
/* UX-MODE1（UX-38 の共通部分）：入れ子スクロールをやめ、ページの自然なスクロール 1 本にする。
   一覧と 1 件の editor の分離（④ 固有の再設計）は別 phase。 */

/* =============================================================================
   GUP-HIGH-DENSITY-UI1 — ALL VIEWS：① 全体 ／ 利益感度分析 ／ MQ経営シミュレーター
     正本は gate/high-density-ui1/polish/g1-REPORT.md
     （real viewport 1440×765 の実機 headed Chrome で before/after を実測）。
   ============================================================================= */
/* gup-gate-target: current70
   =============================================================================
   GUP-HIGH-DENSITY-UI1 — ① 現状把握の残り 5 view（G1）
     ① 全体 ／ ① 利益感度分析（感度分析・目標逆算・シナリオ試算・MQ経営シミュレーター）
   このまま app/src/styles/layout.css の末尾へ貼れる形にしてある。

   ★メディアクエリは 1 つも増やしていない（列は flex の折返しと auto-fit が吸収する）。
   ★文字は 1 つも小さくしていない（実測：文字サイズの分布は before と完全一致）。
   ★触れる部品の高さも 1px も縮めていない（34px 未満の数は before と同数）。
   ★MQ経営シミュレーターの MQ会計図（Founder 承認済み）は 1px も変えていない。
   ============================================================================= */

/* =============================================================================
   1. ① 利益感度分析の器（4 モード共通の余白）
      見出し → 切替バー → 中身 の間は、いちばん外の 1 か所で決める。
      ★見出しの下余白と切替バーの上余白は相殺（collapse）するので、
        片方だけ詰めても 1px も減らない。両方そろえて初めて減る（実測 −4px）。
   ========================================================================== */
#t3 > .card{ margin-bottom:var(--gup-sp-2); }
#t3 .card > h2{ margin-bottom:var(--gup-sp-2); }
#t3 .sens-bar{ margin-top:var(--gup-sp-2); }

/* =============================================================================
   2. instrument：「操作 ｜ MQ会計図」
      感度分析（4 枚のレバーカード）と 目標逆算／シナリオ試算（4 本のレバー）は
      別の view ではなく **同じ部品の並び**なので、規則を 1 か所に書く。
      before は 1146px の帯の中に 450px の図を 1 つだけ置いて、
      左右に 696px を捨てていた（＝高さは埋まっているのに面積が余っている）。

      ★横に並べるか、縦に畳むかは **CSS に判断させる**（幅の条件を書かない）。
        MQ会計図は記録と対象によって 2 つの形になる（実測）。
          ・金額 5 セルだけ（PQ・VQ・MQ・F・G）… 450px 幅 → 操作の横に入る
          ・P・V・M × Q ＝ … の図 × 図        … 884px 幅 → 入らないので下へ畳む
        flex の折返しは「入らなければ次の行」なので、この 2 つを自動で切り替える。
        grid（1fr auto）では畳めない：auto の列が先に伸び切って 1fr が 0 になり、
        390px で操作側が潰れる（実測：語中改行が 1 → 26 件になった）。
   ========================================================================== */
#sensSingleWrap:not([hidden]),
#sensRunWrap:not([hidden]){
  display:flex;
  flex-wrap:wrap;
  align-items:flex-start;
  column-gap:var(--gup-sp-4);
}
/* 縦に畳んだときの段の間。
   ★#leverDiagram は body.html に inline の margin-top:14px を持っていて、
     selector では消せない。だから #sensSingleWrap 側は row-gap を 0 にして
     図が自分で持っている 14px をそのまま段の間として使う（二重に空けない）。 */
#sensSingleWrap:not([hidden]){ row-gap:0; }
#sensRunWrap:not([hidden]){ row-gap:var(--gup-sp-4); }

/* 操作側。480px までは横に並び、それより狭ければ図が下へ回る。
   ★上端をそろえるため、操作側の上余白を図の inline と同じ 14px にする。 */
/* ★inline の margin-top:14px は body.html から外した（token 外の生 px を共有層へ持ち込まない）。
   図と操作の上端は同じ token（12px）でそろえる。 */
#leverDiagram{ margin-top:var(--gup-sp-3); }
#sensSingleWrap > .sens-summary-wrap{ flex:1 1 480px; min-width:0; margin:var(--gup-sp-3) 0 0; }
#sensRunWrap > .sensm-levers{ flex:1 1 480px; min-width:0; margin:0; }

/* 図は必要な幅だけ取る（余った幅は操作側へ渡す）。 */
#sensSingleWrap > .boxdia-wrap,
#sensRunWrap > .boxdia-wrap{ flex:0 1 auto; }

/* 注記のたぐいは必ず全幅で、いちばん下の行に置く。 */
#sensSingleWrap > .lever-explain,
#sensSingleWrap > .boxdia-note,
#sensRunWrap > .sensm-seed,
#sensRunWrap > .sens3-answer,
#sensRunWrap > .boxdia-note{ flex:1 1 100%; margin-bottom:0; }
/* 中身が空の段落は行を作らない。
   ★これを入れないと、空の <p> が「高さ 0 ＋ 上余白 ＋ 段の間」で 26px 使う
     （実測：目標逆算が before より 4px 伸びていた原因）。 */
#sensSingleWrap > .lever-explain:empty,
#sensSingleWrap > .boxdia-note:empty,
#sensRunWrap > .sensm-seed:empty,
#sensRunWrap > .boxdia-note:empty,
#sensRunWrap > .sens3-answer:empty{ display:none; }

/* 4 枚のレバーカードは、横に並んだときは 2×2、図が下へ回って全幅になったときは
   4 列（＝いままでどおり）。**幅の条件を書かずに** auto-fit へ決めさせる。
   ★220px は「全幅 981px（1280px の画面）でちょうど 4 列」「左の列 618px で 2 列」
     「390px で 2 列（いままでどおり）」を同時に満たす唯一の帯（実測して選んだ）。
     240px にすると 1280px の画面で 3 列になり、カードが 2 行に増えて逆に伸びる。 */
#sensSingleWrap .sens-summary{
  grid-template-columns:repeat(auto-fit,minmax(min(48%,220px),1fr));
}
/* 注記は図の下いっぱいに 1 行で置く。
   42em で折ると 2 行になり「（千｜円）」で語中改行していた（実測 1 → 0 件）。 */
#sensSingleWrap > .boxdia-note{ max-width:none; }

/* =============================================================================
   3. instrument：MQ会計図の大きさ
      ★大きくするのは **金額 5 セルだけの形**（.bd-right が唯一の子）のときだけ。
        P・V・M × Q ＝ … の図 × 図 は既に 884px（帯の 77%）を使っていて、
        ここを広げると縦に 40px 伸びるだけで画面が長くなる（実測で確認）。
      ★480×310 は MQ経営シミュレーター（複数商品）が既に使っている寸法。
        新しい寸法を 1 つも増やさずに、モードを移っても図の大きさが変わらない。
      ★#mqsimDiagram には当てない（Founder 承認済みの見た目をそのまま残す）。
        ヘッダの MQサマリー（380×240）と印刷（500×330 / 400×220）にも当てない。
   ========================================================================== */
#leverDiagram .boxdia > .bd-right:first-child{ width:480px; height:310px; }
/* ★反証 N1 の修正：目標逆算・シナリオ試算だけ、下に 252 / 264px（38〜40%）の空白が残っていた
   （Founder が最初に指摘した「収まったが主役が小さい」状態そのもの）。
   ★横を広げると 4 枚のレバーが図の下へ折り返して逆に 200px 伸びる（実測：620 まで可・640 で折返し）。
     だから **横は 620px で止めて、縦だけ**を空いているぶんへ伸ばす。
     実測 480×310 → 620×480（面積 2.0 倍）／ 下の空き 252 → 122px ／ どちらのモードも scroll 0。
     540px 以上にすると目標逆算が 146px あふれる（そこが上限）。 */
#sensRunDiagram .boxdia > .bd-right:first-child{ width:620px; height:480px; }

/* =============================================================================
   4. MQ経営シミュレーター：図のまわりの余白だけ
      表も図も 1px も変えない。切替バーの下と、最後の注記の下だけを詰める。
   ========================================================================== */
#sensSimWrap .mqsim-bar{ margin-bottom:var(--gup-sp-2); }
#mqsimNote{ margin-top:var(--gup-sp-1); margin-bottom:0; }

/* =============================================================================
   5. 値下げの逆算（感度分析の下にだけ出るカード）
      見出しと 1 行の結果しか無いので、その間だけ詰める。
   ========================================================================== */
#sensDiscCard > h2{ margin-bottom:var(--gup-sp-1); }
#sensDiscCard .disc-row{ margin-top:var(--gup-sp-1); }

/* =============================================================================
   6. ① 全体
   ========================================================================== */
/* 帯の中では左列の 1 枚目と右列の 1 枚目が同じ高さから始まる。
   16px の上余白は全幅 1 列だった頃の名残りで、いまは段差を作っているだけ。 */
.gup-band .cp-card{ margin-top:0; }
/* P・V・M・Q は 4 つで 1 組。180px 下限だと 621px の列で 3 列になり、
   Q だけが 2 行目へ落ちて 61px 使っていた。 */
/* ★.cp-prod の列指定は components.css:1188 を直接書き換えた（同じ instrument を 2 か所に持たない）。 */
/* 商品名が 220px で切れていた（帯の中は右に 200px 以上余っている）。
   高さは 1px も変えずに、余っている幅を選択中の商品名へ渡す。 */
.cp-pick select{ flex:1 1 220px; }

/* =============================================================================
   GUP-HIGH-DENSITY-UI1 — ALL VIEWS：⑤ 予実管理
     正本は gate/high-density-ui1/polish/g7-REPORT.md（real viewport 1440×765 で実測）。
   ============================================================================= */
/* ===========================================================================
   GUP-HIGH-DENSITY-UI1 ／ ⑤ 予実管理（#t7）— 採用 CSS
   そのまま app/src/styles/layout.css の末尾（Key4 VISUAL POLISH の隣）へ貼れる形。

   ★設計単位は view ではなく component / instrument。
     ⑤ の 6 view（予算・予実・差異分析・着地予測・アクション・年度レビュー）は、
     どれも同じ 3 つの部品でできている。だから直したのはこの 3 つだけ。

       A. 比較帯            .gup-compare-band   画面の外に 1 本（3 つの G）
       B. カードの中のカード .card .mucur-wrap   面の入れ子（Gate 4 の「2 層まで」から漏れていた）
       C. 画面本体          .fpa-screen         現在地 → 結論 → 状態 → 操作 → 明細

   ★守ったこと
     ・font-size を 1 つも変えていない（この file に font-size の宣言は 0 件）
     ・触れる部品の高さを縮めていない（40px / 34px の契約に触れない）
     ・情報を削っていない（畳む／横へ並べる／器の中のスクロールだけ）
     ・メディアクエリを増やしていない（42 のまま。狭い画面は max() と max-width で吸収）
     ・!important を使っていない
     ・生の色を書いていない／business logic に触れていない
   =========================================================================== */

/* ---------------------------------------------------------------------------
   A. 比較帯（canonical component。DESIGN.md §9.3。いまの利用者は ⑤ の 3 つの G だけ）
      before は `__row{flex:1 1 100%}` が必ず改行を作るので 2 段 106px あった。
      3 つの値 ＋ 結論の 1 文 ＋［計画へ］は 1440 では 1 行に収まる（実測 895px < 1133px）。
      入らない幅では従来どおり折り返す。
   --------------------------------------------------------------------------- */
main .gup-compare-band{
  align-items:center;
  gap:var(--gup-sp-2) var(--gup-sp-4);
  margin-top:var(--gup-sp-2);
  padding:var(--gup-sp-1) var(--gup-sp-3);
}
main .gup-compare-band__row{ flex:0 1 auto; }
main .gup-compare-band__summary{ flex:1 1 24ch; }

/* ---------------------------------------------------------------------------
   B. 面の入れ子を 2 層まで
      cockpit.css は `main .card .card` へ同じ規則を当てている。
      `.mucur-wrap` は .card ではないので、その規則から漏れて
      「カードの中にもう 1 枚カード」のままだった（上下 32px ＋ 下 16px を毎回失う）。
      ★③ 数値計画・① 現状把握 でも同じ部品を使う。実測では両方とも悪化 0
        （③ 全体 は 1249 → 1211px と短くなり、① の 2 画面は 1px も動かない）。
   --------------------------------------------------------------------------- */
main .card .mucur-wrap,
main #t7 .card .mucur-wrap{   /* 2 本目は fpa.css の #t7 .mucur-wrap（id 詳細度）を越えるためだけ。規則は 1 つ。 */
  border:0; border-radius:0; background:none;
  padding:0; margin-bottom:0;
}
main .card .mucur-wrap > .mucur-bar:last-child,
main #t7 .card .mucur-wrap > .mucur-bar:last-child{ margin-bottom:0; }

/* カードそのものの余白。
   ★カードの margin-top は inline style（16px）が持っているので詳細度では勝てない。
     !important で奪わず、margin-bottom を薄くして「隣接マージンの相殺」に任せる
     （結果、カードとカードの間は 16px の 1 本になる）。 */
main #t7 .card{ padding:var(--gup-sp-2) var(--gup-sp-3); margin-bottom:var(--gup-sp-2); }

/* ---------------------------------------------------------------------------
   C. 画面本体 .fpa-screen —— 積み方を 2 通りに分ける
      C-1 明細を開いているとき ＝ 明細（表）が主役。結論・状態・操作は **左のレール**へ。
      C-2 明細を閉じているとき ＝ 結論が主役。状態・操作・明細の入口は **横一列**へ畳む。
      ★float を使うので display:flex を解く（float は flex item には効かない）。
        縦の隙間は gap ではなく margin で作り直す。
      ★DOM の並びは 1 つも変えない（keyboard / screen reader の順序はそのまま）。
   --------------------------------------------------------------------------- */
main #t7 .fpa-screen{ display:block; }
main #t7 .fpa-screen > *{ margin-bottom:var(--gup-sp-2); }
main #t7 .fpa-screen > :last-child{ margin-bottom:0; }
main #t7 .fpa-screen::after{ content:""; display:block; clear:both; }

/* 現在地の帯は常に全幅・1 行 */
main #t7 .fpa-context{ padding:var(--gup-sp-1) 0; gap:var(--gup-sp-1) var(--gup-sp-4); clear:both; }
main #t7 .fpa-context__note{ flex:1 1 auto; min-width:0; }

/* 結論（KPI）— HOME の計器レール文法へそろえる。
   ⑤ だけ .fpa-kpi という別の class 系統で「面のあるカード」のまま取り残されていた
   （cockpit.css は .gup-kpi にしか当たらない）。面を持たせず 1px の線で区切ると、
   同じ KPI がヘッダ・HOME・①〜④・⑤ で同じ見え方になる。 */
main #t7 .fpa-summary__grid{
  grid-template-columns:repeat(auto-fit, minmax(min(100%, 150px), 1fr));
  gap:0;
}
main #t7 .fpa-kpi{
  background:none; border-radius:0;
  padding:var(--gup-sp-1) var(--gup-sp-3); gap:var(--gup-sp-1);
}
main #t7 .fpa-kpi + .fpa-kpi{ box-shadow:inset 1px 0 0 var(--gup-color-border); }
main #t7 .fpa-kpi--primary{ background:none; }
main #t7 .fpa-summary{ gap:var(--gup-sp-1); }
main #t7 .fpa-kpi__label{ line-height:var(--gup-lh-compact); }
main #t7 .fpa-summary__heading{ margin-bottom:var(--gup-sp-1); }
main #t7 .fpa-summary__sub{ margin-top:var(--gup-sp-1); }
main #t7 .fpa-section__heading{ margin-bottom:var(--gup-sp-1); }

/* 状態の帯 */
main #t7 .fpa-status{ padding:var(--gup-sp-1) var(--gup-sp-3); }
main #t7 .fpa-status + .fpa-status{ margin-top:0; }

/* 明細（details） */
main #t7 .fpa-detail>summary{ line-height:var(--gup-lh-compact); padding:var(--gup-sp-2) var(--gup-sp-3); }
main #t7 .fpa-detail__body{ padding:0 var(--gup-sp-3) var(--gup-sp-3); gap:var(--gup-sp-2); }
main #t7 .fpa-detail + .fpa-detail{ margin-top:0; }
/* 閉じている明細の中身は **箱ごと出さない**。いまの Chrome は閉じた details でも
   中身に layout box を作るので、入口を shrink-to-fit にすると
   「見えないのに場所を取る」箱が生まれる（実測：閉じた入口 1 本の裏に 157px）。
   開けば従来どおり出る（8 view で開閉を実測）。 */
main #t7 .fpa-detail:not([open]) > :not(summary){ display:none; }
main #t7 .mucur-table th, main #t7 .mucur-table td{
  padding:var(--gup-sp-1) var(--gup-sp-3); line-height:var(--gup-lh-compact);
}
/* ★global の table{min-width:820px} を外してよいのは、左レールで器が狭くなる C-1 のときだけ。
   いつでも外すと、長い文を持つ表（⑤ アクション一覧）が 390px で 1 セルずつ折り返し、
   縦が 304 → 2314px に膨らむ（実測）。狭いときは横スクロール（.fpa-scroll）へ任せる。 */
main #t7 .fpa-screen:has(> .fpa-detail[open]) .mucur-table{ min-width:0; }

/* --- C-1 明細を開いているとき：左のレール ＋ 右に明細 ------------------------ */
main #t7 .fpa-screen:has(> .fpa-detail[open]) > .fpa-summary,
main #t7 .fpa-screen:has(> .fpa-detail[open]) > .fpa-status,
main #t7 .fpa-screen:has(> .fpa-detail[open]) > .fpa-actions{
  float:left; clear:left; margin-right:var(--gup-sp-4);
  /* ★下限 400px は 2 つの理由で決めた（実測）。
     ① 狭い画面では **勝手に 1 列へ戻す**ため（メディアクエリを増やさない）。
        30% だけだと 390px でレール 87px ／ 表 190px になり、どちらも読めない。
        器が 400px より狭ければ max-width:100% ＝ 全幅になり、続く塊は下へ落ちる（＝1 列）。
     ② レールが 350px だと ⑤ 予算の状態文が「…保存し／ます」と語の途中で折れる。
        380px で解消し、400px なら余裕がある（記録ごとに文が違うため余白を持たせる）。
     1440 ではレール 400px ／ 表 730px。 */
  width:max(30%, 400px); max-width:100%;
}
/* 明細・原因・境界は残りの幅で 1 枚の面（BFC にしてレールへ回り込ませない） */
main #t7 .fpa-screen:has(> .fpa-detail[open]) > .fpa-detail[open],
main #t7 .fpa-screen:has(> .fpa-detail[open]) > .fpa-section,
main #t7 .fpa-screen:has(> .fpa-detail[open]) > .fpa-boundary{ overflow:hidden; }

/* --- C-2 明細の入口・状態・操作は横一列（float の shrink-to-fit を使う） ------
   閉じた入口は 1 本 36px。縦に 4 本積むと 160px 使うが、横に並べれば 36px で済む。 */
main #t7 .fpa-screen > .fpa-detail:not([open]){
  float:left; width:auto; margin-right:var(--gup-sp-2);
}
main #t7 .fpa-screen:not(:has(> .fpa-detail[open])) > .fpa-status,
main #t7 .fpa-screen:not(:has(> .fpa-detail[open])) > .fpa-actions{
  float:left; width:auto; max-width:100%; margin-right:var(--gup-sp-2);
}
/* 結論のあとは必ず新しい行から始める（横一列が KPI の右へ回り込まないように） */
main #t7 .fpa-screen > .fpa-summary{ clear:both; }
/* 横一列に畳んだ操作は、補足を 220px 幅で折り返さずボタンの右へ 1 行で置く。 */
main #t7 .fpa-screen:not(:has(> .fpa-detail[open])) > .fpa-actions .fpa-actions__hint{ flex:0 1 auto; }

/* GUP-UX-WORLDCLASS1 Phase 4（UX-41）：着地予測・アクションは「詳細を開いても主レイアウトを動かさない」画面（.fpa-screen--stable）。
   C-1 の左レール（結論を 400px へ寄せ、明細を右へ）を当てない。C-2 の横一列（操作 ＋ 閉じた明細の float）は開閉に関わらず保ち、
   開いた明細だけ clear で **その行の下へ全幅**に出す。状態の帯は開閉に関わらず 1 行（月表が帯の横へ回り込まないように）。
   選択子は上の規則と同じ詳細度にし、あとに書くことで勝つ（!important を使わない）。実測：開く前後で結論・操作の位置と幅が同じ。 */
main #t7 .fpa-screen--stable:has(> .fpa-detail[open]) > .fpa-summary,
main #t7 .fpa-screen--stable:has(> .fpa-detail[open]) > .fpa-status,
main #t7 .fpa-screen--stable:not(:has(> .fpa-detail[open])) > .fpa-status{ float:none; clear:both; width:auto; max-width:none; margin-right:0; }
main #t7 .fpa-screen--stable:has(> .fpa-detail[open]) > .fpa-actions{ clear:none; width:auto; max-width:100%; margin-right:var(--gup-sp-2); }
main #t7 .fpa-screen--stable:has(> .fpa-detail[open]) > .fpa-actions .fpa-actions__hint{ flex:0 1 auto; }
main #t7 .fpa-screen--stable > .fpa-detail[open]{ clear:both; }

/* ---------------------------------------------------------------------------
   月末残高（⑤ 予実）
   ★9 列を一視野で横に比べるのがこの表の価値なので、**幅は全幅のまま**
     （Gate 3B の承認どおり。横スクロールにしない）。返すのは表の周りの余白だけ。
   --------------------------------------------------------------------------- */
main #t7 .mes-card > h2{ margin-bottom:var(--gup-sp-1); }
/* 説明は 1 行に収まる幅を持たせる（測り幅 504px のままだと 2 行になり毎回 15px 失う）。 */
main #t7 .mes-card > p.help{
  max-width:none; float:left; width:auto;
  margin:0 var(--gup-sp-4) var(--gup-sp-1) 0;
  line-height:var(--gup-lh-compact);
}
main #t7 .mes-card > .mes-bar,
main #t7 .mes-card > #mesTable{ clear:both; }
main #t7 input.mes-in{ min-height:var(--gup-control-compact); }
/* ★反証で訂正：#mesTable の器は --gup-capscroll--md（340px）なので 340→260 の -80px。
   値を写さず **class を --md から --sm へ替える**（body.html 側）ほうが instrument が 1 か所に収まるが、
   その DOM 変更は別途。ここでは cockpit.css の --sm と同じ段であることを明記して上書きする。 */
main #t7 .mes-card .mes-scroll{ max-height:260px; }

/* 取込は 1 本の操作バーだけ。カードとしての上下の余白まで持たせない。 */
main #t7 #mbImportCard{ padding-top:var(--gup-sp-1); padding-bottom:var(--gup-sp-1); }

/* ---------------------------------------------------------------------------
   年度レビュー：図と表の器
   ★.canvas-chart-wrap は ② 戦略キャンバス でも使う共通部品。
     実測では ② も 1290 → 1285px と短くなるだけで悪化 0（横スクロールも消える）。
   --------------------------------------------------------------------------- */
/* → .canvas-chart-wrap の余白は ③② 側（#canvasCard）で 1 か所だけ指定する。 */
main #t7 .outcome-split{ margin-top:var(--gup-sp-2); gap:var(--gup-sp-3); }
main #t7 .outcome-panel{ padding:var(--gup-sp-3); }
main #t7 .outcome-panel > h3{ margin-bottom:var(--gup-sp-1); }
main #t7 .outcome-panel > p.help{ margin:0 0 var(--gup-sp-2); line-height:var(--gup-lh-compact); }
main #t7 .bridge-mode-tabs{ margin-bottom:var(--gup-sp-2); }

/* =============================================================================
   GUP-HIGH-DENSITY-UI1 — ALL VIEWS：③ の残り ／ ② 3C分析
     正本は gate/high-density-ui1/polish/g23-REPORT.md（real viewport 1440×765 で実測）。
   ============================================================================= */
/* =============================================================================
   GUP-HIGH-DENSITY-UI1 — G23（③ 数値計画 の残り 4 view ／ ② 3C分析 の 5 view）

   計測は実機 headed Chrome ／ real Web viewport 1440×765（viewport-calibration.json）。
   正本は docs/DESIGN.md §3.1（Primary / Secondary Area Rule）と
   gate/high-density-ui1/polish/FOUNDER_VISUAL_GATE2.md。
   数値は gate/high-density-ui1/polish/g23-REPORT.md。

   ★このフェーズの原則：**scroll 0 は前提であって、ゴールではない**。
     主役を縮めて scroll 0 を買わない。順序は
       1 余白を削る → 2 面積配分を直す → 3 主役を大きくする → 4 最後に font 1 段。
     今回 font は **1 段も縮めていない**（token 外の文字サイズも作っていない）。

   ★設計単位は view ではなく component / instrument。
     複数 view が同じ部品を使うなら、view ごとに作り分けず 1 か所で直す。

   ★`!important` は 1 つも使っていない。詳細度だけで勝たせている。
   ★メディア条件は 1 つも増やしていない（42 のまま）。
   ============================================================================= */


/* =============================================================================
   ★★ A. この節だけは app/src/styles/management.css の末尾へ入れる ★★

   理由は cascade の順番（app/src/manifest.json）。
     tokens → themes → brand-font → base → **layout** → components →
     **management** → shared-ui → cockpit → sidenav → home → fpa
   `.mucur-*` の元の宣言は management.css:399〜422 にあるので、
   layout.css へ同じ詳細度（0,1,0）で書いても **management.css に負けて効かない**。
   部品の宣言と同じ file の末尾へ置けば、詳細度を上げずに（＝`!important` も
   二重クラスも使わずに）意図どおり効く。

   ⑤ 予実管理は fpa.css の `#t7 .mucur-*`（0,1,1）が padding・margin をすべて
   上書きしているので **この節の影響を受けない**（実測：⑤ の 6 view とも
   docH／scroll／breaks／clip が before と完全に同じ）。
   ============================================================================= */

/* 管理単位カード（.mucur-*）＝ ① 現状把握・③ 数値計画・⑤ 予実管理・各 modal が共有する部品。
   ③ では「管理単位別の計画」と「計画の検証」が 1 画面に 2 枚入るので、
   カードの外周と行間だけを 1 段ずつ詰める。**文字も表の行の高さも触っていない。**
   実測：この節を外すと ③ 全体は 823px（scroll 58）へ戻る。 */
/* → management.css の元宣言へ移した（同じ instrument を 2 か所に持たない）。 */
/* → management.css の元宣言へ移した（同じ instrument を 2 か所に持たない）。 */
/* → management.css の元宣言へ移した（同じ instrument を 2 か所に持たない）。 */
/* → management.css の元宣言へ移した（同じ instrument を 2 か所に持たない）。 */
/* → management.css の元宣言へ移した（同じ instrument を 2 か所に持たない）。 */
/* → management.css の元宣言へ移した（同じ instrument を 2 か所に持たない）。 */


/* =============================================================================
   ★★ B. ここから下は app/src/styles/layout.css の末尾へ入れる ★★
     （すべて id 詳細度か、後続 file が同じ property を持たない宣言。実測で確認済み）
   ============================================================================= */

/* -----------------------------------------------------------------------------
   B-1. 共有 instrument — 語中で折り返さない
   -----------------------------------------------------------------------------
   ★これは「見た目の好み」ではなく、KEY4 VISUAL POLISH の**副作用の後始末**。
     main{padding-bottom} 90→8px ／ footer 90→22px で縦スクロールバーが消え、
     本文が 15px 広がった画面がある。幅が変わると日本語は折り返し位置が変わるので、
     語の途中で切れる行が新しく生まれていた（実測で再現・下記 2 件）。

   直し方は既にこの file にある house pattern と同じ
   （layout.css:1401 の `word-break:keep-all` ＋ layout.css:1473 の `overflow-wrap:anywhere`）。
     keep-all …… 漢字・かなの連なりを 1 語として扱い、句読点や記号でだけ折る
     overflow-wrap:anywhere …… それでも 1 行に入らない節だけは従来どおり折る
   ★安全側：keep-all だけだと長い節が枠からはみ出す。必ず 2 つ 1 組で使う。 */

/* 固定費の「主な内訳／計画内容・根拠」。① 固定費（F）／③ 固定費（F）／③ 数値計画 が共有。
   実測：③ 固定費（F）の語中折返し 2 → 0（① 固定費（F）は before/after とも 0 で不変）。 */
.fc-note-unit{ word-break:keep-all; overflow-wrap:anywhere; }



/* -----------------------------------------------------------------------------
   B-2. ③ 数値計画 → 全体（t2:whole）  docH 1249 → 765
   -----------------------------------------------------------------------------
   before は 帯（2 列）の**下に**「計画の検証」が全幅で積まれていて、
   縦に 1,056px 使っていた（scroll 484）。
   縦に積むのをやめ、**右の列の続きとして** 検証カードを置く。
   ★主役（目標G・必要改善額・計画G・残り）は左の列に置いたまま、
     production の帯比率（.gup-band--42 ＝ 42:58）も変えていない。
     42:58 を守ったまま収めるために、削ったのは **従の余白だけ**。 */
#t2panel-whole:not([hidden]){
  display:grid;
  grid-template-columns:minmax(0,42fr) minmax(0,58fr);
  column-gap:var(--gup-sp-4);
  align-content:start;
}
#t2panel-whole > h2.panel-head{ grid-column:1/-1; }
/* 帯そのものは箱を解くだけ。2 つの列は panel の grid item になる。
   ★DOM は 1 byte も動かしていない（① 運転資金と同じ display:contents ＋ grid 配置）。 */
#t2panel-whole > .gup-band{ display:contents; }
#t2panel-whole > .gup-band > .gup-band__col{ margin-top:var(--gup-sp-1); }
#t2panel-whole > .gup-band > .gup-band__col--main{ grid-column:1; grid-row:2/span 2; align-self:start; }
#t2panel-whole > .gup-band > .gup-band__col--side{ grid-column:2; grid-row:2; }
#t2panel-whole > section.ia5-origin{ grid-column:2; grid-row:3; margin-top:var(--gup-sp-1); }
/* 従（検証カード）の外周と行間。文字・表の行・入力欄には触っていない。 */
/* ★反証で訂正：section 見出しを 18→14px と 2 段下げていた（tokens.css は 15px を
   「section 見出しの下限」と定めている）。中の card h2 より小さくなり階層が逆転するので、
   **文字は元の 18px に戻し、余白だけ**詰める。 */
#t2panel-whole .ia5-origin__head{ margin:0 0 var(--gup-sp-1); }
#t2panel-whole #gupKenshoCard{ margin-bottom:0; padding:var(--gup-sp-1) var(--gup-sp-3); }
#t2panel-whole #gupKenshoCard > h2{ margin-bottom:0; }
#t2panel-whole .outcome-kind-note{ margin-bottom:0; }
#t2panel-whole table{ min-width:0; }   /* global の table{min-width:820px} を列の中で解く */
#t2panel-whole .mucur-table th,
#t2panel-whole .mucur-table td{ padding-top:2px; padding-bottom:2px; }   /* 1〜3px の光学調整 */
/* 中身が全部 hidden の器は行を作らない（情報は 1 つも消していない）。 */
#outcomeKpis:empty{ display:none; }
/* 検証カードの中も 2 列にする。左＝Gup（結論）／右＝管理単位別の内訳（表）。 */
#muVerifyCard .mucur-wrap{
  display:grid;
  grid-template-columns:minmax(0,1fr) minmax(0,1fr);
  column-gap:var(--gup-sp-4);
  align-content:start;
  padding:var(--gup-sp-1) var(--gup-sp-3);
  /* 検証カードの中でいちばん下の面。下の margin は器の底の死に余白にしかならない。 */
  margin-bottom:0;
}
#muVerifyCard .mucur-wrap > .mucur-bar{ grid-column:1/-1; margin-bottom:var(--gup-sp-1); }
/* ★この 2 行が同じ行にそろうので、下の余白は行の高さを押し上げるだけの死に余白になる。 */
#muVerifyCard .mucur-wrap > .mucur-gcard{ grid-column:1; grid-row:2/span 2; align-self:start; margin-bottom:0; }
#muVerifyCard .mucur-wrap > .mucur-subhead{ grid-column:2; grid-row:2; margin-top:0; }
#muVerifyCard .mucur-wrap > div:last-child{ grid-column:2; grid-row:3; }


/* -----------------------------------------------------------------------------
   B-3. ③ 数値計画 → キャッシュG（t2:cf）  docH 1001 → 765
   -----------------------------------------------------------------------------
   before は「cG の内訳（Cash Bridge）」と「運転資金の打ち手」が縦に積まれていた。
   主役＝Cash Bridge を左に置き、打ち手を右へ。62:38。
   ★62 が主役に渡せる上限。68 まで広げると、右の「打ち手：回転日数」が
     3 項目とも折り返して縦に 120px 伸び、scroll が戻る（実測 662px）。
   ★DOM 順は .cf-col-right（Bridge）が先なので、自動配置で Bridge が左（1 列目）に入る。 */
#t2panel-cf .cf-layout{
  display:grid;
  grid-template-columns:minmax(0,62fr) minmax(0,38fr);
  gap:var(--gup-sp-4);
  align-items:start;
}
#t2panel-cf .cf-col-right{ margin-bottom:0; }
/* 2 列になって 1 枚あたりが狭くなるので、内側のカードは 250px を下限に折り返す。 */
#t2panel-cf .cg-cols{ grid-template-columns:repeat(auto-fit, minmax(250px, 1fr)); gap:var(--gup-sp-3); }
/* ★主役の表の文字は **大きくしている**（14 → 16px）。密度＝縮小ではない。 */
#t2panel-cf .cg-table{ font-size:var(--gup-fs-base); }


/* -----------------------------------------------------------------------------
   B-4. ③ 数値計画 → 付加価値（MQ）（t2:prod）  docH 811 → 765
   -----------------------------------------------------------------------------
   「その他（明細外）」のカードは、管理単位別の入力へ一本化された記録では
   中身が 1 つも表示されない（子が全部 hidden）。空の枠だけが 40px 分の面を取っていた。
   ★中身がある記録では従来どおり出る（:has で実際の子を見ている。文言も入力も消していない）。 */
#prodResidualCard:not(:has(> :not([hidden]))){ display:none; }


/* -----------------------------------------------------------------------------
   B-5. ③ 数値計画 → 会社盤（t2:invest）  docH 768 → 765
   -----------------------------------------------------------------------------
   会社盤そのもの（.t1-org-top）は KEY4 VISUAL POLISH で ①③ 共通になっている。
   ここで触るのは **③ 側の view の余白 1 つだけ**（あと 3px）。
   ★4px にしているのは、管理単位や戦略チップの多い記録（見本 33 社の実測で最も高いもの）でも
     scroll 0 を保つため。8px だと 33 社中いちばん高い記録が panel 575px（上限 576px）で余裕が 1px しかない。 */
#t2panel-invest > .t1-org-top > .card{ margin-bottom:var(--gup-sp-1); }


/* -----------------------------------------------------------------------------
   B-6 / B-7 を PHASE T5-6B で置き換えた（② 事業分析 の 6-view）
   -----------------------------------------------------------------------------
   旧 B-6 は「戦略キャンバスだけの独立 view」を 2 段組にする規則だった。
   T5-6B でキャンバスは **競合 view の主要 instrument** になり、
   view そのものが 主 instrument ／ rail の 2 段組（.ba-body）を持つので、
   カードの中でもう一度 2 段に割る必要が無くなった（面の入れ子も 1 段浅くなる）。
   旧 B-7 は ② ボトルネック view の帯を前提にしていたが、その view ごと無くなった（BA-LEGACY-PRUNE1）。

   ★ここで閉じるのは「共通層の既定が新しい器を壊す」ところだけ。
     ① global の table{min-width:820px}（cG Gate 3B と同じ罠）
   ★②③（#competitorList の 2 列 ／ .comp-card の左右 margin）は
     BA-COMPETITION-HD1 で rail ごと無くなったので閉じる相手がいない。
   ========================================================================== */

/* ① 表は器の幅で折り返す（列も行も 1 つも消していない）。 */
#t5 .ba-card table{ min-width:0; }
/* 数値列は右そろえ ＋ 桁そろえ（表の作法は共通。ここで新しい規則を作らない）。 */
#t5 .ba-card table th,#t5 .ba-card table td{
  text-align:left; padding:4px var(--gup-sp-2); border-bottom:1px solid var(--gup-border-default);
  vertical-align:top; font-size:var(--gup-fs-sm);
}
#t5 .ba-card table th{
  font-size:var(--gup-fs-note); color:var(--gup-text-secondary);
  font-weight:var(--gup-font-weight-regular); position:sticky; top:0;
  background:var(--gup-surface-primary); z-index:1;
}
#t5 .ba-card table td.n,#t5 .ba-card table th.n{ text-align:right; font-variant-numeric:tabular-nums; }
#t5 .ba-card table tbody tr:last-child td{ border-bottom:0; }

/* 1440×765 で page scroll 0（実測で決めた値）。
   panel の上端 152 ＋ 帯 58 ＋ 問い 35 ＝ body の上端 245px。
   下は「次に見るべき論点」52px ＋ footer。残り **430px** が主 instrument と rail の高さ。
   ★狭い画面（列が折り返す）では 1 列ずつこの高さになるので、縦へ伸びて clipping しない。 */
#t5 .ba-main,#t5 .ba-rail{ max-height:calc(100vh - 335px); }
/* 顧客だけ、下に「以前の形式で書いた内容」の折りたたみが 1 行ぶん（41px）入る。
   旧記録を読める入口は消さないので、その 41px は主 instrument 側で返す（実測）。 */
#t5panel-cust .ba-main,#t5panel-cust .ba-rail{ max-height:calc(100vh - 376px); }

/* キャンバスの図は競合 view の主要 instrument。カードの幅なりに置く。
   ★viewBox 900×380 の固定比なので、幅が決まれば高さも決まる。
     BA-COMPETITION-HD1 で **高さの決め打ちをやめた**（決め打ちだと、
     広い所では図の左右が余り、狭い所では上下が余る）。面積は器の幅で決める。 */
#canvasCard > .canvas-chart-wrap{ height:auto; padding:var(--gup-sp-1); }
#canvasCard > .canvas-chart-wrap > svg{ width:100%; height:auto; }
#canvasCard{ margin-bottom:0; }
#canvasCard .canvas-legend{ justify-content:flex-start; margin:0 0 var(--gup-sp-1); }   /* GUP-UX-WORLDCLASS1 Phase 2：凡例は切替と同じ行（.bc-legend-row）の中へ移った */
#canvasCard .cl-item{ font-size:var(--gup-fs-note); }
#canvasCard .canvas-table td{ padding-top:2px; padding-bottom:2px; }
/* 業種の注記は語中で折らない（rail が狭い画面でも同じ）。 */
.industry-note{ word-break:keep-all; overflow-wrap:anywhere; }



/* ★③ 会社盤：本社・間接の人員列を縮められるようにしたぶん説明欄が細くなり、
   1 行ぶん（8px）だけ縦に伸びる。カードの下余白で返す（①には効かせない）。 */
#t2panel-invest .t1-org-top > .card{ padding-bottom:0; }
#t2panel-invest .t1-org-top > .card > h2{ margin-bottom:0; }

.hc-body{padding-top:2px;}
.hc-row{display:flex;flex-wrap:wrap;gap:var(--gup-sp-4);align-items:center;margin-bottom:var(--gup-sp-2);}
.hc-row label{display:flex;align-items:center;gap:var(--gup-sp-2);font-size:var(--gup-fs-sm);font-weight:var(--gup-font-weight-bold);color:var(--text-label);}
.hc-row input[type=number]{width:90px;text-align:right;border:1px solid var(--input-border);border-radius:var(--gup-radius-sm);
  padding:6px var(--gup-sp-2);font-size:var(--gup-fs-base);font-family:inherit;color:var(--navy);background:var(--input-bg);}
.hc-result{font-size:var(--gup-fs-sm);font-weight:var(--gup-font-weight-bold);color:var(--canvas-self);}
.hc-note{font-size:var(--gup-fs-note);color:var(--text-secondary);line-height:var(--gup-lh-normal);}
.field-row input[type=number], .field-row input[type=text]{width:110px;text-align:right;border:1px solid var(--line);
  /* UI-TYPE4：入力欄の値は 16px。 */
  border-radius:var(--gup-radius-sm);padding:6px var(--gup-sp-2);font-size:var(--gup-fs-base);font-family:inherit;color:var(--navy);background:var(--input-bg);}

/* sim sliders */
/* UI-SYSTEM1-1B3: card の中の行。行の境界は背景差と行間で示す（枠は重ねない）。 */
.simrow{border-radius:8px;padding:10px var(--gup-sp-3);margin-bottom:var(--gup-sp-2);background:var(--surface-row);}
.simrow .head{display:flex;justify-content:space-between;font-size:var(--gup-fs-xl);font-weight:var(--gup-font-weight-bold);margin-bottom:var(--gup-sp-2);}
/* UI-TYPE4：行の中の名前は項目名の段（14px）。 */
.simrow .mini-lbl{font-size:var(--gup-fs-sm);}
.simrow .head .delta{font-size:var(--gup-fs-xl);font-weight:var(--gup-font-weight-bold);color:var(--text-secondary);}
.lever{display:grid;grid-template-columns:32px 1fr 102px;align-items:center;gap:var(--gup-sp-3);margin:var(--gup-sp-2) 0;}
/* UI-SYSTEM1-1B3: 小さなタグは面。影を持たせない（影は overlay だけ）。 */
.lever .tag{font-size:var(--gup-fs-base);font-weight:var(--gup-font-weight-bold);border-radius:var(--gup-radius-sm);text-align:center;padding:var(--gup-sp-1) 0;
  }
/* ★塗りと対のインク（GUP-HOME-PROD1 Gate A）。暗い配色では塗りが明るくなる。 */
.tag.P{background:var(--ui-p);color:var(--ui-on-fill);}
.tag.V{background:var(--ui-v);color:var(--ui-on-fill);}
.tag.Q{background:var(--ui-q);color:var(--ui-on-fill);}
/* PROFIT-SENSITIVITY-REDESIGN1: 固定費のタグ。ここに .F が無く、レバーの F 行だけ
   タグが透明になっていた（実測 background rgba(0,0,0,0)）。色は既存の token を使う。 */
.tag.F{background:var(--ui-f);color:var(--ui-on-fill);}
.lever-track-wrap{position:relative;display:flex;align-items:center;height:28px;}
/* 中央（0%）の目印。トラックの下に薄く常設し、値がどちらに動いたか一目で分かるようにする */
.lever-track-wrap::before{content:'';position:absolute;left:50%;top:2px;bottom:2px;width:2px;
  background:var(--slider-zero-mark);transform:translateX(-1px);pointer-events:none;border-radius:1px;}
input[type=range]{
  -webkit-appearance:none;appearance:none;width:100%;height:8px;border-radius:5px;
  background:var(--slider-track);cursor:pointer;position:relative;z-index:1;}
input[type=range]::-webkit-slider-runnable-track{height:8px;border-radius:5px;background:transparent;}
input[type=range]::-moz-range-track{height:8px;border-radius:5px;background:transparent;}
input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:22px;height:22px;
  /* GUP-AIR-SURFACE1：つまむ部分は入力面 */
  border-radius:50%;background:var(--input-bg);border:4px solid var(--navy);box-shadow:0 1px 4px rgba(0,0,0,.35);
  margin-top:-7px;cursor:grab;transition:transform .06s;}
input[type=range]::-webkit-slider-thumb:active{cursor:grabbing;transform:scale(1.15);}
input[type=range]::-moz-range-thumb{width:22px;height:22px;border-radius:50%;background:var(--input-bg);
  border:4px solid var(--navy);box-shadow:0 1px 4px rgba(0,0,0,.35);cursor:grab;}
/* W10-REPAIR：値と単位の場所を固定して ％ がはみ出さないようにする。
   値は伸縮する領域、％ は縮まない固定領域。P・V・Q で同じ幅・同じ右端になる。 */
/* Phase FOUNDER-WALKTHROUGH-FIX5（W11）: 打ち手を入れる管理単位の切替 */
.lever-unitbar{display:flex;align-items:center;gap:var(--gup-sp-2);flex-wrap:wrap;
  margin-bottom:var(--gup-sp-3);}
/* UI-TYPE4：項目名は 14px。 */
.lever-unitbar label{font-size:var(--gup-fs-sm);font-weight:var(--gup-font-weight-bold);}
.lever-unitnote{color:var(--gup-text-muted);font-size:var(--gup-fs-sm);line-height:var(--gup-lh-body);max-width:var(--gup-measure);}
/* UI-TYPE2：この select は font-size を書いていなかったので、ブラウザ既定（13.33px）で出ていた。
   選んでいる値は control の標準（16px）。 */
.lever-unitbar select{font-size:var(--gup-fs-base);font-family:inherit;color:var(--text-main);}
/* UI-TYPE2：スライダー（type=range）は文字を持たないが、既定の font-size を継いでいると
   計測上ここだけ 13.33px になる。control の標準へそろえる（見た目は変わらない）。 */
.lever-track-wrap input[type=range]{font-size:var(--gup-fs-base);color:var(--text-main);}
.lever-val{display:flex;align-items:center;gap:2px;border:1px solid var(--line);border-radius:var(--gup-radius-sm);
  /* GUP-AIR-SURFACE1：中身が input なので入力面 */
  padding:2px var(--gup-sp-1) 2px var(--gup-sp-2);background:var(--input-bg);transition:border-color .1s,background .1s;
  flex:none;box-sizing:border-box;width:118px;overflow:hidden;}
/* FOUNDER-WALKTHROUGH-FIX3（W10）：selector が input[type=number] のままで、
   実際の欄（type="text" inputmode="decimal"）に 1 つも当たっていなかった。
   幅・文字サイズ・太さ・色・正負の色分けがすべて効いていない状態だったので、element を外す。
   数字は太字にする（打ち手の値は読み取る対象なので、ここは装飾ではなく情報階層）。 */
/* UI-TYPE2：ここは font-size を書いていなかったので、ブラウザ既定（13.3333px）で出ていた。
   数値を打つ欄なので、表の数値と同じ段（16px）にする。 */
.lever-val input{flex:1 1 auto;min-width:0;width:auto;text-align:right;border:none;background:transparent;font-size:var(--gup-fs-base);
  font-size:var(--gup-fs-xl);font-weight:var(--gup-type-lever-input-weight);color:var(--navy);
  padding:var(--gup-sp-1) 0;font-family:inherit;font-variant-numeric:tabular-nums;}
.lever-pct{font-size:var(--gup-fs-base);color:var(--text-secondary);font-weight:var(--gup-font-weight-regular);
  padding-right:var(--gup-sp-1);flex:none;white-space:nowrap;}
/* B-MEANING1（B-3）：打ち手は入力値であって業績の判定ではない。
   ＋ を good・▲ を bad の色で塗ると、V を下げる（＝G にプラス）打ち手が
   ⑥ 差異の「悪化」と同じ赤になり、同じ赤が「負の数」と「業績悪化」の 2 つの意味を持つ。
   ここは neutral のままにし、値が入っていることだけを枠の濃さで示す。
   どの項目かは左のタグ（P/V/Q）とスライダーの色（LEVER_COLOR）が示す。 */
.lever-val.has-val{border-color:var(--gup-color-border-strong);}
.miniresult{display:flex;gap:var(--gup-sp-4);margin-top:var(--gup-sp-2);font-size:var(--gup-fs-xl);color:var(--text-label);font-weight:var(--gup-font-weight-regular);flex-wrap:wrap;}
.miniresult b{color:var(--navy);font-variant-numeric:tabular-nums;}
.srnote{width:100%;margin-top:var(--gup-sp-2);border:1px solid var(--input-border);border-radius:var(--gup-radius-sm);
  padding:6px var(--gup-sp-2);font-size:var(--gup-fs-base);color:var(--navy);font-family:inherit;background:var(--input-bg);}
.srnote:focus{border-color:var(--input-border-focus);background:var(--input-bg-focus);}
.fcnote{flex:1 1 160px;min-width:140px;border:1px solid var(--input-border);border-radius:var(--gup-radius-sm);padding:5px 7px;
  font-size:var(--gup-fs-xl);color:var(--navy);font-family:inherit;background:var(--input-bg);}
.fcnote:focus{border-color:var(--input-border-focus);background:var(--input-bg-focus);}

.banner{border-radius:var(--gup-radius-md);padding:var(--gup-sp-4) var(--gup-sp-4);display:flex;justify-content:space-between;
  align-items:center;flex-wrap:wrap;gap:var(--gup-sp-3);margin-bottom:var(--gup-sp-4);}
.banner.pos{background:var(--panel-positive-bg);border:1px solid var(--panel-positive-line);}
.banner.neg{background:var(--panel-negative-bg);border:1px solid var(--panel-negative-line);}
/* UI-TYPE2 step3：.banner は ③ の結論の帯 1 つだけで、その大きさは .banner--plan が
   type scale の token（kpi 24px）で決めている。ここの 36px は上書きされていて効いていなかったので外した。 */
.banner .big{font-weight:var(--gup-font-weight-bold);font-variant-numeric:tabular-nums;}
.target-g-input{display:block;width:220px;max-width:100%;box-sizing:border-box;text-align:right;
  border:1px solid var(--line);border-radius:var(--gup-radius-sm);padding:3px 10px;font-family:inherit;color:var(--navy);background:var(--input-bg);/* GUP-AIR-SURFACE1A：入力面の役割で塗る */}
.banner .lbl{font-size:var(--gup-fs-xl);color:var(--text-secondary);font-weight:var(--gup-font-weight-bold);}

/* STATE-PLAN-PRUNE1：ここにあった「計画として記録する」行と注記の CSS は、
   DOM ごと退役したので外した（display:flex が UA の [hidden] に勝つ問題も一緒に消える）。 */

.bars{display:flex;flex-direction:column;gap:var(--gup-sp-3);margin-top:var(--gup-sp-2);}
.barrow{display:grid;grid-template-columns:90px 1fr 70px;align-items:center;gap:var(--gup-sp-3);font-size:var(--gup-fs-xl);}
.barrow .track{background:var(--surface-box);border-radius:var(--gup-radius-sm);height:16px;overflow:hidden;position:relative;}
.barrow .fill{height:100%;border-radius:var(--gup-radius-sm);}
.barrow .pct{text-align:right;font-variant-numeric:tabular-nums;font-weight:var(--gup-font-weight-bold);}

/* ★KEY4 VISUAL POLISH：画面の一番下にある「CSVで出力／印刷」の行。
   ボタン 40px に対して上の余白が 16px あり、どの画面でも 56px を使っていた。
   ここは操作であって主役ではないので、余白だけ 8px へ詰める（ボタンの高さは 40px のまま）。 */
.btnrow{display:flex;gap:var(--gup-sp-2);flex-wrap:wrap;margin-top:var(--gup-sp-2);}
/* UI-TYPE4：文字のボタンは 16px（control の段）。20px は結論の値の段なので使わない。 */
/* UX-SYSTEM1A：主要操作の文字は「塗りの上の文字」token。暗い配色では主要操作の青が明るい段になるので、
   白（--gup-text-inverse）を焼き付けると 2.5:1 まで落ちる（実測）。token が配色ごとに濃淡を選ぶ。 */
button.action{background:var(--gup-action-primary);color:var(--gup-color-text-on-accent);border:none;border-radius:var(--gup-radius-sm);
  padding:9px var(--gup-sp-4);font-size:var(--gup-fs-base);cursor:pointer;font-weight:var(--gup-font-weight-bold);}
/* V2-AB1（Phase A）：ghost は二次操作。主要操作と同じ太さにしない。 */
/* UX-SYSTEM1A：二次操作（SECONDARY）は .action の有無にかかわらず同じ形。素の button.ghost は
   これまで規則が無く、UA 既定（白い面・黒文字・13.33px）で出ていた（暗い配色で白い標準風 button）。 */
button.action.ghost, button.ghost{background:none;border:1px solid var(--gup-action-primary);color:var(--gup-action-primary);
  font-weight:var(--gup-type-secondary-action-weight);border-radius:var(--gup-radius-sm);
  padding:9px var(--gup-sp-4);font-size:var(--gup-fs-base);line-height:var(--gup-lh-compact);cursor:pointer;}
/* 破壊的操作（DESTRUCTIVE）は同じ形で色だけ danger（業績の negative とは分ける）。 */
button.ghost.is-danger{border-color:var(--gup-color-danger);color:var(--gup-color-danger);}
button.ghost.is-danger:hover{background:var(--gup-color-danger-subtle);}
button.action:hover{background:var(--gup-action-primary-hover);}
button.action.ghost:hover, button.ghost:hover{background:var(--gup-color-accent-subtle);}
select.scn{border:1px solid var(--line);border-radius:var(--gup-radius-sm);padding:9px 10px;font-size:var(--gup-fs-xl);background:var(--input-bg);}

/* ★KEY4 VISUAL POLISH（Founder 指示）：footer が 90px も取っていた。
   利用規約・プライバシーポリシーは **左ナビの「Gupについて」に同じものがある**ので、
   footer の複製を撤去して 1 行にし、文字を 11px（DESIGN.md §5.1 の補助メタデータの段）へ落とす。
   空いた高さは各画面の主役へ返す（§8「空白を主役へ返す」）。
   ★中身は 1 文字も減らしていない：製品名／オフライン／保存先／版数／著作権はそのまま。 */
footer{text-align:center;font-size:var(--gup-fs-note);color:var(--text-note);
  font-weight:var(--gup-font-weight-regular);line-height:1.25;padding:var(--gup-sp-1) var(--gup-sp-3);}
/* 1 行に載せる（以前は display:block で 2 行目にしていた）。 */
.footer-copyright{display:inline;font-size:inherit;font-weight:var(--gup-font-weight-regular);color:var(--text-note);}
/* UI-LEGAL1：footer の規約リンク。周りの文字と同じ大きさ・同じ色で、押せることだけを下線で示す。
   button なので Tab で届き、focus も既存の :focus-visible がそのまま当たる。 */
.footer-link{background:none;border:0;padding:0;min-height:0;font-family:inherit;
  font-size:inherit;color:inherit;text-decoration:underline;cursor:pointer;}
.footer-link:hover{color:var(--navy);}
.footer-sep{margin:0 var(--gup-sp-2);}
/* APP-BUILD-VERSION1：版は著作権表示の手前に、同じ大きさ・同じ色で置く。
   目立たせる必要はない（探したときに見つかればよい）。空なら余白も作らない。 */
.footer-build:not(:empty){margin-right:var(--gup-sp-2);}
/* 規約の本文。長いので、既存 .mx-modal-inner のスクロール（max-height:80vh）にそのまま乗せる。 */
.legal-inner{max-width:760px;}
.legal-body{padding:var(--gup-sp-4) var(--gup-sp-5) var(--gup-sp-5);
  font-size:var(--gup-fs-base);line-height:var(--gup-lh-body);color:var(--gup-color-text-primary);}
.legal-body h3{font-size:var(--gup-fs-lg);margin:var(--gup-sp-5) 0 var(--gup-sp-2);color:var(--navy);}
.legal-body h3:first-child{margin-top:0;}
.legal-body p{margin:0 0 var(--gup-sp-3);}
.legal-body ol, .legal-body ul{margin:0 0 var(--gup-sp-3);padding-left:1.6em;}
.legal-body li{margin-bottom:var(--gup-sp-1);}
.legal-body ul ul, .legal-body ol ul{margin-top:var(--gup-sp-1);}
.legal-meta{font-size:var(--gup-fs-sm);color:var(--gup-color-text-secondary);}
.legal-foot{margin-top:var(--gup-sp-5);padding-top:var(--gup-sp-3);
  border-top:1px solid var(--line-soft);font-size:var(--gup-fs-sm);color:var(--gup-color-text-secondary);}
/* 冒頭の重要警告。薄い赤の面＋赤の見出しまで。面いっぱいを塗らず、error 表示にも見せない。 */
.legal-warn{background:var(--gup-danger-soft);border:1px solid var(--gup-p-red-200);
  border-radius:var(--gup-radius-md);padding:var(--gup-sp-4) var(--gup-sp-4) var(--gup-sp-2);
  margin:0 0 var(--gup-sp-5);}
.legal-warn h3{margin:0 0 var(--gup-sp-2);color:var(--gup-color-danger);font-size:var(--gup-fs-lg);}
.legal-warn b{color:var(--gup-color-danger);}
/* UI-TYPE2（Founder 判断）：補足は 14px。20px だと本文（14px）より大きく、
   「補足のほうが目立つ」状態だった（同じ .help が画面によって 20/16/14 と 3 通りにもなっていた）。 */
.help{font-size:var(--gup-fs-sm);color:var(--text-secondary);font-weight:var(--gup-font-weight-regular);margin:-6px 0 var(--gup-sp-3);line-height:var(--gup-lh-body);max-width:var(--gup-measure);}

/* ---- MQ会計 箱型図解（入れ子グリッド構造） ---- */
/* ★横スクロールする箱に justify-content:center を掛けると、はみ出した**左側へは
   スクロールで届かない**（flexbox の既知の罠。390px で P・V・M が触れなかった）。
   中央そろえは中身の margin:auto で行う。収まっているときの見た目は 1px も変わらない
   （余白があるときだけ auto が効き、はみ出すと 0 になる）。 */
.boxdia-wrap{display:flex;overflow-x:auto;padding:var(--gup-sp-1);}
.boxdia{display:flex;align-items:center;gap:var(--gup-sp-3);flex-wrap:nowrap;justify-content:center;
  margin:auto;font-family:var(--gup-font-sans);}
.bd-op{font-size:var(--gup-fs-hero);font-weight:var(--gup-font-weight-bold);color:var(--navy);}

.bd-left{display:grid;grid-template-columns:1fr 1.15fr;grid-template-rows:1fr 1fr;
  width:230px;height:270px;border:2.5px solid var(--bd-frame);background:var(--white);}
.bd-q{width:108px;height:136px;border:2.5px solid var(--bd-frame);background:var(--white);
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;}
.bd-right{display:grid;grid-template-columns:1fr 1.08fr 1.08fr;grid-template-rows:1fr 1fr 1fr;
  width:450px;height:270px;border:2.5px solid var(--bd-frame);background:var(--white);}

.bd-cell{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;
  padding:var(--gup-sp-2) var(--gup-sp-2);overflow:hidden;}
.bd-c-P{grid-column:1;grid-row:1/3;border-right:2.5px solid var(--bd-frame);}
.bd-c-V{grid-column:2;grid-row:1;border-bottom:2.5px solid var(--bd-frame);}
.bd-c-M{grid-column:2;grid-row:2;}
.bd-c-PQ{grid-column:1;grid-row:1/4;border-right:2.5px solid var(--bd-frame);}
.bd-c-VQ{grid-column:2/4;grid-row:1;border-bottom:2.5px solid var(--bd-frame);}
.bd-c-MQ{grid-column:2;grid-row:2/4;border-right:2.5px solid var(--bd-frame);}
.bd-c-F{grid-column:3;grid-row:2;border-bottom:2.5px solid var(--bd-frame);}
.bd-c-G{grid-column:3;grid-row:3;}
/* ===== MG伝統配色のベタ塗り（デッキと同じ見た目） ===== */
/* ★塗りと「その上のインク」は **対**で指定する（GUP-HOME-PROD1 Gate A）。
   塗りだけを配色で差し替えると、濃い塗り／淡い塗りの入れ替わりで文字が消える
   （実測：digital の G セルが 1.31:1、F セルが 1.50:1）。 */
.bd-c-P, .bd-c-PQ{background:var(--mg-p);color:var(--mg-on-p);}
.bd-c-V, .bd-c-VQ{background:var(--mg-v);color:var(--mg-on-v);}
.bd-c-M, .bd-c-MQ{background:var(--mg-m);color:var(--mg-on-m);}
.bd-c-Q{background:var(--mg-q);color:var(--mg-on-q);}
.bd-c-F{background:var(--mg-f);color:var(--mg-on-f);}
.bd-c-G{background:var(--mg-g);color:var(--mg-on-g);}
/* 名前と値はセルのインクを継ぐ（セルごとに書き分けない） */
.bd-c-P .bd-lbl, .bd-c-P .bd-val, .bd-c-PQ .bd-lbl, .bd-c-PQ .bd-val,
.bd-c-M .bd-lbl, .bd-c-M .bd-val, .bd-c-MQ .bd-lbl, .bd-c-MQ .bd-val,
.bd-c-V .bd-lbl, .bd-c-V .bd-val, .bd-c-VQ .bd-lbl, .bd-c-VQ .bd-val,
.bd-c-Q .bd-lbl, .bd-c-Q .bd-val,
.bd-c-F .bd-lbl, .bd-c-F .bd-val,
.bd-c-G .bd-lbl, .bd-c-G .bd-val{color:inherit;}
.bd-c-P .bd-val .arrow, .bd-c-PQ .bd-val .arrow,
.bd-c-M .bd-val .arrow, .bd-c-MQ .bd-val .arrow{color:rgba(255,255,255,.75);}
.bd-c-P .bd-val .newv, .bd-c-PQ .bd-val .newv,
.bd-c-M .bd-val .newv, .bd-c-MQ .bd-val .newv{font-weight:var(--gup-font-weight-bold);}
.bd-c-P .bd-val.neg, .bd-c-PQ .bd-val.neg,
.bd-c-M .bd-val.neg, .bd-c-MQ .bd-val.neg{font-weight:var(--gup-font-weight-bold);}
/* 淡色セル（ピンク・黄緑・山吹・白）は濃紺文字＋計画後の値は太字 */
.bd-c-V .bd-val .newv, .bd-c-VQ .bd-val .newv,
.bd-c-F .bd-val .newv, .bd-c-G .bd-val .newv{font-weight:var(--gup-font-weight-bold);}

/* UI-TYPE4：箱の中の名前（P・V・Q）は項目名の段（14px）。数字は .bd-val が持つ。 */
/* V2-AB1（Phase A）：MQ 図の名札（P・V・M・Q・PQ …）は 400。
   図の主役は数字であって名札ではない（値は .bd-val が 400、変化後の値 .newv だけ 700）。 */
.bd-lbl{font-size:var(--gup-fs-sm);font-weight:var(--gup-font-weight-regular);color:var(--navy);letter-spacing:.02em;}
.bd-val{font-size:var(--gup-fs-xl);font-weight:var(--gup-font-weight-regular);color:var(--navy);font-variant-numeric:tabular-nums;text-align:center;line-height:1.22;}
.bd-val.neg{color:var(--bad);}
.val.is-negative, .big.is-negative{color:var(--bad)!important;}
.val.is-warning{color:var(--bad)!important;}
/* V2-AB1（Phase A）：負値は **色**で示す。太字を重ねない（表の本文は 400）。 */
.calc.cell-neg{color:var(--bad)!important;}

/* 用語ツールチップ */
.tw{position:relative;cursor:help;border-bottom:1px dotted currentColor;}
.tw::after{
  content:attr(data-tip);
  position:absolute;left:50%;bottom:calc(100% + 8px);transform:translateX(-50%);
  background:var(--gup-surface-inverse);color:var(--gup-text-inverse);font-size:var(--gup-fs-base);font-weight:var(--gup-font-weight-regular);line-height:var(--gup-lh-normal);
  padding:var(--gup-sp-2) var(--gup-sp-3);border-radius:var(--gup-radius-md);width:max-content;max-width:240px;
  white-space:normal;text-align:left;z-index:100;
  opacity:0;visibility:hidden;transition:opacity .15s;pointer-events:none;
  box-shadow:0 6px 20px rgba(0,0,0,.25);
}
.tw::before{
  content:"";position:absolute;left:50%;bottom:calc(100% + 2px);transform:translateX(-50%);
  border:6px solid transparent;border-top-color:var(--navy);z-index:100;
  opacity:0;visibility:hidden;transition:opacity .15s;pointer-events:none;
}
.tw:hover::after, .tw:hover::before, .tw.tw-open::after, .tw.tw-open::before{opacity:1;visibility:visible;}
/* テーブルヘッダー内は上に出すスペースがない場合、下に出す */
thead .tw::after{bottom:auto;top:calc(100% + 8px);}
thead .tw::before{bottom:auto;top:calc(100% + 2px);border-top-color:transparent;border-bottom-color:var(--navy);}
.tw-help{display:inline-block;width:22px;height:22px;line-height:22px;text-align:center;
  /* UI-TYPE2（Founder 判断）：? は補足なので、表の数値（16px 太字）と同じ強さで主張しない。
     14px・標準ウェイトへ。押せる大きさ（22px の丸＋7px の当たり判定）は変えない。 */
  /* GUP-HOME-PREP1 Gate C：? は本文色（丸の上で 5.2:1）。白文字だと 1.61:1 で読めなかった。 */
  background:var(--help-dot);color:var(--navy);border-radius:50%;font-size:var(--gup-fs-sm);font-weight:var(--gup-font-weight-regular);
  margin-left:2px;cursor:help;vertical-align:middle;position:relative;
  border:7px solid transparent;background-clip:padding-box;box-sizing:content-box;}
/* 3 状態を区別できるようにする：
     通常   … グレーの丸 ＋ 濃い ?
     hover  … 青い丸 ＋ 白い ?（面が反転する）
     focus  … 下の :focus-visible の outline
   ★hover で面が濃くなるので、文字は白へ戻す（濃い ? のままだと 2.9:1 で読めない）。 */
.tw-help:hover{background:var(--action-accent);color:var(--gup-text-inverse);}
.tw-help::after{
  content:attr(data-tip);
  position:absolute;left:50%;top:calc(100% + 8px);transform:translateX(-50%);
  background:var(--gup-surface-inverse);color:var(--gup-text-inverse);font-size:var(--gup-fs-base);font-weight:var(--gup-font-weight-regular);line-height:var(--gup-lh-normal);
  padding:var(--gup-sp-2) var(--gup-sp-3);border-radius:var(--gup-radius-md);width:max-content;max-width:230px;
  white-space:normal;text-align:left;z-index:120;
  opacity:0;visibility:hidden;transition:opacity .15s;pointer-events:none;
  box-shadow:0 6px 20px rgba(0,0,0,.25);
}
.tw-help::before{
  content:"";position:absolute;left:50%;top:calc(100% + 2px);transform:translateX(-50%);
  border:6px solid transparent;border-bottom-color:var(--navy);z-index:120;
  opacity:0;visibility:hidden;transition:opacity .15s;pointer-events:none;
}
.tw-help:hover::after, .tw-help:hover::before,
.tw-help:focus-visible::after, .tw-help:focus-visible::before,
.tw-help.tw-open::after, .tw-help.tw-open::before{opacity:1;visibility:visible;}
/* VER1-FINAL-UIUX-MERGE-FIX1（EXT-B4）：keyboard で届く「?」。見た目は従来の丸のまま。 */
.tw-help:focus-visible{outline:2px solid var(--action-accent);outline-offset:2px;}
.bd-cell.changed{box-shadow:inset 0 0 0 3px var(--white), inset 0 0 0 5px rgba(0,0,0,.65);}
.bd-val .arrow{color:var(--text-arrow);}
.bd-val .newv{font-weight:var(--gup-font-weight-bold);}
/* UI-TYPE4：補足は 14px。 */
.boxdia-note{font-size:var(--gup-fs-sm);color:var(--text-secondary);font-weight:var(--gup-font-weight-regular);text-align:center;margin-top:10px;line-height:var(--gup-lh-body);max-width:var(--gup-measure);}
.cf-wc-breakdown{margin-top:var(--sp-2);}
.stat-compare.cf-wc-row{border-bottom:1px solid var(--line-soft);padding:var(--sp-2) var(--sp-1);}
.stat-compare.cf-wc-row .sc-label{flex:0 0 44px;}
.stat-compare.cf-wc-row.total{border-bottom:none;margin-top:var(--sp-1);}
.stat-compare.cf-wc-row.total .sc-label{flex-basis:100px;font-weight:var(--gup-font-weight-bold);}
.stat-compare.cf-wc-row.total .sc-value{font-weight:var(--gup-font-weight-bold);}

.strategy-flow{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:var(--gup-sp-2);margin:var(--gup-sp-2) 0 0;}
.sf-step{border:1px solid var(--panel-blue-line);background:var(--white);border-radius:var(--gup-radius-sm);padding:var(--gup-sp-2) 9px;min-width:0;
  cursor:pointer;text-align:left;transition:background .12s ease,border-color .12s ease;}
/* V2-AB1（Phase B）：hover は選択中より弱くする。 */
.sf-step:hover{background:var(--gup-color-surface-subtle);}
.sf-step:focus-visible{outline:2px solid var(--action-accent);outline-offset:2px;}
.sf-step .sf-num{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;border-radius:50%;
  background:var(--gup-surface-inverse);color:var(--gup-text-inverse);font-size:var(--gup-fs-sm);font-weight:var(--gup-font-weight-bold);margin-right:6px;}
.sf-step b{font-size:var(--gup-fs-sm);color:var(--navy);line-height:var(--gup-lh-heading);}
.sf-step span{display:block;font-size:var(--gup-fs-note);color:var(--text-secondary);font-weight:var(--gup-font-weight-bold);line-height:var(--gup-lh-body);margin-top:5px;}
/* V2-AB1（Phase B）：面・枠・影の三重をやめる。
   マーカーは既にある番号バッジ（.sf-step.active .sf-num が accent 色になる）が担う。 */
.sf-step.active{border-color:var(--action-accent);}
.sf-step.active .sf-num{background:var(--action-accent);}
@media(max-width:980px){.strategy-flow{grid-template-columns:1fr 1fr;}}
@media(max-width:560px){.strategy-flow{grid-template-columns:1fr;}}

/* Gupマトリクス */
.mx-wrap{overflow-x:auto;}
.mxtable{width:100%;min-width:760px;border-collapse:collapse;}
.mxtable th, .mxtable td{border:1px solid var(--line);vertical-align:middle;}
/* GUP-COLOR-FIX1（CLR-06）：見出しの面は theme で明るい側へ差し替わる。
   白のままだと 2.60〜2.77:1 なので、面と **対** のインクを使う。 */
.mxtable thead th{background:var(--gup-surface-inverse);color:var(--ura-head-ink);font-size:var(--gup-fs-sm);font-weight:var(--gup-font-weight-bold);   /* UI-URA1（Founder 指摘）：軸の文字は 14px */
  padding:var(--gup-sp-2) var(--gup-table-cell-inline-padding);text-align:center;white-space:pre-line;line-height:var(--gup-lh-heading);}
.mxtable thead th.corner{background:var(--header-hover);font-size:var(--gup-fs-sm);}
.mxtable tbody th{background:var(--surface-grid-head);color:var(--navy);font-size:var(--gup-fs-base);font-weight:var(--gup-font-weight-bold);
  padding:var(--gup-sp-2) var(--gup-sp-2);text-align:center;white-space:pre-line;line-height:var(--gup-lh-heading);width:140px;}   /* UI-URA1：4 行折れを解消（20px・96px だった） */
.mxtable td.mxcell{padding:0;text-align:center;cursor:pointer;background:var(--white);transition:background .15s;}
.mxtable td.mxcell:focus-visible{outline:3px solid var(--action-accent);outline-offset:-3px;}
.mxtable td.mxcell:hover{background:var(--surface-warm);}
.mxcell .mc-count{display:inline-flex;align-items:center;justify-content:center;
  min-width:34px;height:34px;border-radius:var(--gup-radius-md);background:var(--line-soft);color:var(--navy);
  font-size:var(--gup-fs-xl);font-weight:var(--gup-font-weight-bold);font-variant-numeric:tabular-nums;margin:var(--gup-sp-2) auto;}
.mxcell:hover .mc-count{background:var(--gup-surface-inverse);color:var(--gup-text-inverse);}
.mxtable tbody tr.row-hot th{background:var(--matrix-hot-head);}
.mxtable tbody tr.row-hot td.mxcell{background:var(--matrix-hot-cell);}
.mxtable tbody tr.row-hot td.mxcell:hover{background:var(--matrix-hot-hover);}

/* 自由入力マトリクス
   UI-NAV1.1: ここは「選んだ戦略を実行計画へ移す」入口。ふだんは neutral で、
   未保存の下書きがあるときだけ注意の色にする（色は意味と操作にだけ使う）。 */
.mxnew-hint{font-size:var(--gup-fs-base);color:var(--text-secondary);font-weight:var(--gup-font-weight-regular);margin-bottom:var(--gup-sp-3);line-height:var(--gup-lh-body);}
.mxnew-hint b{color:var(--navy);}
.mxnew-hint .nh-empty{color:var(--text-secondary);}
.nh-box{background:var(--surface-soft);border:1px solid var(--line);border-radius:var(--gup-radius-md);padding:var(--gup-sp-3) var(--gup-sp-4);
  display:flex;flex-direction:column;align-items:flex-start;gap:var(--gup-sp-2);}
.nh-box--dirty{background:var(--surface-warn);border-color:var(--surface-warn-line);}
.nh-title{font-size:var(--gup-fs-base);font-weight:var(--gup-font-weight-bold);color:var(--navy);}
.nh-body{margin:0;font-size:var(--gup-fs-sm);font-weight:var(--gup-font-weight-regular);color:var(--text-secondary);}
.nh-box .gup-btn + .gup-btn{margin-left:var(--gup-sp-2);}
/* 最終戦略ランキング（フラットカード） */
#mxFinalRanking .nh-empty{color:var(--text-secondary);}
.fr-card{border:1px solid var(--line);border-radius:var(--gup-radius-md);
  padding:var(--gup-sp-3) var(--gup-sp-4);margin-bottom:var(--gup-sp-3);background:var(--surface-kpi);}
.fr-card-top{display:flex;align-items:flex-start;gap:var(--gup-sp-4);}
.fr-rank{flex:none;width:38px;font-size:var(--gup-fs-xl);font-weight:var(--gup-font-weight-bold);text-align:center;color:var(--canvas-self);
  line-height:var(--gup-lh-heading);padding-top:2px;}
.fr-body{flex:1 1 auto;min-width:0;}
.fr-head{display:flex;align-items:baseline;gap:var(--gup-sp-2);flex-wrap:wrap;}
.fr-no{font-size:var(--gup-fs-note);font-weight:var(--gup-font-weight-bold);color:var(--canvas-self);}
.fr-tag{font-size:var(--gup-fs-xs);font-weight:var(--gup-font-weight-bold);color:var(--text-secondary);background:var(--surface-muted);
  border-radius:var(--gup-radius-sm);padding:1px var(--gup-sp-2);}
.fr-name{font-size:var(--gup-fs-base);color:var(--navy);}
.fr-desc{font-size:var(--gup-fs-sm);color:var(--text-secondary);margin-top:3px;line-height:var(--gup-lh-normal);}
.fr-note{font-size:var(--gup-fs-sm);color:var(--canvas-self);}
.fr-note-row{display:flex;align-items:center;flex-wrap:wrap;gap:var(--gup-sp-2) var(--gup-sp-3);margin-top:var(--gup-sp-2);}
.fr-votes{flex:none;width:150px;}
.vd-row{display:flex;align-items:center;gap:var(--gup-sp-2);font-size:var(--gup-fs-note);color:var(--text-secondary);margin-bottom:3px;}
.vd-label{width:38px;flex:none;font-weight:var(--gup-font-weight-bold);}
.vd-dots{display:flex;gap:2px;}
.vd-dot{width:9px;height:9px;border-radius:50%;background:var(--line);display:inline-block;}
.vd-dot.on{background:var(--canvas-self);}
/* V2-AB1（Phase B）：採用中は selection。面・枠・影の 3 つを同時に効かせない。
   面は neutral のまま、**枠 ＋ 左の太いマーカー**で示す（.sens-card.active と同じ文法）。 */
.fr-card.adopted{border-color:var(--good);border-left:4px solid var(--good);}
.fr-plan{margin-top:var(--gup-sp-3);padding-top:var(--gup-sp-2);border-top:1px dashed var(--line-soft);}
/* V2-AB1（Phase A）：checkbox の label。選んだかどうかは checkbox が示す。 */
.fr-plan-adopt{display:inline-flex;align-items:center;gap:var(--gup-sp-1);font-size:var(--gup-fs-sm);font-weight:var(--gup-type-label-weight);color:var(--navy);cursor:pointer;flex:none;}
.fr-plan-adopt input[type=checkbox]{width:17px;height:17px;margin:0;cursor:pointer;}
.fr-plan-fields{display:flex;flex-wrap:wrap;align-items:center;gap:var(--gup-sp-2) var(--gup-sp-4);}
/* V2-AB1（Phase A）：「だれが／いつまでに／どのように」は項目名。 */
.fr-plan-field{display:flex;align-items:center;gap:var(--gup-sp-2);font-size:var(--gup-fs-xs);font-weight:var(--gup-type-label-weight);color:var(--text-secondary);white-space:nowrap;}
.fr-plan-field.fr-plan-short{flex:0 1 130px;}
.fr-plan-field.fr-plan-wide{flex:1 1 260px;}
.fr-plan-field input{flex:1 1 auto;width:100%;min-width:0;border:1px solid var(--input-border);background:var(--input-bg);
  border-radius:var(--gup-radius-sm);padding:5px 7px;font-size:var(--gup-fs-sm);font-family:inherit;color:var(--navy);font-weight:var(--gup-font-weight-regular);}
.fr-plan-status-row{display:flex;flex-wrap:wrap;align-items:center;gap:var(--gup-sp-2) var(--gup-sp-3);margin-top:var(--gup-sp-2);padding-top:var(--gup-table-cell-block-padding);border-top:1px dashed var(--line-soft);}
.fr-plan-status-label{font-size:var(--gup-fs-note);font-weight:var(--gup-font-weight-bold);color:var(--text-secondary);flex:none;}
.fr-status-pills{display:flex;gap:var(--gup-sp-1);flex:none;}
.fr-status-pill{border:1px solid var(--line);background:var(--white);border-radius:var(--gup-radius-md);padding:var(--gup-sp-1) var(--gup-sp-3);
  font-size:var(--gup-fs-xs);font-weight:var(--gup-font-weight-bold);font-family:inherit;color:var(--text-secondary);cursor:pointer;transition:all .12s;}
.fr-status-pill:hover{border-color:var(--pill-color);}
/* V2-AB1（Phase B）：進捗の選択も selection grammar へ。
   soft な面 ＋ 色の枠 ＋ 色の文字で示し、solid の塗りは主要操作のために空けておく。 */
.fr-status-pill.active{background:var(--gup-surface-secondary);border-color:var(--pill-color);color:var(--pill-color);}
.fr-plan-note{flex:1 1 200px;min-width:0;border:1px solid var(--input-border);background:var(--input-bg);
  border-radius:var(--gup-radius-md);padding:var(--gup-sp-1) var(--gup-sp-2);font-size:var(--gup-fs-sm);font-family:inherit;color:var(--navy);}
.fr-status-badge{font-size:var(--gup-fs-note);font-weight:var(--gup-font-weight-bold);border-radius:var(--gup-radius-md);padding:1px var(--gup-sp-2);color:var(--gup-text-inverse);}
.fr-status-badge.fr-status-inprogress{background:var(--vote-effect);}
.fr-status-badge.fr-status-done{background:var(--vote-feasible);}
.fr-status-badge.fr-status-stopped{background:var(--gup-negative);}
/* V2-AB1（Phase B）：完了は状態。カードを緑で塗らず、落ち着いた neutral の面にする
   （完了したことは右の badge が緑で示している）。 */
/* V2-AB1（Phase B）：完了は「もう触らなくてよい」状態なので、読むだけの面（muted）でよい。 */
.fr-card.fr-status-done{background:var(--gup-surface-muted);}
.fr-card.fr-status-stopped{opacity:.65;}
/* GUP-UX-WORLDCLASS1 Phase 3（UX-38 / UX-39）：実行計画 READ ＝ 1 行 1 件（採用）。列は flex-basis でそろえる（同じ basis・同じ grow なので行ごとに同じ幅）。
   値は全文（担当・期限を小さな欄で切らない）。入力部品は置かない。狭い画面では折り返す（メディア条件を増やさない）。 */
.fx-head,.fx-row{display:flex;flex-wrap:wrap;gap:var(--gup-sp-1) var(--gup-sp-3);align-items:flex-start;}
.fx-head{font-size:var(--gup-fs-note);color:var(--text-secondary);padding:0 var(--gup-sp-4) var(--gup-sp-1);border-bottom:1px solid var(--line);}
.fx-c{min-width:0;overflow-wrap:anywhere;font-size:var(--gup-fs-sm);}
/* basis の合計（＋gap 7 つ）は card の内側（1440 で約 1,100px）に収める（超えると操作の列が次の行へ落ちる。実測）。 */
.fx-c--name{flex:2 1 150px;display:flex;flex-wrap:wrap;align-items:baseline;gap:var(--gup-sp-1) var(--gup-sp-2);}
.fx-c--aim{flex:4 1 210px;}
.fx-c--kpi{flex:2 1 130px;}
.fx-c--who{flex:1.2 1 84px;}
.fx-c--when{flex:1 1 76px;}
.fx-c--status{flex:0 0 52px;}
.fx-c--next{flex:2 1 110px;color:var(--text-secondary);}
.fx-c--ops{flex:0 0 84px;display:flex;gap:var(--gup-sp-2);justify-content:flex-end;}
.fx-row .fr-rank{width:auto;font-size:var(--gup-fs-sm);padding:0;}
.fx-row .fr-name{font-size:var(--gup-fs-sm);}
.fx-row .fr-desc{margin-top:0;}
.fx-full{flex:1 1 100%;}
.fx-none{color:var(--text-muted);}
.fx-none-row{margin:0 0 var(--gup-sp-2);font-size:var(--gup-fs-sm);color:var(--text-secondary);}
/* KPI 列は editor の閉じた bar をそのまま置く（設定する／開く は命令。入力欄ではない）。 */
.fx-c--kpi .gup-kpied__bar{flex-wrap:wrap;}
/* 候補（未採用）は compact な 1 行。 */
.fx-cands{margin-top:var(--gup-sp-3);}
.fx-cands-h{margin:0 0 var(--gup-sp-1);font-size:var(--gup-fs-sm);font-weight:var(--gup-font-weight-bold);color:var(--text-secondary);}
.fx-cand{display:flex;flex-wrap:wrap;align-items:baseline;gap:var(--gup-sp-1) var(--gup-sp-2);font-size:var(--gup-fs-sm);}
.fx-cand .fr-rank{width:auto;font-size:var(--gup-fs-sm);padding:0;}
.fx-cand .fr-name{font-size:var(--gup-fs-sm);}
.fx-cand-eff{color:var(--text-secondary);font-size:var(--gup-fs-xs);}
.fx-cand .fx-c--ops{margin-left:auto;}
/* EDIT：1 件の編集面。共通の editor shell（.ba-editor / .ba-ed-head）を使う。 */
.fx-editor{margin:0 0 var(--gup-sp-2);}
.fx-ed-top{display:flex;flex-wrap:wrap;align-items:center;gap:var(--gup-sp-2) var(--gup-sp-3);margin-bottom:var(--gup-sp-2);}
.fx-ed-top .fr-desc{margin:0;}
.fx-ed-adopt{display:flex;flex-wrap:wrap;align-items:center;gap:var(--gup-sp-2) var(--gup-sp-3);margin-bottom:var(--gup-sp-2);}
.fx-ed-grid{display:flex;flex-wrap:wrap;gap:var(--gup-sp-2) var(--gup-sp-3);}
.fx-ed-f{display:flex;flex-direction:column;gap:2px;flex:1 1 240px;min-width:0;font-size:var(--gup-fs-xs);color:var(--text-secondary);}
.fx-ed-f--wide{flex:1 1 100%;}
.fx-ed-f input,.fx-ed-f textarea{width:100%;min-width:0;font-size:var(--gup-fs-sm);}
.fx-ed-kpi{display:flex;flex-wrap:wrap;align-items:flex-start;gap:var(--gup-sp-2) var(--gup-sp-3);margin-top:var(--gup-sp-2);}
.fx-ed-k{font-size:var(--gup-fs-xs);color:var(--text-secondary);}
.fx-ed-note{margin:var(--gup-sp-2) 0 0;font-size:var(--gup-fs-note);color:var(--text-secondary);}
/* GUP-UX-WORLDCLASS1 Phase 3（UX-37）：代償戦略200 の候補リスト。 */
.mxc-bar{display:flex;flex-wrap:wrap;align-items:center;gap:var(--gup-sp-1) var(--gup-sp-2);margin-bottom:var(--gup-sp-1);}
.mxc-k{font-size:var(--gup-fs-xs);color:var(--text-secondary);flex:none;width:3em;}
.mxc-chips{display:flex;flex-wrap:wrap;gap:var(--gup-sp-1);}
.mxc-chip{display:inline-flex;align-items:center;gap:var(--gup-sp-1);min-height:var(--gup-control-compact);padding:0 var(--gup-sp-2);
  border:1px solid var(--gup-color-border);border-radius:var(--gup-radius-sm);background:var(--gup-color-surface);color:var(--gup-color-text-primary);
  font-family:inherit;font-size:var(--gup-fs-sm);cursor:pointer;}
.mxc-chip small{font-size:var(--gup-fs-note);color:var(--text-secondary);}
.mxc-chip.is-on{border-color:var(--gup-border-selected);background:var(--gup-surface-selected);font-weight:var(--gup-type-selected-weight);}
.mxc-chip:disabled{color:var(--text-muted);border-style:dashed;cursor:default;}
/* GUP-STRATEGY-CONTEXT-CLOSE1（B）：方針と別のものを手動で見ているときの 1 行。
   既存の注記と同じ段（新しい色も新しい文字サイズも作らない）。 */
.mxc-mode{display:inline-flex;align-items:center;flex-wrap:wrap;gap:var(--gup-sp-1);
  font-size:var(--gup-fs-xs);color:var(--text-secondary);}
.mxc-sum{font-size:var(--gup-fs-xs);color:var(--text-secondary);margin:var(--gup-sp-1) 0;}
/* GUP-SIMPLIFY1（SP-30）：候補は 1 件 1 行の縦 1 列だった。
   実測すると 1 件 47px・幅 1,150px のうち 75% が空白で、50 件で 2,350px。
   1 画面に 10 件しか見えず、「200 本から探す」がスクロールの作業になっていた。
   ★中身は 1 文字も減らさない（＋ ／ No ／ 名前 ／ コンセプト ／ タグ ／ 詳細 の 6 つとも同じ）。
     DOM の並びも変えない（読み上げ順は情報順のまま）。
     変えたのは **並べ方だけ**：横に並ぶカードにして、1 枚を 2 行に折る。
   ★列数は幅から自動で決める（auto-fill）。新しい画面幅の分岐は作らない。 */
.mxc-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));
  gap:var(--gup-sp-2);}
.mxc-row{display:grid;align-items:center;
  grid-template-columns:auto auto minmax(0,1fr) auto auto;
  grid-template-areas:"pick no   name name name"
                      "pick conc conc tag  more";
  column-gap:var(--gup-sp-2);row-gap:2px;
  padding:var(--gup-sp-1) var(--gup-sp-2);
  border:1px solid var(--line-soft);border-radius:var(--gup-radius-sm);
  min-height:var(--gup-control-compact);}
.mxc-row.is-on{background:var(--gup-surface-selected);}
.mxc-pick{flex:none;grid-area:pick;}
.mxc-no{font-size:var(--gup-fs-note);color:var(--text-secondary);flex:none;grid-area:no;}
.mxc-name{font-size:var(--gup-fs-sm);min-width:0;overflow-wrap:anywhere;grid-area:name;}
.mxc-concept{font-size:var(--gup-fs-xs);color:var(--text-secondary);min-width:0;overflow-wrap:anywhere;grid-area:conc;}
.mxc-tag{font-size:var(--gup-fs-note);color:var(--text-secondary);flex:none;grid-area:tag;
  white-space:nowrap;}
.mxc-more{grid-area:more;}
.mxc-more{flex:none;margin-left:auto;}
@media(max-width:680px){
  .fr-card-top{flex-direction:column;}
  .fr-votes{width:100%;}
}
/* 入力マトリクスは画面幅に収める（横スクロール不要） */
.mxtable.mxinput{min-width:0;max-width:1150px;table-layout:fixed;}
.mxtable.mxinput th.corner{width:64px;}
.mxtable.mxinput tbody th{width:62px;font-size:var(--gup-fs-base);padding:var(--gup-table-cell-block-padding) var(--gup-sp-1);}
.mxtable.mxinput thead th{font-size:var(--gup-fs-sm);padding:var(--gup-table-cell-block-padding) 3px;}
/* UI-MXCELL1（Founder 指摘）：入力できないセルがあるように見えていた。
   実測すると 30 セルとも打てる（disabled 0・readOnly 0）が、**入力欄が行の高さに足りていない**。
   同じ行に長い文が入っていると行は 188px になるのに、空のセルの textarea は 72px のままで、
   セルの下側 116px を押しても何も起きない＝「入力できないセル」に見えていた。
   td を高さの基準にして、textarea をセルいっぱいに広げる（どこを押しても書き始められる）。 */
.mxtable.mxinput td.mxinput-cell{padding:0;vertical-align:top;background:var(--input-bg);height:1px;}
.mxtable.mxinput textarea{width:100%;height:100%;min-height:60px;border:none;background:var(--input-bg);
  /* UI-TYPE3：ここだけ真っ黒（#000000）で、他の入力欄（#17202A）と違っていた。 */
  padding:7px 6px;font-size:var(--gup-fs-base);font-family:inherit;color:var(--text-main);font-weight:var(--gup-font-weight-regular);resize:none;
  line-height:var(--gup-lh-normal);display:block;overflow:hidden;box-sizing:border-box;white-space:pre-wrap;word-break:break-word;}
.mxtable.mxinput textarea:focus{outline:2px solid var(--input-border-focus);outline-offset:-2px;background:var(--input-bg-focus);}
.mxtable.mxinput td.mxinput-cell{min-width:150px;}
/* Gupマトリクス（現状）だけは200手と見た目を揃える（表幅・見出し文字サイズを200手基準に戻す） */
#mxInputTable.mxtable.mxinput{max-width:none;}
#mxInputTable.mxtable.mxinput thead th{font-size:var(--gup-fs-base);padding:var(--gup-sp-2) var(--gup-table-cell-inline-padding);}
#mxInputTable.mxtable.mxinput tbody th{width:96px;font-size:var(--gup-fs-xl);padding:var(--gup-sp-2) var(--gup-sp-2);}
#mxInputTable.mxtable.mxinput th.corner{width:96px;}

.mx-modal{position:fixed;inset:0;background:rgba(23,32,42,.55);z-index:60;
  display:flex;align-items:center;justify-content:center;padding:var(--gup-sp-4);}
.mx-modal-inner{background:var(--white);border-radius:var(--gup-radius-md);max-width:620px;width:100%;
  max-height:80vh;overflow-y:auto;padding:0;}
.mx-modal-head{position:sticky;top:0;background:var(--gup-surface-inverse);color:var(--gup-text-inverse);
  padding:var(--gup-sp-4) var(--gup-sp-4);font-size:var(--gup-fs-xl);font-weight:var(--gup-font-weight-bold);display:flex;justify-content:space-between;
  align-items:center;border-radius:var(--gup-radius-md) var(--gup-radius-md) 0 0;}
/* UI-A11Y1（通し走査）：閉じる ✕ は span だった（tabIndex −1）ので、Tab で届かなかった。
   Escape では閉じられるが、native control を使う契約どおり button にする。
   見た目は変えない（帯の中の文字なので、面も枠も持たせない）。 */
.mx-modal-close{cursor:pointer;font-size:var(--gup-fs-xl);opacity:.85;
  background:none;border:0;padding:0;color:inherit;font-family:inherit;line-height:1;
  min-height:0;min-width:0;}
.mx-modal-close:hover{opacity:1;}
#mxModalList, #mxDetailList{padding:var(--gup-sp-2) 0;}
.mx-item{padding:var(--gup-sp-3) var(--gup-sp-4);border-bottom:1px solid var(--line-soft);}
.mx-item:last-child{border-bottom:none;}
.mx-item .mi-head{display:flex;gap:var(--gup-sp-2);align-items:baseline;}
.mx-item .mi-no{font-size:var(--gup-fs-base);color:var(--text-secondary);font-weight:var(--gup-font-weight-bold);min-width:30px;}
.mx-item .mi-title{font-size:var(--gup-fs-xl);font-weight:var(--gup-font-weight-bold);color:var(--navy);}
.mx-item .mi-concept{font-size:var(--gup-fs-base);color:var(--action-accent);margin-left:var(--gup-sp-2);}
.period-modal-body{padding:var(--gup-sp-4) var(--gup-sp-5);}
.period-field{display:flex;flex-direction:column;gap:var(--gup-sp-1);margin-bottom:var(--gup-sp-4);font-size:var(--gup-fs-sm);font-weight:var(--gup-font-weight-bold);color:var(--text-label);}
.period-field input, .period-field select{border:1px solid var(--input-border);border-radius:var(--gup-radius-sm);padding:9px 10px;
  font-size:var(--gup-fs-base);font-family:inherit;color:var(--navy);background:var(--input-bg);}
.period-field input:focus, .period-field select:focus{border-color:var(--input-border-focus);}
.period-preview{font-size:var(--gup-fs-base);color:var(--text-secondary);background:var(--surface-muted);border-radius:var(--gup-radius-sm);padding:var(--gup-sp-2) var(--gup-sp-3);}
.period-preview b{color:var(--canvas-self);font-size:var(--gup-fs-base);}
.mx-item .mi-detail{font-size:var(--gup-fs-xl);color:var(--text-secondary);margin-top:var(--gup-sp-1);line-height:var(--gup-lh-normal);}
.mx-item .mi-ref{font-size:var(--gup-fs-base);color:var(--text-secondary);margin-top:var(--gup-sp-1);}
.mx-item .mi-ref::before{content:"例：";}

/* 選択トグル（モーダル内） */
.mx-item{display:flex;gap:var(--gup-sp-3);align-items:flex-start;}
.mx-item .mi-body{flex:1;}
.mx-pick{flex:none;margin-top:2px;width:30px;height:30px;border-radius:var(--gup-radius-md);
  border:1px solid var(--navy);background:var(--white);color:var(--navy);cursor:pointer;
  font-size:var(--gup-fs-xl);font-weight:var(--gup-font-weight-bold);display:flex;align-items:center;justify-content:center;}
/* GUP-COLOR-FIX1（CLR-04）：選択中は 面・枠・チェックの 3 つで読む。
   ★白いチェックは暗い配色の金の面で 1.91:1 だった。面と対のインクへ。
   ★枠を面と同じ色にすると「塗りつぶし 1 枚」に見える。選択の枠は別の段にする。 */
.mx-pick.on{background:var(--select-accent);border-color:var(--select-accent-border);color:var(--select-accent-ink);}
.mx-pick.disabled{opacity:.3;cursor:not-allowed;}

/* セルの選択数バッジ */
.mxcell{position:relative;}
.mc-badge{position:absolute;top:4px;right:4px;min-width:18px;height:18px;border-radius:var(--gup-radius-sm);
  background:var(--select-accent);color:var(--select-accent-ink);font-size:var(--gup-fs-base);font-weight:var(--gup-font-weight-bold);
  display:flex;align-items:center;justify-content:center;padding:0 var(--gup-sp-1);}

/* 選んだ戦略リスト */
.mx-sel-empty{color:var(--text-secondary);font-size:var(--gup-fs-xl);font-weight:var(--gup-font-weight-regular);padding:var(--gup-sp-2) 2px;}
.mx-sel-item{display:flex;gap:var(--gup-sp-3);align-items:flex-start;padding:var(--gup-sp-3) var(--gup-sp-1);border-bottom:1px solid var(--line-soft);flex-wrap:wrap;}
.mx-sel-item:last-child{border-bottom:none;}
.mx-sel-tag{flex:none;font-size:var(--gup-fs-base);font-weight:var(--gup-font-weight-bold);color:var(--ura-head-ink);background:var(--gup-surface-inverse);
  border-radius:var(--gup-radius-sm);padding:3px var(--gup-sp-2);white-space:nowrap;margin-top:1px;}
.mx-sel-body{flex:1 1 240px;min-width:0;}
.mx-sel-title{font-size:var(--gup-fs-xl);font-weight:var(--gup-font-weight-bold);color:var(--navy);}
.mx-sel-detail{font-size:var(--gup-fs-base);color:var(--text-secondary);font-weight:var(--gup-font-weight-regular);margin-top:2px;line-height:var(--gup-lh-body);max-width:var(--gup-measure);}
/* UI-TYPE4：自由記載は 16px。 */
.mx-sel-note{width:100%;margin-top:var(--gup-sp-2);min-height:48px;border:1px solid var(--input-border);
  border-radius:var(--gup-radius-sm);padding:var(--gup-sp-2) var(--gup-sp-2);font-size:var(--gup-fs-base);font-family:inherit;color:var(--navy);
  background:var(--input-bg);resize:vertical;line-height:var(--gup-lh-body);box-sizing:border-box;}
.mx-sel-note:focus{border-color:var(--input-border-focus);background:var(--input-bg-focus);}
/* 打ち手→PVQFの効き見込み入力行 */
/* STRATEGY-MU-PRODUCT1：対象が複数行になっても、見出しと P・V・Q は **先頭行**にそろえる
   （中央そろえのままだと、2 行目の対象を指しているように読めてしまう）。 */
.imp-row{display:flex;align-items:flex-start;gap:var(--gup-sp-2);flex-wrap:wrap;margin-top:var(--gup-sp-2);
  background:var(--surface-muted);border:1px solid var(--line);border-radius:var(--gup-radius-sm);padding:var(--gup-table-cell-block-padding) var(--gup-table-cell-inline-padding);}
.imp-lbl{font-size:var(--gup-fs-sm);font-weight:var(--gup-font-weight-bold);color:var(--text-secondary);flex:none;}
/* FOUNDER-WALKTHROUGH-FIX1（W05）：符号の意味を見出しへ小さく添える（説明文を増やさない）。
   太字にしない（見出しの階層を壊さない）。値そのものの符号契約は変えていない。 */
.imp-sign{margin-left:var(--gup-sp-2);font-weight:var(--gup-font-weight-regular);color:var(--text-label);}
.imp-f{display:flex;align-items:center;gap:var(--gup-sp-1);font-size:var(--gup-fs-base);font-weight:var(--gup-font-weight-bold);color:var(--text-soft);}
.imp-f input{width:62px;border:1px solid var(--input-border);border-radius:var(--gup-radius-sm);padding:6px 6px;
  font-size:var(--gup-fs-base);font-weight:var(--gup-font-weight-regular);text-align:right;font-family:inherit;color:var(--navy);background:var(--input-bg);}   /* UI-TYPE4：入力した値は太字にしない */
.imp-f input:focus{border-color:var(--input-border-focus);background:var(--input-bg-focus);}
/* GUP-HOME-PREP1 Gate C：.imp-f.hot / .imp-f.hot input を落とした。
   使う側が STRATEGY-F1C（旧 F％ input の撤去）で消えており、生成 HTML の class に
   .imp-f は 1 つも無い＝この 2 規則は当たっていなかった。
   未定義だった blue token を参照していたのもこの 2 つ。
   ⚠ 残る .imp-f / .imp-f input / .imp-f input:focus も同じ理由で当たっていない（報告のみ）。 */
/* STRATEGY-UX-FIX1 §4：**何を動かすか → 結果 G はいくら増えるか** を同じ 1 行の右端に置く。
   ★input ではなく結果表示（output）。編集できるように見せない。
   ★カードを縦に伸ばさないので、行の中に収める（狭い幅では既存の flex-wrap で折り返す）。 */
.imp-gslot{flex:none;margin-left:auto;}  /* Phase B §5：G は見出し行の右端（この欄でいちばん大事な数字） */
/* STRATEGY-UX-FIX1 §2：動かすレバーだけを ｜ で並べ、→ の先に結果の G を置く。 */
.imp-levers{display:flex;align-items:stretch;flex-wrap:wrap;gap:var(--gup-sp-1);min-width:0;flex:1 1 20em;}
.imp-sep{color:var(--text-label);}
.imp-arrow{color:var(--text-label);font-weight:var(--gup-font-weight-bold);}
.imp-fsum{display:inline-flex;align-items:baseline;gap:var(--gup-sp-1);font-size:var(--gup-fs-sm);color:var(--text-soft);}
.imp-fsum span{font-weight:var(--gup-font-weight-bold);}
.imp-fsum b{font-size:var(--gup-fs-base);color:var(--navy);font-variant-numeric:tabular-nums;}
/* GUP-UX-WORLDCLASS1 Phase 5（UX-47）：編集の入口は tertiary でも当たり判定 34px（compact control）を持つ。見た目は変えない。 */
.imp-more{border:1px dashed var(--line);background:transparent;color:var(--text-secondary);
  border-radius:var(--gup-radius-sm);font-size:var(--gup-fs-sm);font-family:inherit;cursor:pointer;
  min-height:var(--gup-control-compact);padding:0 var(--gup-sp-2);}
/* Phase B — STRATEGY-IMPACT-INPUT-UI1
   通常カードは「選んだ言葉のまま」の 1 行。編集を開いたときだけ
   [ 変化率 ▼ ][ 値 ] 単位 を 1 組ずつ出す（3 つの mode を並べて見せない）。 */
.imp-lever{display:inline-flex;align-items:baseline;font-variant-numeric:tabular-nums;}
.imp-none{color:var(--text-label);font-size:var(--gup-fs-sm);}
.imp-edit{display:inline-flex;align-items:center;flex-wrap:wrap;gap:var(--gup-sp-2);min-width:0;}
.imp-edit-row{display:inline-flex;align-items:center;gap:var(--gup-sp-1);min-width:0;}
.imp-edit-lbl{font-weight:var(--gup-font-weight-bold);color:var(--text-secondary);
  font-size:var(--gup-fs-sm);flex:none;}
.imp-mode{height:var(--gup-control-compact);font-family:inherit;font-size:var(--gup-fs-sm);
  border:1px solid var(--line);border-radius:var(--gup-radius-sm);background:var(--input-bg);
  color:var(--gup-text-primary);padding:0 var(--gup-sp-1);}
.imp-edit-val{width:6.5em;height:var(--gup-control-compact);font-family:inherit;
  font-size:var(--gup-fs-sm);text-align:right;font-variant-numeric:tabular-nums;
  border:1px solid var(--line);border-radius:var(--gup-radius-sm);background:var(--input-bg);
  color:var(--gup-text-primary);padding:0 var(--gup-sp-1);}
.imp-edit-unit{color:var(--text-label);font-size:var(--gup-fs-sm);flex:none;}
/* Phase B（Founder 最終再設計）— 「戦略の影響」は入力フォームではなく **戦略の数値化**。
   視認の優先順位（§12）： G ＞ After ＞ Current ＞ 費目名 ＞ mode/basis/操作 ＞ 補助説明。
   1 レバー ＝ 1 行（費目が複数のときだけ行が増える）。表組みへは戻さない（§23）。 */
.imp-ed{display:flex;flex-direction:column;gap:var(--gup-sp-2);min-width:0;flex:1 1 100%;}
.imp-ed__head{display:flex;align-items:center;flex-wrap:wrap;gap:var(--gup-sp-2);min-width:0;}
.imp-ed__tgt{display:flex;align-items:center;flex-wrap:wrap;gap:var(--gup-sp-1);min-width:0;flex:1 1 auto;}
.imp-ed__tgtname{font-size:var(--gup-fs-sm);color:var(--gup-text-primary);}
/* KD-12（Founder 決定）：読むときの 1 行要約と、その下の「内訳」。
   ★折りたたみの見た目は既存（.ba-legacy > summary）と同じ文法にそろえる。
   ★編集中（.imp-ed--read が付かないとき）には効かない。 */
/* 要約は 1 行に収める（長ければ …）。開けば内訳に全部出るので、ここで折り返さない。 */
.imp-ed__sum{display:inline-block;max-width:calc(100% - 20px);vertical-align:bottom;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.imp-ed__detail{margin-top:var(--gup-sp-1);}
.imp-ed__detail > summary{cursor:pointer;padding:var(--gup-sp-1) 0;font-size:var(--gup-fs-sm);
  color:var(--gup-text-secondary);}
.imp-ed__detail[open] > summary{margin-bottom:var(--gup-sp-1);}
.imp-ed__line{display:flex;align-items:center;flex-wrap:wrap;gap:var(--gup-sp-2);min-width:0;}
.imp-ed__lbl{font-size:var(--gup-fs-note);color:var(--text-secondary);flex:none;}
.imp-ed__chips{display:flex;flex-wrap:wrap;gap:var(--gup-sp-1);min-width:0;}
.imp-ed__chip{height:var(--gup-control-compact);padding:0 var(--gup-sp-2);font-family:inherit;
  font-size:var(--gup-fs-note);border:1px dashed var(--line);border-radius:var(--gup-radius-sm);
  background:transparent;color:var(--text-secondary);cursor:pointer;}
.imp-ed__chip.is-on{border-style:solid;background:var(--input-bg);color:var(--gup-text-primary);}
.imp-ed__lever{display:flex;align-items:baseline;flex-wrap:wrap;gap:var(--gup-sp-2);min-width:0;}
.imp-ed__lever--multi{align-items:flex-start;}
.imp-ed__name{font-size:var(--gup-fs-sm);color:var(--text-secondary);flex:none;min-width:5.5em;}
.imp-ed__item{font-size:var(--gup-fs-sm);color:var(--text-secondary);flex:none;}
.imp-ed__body{display:flex;flex-direction:column;gap:var(--gup-sp-1);min-width:0;flex:1 1 auto;}
.imp-ed__row{display:flex;align-items:baseline;flex-wrap:wrap;gap:var(--gup-sp-2);min-width:0;}
/* Before → After。**この画面の主役**（§2）。 */
.imp-ba{display:inline-flex;align-items:baseline;flex-wrap:wrap;gap:var(--gup-sp-1);min-width:0;
  font-variant-numeric:tabular-nums;}
.imp-ba__before{font-size:var(--gup-fs-base);color:var(--text-secondary);}
.imp-ba__before--none{font-size:var(--gup-fs-sm);color:var(--text-label);}
.imp-ba__arrow{color:var(--text-label);flex:none;}
.imp-ba__after{font-size:var(--gup-fs-lg);font-weight:var(--gup-font-weight-bold);color:var(--navy);}
.imp-ba__chg{font-size:var(--gup-fs-sm);color:var(--text-secondary);}
/* 操作は「手段」。数字より目立たせない（§3・§12）。 */
.imp-ed__ctl{display:inline-flex;align-items:center;flex-wrap:wrap;gap:var(--gup-sp-1);min-width:0;}
.imp-ed__cur{display:inline-flex;align-items:baseline;gap:var(--gup-sp-1);flex-wrap:wrap;
  font-size:var(--gup-fs-note);color:var(--text-secondary);font-variant-numeric:tabular-nums;}
.imp-ed__cur--none{color:var(--text-label);}
.imp-ed__curlbl{flex:none;}
.imp-ed__curcell{font-size:var(--gup-fs-note);}
.imp-ed__res{font-size:var(--gup-fs-sm);color:var(--gup-text-primary);
  font-variant-numeric:tabular-nums;flex:none;}
.imp-ed__ro{font-size:var(--gup-fs-sm);color:var(--gup-text-primary);font-variant-numeric:tabular-nums;}
.imp-ed__note{font-size:var(--gup-fs-note);color:var(--text-secondary);}
.imp-ed__err{margin:0;font-size:var(--gup-fs-note);color:var(--text-secondary);}  /* 入力の不備は文言だけで伝える（色を足さない・UI-SYSTEM1-1B2） */
.imp-basis,.imp-ed__pick{height:var(--gup-control-compact);font-family:inherit;
  font-size:var(--gup-fs-note);border:1px solid var(--line);border-radius:var(--gup-radius-sm);
  background:var(--input-bg);color:var(--text-secondary);padding:0 var(--gup-sp-1);max-width:13em;}
/* ＋費目を追加・削除・導線は text link 程度の軽さ（§9）。横幅いっぱいにしない。 */
.imp-ed__add,.imp-ed__del,.imp-ed__link{align-self:flex-start;padding:0;
  font-family:inherit;font-size:var(--gup-fs-note);border:0;background:transparent;
  color:var(--text-secondary);cursor:pointer;text-decoration:underline;}
.imp-g{display:inline-flex;align-items:baseline;gap:var(--gup-sp-1);font-size:var(--gup-fs-sm);
  color:var(--text-secondary);}
.imp-g__lbl{font-weight:var(--gup-font-weight-bold);flex:none;}
.imp-g__ba{font-size:var(--gup-fs-sm);color:var(--text-secondary);font-variant-numeric:tabular-nums;}
.imp-g__arrow{color:var(--text-label);}
.imp-g__val{font-size:var(--gup-fs-xl);font-weight:var(--gup-font-weight-bold);color:var(--navy);
  font-variant-numeric:tabular-nums;}
/* STRATEGY-MU-PRODUCT1：「対象」は 1 系統だけ。1 件なら従来どおり 1 行、複数なら同じ枠の中で縦に並ぶ。 */
.imp-target{display:flex;align-items:baseline;gap:var(--gup-sp-1);font-size:var(--gup-fs-sm);font-weight:var(--gup-font-weight-bold);color:var(--text-secondary);}
.imp-target__lbl{flex:none;}
.imp-target__rows{display:flex;flex-direction:column;gap:var(--gup-sp-1);align-items:flex-start;min-width:0;max-width:100%;}
/* [hidden] を UA の既定より確実に効かせる（display 指定が勝たないようにする） */
.imp-target__row:not([hidden]){display:flex;align-items:center;gap:var(--gup-sp-1);min-width:0;max-width:100%;}
.imp-target select{border:1px solid var(--input-border);border-radius:var(--gup-radius-sm);padding:6px var(--gup-sp-1);max-width:150px;
  font-size:var(--gup-fs-base);font-weight:var(--gup-font-weight-regular);font-family:inherit;color:var(--navy);background:var(--input-bg);cursor:pointer;}
.imp-target select:focus{border-color:var(--input-border-focus);}
/* 管理単位｜商品 は文字数が多いので、商品名が読める幅まで伸ばす（狭い画面では縮む）。
   ★`.imp-target select` の max-width:150px より詳細度を上げないと、名前が途中で切れる。 */
.imp-target .imp-target__sel{flex:0 1 auto;width:auto;min-width:0;max-width:min(24em,100%);}
.imp-target__del{flex:none;cursor:pointer;color:var(--icon-muted);font-size:var(--gup-fs-base);font-weight:var(--gup-font-weight-bold);
  padding:var(--gup-sp-1);background:none;border:none;font-family:inherit;line-height:1;}
.imp-target__del:hover{color:var(--bad);}
.imp-target__add{align-self:flex-start;cursor:pointer;background:none;border:none;padding:var(--gup-sp-1) 0;font-family:inherit;
  font-size:var(--gup-fs-sm);font-weight:var(--gup-font-weight-regular);color:var(--gup-color-accent);}
.imp-target__add:disabled{color:var(--text-label);cursor:default;}
.imp-target__err{margin:0;font-size:var(--gup-fs-sm);font-weight:var(--gup-font-weight-regular);color:var(--text-secondary);}
.imp-znote{font-size:var(--gup-fs-note);color:var(--text-warm-dark);width:100%;}
.mx-sel-remove{flex:none;cursor:pointer;color:var(--icon-muted);font-size:var(--gup-fs-xl);font-weight:var(--gup-font-weight-bold);padding:2px var(--gup-sp-1);
  background:none;border:none;font-family:inherit;line-height:1;}
.mx-sel-remove:hover{color:var(--bad);}

/* 裏マトリクス */
.uratable thead th{background:var(--ura-head);}
.uratable thead th.corner{background:var(--ura-head-dark);}
.uratable tbody th{background:var(--panel-red-bg);color:var(--ura-head);}
.uratable td.mxcell:hover{background:var(--panel-red-bg);}
.uratable td.mxcell .mc-count{background:var(--panel-red-line);}
.uratable td.mxcell:hover .mc-count{background:var(--bad);color:var(--gup-text-inverse);}
.ura-diag{color:var(--ura-soft-text);}
.mi-ura-how{font-size:var(--gup-fs-xl);color:var(--text-secondary);margin-top:var(--gup-sp-1);line-height:var(--gup-lh-normal);}
.mi-ura-ex{font-size:var(--gup-fs-base);color:var(--text-warm-dark);margin-top:var(--gup-sp-1);}
.mi-ura-ex::before{content:"事例：";color:var(--text-warm-muted);}
.mi-ura-type{font-size:var(--gup-fs-sm);color:var(--gup-text-inverse);background:var(--bad);border-radius:var(--gup-radius-sm);padding:2px var(--gup-sp-2);margin-left:var(--gup-sp-2);}
/* 新規戦略セル内の裏（奇跡）印 */
.mxnew-ura{display:inline-block;font-size:var(--gup-fs-sm);color:var(--gup-text-inverse);background:var(--bad);
  border-radius:var(--gup-radius-sm);padding:1px var(--gup-sp-1);margin-right:var(--gup-sp-1);font-weight:var(--gup-font-weight-bold);}

/* ドット投票 */
.mx-sel-vote{flex:0 0 auto;min-width:160px;display:flex;flex-direction:column;gap:var(--gup-sp-1);
  background:var(--input-bg);border:1px solid var(--input-border);border-radius:var(--gup-radius-md);padding:var(--gup-sp-2) var(--gup-sp-3);}
.vote-axis{display:flex;align-items:center;gap:var(--gup-sp-2);}
/* UI-TYPE4：項目名は 14px。 */
.vote-label{font-size:var(--gup-fs-sm);color:var(--text-secondary);width:48px;flex:none;font-weight:var(--gup-font-weight-bold);}
.vote-dots{display:flex;gap:var(--gup-sp-1);}
/* FOUNDER-WALKTHROUGH-FIX1（W06）：効果・実現性・ワクワクの丸が横長の楕円になっていた。
   原因は border-radius ではなく **flex に潰されて幅だけ縮む**こと（高さは 16px のまま）。
   flex:none で縮ませず、aspect-ratio で 1:1 を保つ。 */
/* VER1-FINAL-UIUX-MERGE-FIX1（EXT-B5）：見える丸は 16px のまま、当たり判定だけ 24px 以上へ。
   pseudo-element は要素のヒット領域に含まれるので、間隔もカード高さも変えずに済む。 */
.vdot{position:relative;width:16px;height:16px;flex:none;aspect-ratio:1/1;border-radius:50%;
  border:1px solid var(--chart-axis);background:var(--white);
  cursor:pointer;transition:transform .1s;box-sizing:border-box;padding:0;font-family:inherit;}
.vdot:hover{transform:scale(1.18);}
.vdot:focus-visible{outline:2px solid var(--action-accent);outline-offset:2px;}
.vdot.on{background:var(--vc);border-color:var(--vc);}
/* EXT-B5：16px の丸の周囲 ±4px を同じボタンの当たり判定にする（見た目は不変・24×24 以上） */
.vdot::after{content:'';position:absolute;inset:-4px;border-radius:50%;}
.vote-total{font-size:var(--gup-fs-base);color:var(--text-label);font-weight:var(--gup-font-weight-regular);margin-top:3px;border-top:1px dashed var(--line);padding-top:var(--gup-sp-1);}
.vote-total b{font-size:var(--gup-fs-xl);color:var(--navy);}
.vote-total span{color:var(--text-secondary);}

/* 3C分析 — UI-NAV1 以降、顧客／競合／自社はサブタブで 1 つずつ出す（横並びの grid は使わない） */
/* UI-3C-GRID1（Founder 指摘）：顧客は 2×2・競合は 2 列。狭い画面は 1 列へ戻す。 */
.threec-grid2{display:grid;grid-template-columns:1fr;column-gap:var(--gup-sp-3);}
.threec-field{display:flex;flex-direction:column;min-width:0;}
#competitorList{display:grid;grid-template-columns:1fr;column-gap:var(--gup-sp-3);align-items:start;}
.threec-col{border:1px solid var(--line);border-radius:var(--gup-radius-md);overflow:hidden;display:flex;flex-direction:column;}
/* V2-AB1（Phase B）：3C の列は見出しで分かる。列を丸ごと塗らず、枠と上端のマーカーで示す。 */
.threec-col.tc-customer{border-color:var(--panel-blue-line);border-top:3px solid var(--gup-info);}
.threec-col.tc-competitor{border-color:var(--panel-red-line);border-top:3px solid var(--gup-negative);}
.threec-col.tc-company{border-color:var(--panel-teal-line);border-top:3px solid var(--company-teal);}
.threec-head{display:flex;align-items:center;gap:var(--gup-sp-2);color:var(--navy);font-size:var(--gup-fs-xl);font-weight:var(--gup-font-weight-bold);
  letter-spacing:.04em;padding:var(--gup-sp-4) var(--gup-sp-4) var(--gup-sp-3);border-bottom:1px solid var(--line);background:var(--card);}
.threec-head .bar{width:4px;height:14px;border-radius:2px;display:inline-block;flex:none;}
/* UI-3CSIZE1：項目名は「読む文字」なので濃い黒（SWOT の S/W/O/T と同じ段にそろえる）。 */
/* UI-TYPE4：項目名は 14px。 */
/* V2-AB1（Phase A）：項目名は補助。入力した内容と同じ重さにしない。 */
.threec-lbl{font-size:var(--gup-fs-sm);font-weight:var(--gup-type-label-weight);color:var(--text-main);padding:10px var(--gup-sp-3) var(--gup-sp-1);}
/* 自由記載の文字は本文と同じ大きさにそろえる（UI-MXCELL1・Founder 指摘）。
   --gup-fs-xl（20px）は screen heading の段。長文を書く欄に見出しの大きさを当てない。 */
.threec-ta{margin:0 var(--gup-sp-3) var(--gup-sp-2);border:1px solid var(--input-border);border-radius:var(--gup-radius-sm);padding:var(--gup-sp-2) 9px;
  font-size:var(--gup-fs-base);font-family:inherit;color:var(--navy);background:var(--input-bg);resize:vertical;min-height:54px;line-height:var(--gup-lh-body);}
/* UI-3C-SIZE2：顧客だけの特例 min-height は撤去（3C は全部 6 行で統一） */
.threec-ta:focus{border-color:var(--input-border-focus);background:var(--input-bg-focus);}

/* UI-TYPE4（Founder 判断）：会社盤の部門名は入力欄なので 16px・標準ウェイト。
   18px は画面名の段なので、入力欄には使わない。
   ★寸法は 1B2 のブロックが持つ。ここは文字階層だけを置く（2 つの責任を混ぜない）。 */
input.cf-box-name{font-size:var(--gup-fs-base);font-weight:var(--gup-font-weight-regular);}
/* UI-3CSIZE1：② の補足文は他の画面の補足と同じ大きさ（.help の 20px は上位画面の帯用）。 */
.threec-note{font-size:var(--gup-fs-sm);}
/* 戦略投資の現状（4分類チップ：赤青黄緑）。橙(保険・リスク管理)は削除済み。 */
.chip-grid{display:grid;grid-template-columns:1fr;gap:var(--gup-sp-3);}
@media(min-width:760px){.chip-grid{grid-template-columns:repeat(2,1fr);}}
@media(min-width:1100px){.chip-grid{grid-template-columns:repeat(4,1fr);}}
.chip-cell{border:1px solid var(--line);border-radius:var(--gup-radius-md);padding:var(--gup-sp-3);}
/* V2-AB1（Phase B・Founder 決定）：戦略費 4 区分の識別は **枠 ＋ 見出しの色名 ＋ 丸（チップ）**。
   面は neutral のまま。色そのものと割当は 1 つも変えていない。 */
.chip-red{border-color:var(--panel-red-line);border-left:4px solid var(--chip-red);}
.chip-blue{border-color:var(--panel-blue-line);border-left:4px solid var(--chip-blue);}
.chip-yellow{border-color:var(--surface-warn-line);border-left:4px solid var(--chip-yellow);}
.chip-green{border-color:var(--panel-green-line);border-left:4px solid var(--chip-green);}
.chip-h{font-size:var(--gup-fs-xl);font-weight:var(--gup-font-weight-bold);color:var(--navy);display:flex;align-items:center;gap:var(--gup-sp-2);}
.chip-eff{font-size:var(--gup-fs-sm);color:var(--text-secondary);margin:var(--gup-sp-1) 0 var(--gup-sp-2) var(--gup-sp-5);line-height:var(--gup-lh-normal);}
@media(min-width:760px){.chip-eff{min-height:3em;}} /* 4列時は2行分の高さで揃え、チップ段の縦位置を統一 */
.chip-ta{margin:0!important;width:100%;background:var(--input-bg)!important;min-height:90px;font-size:var(--gup-fs-base);}
/* チップの枚数（0〜5）トークン */
.chip-tokens{display:flex;align-items:center;gap:var(--gup-sp-1);margin:2px 0 var(--gup-sp-3);flex-wrap:wrap;}
/* UI-TYPE2 step4：button は指定しないとブラウザ既定（13.3333px）になる。type scale へそろえる。 */
.chip-token{width:30px;height:30px;border-radius:50%;border:2.2px dashed var(--chip-token-border);background:var(--white);
  cursor:pointer;padding:0;flex:none;transition:transform .08s;font-size:var(--gup-fs-sm);}
.chip-token.on{border-style:solid;box-shadow:inset 0 -3px 4px rgba(0,0,0,.22), 0 1px 2px rgba(0,0,0,.15);}
.chip-token:active{transform:scale(0.92);}
.chip-lv-num{font-size:var(--gup-fs-base);font-weight:var(--gup-font-weight-bold);color:var(--navy);margin-left:var(--gup-sp-1);min-width:2.6em;}
.chip-lv-zero{color:var(--text-soft);font-weight:var(--gup-font-weight-regular);}

/* 戦略投資：現状→来期の金額入力行 */
.chip-amt-row{display:flex;align-items:center;gap:var(--gup-sp-2);margin:0 0 var(--gup-sp-3);flex-wrap:wrap;}
.chip-amt-lbl{font-size:var(--gup-fs-sm);color:var(--text-secondary);font-weight:var(--gup-font-weight-bold);flex:none;}
.chip-amt-input{width:88px;flex:none;padding:6px var(--gup-sp-2);font-size:var(--gup-fs-base);font-weight:var(--gup-font-weight-regular);text-align:right;   /* UI-TYPE5：入力した値は太字にしない */
  border:1px solid var(--line);border-radius:var(--gup-radius-sm);background:var(--input-bg);color:var(--navy);}
.chip-amt-readonly{width:88px;flex:none;padding:var(--gup-sp-2) var(--gup-sp-2);font-size:var(--gup-fs-base);font-weight:var(--gup-font-weight-bold);text-align:right;
  color:var(--text-secondary);}
/* 戦略投資の来期計画カード：「現状」「来期」を1行ずつにまとめ、各行に金額とチップ枚数（0〜5）を横並びで置く。
   現状行は①のchiplv_*をそのまま表示する読み取り専用、来期行はここだけの新しい値（chiplv_next_*）を
   クリックで選べる。通常のchip-tokenより一回り小さいminiバリアントとして別クラスにしている。 */
.chip-plan{display:flex;flex-direction:column;gap:var(--gup-sp-2);margin:0 0 var(--gup-sp-3);}
.chip-plan-row{display:flex;align-items:center;gap:var(--gup-sp-2);flex-wrap:wrap;}
.chip-plan-lbl{font-size:var(--gup-fs-sm);color:var(--text-secondary);font-weight:var(--gup-font-weight-bold);flex:none;width:32px;}
/* UI-CHIP-PLAN1：現状との差（＋1,000 ／ ＋1枚）。補足の段で、値そのものより弱く。 */
.chip-plan-diff{font-size:var(--gup-fs-sm);color:var(--text-secondary);white-space:nowrap;font-variant-numeric:tabular-nums;}
.chip-tokens-mini{display:flex;align-items:center;gap:3px;flex-wrap:wrap;}
.chip-token-mini{width:15px;height:15px;border-radius:50%;border:1.6px dashed var(--chip-token-border);
  background:var(--white);padding:0;flex:none;font-size:var(--gup-fs-sm);}
.chip-token-mini.on{border-style:solid;}
.chip-token-mini.interactive{cursor:pointer;transition:transform .08s;
  /* EXT-B5：見える丸は 15px のまま、当たり判定だけ ±5px 広げて 25×25 にする（間隔・行高は不変） */
  position:relative;}
.chip-token-mini.interactive::after{content:'';position:absolute;inset:-5px;border-radius:50%;}
.chip-token-mini.interactive:active{transform:scale(0.88);}
.chip-lv-num-mini{font-size:var(--gup-fs-note);font-weight:var(--gup-font-weight-bold);color:var(--navy);margin-left:3px;min-width:2.2em;}
.chip-lv-num-mini.zero{color:var(--text-soft);font-weight:var(--gup-font-weight-regular);}
/* 戦略チップの投資額合計は、以前はカード下部に横長のブロックとして表示していたが、
   相馬さんの指示で小見出し「戦略チップ」の右側に移動した。cf-col-h-totalクラスの
   コンパクトな1行表示に収まるよう、中身のHTML（renderChipTotalsが生成）も合わせて短くしている。 */
#chipTotalRow{display:inline-flex;align-items:baseline;gap:var(--gup-sp-1);}
#chipTotalRow .ctr-diff-pos{color:var(--text-success);}
#chipTotalRow .ctr-diff-neg{color:var(--bad);}

/* 競合カード（3C内） */
.comp-card{margin:var(--gup-sp-2) var(--gup-sp-3);border:1px solid var(--line);border-radius:var(--gup-radius-md);padding:var(--gup-sp-2) var(--gup-sp-3);background:var(--surface-row);}
.comp-card-head{display:flex;align-items:center;gap:var(--gup-sp-2);margin-bottom:var(--gup-sp-2);}
.comp-swatch{width:14px;height:14px;border-radius:var(--gup-radius-sm);flex:none;}
/* UI-3CSIZE1（Founder 指示）：② の 3 画面（顧客・競合・自社）で文字の大きさをそろえる。
   競合だけ 20px・太字で、顧客と自社（16px・標準）とバラバラに見えていた。
   入力した内容は他の欄と同じ 16px・標準ウェイト（入力値を太字にしない＝UI-TYPE1）。 */
.comp-name{flex:1;border:1px solid var(--input-border);border-radius:var(--gup-radius-sm);padding:6px var(--gup-sp-2);font-size:var(--gup-fs-base);
  font-weight:var(--gup-font-weight-regular);font-family:inherit;color:var(--navy);background:var(--input-bg);}
.comp-name:focus{border-color:var(--input-border-focus);background:var(--input-bg-focus);}
/* UI-3CSIZE1：削除の ✕ も本文と同じ大きさ（ここだけ 20px だと 3C の中で浮く）。 */
.comp-del{cursor:pointer;color:var(--icon-muted);font-size:var(--gup-fs-base);font-weight:var(--gup-font-weight-bold);flex:none;
  background:none;border:none;padding:0;font-family:inherit;line-height:1;}
.comp-del:hover{color:var(--bad);}
.comp-sw{width:100%;border:1px solid var(--input-border);border-radius:var(--gup-radius-sm);padding:7px var(--gup-sp-2);font-size:var(--gup-fs-base);
  font-family:inherit;color:var(--navy);background:var(--input-bg);resize:vertical;min-height:88px;line-height:var(--gup-lh-body);}
.comp-sw:focus{border-color:var(--input-border-focus);background:var(--input-bg-focus);}

/* 戦略キャンバス */
.industry-pick{display:flex;align-items:center;gap:var(--gup-sp-3);flex-wrap:wrap;margin:var(--gup-sp-1) 0 var(--gup-sp-3);
  background:var(--surface-muted);border:1px solid var(--line);border-radius:var(--gup-radius-md);padding:var(--gup-sp-2) var(--gup-sp-3);}
.industry-pick label{display:flex;align-items:center;gap:var(--gup-sp-2);font-size:var(--gup-fs-base);font-weight:var(--gup-font-weight-bold);color:var(--text-label);}
.industry-pick select{border:1px solid var(--input-border);border-radius:var(--gup-radius-sm);padding:7px var(--gup-sp-2);
  font-size:var(--gup-fs-base);font-weight:var(--gup-font-weight-regular);font-family:inherit;color:var(--navy);background:var(--input-bg);cursor:pointer;max-width:220px;}
.industry-note{font-size:var(--gup-fs-sm);   /* UI-TYPE4：補足は 14px */color:var(--text-secondary);line-height:var(--gup-lh-body);max-width:var(--gup-measure);}
/* 業種選択：③戦略キャンバスの候補と会社盤の製造名、両方の起点。
   UIとしてはヘッダーの「メニュー」→「業種選択」に一本化し、ここ（①タブ内）は非表示にしている
   （下の.industry-pick-t1{display:none}）。#industrySelT1自体は業種選択ロジックの実体として
   DOM上に残す。 */
.industry-pick-t1{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:10px 0 14px;
  background:var(--surface-muted);border:1px solid var(--line);border-radius:var(--gup-radius-md);padding:10px 14px;}
.industry-pick-t1 label{display:flex;align-items:center;gap:var(--gup-sp-2);font-size:var(--gup-fs-base);font-weight:var(--gup-font-weight-bold);color:var(--text-label);}
.industry-pick-t1 select{border:1px solid var(--input-border);border-radius:var(--gup-radius-sm);padding:7px var(--gup-sp-2);
  font-size:var(--gup-fs-base);font-weight:var(--gup-font-weight-regular);font-family:inherit;color:var(--navy);background:var(--input-bg);cursor:pointer;max-width:220px;}
#industryMore{font-size:var(--gup-fs-sm);color:var(--text-secondary);margin:-4px 0 var(--gup-sp-3);padding:0 2px;}
#industryMore b{color:var(--canvas-self);}
#industryMore .im-chip{display:inline-block;border:1px dashed var(--input-border);border-radius:var(--gup-radius-sm);
  padding:var(--gup-sp-1) var(--gup-sp-3);margin:var(--gup-sp-1) var(--gup-sp-2) 0 0;cursor:pointer;font-weight:var(--gup-font-weight-regular);color:var(--navy);background:var(--white);}
#industryMore .im-chip:hover{border-color:var(--canvas-self);color:var(--canvas-self);}
.canvas-chart-wrap{width:100%;overflow-x:auto;background:var(--white);border:1px solid var(--line);border-radius:var(--gup-radius-md);padding:var(--gup-sp-2);}
#canvasChart{width:100%;min-width:640px;height:auto;display:block;}
.canvas-legend{display:flex;gap:18px;justify-content:center;margin:var(--gup-sp-3) 0 var(--gup-sp-1);flex-wrap:wrap;}
.cl-item{display:flex;align-items:center;gap:var(--gup-sp-2);font-size:var(--gup-fs-xl);color:var(--navy);font-weight:var(--gup-font-weight-bold);}
.cl-swatch{width:16px;height:4px;border-radius:2px;display:inline-block;}
.cl-swatch-dash{width:16px;height:0;border-top:2.5px dashed;background:none!important;}
.canvas-table{width:100%;min-width:640px;border-collapse:collapse;font-size:var(--gup-fs-xl);}
/* UI-TYPE2：列見出しは 12px（正本の段）。② 戦略キャンバスと ⑤ 決算期別の表が共有する規則。 */
.canvas-table th{font-size:var(--gup-fs-note);color:var(--text-label);font-weight:var(--gup-font-weight-bold);padding:6px;border-bottom:1px solid var(--line);white-space:nowrap;}
.canvas-table th.num{text-align:right;}
.canvas-table td{padding:5px 6px;border-bottom:1px solid var(--line-soft);}
.canvas-table input[type=text]{width:100%;border:1px solid var(--input-border);background:var(--input-bg);border-radius:5px;padding:7px 7px;font-size:var(--gup-fs-xl);font-family:inherit;color:var(--navy);}
.canvas-table input[type=text]:focus{border-color:var(--input-border-focus);background:var(--input-bg-focus);}
.canvas-table input[type=number]{width:58px;text-align:right;border:1px solid var(--input-border);border-radius:5px;padding:6px 6px;font-size:var(--gup-fs-xl);-moz-appearance:textfield;background:var(--input-bg);color:var(--navy);}
/* UI-TYPE4：入力欄の値は 16px・標準ウェイト。 */
.canvas-table select.cscore{width:74px;border:1px solid var(--input-border);border-radius:5px;padding:6px var(--gup-sp-1);
  font-size:var(--gup-fs-base);font-family:inherit;font-weight:var(--gup-font-weight-regular);background:var(--input-bg);color:var(--navy);cursor:pointer;}
.canvas-table select.cscore:focus{border-color:var(--input-border-focus);background:var(--input-bg-focus);}
.cscore-th{font-size:var(--gup-fs-note);font-weight:var(--gup-font-weight-regular);color:var(--text-muted);}
.cscore-guide{background:var(--surface-muted);border:1px solid var(--line);border-radius:var(--gup-radius-md);padding:var(--gup-sp-2) var(--gup-sp-3);
  font-size:var(--gup-fs-base);color:var(--text-secondary);margin:var(--gup-sp-3) 0 var(--gup-sp-1);line-height:var(--gup-lh-body);}
.canvas-table input[type=number]::-webkit-outer-spin-button,.canvas-table input[type=number]::-webkit-inner-spin-button{-webkit-appearance:none;margin:0;}
.canvas-table .cd-self input{border-color:var(--strategy-self-line);}
.canvas-table .cd-a input{border-color:var(--strategy-a-line);}
.canvas-table .cd-b input{border-color:var(--strategy-b-line);}
.canvas-table .del{cursor:pointer;color:var(--icon-muted);font-size:var(--gup-fs-xl);font-weight:var(--gup-font-weight-bold);}
.canvas-table .del:hover{color:var(--bad);}

/* ERRC */
.errc-grid{display:grid;gap:var(--gup-sp-3);}
@media(min-width:720px){.errc-grid{grid-template-columns:1fr 1fr;}
  .threec-grid2{grid-template-columns:1fr 1fr;}   /* UI-3C-GRID1：顧客の 4 枠は広い画面で 2×2 */
  #competitorList{grid-template-columns:1fr 1fr;}   /* UI-3C-GRID1：競合の記入セルも左右 2 列 */
}
.errc-cell{border:1px solid var(--line);border-radius:var(--gup-radius-md);padding:var(--gup-sp-3);}
.errc-remove{background:var(--panel-red-bg);border-color:var(--panel-red-line);}
.errc-reduce{background:var(--surface-warn);border-color:var(--surface-warn-line);}
.errc-raise{background:var(--panel-blue-bg);border-color:var(--panel-blue-line);}
.errc-create{background:var(--panel-green-bg);border-color:var(--panel-green-line);}
.errc-head{font-size:var(--gup-fs-xl);font-weight:var(--gup-font-weight-bold);color:var(--navy);
  display:flex;align-items:baseline;gap:var(--gup-sp-2);flex-wrap:wrap;}
/* UI-ERRC-TITLE1（Founder 判断）：E/C は「有無」が変わり、R/R は「程度」が変わる。
   これは見出しと同じ強さで出す（並びは 日本語名 →【数字】→ 英語名）。
   下の to-be は 0〜5 のスコアなので、区別は ? の説明で言葉にしてある。 */
.errc-head-ja, .errc-head-en{white-space:nowrap;}
.errc-head-hint{font-variant-numeric:tabular-nums;white-space:nowrap;}
.errc-sub{font-size:var(--gup-fs-base);color:var(--text-label);font-weight:var(--gup-font-weight-regular);margin:3px 0 var(--gup-sp-2);line-height:var(--gup-lh-body);}
.errc-ta{width:100%;border:1px solid var(--input-border);border-radius:var(--gup-radius-sm);padding:var(--gup-sp-2) var(--gup-sp-2);
  font-size:var(--gup-fs-base);font-family:inherit;color:var(--navy);background:var(--input-bg);resize:vertical;min-height:64px;line-height:var(--gup-lh-body);}
.errc-ta:focus{border-color:var(--input-border-focus);background:var(--input-bg-focus);}
.errc-tobe-row{display:flex;align-items:center;gap:var(--gup-sp-2);margin-top:var(--gup-sp-2);flex-wrap:wrap;}
.errc-tobe-row select{border:1px solid var(--input-border);border-radius:var(--gup-radius-sm);padding:6px 6px;
  font-size:var(--gup-fs-base);font-weight:var(--gup-font-weight-regular);font-family:inherit;color:var(--navy);background:var(--input-bg);cursor:pointer;}
.errc-tobe-row select[data-errc-target]{max-width:150px;}
.errc-tobe-row select[data-errc-tobe]{width:64px;}
.errc-tobe-row select:disabled{opacity:.45;cursor:not-allowed;}
.errc-tobe-row span{font-size:var(--gup-fs-sm);color:var(--text-secondary);font-weight:var(--gup-font-weight-regular);}   /* UI-TYPE5：接続語は補足 */
.errc-ba{margin-top:var(--gup-sp-2);font-size:var(--gup-fs-sm);font-weight:var(--gup-font-weight-regular);   /* UI-TYPE5：本文は太字にしない */color:var(--canvas-self);}
.errc-rows{display:flex;flex-direction:column;gap:var(--gup-sp-3);}
.errc-row{padding-top:var(--gup-table-cell-block-padding);border-top:1px dashed var(--line);}
.errc-row:first-child{padding-top:0;border-top:none;}
.errc-memo-input{width:100%;border:1px solid var(--input-border);border-radius:var(--gup-radius-sm);padding:var(--gup-sp-2) 9px;
  font-size:var(--gup-fs-base);font-family:inherit;color:var(--navy);background:var(--input-bg);box-sizing:border-box;}
.errc-memo-input:focus{border-color:var(--input-border-focus);background:var(--input-bg-focus);}
.errc-row .errc-tobe-row{margin-top:var(--gup-sp-2);}
/* UI-TYPE4：文字のボタンは 16px。 */
.errc-add{margin-top:var(--gup-sp-3);border:1px dashed var(--input-border);border-radius:var(--gup-radius-sm);background:none;
  color:var(--text-secondary);font-size:var(--gup-fs-base);font-weight:var(--gup-font-weight-bold);padding:6px var(--gup-sp-3);cursor:pointer;font-family:inherit;}
.errc-add:hover{border-color:var(--canvas-self);color:var(--canvas-self);}

/* ヘッダー内のコンパクト版（濃色背景） */
header .boxdia-wrap.header-box{padding:var(--gup-sp-1) 0 9px;overflow-x:auto;overflow-y:hidden;
  max-height:420px;opacity:1;transition:max-height .25s ease,opacity .2s ease,padding .25s ease;}
header.hb-collapsed .boxdia-wrap.header-box{max-height:0;opacity:0;padding-top:0;padding-bottom:0;}
/* UI-HEADER4: ミニKPI が 5 つになったぶん、右側の 2 つが折り返していたので
   （「使い / 方」「MQサマリーを開 / く」）、1 行のまま縮まないようにする。 */
.hb-toggle{background:none;border:none;color:var(--header-muted);font-size:var(--gup-fs-note);font-weight:var(--gup-font-weight-bold);
  cursor:pointer;padding:3px 0 3px 14px;font-family:inherit;border-left:1px solid var(--header-line);
  white-space:nowrap;flex:none;}
.hb-toggle:hover{color:var(--gup-text-inverse);}
header .bd-right{width:380px;height:240px;background:transparent;}
/* V2-AB1（Phase A）：ヘッダの MQ サマリーも、名札は 400・値は 700。
   本文の MQ 図（.bd-lbl / .bd-val）と同じ読み方にする。 */
header .bd-lbl{font-size:var(--gup-fs-base);font-weight:var(--gup-font-weight-regular);}
header .bd-val{font-size:var(--gup-fs-xl);font-weight:var(--gup-font-weight-bold);line-height:1.15;}
/* FOUNDER-WALKTHROUGH-FIX2（W07）：F と G の箱だけ縦が 79px と低く、
   「239,000 → 253,290」が 3 行に折れて箱からはみ出していた（実測 中身 91px / 箱 79px）。
   図の大きさも他のセルの文字も変えず、**F/G の数値だけ**を 1 段下げて 2 行に収める。
   実測：20px→3 行 91px ／ 18px→2 行 63px（なお 1px はみ出す）／ 16px→2 行 59px（収まる）。 */
header .bd-c-F .bd-val, header .bd-c-G .bd-val{font-size:var(--gup-fs-base);}
header .bd-cell.changed{box-shadow:inset 0 0 0 3px var(--white), inset 0 0 0 5px rgba(0,0,0,.65);}
.mobile-use-note{display:none;}
/* ---------------------------------------------------------------------------
   Phase UI-SYSTEM1-1B2 — components 側の control 寸法
   ------------------------------------------------------------------------- */

/* 主要操作（④ 戦略立案のシナリオ操作など）は standard。
   いまは 43 / 45 / 47px と 3 通りある。**standard へ着地させるため上下 padding を 0 にし、
   label は inline-flex で上下中央**（.gup-btn と同じ作り）。 */
button.action, select.scn{
  min-height:var(--gup-control-standard);
  padding-block:0;
  padding-inline:var(--gup-control-padding-inline-standard);
}

/* ヘッダーの「MQサマリーを開く」は開閉の補助操作。22 / 24px と 25px 未満だったので
   compact（34px）へ。standard にするとヘッダーが厚くなり、主役が下へ押される。 */
button.hb-toggle{ min-height:var(--gup-control-compact); padding-block:0; }

/* 生成行の中の補助入力は compact（行が縦に積み上がるため）。
   element を付けて、base.css の input[type=text] と同じ詳細度で受け直す。 */
input.fcnote, input.srnote, input.chip-amt-input{ min-height:var(--gup-control-compact); padding-block:0; }

/* CF ボックス：名前は standard、個数は compact（数字だけの狭い欄） */
input.cf-box-name{ min-height:var(--gup-control-standard); }
input.cf-box-count-input{ min-height:var(--gup-control-compact); padding-block:0; }

/* textarea は固定高にしない。**下限**だけを token で決め、上下 padding を揃える。
   すでに大きな下限を持つもの（.chip-ta 90px / .cf-box-desc 128px）は
   設計された高さなので下げない。 */
.threec-ta:not(.chip-ta){ min-height:var(--gup-textarea-min-height); }
.cf-box-desc.cf-box-hq-desc{ min-height:var(--gup-textarea-min-height); }

/* range slider：track（8px）も thumb（22px）も変えない。
   **操作行**の高さだけを compact へ合わせて、隣の入力欄と中心線をそろえる。 */
.lever-track-wrap{ min-height:var(--gup-control-compact); }

/* ---- Phase UI-SYSTEM1-1B2 ここまで ---- */

/* UI-SYSTEM1-1C1: 左サイドが drawer へ切り替わるのは 719px 以下（styles/sidenav.css）。
   ヘッダーの縦積みも同じ境界にする。720px だけ「サイドは desktop なのにヘッダーは mobile」
   という 1px の食い違いが出ていた。 */
@media(max-width:719px){
  /* ★ALL VIEWS：広い画面で作った 2 カラムは、狭い画面では 1 列へ戻す。
     grid の明示トラックは折り返さないので、狭いと図や表が器からはみ出して読めなくなる
     （実測：390px で ② 戦略キャンバスの折れ線グラフが幅 182% になり画面から消えていた）。
     ★新しいメディア条件は作らず、**既存の (max-width:719px) の中**へ入れる（42 のまま）。
     display:block にすると grid-column / grid-row は効かなくなり、DOM の順に素直に積まれる。 */
  #t2panel-whole:not([hidden]){ display:block; }
  #t2panel-whole > .gup-band{ display:flex; }
  #t2panel-cf .cf-layout{ display:block; }
  #canvasCard{ display:block; }
  #muVerifyCard .mucur-wrap{ display:block; }

  header{position:sticky;padding:var(--gup-sp-3) var(--gup-sp-4) 0;}
  .topline{display:flex;}
  .brand{align-items:flex-start;flex-direction:column;gap:2px;}
  .brand .sub{max-width:100%;font-size:var(--gup-fs-note);}
  .header-kpis{grid-template-columns:repeat(2,1fr);max-width:none;margin:var(--gup-sp-2) 0 0;}
  .record-bar-main{gap:7px;}
  .rb-label{width:auto;}
  .rb-sel{font-size:var(--gup-fs-base);max-width:128px;}
  .header-menu{margin-left:0;}
  /* menu-panelの左右位置・幅は、記録バーの折返しでボタンのX座標が変動し画面外にはみ出すことがあるため、
     ここでは固定値を持たずJS側（initHeaderMenu）で開くたびに実測して補正する。 */
  /* UI-IA2: 狭い画面の画面移動は左ドロワー（styles/sidenav.css）が担う */
  main{padding:var(--gup-sp-3) var(--gup-sp-3) 80px;}
  .mobile-use-note{display:block;background:var(--surface-warn);border:1px solid var(--surface-warn-line);color:var(--select-accent-dark);border-radius:var(--gup-radius-md);
    padding:var(--gup-sp-3) var(--gup-sp-3);margin:0 0 var(--gup-sp-3);font-size:var(--gup-fs-base);line-height:var(--gup-lh-body);font-weight:var(--gup-font-weight-bold);}
}

/* UI-TYPE5：本文 1 行の長さの上限。日本語は 45 字を超えると次の行頭へ目が戻れない。
   対象は読み物の本文・説明・補足だけ（表・入力欄・見出しには当てない）。 */
.legal-body, .cscore-guide, .mobile-use-note, .mxnew-hint, .errc-sub, .sf-step span{ max-width:var(--gup-measure); }

/* ===== Phase FMG1：FMGマトリクス（① 現在地 ／ ③ 現状 → 計画）=====================
   静かな図にする：背景は G の目盛として淡くだけ置き、点・線・ラベルを主役にする。
   ★幾何は SVG 側（横長の作図領域＋X/Y 共通 scale＋定義域の調整）で保証している。
     ここで width と height を別々に決めると等尺が壊れるので、**height は指定しない**
     （viewBox の縦横比のまま伸ばす）。 */
.fmg-chartwrap{overflow-x:auto;}
.fmg-svg{width:100%;height:auto;display:block;min-width:420px;}
.fmg-scroll{overflow-x:auto;margin-top:var(--gup-sp-3);}
.fmg-table{width:100%;border-collapse:collapse;font-size:var(--gup-fs-sm);font-variant-numeric:tabular-nums;}
.fmg-table th,.fmg-table td{padding:var(--gup-table-cell-block-padding) var(--gup-table-cell-inline-padding);
  border-bottom:1px solid var(--line);white-space:nowrap;}
.fmg-table thead th{color:var(--text-secondary);font-weight:var(--gup-font-weight-bold);}
.fmg-table tbody th{font-weight:var(--gup-font-weight-regular);}
.fmg-table .num{text-align:right;}
.fmg-table .lft{text-align:left;}
.fmg-dot{display:inline-block;width:10px;height:10px;border-radius:50%;margin-right:var(--gup-sp-1);vertical-align:middle;}
.fmg-note,.fmg-empty{margin:var(--gup-sp-2) 0 0;font-size:var(--gup-fs-sm);color:var(--text-secondary);}

/* ===== 利益感度分析（PROFIT-SENSITIVITY-REDESIGN1 / UI2.1）=======================
   4 レバーは 3 モードとも同じ見た目・同じ並びにする。
   1440×900（Chrome 100%）で 切替・対象・G・4 レバー・MQ 図 までが折り返しの中に入ること。 */
/* 4 レバーは **横一列**（UI2.1 §A）。感度分析の 4 枚のカードと同じリズムにする。
   auto-fill にしてあるので、商品（3 本）でも 1 本ぶんの幅は変わらない。
   240px を下回れない幅なので 1440・1280 とも 4 列、390px は 1 列になる
   （新しい breakpoint を作らず minmax で決める）。 */
.sensm-levers{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,240px),1fr));
  gap:var(--gup-sp-3);margin:0 0 var(--gup-sp-4);}
.sensl-cell{background:var(--gup-color-surface-subtle);border-radius:var(--gup-radius-md);
  padding:var(--gup-sp-2) var(--gup-sp-3) var(--gup-sp-3);min-width:0;}
.sensl-head{display:flex;align-items:center;gap:var(--gup-sp-2);min-width:0;}
/* ★色は .tag.P / .tag.V / … が塗りと対で持つ（GUP-HOME-PROD1 Gate A）。
   ここで白へ上書きすると、暗い配色で塗りが明るくなったときに読めなくなる。 */
.sensl-head .tag{flex:none;width:26px;font-size:var(--gup-fs-sm);
  font-weight:var(--gup-font-weight-bold);border-radius:var(--gup-radius-sm);
  text-align:center;line-height:20px;}
/* V2-AB1（Phase A）：レバーの名札（売価・変動費・数量・固定費）は 400。値が主役。 */
.sensl-name{font-size:var(--gup-fs-sm);font-weight:var(--gup-type-label-weight);color:var(--text-label);
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0;}
/* 値は 4 本とも同じ位置・同じ幅（F だけ特別な部品に見せない） */
.sensl-cell .sensl-val{width:auto;margin:var(--gup-sp-2) 0 var(--gup-sp-1);}
.sensl-cell .lever-track-wrap{width:100%;}
/* 0 の目印は「そのレバーの 0 の位置」。目盛りを広げると 50% ではなくなる。 */
.sensl-cell .lever-track-wrap::before{left:var(--gup-sensm-zero,50%);}
/* 現状 → 試算後（商品のときだけ 3 本そろって出る）。出ない対象でも高さを取らない。 */
.sensl-after{font-size:var(--gup-fs-note);color:var(--text-secondary);
  font-variant-numeric:tabular-nums;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
  min-width:0;text-align:center;}
.sensl-after:empty{display:none;}

/* 動かし方の切替 ＋ 対象 ＋ すべて0に戻す を 1 本のバーに置く。
   下の余白は旧 .sens-mode と同じ sp-3。sp-4 にすると感度分析が 4px 下がり、
   もともと折り返しぎりぎりだった MQ 図がさらに出る（実測）。 */
.sens-bar{display:flex;align-items:center;gap:var(--gup-sp-4);flex-wrap:wrap;
  margin:var(--gup-sp-3) 0 var(--gup-sp-2);}
.sens-mode{margin:0;flex:0 0 auto;}
.sens-mode button{flex:0 0 auto;min-width:150px;}
.sensm-scoperow{display:flex;align-items:center;gap:var(--gup-sp-2);flex-wrap:wrap;
  margin:0;flex:1 1 auto;}
/* ★display:flex は UA の [hidden] に勝つ。hidden を立てても消えず、
   感度分析のときに すべて0に戻す が出たままだった（実測）。
   !important も inline style も使わず、詳細度だけで消す。 */
.sensm-scoperow[hidden]{display:none;}
/* V2-AB1（Phase A）：「対象」は項目名。選んだ中身（select）が主役。 */
.sensm-scopelbl{font-size:var(--gup-fs-sm);font-weight:var(--gup-type-label-weight);color:var(--text-label);}
.sensm-scoperow select{min-width:180px;max-width:100%;}
.sensm-reset{margin-left:auto;}

/* 感度分析の 4 枚のカードにも同じ目盛りを出す（操作はできないので静的なゲージ）。
   ★カードの**下の縁**に重ねて置き、行を増やさない。
     ここは既に折り返しぎりぎりなので、共通の視覚言語のために縦を使わない
     （行にすると 12px 増え、MQ 図がさらに下がると実測した）。 */
.sens-card{position:relative;}
.sensl-gauge{position:absolute;left:0;right:0;bottom:0;height:5px;
  border-bottom-left-radius:var(--gup-radius-sm);border-bottom-right-radius:var(--gup-radius-sm);
  background:var(--slider-track);}
.sensl-gauge::before{content:'';position:absolute;left:var(--gup-sensm-zero,50%);top:0;bottom:0;
  width:2px;background:var(--slider-zero-mark);transform:translateX(-1px);}
/* 目盛りの外まで必要なとき（例：▲60% 要る）は端で止まるので、そうと分かるようにする */
.sensl-gauge-over{outline:1px dashed var(--gup-color-border-strong);outline-offset:2px;}

/* 商品には固定費も利益も無い（§19：存在しない F・G を商品の値として偽装しない）。
   MQ 図は既存の buildLeverBoxHTML をそのまま使い、当てはまらない 2 セルだけ出さない。
   P × Q ＝ PQ − VQ ＝ MQ で鎖が終わる、という形にする。 */
.boxdia-wrap.sensm-nof .bd-c-F,
.boxdia-wrap.sensm-nof .bd-c-G{display:none;}
/* 2 セルを外したぶん MQ を右まで伸ばす（空いた枠だけが残らないように）。
   PQ ＝ VQ ＋ MQ という読み方はそのまま。 */
.boxdia-wrap.sensm-nof .bd-c-MQ{grid-column:2/4;border-right:none;}
/* PROFIT-SENSITIVITY-REDESIGN1: 見出しの右の道具（目標倍率）は 感度分析 と 目標逆算 のもの。
   .mqhead-tools は display:flex を持っているので、hidden を立てても UA の [hidden] に勝ってしまい
   **消えていなかった**（実測 124×34px で表示。PLAN-ROUTE1A と同じ型の穴）。
   !important も inline style も使わず、詳細度だけで解消する。 */
/* 相手は layout.css の `.card h2.mqhead .mqhead-tools`（詳細度 0,3,1）なので、
   同じ形へ [hidden] を足して勝たせる（0,4,1）。 */
.card h2.mqhead .mqhead-tools[hidden]{display:none;}

/* ===== 利益感度分析：3 モード（PROFIT-SENSITIVITY-REDESIGN2）=====================
   分け方は「何個動かすか」ではなく計算の向き。3 つを同格のタブで見せる。
   説明は別行で増やさず、タブの中の小さい文字で言う。 */
/* ★狭い画面では自分の中で折り返す。0 0 auto のままだと 3 つ目（シナリオ試算）が
   親からはみ出して押せなくなる（390px で実測）。伸びはしないが縮めるようにして、
   ボタン側の flex-wrap に折り返させる（画面幅の規則は 1 つも増やさない）。 */
.sens-modes{display:flex;gap:var(--gup-sp-2);flex-wrap:wrap;flex:0 1 auto;min-width:0;}
.sens-modes button{display:flex;flex-direction:column;align-items:flex-start;gap:0;
  border:1px solid var(--navy);background:var(--white);color:var(--navy);
  border-radius:var(--gup-radius-sm);padding:0 var(--gup-sp-3);cursor:pointer;
  min-width:170px;text-align:left;line-height:1.25;}
.sens-modes button b{font-size:var(--gup-fs-base);font-weight:var(--gup-font-weight-bold);}
.sens-modes button span{font-size:var(--gup-fs-note);font-weight:var(--gup-font-weight-regular);
  color:var(--text-secondary);}
/* V2-AB1（Phase B）：3 つのモードの選択も selection grammar へ。
   before は濃紺のベタで、同じ画面の主要操作（青のベタ）と強さが競合していた。 */
/* V2-AB1（Phase B）：選択中の面は **--gup-surface-secondary**。
   --gup-color-surface-subtle は「読むだけ・無効」の面なので、選択中と同じにしない。
   ★コメントにも色の値を書かない（色の正本は tokens.css だけ）。 */
.sens-modes button.active{background:var(--gup-surface-secondary);border-width:2px;
  box-shadow:inset 3px 0 0 var(--gup-color-accent);}
.sens-modes button.active b{color:var(--navy);}
.sens-modes button:focus-visible{outline:2px solid var(--action-accent);outline-offset:2px;}

/* 目標逆算：解くレバーだけ、入力ではなく答えとして見せる */
.sensl-solvebtn{margin-left:auto;flex:none;border:1px solid var(--gup-color-border-strong);
  background:var(--white);color:var(--text-secondary);border-radius:var(--gup-radius-sm);
  font-size:var(--gup-fs-note);padding:0 var(--gup-sp-2);cursor:pointer;line-height:18px;}
.sensl-solvebtn[aria-pressed="true"]{background:var(--gup-surface-inverse);border-color:var(--navy);color:var(--gup-text-inverse);}
.sensl-solvebtn:focus-visible{outline:2px solid var(--action-accent);outline-offset:2px;}
.sensl-cell.sensl-solving{background:var(--panel-blue-bg);box-shadow:inset 0 0 0 1px var(--action-accent);}
.sensl-val-solved input{color:var(--action-accent);}
.sens3-answer{margin:0 0 var(--gup-sp-3);font-size:var(--gup-fs-lg);color:var(--navy);
  font-weight:var(--gup-font-weight-bold);font-variant-numeric:tabular-nums;}
.sens3-answer:empty{display:none;}

/* ===== 利益感度分析：MQ 図の P/V/Q/F を操作入口にする（UI-SIMPLIFY2）=============
   ★色は 1 つも増やさない。既存の「注目の輪」（.bd-cell.changed と同じ描き方）を
     細くして使う。選べるセルにだけ data-bdclick が付く（判定は JS の 1 か所）。
   ★派生値（M・PQ・VQ・MQ・G）には付かないので、ここには当たらない。
   ★hit area は文字だけでなくセル全体。touch でもそのまま押せる。 */
.boxdia [data-bdclick]{cursor:pointer;}
.boxdia [data-bdclick]:hover{box-shadow:inset 0 0 0 2px var(--white), inset 0 0 0 3px rgba(0,0,0,.65);}
.boxdia [data-bdclick][aria-pressed="true"]{box-shadow:inset 0 0 0 3px var(--white), inset 0 0 0 5px rgba(0,0,0,.65);}
.boxdia [data-bdclick]:focus-visible{outline:3px solid var(--action-accent);outline-offset:-3px;}

/* GUP-FUTURE70-PHASE1 §9: 初回の業種選択。
   既存の overlay（.welcome / .wg-inner）をそのまま使い、タイルだけを足す。
   ★色も font-size も新しく作らない（Visual Constitution v2 の token だけ）。
   ★画面幅の分岐規則を増やさない。列数は auto-fit が吸収する（UI-CURRENT1A と同じやり方）。
     幅を 760px で止めると 1440px で 4 列・390px で 2 列になる（実測）。 */
.f70-inner{max-width:860px;}
.f70-tiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));
  gap:var(--gup-sp-2);margin:var(--gup-sp-5) auto;max-width:760px;}
.f70-tile{min-height:var(--gup-control-standard);padding:var(--gup-sp-3);
  border:1px solid var(--gup-color-border-strong);border-radius:var(--gup-radius-sm);
  background:var(--white);color:var(--gup-text-primary);
  font-size:var(--gup-fs-sm);font-weight:var(--gup-font-weight-regular);
  display:flex;align-items:center;justify-content:center;text-align:center;
  line-height:var(--gup-lh-normal);}
.f70-tile-lg{min-height:76px;font-size:var(--gup-fs-base);}
.f70-tile:hover{background:var(--surface-muted);border-color:var(--action-accent);}
.f70-tile:focus-visible{outline:3px solid var(--action-accent);outline-offset:2px;}

/* GUP-FUTURE70-PHASE1 §12: Stage 1 の作成画面。
   既存の overlay（.welcome / .wg-inner）をそのまま使う。
   ★色も文字サイズも新しく作らない。画面幅の分岐規則も増やさない（auto-fit / minmax で吸収）。 */
.s1-inner{max-width:1000px;text-align:left;}
/* 狭い画面では『会社の名前』のラベルが 1 文字ずつ縦に潰れていた（390px で実測）。
   grid の列を固定せず、折り返せる並びにする（画面幅の分岐規則は増やさない）。 */
.s1-id{display:flex;flex-wrap:wrap;gap:var(--gup-sp-3);
  align-items:center;margin-bottom:var(--gup-sp-5);}
.s1-idgrp{display:flex;align-items:center;gap:var(--gup-sp-2);}
.s1-idgrp-co{flex:1 1 260px;}
.s1-in-co{flex:1 1 220px;}
.s1-lbl{font-size:var(--gup-fs-sm);color:var(--text-secondary);}
.s1-h{font-size:var(--gup-fs-lg);font-weight:var(--gup-font-weight-bold);
  margin:var(--gup-sp-6) 0 var(--gup-sp-1);}
.s1-note{font-size:var(--gup-fs-sm);color:var(--text-secondary);margin:0 0 var(--gup-sp-3);}
/* 1 行 6 欄は 390px に収まらない。既存の固定費表と同じ作法で **表ごと横スクロール**する
   （UI-CURRENT1B の .t1-f-scroll と同じ。画面幅の分岐規則は増やさない）。 */
.s1-scroll{overflow-x:auto;min-width:0;}
.s1-head,.s1-row,.s1-derived{min-width:620px;}
.s1-head,.s1-row{display:grid;
  grid-template-columns:minmax(140px,1.6fr) minmax(96px,1fr) minmax(96px,1fr) minmax(96px,1fr) 108px 40px;
  gap:var(--gup-sp-2);align-items:center;}
.s1-head{font-size:var(--gup-fs-note);color:var(--text-secondary);margin-bottom:var(--gup-sp-1);}
.s1-row{margin-bottom:var(--gup-sp-2);}
.s1-in,.s1-sel{height:var(--gup-control-standard);padding:0 var(--gup-sp-3);
  border:1px solid var(--gup-color-border-strong);border-radius:var(--gup-radius-sm);
  background:var(--input-bg);/* GUP-AIR-SURFACE1A：入力面の役割で塗る */font-size:var(--gup-fs-base);width:100%;}
.s1-num{text-align:right;font-variant-numeric:tabular-nums;}
.s1-del{height:var(--gup-control-standard);width:var(--gup-control-standard);
  border:1px solid var(--gup-color-border-strong);border-radius:var(--gup-radius-sm);
  background:var(--white);}
.s1-add{height:var(--gup-control-compact);padding:0 var(--gup-sp-3);
  border:1px solid var(--gup-color-border-strong);border-radius:var(--gup-radius-sm);
  background:var(--white);font-size:var(--gup-fs-sm);margin-top:var(--gup-sp-1);}
.s1-derived{font-size:var(--gup-fs-sm);color:var(--text-secondary);
  font-variant-numeric:tabular-nums;padding:var(--gup-sp-1) 0 var(--gup-sp-3);
  border-bottom:1px solid var(--input-border);margin-bottom:var(--gup-sp-3);}
.s1-derived b{font-weight:var(--gup-font-weight-bold);color:var(--gup-text-primary);}
.s1-otherlbl{font-size:var(--gup-fs-sm);color:var(--text-secondary);}
.s1-noq{margin:0;}
.s1-fcrow{display:flex;align-items:center;gap:var(--gup-sp-2);}
.s1-fc{max-width:180px;}
.s1-u{font-size:var(--gup-fs-sm);color:var(--text-secondary);}
.s1-period{display:flex;align-items:center;gap:var(--gup-sp-1);}
.s1-period .s1-sel{width:auto;}
.s1-sum{display:flex;gap:var(--gup-sp-6);flex-wrap:wrap;margin-top:var(--gup-sp-6);
  padding-top:var(--gup-sp-4);border-top:1px solid var(--input-border);}
.s1-sum span{display:flex;flex-direction:column;gap:var(--gup-sp-1);}
.s1-sum i{font-style:normal;font-size:var(--gup-fs-sm);color:var(--text-secondary);}
.s1-sum b{font-size:var(--gup-fs-xl);font-weight:var(--gup-font-weight-bold);
  font-variant-numeric:tabular-nums;}
.s1-sum-g b{font-size:var(--gup-fs-hero);}
.s1-err{font-size:var(--gup-fs-base);color:var(--bad);margin:var(--gup-sp-4) 0 0;}
.s1-unitwrap{display:flex;flex-direction:column;gap:var(--gup-sp-1);}
.s1-unitin{height:var(--gup-control-compact);font-size:var(--gup-fs-sm);text-align:center;}

/* ============================================================================
   FUTURE70 Commit D — ① 全体のコックピット
   商品を選んで P・V・Q を動かし、会社の G への波及を見る。
   ★レバーの見た目は既存（.sensm-levers / .sensl-cell）をそのまま使う。ここでは足さない。
   ★色・文字サイズ・余白はすべて semantic token を通す（生の値を増やさない）。
   ============================================================================ */
.cp-card{margin-top:var(--gup-sp-4);}
.cp-title{font-size:var(--gup-fs-lg);font-weight:var(--gup-font-weight-bold);
  margin:0 0 var(--gup-sp-3);display:flex;align-items:baseline;gap:var(--gup-sp-3);flex-wrap:wrap;}
.cp-sub{font-size:var(--gup-fs-sm);font-weight:var(--gup-type-label-weight);color:var(--text-secondary);}
/* 会社の帯。G だけを大きく、内訳はその下に小さく並べる（主役は 1 つ）。 */
.cp-co{background:var(--gup-color-surface-subtle);border-radius:var(--gup-radius-md);
  padding:var(--gup-sp-3) var(--gup-sp-4);margin:0 0 var(--gup-sp-4);}
.cp-co-g{display:flex;align-items:baseline;gap:var(--gup-sp-2);flex-wrap:wrap;}
.cp-co-g-label{font-size:var(--gup-fs-sm);font-weight:var(--gup-type-label-weight);color:var(--text-label);}
.cp-co-g-val{font-size:var(--gup-fs-hero);font-variant-numeric:tabular-nums;
  display:flex;align-items:baseline;gap:var(--gup-sp-2);}
.cp-co-row{display:flex;gap:var(--gup-sp-5);flex-wrap:wrap;margin-top:var(--gup-sp-2);}
.cp-co-cell{display:flex;align-items:baseline;gap:var(--gup-sp-2);
  font-size:var(--gup-fs-sm);font-variant-numeric:tabular-nums;}
.cp-co-cell i{font-style:normal;color:var(--text-label);}
/* 商品を選ぶ行 */
.cp-pick{display:flex;align-items:center;gap:var(--gup-sp-2);flex-wrap:wrap;margin:0 0 var(--gup-sp-3);}
.cp-pick-lbl{font-size:var(--gup-fs-sm);font-weight:var(--gup-type-label-weight);color:var(--text-label);}
.cp-pick select{min-width:220px;max-width:100%;}
.cp-reset{margin-left:auto;}
/* その商品の P・V・M・Q */
/* ★KEY4 VISUAL POLISH：P・V・M・Q の 4 つは 1 組なので 1 行に並べる。
   180px だと 1440px の帯の中で 3 列＋折返しになり、同じ組が 2 段に割れて 61px 使っていた（実測）。
   140px にすると 4 列 1 行（145.7px ずつ）に収まる。**列を消していない・文字も縮めていない**。
   ★ここ（components.css）で直すのが正しい：layout.css は manifest でこれより前に読まれるので、
     同じ詳細度（0,1,0）で layout.css 側へ書くと後勝ちで負ける（実測で踏んだ）。
     同じ instrument の列指定を 2 か所に持たない（Founder ルール 2）。 */
.cp-prod{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,140px),1fr));
  gap:var(--gup-sp-3);margin:0 0 var(--gup-sp-4);}
.cp-prod-cell{display:flex;flex-direction:column;gap:var(--gup-sp-1);
  font-variant-numeric:tabular-nums;min-width:0;}
.cp-prod-cell i{font-style:normal;font-size:var(--gup-fs-sm);color:var(--text-label);}
/* その商品の MQ */
.cp-mq{display:flex;align-items:baseline;gap:var(--gup-sp-2);flex-wrap:wrap;
  padding-top:var(--gup-sp-3);border-top:1px solid var(--input-border);}
.cp-mq-label{font-size:var(--gup-fs-sm);font-weight:var(--gup-type-label-weight);color:var(--text-label);}
.cp-mq-val{font-size:var(--gup-fs-xl);font-variant-numeric:tabular-nums;
  display:flex;align-items:baseline;gap:var(--gup-sp-2);}
/* 今 → 試算後 */
.cp-pair{display:flex;align-items:baseline;gap:var(--gup-sp-2);flex-wrap:wrap;min-width:0;}
.cp-now{font-weight:var(--gup-font-weight-bold);}
.cp-next{font-weight:var(--gup-font-weight-bold);}
.cp-arrow{color:var(--text-secondary);}
.cp-delta{font-size:var(--gup-fs-sm);font-variant-numeric:tabular-nums;color:var(--text-secondary);}
.cp-up{color:var(--gup-positive);}
.cp-down{color:var(--gup-negative);}
.cp-unit{font-size:var(--gup-fs-note);color:var(--text-secondary);}
.cp-empty{font-size:var(--gup-fs-base);color:var(--text-secondary);margin:0;}

/* ===== cG（キャッシュG）Cash Bridge — GUP-CASHG1 Gate 3B ======================
   ★layout.css の global `table{width:100%;min-width:820px;font-size:var(--gup-fs-xl)}` に
     引かれると、表が親カードを 253px はみ出して数値が隣のカードの下へ潜る
     （Gate 3A の prototype で実測。DOM には値があるのに画面から消えて見えた）。
     この component 側で **min-width と table-layout を閉じる**。global 契約は変えない。
   ★色は使わない（Founder 決定）。運転資本が増えることは「業績が悪い」ではないので、
     positive / negative を当てず、＋ / ▲ と neutral text だけで向きを示す。 */
.cg-cols{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:var(--gup-sp-5);}
.cg-col{border:1px solid var(--gup-border-default);border-radius:var(--gup-radius-md);
  padding:var(--gup-sp-4);background:var(--gup-surface-primary);min-width:0;}
.cg-col-head{margin:0 0 var(--gup-sp-2);font-size:var(--gup-fs-base);font-weight:var(--gup-font-weight-bold);}
.cg-table{width:100%;min-width:0;table-layout:fixed;border-collapse:collapse;font-size:var(--gup-fs-sm);}
.cg-caption{caption-side:top;text-align:left;font-size:var(--gup-fs-note);
  color:var(--gup-text-secondary);padding-bottom:var(--gup-sp-2);}
.cg-table th{text-align:left;font-weight:var(--gup-font-weight-regular);padding:var(--gup-sp-2) 0;
  white-space:normal;overflow-wrap:anywhere;}
.cg-table td{width:8.5em;text-align:right;padding:var(--gup-sp-2) 0;
  font-variant-numeric:tabular-nums;white-space:nowrap;}
.cg-table tr.cg-sub th{padding-left:var(--gup-sp-3);color:var(--gup-text-secondary);}
.cg-table tr.cg-total th,.cg-table tr.cg-total td{border-top:1px solid var(--gup-border-strong);
  font-weight:var(--gup-font-weight-bold);font-size:var(--gup-fs-base);padding-top:var(--gup-sp-3);}
/* Gとの差は補助情報。cG より小さく、neutral のまま */
.cg-table tr.cg-diff th,.cg-table tr.cg-diff td{font-size:var(--gup-fs-note);
  color:var(--gup-text-secondary);padding-top:var(--gup-sp-1);}
.cg-na{font-size:var(--gup-fs-xl);color:var(--gup-text-secondary);font-variant-numeric:tabular-nums;}
.cg-reason{margin:var(--gup-sp-2) 0 0;font-size:var(--gup-fs-sm);color:var(--gup-text-secondary);
  line-height:var(--gup-lh-body);}

/* ===== MQ経営シミュレーター（GUP-MQ-MULTIPRODUCT-SIM1）=====================
   単品は「図 × 図」／複数は「操作できる表 × 大きな MQ会計図」。
   ★新しい色は 1 つも作らない。P・V・Q・F はどれも既存の semantic（--ui-p/v/q/f）。
   ★P・V・Q は「小さい数値表」ではなく **触れる計器**。F と同じ ％＋スライダー。
   ★M は派生なので入力欄にもスライダーにも見せない。
   ★画面幅の規則は 1 つも増やさない。折り返しは flex-wrap が吸収する。 */
.mqsim-bar{display:flex;align-items:center;gap:var(--gup-sp-3);flex-wrap:wrap;
  margin-bottom:var(--gup-sp-3);}
.mqsim-src{display:flex;gap:var(--gup-sp-2);flex-wrap:wrap;flex:0 1 auto;min-width:0;}
.mqsim-src button{border:1px solid var(--navy);background:var(--white);color:var(--navy);
  border-radius:var(--gup-radius-sm);padding:0 var(--gup-sp-3);cursor:pointer;
  font-size:var(--gup-fs-base);line-height:var(--gup-lh-compact);}
.mqsim-src button.active{background:var(--gup-surface-secondary);border-width:2px;
  box-shadow:inset 3px 0 0 var(--gup-color-accent);}
.mqsim-src button:focus-visible{outline:2px solid var(--action-accent);outline-offset:2px;}
.mqsim-reset{margin-left:auto;}

/* 左＝入力（商品を動かす）／右＝結果（会社が動く）。因果が左から右へ読める並び。 */
.mqsim-grid{display:flex;gap:var(--gup-sp-4);align-items:flex-start;flex-wrap:wrap;}
.mqsim-grid.mqsim-single{display:block;}
/* 左＝入力の表 55〜60% ／ 右＝結果 40〜45%。右は MQ会計図の実寸で決める
   （図を縮めて割合を作らない）。狭い画面は flex-wrap が縦積みへ吸収する。 */
.mqsim-left{flex:1 1 460px;min-width:0;}
.mqsim-right{flex:0 1 480px;min-width:0;display:flex;flex-direction:column;
  gap:var(--gup-sp-2);}
.mqsim-empty{font-size:var(--gup-fs-sm);color:var(--text-secondary);margin:0;}

/* 右の MQ会計図は **結果の主役**。単品の図より一回り大きくする。 */
.mqsim-multi .mqsim-right .bd-right{width:480px;height:310px;}
.mqsim-multi .mqsim-right .boxdia-wrap{padding:0;}
.mqsim-multi .mqsim-right .boxdia{gap:0;}
/* F は全社の 1 本だけ。巨大な独立カードにせず、図の直上へ compact に置く。 */
.mqsim-multi .mqsim-right .sensm-levers{grid-template-columns:minmax(0,1fr);
  margin:0;gap:0;}
.mqsim-multi .mqsim-right .sensl-cell{display:flex;align-items:center;
  gap:var(--gup-sp-3);padding:var(--gup-sp-2) var(--gup-sp-3);}
.mqsim-multi .mqsim-right .sensl-head{flex:none;}
.mqsim-multi .mqsim-right .sensl-cell .sensl-val{margin:0;width:118px;flex:none;}
.mqsim-multi .mqsim-right .sensl-cell .lever-track-wrap{flex:1 1 auto;min-width:120px;}
.mqsim-multi .mqsim-right .sensl-after{flex:none;}
.mqsim-note-tight{margin-top:var(--gup-sp-1);}

/* ---- 商品別の経営レバー盤 ---- */
/* layout.css の global `table{width:100%;min-width:820px}` に引かれると親をはみ出すので
   ここで閉じる（global の契約はこの表の都合で変えない）。 */
/* 商品が多いときだけ表の中でスクロールする（3〜4 件ではページを動かさない）。 */
.mqsim-tablewrap{overflow:auto;max-height:520px;}
.mqsim-table{width:100%;min-width:600px;border-collapse:collapse;
  table-layout:fixed;font-variant-numeric:tabular-nums;}
.mqsim-table th,.mqsim-table td{border-bottom:1px solid var(--gup-color-border);
  padding:var(--gup-sp-1);vertical-align:top;text-align:left;}
.mqsim-table thead th{padding-bottom:var(--gup-sp-2);}
/* 見出しは semantic chip ＋ 日本語名。極小の caption にしない。 */
.mqsim-h{position:sticky;top:0;background:var(--white);z-index:1;white-space:nowrap;
  font-size:var(--gup-fs-base);font-weight:var(--gup-font-weight-regular);
  color:var(--gup-text-primary);}
/* 名札は既存の semantic 塗り（.tag.P/.V/.Q/.F）をそのまま使う。新しい色は作らない。 */
.mqsim-h .tag{display:inline-block;min-width:22px;padding:0 var(--gup-sp-1);
  border-radius:var(--gup-radius-sm);font-size:var(--gup-fs-sm);
  font-weight:var(--gup-font-weight-bold);text-align:center;
  margin-right:var(--gup-sp-1);vertical-align:middle;}
/* M は P − V の派生。**塗らない**（触れないことを見た目で言う）。 */
.mqsim-h .tag.M{background:none;color:var(--text-secondary);
  border:1px solid var(--gup-color-border-strong);}
.mqsim-hname{font-size:var(--gup-fs-base);}
.mqsim-hunit{display:block;font-size:var(--gup-fs-note);color:var(--text-secondary);}
.mqsim-c-name{font-weight:var(--gup-font-weight-regular);}
/* GUP-UX-WORLDCLASS1 Phase 5（UX-45）：レバーを動かす対象の名前は全文（省略しない）。長い名前は 23% 幅の中で折り返す（行の高さ 79px に 2〜3 行が入る）。 */
.mqsim-name{display:block;font-size:var(--gup-fs-base);line-height:1.25;overflow-wrap:anywhere;white-space:normal;}
.mqsim-unit{display:block;font-size:var(--gup-fs-note);color:var(--text-secondary);
  line-height:1.2;}
/* 基準 → 試算。単品の図と同じ文法（矢印の色・試算側だけ太字）。 */
/* 入りきらないときは矢印で折り返す。**数字は切らない**。 */
.mqsim-pair{font-size:var(--gup-fs-lg);line-height:1.2;
  color:var(--text-secondary);}
.mqsim-pair .basev,.mqsim-pair .newv{white-space:nowrap;}
.mqsim-pair .arrow{color:var(--text-arrow);}
.mqsim-pair .newv{font-weight:var(--gup-font-weight-bold);color:var(--gup-text-primary);}
/* セルの中のレバーは既存部品そのまま。列の見出しが名前を言うので名札だけ畳む。 */
.mqsim-table .sensl-cell{background:none;border-radius:0;padding:0;gap:0;}
.mqsim-table .sensl-head{display:none;}
/* ★1 行を低くする（Founder 指示）。**％欄もスライダーも外さない**。
   詰めるのは余白と入れ物の高さだけで、触れる面積は残す。 */
/* ★％欄の高さ（compact 34px）は UI-SYSTEM1-1B2 の contract なので下げない。
   詰めてよいのは余白だけ。 */
.mqsim-table .sensl-cell .sensl-val{margin:0;width:100%;padding:0 var(--gup-sp-1);}
.mqsim-table .lever-val input{font-size:var(--gup-fs-base);padding:0;}
.mqsim-table .lever-pct{padding-right:0;font-size:var(--gup-fs-sm);}
.mqsim-table .lever-track-wrap{height:12px;min-height:12px;}
/* M は触れないので幅を詰め、そのぶんを触れる 3 列へ回す。
   ★詰めすぎると見出し（[M] 付加価値）が切れて隣とぶつかる。
     実測で「切れない一番狭い幅」に合わせる。 */
.mqsim-c{width:20.33%;}
.mqsim-h-m,.mqsim-c-m{width:16%;}
.mqsim-h-name,.mqsim-c-name{width:23%;}
/* M は読み取り専用。入力欄にもスライダーにも見せない。
   説明の 1 行は置かず、面を落とすことと操作が無いことで言う。 */
.mqsim-c-m{background:var(--gup-color-surface-subtle);}
.mqsim-resid{font-size:var(--gup-fs-note);color:var(--text-secondary);
  margin:var(--gup-sp-2) 0 0;}

/* 自由シミュレーション：商品・サービスを決めるところ。 */
.mqsim-free{margin-bottom:var(--gup-sp-3);}
.mqsim-free-head{font-size:var(--gup-fs-note);color:var(--text-secondary);
  margin-bottom:var(--gup-sp-1);}
.mqsim-freetable{width:100%;min-width:420px;border-collapse:collapse;}
.mqsim-freetable th,.mqsim-freetable td{padding:var(--gup-sp-1);text-align:left;}
.mqsim-freetable thead th{font-size:var(--gup-fs-note);color:var(--text-secondary);
  font-weight:var(--gup-font-weight-regular);}
.mqsim-fname{width:100%;}
.mqsim-fnum{width:88px;text-align:right;}
.mqsim-funit{width:64px;}
.mqsim-del{border:1px solid var(--gup-color-border-strong);background:var(--white);
  color:var(--text-secondary);border-radius:var(--gup-radius-sm);cursor:pointer;
  min-height:var(--gup-control-compact);padding:0 var(--gup-sp-2);}
.mqsim-del:disabled{opacity:.4;cursor:default;}
.mqsim-del:focus-visible{outline:2px solid var(--action-accent);outline-offset:2px;}
.mqsim-free-foot{display:flex;align-items:center;gap:var(--gup-sp-3);flex-wrap:wrap;
  margin-top:var(--gup-sp-2);}
.mqsim-ff{display:flex;align-items:center;gap:var(--gup-sp-2);
  font-size:var(--gup-fs-sm);color:var(--text-secondary);}

/* GUP-MANAGEMENT-ISSUE1：④ の帯に 経営課題 → 利益・資金への影響 を 1 行で置く。
   ★新しいカードを積まない。既存の帯の中の 1 要素（新しい色も作らない）。 */
.mxg-iss{display:inline-flex;align-items:baseline;flex-wrap:wrap;gap:var(--gup-sp-1);
  font-size:var(--gup-fs-note);min-width:0;}
.mxg-iss-k,.mxg-iss-u{color:var(--gup-color-text-secondary);}
.mxg-iss b{font-size:var(--gup-fs-note);min-width:0;overflow-wrap:anywhere;}
.mxg-iss-i{padding:0 var(--gup-sp-1);border-left:2px solid var(--gup-border-default);}

/* GUP-MANAGEMENT-ISSUE1（C-2）：効き見込み editor の「代償の判断」。
   ★既存の editor の語彙にそろえる（新しい色も新しい文字サイズも作らない）。 */
.imp-tr{display:flex;flex-direction:column;gap:var(--gup-sp-1);
  padding-top:var(--gup-sp-1);border-top:1px solid var(--gup-border-default);}
.imp-tr__h{display:flex;align-items:baseline;flex-wrap:wrap;gap:var(--gup-sp-1) var(--gup-sp-2);}
.imp-tr__name{font-size:var(--gup-fs-note);color:var(--gup-color-text-secondary);}
.imp-tr__v{font-size:var(--gup-fs-note);}
.imp-tr__v.is-unset{color:var(--gup-color-text-secondary);}
.imp-tr__opts{display:flex;flex-wrap:wrap;gap:var(--gup-sp-1);}
.imp-tr__b{min-height:var(--gup-control-compact);padding:0 var(--gup-sp-2);
  font-size:var(--gup-fs-note);border:1px solid var(--gup-border-default);
  border-radius:var(--gup-radius-sm);background:var(--gup-surface-primary);cursor:pointer;}
.imp-tr__b.is-on{border-color:var(--gup-border-selected);background:var(--gup-surface-selected);
  font-weight:var(--gup-type-selected-weight);}
.imp-tr__note{font-size:var(--gup-fs-note);color:var(--gup-color-text-secondary);}

/* ===== GUP-REPLAN-HANDOFF1：LEARN → RE-PLAN の出口 =====
   ★新しい色 0・新しい font-size 0・新しい画面幅の分岐 0（token だけ）。
   ★帯そのものは共通部品（.gup-compare-band）を使うので、ここに足すのは
     年度レビューの出口 1 行と、シミュレーターの理由テキストだけ。 */
.rp-next{display:flex;flex-wrap:wrap;align-items:center;gap:var(--gup-sp-2) var(--gup-sp-3);
  margin-top:var(--gup-sp-4);padding:var(--gup-sp-3);
  border-top:1px solid var(--gup-border-default);}
.rp-next__body{display:flex;flex-direction:column;gap:var(--gup-sp-1);flex:1 1 24ch;min-width:0;}
.rp-next__title{font-size:var(--gup-fs-base);}
.rp-next__sub{font-size:var(--gup-fs-sm);color:var(--gup-color-text-secondary);}
.mqsim-tonote{font-size:var(--gup-fs-sm);color:var(--gup-color-text-secondary);
  flex:1 1 18ch;min-width:0;}

/* ===== GUP-WC-CG-CLOSE1：戦略 → 資金計画（WC）の導線 =====
   ★新しい色 0・新しい font-size 0・新しい画面幅の分岐 0（token だけ）。
   ★巨大 card を作らない。⑤ は既存の「狙い」欄の中の 1 行、③ は入力欄の上の 1 行。 */
.wcb-row{display:flex;flex-wrap:wrap;align-items:baseline;gap:var(--gup-sp-1) var(--gup-sp-2);
  margin-top:var(--gup-sp-1);}
.wcb-k{font-size:var(--gup-fs-note);color:var(--gup-color-text-secondary);}
.wcb-v{font-size:var(--gup-fs-sm);}
.wcb-note{font-size:var(--gup-fs-note);color:var(--gup-color-text-secondary);}
.wcb-ctx{display:flex;flex-wrap:wrap;align-items:baseline;gap:var(--gup-sp-1) var(--gup-sp-3);
  margin-bottom:var(--gup-sp-2);padding:var(--gup-sp-2) var(--gup-sp-3);
  border-left:2px solid var(--gup-border-default);background:var(--gup-surface-secondary);
  border-radius:var(--gup-radius-sm);}
.wcb-ctx__k{font-size:var(--gup-fs-note);color:var(--gup-color-text-secondary);}
.wcb-ctx__name{font-size:var(--gup-fs-sm);min-width:0;overflow-wrap:anywhere;}
.wcb-ctx__aim,.wcb-ctx__note{font-size:var(--gup-fs-note);color:var(--gup-color-text-secondary);}

.toast{position:fixed;bottom:18px;left:50%;transform:translateX(-50%);
  background:var(--gup-surface-inverse);color:var(--gup-text-inverse);padding:var(--gup-sp-2) var(--gup-sp-4);border-radius:var(--gup-radius-md);font-size:var(--gup-fs-xl);
  opacity:0;transition:opacity .25s;pointer-events:none;z-index:50;}
.toast.show{opacity:1;}

/* 画面では印刷ヘッダーを隠す */
.print-header{display:none;}
[data-gup-print-value]{display:none;}

@media print{
  @page{ size:A4; margin:12mm 10mm; }
  html,body{background:var(--white)!important;zoom:1!important;}
  /* 不要なUIを全部隠す */
  header, nav.tabs, .recordbar, .btnrow, .addrow, .del,
  #unitPair, .unit-sel, #licenseGate,
  .gup-subtabs,
  .mx-sel-remove, .comp-del, .vdot, #toast{ display:none!important; }
  .no-print{ display:none!important; }
  main [hidden], main summary{display:none!important;}
  main button, main [role="button"], main input, main select, main textarea{display:none!important;}
  [data-gup-print-value]{display:inline!important;white-space:pre-wrap;color:var(--black);}
  /* テーブルヘッダーが詰まらないよう折返し許可・上揃え */
  table th{ white-space:normal!important; vertical-align:bottom!important; line-height:1.2!important; }
  main{ display:block!important; padding:0!important; margin:0!important; }
  /* 印刷ヘッダーを表示（各ページ上部に出る） */
  .print-header{
    display:block!important; margin-bottom:var(--gup-sp-2); padding-bottom:var(--gup-sp-2);
    border-bottom:2px solid var(--navy);
  }
  .print-header .ph-title{ font-size:var(--gup-fs-base); font-weight:var(--gup-font-weight-bold); color:var(--navy); }
  .print-header .ph-meta{ font-size:var(--gup-fs-note); color:var(--print-muted); margin-top:2px; }
  /* タブ領域：開いているものだけ表示される（他はdisplay:none） */
  section{ display:block; }
  section[style*="display:none"], section[style*="display: none"]{ display:none!important; }
  /* カード：枠線を薄く、背景は白、影なし、改ページ回避 */
  .card{
    border:1px solid var(--print-line)!important; box-shadow:none!important; background:var(--white)!important;
    break-inside:auto; page-break-inside:auto; margin-bottom:10px!important;
    padding:12px!important;
  }
  /* 小さめの単位（表・図・SWOTセル）は途中で切れないように */
  .mxtable, .canvas-table, .boxdia, .errc-cell, .mx-sel-item, .threec-col, .kpis{
    break-inside:avoid; page-break-inside:avoid;
  }
  h2{ font-size:var(--gup-fs-base)!important; }
  .help{ font-size:var(--gup-fs-note)!important; color:var(--print-note)!important; }
  /* 2カラムグリッドは縦積みにしてA4幅に収める */
  .grid.cols-2{ display:block!important; }
  .grid.cols-2 > *{ width:100%!important; margin-bottom:var(--gup-sp-3); }
  /* 横長テーブルを紙幅に収める：スクロールをやめて縮小 */
  .mx-wrap, [style*="overflow-x:auto"], [style*="overflow-x: auto"]{ overflow:visible!important; }
  table, .mxtable, .canvas-table{
    width:100%!important; min-width:0!important; font-size:var(--gup-fs-note)!important;
    table-layout:fixed; break-inside:avoid;
  }
  table th, table td, .mxtable th, .mxtable td{ padding:3px 2px!important; }
  /* 入力欄：枠だけ残して中身が見えるように */
  input, textarea, select{
    border:1px solid var(--print-line-soft)!important; background:var(--white)!important; color:var(--black)!important;
    font-size:var(--gup-fs-note)!important; box-shadow:none!important; -webkit-appearance:none;
  }
  textarea{ overflow:visible!important; }
  /* マトリクス入力セルの高さを内容に合わせる */
  .mxtable.mxinput textarea{ min-height:0!important; }
  /* SVGチャートを紙幅に */
  svg{ max-width:100%!important; height:auto!important; }
  /* MQ会計ボックス図を紙幅に収める（固定px幅をscaleで縮小） */
  #leverDiagram{ max-width:100%!important; overflow:hidden!important; text-align:center; }
  .boxdia{ transform:scale(0.82); transform-origin:top center; max-width:100%!important; }
  /* 色を維持したい要素 */
  .boxdia, .bd-cell, .kpi, .errc-cell, .mx-sel-tag, .mxtable thead th, .uratable thead th{
    -webkit-print-color-adjust:exact!important; print-color-adjust:exact!important;
  }
  /* リンクや影を消す */
  *{ text-shadow:none!important; }
}
/* ④その他（明細外）計画後金額の入力欄 */
.otherplan-box{ margin-top:var(--gup-sp-3); padding:var(--gup-sp-3) var(--gup-sp-3); border:1px dashed var(--panel-blue-line); border-radius:var(--gup-radius-md); background:var(--panel-blue-bg); }
.otherplan-box .op-head{ font-size:var(--gup-fs-sm); font-weight:var(--gup-font-weight-bold); color:var(--navy); margin-bottom:var(--gup-sp-2); }
.otherplan-box .op-line{ display:grid; grid-template-columns:64px 1fr auto 116px; align-items:center; gap:var(--gup-sp-2); margin:var(--gup-sp-1) 0; }
.otherplan-box .op-name{ font-size:var(--gup-fs-note); color:var(--text-secondary); }
.otherplan-box .op-cur{ text-align:right; font-variant-numeric:tabular-nums; }
.otherplan-box .op-arrow{ color:var(--text-secondary); }
/* UI-TYPE2：CSS 未指定でブラウザ既定（13.3333px）だった。数値を打つ欄は 16px。 */
.otherplan-box .op-input{ width:110px; text-align:right; font-size:var(--gup-fs-base); color:var(--text-main); }
.otherplan-box .op-mq .op-plan{ text-align:right; font-weight:var(--gup-font-weight-bold); font-variant-numeric:tabular-nums; }
/* ===== Phase F1b: 月次予算（MQ）UI ===== */
.mbtopnav{margin-top:var(--gup-sp-4)}
/* VER1-UX-RESIDUAL-R2-NAV1（R-2）: ⑥ の本文タブを外したので、その見た目の規則も外す。 */
#t7 .fpa-placeholder{font-size:var(--gup-fs-sm);color:var(--text-secondary);line-height:var(--gup-lh-body);padding:var(--gup-sp-1) 2px}
#t7 .fpa-placeholder h3{font-size:var(--gup-fs-base);margin:0 0 var(--gup-sp-2);color:var(--text-main)}
.mbtabs{display:flex;gap:var(--gup-sp-1);border-bottom:2px solid var(--line);margin-bottom:0;flex-wrap:wrap}
#mbTopTabs .mqdirty{margin:var(--gup-sp-3) 0 0}
.mbtab{appearance:none;background:none;border:none;border-bottom:3px solid transparent;padding:var(--gup-sp-2) var(--gup-sp-4);font-size:var(--gup-fs-sm);font-weight:var(--gup-font-weight-regular);color:var(--text-secondary);cursor:pointer;border-radius:var(--gup-radius-sm) var(--gup-radius-sm) 0 0}
.mbtab:hover{background:var(--surface-soft)}
.mbtab.active{color:var(--text-main);border-bottom-color:var(--canvas-self)}
.mbbadge{font-size:var(--gup-fs-note);background:var(--surface-warn);color:var(--gup-warning);border:1px solid var(--surface-warn-line);border-radius:var(--gup-radius-md);padding:1px var(--gup-sp-2);margin-left:var(--gup-sp-1)}
.mqdirty{font-size:var(--gup-fs-note);color:var(--gup-warning);background:var(--surface-warn);border:1px solid var(--surface-warn-line);border-radius:var(--gup-radius-md);padding:var(--gup-sp-2) var(--gup-sp-3);margin-bottom:var(--gup-sp-3)}
#mbDetailCard .mqguide{font-size:var(--gup-fs-sm);color:var(--text-secondary);background:var(--surface-soft);border:1px solid var(--line-soft);border-radius:var(--gup-radius-md);padding:var(--gup-sp-4)}
#mbDetailCard .mqgrid{display:grid;grid-template-columns:minmax(210px,270px) 1fr;gap:var(--gup-sp-4);align-items:start}
#mbDetailCard .mqlist{border:1px solid var(--line);border-radius:var(--gup-radius-md);overflow:hidden}
#mbDetailCard .mqli-head{font-size:var(--gup-fs-note);font-weight:var(--gup-font-weight-bold);color:var(--text-label);padding:var(--gup-sp-2) var(--gup-sp-3);background:var(--surface-muted)}
#mbDetailCard .mqli-sub2{font-size:var(--gup-fs-note);color:var(--text-muted);padding:var(--gup-sp-2) var(--gup-sp-3) 2px}
#mbDetailCard .mqli{display:flex;justify-content:space-between;align-items:center;gap:var(--gup-sp-2);padding:var(--gup-sp-2) var(--gup-sp-3);border-top:1px solid var(--line-soft);cursor:pointer}
#mbDetailCard .mqli:hover{background:var(--surface-soft)}
#mbDetailCard .mqli.sel{background:var(--gup-info-soft);box-shadow:inset 3px 0 0 var(--canvas-self)}
#mbDetailCard .mqli-nm{font-size:var(--gup-fs-base);font-weight:var(--gup-font-weight-regular);color:var(--text-main)}
#mbDetailCard .mqli-sub{font-size:var(--gup-fs-sm);color:var(--text-muted);margin-top:2px}
#mbDetailCard .mqb{font-size:var(--gup-fs-note);border-radius:var(--gup-radius-md);padding:2px var(--gup-sp-2);white-space:nowrap}
#mbDetailCard .mqb.ok{background:var(--gup-success-soft);color:var(--gup-positive)}
#mbDetailCard .mqb.warn{background:var(--surface-warn);color:var(--gup-warning)}
#mbDetailCard .mqb.off{background:var(--surface-muted);color:var(--text-muted)}
#mbDetailCard .mqedit-h{font-size:var(--gup-fs-base);margin:0 0 var(--gup-sp-2)}
#mbDetailCard .mqnotice{font-size:var(--gup-fs-note);color:var(--text-secondary);background:var(--surface-soft);border:1px solid var(--line-soft);border-radius:var(--gup-radius-md);padding:var(--gup-sp-2) var(--gup-sp-3);margin-bottom:var(--gup-sp-3)}
#mbDetailCard .mqreconc{display:flex;gap:var(--gup-sp-2);flex-wrap:wrap;margin-bottom:var(--gup-sp-2)}
#mbDetailCard .mqreconc .r{font-size:var(--gup-fs-sm);color:var(--text-label);background:var(--surface-kpi);border:1px solid var(--line-soft);border-radius:var(--gup-radius-md);padding:var(--gup-sp-2) var(--gup-sp-3)}
#mbDetailCard .mqreconc .r b{color:var(--text-main);font-size:var(--gup-fs-lg);margin-left:var(--gup-sp-1)}
#mbDetailCard .mqmatch{display:flex;gap:var(--gup-sp-2);align-items:flex-start;border-radius:var(--gup-radius-md);padding:var(--gup-sp-2) var(--gup-sp-3);font-size:var(--gup-fs-sm);margin-bottom:var(--gup-sp-2)}
#mbDetailCard .mqmatch.ok{background:var(--gup-success-soft);border:1px solid var(--gup-p-green-200)}
#mbDetailCard .mqmatch.bad{background:var(--gup-p-red-050);border:1px solid var(--gup-p-red-200)}
#mbDetailCard .mqmatch .ic{font-weight:var(--gup-font-weight-bold)}
#mbDetailCard .mqmatch .t{font-weight:var(--gup-font-weight-bold);color:var(--text-main)}
#mbDetailCard .mqmatch .d{color:var(--text-secondary);margin-top:2px}
#mbDetailCard .mqseasoncard{border:1px solid var(--line);border-radius:var(--gup-radius-md);padding:var(--gup-sp-2) var(--gup-sp-3);margin-bottom:var(--gup-sp-2)}
#mbDetailCard .mqseasonsum{display:flex;justify-content:space-between;align-items:center;font-size:var(--gup-fs-note)}
#mbDetailCard .mqseason{display:grid;grid-template-columns:repeat(6,1fr);gap:var(--gup-sp-2);margin-top:var(--gup-sp-2)}
#mbDetailCard .mqseason .c{display:flex;flex-direction:column;font-size:var(--gup-fs-note);color:var(--text-muted)}
#mbDetailCard .mqseason .c input{width:100%;box-sizing:border-box;text-align:right;font-size:var(--gup-fs-note);padding:3px var(--gup-sp-1);border:1px solid var(--line);border-radius:var(--gup-radius-sm)}
#mbDetailCard .mqseasonrow{display:flex;gap:var(--gup-sp-2);align-items:center;margin-top:var(--gup-sp-2);flex-wrap:wrap}
#mbDetailCard .mqseasonrow .note{font-size:var(--gup-fs-note);color:var(--text-muted)}
#mbDetailCard .mqtbar{display:flex;gap:var(--gup-sp-3);align-items:center;margin-bottom:var(--gup-sp-2);position:relative}
#mbDetailCard .mqresetpop{position:absolute;top:26px;left:0;z-index:5;background:var(--card);border:1px solid var(--line);border-radius:var(--gup-radius-md);box-shadow:0 6px 18px rgba(0,0,0,.12);display:flex;flex-direction:column;min-width:220px}
#mbDetailCard .mqresetpop button{appearance:none;background:none;border:none;text-align:left;padding:9px var(--gup-sp-3);font-size:var(--gup-fs-note);cursor:pointer;color:var(--text-main)}
#mbDetailCard .mqresetpop button:hover{background:var(--surface-soft)}
#mbDetailCard .mqopmsg{font-size:var(--gup-fs-note);color:var(--good)}
#mbDetailCard .mqopmsg.err{color:var(--bad);font-weight:var(--gup-font-weight-regular)}
#mbDetailCard .mqwrap{overflow-x:auto}
#mbDetailCard .mqtable{width:100%;border-collapse:collapse;font-size:var(--gup-fs-base);min-width:560px}
#mbDetailCard .mqtable th,#mbDetailCard .mqtable td{border-bottom:1px solid var(--line-soft);padding:var(--gup-table-cell-block-padding) var(--gup-table-cell-inline-padding);vertical-align:top}
#mbDetailCard .mqtable th{background:var(--surface-muted);font-size:var(--gup-fs-sm);color:var(--text-label);text-align:right}
#mbDetailCard .mqtable th.lft,#mbDetailCard .mqtable td.lft{text-align:left}
#mbDetailCard .mqtable td.num{text-align:right}
#mbDetailCard .mqtable td.vq{color:var(--text-secondary)}
#mbDetailCard .mqtable td.mq{color:var(--text-main);font-weight:var(--gup-font-weight-bold)}  /* MQ 正常値は濃色（赤字にしない）*/
#mbDetailCard .mqin{width:100%;box-sizing:border-box;text-align:right;font-size:var(--gup-fs-base);padding:var(--gup-sp-1) var(--gup-sp-2);border:1px solid var(--line);border-radius:var(--gup-radius-md)}
#mbDetailCard .mqin.fx{border-color:var(--p-blue);background:var(--gup-info-soft)}
#mbDetailCard .mqin.au{background:var(--card);color:var(--text-secondary)}
#mbDetailCard .mqnote{width:100%;box-sizing:border-box;font-size:var(--gup-fs-sm);padding:var(--gup-sp-1) var(--gup-sp-2);border:1px solid var(--line-soft);border-radius:var(--gup-radius-md)}
#mbDetailCard .mqnote.filled{border-color:var(--line);background:var(--surface-soft)}
#mbDetailCard .mqcs{font-size:var(--gup-fs-note);margin-top:2px;text-align:right}
#mbDetailCard .mqcs.fx{color:var(--p-blue)}
#mbDetailCard .mqcs.fx a{color:var(--select-accent-dark);cursor:pointer;margin-left:var(--gup-sp-1);text-decoration:underline}
#mbDetailCard .mqcs.au{color:var(--text-muted)}
#mbDetailCard .mqhint{font-size:var(--gup-fs-note);color:var(--text-muted);margin-top:var(--gup-sp-2)}
@media (max-width:900px){#mbDetailCard .mqgrid{grid-template-columns:1fr}}
/* Phase F2: F月次予算（固定費）UI */
#mbDetailCard .mqfcat{display:inline-block;font-size:var(--gup-fs-note);font-weight:var(--gup-font-weight-bold);color:var(--ui-f);background:var(--gup-p-lime-050);border-radius:var(--gup-radius-md);padding:1px var(--gup-sp-1);margin-right:2px}
#mbDetailCard .mqli-empty{font-size:var(--gup-fs-note);color:var(--text-muted);padding:var(--gup-sp-2) var(--gup-sp-3)}
#mbDetailCard .mqli-total{cursor:default;background:var(--surface-muted)}
#mbDetailCard .mqli-total:hover{background:var(--surface-muted)}
#mbDetailCard .mqfgraphbox{margin:6px 0 var(--gup-sp-2)}
#mbDetailCard .mqbgwrap{padding:var(--gup-sp-1) var(--gup-sp-2);border:1px solid var(--line-soft);border-radius:var(--gup-radius-md);background:var(--surface-soft)}
#mbDetailCard .mqbgsvg{width:100%;height:auto;display:block}
#mbDetailCard .mqbg-grid{stroke:var(--line-soft);stroke-width:1}
#mbDetailCard .mqbg-axline{stroke:var(--line);stroke-width:1}
#mbDetailCard .mqbg-zero{stroke:var(--grey);stroke-width:1;stroke-dasharray:3 3}
#mbDetailCard .mqbg-tick{font-size:var(--gup-fs-note);fill:var(--text-secondary);text-anchor:end}
#mbDetailCard .mqbg-mlab{font-size:var(--gup-fs-note);fill:var(--text-muted);text-anchor:middle}
#mbDetailCard .mqbg-mlab.sp{fill:var(--text-label);font-weight:var(--gup-font-weight-bold)}
#mbDetailCard .mqbar{opacity:.72}
#mbDetailCard .mqbar.sp{opacity:1}
#mbDetailCard .mqbar.f{fill:var(--ui-f)}
#mbDetailCard .mqbar.mq{fill:var(--ui-m)}
#mbDetailCard .mqfgcap{font-size:var(--gup-fs-note);color:var(--text-muted);margin-top:var(--gup-sp-1)}
#mbDetailCard .mqfsp-legend{color:var(--ui-f)}
#mbDetailCard .mqmqsp-legend{color:var(--ui-m)}
/* Phase 1b: ⑥ 予実管理 月次予実 UI */
#fpaActualWrap .perf-ctxbar{display:flex;flex-wrap:wrap;gap:var(--gup-sp-2);margin:var(--gup-sp-4) 0 var(--gup-sp-3)}
#fpaActualWrap .perf-chip{font-size:var(--gup-fs-note);color:var(--text-label);background:var(--surface-muted);border:1px solid var(--line-soft);border-radius:var(--gup-radius-md);padding:3px var(--gup-sp-3)}
#fpaActualWrap .perf-chip.co{font-weight:var(--gup-font-weight-bold);color:var(--text-main)}
#fpaActualWrap .perf-chip.lock{background:var(--gup-p-red-050);border-color:var(--gup-p-red-200);color:var(--gup-negative)}
#fpaActualWrap .perf-chip.dirty{background:var(--surface-warn);border-color:var(--gup-brand-accent-border);color:var(--gup-warning)}
#fpaActualWrap .perf-chip.saved{background:var(--gup-success-soft);border-color:var(--gup-p-green-200);color:var(--gup-positive)}
#fpaActualWrap .perf-controls{display:flex;flex-wrap:wrap;gap:var(--gup-sp-4);align-items:center;margin-bottom:var(--gup-sp-3)}
#fpaActualWrap .perf-field{font-size:var(--gup-fs-sm);color:var(--text-label);display:flex;align-items:center;gap:var(--gup-sp-2)}
#fpaActualWrap .perf-field select{font-size:var(--gup-fs-sm);padding:var(--gup-sp-1) var(--gup-sp-2);border:1px solid var(--line);border-radius:var(--gup-radius-sm)}
#fpaActualWrap .perf-viewtoggle,#fpaActualWrap .perf-mettoggle{display:inline-flex;border:1px solid var(--line);border-radius:var(--gup-radius-md);overflow:hidden}
#fpaActualWrap .perf-mettoggle{margin-bottom:var(--gup-sp-2)}
#fpaActualWrap .perf-vbtn,#fpaActualWrap .perf-metbtn{appearance:none;border:none;background:var(--card);font-size:var(--gup-fs-sm);padding:var(--gup-sp-2) var(--gup-sp-4);cursor:pointer;color:var(--text-secondary);border-left:1px solid var(--line)}
#fpaActualWrap .perf-vbtn:first-child,#fpaActualWrap .perf-metbtn:first-child{border-left:none}
#fpaActualWrap .perf-vbtn.active,#fpaActualWrap .perf-metbtn.active{background:var(--gup-action-primary);color:var(--gup-text-inverse);font-weight:var(--gup-font-weight-bold)}
#fpaActualWrap .perf-note{font-size:var(--gup-fs-note);color:var(--text-secondary);margin-bottom:var(--gup-sp-2)}
#fpaActualWrap .perf-period{font-weight:var(--gup-font-weight-bold);padding:1px var(--gup-sp-2);border-radius:var(--gup-radius-md)}
#fpaActualWrap .perf-period.act{background:var(--gup-success-soft);color:var(--gup-positive)}
#fpaActualWrap .perf-period.fc{background:var(--gup-scenario-forecast-soft);color:var(--gup-scenario-forecast)}
#fpaActualWrap .perfwrap{overflow-x:auto}
#fpaActualWrap .perftable{width:100%;border-collapse:collapse;font-size:var(--gup-fs-base);min-width:520px}
#fpaActualWrap .perftable th,#fpaActualWrap .perftable td{border-bottom:1px solid var(--line-soft);padding:var(--gup-table-cell-block-padding) var(--gup-sp-2);text-align:right;vertical-align:middle}
#fpaActualWrap .perftable th.lft,#fpaActualWrap .perftable td.lft{text-align:left}
#fpaActualWrap .perftable th{background:var(--surface-muted);font-size:var(--gup-fs-sm);color:var(--text-label)}
#fpaActualWrap .perftable td.bud{color:var(--text-secondary)}
#fpaActualWrap .perftable td.out{font-weight:var(--gup-font-weight-bold);color:var(--text-main)}
#fpaActualWrap .perftable td.diff{color:var(--text-secondary)}
#fpaActualWrap .perfin{width:100%;box-sizing:border-box;text-align:right;font-size:var(--gup-fs-base);padding:var(--gup-sp-1) var(--gup-sp-2);border:1px solid var(--line);border-radius:var(--gup-radius-md)}
#fpaActualWrap .perfin:focus{border-color:var(--canvas-self);}
#fpaActualWrap .perf-warn{font-size:var(--gup-fs-note);color:var(--gup-negative);background:var(--gup-p-red-050);border:1px solid var(--gup-p-red-200);border-radius:var(--gup-radius-md);padding:var(--gup-sp-2) var(--gup-sp-3);margin-bottom:var(--gup-sp-2)}
#fpaActualWrap .perf-opmsg{font-size:var(--gup-fs-note);color:var(--gup-warning);background:var(--surface-warn);border-radius:var(--gup-radius-sm);padding:var(--gup-sp-2) var(--gup-sp-3);margin-bottom:var(--gup-sp-2)}
#fpaActualWrap .perf-saved{font-size:var(--gup-fs-sm);color:var(--gup-positive);background:var(--gup-success-soft);border:1px solid var(--gup-p-green-200);border-radius:var(--gup-radius-md);padding:var(--gup-sp-2) var(--gup-sp-3);margin-bottom:var(--gup-sp-3)}
#fpaActualWrap .perf-savebar{display:flex;align-items:center;gap:var(--gup-sp-3);margin-top:var(--gup-sp-4)}
#fpaActualWrap .perf-dirtynote{font-size:var(--gup-fs-note);color:var(--gup-warning)}
#fpaActualWrap .perf-beginbox{border:1px dashed var(--line);border-radius:var(--gup-radius-md);background:var(--surface-soft);padding:var(--gup-sp-4)}
#fpaActualWrap .perf-beginmsg{font-size:var(--gup-fs-sm);color:var(--text-secondary);margin-bottom:var(--gup-sp-3)}
#fpaActualWrap .perf-confirm{border:1px solid var(--line);border-radius:var(--gup-radius-md);background:var(--card);padding:var(--gup-sp-4)}
#fpaActualWrap .perf-confirm .t{font-weight:var(--gup-font-weight-bold);font-size:var(--gup-fs-base);margin-bottom:var(--gup-sp-2)}
#fpaActualWrap .perf-confirm-list{margin:0 0 var(--gup-sp-3);padding-left:var(--gup-sp-4);font-size:var(--gup-fs-sm);color:var(--text-secondary);line-height:var(--gup-lh-body)}
#fpaActualWrap .perf-confirm-btns{display:flex;gap:var(--gup-sp-3);align-items:center}
#fpaActualWrap .perf-trend-h{font-size:var(--gup-fs-sm);margin:var(--gup-sp-4) 0 var(--gup-sp-2)}
#fpaActualWrap .perftgsvg{width:100%;height:auto;display:block}
#fpaActualWrap .perftg-grid{stroke:var(--line-soft);stroke-width:1}
#fpaActualWrap .perftg-ax{stroke:var(--line);stroke-width:1}
#fpaActualWrap .perftg-div{stroke:var(--grey);stroke-width:1;stroke-dasharray:2 3}
#fpaActualWrap .perftg-tick{font-size:var(--gup-fs-note);fill:var(--text-secondary);text-anchor:end}
#fpaActualWrap .perftg-mlab{font-size:var(--gup-fs-note);fill:var(--text-muted);text-anchor:middle}
/* UI-COLOR1: シナリオ色は semantic token に固定する。
   Budget＝ゴールド系（Plan と同系統）／Actual＝neutral（基準）／Forecast＝青系。
   色だけに頼らないよう、3 本とも線種を変える（実線・太実線・破線）。 */
#fpaActualWrap .perftg-line{fill:none;stroke-width:2.2px}
#fpaActualWrap .perftg-line.budget{stroke:var(--gup-scenario-budget);stroke-dasharray:1 3;stroke-linecap:round}
#fpaActualWrap .perftg-line.actual{stroke:var(--gup-scenario-actual);stroke-width:2.8px}
#fpaActualWrap .perftg-line.forecast{stroke:var(--gup-scenario-forecast);stroke-dasharray:7 4}
#fpaActualWrap .perftglegend{display:flex;flex-wrap:wrap;gap:14px;font-size:var(--gup-fs-note);margin-top:6px;align-items:center}
#fpaActualWrap .perftglegend .lg{position:relative;padding-left:20px;color:var(--text-secondary)}
#fpaActualWrap .perftglegend .lg::before{content:'';position:absolute;left:0;top:50%;width:16px;border-top-width:2.4px;border-top-style:solid;transform:translateY(-50%)}
#fpaActualWrap .perftglegend .lg.budget::before{border-top-color:var(--gup-scenario-budget);border-top-style:dotted}
#fpaActualWrap .perftglegend .lg.actual::before{border-top-color:var(--gup-scenario-actual);border-top-width:3px}
#fpaActualWrap .perftglegend .lg.forecast::before{border-top-color:var(--gup-scenario-forecast);border-top-style:dashed}
#fpaActualWrap .perftg-unit{color:var(--text-muted);margin-left:auto}
#fpaActualWrap .mqguide{font-size:var(--gup-fs-sm);color:var(--text-secondary);background:var(--surface-soft);border:1px solid var(--line-soft);border-radius:var(--gup-radius-md);padding:var(--gup-sp-4)}
/* Phase 1d: ⑥ 予実管理 差異分析 UI */
#fpaVarianceWrap .perf-ctxbar{display:flex;flex-wrap:wrap;gap:var(--gup-sp-2);margin:var(--gup-sp-4) 0 var(--gup-sp-3)}
#fpaVarianceWrap .perf-chip{font-size:var(--gup-fs-note);color:var(--text-label);background:var(--surface-muted);border:1px solid var(--line-soft);border-radius:var(--gup-radius-md);padding:3px var(--gup-sp-3)}
#fpaVarianceWrap .perf-chip.co{font-weight:var(--gup-font-weight-bold);color:var(--text-main)}
#fpaVarianceWrap .perf-chip.dirty{background:var(--surface-warn);border-color:var(--gup-brand-accent-border);color:var(--gup-warning)}
#fpaVarianceWrap .perf-chip.saved{background:var(--gup-success-soft);border-color:var(--gup-p-green-200);color:var(--gup-positive)}
#fpaVarianceWrap .perf-controls{display:flex;flex-wrap:wrap;gap:var(--gup-sp-4);align-items:center;margin-bottom:var(--gup-sp-3)}
#fpaVarianceWrap .perf-field{font-size:var(--gup-fs-sm);color:var(--text-label);display:flex;align-items:center;gap:var(--gup-sp-2)}
#fpaVarianceWrap .perf-field select{font-size:var(--gup-fs-sm);padding:var(--gup-sp-1) var(--gup-sp-2);border:1px solid var(--line);border-radius:var(--gup-radius-sm)}
#fpaVarianceWrap .perf-viewtoggle{display:inline-flex;border:1px solid var(--line);border-radius:var(--gup-radius-md);overflow:hidden}
#fpaVarianceWrap .perf-vbtn{appearance:none;border:none;background:var(--card);font-size:var(--gup-fs-sm);padding:var(--gup-sp-2) var(--gup-sp-4);cursor:pointer;color:var(--text-secondary);border-left:1px solid var(--line)}
#fpaVarianceWrap .perf-vbtn:first-child{border-left:none}
#fpaVarianceWrap .perf-vbtn.active{background:var(--gup-action-primary);color:var(--gup-text-inverse);font-weight:var(--gup-font-weight-bold)}
#fpaVarianceWrap .mqguide{font-size:var(--gup-fs-sm);color:var(--text-secondary);background:var(--surface-soft);border:1px solid var(--line-soft);border-radius:var(--gup-radius-md);padding:var(--gup-sp-4)}
#fpaVarianceWrap .vp-h{font-size:var(--gup-fs-sm);margin:var(--gup-sp-4) 0 var(--gup-sp-2)}
#fpaVarianceWrap .vp-msg{font-size:var(--gup-fs-sm);color:var(--text-secondary);background:var(--surface-soft);border:1px solid var(--line-soft);border-radius:var(--gup-radius-md);padding:var(--gup-sp-3);margin:var(--gup-sp-2) 0}
#fpaVarianceWrap .vp-note{font-size:var(--gup-fs-note);color:var(--gup-warning);background:var(--surface-warn);border:1px solid var(--gup-brand-accent-border);border-radius:var(--gup-radius-md);padding:var(--gup-sp-2) var(--gup-sp-3);margin-bottom:var(--gup-sp-2)}
#fpaVarianceWrap .vp-gate{border:1px dashed var(--line);border-radius:var(--gup-radius-md);background:var(--surface-soft);padding:var(--gup-sp-4)}
#fpaVarianceWrap .vp-gate .m{font-size:var(--gup-fs-sm);color:var(--text-secondary);margin-bottom:var(--gup-sp-3)}
#fpaVarianceWrap .vp-summary{display:flex;flex-wrap:wrap;gap:var(--gup-sp-3);margin:var(--gup-sp-2) 0 var(--gup-sp-1)}
#fpaVarianceWrap .vp-kpi{display:flex;flex-direction:column;gap:2px;border:1px solid var(--line-soft);border-radius:var(--gup-radius-md);padding:var(--gup-sp-2) var(--gup-sp-3);background:var(--surface-kpi);min-width:120px}
#fpaVarianceWrap .vp-kpi .k{font-size:var(--gup-fs-note);color:var(--text-muted)}
#fpaVarianceWrap .vp-kpi .v{font-size:var(--gup-fs-lg);font-weight:var(--gup-font-weight-bold);color:var(--text-main)}
#fpaVarianceWrap .vp-kpi.big .v{font-size:var(--gup-fs-xl)}
#fpaVarianceWrap .vp-kpi.vp-fav .v{color:var(--gup-positive)}
#fpaVarianceWrap .vp-kpi.vp-unfav .v{color:var(--gup-negative)}
#fpaVarianceWrap .vp-narr{font-size:var(--gup-fs-sm);color:var(--text-main);background:var(--surface-kpi);border-left:3px solid var(--canvas-self);border-radius:var(--gup-radius-md);padding:var(--gup-sp-3) var(--gup-sp-3);margin:var(--gup-sp-2) 0}
#fpaVarianceWrap .vpwrap{overflow-x:auto}
#fpaVarianceWrap .vptable{width:100%;border-collapse:collapse;font-size:var(--gup-fs-base);min-width:520px}
#fpaVarianceWrap .vptable th,#fpaVarianceWrap .vptable td{border-bottom:1px solid var(--line-soft);padding:var(--gup-table-cell-block-padding) var(--gup-sp-2);text-align:right}
#fpaVarianceWrap .vptable th.lft,#fpaVarianceWrap .vptable td.lft{text-align:left}
#fpaVarianceWrap .vptable th{background:var(--surface-muted);font-size:var(--gup-fs-sm);color:var(--text-label)}
#fpaVarianceWrap .vptable td.bud{color:var(--text-secondary)}
#fpaVarianceWrap .vptable td.rate{color:var(--text-muted);font-size:var(--gup-fs-sm)}
#fpaVarianceWrap .vptable td.vp-fav{color:var(--gup-positive);font-weight:var(--gup-font-weight-bold)}
#fpaVarianceWrap .vptable td.vp-unfav{color:var(--gup-negative);font-weight:var(--gup-font-weight-bold)}
#fpaVarianceWrap .vptable td.vp-zero{color:var(--text-secondary)}
#fpaVarianceWrap .vp-fnote,#fpaVarianceWrap .vp-defs{font-size:var(--gup-fs-note);color:var(--text-secondary);margin-top:var(--gup-sp-2);line-height:var(--gup-lh-body)}
#fpaVarianceWrap .vp-defs ul{margin:var(--gup-sp-1) 0 0;padding-left:var(--gup-sp-4)}
#fpaVarianceWrap .vpsvg{width:100%;height:auto;display:block}
#fpaVarianceWrap .vp-grid{stroke:var(--line-soft);stroke-width:1}
#fpaVarianceWrap .vp-baseline{stroke:var(--grey);stroke-width:1.5}
#fpaVarianceWrap .vp-tick{font-size:var(--gup-fs-note);fill:var(--text-secondary);text-anchor:end}
#fpaVarianceWrap .vp-vlabel{font-size:var(--gup-fs-note);fill:var(--text-main);text-anchor:middle;font-weight:var(--gup-font-weight-bold)}
#fpaVarianceWrap .vp-xlabel{font-size:var(--gup-fs-note);fill:var(--text-secondary);text-anchor:middle}
#fpaVarianceWrap .vp-conn{stroke:var(--grey);stroke-width:1;stroke-dasharray:3 3}
#fpaVarianceWrap .vp-bar{opacity:.9}
#fpaVarianceWrap .vp-bar.abs{fill:var(--canvas-self)}
#fpaVarianceWrap .vp-bar.fav{fill:var(--ui-f)}
#fpaVarianceWrap .vp-bar.unfav{fill:var(--ui-m)}
#fpaVarianceWrap .vp-bar.zero{fill:var(--grey)}
/* Phase 1c 前段: ⑦ 月次予実 実績データ取込 UI プロトタイプ */
#fpaActualWrap .perf-modetoggle{display:inline-flex;border:1px solid var(--line);border-radius:var(--gup-radius-md);overflow:hidden;margin:var(--gup-sp-2) 0 var(--gup-sp-3)}
#fpaActualWrap .perf-mbtn{appearance:none;border:none;background:var(--card);font-size:var(--gup-fs-sm);padding:var(--gup-sp-2) var(--gup-sp-4);cursor:pointer;color:var(--text-secondary);border-left:1px solid var(--line)}
#fpaActualWrap .perf-mbtn:first-child{border-left:none}
#fpaActualWrap .perf-mbtn.active{background:var(--canvas-self);color:var(--gup-text-inverse);font-weight:var(--gup-font-weight-bold)}
#fpaActualWrap .imp-banner{font-size:var(--gup-fs-sm);color:var(--gup-warning);background:var(--surface-warn);border:1px solid var(--gup-brand-accent-border);border-radius:var(--gup-radius-md);padding:var(--gup-sp-3) var(--gup-sp-3);margin-bottom:var(--gup-sp-3)}
#fpaActualWrap .imp-title{font-size:var(--gup-fs-base);margin:var(--gup-sp-2) 0 var(--gup-sp-2)}
#fpaActualWrap .imp-steps{display:flex;flex-wrap:wrap;gap:var(--gup-sp-2);margin:var(--gup-sp-2) 0 var(--gup-sp-4)}
#fpaActualWrap .imp-step{display:flex;align-items:center;gap:var(--gup-sp-2);font-size:var(--gup-fs-sm);color:var(--text-muted);background:var(--surface-soft);border:1px solid var(--line-soft);border-radius:var(--gup-radius-md);padding:var(--gup-sp-1) var(--gup-sp-3)}
#fpaActualWrap .imp-step .n{display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;border-radius:50%;background:var(--surface-muted);color:var(--text-secondary);font-size:var(--gup-fs-note);font-weight:var(--gup-font-weight-bold)}
#fpaActualWrap .imp-step.active{border-color:var(--canvas-self);color:var(--text-main);font-weight:var(--gup-font-weight-bold)}
#fpaActualWrap .imp-step.active .n{background:var(--canvas-self);color:var(--gup-text-inverse)}
#fpaActualWrap .imp-step.done .n{background:var(--gup-positive);color:var(--gup-text-inverse)}
#fpaActualWrap .imp-stepbody{margin:var(--gup-sp-1) 0}
#fpaActualWrap .imp-cards{display:grid;grid-template-columns:1fr 1fr;gap:var(--gup-sp-4)}
@media (max-width:900px){#fpaActualWrap .imp-cards{grid-template-columns:1fr}}
#fpaActualWrap .imp-card{border:1px solid var(--line);border-radius:var(--gup-radius-md);padding:var(--gup-sp-4);background:var(--card)}
#fpaActualWrap .imp-cardhead{display:flex;flex-wrap:wrap;align-items:baseline;gap:var(--gup-sp-2);margin-bottom:var(--gup-sp-1)}
#fpaActualWrap .imp-cardhead b{font-size:var(--gup-fs-base);color:var(--text-main)}
#fpaActualWrap .imp-cardsub{font-size:var(--gup-fs-note);color:var(--text-muted)}
#fpaActualWrap .imp-desc{font-size:var(--gup-fs-sm);color:var(--text-secondary);margin:var(--gup-sp-1) 0 var(--gup-sp-3);line-height:var(--gup-lh-body)}
#fpaActualWrap .imp-kv{display:flex;justify-content:space-between;gap:var(--gup-sp-3);font-size:var(--gup-fs-sm);padding:var(--gup-sp-1) 0;border-bottom:1px solid var(--line-soft)}
#fpaActualWrap .imp-kv span{color:var(--text-muted)}
#fpaActualWrap .imp-kv b{color:var(--text-main)}
#fpaActualWrap .imp-future{font-size:var(--gup-fs-note);color:var(--text-muted);margin-top:var(--gup-sp-3);line-height:var(--gup-lh-body)}
#fpaActualWrap .imp-tablewrap{overflow-x:auto}
#fpaActualWrap .imp-table{width:100%;border-collapse:collapse;font-size:var(--gup-fs-sm);min-width:640px}
#fpaActualWrap .imp-table th,#fpaActualWrap .imp-table td{border-bottom:1px solid var(--line-soft);padding:var(--gup-table-cell-block-padding) var(--gup-sp-2);text-align:right;white-space:nowrap}
#fpaActualWrap .imp-table th.lft,#fpaActualWrap .imp-table td.lft{text-align:left}
#fpaActualWrap .imp-table th{background:var(--surface-muted);font-size:var(--gup-fs-note);color:var(--text-label)}
#fpaActualWrap .imp-table td.num{text-align:right}
#fpaActualWrap .imp-select{font-size:var(--gup-fs-sm);padding:3px var(--gup-sp-2);border:1px solid var(--line);border-radius:var(--gup-radius-sm);max-width:220px}
#fpaActualWrap .imp-chip{font-size:var(--gup-fs-note);border-radius:var(--gup-radius-md);padding:2px var(--gup-sp-2);white-space:nowrap}
#fpaActualWrap .imp-chip.ok{background:var(--gup-success-soft);color:var(--gup-positive)}
#fpaActualWrap .imp-chip.warn{background:var(--surface-warn);color:var(--gup-warning)}
#fpaActualWrap .imp-chip.check{background:var(--gup-info-soft);color:var(--gup-info)}
#fpaActualWrap .imp-chip.other{background:var(--surface-muted);color:var(--text-secondary)}
#fpaActualWrap .imp-chip.muted{background:var(--surface-muted);color:var(--text-muted)}
#fpaActualWrap .imp-hint,#fpaActualWrap .imp-reconnote,#fpaActualWrap .imp-note-muted{font-size:var(--gup-fs-note);color:var(--text-secondary);margin-top:var(--gup-sp-2);line-height:var(--gup-lh-body)}
#fpaActualWrap .imp-note-muted{color:var(--text-muted)}
#fpaActualWrap .imp-note-strong{color:var(--gup-warning);font-weight:var(--gup-font-weight-regular)}
#fpaActualWrap .imp-diff{color:var(--gup-negative);font-weight:var(--gup-font-weight-bold)}
#fpaActualWrap .imp-zero{color:var(--text-secondary)}
#fpaActualWrap .imp-gotorow{margin-top:var(--gup-sp-3)}
#fpaActualWrap .imp-level{border-radius:var(--gup-radius-md);padding:var(--gup-sp-3) var(--gup-sp-4);margin-top:var(--gup-sp-3);font-size:var(--gup-fs-sm);line-height:var(--gup-lh-body)}
#fpaActualWrap .imp-level b{font-size:var(--gup-fs-base)}
#fpaActualWrap .imp-level.basic{background:var(--surface-soft);border:1px solid var(--line-soft)}
#fpaActualWrap .imp-level.warn{background:var(--surface-warn);border:1px solid var(--gup-brand-accent-border)}
#fpaActualWrap .imp-level.ok{background:var(--gup-success-soft);border:1px solid var(--gup-p-green-200)}
#fpaActualWrap .imp-confirm{border:1px solid var(--line);border-radius:var(--gup-radius-md);padding:var(--gup-sp-4);background:var(--card)}
#fpaActualWrap .imp-confirm-btns{display:flex;flex-wrap:wrap;gap:var(--gup-sp-3);align-items:center;margin-top:var(--gup-sp-3)}
#fpaActualWrap .imp-nav{display:flex;align-items:center;justify-content:space-between;gap:var(--gup-sp-3);margin-top:var(--gup-sp-4)}
#fpaActualWrap .imp-navpos{font-size:var(--gup-fs-note);color:var(--text-muted)}
/* Phase 1c 前段(改): 商品・サービス別 MQ 予実比較 */
#fpaActualWrap .imp-step{appearance:none;cursor:pointer;font-family:inherit}
#fpaActualWrap .imp-title2{font-size:var(--gup-fs-sm);margin:var(--gup-sp-4) 0 var(--gup-sp-2)}
#fpaActualWrap .imp-prodswitch{display:flex;flex-wrap:wrap;gap:var(--gup-sp-2);margin:var(--gup-sp-2) 0 var(--gup-sp-2)}
#fpaActualWrap .imp-prodbtn{appearance:none;border:1px solid var(--line);background:var(--card);font-size:var(--gup-fs-sm);padding:var(--gup-sp-2) var(--gup-sp-3);border-radius:var(--gup-radius-md);cursor:pointer;color:var(--text-secondary)}
#fpaActualWrap .imp-prodbtn.active{background:var(--canvas-self);color:var(--gup-text-inverse);font-weight:var(--gup-font-weight-bold);border-color:var(--canvas-self)}
#fpaActualWrap .imp-selname{font-size:var(--gup-fs-sm);font-weight:var(--gup-font-weight-bold);color:var(--text-main);margin:var(--gup-sp-1) 0 var(--gup-sp-2)}
#fpaActualWrap .imp-sumrow{cursor:pointer}
#fpaActualWrap .imp-sumrow:hover{background:var(--surface-soft)}
#fpaActualWrap .imp-sumrow.sel{background:var(--gup-info-soft);box-shadow:inset 3px 0 0 var(--canvas-self)}
/* Phase 1c 前段(再設計): 左=MQ予実カード・右=差異コメント */
#fpaActualWrap .mqc-headrow{display:grid;grid-template-columns:minmax(0,1fr) minmax(320px,0.85fr);gap:var(--gup-sp-4);align-items:stretch;margin-bottom:var(--gup-sp-3)}
@media (max-width:1000px){#fpaActualWrap .mqc-headrow{grid-template-columns:1fr;align-items:start}}
#fpaActualWrap .mqc-headleft{min-width:0;display:flex;flex-direction:column}
#fpaActualWrap .mqc-headleft .mqc-summary{flex:1;display:flex;flex-direction:column;justify-content:center;margin-bottom:0}
#fpaActualWrap .mqc-headright{min-width:0;display:flex}
#fpaActualWrap .mqc-headright .mqc-comment{flex:1}
#fpaActualWrap .mqc-topline{font-size:var(--gup-fs-base);font-weight:var(--gup-font-weight-bold);color:var(--text-main);margin:var(--gup-sp-2) 0 var(--gup-sp-2)}
#fpaActualWrap .mqc-target{font-size:var(--gup-fs-sm);font-weight:var(--gup-font-weight-regular);color:var(--text-muted);margin-left:var(--gup-sp-2)}
#fpaActualWrap .mqc-selname{font-size:var(--gup-fs-base);font-weight:var(--gup-font-weight-bold);color:var(--text-main);margin:var(--gup-sp-1) 0 var(--gup-sp-2)}
#fpaActualWrap .mqc-summary{border:1px solid var(--line);border-radius:var(--gup-radius-md);padding:var(--gup-sp-4) var(--gup-sp-4);background:var(--surface-kpi);margin-bottom:var(--gup-sp-3)}
#fpaActualWrap .mqc-sumtitle{font-size:var(--gup-fs-sm);color:var(--text-muted);margin-bottom:var(--gup-sp-1)}
#fpaActualWrap .mqc-sumrow{display:flex;align-items:center;gap:var(--gup-sp-4);flex-wrap:wrap}
#fpaActualWrap .mqc-pv{display:flex;flex-direction:column}
#fpaActualWrap .mqc-pv .l{font-size:var(--gup-fs-note);color:var(--text-muted)}
#fpaActualWrap .mqc-pv .n{font-size:var(--gup-fs-display);font-weight:var(--gup-font-weight-bold);color:var(--text-main)}
#fpaActualWrap .mqc-pv .n.big{font-size:var(--gup-fs-hero)}
#fpaActualWrap .mqc-arrow{font-size:var(--gup-fs-display);color:var(--text-muted)}
#fpaActualWrap .mqc-sumdiff{font-size:var(--gup-fs-xl);font-weight:var(--gup-font-weight-bold);margin-top:var(--gup-sp-2)}
#fpaActualWrap .mqc-sumdiff.vp-fav{color:var(--gup-positive)}
#fpaActualWrap .mqc-sumdiff.vp-unfav{color:var(--gup-negative)}
#fpaActualWrap .mqc-sumdiff.vp-zero{color:var(--text-secondary)}
#fpaActualWrap .mqc-cards{display:grid;grid-template-columns:1fr 1fr 1fr 1fr;gap:var(--gup-sp-3);margin-bottom:var(--gup-sp-3)}
@media (max-width:760px){#fpaActualWrap .mqc-cards{grid-template-columns:1fr 1fr}}
#fpaActualWrap .mqc-card{border:1px solid var(--line-soft);border-radius:var(--gup-radius-md);padding:var(--gup-sp-3) var(--gup-sp-3);background:var(--card)}
#fpaActualWrap .mqc-card.favorable{border-left:3px solid var(--gup-positive)}
#fpaActualWrap .mqc-card.unfavorable{border-left:3px solid var(--ui-m)}
#fpaActualWrap .mqc-card.neutral,#fpaActualWrap .mqc-card.na{border-left:3px solid var(--line)}
#fpaActualWrap .mqc-cardlabel{font-size:var(--gup-fs-sm);font-weight:var(--gup-font-weight-bold);color:var(--text-label);margin-bottom:var(--gup-sp-2)}
#fpaActualWrap .mqc-cardkv{display:flex;justify-content:space-between;font-size:var(--gup-fs-base);color:var(--text-secondary)}
#fpaActualWrap .mqc-cardkv b{color:var(--text-main)}
#fpaActualWrap .mqc-carddiff{font-size:var(--gup-fs-base);font-weight:var(--gup-font-weight-bold);margin-top:var(--gup-sp-2)}
#fpaActualWrap .mqc-carddiff.favorable{color:var(--gup-positive)}
#fpaActualWrap .mqc-carddiff.unfavorable{color:var(--gup-negative)}
#fpaActualWrap .mqc-carddiff.neutral,#fpaActualWrap .mqc-carddiff.na{color:var(--text-secondary)}
#fpaActualWrap .mqc-cardjudge{font-size:var(--gup-fs-note);margin-top:2px}
#fpaActualWrap .mqc-cardjudge.favorable{color:var(--gup-positive)}
#fpaActualWrap .mqc-cardjudge.unfavorable{color:var(--gup-negative)}
#fpaActualWrap .mqc-cardjudge.neutral,#fpaActualWrap .mqc-cardjudge.na{color:var(--text-muted)}
#fpaActualWrap .mqc-narrbox{border:1px solid var(--line-soft);border-left:3px solid var(--canvas-self);border-radius:var(--gup-radius-sm);background:var(--surface-soft);padding:var(--gup-sp-3) var(--gup-sp-3);margin-bottom:var(--gup-sp-2)}
#fpaActualWrap .mqc-narrhead{font-size:var(--gup-fs-note);color:var(--text-muted);margin-bottom:3px}
#fpaActualWrap .mqc-narrbody{font-size:var(--gup-fs-base);color:var(--text-main);line-height:var(--gup-lh-body)}
#fpaActualWrap .mqc-right{position:sticky;top:8px}
#fpaActualWrap .mqc-comment{border:1px solid var(--line);border-radius:var(--gup-radius-md);padding:var(--gup-sp-4);background:var(--card)}
#fpaActualWrap .mqc-commenthead{font-size:var(--gup-fs-base);font-weight:var(--gup-font-weight-bold);color:var(--text-main)}
#fpaActualWrap .mqc-commentsub{font-size:var(--gup-fs-sm);color:var(--text-muted);margin:2px 0 var(--gup-sp-2)}
#fpaActualWrap .mqc-commentmeta{font-size:var(--gup-fs-sm);color:var(--text-secondary);background:var(--surface-soft);border-radius:var(--gup-radius-sm);padding:var(--gup-sp-2) var(--gup-sp-2);margin-bottom:var(--gup-sp-2)}
#fpaActualWrap .mqc-commentq{font-size:var(--gup-fs-sm);color:var(--text-secondary);margin-bottom:var(--gup-sp-2)}
#fpaActualWrap .mqc-commentinput{width:100%;box-sizing:border-box;font-size:var(--gup-fs-base);padding:var(--gup-sp-2);border:1px solid var(--line);border-radius:var(--gup-radius-sm);resize:vertical;font-family:inherit}
#fpaActualWrap .mqc-commentnote{font-size:var(--gup-fs-note);color:var(--gup-warning);margin-top:var(--gup-sp-2)}
/* ★ALL VIEWS：管理単位カードは ① 現状把握・③ 数値計画・⑤ 予実管理・各 modal が共有する instrument。
   余白を **ここ（元の宣言）で** 詰める。layout.css の末尾から上書きすると同じ部品の指定が 2 か所になる。 */
.mucur-wrap{border:1px solid var(--line-soft);border-radius:var(--gup-radius-md);padding:var(--gup-sp-2) var(--gup-sp-3);background:var(--surface-soft);margin-bottom:var(--gup-sp-2)}
.mucur-wrap > h3{margin:0 0 var(--gup-sp-2)}
.mucur-bar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:var(--gup-sp-2)}
.mucur-wrap > .mucur-bar:only-child{margin-bottom:0;}   /* UI-FOLD1：入口だけの帯を薄く */
/* V2-AB1（Phase A）：「表示範囲：」は項目名。選んだ中身（select）が主役。 */
.mucur-lbl{font-size:var(--gup-fs-sm);font-weight:var(--gup-type-label-weight);color:var(--text-label)}
.mucur-sel{font-size:var(--gup-fs-base);padding:var(--gup-sp-1) var(--gup-sp-2);border:1px solid var(--line);border-radius:var(--gup-radius-sm);background:var(--input-bg);/* GUP-AIR-SURFACE1A：入力面の役割で塗る */color:var(--text-main);max-width:220px}
.mucur-note{ font-size:var(--gup-fs-sm);color:var(--text-muted)}   /* UI-TYPE4：補足は 14px */
.mucur-toggle{font-size:var(--gup-fs-note);margin-left:auto}
.mucur-gcard{background:var(--card);border:1px solid var(--line-soft);border-radius:var(--gup-radius-md);padding:var(--gup-sp-2) var(--gup-sp-3);margin-bottom:var(--gup-sp-2)}
.mucur-gtitle{font-size:var(--gup-fs-sm);color:var(--text-muted)}   /* UI-TYPE5：小見出しは 14px */
.mucur-gval{font-size:var(--gup-fs-hero);font-weight:var(--gup-font-weight-bold);color:var(--text-main);line-height:1.2}
.mucur-gbridge{display:flex;gap:var(--gup-sp-3);flex-wrap:wrap;font-size:var(--gup-fs-note);color:var(--text-secondary);margin-top:var(--gup-sp-1)}
.mucur-gbridge .eq{font-weight:var(--gup-font-weight-bold);color:var(--text-main)}
.mucur-gsub{display:flex;gap:var(--gup-sp-1) var(--gup-sp-3);flex-wrap:wrap;font-size:var(--gup-fs-sm);color:var(--text-secondary);margin-top:var(--gup-sp-1)}
.mucur-gsub b{color:var(--text-main)}
.mucur-table{width:100%;border-collapse:collapse;font-size:var(--gup-fs-sm)}
.mucur-table th,.mucur-table td{border-bottom:1px solid var(--line-soft);padding:var(--gup-table-cell-block-padding) var(--gup-sp-2);white-space:nowrap}
.mucur-table th{font-size:var(--gup-fs-note);color:var(--text-label);text-align:right;background:var(--surface-kpi)}
.mucur-table th.lft,.mucur-table td.lft{text-align:left}
.mucur-table td.num,.mucur-table th.num{text-align:right}
.mucur-table tr.mucur-row{cursor:pointer}
.mucur-table tr.mucur-row:hover td{background:var(--surface-kpi)}
.mucur-hint{font-size:var(--gup-fs-sm);color:var(--text-muted);margin-top:var(--gup-sp-1);line-height:var(--gup-lh-body);max-width:var(--gup-measure);}   /* UI-TYPE4/5：補足は 14px・本文の行送り */
.mucur-subhead{font-size:var(--gup-fs-sm);font-weight:var(--gup-font-weight-bold);color:var(--text-label);margin:var(--gup-sp-2) 0 var(--gup-sp-1)}
.muset-wrap{border:1px solid var(--line);border-radius:var(--gup-radius-md);background:var(--card);padding:var(--gup-sp-3) var(--gup-sp-3)}
.muset-head{display:flex;gap:var(--gup-sp-3);align-items:baseline;flex-wrap:wrap;margin-bottom:var(--gup-sp-2)}
.muset-cols{display:grid;grid-template-columns:minmax(160px,220px) minmax(0,1fr);gap:var(--gup-sp-3);align-items:start}
@media (max-width:820px){.muset-cols{grid-template-columns:1fr}}
/* CURRENT-DRAWER-RESPONSIVE1：grid の子は縮んでよい。
   既定の min-width:auto だと、中の表の min-content（table{min-width:820px}）が
   そのままトラック幅になり、狭い画面で drawer ごと viewport をはみ出す。
   表は自分のスクロール容器の中で横スクロールする設計なので、ここは縮めてよい。 */
.muset-cols > *{min-width:0}
.muset-row{display:flex;justify-content:space-between;align-items:center;gap:var(--gup-sp-2);padding:var(--gup-sp-1) var(--gup-table-cell-inline-padding);border:1px solid var(--line-soft);border-radius:var(--gup-radius-sm);margin-bottom:var(--gup-sp-1);cursor:pointer;font-size:var(--gup-fs-sm)}
.muset-row.sel{background:var(--surface-kpi);border-color:var(--line)}
.muset-nm{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.muset-ops{display:flex;gap:2px;flex:none}
.muset-ops .btn{font-size:var(--gup-fs-note)}
/* Structure-only modal: stack the narrow list and selected unit editor. */
#muSettingsModal .muset-cols{grid-template-columns:minmax(0,1fr)}
#muSettingsModal .muset-row{flex-wrap:wrap}
#muSettingsModal .muset-ops{flex-wrap:wrap;gap:var(--gup-sp-1);max-width:100%}
#muSettingsModal .gup-modal__panel{max-height:calc(100vh - var(--gup-sp-4) * 2);overflow:auto}
.muset-modal-head{display:flex;align-items:center;justify-content:space-between;gap:var(--gup-sp-2)}
.muset-nmrow{font-size:var(--gup-fs-sm);color:var(--text-secondary);margin:var(--gup-sp-2) 0}
.muset-nmin{width:180px;text-align:left}
/* UI-CURRENT-ADDROW1：行を足すボタンは表のすぐ下（① の .addrow と同じ位置関係） */
.muset-addrow{margin-top:var(--gup-sp-2)}
.mup-in{width:92px;box-sizing:border-box;font-size:var(--gup-fs-sm);padding:3px var(--gup-sp-2);text-align:right;border:1px solid var(--line);border-radius:var(--gup-radius-sm);background:var(--input-bg);/* GUP-AIR-SURFACE1 */color:var(--text-main)}
/* PLAN3-MQ1: 管理単位 Plan drawer の現状比 slider（％は表示だけ・保存しない）と MQ 側サマリー */
/* UI-ADDROW3: 年間計画に未設定の商品・サービス */
.mup-unset{font-size:var(--gup-fs-sm);color:var(--text-secondary);white-space:nowrap;}
.mup-unsetrow{display:flex;align-items:center;gap:var(--gup-sp-2);flex-wrap:wrap;margin-top:var(--gup-sp-1);}
/* PLAN-CURRENT-FRAME-GUARD1：起点（① Current）にまだ無い 管理単位 × 商品 の計画値。
   入力欄ではないので枠も背景も持たせない（「編集できそう」に見せない）。値は消さずに見せる。 */
.mup-ro{display:inline-block;color:var(--text-secondary);font-variant-numeric:tabular-nums;}
.mup-sliderow{display:flex;align-items:center;gap:var(--gup-sp-1);margin-top:var(--gup-sp-1);min-width:120px;}
.mup-sliderow input[type=range]{flex:1;min-width:72px;}
.mup-rate{font-size:var(--gup-fs-sm);color:var(--text-secondary);white-space:nowrap;font-variant-numeric:tabular-nums;}
.mup-mqsum{margin:var(--gup-sp-2) 0;}
.mup-mqsum .mup-rate{margin-left:var(--gup-sp-1);}
.mup-actions{display:flex;align-items:center;gap:var(--gup-sp-3);flex-wrap:wrap;margin-top:var(--gup-sp-3)}
.mup-cmp{border:1px solid var(--line-soft);border-radius:var(--gup-radius-md);background:var(--card);padding:var(--gup-sp-2) var(--gup-sp-3);margin-top:var(--gup-sp-3)}
.mup-cmp>b{font-size:var(--gup-fs-sm);color:var(--text-label)}
.mucur-sub2{font-size:var(--gup-fs-note);color:var(--text-muted);margin-left:var(--gup-sp-1)}
.mucur-det{margin-top:var(--gup-sp-2)}
.mucur-det>summary{font-size:var(--gup-fs-sm);color:var(--text-secondary);cursor:pointer}
#fpaActualWrap .mu-scopebar{display:flex;align-items:center;gap:var(--gup-sp-3);flex-wrap:wrap;margin:2px 0 var(--gup-sp-2)}
#fpaActualWrap .mu-scopelabel{font-size:var(--gup-fs-sm);font-weight:var(--gup-font-weight-bold);color:var(--text-label)}
#fpaActualWrap .mu-scopesel{font-size:var(--gup-fs-base);padding:var(--gup-sp-1) var(--gup-sp-2);border:1px solid var(--line);border-radius:var(--gup-radius-sm);background:var(--input-bg);/* GUP-AIR-SURFACE1A：入力面の役割で塗る */color:var(--text-main);max-width:260px}
#fpaActualWrap .mu-scopenone{font-size:var(--gup-fs-sm);color:var(--text-secondary)}
#fpaActualWrap .mu-toggle{font-size:var(--gup-fs-note)}
#fpaActualWrap .mu-demonote{border:1px solid var(--line-soft);border-left:3px solid var(--ui-f);border-radius:var(--gup-radius-sm);background:var(--surface-soft);padding:var(--gup-sp-2) var(--gup-sp-3);margin-bottom:var(--gup-sp-3);font-size:var(--gup-fs-sm);color:var(--text-main)}
#fpaActualWrap .mu-gbridge{margin-top:var(--gup-sp-3);border-top:1px solid var(--line-soft);padding-top:var(--gup-sp-2)}
#fpaActualWrap .mu-gbrow{display:flex;justify-content:space-between;font-size:var(--gup-fs-sm);color:var(--text-secondary);padding:1px 0}
#fpaActualWrap .mu-gbrow b{color:var(--text-main)}
#fpaActualWrap .mu-gbrow.tot{font-size:var(--gup-fs-base);font-weight:var(--gup-font-weight-bold);color:var(--text-main);border-top:1px solid var(--line-soft);margin-top:var(--gup-sp-1);padding-top:var(--gup-sp-1)}
#fpaActualWrap .mu-hcards{display:grid;grid-template-columns:1fr 1fr 1fr;gap:var(--gup-sp-3);margin-bottom:var(--gup-sp-2)}
@media (max-width:760px){#fpaActualWrap .mu-hcards{grid-template-columns:1fr}}
#fpaActualWrap .mu-hcard{border:1px solid var(--line-soft);border-radius:var(--gup-radius-md);padding:var(--gup-sp-3) var(--gup-sp-3);background:var(--surface-kpi)}
#fpaActualWrap .mu-hlabel{font-size:var(--gup-fs-sm);font-weight:var(--gup-font-weight-bold);color:var(--text-label);margin-bottom:var(--gup-sp-2)}
#fpaActualWrap tr.mu-commonrow td{background:var(--surface-soft)}
#fpaActualWrap tr.mu-totalrow td{font-weight:var(--gup-font-weight-bold);border-top:2px solid var(--line)}
#fpaActualWrap .imp-attn{display:flex;flex-wrap:wrap;gap:var(--gup-sp-4);align-items:center;border:1px solid var(--line-soft);border-radius:var(--gup-radius-md);padding:var(--gup-sp-3) var(--gup-sp-3);background:var(--surface-soft)}
#fpaActualWrap .imp-attnrow{font-size:var(--gup-fs-sm);color:var(--text-secondary)}
#fpaActualWrap .imp-attnrow b{color:var(--text-main);margin-left:var(--gup-sp-1)}
/* Phase F3: 月次予算検証 UI */
#mbDetailCard .mqktiles{display:flex;gap:var(--gup-sp-2);flex-wrap:wrap;margin-bottom:var(--gup-sp-2)}
#mbDetailCard .mqktile{flex:1;min-width:96px;background:var(--surface-kpi);border:1px solid var(--line-soft);border-radius:var(--gup-radius-md);padding:var(--gup-sp-2) var(--gup-sp-3)}
#mbDetailCard .mqktile .k{font-size:var(--gup-fs-note);color:var(--text-label)}
#mbDetailCard .mqktile .v{font-size:var(--gup-fs-xl);font-weight:var(--gup-font-weight-bold);color:var(--text-main)}
#mbDetailCard .mqstatusbox{display:flex;gap:var(--gup-sp-3);flex-wrap:wrap;margin-bottom:var(--gup-sp-2)}
#mbDetailCard .mqsrow{display:flex;gap:var(--gup-sp-2);align-items:center;background:var(--surface-soft);border:1px solid var(--line-soft);border-radius:var(--gup-radius-md);padding:var(--gup-sp-2) var(--gup-sp-3)}
#mbDetailCard .mqsk{font-size:var(--gup-fs-note);color:var(--text-label)}
#mbDetailCard .mqissues{margin:var(--gup-sp-2) 0}
#mbDetailCard .mqissue{display:flex;gap:var(--gup-sp-2);align-items:center;font-size:var(--gup-fs-note);color:var(--gup-warning);background:var(--surface-warn);border:1px solid var(--surface-warn-line);border-radius:var(--gup-radius-md);padding:var(--gup-sp-2) var(--gup-sp-3);margin-top:var(--gup-sp-1)}
#mbDetailCard .mqissue .ic{font-weight:var(--gup-font-weight-bold)}
#mbDetailCard .mqissue .m{flex:1}
#mbDetailCard .mqctable td.mq{font-weight:var(--gup-font-weight-bold)}
#mbDetailCard .mqctable .mqtot td{border-top:2px solid var(--line);font-weight:var(--gup-font-weight-bold);background:var(--surface-muted)}
#mbDetailCard .mqtgwrap{border:1px solid var(--line-soft);border-radius:var(--gup-radius-md);padding:var(--gup-sp-2) var(--gup-sp-2) 2px;background:var(--surface-soft)}
#mbDetailCard .mqtgsvg2{width:100%;height:auto;display:block}
#mbDetailCard .mqtg-grid{stroke:var(--line-soft);stroke-width:1}
#mbDetailCard .mqtg-axline{stroke:var(--line);stroke-width:1}
#mbDetailCard .mqtg-tick{font-size:var(--gup-fs-note);fill:var(--text-secondary)}
#mbDetailCard .mqtg-tick.left{text-anchor:end}
#mbDetailCard .mqtg-tick.right{text-anchor:start}
#mbDetailCard .mqtg-mlab{font-size:var(--gup-fs-note);fill:var(--text-muted);text-anchor:middle}
#mbDetailCard .mqtg-unit{font-size:var(--gup-fs-note);color:var(--text-muted);font-weight:var(--gup-font-weight-regular)}
#mbDetailCard .mqtg-bar{fill:var(--ui-g);opacity:.75}
#mbDetailCard .mqtg-bar.neg{fill:var(--ui-g);opacity:.92}
#mbDetailCard .mqtg-line{fill:none;stroke-width:2.4px;stroke-linejoin:round;stroke-linecap:round;vector-effect:non-scaling-stroke}
#mbDetailCard .mqtg-line.pq{stroke:var(--ui-p)}
#mbDetailCard .mqtg-line.mq{stroke:var(--ui-m)}
#mbDetailCard .mqtg-dot.pq{fill:var(--p-blue)}
#mbDetailCard .mqtg-dot.mq{fill:var(--q-green)}
#mbDetailCard .mqtg-base{stroke:var(--grey);stroke-width:1;stroke-dasharray:3 3}
#mbDetailCard .mqtg-xlab{font-size:var(--gup-fs-note);fill:var(--text-muted);text-anchor:middle}
#mbDetailCard .mqtglegend{display:flex;gap:var(--gup-sp-4);font-size:var(--gup-fs-note);font-weight:var(--gup-font-weight-regular);margin:6px 2px 0}
#mbDetailCard .mqtglegend .lg{display:inline-flex;align-items:center;gap:5px}
#mbDetailCard .mqtglegend .lg::before{content:"";width:14px;height:0;border-top:3px solid currentColor;display:inline-block}
#mbDetailCard .mqtglegend .lg.g::before{border:0;width:11px;height:11px;background:var(--ui-g);border-radius:2px}
#mbDetailCard .mqtglegend .lg.pq{color:var(--ui-p)}
#mbDetailCard .mqtglegend .lg.mq{color:var(--ui-m)}
#mbDetailCard .mqtglegend .lg.g{color:var(--ui-g-text)}
#mbDetailCard .mqgatebtns{display:flex;gap:var(--gup-sp-3);align-items:center;flex-wrap:wrap}
#mbDetailCard .mqgatebtns .note{font-size:var(--gup-fs-note);color:var(--text-muted)}
#mbDetailCard .mqconfirm{border:1px solid var(--select-accent);background:var(--gup-surface-selected);border-radius:var(--gup-radius-md);padding:var(--gup-sp-3)}
#mbDetailCard .mqconfirm .t{font-weight:var(--gup-font-weight-bold);color:var(--text-main);margin-bottom:var(--gup-sp-2)}
#mbDetailCard .mqconfirm-body{font-size:var(--gup-fs-note);color:var(--text-secondary);display:flex;flex-direction:column;gap:3px}
#mbDetailCard .mqconfirm-body b{color:var(--text-main)}
#mbDetailCard .mqconfirm-btns{display:flex;gap:var(--gup-sp-3);margin-top:var(--gup-sp-3)}
#mbDetailCard .mqsaved{font-size:var(--gup-fs-sm);font-weight:var(--gup-font-weight-regular);color:var(--gup-positive);background:var(--gup-success-soft);border:1px solid var(--gup-p-green-200);border-radius:var(--gup-radius-md);padding:var(--gup-sp-2) var(--gup-sp-3);margin-bottom:var(--gup-sp-2)}
#mbDetailCard .btn.solid[disabled]{opacity:.5;cursor:not-allowed}
/* ===== Phase UI-IA2.2: ③「全体計画」＝ 計画版の「付加価値（MQ）」（閲覧専用） ===== */
#planStructure{display:flex;flex-direction:column;gap:var(--gup-sp-4)}
/* PRODUCT-PLAN-ROUTE1A: id 指定の display が UA の [hidden] に勝つので、同じ id で隠す */
#planStructure[hidden]{display:none}
#planStructure .plan-ro-note{ 
  margin:var(--gup-sp-2) 0 0;
  font-size:var(--gup-fs-sm);
  color:var(--gup-color-text-secondary);
  line-height:var(--gup-lh-body);
}

/* ---------------------------------------------------------------------------
   Phase UI-SYSTEM1-1B2 — 管理単位・月次まわりの control 寸法
   12 か月 × 管理単位が並ぶ高密度画面なので、既定は compact。
   ------------------------------------------------------------------------- */
#mbDetailCard .mqin, #mbDetailCard .mqnote, .otherplan-box .op-input,
.mbsw-btn, .perf-vbtn, select#vpMonth{ min-height:var(--gup-control-compact); }

/* 管理単位の表示範囲 select と「管理単位別に入力する」は主要操作なので standard。
   いまは 20 / 34 / 40px と画面ごとにばらついている（同じ役割なので 1 つへ揃える）。 */
.mucur-sel, .mucur-toggle{ min-height:var(--gup-control-standard); }

/* 月次メモの textarea は高密度側の下限 */
.mup-in{ min-height:var(--gup-textarea-min-height-compact); }

/* checkbox は四角そのものを大きくしない。**label を含む当たり判定**を compact へ。 */
.mucur-bar label{
  display:inline-flex; align-items:center;
  gap:var(--gup-control-unit-gap); min-height:var(--gup-control-compact);
}

/* ---- Phase UI-SYSTEM1-1B2 ここまで ---- */

/* PRODUCT-SAMPLE1: 読み込み方法の 3 択。
   選べる 2 つを面として分け、件数はその中に置く（別カードを増やさない）。 */
.imp-choice-list{display:grid;gap:var(--gup-sp-3);margin-top:var(--gup-sp-3)}
.imp-choice{border:1px solid var(--line-soft);border-radius:var(--gup-radius-md);
  background:var(--surface-row);padding:var(--gup-sp-3);min-width:0}
.imp-choice-num{margin-top:var(--gup-sp-2);font-size:var(--gup-fs-sm);
  color:var(--navy);font-variant-numeric:tabular-nums}

/* UI-TYPE5：本文 1 行の長さの上限。日本語は 45 字を超えると次の行頭へ目が戻れない。
   対象は読み物の本文・説明・補足だけ（表・入力欄・見出しには当てない）。 */
#fpaActualWrap .imp-desc, #fpaActualWrap .imp-future, #fpaActualWrap .imp-hint, #fpaActualWrap .imp-level,
#fpaVarianceWrap .vp-fnote, #fpaActualWrap .mqc-narrbody, #planStructure .plan-ro-note,
#t7 .fpa-placeholder, #fpaActualWrap .perf-confirm-list{ max-width:var(--gup-measure); }

/* UI-PLAN-MQ-UNIFY1：③ の統合 MQ会計表。
   Plan 値の下に現状比を小さく添える（案B）。**色は付けない** — P・V が増えることは
   「良い」とは限らないので、positive / negative は使わず ＋／▲ と文字階層だけで示す。 */
.mq1-table .mq1-main{display:block;}
.mq1-table .mq1-sub{display:block;font-size:var(--gup-fs-sm);color:var(--text-secondary);}

/* ===== Phase S1e: 共通 UI システム（アプリ全体）=====
   正本 docs/PHASE_S1E_SHARED_UI_SYSTEM.md ／ 基準 docs/GUP_UI_BASIC.md

   S1b〜S1d で ⑤ 予実管理 に実装した規則のうち、**画面によらず同じであるべきもの**をここへ出す。
   ★色・文字・余白は必ず tokens.css の --gup-* を経由する（新しい色を画面ごとに作らない）。
   ★!important と inline style を増やさない。
   ★既存 class 名は変えない。DOM hook（id / data-*）には触らない。
   ★#t7 の見た目は fpa.css が最後に来るので、⑦ の既存表現は壊れない。

   連結順： tokens → base → layout → components → management → shared-ui → fpa
   （legacy の :focus 規則より後ろに置くことで、focus の可視化を一括で効かせる） */

/* --------------------------------------------------------------------------
   1. visible focus — アプリ全体
   S1e で legacy CSS から `outline:none` を 24 箇所削除し、ここへ一本化した。
   `:focus`（mouse 含む）では枠線色だけが変わり、outline はここだけが描く。
   -------------------------------------------------------------------------- */
button:focus-visible,
a:focus-visible,
input:focus-visible,
select:focus-visible,
textarea:focus-visible,
summary:focus-visible,
[tabindex]:focus-visible{
  outline:2px solid var(--gup-color-focus);
  outline-offset:2px;
  border-radius:var(--gup-radius-sm);
}
/* UI-TYPE4：<details> の開閉（「この画面について」など）は補足と同じ 14px。
   12px は列見出しの段なので、押せるものには使わない。 */
details > summary{ font-size:var(--gup-fs-sm); }
/* 横スクロールする表の枠は Chrome が自動で focusable にする。ここも同じ見た目へ。 */
.gup-scroll:focus-visible{ outline:2px solid var(--gup-color-focus); outline-offset:2px; }

/* --------------------------------------------------------------------------
   2. 共通 component（.gup-*）
   画面固有 class はそのまま使い続け、新規・共通化できる部分だけがこれを使う。
   -------------------------------------------------------------------------- */

/* button hierarchy — primary は 1 画面 1 つ */
.gup-btn{
  display:inline-flex; align-items:center; justify-content:center; gap:var(--gup-sp-2);
  box-sizing:border-box;
  min-height:var(--gup-control-standard);
  padding:0 var(--gup-sp-4);
  font-family:inherit;
  font-size:var(--gup-fs-base);
  font-weight:var(--gup-fw-medium);
  line-height:var(--gup-lh-compact);
  border-radius:var(--gup-radius-sm);
  border:1px solid var(--gup-color-border-strong);
  background:var(--gup-color-surface);
  color:var(--gup-color-text-primary);
  cursor:pointer;
}
.gup-btn:hover{ background:var(--gup-color-surface-subtle); }
.gup-btn--primary{
  border-color:var(--gup-color-accent);
  background:var(--gup-color-accent);
  color:var(--gup-color-text-on-accent);
  font-weight:var(--gup-fw-semibold);
}
.gup-btn--primary:hover{ background:var(--gup-color-accent-hover); border-color:var(--gup-color-accent-hover); }
.gup-btn--tertiary{ border-color:transparent; background:transparent; color:var(--gup-color-accent); }
.gup-btn--tertiary:hover{ background:var(--gup-color-accent-subtle); }
.gup-btn--danger{ border-color:var(--gup-color-danger); color:var(--gup-color-danger); background:var(--gup-color-surface); }
.gup-btn--danger:hover{ background:var(--gup-color-danger-subtle); }
.gup-btn--compact{ min-height:var(--gup-control-compact); padding:0 var(--gup-sp-3); font-size:var(--gup-fs-sm); }
.gup-btn:disabled{
  background:var(--gup-color-surface-subtle);
  border-color:var(--gup-color-border);
  color:var(--gup-color-text-secondary);
  cursor:not-allowed;
}

/* --------------------------------------------------------------------------
   UX-SYSTEM1A：control の共通文法。同じ役割は同じ見た目・同じ focus・同じ当たり判定（3 配色共通）。
     PRIMARY     … .gup-btn--primary ／ button.action（1 画面 1 つ。文字は --gup-color-text-on-accent）
     SECONDARY   … .gup-btn ／ button.ghost（枠線だけ。面は塗らない）
     DESTRUCTIVE … .gup-btn--danger ／ button.ghost.is-danger
     ICON EDIT   … .gup-icon-btn（glyph は小さくてよいが、当たり判定は 34px 以上）
     COMMAND     … .gup-cmd（「詳細を読む」など読む側の命令。link 風でも当たり判定は 34px）
     SEGMENTED   … .gup-seg > button（少数の排他選択。選択中は選択面＋ゴールド枠＋太字。主要操作の solid blue にしない）
     TAB         … 既存の subtabs（gup-subtabs。追跡語なので dot を付けない）
   色は semantic token だけ（配色ごとの分岐を書かない）。UA 既定の見た目を残す control を作らない。
   -------------------------------------------------------------------------- */
.gup-icon-btn{
  display:inline-flex; align-items:center; justify-content:center;
  box-sizing:border-box; min-width:var(--gup-control-compact); min-height:var(--gup-control-compact);
  padding:0 var(--gup-sp-2); border:0; border-radius:var(--gup-radius-sm);
  background:none; color:var(--gup-color-text-secondary);
  font-family:inherit; font-size:var(--gup-fs-xs); line-height:var(--gup-lh-compact); cursor:pointer;
}
.gup-icon-btn:hover{ background:var(--gup-color-surface-subtle); color:var(--gup-color-text-primary); }
/* 行の中に置く小さな glyph。見た目は行の高さのまま、当たり判定だけを 34px へ広げる（layout を動かさない）。 */
/* 当たり判定は padding で広げ、同じだけ負の margin で戻す（layout は行の高さのまま）。
   ::before の張り出しにしない：あれは button 自身の scrollHeight を伸ばし、「切れている文字」を数える
   probe が誤検知する。padding なら button の中に overflow は生まれない。
   行の高さ 21px（14px × 1.5）＋ 上下 8px ＝ 37px ≥ 34px。 */
/* GUP-UX-WORLDCLASS1 Phase 1（UX-31）：inline でも幅は compact control（34px）を下回らない（実測 22px だった）。行の高さは負の margin で保つ。 */
.gup-icon-btn--inline{ min-width:var(--gup-control-compact); min-height:0; padding:var(--gup-sp-2) var(--gup-sp-1);
  margin:-8px 0; font-size:var(--gup-fs-sm); line-height:var(--gup-lh-normal);
  /* 当たり判定の張り出し（上下 8px）が次の行の要素の下へ潜らないように前面へ（実測：下 3px が次の行に取られていた） */
  position:relative; z-index:1; }
/* 同上：行 19.5px（13px × 1.5）＋ 上下 8px ＝ 35.5px ≥ 34px。左右 4px は文字の位置を動かさない。 */
.gup-cmd{
  border:0; background:none; min-height:0; position:relative; z-index:1;
  padding:var(--gup-sp-2) var(--gup-sp-1); margin:-8px -4px;
  font-family:inherit; font-size:var(--gup-fs-xs); line-height:var(--gup-lh-normal);
  color:var(--gup-color-text-secondary); text-decoration:underline; cursor:pointer;
}
.gup-cmd:hover{ color:var(--gup-color-text-primary); }
/* GUP-UX-WORLDCLASS1 Phase 4：読む側の命令のうち、取り消せない操作（削除）だけ danger の色を持つ（意味の色）。 */
.gup-cmd--danger{ color:var(--gup-color-danger); }
.gup-cmd--danger:hover{ color:var(--gup-color-danger); text-decoration-thickness:2px; }
.gup-seg{ display:flex; gap:var(--gup-sp-1); flex-wrap:wrap; }
.gup-seg > button{
  box-sizing:border-box; min-height:var(--gup-control-compact); padding:0 var(--gup-sp-2);
  font-family:inherit; font-size:var(--gup-fs-sm); line-height:var(--gup-lh-compact);
  border:1px solid var(--gup-color-border); border-radius:var(--gup-radius-sm);
  background:var(--gup-color-surface); color:var(--gup-color-text-primary); cursor:pointer;
}
.gup-seg > button:hover{ background:var(--gup-color-surface-subtle); }
.gup-seg > button.is-on{
  background:var(--gup-surface-selected); border-color:var(--gup-border-selected);
  color:var(--gup-color-text-primary); font-weight:var(--gup-type-selected-weight);
}

/* UI-TYPE4（Founder 判断）：**入力した値は太字にしない**。
   ラベルや表のセルが太字だと、中の input/select/textarea が太さを継いでしまう
   （実測：④ の効き見込み・① 固定費の金額が 700 になっていた）。
   例外は ③ の打ち手（--gup-type-lever-input-weight）だけで、そこは各自が上書きする。 */
input, select, textarea{ font-weight:var(--gup-type-input-weight); }

/* input / select / textarea */
.gup-input, .gup-select{
  box-sizing:border-box;
  min-height:var(--gup-control-standard);
  padding:0 var(--gup-sp-3);
  font-family:inherit;
  font-size:var(--gup-fs-base);
  color:var(--gup-color-text-primary);
  /* GUP-AIR-SURFACE1A：入力面の役割で塗る */
  background:var(--input-bg);
  border:1px solid var(--gup-color-border-strong);
  border-radius:var(--gup-radius-sm);
}
.gup-textarea{
  box-sizing:border-box;
  min-height:calc(var(--gup-control-standard) * 2);
  padding:var(--gup-sp-2) var(--gup-sp-3);
  font-family:inherit; font-size:var(--gup-fs-base);
  color:var(--gup-color-text-primary);
  /* GUP-AIR-SURFACE1A：入力面の役割で塗る */
  background:var(--input-bg);
  border:1px solid var(--gup-color-border-strong);
  border-radius:var(--gup-radius-sm);
  resize:vertical;
}
.gup-input--compact{ min-height:var(--gup-control-compact); font-size:var(--gup-fs-sm); padding:0 var(--gup-sp-2); }
.gup-input--num{ text-align:right; font-variant-numeric:tabular-nums; }

/* read-only / disabled / locked — 値は読める明るさを保つ（薄くして読めなくしない） */
.gup-input:disabled, .gup-select:disabled, .gup-textarea:disabled,
.gup-input[readonly], .gup-textarea[readonly]{
  background:var(--gup-color-surface-subtle);
  border-color:var(--gup-color-border);
  color:var(--gup-color-text-secondary);
  cursor:not-allowed;
}
/* UI-TYPE4：ロック中でも「入力欄の値」なので太さは標準（読める明るさは既存のまま）。 */
.gup-locked{ background:var(--gup-color-surface-subtle); font-weight:var(--gup-font-weight-regular); }
/* legacy な input/select（.pg-input・.mup-in・裸の <input> など）にも同じ read-only 表現を出す。
   .gup-input を付け替えずに済むよう、要素へ .gup-locked を足すだけで disabled の見た目を統一する
   （既定の disabled は文字を薄くして読めなくするため使わない。CLAUDE.md §8）。 */
.gup-locked:disabled{
  background:var(--gup-color-surface-subtle);
  border-color:var(--gup-color-border);
  color:var(--gup-color-text-secondary);   /* 値は読める明るさを保つ */
  cursor:not-allowed;
  opacity:1;                               /* ブラウザ既定の減光を打ち消す */
}
/* 行の追加・削除ボタンのロック。値を隠すわけではないので薄くしてよいが、既定に頼らず明示する。 */
.addrow:disabled, .del:disabled{ opacity:.4; cursor:not-allowed; }
.del:disabled:hover{ color:var(--icon-muted); }

/* KPI / summary */
.gup-summary{ display:flex; flex-direction:column; gap:var(--gup-sp-2); }
.gup-summary__grid{
  display:grid; gap:var(--gup-sp-3);
  grid-template-columns:repeat(auto-fit, minmax(160px, 1fr));
}
.gup-summary__sub{ white-space:pre-line; /* UI-SENT1：文の切れ目で改行 */ margin:0; font-size:var(--gup-fs-sm); color:var(--gup-color-text-secondary);line-height:var(--gup-lh-body);max-width:var(--gup-measure);}
.gup-kpi{
  display:flex; flex-direction:column; gap:var(--gup-sp-1);
  padding:var(--gup-sp-3) var(--gup-sp-4);
  /* UI-SYSTEM1-1B3: 外側の card が既に枠を持つ。内側は枠ではなく背景差でまとまりを示す。 */
  border-radius:var(--gup-radius-md);
  background:var(--gup-color-surface-subtle);
}
.gup-kpi__label{
  font-size:var(--gup-fs-sm); font-weight:var(--gup-fw-medium);
  line-height:var(--gup-lh-compact); color:var(--gup-color-text-secondary);
}
.gup-kpi__value{
  font-size:var(--gup-fs-xl); font-weight:var(--gup-fw-semibold);
  line-height:var(--gup-lh-compact); color:var(--gup-color-text-primary);
  font-variant-numeric:tabular-nums;
}
.gup-kpi__note{ font-size:var(--gup-fs-note); color:var(--gup-color-text-secondary); }
/* GUP-HOME-PREP1 Gate B：比較 1 つ（例「計画比 ＋4.3%」）。
   ★main value より小さく、既定は neutral。値の色（--positive / --negative）とは別系統。
   ★色は「良し悪しの判断がある」ときだけ。符号では決めない（呼び出し側が tone を渡す）。 */
.gup-kpi__compare{ font-size:var(--gup-fs-sm); color:var(--gup-color-text-secondary);
  font-variant-numeric:tabular-nums; }
.gup-kpi__compare--positive{ color:var(--gup-color-positive); }
.gup-kpi__compare--negative{ color:var(--gup-color-negative); }
/* V2-AB1（Phase B・Founder 決定）：MQ会計の色は**箱の中だけ**。通常の KPI カードへ波及させない。
   before は 5 枚のカードが 5 色の面で塗られ、通常 UI に色付きの大きな面が並んでいた。
   面は neutral（.gup-kpi の既定 surface-subtle）へ戻し、
   「どの箱の数字か」は **左端の細いマーカー**が示す（色の意味は変えていない）。
   ★--gup-mg-*-bg（薄い面）はもう使わないが、token 自体は消さない（印刷・図の側で使う余地を残す）。 */
.gup-kpi--mg-pq{ border-left:4px solid var(--mg-p); }
.gup-kpi--mg-vq{ border-left:4px solid var(--mg-v); }
.gup-kpi--mg-mq{ border-left:4px solid var(--mg-m); }
.gup-kpi--mg-f{ border-left:4px solid var(--mg-f); }
.gup-kpi--mg-g{ border-left:4px solid var(--mg-g); }
.gup-kpi--primary{ grid-column:span 2; border-color:var(--gup-color-border-strong); }
.gup-kpi--primary .gup-kpi__value{ font-size:var(--gup-fs-hero); }
/* 値の色は「業績の良し悪し」にだけ使う。素の金額は負値でも neutral。 */
.gup-kpi--positive .gup-kpi__value{ color:var(--gup-color-positive); }
.gup-kpi--negative .gup-kpi__value{ color:var(--gup-color-negative); }

/* message（info / warning / error / success） */
.gup-msg{
  padding:var(--gup-sp-3) var(--gup-sp-4);
  border-left:3px solid var(--gup-color-border-strong);
  border-radius:var(--gup-radius-sm);
  background:var(--gup-color-surface-subtle);
  font-size:var(--gup-fs-sm); color:var(--gup-color-text-primary);
}
.gup-msg + .gup-msg{ margin-top:var(--gup-sp-2); }
.gup-msg b{ font-weight:var(--gup-fw-semibold); }
.gup-msg__detail{ margin-top:var(--gup-sp-1); font-size:var(--gup-fs-note); color:var(--gup-color-text-secondary); }
.gup-msg--info{ border-left-color:var(--gup-color-info); background:var(--gup-color-info-subtle); }
.gup-msg--warning{ border-left-color:var(--gup-color-warning); background:var(--gup-color-warning-subtle); }
.gup-msg--error{ border-left-color:var(--gup-color-negative); background:var(--gup-color-negative-subtle); }
.gup-msg--success{ border-left-color:var(--gup-color-positive); background:var(--gup-color-positive-subtle); }

/* status badge — 色だけに頼らず必ず語を持つ */
.gup-badge{
  display:inline-flex; align-items:center; gap:var(--gup-sp-1);
  padding:0 var(--gup-sp-3);
  min-height:var(--gup-control-compact);
  border-radius:var(--gup-radius-pill);
  border:1px solid var(--gup-color-border);
  background:var(--gup-color-surface-subtle);
  font-size:var(--gup-fs-note); font-weight:var(--gup-fw-medium);
  color:var(--gup-color-text-secondary);
}
.gup-badge--ok{ border-color:var(--gup-color-positive); color:var(--gup-color-positive); background:var(--gup-color-positive-subtle); }
.gup-badge--warning{ border-color:var(--gup-color-warning); color:var(--gup-color-warning); background:var(--gup-color-warning-subtle); }
.gup-badge--error{ border-color:var(--gup-color-negative); color:var(--gup-color-negative); background:var(--gup-color-negative-subtle); }

/* section / context / actions / empty state */
.gup-section{ display:flex; flex-direction:column; gap:var(--gup-section-gap); }
.gup-section__heading{
  margin:0; font-size:var(--gup-fs-lg); font-weight:var(--gup-fw-semibold);
  line-height:var(--gup-lh-heading); color:var(--gup-color-text-primary);
}
.gup-context{
  display:flex; flex-wrap:wrap; align-items:center;
  gap:var(--gup-sp-2) var(--gup-sp-4);
  padding:var(--gup-sp-3) 0;
  border-bottom:1px solid var(--gup-color-border);
}
.gup-context__item{ display:flex; align-items:center; gap:var(--gup-sp-2); }
.gup-context__label{
  font-size:var(--gup-fs-sm); font-weight:var(--gup-fw-medium);
  color:var(--gup-color-text-secondary); white-space:nowrap;
}
.gup-context__value{ font-size:var(--gup-fs-sm); color:var(--gup-color-text-primary); }
/* UI-UNIT1：金額の単位は画面に 1 か所。対象会社（または画面見出し）と同じ行の右端に置く。
   見出しの中に置くときも、見出しの太さ・大きさは引き継がせない（単位は補足なので）。 */
.gup-context__unit{
  margin-left:auto; font-size:var(--gup-fs-sm); color:var(--gup-color-text-secondary); white-space:nowrap;
  font-weight:var(--gup-font-weight-regular);
}
h2 > .gup-context__unit{ float:right; }
.gup-actions{ display:flex; flex-wrap:wrap; align-items:center; gap:var(--gup-control-gap); }
.gup-actions__hint{ flex:1 1 220px; font-size:var(--gup-fs-note); color:var(--gup-color-text-secondary); }
.gup-empty{
  padding:var(--gup-sp-5) var(--gup-sp-4);
  border:1px dashed var(--gup-color-border-strong);
  border-radius:var(--gup-radius-md);
  font-size:var(--gup-fs-sm); color:var(--gup-color-text-secondary);
  text-align:center;
}

/* 結論バッジ（⑥ の「計画が成立しているか」など）— 記号と語を必ず併記する */
.gup-verdict{ display:flex; flex-direction:column; gap:var(--gup-sp-1); margin-bottom:var(--gup-sp-3); }
.gup-verdict__badge{
  display:inline-flex; align-items:center; gap:var(--gup-sp-2); align-self:flex-start;
  padding:var(--gup-sp-2) var(--gup-sp-4);
  border:1px solid var(--gup-color-border-strong);
  border-radius:var(--gup-radius-pill);
  font-size:var(--gup-fs-lg); font-weight:var(--gup-fw-semibold);
  color:var(--gup-color-text-primary); background:var(--gup-color-surface-subtle);
}
.gup-verdict__mark{ font-size:var(--gup-fs-base); }
.gup-verdict__badge--ok{ border-color:var(--gup-color-positive); color:var(--gup-color-positive); background:var(--gup-color-positive-subtle); }
.gup-verdict__badge--warn{ border-color:var(--gup-color-warning); color:var(--gup-color-warning); background:var(--gup-color-warning-subtle); }
.gup-verdict__badge--short{ border-color:var(--gup-color-border-strong); color:var(--gup-color-text-secondary); }
.gup-verdict__badge--none{ border-color:var(--gup-color-border); color:var(--gup-color-text-secondary); }
.gup-verdict__detail{ margin:0; font-size:var(--gup-fs-sm); color:var(--gup-color-text-secondary); }

/* ④ の結論セル（計画後 G）を banner の中で主役にする。既存 class と id は不変。 */
.banner .banner-primary .big{ font-size:var(--gup-fs-hero); }
.banner .banner-primary{
  border:1px solid var(--gup-color-border-strong);
  border-radius:var(--gup-radius-md);
}
/* UI-WHOLE2（Founder 指摘）：③ の結論は 5 つの数字を **同じ形の 5 セル**で並べる。
   ・文字は type scale の token だけ（主役 hero 32px ／ ほか kpi 24px ／ label sm 14px）。
     以前は .banner .big の生 px 36 が効いていて、5 つ全部が hero より大きかった。
   ・折り返しは auto-fit で吸収する（breakpoint を増やさない）。 */
.banner--plan{ display:block; }
.banner-grid{
  display:grid; gap:var(--gup-sp-3);
  grid-template-columns:repeat(auto-fit, minmax(150px, 1fr));
  align-items:start;
}
/* UI-PLANG2（Founder 指摘）：③ の結論は 3 つだけなので、横いっぱいに引き伸ばさない。
   左へ寄せて、空いた右側に「どこから増えたか」を置く（行は増やさない）。 */
.banner--plan .banner-grid{
  display:flex; flex-wrap:wrap; align-items:baseline; gap:var(--gup-sp-3) var(--gup-sp-5);
}
.banner--plan .banner-cell{ flex:none; }
/* 4 つ目「参考（実績 G）」だけ右端へ寄せる（主役の 3 つと参考を分けて読ませる）。 */
.banner--plan .banner-cell--ref{ margin-left:auto; }
.banner--plan .banner-cell{ min-width:0; }
/* GUP-UX-WORLDCLASS1 Phase 1（UX-07）：比較元の 1 行（必要改善額＝目標 − 前期実績、残り＝目標 − 計画）。注記ではなく compact 本文の段。 */
/* GUP-UX-WORLDCLASS1 Phase 5：旧 class 名は内部用語を panel の HTML へ漏らしていた（test-ui-ia22 が検出）。役割は「何から何を引いたか」の 1 行なので bn-from。 */
.banner--plan .bn-from{ font-size:var(--gup-fs-xs); color:var(--gup-color-text-secondary); line-height:var(--gup-lh-compact); }
.banner--plan .lbl{
  font-size:var(--gup-fs-sm); font-weight:var(--gup-fw-medium);
  color:var(--gup-color-text-secondary); line-height:var(--gup-lh-compact);
  display:block; margin-bottom:var(--gup-sp-1);
}
.banner--plan .big{
  font-size:var(--gup-fs-kpi); line-height:var(--gup-lh-compact);
  font-variant-numeric:tabular-nums;
}
/* Founder 指示：5 つの数字は **同じ大きさ**にそろえる。
   どれが主役かは、大きさではなく囲み（.banner-primary の枠）で示す。
   ★上の .banner .banner-primary .big（④ 用の hero）を、この画面だけ打ち消す。 */
.banner--plan .banner-primary .big{ font-size:var(--gup-fs-kpi); }
/* 主役のセルだけ枠で囲む。負の margin で引き出さない（余白は grid の gap に任せる）。 */
.banner--plan .banner-primary{
  border:1px solid var(--gup-color-border-strong);
  border-radius:var(--gup-radius-md);
  padding:var(--gup-sp-2) var(--gup-sp-3);
}
.banner--plan .target-g-input{ width:11ch; font-size:var(--gup-fs-kpi); }
.banner--plan .banner-sub{
  font-size:var(--gup-fs-sm); color:var(--gup-color-text-secondary);
  font-variant-numeric:tabular-nums;
}
.banner--plan .banner-note{
  margin:var(--gup-sp-3) 0 0; font-size:var(--gup-fs-sm); color:var(--gup-color-text-secondary);line-height:var(--gup-lh-body);max-width:var(--gup-measure);}
.banner--plan .banner-note:empty{ display:none; }
/* UI-PLANG2：増減は「計画 G」の数字のとなりに置く（別の行を作らない）。 */
.banner--plan .banner-val{ display:flex; align-items:baseline; gap:var(--gup-sp-2); flex-wrap:wrap; }
.banner--plan .bn-grow{ font-size:var(--gup-fs-sm); color:var(--gup-color-text-secondary); }
.banner--plan .bn-num{ color:var(--gup-color-text-primary); font-variant-numeric:tabular-nums; }
.banner--plan .bn-num + .bn-num:not(:empty){ margin-left:var(--gup-sp-1); }

/* --------------------------------------------------------------------------
   2b. legacy control への共通部品の適用（②③⑤ を含むアプリ全体）
   ★画面構造・情報設計は変えない。**操作領域の下限**だけを共通規則へ揃える。
   ★色・font-size・背景・枠は既存のまま（見た目の作り替えはしない）。
   ★shared-ui は base / layout / components / management より後ろなので、
     同じ詳細度なら勝つ。!important は使わない。
   -------------------------------------------------------------------------- */

/* 記号だけの削除ボタン（✕ / ×）は 20〜28px しかなく押しにくい。
   見た目は変えずに compact(34px) の当たり判定だけ確保する。 */
.del, .comp-del, .mx-sel-remove{
  display:inline-flex; align-items:center; justify-content:center;
  min-width:var(--gup-control-compact);
  min-height:var(--gup-control-compact);
}

/* 単位 select は compact（表・カード見出しの中の絞り込み）。
   UI-SYSTEM1-1B2：管理単位の表示範囲 select は「その画面で何を入力するか」を決める
   主要操作なので standard へ移した（34 / 40 / 20px と画面ごとに違っていたものを 1 つへ）。 */
.unit-sel{ min-height:var(--gup-control-compact); }
.mucur-sel{ min-height:var(--gup-control-standard); }

/* --------------------------------------------------------------------------
   2c. Phase S1f — 画面状態（empty / error / success）と確認 dialog
   -------------------------------------------------------------------------- */

/* 読み上げ専用（画面には出さないが display:none にはしない） */
.gup-visually-hidden{
  position:absolute; width:1px; height:1px; margin:-1px; padding:0;
  overflow:hidden; clip:rect(0 0 0 0); white-space:nowrap; border:0;
  /* CURRENT-DRAWER-RESPONSIVE1：包含ブロックの原点へ寄せる。
     absolute なので、囲みが position:static だと clip を逃れて document を横へ伸ばす
     （実測：横に広い表の右端に居る 1px が document を 837px にしていた）。
     見た目にも読み上げ順にも影響しない（DOM 順で読まれる）。 */
  left:0; top:0;
}

/* empty state — 何が無いか → なぜ要るか → 次の一手 */
.gup-empty--state{ display:flex; flex-direction:column; gap:var(--gup-sp-2); align-items:center; }
.gup-empty__title{
  margin:0; font-size:var(--gup-fs-base); font-weight:var(--gup-fw-semibold);
  color:var(--gup-color-text-primary);
}
.gup-empty__body{ margin:0; font-size:var(--gup-fs-sm); color:var(--gup-color-text-secondary); }
.gup-empty__actions{ margin-top:var(--gup-sp-1); }

.gup-msg__text{ display:block; }

/* 共通 modal（未保存確認）— 既存 overlay と同じ重なり順・同じ閉じ方 */
.gup-modal{
  position:fixed; inset:0; z-index:var(--gup-z-modal);
  display:flex; align-items:center; justify-content:center;
  padding:var(--gup-sp-4);
  background:var(--gup-color-overlay);
}
.gup-modal__panel{
  width:100%; max-width:420px;
  display:flex; flex-direction:column; gap:var(--gup-section-gap);
  padding:var(--gup-modal-padding);
  border-radius:var(--gup-radius-md);
  background:var(--gup-color-surface);
  box-shadow:var(--gup-shadow-overlay);
}
.gup-modal__title{
  margin:0; font-size:var(--gup-fs-lg); font-weight:var(--gup-fw-semibold);
  line-height:var(--gup-lh-heading); color:var(--gup-color-text-primary);
}
.gup-modal__body{ margin:0; font-size:var(--gup-fs-sm); color:var(--gup-color-text-secondary); }
.gup-modal__actions{ display:flex; flex-wrap:wrap; gap:var(--gup-sp-3); }
.gup-modal__actions .gup-btn{ flex:1 1 auto; }

/* UX-MODE1：DETAIL（読む詳細）。READ から明示操作で開き、全文・根拠・履歴・内訳を **書かずに** 読む。
   面と影は既存 .gup-modal。中は 1 つの自然なスクロール（入れ子にしない）。編集は明示の別ボタンだけ。 */
.gup-detail .gup-modal__panel{ max-width:760px; max-height:calc(100vh - var(--gup-sp-4) * 2); gap:var(--gup-sp-3); }
.gup-detail__head{ display:flex; align-items:flex-start; gap:var(--gup-sp-2); flex:none; }
.gup-detail__ht{ flex:1 1 auto; min-width:0; display:flex; flex-direction:column; gap:var(--gup-sp-1); }
.gup-detail__ht .gup-modal__title{ overflow-wrap:anywhere; }
.gup-detail__target{ font-size:var(--gup-fs-note); color:var(--gup-color-text-secondary); }
.gup-detail__body{ flex:1 1 auto; min-height:0; overflow-y:auto; display:flex; flex-direction:column; gap:var(--gup-sp-3); }
.gup-detail__sec{ display:flex; flex-direction:column; gap:var(--gup-sp-1); }
.gup-detail__h{ margin:0; font-size:var(--gup-fs-note); font-weight:var(--gup-font-weight-regular); color:var(--gup-color-text-secondary); }
.gup-detail__p{ margin:0; font-size:var(--gup-fs-sm); line-height:var(--gup-lh-normal); color:var(--gup-color-text-primary);
  white-space:pre-line; overflow-wrap:anywhere; }
.gup-detail__p.is-muted{ color:var(--gup-color-text-secondary); }
.gup-detail__none{ color:var(--gup-color-text-disabled); }
.gup-detail__kv{ margin:0; display:grid; grid-template-columns:minmax(96px,auto) minmax(0,1fr); gap:var(--gup-sp-1) var(--gup-sp-3);
  font-size:var(--gup-fs-sm); line-height:var(--gup-lh-normal); }
.gup-detail__kv > dt{ color:var(--gup-color-text-secondary); }
.gup-detail__kv > dd{ margin:0; overflow-wrap:anywhere; white-space:pre-line; }
.gup-detail__actions{ flex:none; justify-content:flex-end; }
.gup-detail__actions .gup-btn{ flex:0 0 auto; }
/* display 指定は UA の [hidden] に勝つ（この repo で何度も踏んだ）。編集ボタンは無いときは出さない。 */
.gup-detail__actions > [hidden]{ display:none; }

/* Phase UI-DIALOG1: 通知・確認・入力の共通 dialog（既存 .gup-modal の中の追加要素だけ） */
/* STORAGE-BACKUP-GEN1：本文・補足とも改行を保つ。
   控えの一覧（1 行 1 世代）や複数文の説明を渡しているのに、既定の white-space では
   1 行につながって「3 つの控え」が 1 行に見えていた。装飾は増やさず改行だけ生かす。 */
.gup-modal__body, .gup-dialog__detail{ white-space:pre-line; }
.gup-dialog__detail{ font-size:var(--gup-fs-note); color:var(--gup-text-muted); }
.gup-dialog__field{ display:flex; flex-direction:column; gap:var(--gup-sp-2); }
/* ★display 指定は UA の [hidden]{display:none} に勝つ。dialog service は
   入力欄（notice / confirm）と取消ボタン（notice）へ hidden を立てているのに、
   上の display:flex と .gup-btn{display:inline-flex} が勝って消えていなかった
   （実測：削除の確認にも、まだ作れませんの通知にも、空の入力欄が出ていた）。
   PLAN-ROUTE1A と同じ形で、隠す規則を同じ場所へ置く（!important も inline style も使わない）。 */
.gup-dialog__field[hidden]{ display:none; }
.gup-btn[hidden]{ display:none; }
.gup-dialog__label{ font-size:var(--gup-fs-sm); color:var(--gup-color-text-secondary); }
.gup-dialog__input{
  width:100%; box-sizing:border-box; height:var(--gup-control-standard);
  padding:0 var(--gup-sp-3); border:1px solid var(--gup-color-border-strong);
  border-radius:var(--gup-radius-sm); background:var(--input-bg);/* GUP-AIR-SURFACE1A：入力面の役割で塗る */
  font-size:var(--gup-fs-base); color:var(--gup-color-text-primary);
}
/* invalid の表現は**文言だけ**（UI-SYSTEM1-1B2 の「invalid 用の新しい色・枠・アイコンを足さない」を守る）。
   aria-invalid 属性は支援技術のために付けるが、見た目は変えない。 */
.gup-dialog__error{ margin:0; font-size:var(--gup-fs-note); color:var(--gup-color-danger); }

/* --------------------------------------------------------------------------
   2d. Phase S1f — 各画面先頭の案内は progressive disclosure
   通常表示は「見出し ＋ 1 行の目的」。全文は details の中へ（削除はしない）。
   -------------------------------------------------------------------------- */
/* UI-FOLD1（Founder 指摘）：本題より上の帯を薄く。閉じた「この画面について」は題と同じ行に置き、
   開いたときだけ全幅に展開する（情報は 1 つも減らさない）。 */
.step-hint .sh-body{ display:flex; flex-direction:row; flex-wrap:wrap; align-items:baseline;
  column-gap:var(--gup-sp-4); row-gap:var(--gup-sp-1); min-width:0; }
.step-hint .sh-body .sh-title{ margin:0; }
.step-hint .sh-more[open]{ flex-basis:100%; }
.step-hint .sh-title{ margin:0; }
/* UI-TYPE4：押せるものに 12px（列見出しの段）は使わない。開閉は補足と同じ 14px。 */
.step-hint .sh-more > summary{
  cursor:pointer; width:fit-content;
  font-size:var(--gup-fs-sm); font-weight:var(--gup-fw-medium);
  color:var(--gup-color-accent);
}
.step-hint .sh-more[open] > summary{ margin-bottom:var(--gup-sp-2); }
/* UI-GUIDANCE-AUDIT1（A）：本文に常時出していた状態の説明を、この中へ畳んだときの 1 行。
   新しい面や囲みは作らず、同じ本文の続きとして置く。 */
.step-hint .sh-detail-note{ margin:var(--gup-sp-2) 0 0; white-space:pre-line; }   /* UI-SENT1 */

/* --------------------------------------------------------------------------
   2e. Phase UI-NAV1 — 共通サブタブ（第2階層）
   ①〜⑥ の主要作業はここで横に切り替える。⑦ の既存 .mbnav と同じ見た目に揃える。
   タブは「仕事の切り替え」なので、primary action より強く見せない
   （下線 1 本 ＋ 文字色。塗りつぶし・意味色は使わない）。
   -------------------------------------------------------------------------- */
.gup-subtabs{
  display:flex; flex-wrap:wrap; gap:var(--gup-sp-1);
  margin:0 0 var(--gup-sp-4);
  border-bottom:1px solid var(--gup-color-border);
}
.gup-subtabs > button{
  min-height:var(--gup-control-standard);   /* primary action と同じ高さまで */
  padding:0 var(--gup-sp-4);
  font-size:var(--gup-fs-base);
  font-weight:var(--gup-fw-medium);
  line-height:var(--gup-lh-compact);
  border-radius:var(--gup-radius-sm) var(--gup-radius-sm) 0 0;
  border:1px solid transparent;
  border-bottom:2px solid transparent;
  margin-bottom:-1px;                       /* 下線を tablist の境界線に重ねる */
  background:transparent;
  color:var(--gup-color-text-secondary);
  cursor:pointer;
}
.gup-subtabs > button:hover{
  color:var(--gup-color-text-primary);
  background:var(--gup-color-surface-subtle);
}
.gup-subtabs > button.active{
  color:var(--gup-color-text-primary);
  font-weight:var(--gup-fw-semibold);
  background:transparent;
  border-bottom-color:var(--gup-color-accent);
}
/* 使えないタブは「薄いから読めない」ではなく「押せない」と分かるようにする */
.gup-subtabs > button:disabled{
  color:var(--gup-color-text-secondary);
  background:var(--gup-color-surface-subtle);
  border-bottom-color:transparent;
  cursor:not-allowed;
  opacity:1;
}
/* --- 分析メニュー（UI-IA1）---
   ① は「何を見るか」を選ぶ画面なので、下線だけのタブでは選択肢として気づけなかった。
   名前＋一行の説明を持つカード型にして、上位ナビ（濃い色の帯）とも見分けられるようにする。 */
.gup-subtabs--menu{
  display:grid; grid-template-columns:repeat(4, minmax(0, 1fr));
  gap:var(--gup-sp-3);
  border-bottom:none;
  margin-bottom:var(--gup-sp-5);
}
.gup-subtabs--menu > button{
  display:flex; flex-direction:column; align-items:flex-start; gap:var(--gup-sp-1);
  min-height:auto; margin-bottom:0;
  padding:var(--gup-sp-3) var(--gup-sp-4);
  text-align:left; white-space:normal;
  border:1px solid var(--gup-color-border-strong);
  border-radius:var(--gup-radius-md);
  background:var(--gup-color-surface);
  color:var(--gup-color-text-primary);
}
.gup-subtabs--menu > button:hover{ background:var(--gup-color-surface-subtle); }
.gup-subtabs--menu > button.active{
  border-color:var(--gup-color-accent);
  background:var(--gup-color-accent-subtle);
}
.gup-subtabs--menu .st-name{
  font-size:var(--gup-fs-base); font-weight:var(--gup-fw-semibold);
  line-height:var(--gup-lh-compact); color:var(--gup-color-text-primary);
}
.gup-subtabs--menu > button.active .st-name{ color:var(--gup-color-accent-hover); }
.gup-subtabs--menu .st-desc{
  font-size:var(--gup-fs-note); font-weight:var(--gup-fw-normal);
  line-height:var(--gup-lh-normal); color:var(--gup-color-text-secondary);
}

/* panel は hidden で出し分ける。DOM は残す（入力途中を失わない）。
   display を持つ panel でも hidden が勝つようにしておく。 */
.gup-subpanel[hidden]{ display:none; }
/* panel 内のカードの間隔。画面ごとに inline の margin-top を増やさない。 */
.gup-subpanel > * + *{ margin-top:var(--gup-sp-4); }

/* --------------------------------------------------------------------------
   2f. Phase UI-IA2.1 — 画面の中の見出し
   左サイドナビで選んだ「いまの仕事」を、本文の先頭で 1 行だけ確かめられるようにする。
   移動はすべて左で行うので、ここに移動用のボタンは置かない。
   -------------------------------------------------------------------------- */
.panel-head{
  display:flex; flex-wrap:wrap; align-items:baseline; gap:var(--gup-sp-1) var(--gup-sp-3);
  margin:0 0 var(--gup-sp-3);
  /* V2-AB1（Phase A）：<h2> の UA 既定（1.5em＝24px）が漏れないように明示する。
     画面の題は子の .ph-name（20px）が持つ。 */
  font-size:var(--gup-fs-base);
}
.panel-head .ph-name{
  font-size:var(--gup-fs-xl); font-weight:var(--gup-fw-semibold);   /* UI-TYPE6：画面名はカードの見出しと同じ段（カードより小さい画面名という逆転を解消） */
  line-height:var(--gup-lh-heading); color:var(--gup-color-text-primary);
}
.panel-head .ph-purpose{
  font-size:var(--gup-fs-sm); font-weight:var(--gup-fw-normal);
  color:var(--gup-color-text-secondary);
}
/* UI-IA2.4: 画面見出しの右に置く「この画面の使い方」。案内の帯を外した画面でも入口を減らさない。 */
.panel-head .ph-help{
  margin-left:auto; flex:none; cursor:pointer;
  min-height:var(--gup-control-compact);
  padding:0 var(--gup-sp-3);
  font-size:var(--gup-fs-base);   /* UI-TYPE4：文字のボタンは 16px */
  color:var(--gup-color-accent); background:var(--gup-color-surface);
  border:1px solid var(--gup-color-border); border-radius:var(--gup-radius-pill);
}
.panel-head .ph-help:hover{ border-color:var(--gup-color-accent); }

/* --------------------------------------------------------------------------
   3. 共通 table contract
   label は左、数値は右、桁は揃える。単位は原則 header へ。
   -------------------------------------------------------------------------- */
.gup-scroll{ overflow-x:auto; }
.gup-table{ width:100%; border-collapse:collapse; font-size:var(--gup-fs-sm); }
.gup-table th, .gup-table td{
  padding:var(--gup-table-cell-block-padding) var(--gup-table-cell-inline-padding);
  border-bottom:1px solid var(--gup-color-border);
  vertical-align:middle;
}
.gup-table thead th{
  background:var(--gup-color-surface-subtle);
  /* UI-TYPE4：列見出しは 12px・太字。 */
  font-size:var(--gup-fs-note);
  font-weight:var(--gup-fw-semibold);
  color:var(--gup-color-text-secondary);
  border-bottom:1px solid var(--gup-color-border-strong);
  text-align:left;
}
/* UI-TYPE4：表の数値は 16px 太字（正本の ① MQ会計表と同じ役割）。
   .gup-table の本文は 14px のままなので、数値だけが 1 段上がって読みやすくなる。 */
.gup-table th.num, .gup-table td.num,
.gup-table .gup-num{ text-align:right; font-variant-numeric:tabular-nums; }
/* V2-AB1（Phase A）：表の本文は 400。数値だけ 1 段大きくする扱いは残す。
   太字は「合計（tr.gup-total）」と「列見出し（thead th）」だけが持つ。
   before は数値セルが全部 700 で、合計・見出し・本文の区別が消えていた。 */
.gup-table td.num{ font-size:var(--gup-fs-base); font-weight:var(--gup-font-weight-regular); }
.gup-table th.lft, .gup-table td.lft{ text-align:left; }
.gup-table tr.gup-total > td{
  background:var(--gup-color-surface-subtle);
  font-weight:var(--gup-fw-semibold);
  border-top:1px solid var(--gup-color-border-strong);
}
/* 単位は header の中で小さく添える（セルには付けない） */
.gup-table th .gup-unit{
  display:block; font-size:var(--gup-fs-note); font-weight:var(--gup-fw-normal);
  color:var(--gup-color-text-secondary);
}
/* null / 算出不能は文字で示す（0 と混ぜない） */
.gup-none{ color:var(--gup-color-text-secondary); }

/* sticky header — 高密度表だけ。local scroll の内側でのみ効かせる。 */
.gup-scroll--sticky{ max-height:60vh; overflow-y:auto; }
.gup-scroll--sticky .gup-table thead th{
  position:sticky; top:0;
  z-index:var(--gup-z-sticky);
  background:var(--gup-color-surface-subtle);   /* 不透明にして本文が透けないようにする */
  box-shadow:0 1px 0 var(--gup-color-border-strong);
}

/* 既存の数値セル（画面固有 class）も桁を揃える。色や余白は既存のまま。 */
table td.num, table th.num{ font-variant-numeric:tabular-nums; }

/* --------------------------------------------------------------------------
   3z. Phase PRODUCT-RECOVERY1 — 保存停止からの復旧パネル
   赤い警告帯のすぐ下に置く「次の一手」。帯は塗らず、面は neutral のまま。
   意味色は primary ボタンにだけ使う（帯・カードを danger 色で塗らない）。
   狭い画面ではボタンを折り返す（breakpoint を増やさず flex-wrap で吸収する）。
   -------------------------------------------------------------------------- */
.rec1-panel{
  display:flex; flex-direction:column; gap:var(--gup-sp-2);
  margin:0; padding:var(--gup-sp-4);
  border-bottom:1px solid var(--gup-color-border);
  background:var(--gup-color-surface-subtle);
}
.rec1-title{
  margin:0; font-size:var(--gup-fs-lg); font-weight:var(--gup-fw-semibold);
  line-height:var(--gup-lh-heading); color:var(--gup-color-text-primary);
}
.rec1-body{ margin:0; font-size:var(--gup-fs-sm); color:var(--gup-color-text-secondary); }
.rec1-actions{ flex-wrap:wrap; gap:var(--gup-sp-2); }
.rec1-actions .gup-btn{ flex:0 1 auto; }

/* --------------------------------------------------------------------------
   3aa. Phase PRODUCT-MU1-3 — 計画の起点の配分（移行の途中）
   配分元 ／ 配分済み ／ 差額 を並べる表は横に長いので、表の内側だけ横スクロールさせる。
   面は neutral のまま。意味色は状態バッジと差額にだけ使う。
   -------------------------------------------------------------------------- */
.mumig-wrap{ display:flex; flex-direction:column; gap:var(--gup-sp-3); }
.mumig-sum{
  display:flex; flex-wrap:wrap; gap:var(--gup-sp-2) var(--gup-sp-4);
  padding:var(--gup-sp-2) var(--gup-sp-3);
  border:1px solid var(--gup-color-border); border-radius:var(--gup-radius-md);
  background:var(--gup-color-surface-subtle);
  font-size:var(--gup-fs-sm); color:var(--gup-color-text-secondary);
}
.mumig-sum b{ color:var(--gup-color-text-primary); font-variant-numeric:tabular-nums; }
.mumig-scroll .mumig-table{ min-width:760px; }
.mumig-diff{ color:var(--gup-color-negative); }
.mumig-reasons{ margin:0; padding-left:var(--gup-sp-5); font-size:var(--gup-fs-sm); color:var(--gup-color-text-secondary); }
.mumig-reasons li{ margin:var(--gup-sp-1) 0; }
.mumig-actions{ margin-top:var(--gup-sp-2); }
.muset-src{ color:var(--gup-color-text-secondary); font-size:var(--gup-fs-note); font-variant-numeric:tabular-nums; }

/* --------------------------------------------------------------------------
   3ab. Phase PRODUCT-PLAN-ROUTE1 — 年度計画への入口
   「次に何をするか」を 1 行＋ボタンで示すだけ。面は neutral のまま、
   意味色は primary ボタンにだけ使う。狭い画面では折り返す（breakpoint を増やさない）。
   -------------------------------------------------------------------------- */
.plan-create-cta, .plan-next-cta{
  align-items:center; flex-wrap:wrap; gap:var(--gup-sp-2) var(--gup-sp-3);
  margin:0 0 var(--gup-sp-3);
}
.plan-next-cta{ margin:var(--gup-sp-2) 0 0; }
.plan-create-cta .mucur-hint, .plan-next-cta .mucur-hint{ margin:0; flex:1 1 240px; }

/* PRODUCT-PLAN-ROUTE1A: 年度計画が無いあいだ、計画の派生数値を出す領域ごと差し替える。
   数値を 0 や「—」にして計算済みに見せない。面は neutral のまま。 */
.plan-none{
  display:flex; flex-direction:column; gap:var(--gup-sp-3);
  margin:0 0 var(--gup-sp-4); padding:var(--gup-panel-padding);
  border:1px dashed var(--gup-color-border); border-radius:var(--gup-radius-md);
  background:var(--gup-color-surface-subtle);
}
.plan-none-msg{ margin:0; font-size:var(--gup-fs-sm); color:var(--gup-color-text-secondary); }

/* PRODUCT-YEAR2C の ③ 用 .ny-* は、翌期繰越をデータ・設定へ移した時点で使う DOM が無くなったので削除した
   （VER1-FINAL-UIUX-MERGE-FIX。確認は共通 dialog、入口は記録の並びの共通ボタンを使う）。 */
/* 遮断した領域は必ず消える。display:flex 等の既存規則が UA の [hidden] に勝つ場所があるため、
   class を足した分だけ specificity を上げて隠す（!important も inline style も使わない）。 */
.plan-none-hidden[hidden]{ display:none; }
.plan-none[hidden]{ display:none; }   /* 計画ができたら未作成表示も必ず消える */

/* --------------------------------------------------------------------------
   4. 狭い画面（< 720px）
   横スクロールは表の内側だけ。document を横に伸ばさない。
   -------------------------------------------------------------------------- */
@media (max-width:719px){

  /* BS sheet uses the app's existing mobile boundary. */
  dialog.bsw-dialog{width:calc(100vw - 16px);max-height:calc(100dvh - 16px);}
  .bsw-dialog .bsw{padding:var(--gup-sp-3);}
  .bsw-dialog .bsw-columns{grid-template-columns:minmax(0,1fr);gap:var(--gup-sp-5);}
  .bsw-dialog .maw-columns{grid-template-columns:minmax(0,1fr);min-height:0;}
  .bsw-dialog .maw-table th{width:27%;}
  .bsw-dialog .maw-table label>span{overflow-wrap:anywhere;}
  .bsw-dialog .maw-section--sales .maw-table,.bsw-dialog .maw-section--sales tbody{display:block;}
  .bsw-dialog .maw-section--sales tr{display:block;border-bottom:1px solid var(--gup-color-border);padding:var(--gup-sp-2) 0;}
  .bsw-dialog .maw-section--sales th,.bsw-dialog .maw-section--sales td{display:block;width:100%;border-bottom:0;}
  .bsw-dialog .maw-section--sales td:empty{display:none;}
  .bsw-dialog .maw-section--sales label{display:grid;grid-template-columns:minmax(0,1fr) minmax(160px,1.6fr);align-items:center;gap:var(--gup-sp-2);}
  .bsw-dialog .maw-scope select{max-width:210px;}
  .bsw-dialog .maw-count{display:block;}
  .bsw-dialog.maw-mode .bsw-toolbar .gup-seg{display:flex;width:100%;}
  .bsw-dialog.maw-mode .bsw-toolbar .gup-seg button{min-width:0;flex:1;}
  .bsw-dialog .maw-summary{gap:var(--gup-sp-2);}
  .bsw-dialog .bsw-header{align-items:flex-start;}
  .bsw-dialog .bsw-header h2{font-size:var(--gup-fs-lg);}
  .bsw-dialog .bsw-header span{display:block;max-width:180px;overflow-wrap:anywhere;}
  .bsw-dialog .bsw-header .gup-btn{padding:calc(var(--gup-sp-3) / 2) calc(var(--gup-sp-5) / 2);min-width:0;}
  .bsw-dialog .bsw-table th,.bsw-dialog .bsw-table td{padding:var(--gup-sp-1) calc(var(--gup-sp-3) / 4);}
  .bsw-dialog .bsw-flow-grid{grid-template-columns:minmax(0,1fr);}
  .bsw-dialog .bsw-parts{padding:var(--gup-sp-2);}
  .bsw-dialog .bsw-part{grid-template-columns:repeat(2,minmax(0,1fr));}

  /* S1f: 会社・年度はヘッダの記録バーにも出ているので、画面内の context は縦積みにせず
     1 行に収める（縦積みにすると結論が 130px 押し下げられていた）。 */
  .gup-context{ gap:var(--gup-sp-1) var(--gup-sp-3); padding:var(--gup-sp-2) 0; }
  .gup-context__label{ font-size:var(--gup-fs-note); }
  .gup-context__value{ font-size:var(--gup-fs-note); }
  .gup-summary__grid{ grid-template-columns:repeat(auto-fit, minmax(140px, 1fr)); }
  .gup-kpi--primary{ grid-column:1 / -1; }
  .gup-kpi--primary .gup-kpi__value{ font-size:var(--gup-fs-kpi); }
  .gup-actions .gup-btn{ flex:1 1 auto; }
  .gup-scroll--sticky{ max-height:none; }   /* 縦が短い画面で sticky を強制しない */

  /* サブタブは折り返さず 1 行で横スクロール（縦へ積むと結論が押し下げられる）。
     document は横に伸ばさない。 */
  .gup-subtabs:not(.gup-subtabs--menu){ flex-wrap:nowrap; overflow-x:auto; gap:0; }
  .gup-subtabs:not(.gup-subtabs--menu) > button{
    flex:none; white-space:nowrap;
    padding:0 var(--gup-sp-3);
    font-size:var(--gup-fs-sm);
  }
  /* 分析メニューは 2 列 × 2 段。説明が読める幅を確保し、横スクロールにしない。 */
  .gup-subtabs--menu{ grid-template-columns:repeat(2, minmax(0, 1fr)); gap:var(--gup-sp-2); }
  .gup-subtabs--menu > button{ padding:var(--gup-sp-2) var(--gup-sp-3); }

  /* 各タブ先頭の案内文（.step-hint）は狭い画面で画面の約半分を占め、
     その画面の結論（主 KPI）を折り返しの下へ押し出していた。
     文言は 1 文字も削らず、狭い画面のときだけ本文サイズを 1 段落とす。 */
  .step-hint{ font-size:var(--gup-fs-sm); padding:var(--gup-sp-2) var(--gup-sp-3); }

  /* ---- Phase S1f: グローバルヘッダの圧縮（狭い画面）----
     通常利用時のヘッダは「会社と年度を確認して画面を移動する場所」に限る。
     機能の入口は 1 つも減らさない（メニュー・使い方・記録操作はそのまま）。 */

  /* ミニ KPI は画面内の主 KPI（S1e の summary）と同じ値。狭い画面では重複を出さない。 */
  .header-kpis{ display:none; }
  /* GUP-HIGH-DENSITY-UI1: その裏返し。広い画面ではヘッダが出すので本文から外し、
     ヘッダを隠すこの幅では **本文が唯一の置き場**なので戻す（新しいメディアクエリを作らない）。 */
  /* ★詳細度は cockpit.css の .gup-kpi--headerdup（後に読まれる）より 1 段上にする。
     同じ詳細度だと後勝ちで display:none が残り、狭い画面で本文 KPI が消える（実測）。 */
  .gup-summary__grid .gup-kpi--headerdup{ display:flex; }
  /* 札も一緒に（狭い画面でミニ KPI を出さないとき）。 */
  .hkpi-scenario{ display:none; }
  .brand h1{ font-size:var(--gup-fs-base); }
  .brand .sub{ font-size:var(--gup-fs-note); }
  header{ padding-top:var(--gup-sp-2); padding-bottom:0; }
  .topline{ gap:var(--gup-sp-1); }

  /* 記録バーは 1 行へ。会社と年度が主役で、それ以外は縮める。 */
  .record-bar-main{ flex-wrap:nowrap; gap:var(--gup-sp-2); overflow-x:auto; }
  .record-bar-main > *{ flex:none; }
  .rb-label{ display:none; }              /* select 自体に aria-label があるので情報は失われない */
  .rb-sel{ flex:1 1 0; min-width:0; max-width:none; font-size:var(--gup-fs-sm); padding:var(--gup-sp-1) var(--gup-sp-2); }
  .rb-save{ font-size:var(--gup-fs-note); }
  .rb-mini{ display:none; }               /* 同じ内容が画面内の context 行にある */
  .hb-toggle{ font-size:var(--gup-fs-note); padding:var(--gup-sp-1) var(--gup-sp-2); }

  /* 「スマホは確認用」の案内。文言は残し、既定は畳んでおく。 */
  .mobile-use-note{ font-size:var(--gup-fs-note); padding:var(--gup-sp-2) var(--gup-sp-3); }
  .mobile-use-note > summary{ cursor:pointer; font-weight:var(--gup-fw-medium); }
}

/* STRATEGY-PLAN1: 反映内容の確認 modal。面と影は既存 .gup-modal を使い、表だけ足す。
   UI-SPV1（Founder 指摘「史上最悪レベルで見づらい」）：実測すると原因は 1 つだった。
     パネル 640px に対して中の表が 820px ＝ **幅が 180px 足りない**。
     しかも高さは 763/900 で余っていたのに、足りない幅を横スクロール 3 本で逃がしていた。
   直し方：① 幅を広げて表を入れる ② スクロールは縦 1 本だけ
           ③ 結論（G の変化）を最初に ④ 5 列の表はカードへ ⑤ 注記は数字のそばへ小さく */
.spv-panel{max-width:min(1080px, 92vw);max-height:88vh;overflow:auto;}
.spv-ctx{margin:0;color:var(--gup-text-muted);font-size:var(--gup-fs-sm);}
/* UI-SPV1：パネルを広げたので、広い画面では表が収まり横スクロールは出ない（実測 0 本）。
   狭い画面では表だけが自分の枠の中でスクロールする（CLAUDE.md の表の契約どおり）。
   ★breakpoint は増やさない（画面幅の条件は 42 のまま）。auto は「必要なときだけ出る」ので条件分岐が要らない。 */
.spv-scroll{overflow-x:auto;}

/* UI-SPV2（Founder 指摘）：結論＝「反映すると、こう変わります」の表そのもの。最上部に置く。
   UI-SPV1 の別枠 1 行（.spv-lede）は廃止（同じ G を 2 回言わない）。 */
.spv-impact{padding:var(--gup-sp-3) var(--gup-sp-4);border-radius:var(--gup-radius-md);
  background:var(--gup-color-surface-subtle);}
.spv-impact__head{display:flex;align-items:baseline;gap:var(--gup-sp-3);flex-wrap:wrap;}
.spv-impact__head .spv-subhead{margin:0;}
.spv-impact__count{margin-left:auto;font-size:var(--gup-fs-sm);color:var(--gup-color-text-secondary);}
/* G はこの modal の結論なので、同じ表の中で 1 行だけ強く出す（大きさは変えず、太さと線で示す）。 */
.spv-table tr.spv-row-g > *{font-weight:var(--gup-font-weight-bold);
  color:var(--gup-color-text-primary);border-top:2px solid var(--gup-color-border-strong);}

/* UI-SPV1 ④：採用戦略は 5 列の表をやめてカードへ（横に伸ばさず、余っている縦を使う）。 */
.spv-cards{display:grid;gap:var(--gup-sp-2);grid-template-columns:repeat(auto-fit,minmax(300px,1fr));}
.spv-card{border:1px solid var(--gup-color-border);border-radius:var(--gup-radius-md);
  padding:var(--gup-sp-3);min-width:0;}
.spv-card__name{font-weight:var(--gup-font-weight-bold);color:var(--gup-color-text-primary);}
.spv-card__line{display:flex;gap:var(--gup-sp-2);font-size:var(--gup-fs-sm);margin-top:var(--gup-sp-1);min-width:0;}
.spv-card__k{color:var(--gup-color-text-secondary);flex:none;min-width:5em;}
.spv-card__v{color:var(--gup-color-text-primary);font-variant-numeric:tabular-nums;min-width:0;}

/* UI-SPV1 ⑤：長い注記は数字のそばへ小さく。畳めるものは details へ。 */
.spv-fold{font-size:var(--gup-fs-sm);color:var(--gup-color-text-secondary);}
.spv-fold > summary{cursor:pointer;padding:var(--gup-sp-1) 0;}

/* UI-SPV1：内容が長くてもボタンが見える（縦スクロールの中で最後尾に固定）。 */
.spv-actions{position:sticky;bottom:calc(var(--gup-modal-padding) * -1);
  padding:var(--gup-sp-3) 0 0;background:var(--gup-color-surface);}
.spv-table{width:100%;border-collapse:collapse;font-variant-numeric:tabular-nums;}
.spv-table th,.spv-table td{padding:var(--gup-sp-2) var(--gup-sp-3);border-bottom:1px solid var(--gup-color-border);}
.spv-table td{text-align:right;}
.spv-table thead th{text-align:right;color:var(--gup-text-muted);font-size:var(--gup-fs-sm);}
.spv-table thead th:first-child,.spv-table tbody th{text-align:left;}
.spv-note{margin:0;font-size:var(--gup-fs-sm);color:var(--gup-text-muted);}
.spv-stale{margin:0;font-size:var(--gup-fs-sm);color:var(--gup-color-negative);}
.spv-actions{display:flex;gap:var(--gup-sp-3);justify-content:flex-end;flex-wrap:wrap;}   /* UI-SPV1：sticky は上の定義 */

/* PLAN-PROJECTION1B: ③ の未反映の試算と、反映内容を確認する導線 */
.plan-driver-row{display:flex;align-items:center;gap:var(--gup-sp-3);flex-wrap:wrap;margin-top:var(--gup-sp-3);}
.plan-driver-row[hidden]{display:none;}
.plan-driver-note{font-size:var(--gup-fs-sm);color:var(--gup-text-muted);}

/* PLAN-RESIDUAL-UI1: 管理単位別のその他 PQ／VQ 入力 */
.ur-box[hidden]{display:none;}
.ur-unit{margin-top:var(--gup-sp-3);}
.ur-unit-name{display:block;font-size:var(--gup-fs-sm);color:var(--gup-text-muted);margin-bottom:var(--gup-sp-1);}

/* STRATEGY-F1B: ④「固定費への影響（年額）」editor。
   F1C まで正式画面へは mount されない（test harness／browser evaluate 専用）。
   token だけを使い、invalid 専用の新しい色体系は追加しない（文言で示す）。
   縦積み＋wrap なので 390px でも media query を増やさずに成立する。 */
.gup-fedit{display:flex;flex-direction:column;gap:var(--gup-sp-2);max-width:100%;}
.gup-fedit__bar{display:flex;align-items:center;gap:var(--gup-sp-3);flex-wrap:wrap;}
.gup-fedit__summary{font-size:var(--gup-fs-sm);}
.gup-fedit__head{display:flex;align-items:center;justify-content:space-between;gap:var(--gup-sp-3);flex-wrap:wrap;}
.gup-fedit__heading{margin:0;font-size:var(--gup-fs-base);}
.gup-fedit__desc,.gup-fedit__note,.gup-fedit__disabled-reason{margin:0;font-size:var(--gup-fs-sm);color:var(--gup-text-muted);white-space:pre-line;}
.gup-fedit__error{margin:0;font-size:var(--gup-fs-sm);white-space:pre-line;}
.gup-fedit__legacy,.gup-fedit__replacing{display:flex;flex-direction:column;gap:var(--gup-sp-2);padding:var(--gup-sp-3);border:1px solid var(--gup-color-border);border-radius:var(--gup-radius-md);}
.gup-fedit__legacy p{margin:0;font-size:var(--gup-fs-sm);white-space:pre-line;}
.gup-fedit__legacy-old{color:var(--gup-text-muted);}
.gup-fedit__rows{display:flex;flex-direction:column;gap:var(--gup-sp-3);}
.gup-fedit__row{display:flex;flex-direction:column;gap:var(--gup-sp-1);padding:var(--gup-sp-2) 0;border-bottom:1px solid var(--gup-color-border);}
.gup-fedit__label{font-size:var(--gup-fs-sm);color:var(--gup-text-muted);}
.gup-fedit__select{max-width:100%;}
.gup-fedit__amount-wrap{display:inline-flex;align-items:center;gap:var(--gup-sp-1);}
/* UI-TYPE4：入力した値は太字にしない（入力欄は 16px・標準）。 */
/* UI-TYPE4：入力した値は太字にしない。.gup-input より後ろに置いて確実に効かせる。 */
.gup-fedit__amount, input.gup-fedit__amount{width:8em;max-width:100%;text-align:right;font-variant-numeric:tabular-nums;
  font-size:var(--gup-fs-base);font-weight:var(--gup-font-weight-regular);}
.gup-fedit__unit{font-size:var(--gup-fs-sm);color:var(--gup-text-muted);}
.gup-fedit__delete{align-self:flex-start;}
.gup-fedit__totals{display:flex;flex-direction:column;gap:var(--gup-sp-1);font-variant-numeric:tabular-nums;}

/* STRATEGY-V-BREAKDOWN1: ④ の「Vの打ち手」editor。
   ★F editor と同じ役割は同じ contract を使う（新しい色・新しい寸法を作らない）。 */
.gup-vedit{display:flex;flex-direction:column;gap:var(--gup-sp-2);max-width:100%;}
.gup-vedit__read{display:flex;align-items:baseline;gap:var(--gup-sp-2);flex-wrap:wrap;}
.gup-vedit__read-lbl{font-size:var(--gup-fs-sm);color:var(--gup-text-muted);}
.gup-vedit__read-list{margin:0;padding:0;list-style:none;display:flex;flex-wrap:wrap;gap:var(--gup-sp-1) var(--gup-sp-3);}
.gup-vedit__read-row{display:inline-flex;align-items:baseline;gap:var(--gup-sp-1);font-size:var(--gup-fs-sm);}
.gup-vedit__read-rate{font-variant-numeric:tabular-nums;}
.gup-vedit__head{display:flex;align-items:center;justify-content:space-between;gap:var(--gup-sp-3);flex-wrap:wrap;}
.gup-vedit__heading{margin:0;font-size:var(--gup-fs-base);}
.gup-vedit__note{margin:0;font-size:var(--gup-fs-sm);color:var(--gup-text-muted);}
.gup-vedit__error{margin:0;font-size:var(--gup-fs-sm);white-space:pre-line;}
.gup-vedit__rows{display:flex;flex-direction:column;gap:var(--gup-sp-2);}
.gup-vedit__row{display:flex;align-items:baseline;flex-wrap:wrap;gap:var(--gup-sp-1) var(--gup-sp-2);
  padding:var(--gup-sp-1) 0;border-bottom:1px solid var(--gup-color-border);}
.gup-vedit__label{font-size:var(--gup-fs-sm);color:var(--gup-text-muted);}
.gup-vedit__select{max-width:100%;}
.gup-vedit__rate-wrap{display:inline-flex;align-items:center;gap:var(--gup-sp-1);}
/* UI-TYPE4：入力した値は太字にしない。 */
.gup-vedit__rate, input.gup-vedit__rate{width:5em;max-width:100%;text-align:right;font-variant-numeric:tabular-nums;
  font-size:var(--gup-fs-base);font-weight:var(--gup-font-weight-regular);}
.gup-vedit__unit{font-size:var(--gup-fs-sm);color:var(--gup-text-muted);}
.gup-vedit-host{margin-top:var(--gup-sp-1);}
/* ④ の V 欄が「結果表示」になったとき。**input 風に見せない**（枠も背景も持たせない）。 */
.imp-f--derived{display:inline-flex;align-items:center;gap:var(--gup-sp-1);}
.imp-derived{font-variant-numeric:tabular-nums;text-align:right;min-width:4em;
  font-size:var(--gup-fs-base);color:var(--gup-text-muted);}
/* preview の V 明細（管理単位｜商品 の見出し行 ＋ 費目行） */
.spv-vgroup > th{text-align:left;font-weight:var(--gup-font-weight-bold);}
.spv-vsum{font-weight:var(--gup-font-weight-regular);color:var(--gup-text-muted);font-size:var(--gup-fs-sm);}
.spv-vitem{padding-left:var(--gup-sp-3);font-weight:var(--gup-font-weight-regular);}

/* STRATEGY-F1C: preview の F 明細見出しと、戦略カード内の editor host の余白 */
.spv-subhead{margin:var(--gup-sp-3) 0 var(--gup-sp-1);font-size:var(--gup-fs-base);}
.gup-fedit-host{margin-top:var(--gup-sp-2);}

/* STRATEGY-ADOPTION-PLAN1: ⑤ 実行計画の計画効果 summary・カード要約 */
.fr-adopt-summary{display:flex;flex-direction:column;gap:var(--gup-sp-1);margin-bottom:var(--gup-sp-3);}
/* GUP-UX-WORLDCLASS1 Phase 3：編集面を開いているあいだ READ を隠す。display:flex は UA の [hidden] に勝つので詳細度で閉じる。 */
.fr-adopt-summary[hidden],.fr-adopt-actions[hidden]{display:none;}
.fr-adopt-head{margin:0;font-size:var(--gup-fs-base);}
/* UI-ADOPT-HEAD1：見出し・件数・状態を 1 行に（右の空白を使う）。数字は次の 1 行だけ。 */
.fr-adopt-line{display:flex;align-items:baseline;gap:var(--gup-sp-3);flex-wrap:wrap;}
.fr-adopt-line .fr-adopt-head{margin:0;}
.fr-adopt-meta{font-size:var(--gup-fs-sm);color:var(--gup-color-text-secondary);}
.fr-adopt-line .fr-adopt-state{margin-left:auto;}
.fr-adopt-figures{display:flex;align-items:baseline;gap:var(--gup-sp-2);flex-wrap:wrap;margin:0;
  font-variant-numeric:tabular-nums;}
.fr-adopt-figures b{font-size:var(--gup-fs-kpi);color:var(--gup-color-text-primary);}
.fr-adopt-k{font-size:var(--gup-fs-sm);color:var(--gup-color-text-secondary);}
.fr-adopt-arrow{color:var(--gup-color-text-secondary);}
.fr-adopt-delta{font-size:var(--gup-fs-sm);color:var(--gup-color-text-secondary);}
.fr-adopt-state{margin:0;font-size:var(--gup-fs-sm);}
.fr-adopt-state--dirty{color:var(--gup-color-warning);}
.fr-adopt-state--synced{color:var(--gup-color-text-secondary);}
.fr-adopt-warn{margin:0;font-size:var(--gup-fs-sm);color:var(--gup-color-warning);}
.fr-adopt-actions{display:flex;justify-content:flex-end;margin-top:var(--gup-sp-3);}
.fr-effect{font-size:var(--gup-fs-sm);color:var(--gup-color-text-secondary);display:flex;gap:var(--gup-sp-3);flex-wrap:wrap;}
/* Phase 2 P1：効果見込みが **未設定** のときだけ、案内であることが分かるようにする。
   明示的な 0（0 と決めてある）は通常の文字のまま。未設定と 0 を見た目でも混同しない。
   色は足さず、既存の選択面 token とマーカーだけを使う（新しい色を作らない）。 */
.fr-effect--unset{align-items:center;background:var(--gup-brand-accent-soft);
  box-shadow:inset 3px 0 0 var(--gup-border-selected);border-radius:var(--gup-radius-sm);
  padding:var(--gup-sp-2) var(--gup-sp-3);}
.fr-effect--unset .fr-effect-t{color:var(--gup-color-text-primary);}
.fr-effect-cta{min-height:var(--gup-control-compact);font-size:var(--gup-fs-sm);
  padding:0 var(--gup-sp-3);border:1px solid var(--gup-color-border);
  border-radius:var(--gup-radius-sm);background:var(--gup-color-surface);cursor:pointer;}
.fr-kpi-slot{font-size:var(--gup-fs-note);color:var(--gup-color-text-secondary);}
.fr-plan-missing,.fr-plan-kept{margin:0;font-size:var(--gup-fs-sm);color:var(--gup-color-text-secondary);padding:0 var(--gup-sp-3);}
.fr-plan-missing{color:var(--gup-color-warning);}

/* KPI-ADOPTION1B: おすすめKPI 表示と ⑤ の主要KPI editor（isolated・1D まで正式画面へ mount しない） */
.gup-kpirec{display:flex;flex-wrap:wrap;align-items:baseline;gap:var(--gup-sp-1) var(--gup-sp-2);font-size:var(--gup-fs-sm);color:var(--gup-color-text-secondary);}
.gup-kpirec__label{font-weight:var(--gup-fw-medium);}
.gup-kpirec__list{display:flex;flex-wrap:wrap;gap:var(--gup-sp-1) var(--gup-sp-3);margin:0;padding:0;list-style:none;}
/* UI-TYPE4：補足は 14px（12px は列見出しの段）。 */
.gup-kpirec__note{font-size:var(--gup-fs-sm);}
.gup-kpied{display:flex;flex-direction:column;gap:var(--gup-sp-1);max-width:100%;}
.gup-kpied__bar{display:flex;align-items:center;gap:var(--gup-sp-2);flex-wrap:wrap;}
.gup-kpied__head{display:flex;align-items:center;justify-content:space-between;gap:var(--gup-sp-3);flex-wrap:wrap;}
.gup-kpied__heading{margin:0;font-size:var(--gup-fs-base);}
.gup-kpied__summary{font-size:var(--gup-fs-sm);font-weight:var(--gup-fw-medium);}
.gup-kpied__value{font-size:var(--gup-fs-sm);font-variant-numeric:tabular-nums;}
/* UI-FRCARD1：標準KPI と効き先は補助。同じ行の右側の空きを使う（改行しない）。 */
.gup-kpied__sub{font-size:var(--gup-fs-sm);color:var(--gup-color-text-secondary);margin-left:auto;
  text-align:right;min-width:0;}
.gup-kpied__label{font-size:var(--gup-fs-sm);color:var(--gup-color-text-secondary);}
.gup-kpied__hint,.gup-kpied__note{margin:0;font-size:var(--gup-fs-sm);color:var(--gup-color-text-secondary);}
.gup-kpied__error,.gup-kpied__warn{margin:0;font-size:var(--gup-fs-sm);white-space:pre-line;}
.gup-kpied__select,.gup-kpied__text{max-width:100%;}
.gup-kpied__num{width:8em;max-width:100%;text-align:right;font-variant-numeric:tabular-nums;}
/* GUP-LEARN-LOOP1：観測時点。値の隣の補助（同じ段・二次色）。 */
.gup-kpied__asof{font-size:var(--gup-fs-sm);color:var(--gup-color-text-secondary);}

/* KPI-ADOPTION1C: 当期の主要KPI summary（表示専用）と editor の保存操作 */
.gup-kpied__actions{display:flex;flex-wrap:wrap;gap:var(--gup-sp-2);margin-top:var(--gup-sp-1);}
.gup-kpisum{display:flex;flex-direction:column;gap:var(--gup-sp-2);}
.gup-kpisum__heading{margin:0;font-size:var(--gup-fs-base);}
.gup-kpisum__list{display:flex;flex-direction:column;gap:var(--gup-sp-2);margin:0;padding:0;list-style:none;}
.gup-kpisum__row{display:flex;flex-wrap:wrap;align-items:baseline;gap:var(--gup-sp-1) var(--gup-sp-3);
  padding:var(--gup-sp-2) var(--gup-sp-3);border-radius:var(--gup-radius-md);background:var(--gup-color-surface-subtle);}
.gup-kpisum__value{font-variant-numeric:tabular-nums;}
.gup-kpisum__scope,.gup-kpisum__target,.gup-kpisum__src,.gup-kpisum__dup,.gup-kpisum__note,
.gup-kpisum__asof{
  font-size:var(--gup-fs-sm);color:var(--gup-color-text-secondary);}
.gup-kpisum__note{margin:0;}

/* CURRENT-AMOUNT-BASIS2A: 入力欄と派生表示を見分けられるようにする（色ではなく面と文字で） */
.muset-derived{color:var(--gup-text-muted);}

/* MU-SETTINGS1: 業務画面は「管理単位を選ぶ」だけ */
.muset-pick{display:flex;align-items:center;gap:var(--gup-sp-2);flex-wrap:wrap;margin-bottom:var(--gup-sp-3);}
/* V2-AB1（Phase A）：項目名は 400。 */
/* V2-AB1（Phase A）：drawer と「データ・設定」の <button class="btn"> は
   これまで CSS を 1 つも持たず、ブラウザ既定（13.33px / #F0F0F0 の面）で出ていた。
   scale の外の文字サイズと neutral 外の面はどちらも契約違反なので、既存 token だけで受け止める。
   ★#t7 の .btn には既に専用の規則があるので、そちらが勝つ（id の詳細度）。 */
button.btn{
  font-family:inherit; font-size:var(--gup-fs-sm);
  font-weight:var(--gup-type-secondary-action-weight);
  color:var(--gup-color-text-primary);
  background:var(--gup-color-surface);
  border:1px solid var(--gup-color-border);
  border-radius:var(--gup-radius-sm);
  min-height:var(--gup-control-compact);
  padding:0 var(--gup-sp-3);
  cursor:pointer;
}
button.btn:hover{ background:var(--gup-color-surface-subtle); }
.muset-pick-lbl{font-weight:var(--gup-type-label-weight);}
.muset-pick-one{color:var(--gup-text-muted);}

/* FIXED-COST-UI-REORG1: 固定費は「金額」と「その中身」を同じ管理単位で入れる。
   金額欄は必要な幅だけにして、余っていた右側を内容欄に回す。 */
.mucur-table th.muset-amt, .mucur-table td.muset-amt{width:9.5em;}
.mucur-table th.muset-notecell, .mucur-table td.muset-notecell{width:auto;}
/* UI-CURRENT-DELROW1：行の ✕ は行末に 1 つ。列としては最小幅で、中央にそろえる。 */
.mucur-table th.muset-delcell, .mucur-table td.muset-delcell{width:1%;white-space:nowrap;text-align:center;}
.muset-note{width:100%;min-width:12em;text-align:left;}

/* VER1-FINAL-UIUX-MERGE-FIX（Founder 指示）：商品・サービス名と数量の単位を drawer で入れる。
   名前が「新設工事…」で切れ、単位 select が潰れていたので、この 2 列に必要な幅を持たせる。
   表は overflow-x:auto の中なので、狭い画面では横スクロールで吸収する（数字を潰さない）。 */
.mucur-table th.muset-pname, .mucur-table td.muset-pname{width:16em;min-width:12em;}
.muset-pnamein{width:100%;min-width:0;text-align:left;}
.mucur-table th.muset-unitcell, .mucur-table td.muset-unitcell{width:6.5em;}
.muset-unitsel{width:100%;min-width:4.5em;}

/* FIXED-COST-UI-REORG1: 全社の固定費表は集計・要約。内容は管理単位別の入力を並べて見せる。 */
.fc-note-ro{color:var(--gup-text-primary);font-size:var(--gup-fs-sm);}
.fc-note-unit{display:block;}
.fc-note-unit b{font-weight:var(--gup-type-body-weight);color:var(--gup-text-muted);margin-right:var(--gup-sp-2);}
.fc-note-legacy b{color:var(--gup-text-disabled);}
.fc-note-empty{color:var(--gup-text-disabled);font-size:var(--gup-fs-sm);}
/* FC-UNIT-VIEW1: 管理単位 × 費目。**囲わずに、余白と文字階層だけでまとまりを作る**
   （面を増やさない。GUP_UI_BASIC「囲う前に、余白・整列・文字階層で表せないかを確かめる」）。
   ① と ③ で同じ見た目にする（列の数だけが画面ごとに違う）。 */
.gup-table tr.fc-unit-group > th,
.gup-table tr.vc-unit-group > th{
  background:var(--gup-color-surface-subtle);
  font-weight:var(--gup-fw-semibold);
  color:var(--gup-color-text-primary);
  border-top:1px solid var(--gup-color-border-strong);
}
.gup-table th.fc-unit-item,
.gup-table th.vc-unit-item{padding-left:calc(var(--gup-table-cell-inline-padding) + var(--gup-sp-4));
  font-weight:var(--gup-font-weight-regular);}
.gup-table tr.fc-unit-sub > th,
.gup-table tr.vc-unit-sub > th{padding-left:calc(var(--gup-table-cell-inline-padding) + var(--gup-sp-4));
  color:var(--gup-color-text-secondary);}
.gup-table tr.fc-unit-sub > th,.gup-table tr.fc-unit-sub > td,
.gup-table tr.vc-unit-sub > th,.gup-table tr.vc-unit-sub > td{border-top:1px solid var(--gup-color-border);}
/* 管理単位の積み上げと全社の合計が合わないときだけ出る行（差額は隠さず明示する） */
.gup-table tr.fc-unit-diff > th,
.gup-table tr.vc-unit-diff > th{color:var(--gup-color-text-secondary);}
/* 管理単位が 3〜4 あると 20〜33 行になり、sticky（max-height:60vh）の内側で
   **合計が画面の外へ出てしまう**（実測）。合計はこの表の結論なので、見出しと同じく貼り付ける。
   ★この表だけに当てる（.fc-unit-scroll で限定）。共通の .gup-scroll--sticky の意味は変えない。 */
.fc-unit-scroll.gup-scroll--sticky .gup-table tfoot th,
.fc-unit-scroll.gup-scroll--sticky .gup-table tfoot td,
.vc-unit-scroll.gup-scroll--sticky .gup-table tfoot th,
.vc-unit-scroll.gup-scroll--sticky .gup-table tfoot td{
  position:sticky; bottom:0;
  z-index:var(--gup-z-sticky);
  background:var(--gup-color-surface-subtle);   /* 不透明にして本文が透けないようにする */
  box-shadow:0 -1px 0 var(--gup-color-border-strong);
}
/* UIUX-A-CRITICAL1（A-3）: 以前の実行計画メモの読み取り専用表示 */
.mxnew-legacy-read summary{cursor:pointer;font-size:var(--gup-fs-base);color:var(--gup-text-secondary);}
.mxnew-read-cell{margin:var(--gup-sp-2) 0;}
.mxnew-read-label{font-size:var(--gup-fs-sm);color:var(--gup-text-muted);}
.mxnew-read-text{white-space:pre-wrap;font-size:var(--gup-fs-base);color:var(--gup-text-primary);}
/* UIUX-B-CLEANUP1（B-10）: 表示フィルタと「実績の確定」を視覚的に分離する枠 */
.mp-confirm-group{display:inline-flex;align-items:center;gap:var(--gup-sp-2);
  padding:var(--gup-sp-1) var(--gup-sp-2);border:1px solid var(--gup-border-strong);
  border-radius:var(--gup-radius-sm);background:var(--gup-surface-2,transparent);}
.mp-confirm-lbl{font-size:var(--gup-fs-sm);color:var(--gup-text-muted);}
.mp-confirm-item{display:inline-flex;align-items:center;gap:var(--gup-sp-1);font-size:var(--gup-fs-sm);}
/* UIUX-C-POLISH1（C-7）: 使い方ガイドの下位項目（① の中の画面）を 1 段下げて見せる。
   共通 CSS は id を selector に使わない契約（S1f #144）なので class だけで書く。 */
.ug-sub{padding-left:var(--gup-sp-4);font-size:var(--gup-fs-sm);}
/* UIUX-INDEPENDENT-AUDIT2-B-INPUT1（B-1）: 保存を止める理由と、止めない差額の情報を見分けられるようにする。
   色だけに頼らないよう、左の線＋見出しの太字で「これは直さないと保存できない」ことを示す。 */
.mup-blocked{border-left:3px solid var(--gup-color-negative);padding-left:var(--gup-sp-3);}
.muset-gaps{margin:var(--gup-sp-1) 0 0;padding-left:var(--gup-sp-4);font-size:var(--gup-fs-sm);}
.muset-gaps li{margin:0;}
.mup-nearsave{margin-top:var(--gup-sp-2);}

/* VER1-FINAL-UIUX-MERGE-FIX（Founder 相談）：新規作成の決算期は 年 select ＋ 月 select。
   自由記載をやめ「YYYY年M月期」以外を構造的に作れなくする（保存する文字列の形は不変）。 */
.newrec-period{ display:inline-flex; align-items:center; gap:var(--gup-sp-1); flex-wrap:wrap; }
.newrec-period select{ min-width:5.5em; }
.newrec-period-u{ color:var(--gup-color-text-secondary); }
.newrec-period-out{ margin-left:var(--gup-sp-2); font-weight:var(--gup-fw-semibold); color:var(--gup-text-primary); }

/* UI-FIXED-COST-CROSSVIEW1：費目 × 管理単位（転置ビュー）。
   ★列は管理単位の数だけ増える。潰さずに、足りなければ表だけ横へスクロールさせる（§9）。
   ★内訳は極端に細くしない。
   ★全社の列に太字を足していない。.gup-table td.num が既に太字なので、足しても 1px も変わらない
     （実際に no-op の規則を書いてしまい、反証で見つかった）。合計行の強調は .gup-total が持つ。 */
.fc-item-table,
.vc-item-table{min-width:100%;width:auto;}
.fc-item-table th,.fc-item-table td,
.vc-item-table th,.vc-item-table td{white-space:nowrap;}
.fc-item-table th[scope="col"].num{min-width:88px;}
.fc-item-table th[scope="row"]{min-width:120px;}
.fc-item-table .fc-note-ro{white-space:normal;min-width:200px;}

/* P2-D（GUP-FUTURE70-PHASE2-P2-SEMANTICS2）— ③ の「現状 → 目標」の 3 状態。
   A のときだけ 1 レバー到達率を出し、押すと ① の目標逆算へ移る（詳細入口）。 */
.plan-tgap{margin:0 0 var(--gup-sp-4);}
.tgap-note{font-size:var(--gup-fs-sm);color:var(--gup-color-text-secondary);
  padding:var(--gup-sp-2) var(--gup-sp-3);border-radius:var(--gup-radius-sm);
  background:var(--gup-color-surface-subtle);}
.tgap-lead{font-size:var(--gup-fs-sm);color:var(--gup-color-text-secondary);
  margin:0 0 var(--gup-sp-2);}
.tgap-lv{display:flex;gap:var(--gup-sp-2);flex-wrap:wrap;}
.tgap-card{min-height:var(--gup-control-standard);text-align:left;font-family:inherit;font-size:var(--gup-fs-sm);
  padding:var(--gup-sp-2) var(--gup-sp-3);border:1px solid var(--gup-color-border);
  border-radius:var(--gup-radius-sm);background:var(--gup-color-surface);cursor:pointer;}
.tgap-card[disabled]{opacity:.55;cursor:default;}
.tgap-card:hover:not([disabled]){background:var(--gup-color-surface-subtle);}
.tgap-card .tgap-n{display:block;font-size:var(--gup-fs-sm);color:var(--gup-color-text-secondary);}
/* 率はカードの主役だが、大きさ（fs-lg と fs-sm）で階層が付いているので太字にしない
   （UI-TYPE1：太字は階層を示すためだけに使う。ここは装飾になる）。 */
.tgap-card .tgap-r{display:block;font-size:var(--gup-fs-lg);}
.sensm-seed{font-size:var(--gup-fs-sm);color:var(--gup-color-text-secondary);
  margin:0 0 var(--gup-sp-3);padding:var(--gup-sp-2) var(--gup-sp-3);
  border-left:3px solid var(--gup-border-selected);background:var(--gup-color-surface-subtle);
  border-radius:var(--gup-radius-sm);}

/* Phase GUP-FUTURE70-PHASE2-P3 — 中核往復（計画策定 ⇄ 戦略策定）
   ④ の「あといくら」の帯（#mxGapBar）と、③ の戦略策定への入口（#planBridgeRow）。
   ★display:flex は UA の [hidden] に勝つので、両方に [hidden]{display:none} を置く
     （PLAN-ROUTE1A・OPQR-MU-PRODUCT1 で 3 回踏んだ穴。詳細度だけで解決し、上書き指定は使わない）。 */
.mx-gapbar{display:flex;flex-wrap:wrap;align-items:center;gap:var(--gup-sp-3);
  margin:0 0 var(--gup-sp-4);padding:var(--gup-sp-2) var(--gup-sp-3);
  border-radius:var(--gup-radius-sm);background:var(--gup-color-surface-subtle);}
.mx-gapbar[hidden]{display:none;}
/* UX-FLOW1：② 戦略方針 → ④ の受け渡し面。選択中（中心に考える方針）は選択面＋ゴールド枠（主要操作の塗りにしない）。 */
.mx-polbridge{display:flex;flex-direction:column;gap:var(--gup-sp-2);margin:0 0 var(--gup-sp-3);
  padding:var(--gup-sp-2) var(--gup-sp-3);border:1px solid var(--gup-color-border);border-radius:var(--gup-radius-md);
  background:var(--gup-color-surface);}
.mx-polbridge[hidden]{display:none;}
/* GUP-SIMPLIFY1（SP-32）：文脈でしかない subtab では 1 行に畳む。
   ★見出しの b と同じ大きさのまま行の高さだけ下げる（文字は小さくしない）。 */
.mx-polbridge.is-folded{padding:var(--gup-sp-1) var(--gup-sp-3);}
.mxp-fold{display:flex;align-items:baseline;gap:var(--gup-sp-2);width:100%;
  min-height:var(--gup-control-compact);padding:0;border:0;background:none;color:inherit;
  font:inherit;text-align:left;cursor:pointer;}
.mxp-fold > b{font-size:var(--gup-fs-md);font-weight:var(--gup-font-weight-bold);}
.mxp-fold--open{width:auto;min-height:0;}
.mxp-fold-c{margin-left:auto;font-size:var(--gup-fs-sm);color:var(--gup-color-text-secondary);}
.mxp-fold--open .mxp-fold-c{margin-left:var(--gup-sp-2);}
.mxp-h{display:flex;flex-wrap:wrap;align-items:baseline;gap:var(--gup-sp-2);}
.mxp-h > b{font-size:var(--gup-fs-md);font-weight:var(--gup-font-weight-bold);}
.mxp-n{font-size:var(--gup-fs-sm);color:var(--gup-color-text-secondary);}
.mxp-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:var(--gup-sp-2);}
.mxp-card{display:flex;flex-direction:column;gap:var(--gup-sp-1);min-width:0;padding:var(--gup-sp-2) var(--gup-sp-3);
  border:1px solid var(--gup-color-border);border-radius:var(--gup-radius-sm);background:var(--gup-color-surface);}
.mxp-card.is-on{border-color:var(--gup-border-selected);background:var(--gup-surface-selected);}
.mxp-top{display:flex;align-items:center;gap:var(--gup-sp-2);}
.mxp-status{margin-left:auto;font-size:var(--gup-fs-note);color:var(--gup-color-text-secondary);
  padding:0 var(--gup-sp-1);border:1px solid var(--gup-color-border);border-radius:var(--gup-radius-pill);}
.mxp-title{margin:0;font-size:var(--gup-fs-base);font-weight:var(--gup-font-weight-bold);line-height:var(--gup-lh-heading);overflow-wrap:anywhere;}
.mxp-hyp{margin:0;font-size:var(--gup-fs-sm);line-height:var(--gup-lh-compact);overflow-wrap:anywhere;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;}
.mxp-kv{margin:0;display:grid;grid-template-columns:minmax(84px,auto) minmax(0,1fr);gap:var(--gup-sp-1) var(--gup-sp-2);font-size:var(--gup-fs-sm);}
.mxp-kv > dt{color:var(--gup-color-text-secondary);}
.mxp-kv > dd{margin:0;min-width:0;overflow-wrap:anywhere;display:flex;flex-wrap:wrap;gap:var(--gup-sp-1);}
.mxp-fact{font-size:var(--gup-fs-xs);padding:0 var(--gup-sp-1);border:1px solid var(--gup-color-border);
  border-radius:var(--gup-radius-sm);background:var(--gup-color-surface-subtle);}
.mxp-fact.is-missing{text-decoration:line-through;color:var(--gup-color-text-secondary);}
.mxp-fact--more,.mxp-none{color:var(--gup-color-text-secondary);}
.mxp-pick{align-self:flex-start;margin-top:auto;}
.mxp-pick[aria-pressed="true"]{border-color:var(--gup-border-selected);background:var(--gup-surface-selected);font-weight:var(--gup-type-selected-weight);}
.mxp-next{display:flex;flex-wrap:wrap;align-items:center;gap:var(--gup-sp-2);padding-top:var(--gup-sp-1);border-top:1px solid var(--gup-color-border);}
.mxp-next-k{font-size:var(--gup-fs-sm);color:var(--gup-color-text-secondary);}
.mxp-note{font-size:var(--gup-fs-note);color:var(--gup-color-text-secondary);flex:1 1 240px;}
/* GUP-UX-WORLDCLASS1 Phase 3（UX-36）：④ の入口の「具体策のいま」（候補・採用の件数と採用した具体策の名前）。表示だけ。 */
.mxp-now{display:flex;flex-wrap:wrap;align-items:center;gap:var(--gup-sp-1) var(--gup-sp-3);padding-top:var(--gup-sp-1);border-top:1px solid var(--gup-color-border);font-size:var(--gup-fs-sm);}
.mxp-now-k{color:var(--gup-color-text-secondary);}
.mxp-now-list{display:flex;flex-wrap:wrap;gap:var(--gup-sp-1) var(--gup-sp-2);min-width:0;}
.mxp-now-list > b{font-weight:var(--gup-font-weight-bold);overflow-wrap:anywhere;}
.mxp-now > .gup-btn{margin-left:auto;}
.mxp-chips{display:flex;flex-wrap:wrap;gap:var(--gup-sp-1);}
.mxp-chip{display:inline-flex;align-items:center;gap:var(--gup-sp-1);min-height:var(--gup-control-compact);padding:0 var(--gup-sp-2);
  border:1px solid var(--gup-color-border);border-radius:var(--gup-radius-sm);background:var(--gup-color-surface);
  color:var(--gup-color-text-primary);font-family:inherit;font-size:var(--gup-fs-sm);cursor:pointer;}
.mxp-chip.is-on{border-color:var(--gup-border-selected);background:var(--gup-surface-selected);font-weight:var(--gup-type-selected-weight);}
.mxp-chip-t{overflow-wrap:anywhere;}
/* GUP-SIMPLIFY1（SP-42）で狭い画面の row-gap を詰めようとしたが、
   この file の狭い画面用の block は **この宣言より前**にあるので、
   同じ詳細度では後ろのこの規則が勝って効かない（実測で 0px しか動かなかった）。
   幅ごとの調整は、画面固有の CSS（capital.css の 719px block）で行う。 */
.mxg-figs{display:flex;flex-wrap:wrap;align-items:baseline;gap:var(--gup-sp-3);flex:1 1 auto;}

.mxg-side{display:flex;align-items:center;gap:var(--gup-sp-2);flex-wrap:wrap;}
.mxg-f{display:inline-flex;align-items:baseline;gap:var(--gup-sp-1);}
.mxg-k{font-size:var(--gup-fs-sm);color:var(--gup-color-text-secondary);}
/* 数字は表と同じ読み方（右揃えの表ではないので tabular-nums だけ揃える）。 */
.mxg-v{font-size:var(--gup-fs-lg);font-variant-numeric:tabular-nums;}
/* この帯の答えは「残り」なので、そこだけ階層として太字にする（UI-TYPE1：装飾では使わない）。 */
.mxg-f--main .mxg-v{font-weight:var(--gup-font-weight-bold);}
.mxg-u,.mxg-from,.mxg-lever,.mxg-note{font-size:var(--gup-fs-sm);
  color:var(--gup-color-text-secondary);}
.plan-bridge{display:flex;margin:0 0 var(--gup-sp-4);}
.plan-bridge[hidden]{display:none;}
/* P3 §7：preview と ⑤ の「目標へ届くのか」の 1 行。数字は本文と同じ大きさで、階層は作らない。 */
.spv-goal{font-size:var(--gup-fs-sm);color:var(--gup-color-text-secondary);
  margin:var(--gup-sp-2) 0 0;}
.fr-adopt-goal{font-size:var(--gup-fs-sm);color:var(--gup-color-text-secondary);margin:0;}

/* ===== 比較帯（comparison band）=====
   正本 docs/DESIGN.md §9.3。GUP-HOME-PREP1 Gate B で canonical 化した。
   「同じ 1 つのことを、複数の基準と並べて見せ、それが何を意味するかを 1 文で言う」帯。
   ⑤ 予実管理の 3 つの G が最初の利用者。画面固有の名前を持たない（HOME も同じ形を使う）。
   ★[hidden] は display 指定に負けるので、必ず打ち消す規則を置く。 */
.gup-compare-band{display:flex;flex-wrap:wrap;align-items:baseline;
  gap:var(--gup-sp-3) var(--gup-sp-4);margin:var(--gup-sp-4) 0 0;
  padding:var(--gup-sp-3);border-radius:var(--gup-radius-sm);
  background:var(--gup-color-surface-subtle);}
.gup-compare-band[hidden]{display:none;}
.gup-compare-band__row{display:flex;flex-wrap:wrap;align-items:baseline;
  gap:var(--gup-sp-4);flex:1 1 100%;}
.gup-compare-band__item{display:inline-flex;align-items:baseline;gap:var(--gup-sp-1);}
.gup-compare-band__label{font-size:var(--gup-fs-sm);color:var(--gup-color-text-secondary);}
.gup-compare-band__value{font-size:var(--gup-fs-xl);font-variant-numeric:tabular-nums;}
/* 答えにあたる 1 つだけを階層として太字にする（装飾ではない）。 */
.gup-compare-band__item--highlight .gup-compare-band__value{font-weight:var(--gup-font-weight-bold);}
/* 単位は帯に 1 回だけ（UI-UNIT1：金額の単位は画面に 1 か所）。 */
.gup-compare-band__unit{font-size:var(--gup-fs-sm);color:var(--gup-color-text-secondary);}
.gup-compare-band__summary{margin:0;font-size:var(--gup-fs-base);flex:1 1 auto;}
.gup-compare-band__note{margin-left:var(--gup-sp-2);font-size:var(--gup-fs-sm);
  color:var(--gup-color-text-secondary);}
.gup-compare-band__action{display:flex;align-items:center;gap:var(--gup-sp-2);}

/* --------------------------------------------------------------------------
   IA5 Gate B: ③ 全体 の中の「現状から計画への変化」
   旧 ⑤ Gup検証「この年度の計画を検証」を移した section。
   ★中身のカードは 1 文字も変えていないので、ここは見出しと上の余白だけ。
     新しい色も新しい font-size も作らない（既存 token だけ）。
   -------------------------------------------------------------------------- */
.ia5-origin{ margin-top:var(--gup-sp-5); }
.ia5-origin__head{
  margin:0 0 var(--gup-sp-2);
  font-size:var(--gup-fs-lg); font-weight:var(--gup-fw-semibold);
  line-height:var(--gup-lh-heading); color:var(--gup-color-text-primary);
}

/* --------------------------------------------------------------------------
   IA5 Gate C: 同じ対象の Current と Plan を「一組」に見せる
     .ph-state … いまどちらの状態を見ているかの **ラベル**。押せない（button ではない）。
     .ph-cross … 対になる画面へ **移動するだけ**のリンク。write 0。
   ★編集面は 1 つも統合していない。正本も編集権限も別のまま。
   ★新しい色は作らない（既存 token だけ）。主要操作の solid にはしない。
   -------------------------------------------------------------------------- */
.panel-head .ph-state{
  flex:none; padding:0 var(--gup-sp-2);
  font-size:var(--gup-fs-sm); font-weight:var(--gup-fw-normal);
  color:var(--gup-color-text-secondary);
  background:var(--gup-color-surface-subtle);
  border:1px solid var(--gup-color-border); border-radius:var(--gup-radius-pill);
}
.panel-head .ph-cross{
  margin-left:auto; flex:none; cursor:pointer;
  min-height:var(--gup-control-compact); padding:0 var(--gup-sp-3);
  font-family:inherit; font-size:var(--gup-fs-base);
  color:var(--gup-color-accent); background:var(--gup-color-surface);
  border:1px solid var(--gup-color-border); border-radius:var(--gup-radius-pill);
}
.panel-head .ph-cross:hover{ border-color:var(--gup-color-accent); }
/* ph-help が同じ行にあるときは、リンクの右に置く（右端は従来どおり ? のまま） */
.panel-head .ph-cross + .ph-help{ margin-left:var(--gup-sp-2); }

/* IA5 Gate B-POLISH：③ 全体「現状から計画への変化」の補助指標（F/M比率）。
   カード列ではなく 1 行。良し悪しの色（.good / .bad）は従来どおり。 */
.outcome-fm{
  display:flex; align-items:baseline; gap:var(--gup-sp-2);
  margin:0 0 var(--gup-sp-3);
  font-size:var(--gup-fs-sm); color:var(--gup-color-text-secondary);
}
.outcome-fm .l, .outcome-fm .d{ flex:none; white-space:nowrap; }
.outcome-fm .v{ font-size:var(--gup-fs-base); color:var(--gup-color-text-primary);
  font-variant-numeric:tabular-nums; }
.outcome-fm.good .v{ color:var(--gup-color-positive); }
.outcome-fm.bad .v{ color:var(--gup-color-negative); }

/* ===== GUP-HIGH-DENSITY-UI1 Gate 4: ①〜⑤ を HOME と同じ計器盤へ =====
     正本は Gate 3B で Founder が実画面で承認した見た目（gate/high-density-ui1/GATE3B.md）。
     ここは **その共通言語だけ**を置く場所で、画面ごとの compact CSS は作らない。

   ★守っていること
     ・font-size を生の px で書かない（token を経由する。DESIGN.md §5.1 の density scale も token）
     ・触れる部品の高さを縮めない（40px / 34px の契約に触れない）
     ・semantic color（--mg-* の左マーカー）を 1 つも変えない
     ・メディアクエリを増やさない（既存 42 のまま。列は auto-fit と flex-wrap で吸収する）
     ・!important は、既存の画面固有 CSS を上書きする必要がある所だけ
     ・画面固有 id（#t1panel-* 等）や :nth-child 等の構造 selector を持たない
       （GUP-HIGH-DENSITY-UI1 ALL VIEWS の Key4 固有 CSS は layout.css へ置く。§末尾コメント参照）

   ★連結順は manifest の最後。tokens → … → fpa の後に来るので、
     画面固有 CSS（home / fpa）より後に読まれる。 */

/* ---------------------------------------------------------------------------
   SHELL — 帯の作り
     C-1 画面名の帯を 1 本に畳む／案内の帯を常設しない
     C-5 面の入れ子を 2 層まで
   --------------------------------------------------------------------------- */

/* 案内の帯は常設しない（Founder 決定）。中身は既存の ? ／ 使い方 にある。
   ★DOM は残す。閉じる状態を保存する新しい仕組みも作らない。 */
.step-hint{ display:none !important; }

/* 画面名の帯。1 行 26px を基本にし、入らなければ折り返す。
   ★画面の問いを「…」で省略しない（Founder §9：主要 label clipping 0）。
     基準幅を 30ch にすると、狭いときは右側の要素の方が次の行へ落ちるので、
     問いは 1 行のまま最後まで読める。
   ★GUP-HIGH-DENSITY-UI1（ALL VIEWS）：Key4 の NO-SCROLL に数px 足りず、①9画面すべてが
     共有するこの帯をさらに詰めて閉じた（28px/sp-2 → 26px/4px。全画面で下方向にのみ効く）。 */
.panel-head{
  display:flex; align-items:center; flex-wrap:wrap;
  gap:var(--gup-sp-3); row-gap:var(--gup-sp-1);
  min-height:26px; margin:0 0 var(--gup-sp-1); padding:0;
}
.panel-head .ph-name,
.panel-head .ph-state,
.panel-head .ph-cross{ flex:none; }
.panel-head .ph-purpose{ flex:1 1 30ch; min-width:0; }

/* 年度コンテキスト（対象年度・対象期間・計画の起点・単位）。
   ★ここは 6〜8 のサブ画面が共有する 1 か所なので、特定の画面の見出しへ入れ子にしない。
     帯としての高さだけを詰め、面と余白を持たせない。 */
.t1-year-context{
  margin:0 0 var(--gup-sp-1); padding:0;
  border:0; background:none;
  font-size:var(--gup-fs-note);
  row-gap:var(--gup-sp-1);
}
.t1-year-context .yc-item{ white-space:nowrap; }

/* 面の入れ子を 2 層まで。カードの中のカードは面を持たない。 */
main .card{ padding:var(--gup-sp-3); margin-bottom:var(--gup-sp-3); }
main .card > h2,
main .card > h3{ margin:0 0 var(--gup-sp-2); }
main .card .card{
  background:none; border:0; box-shadow:none; border-radius:0;
  padding:0; margin:0 0 var(--gup-sp-3);
}
[data-gupsubpanel]{ padding-top:0; }

/* ---------------------------------------------------------------------------
   RAIL — KPI は縦積みカードではなく横一本（HOME の文法）
     共通部品（.gup-summary__grid / .gup-kpi）を 1 か所だけ直す。
   --------------------------------------------------------------------------- */

/* 列数を固定しない。auto-fit なら 1440 では 6〜7 枚が 1 行に収まり、
   狭いときは自動で 2 列へ落ちる（**メディアクエリは要らない**）。 */
.gup-summary__grid{
  grid-template-columns:repeat(auto-fit, minmax(min(100%, 150px), 1fr));
  gap:0;
}
.gup-kpi{
  background:none; border-radius:0;
  padding:var(--gup-sp-1) var(--gup-sp-3); gap:var(--gup-sp-1);
}
/* 区切りは面ではなく 1px の線。左端の semantic marker（--mg-*）はそのまま。 */
.gup-kpi + .gup-kpi{ box-shadow:inset 1px 0 0 var(--gup-color-border); }
.gup-summary{ gap:var(--gup-sp-1); }

/* ★ヘッダのミニ KPI と **同じ指標・同じ値**を出している本文 KPI。
     どちらか 1 か所にする（Founder 決定：Header ＝ 共通現在地 ／ Screen ＝ 固有の判断材料）。
     判定は描画側が付ける class で、文字列の突き合わせはしない。
   ★既定は「出さない」。ヘッダのミニ KPI を隠す狭い画面でだけ本文へ戻す
     （その規則は shared-ui.css の既存のメディアクエリ（max-width:719px） に置いた）。
     こうすると **新しいメディアクエリを 1 つも増やさずに**、狭い画面での唯一の置き場を守れる。 */
.gup-kpi--headerdup{ display:none; }

/* 重複を外すと本文 KPI は 1〜2 枚になる。1 枚を帯いっぱいへ引き伸ばさない。 */
.gup-band .gup-summary__grid{
  grid-template-columns:repeat(auto-fit, minmax(150px, 220px));
}
.gup-band .gup-summary-card{ width:-moz-fit-content; width:fit-content; max-width:100%; }

/* ---------------------------------------------------------------------------
   BAND — 全幅カードの縦積みを、主判断と根拠の 2 カラムへ
     ★比率は class で持つ（inline style も :nth-child も使わない）。
     ★340px を割ると自動で縦積みへ落ちる（**メディアクエリ不要**）。
   --------------------------------------------------------------------------- */
.gup-band{
  display:flex; flex-wrap:wrap; align-items:flex-start;
  gap:var(--gup-sp-4); margin-bottom:var(--gup-sp-3);
}
/* 比率は class で持つ。**ローカルな custom property を作らない**
   （色・寸法の token は :root と配色ブロックだけが定義する：UI-SYSTEM1-1A）。
   340px の基準幅を割ると自動で縦積みへ落ちるので、幅の分岐は要らない。 */
.gup-band--36 .gup-band__col--main{ flex:36 1 min(100%, 340px); }
.gup-band--36 .gup-band__col--side{ flex:64 1 min(100%, 340px); }
.gup-band--42 .gup-band__col--main{ flex:42 1 min(100%, 340px); }
.gup-band--42 .gup-band__col--side{ flex:58 1 min(100%, 340px); }
.gup-band--52 .gup-band__col--main{ flex:52 1 min(100%, 340px); }
.gup-band--52 .gup-band__col--side{ flex:48 1 min(100%, 340px); }
.gup-band__col{ min-width:0; }
/* ★中身が全部 hidden の列は畳む。片方だけのときに主列を痩せさせない
   （① の「動かしてみる」は商品が無いと hidden のまま）。 */
.gup-band__col:not(:has(> :not([hidden]))){ display:none; }
.gup-band__col--main,
.gup-band__col--side{ flex:50 1 min(100%, 340px); }
.gup-band__col > *{ margin-bottom:var(--gup-sp-3); }
.gup-band__col > :last-child{ margin-bottom:0; }
.gup-band .banner{ padding:var(--gup-sp-3); }
.gup-band .banner-grid{ flex-wrap:wrap; gap:var(--gup-sp-2) var(--gup-sp-4); }

/* 表は行の高さと数字を落とさず、左右の余白だけ詰める。
   ★見出しが短い表（管理単位／PQ／VQ…）にだけ当たる。長い見出しを持つ盤は
     そもそも帯へ入れない（④ 代償戦略200 を全幅のままにした理由）。 */
.gup-band table th,
.gup-band table td{ padding-left:var(--gup-sp-2); padding-right:var(--gup-sp-2); }
.gup-band table{ min-width:0; }


/* ① の「動かしてみる」の P・V・Q は 3 つで 1 組。帯の中でも 3 列のまま横に並べる
   （2 列 ＋ 1 列に折り返すと、同じ組が 2 段に割れて縦が 149px 伸びる：実測）。 */
.cp-levers{ grid-template-columns:repeat(3, minmax(0, 1fr)); }

/* ---------------------------------------------------------------------------
   CAP SCROLL — 明細は page ではなく中をスクロールする
     ★縦だけ。overflow を両軸へ当てると狭い画面で横スクロールが生まれ、
       中身が器の外へ出る（実測で踏んだ）。横は元の指定のままにする。
   --------------------------------------------------------------------------- */
.gup-capscroll{ overflow-y:auto; }
.gup-capscroll--sm{ max-height:260px; }
.gup-capscroll--md{ max-height:340px; }
.gup-capscroll--lg{ max-height:560px; }

/* GUP-HIGH-DENSITY-UI1 ALL VIEWS — Key4（① 会社盤／FMG分析／OPQR分析／運転資金）の
   画面固有 CSS は、この共通層ではなく styles/layout.css に置いた
   （#B07：共通層は画面固有 id を名指ししない。既存の .cf-grid / .fmg-th-row / .opqr-*
   等が既に layout.css / components.css にあり、Key4 の追加もその隣が正しい置き場）。
   正本は gate/high-density-ui1/FOUNDER_VISUAL_GATE.md。 */

/* ===== PHASE T5-6B ─ ② 事業分析 の 6-view =====================================
   正本 gate/t5-6a-business-analysis-ui（Founder Visual Gate 承認済み）

   ★共通層（shared-ui / cockpit）の作法をそのまま使う。
     色・余白・角丸・寸法は semantic token だけ（生の hex / font-size を作らない）。
   ★この file の selector は ② の中だけに当たる（`.ba-*` と `#t5` scope）。
     画面固有 class（.card 等）を無 scope で再定義しない。
   ★面の入れ子は 2 層まで（帯 → カード）。カードの中でさらに囲わない。
   ========================================================================== */

.ba-chip{display:inline-flex;align-items:center;gap:var(--gup-sp-1);border-radius:var(--gup-radius-sm);
  padding:2px var(--gup-sp-2);font-size:var(--gup-fs-sm);font-weight:var(--gup-font-weight-bold);
  border:1px solid var(--gup-border-strong);background:var(--gup-surface-primary)}
.ba-chip i{width:8px;height:8px;border-radius:50%;background:var(--ui-g)}
.ba-chip--cand{border-style:dashed;font-weight:var(--gup-font-weight-regular);
  color:var(--gup-text-secondary)}
.ba-chip--cand i{background:var(--gup-cg)}
.ba-chip--none{border-style:dashed;font-weight:var(--gup-font-weight-regular);
  color:var(--gup-text-secondary)}
.ba-chip--none i{display:none}

/* ---- view 本体 ---- */
.ba-view{display:flex;flex-direction:column;min-height:0}
.ba-view[hidden]{display:none !important}
.ba-ask{display:flex;flex-wrap:wrap;align-items:flex-start;gap:var(--gup-sp-3);margin-bottom:var(--gup-sp-2)}
.ba-ask-l{flex:1 1 420px;min-width:0}
.ba-q{font-size:var(--gup-fs-sm);color:var(--gup-text-secondary);margin-bottom:2px}
.ba-a{font-size:var(--gup-fs-lg);font-weight:var(--gup-font-weight-bold);line-height:1.4}
.ba-a em{font-style:normal;color:var(--gup-brand-accent)}
.ba-ask-r{flex:none;display:flex;gap:var(--gup-sp-2);flex-wrap:wrap}
/* UX-MODE1：display:flex は UA の [hidden] に勝つ。EDIT 中に隠す帯（問い・次の画面への導線）は詳細度で閉じる。 */
.ba-ask[hidden],.ba-next[hidden]{display:none}
/* SAMPLE32-COMPLETION-APPLY1（Founder 指摘）：② 業界の EDIT 中に読む面（市場スナップショット・2 列）が残っていた。
   .ba-card / .bi-cols の display:flex が UA の [hidden] に勝っていたので、同じ形で詳細度で閉じる
   （READ と EDIT を同じ画面に重ねない。閉じれば読む面は戻る）。 */
.ba-card[hidden],.bi-cols[hidden]{display:none}
.ba-badge{min-width:104px;border:1px solid var(--gup-border-default);
  border-radius:var(--gup-radius-sm);background:var(--gup-surface-secondary);
  padding:var(--gup-sp-1) var(--gup-sp-2)}
.ba-badge .k{font-size:var(--gup-fs-note);color:var(--gup-text-secondary);white-space:nowrap}
.ba-badge .v{font-size:var(--gup-fs-lg);font-weight:var(--gup-font-weight-bold);line-height:1.2;
  font-variant-numeric:tabular-nums}
.ba-badge .v small{font-size:var(--gup-fs-sm);font-weight:var(--gup-font-weight-regular)}
.ba-badge .d{font-size:var(--gup-fs-note);color:var(--gup-text-secondary);
  font-variant-numeric:tabular-nums}

/* ★UI-CURRENT1A と同じ作法：ブレークポイントを増やさず flex の折返しで吸収する。
   広い画面＝主 instrument ＋ 356px の rail ／ 狭い画面＝縦積み。 */
.ba-body{display:flex;flex-wrap:wrap;gap:var(--gup-sp-3);align-items:stretch;min-height:0}
.ba-main{flex:1 1 520px;min-width:0}
.ba-rail{flex:0 1 356px;min-width:288px}
.ba-main,.ba-rail{display:flex;flex-direction:column;gap:var(--gup-sp-2);min-height:0}
.ba-card{margin:0;padding:var(--gup-sp-2) var(--gup-sp-3);display:flex;flex-direction:column;min-height:0}
.ba-card--grow{flex:1;min-height:0}
.ba-ch{flex:none;display:flex;align-items:baseline;gap:var(--gup-sp-2);margin-bottom:var(--gup-sp-2)}
.ba-ch h3{font-size:var(--gup-fs-md);font-weight:var(--gup-font-weight-bold);margin:0}
.ba-ch .ba-sub{font-size:var(--gup-fs-note);color:var(--gup-text-secondary)}
.ba-ch .ba-right{margin-left:auto;font-size:var(--gup-fs-note);color:var(--gup-text-secondary)}
.ba-ch .ba-edit{margin-left:auto}
.ba-ch .ba-right + .ba-edit{margin-left:var(--gup-sp-2)}
.ba-scroll{overflow-y:auto;overflow-x:auto;min-height:0;flex:1}

.ba-next{flex:none;display:flex;flex-wrap:wrap;align-items:center;gap:var(--gup-sp-2);
  margin-top:var(--gup-sp-2);
  border:1px solid var(--gup-border-default);border-left:3px solid var(--gup-brand-accent);
  border-radius:var(--gup-radius-sm);background:var(--gup-surface-secondary);
  padding:var(--gup-sp-1) var(--gup-sp-3)}
.ba-next-k{font-size:var(--gup-fs-note);color:var(--gup-text-secondary);white-space:nowrap}
.ba-next-t{font-size:var(--gup-fs-sm)}
.ba-next .ba-go{margin-left:auto;white-space:nowrap}
.ba-go-pair{margin-left:auto;display:flex;gap:var(--gup-sp-2)}
.ba-btnrow{margin-top:var(--gup-sp-2);gap:var(--gup-sp-2)}

/* ---- 中身の部品（prototype の視覚階層をそのまま） ---- */
.ba-lv{display:inline-flex;align-items:center;border-radius:var(--gup-radius-sm);
  padding:0 var(--gup-sp-1);font-size:var(--gup-fs-sm);font-weight:var(--gup-font-weight-bold);
  border:1px solid var(--gup-border-strong)}
.ba-lv--P{color:var(--ui-p)}
.ba-lv--V{color:var(--ui-v)}
.ba-lv--Q{color:var(--ui-q)}
.ba-lv--F{color:var(--ui-f)}
.ba-lv--G{color:var(--ui-g-text)}
.ba-lv--cG,.ba-lv--inventory,.ba-lv--receivable,.ba-lv--payable{color:var(--gup-cg)}

.ba-strength{font-size:var(--gup-fs-note);color:var(--gup-text-secondary);white-space:nowrap}

.ba-meter{width:74px;height:4px;border-radius:var(--gup-radius-sm);background:var(--gup-surface-muted);
  display:inline-block;vertical-align:2px;margin-left:var(--gup-sp-1);overflow:hidden}
.ba-meter i{display:block;height:100%;background:var(--gup-warning)}
.ba-bar{height:7px;border-radius:var(--gup-radius-sm);background:var(--gup-surface-muted);overflow:hidden;display:flex}
.ba-bar i{display:block;height:100%}

.ba-kv{display:flex;justify-content:space-between;gap:var(--gup-sp-2);padding:var(--gup-sp-1) 0;
  border-bottom:1px solid var(--gup-border-default);font-size:var(--gup-fs-sm)}
.ba-kv:last-child{border-bottom:0}
.ba-kv .k{color:var(--gup-text-secondary)}
.ba-kv .v{font-weight:var(--gup-font-weight-bold);font-variant-numeric:tabular-nums;white-space:nowrap}
.ba-note{font-size:var(--gup-fs-sm);color:var(--gup-text-secondary);line-height:1.45}
.ba-note b{color:var(--gup-text-primary);font-weight:var(--gup-font-weight-bold)}
.ba-empty{font-size:var(--gup-fs-sm);color:var(--gup-text-secondary);line-height:1.5}

.ba-f5{display:flex;flex-direction:column;gap:var(--gup-sp-1)}
.ba-f5 .r{display:flex;align-items:center;gap:var(--gup-sp-1);font-size:var(--gup-fs-sm)}
.ba-f5 .r .nm{width:98px;white-space:nowrap;color:var(--gup-text-secondary)}
.ba-f5 .r .lv{width:26px;text-align:right;font-size:var(--gup-fs-note);color:var(--gup-text-secondary)}

.ba-trend{flex:none;border-top:1px solid var(--gup-border-default);
  margin-top:var(--gup-sp-2);padding-top:var(--gup-sp-2);
  display:grid;grid-template-columns:repeat(auto-fit,minmax(112px,1fr));gap:var(--gup-sp-3)}
.ba-trend .k{font-size:var(--gup-fs-note);color:var(--gup-text-secondary)}
.ba-trend .v{font-size:var(--gup-fs-md);font-weight:var(--gup-font-weight-bold);
  font-variant-numeric:tabular-nums;line-height:1.25}
.ba-trend .s{font-size:var(--gup-fs-note);color:var(--gup-text-disabled);
  font-variant-numeric:tabular-nums}
.ba-spark{display:flex;align-items:flex-end;gap:var(--gup-sp-1);height:22px;margin-top:var(--gup-sp-1)}
.ba-spark i{flex:1;border-radius:var(--gup-radius-sm) var(--gup-radius-sm) 0 0;display:block}

.ba-cap{border:1px solid var(--gup-border-default);border-radius:var(--gup-radius-sm);
  padding:var(--gup-sp-1) var(--gup-sp-2);margin-bottom:var(--gup-sp-1);background:var(--gup-surface-secondary)}
.ba-cap:last-child{margin-bottom:0}
.ba-cap .h{display:flex;align-items:baseline;gap:var(--gup-sp-2)}
.ba-cap .h .nm{font-size:var(--gup-fs-base);font-weight:var(--gup-font-weight-bold)}
.ba-cap .h .rep{margin-left:auto;font-size:var(--gup-fs-note);color:var(--gup-text-secondary);
  white-space:nowrap}
.ba-cap .why{font-size:var(--gup-fs-sm);color:var(--gup-text-secondary);line-height:1.4}
.ba-cap .why b{color:var(--gup-text-primary);font-weight:var(--gup-font-weight-bold);
  font-variant-numeric:tabular-nums}
.ba-cap .fx{margin-top:var(--gup-sp-1);display:flex;align-items:center;gap:var(--gup-sp-1);
  font-size:var(--gup-fs-sm);color:var(--gup-text-secondary)}
.ba-cap--gap{border-color:var(--gup-negative)}
.ba-cap--gap .h .nm{color:var(--gup-negative)}

.ba-split{flex:none;border-top:1px solid var(--gup-border-default);
  margin-top:var(--gup-sp-2);padding-top:var(--gup-sp-2)}
.ba-split .lab{display:flex;justify-content:space-between;font-size:var(--gup-fs-note);
  color:var(--gup-text-secondary);margin-bottom:var(--gup-sp-1)}
.ba-split .b2{height:20px;border-radius:var(--gup-radius-sm);display:flex;overflow:hidden}
.ba-split .b2 i{display:flex;align-items:center;justify-content:center;
  font-size:var(--gup-fs-sm);font-weight:var(--gup-font-weight-bold)}


/* ---- ボトルネック：候補と確認済みを見た目で分ける ---- */
.ba-cand-row{display:flex;gap:var(--gup-sp-2);align-items:baseline;padding:2px 0;
  font-size:var(--gup-fs-sm);color:var(--gup-text-secondary)}
.ba-cand-row .src{margin-left:auto;font-size:var(--gup-fs-note);color:var(--gup-text-disabled);
  text-align:right}
.ba-exit{display:flex;flex-direction:column;gap:var(--gup-sp-1);margin-bottom:var(--gup-sp-2)}
.ba-exit .ba-go{justify-content:flex-start;text-align:left}

/* ---- domain editor（読む画面の上に開く。main surface を入力欄にしない）---- */
.ba-editor{margin:0 0 var(--gup-sp-3);padding:var(--gup-sp-2) var(--gup-sp-3);
  background:var(--gup-surface-primary);border:1px solid var(--gup-border-strong);
  border-radius:var(--gup-radius-md)}
.ba-editor:empty{display:none}
/* GUP-UX-WORLDCLASS1 Phase 2：編集面を閉じたあと、空の host（display:none）が panel の先頭に残ると、共通の兄弟間隔
   （.gup-subpanel > * + * の 16px）が次の要素に付いて画面が 16px 下がっていた（実測）。空の host は間隔を作らない。 */
.gup-subpanel.ba-view > .ba-editor:empty + *{margin-top:0}
.ba-editor h3{font-size:var(--gup-fs-md);font-weight:var(--gup-font-weight-bold);margin:0}
/* UX-MODE1：EDIT の共通 shell。[編集対象] … [取消] [保存] を 1 行に置き、長い編集面では内容の中で
   sticky にする（本文を覆わない・入れ子スクロールを作らない）。どの editor でも保存の場所は同じ。 */
/* GUP-UX-WORLDCLASS1 Phase 2（UX-23）：共通ヘッダ（sticky）の直下に留める。高さは ui/analysis-view.js が開くときに 1 度測って --gup-app-header-h へ入れる。 */
.ba-ed-head{display:flex;align-items:baseline;gap:var(--gup-sp-2);flex-wrap:wrap;
  position:sticky;top:var(--gup-app-header-h,0px);z-index:2;background:var(--gup-surface-primary);
  padding:var(--gup-sp-1) 0 var(--gup-sp-2);margin-bottom:var(--gup-sp-2);
  border-bottom:1px solid var(--gup-border-default)}
.ba-editor > .ba-ed-head{margin:-8px -12px var(--gup-sp-2);padding:var(--gup-sp-2) var(--gup-sp-3)}
.ba-ed-head .ba-sub{font-size:var(--gup-fs-note);color:var(--gup-text-secondary)}
.ba-ed-head .ba-ed-btns{margin-left:auto;display:flex;gap:var(--gup-sp-2)}
/* UX-MODE1（UX-21）：内部スクロールをやめ、ページの自然なスクロール 1 本にする。 */
.ba-ed-rows{display:flex;flex-direction:column;gap:var(--gup-sp-1)}
.ba-ed-row{display:grid;gap:var(--gup-sp-1);align-items:center;
  border:1px solid var(--gup-border-default);border-radius:var(--gup-radius-sm);
  padding:var(--gup-sp-1) var(--gup-sp-2);background:var(--gup-surface-secondary)}
/* 編集行はブレークポイント無しで、折返しにより縦積みへ落ちる（狭い画面で欄が潰れない）。
   ★以前は grid の auto-fit だったので **中身に関係なく全列が同じ幅**になり、
     1〜5 を選ぶだけの欄と、長い根拠を書く欄が同じ広さになっていた。
     flex の折返しへ変えて、欄ごとに「必要な広さ」と「伸びやすさ」を持たせる。 */
.ba-ed-row{display:flex;flex-wrap:wrap}
.ba-ed-row > *{flex:1 1 148px;min-width:0}
.ba-ed-row--wide > *{flex:1 1 180px}
/* 役割ごとの幅。数字は「その欄に入る文字数」から決める。 */
.ba-ed-row > .f-num{flex:0 0 88px}         /* 1〜5 を選ぶだけ */
.ba-ed-row > .f-opt{flex:1 1 136px}        /* 決まった選択肢 */
.ba-ed-row > .f-name{flex:0 0 150px}       /* 行の見出し（5 つの力） */
.ba-ed-row > .f-txt{flex:2 1 210px}        /* 短めの自由記述 */
.ba-ed-row > .f-main{flex:3 1 340px}       /* いちばん読ませたい自由記述 */
.ba-ed-row > .f-lev{flex:2 1 300px}        /* レバーの checkbox 群 */
.ba-ed-row > .f-del{flex:0 0 auto}
/* GUP-UX-WORLDCLASS1 Phase 2（UX-21）：1 件の変化を 2 段にする改行（見出し・分類 ／ 説明・根拠）。 */
.ba-ed-row > .f-br{flex:1 1 100%;height:0;margin:0;padding:0}
.ba-ed-row input[type="text"],.ba-ed-row select,.ba-ed-row textarea{width:100%;min-width:0}
.ba-ed-row textarea{resize:vertical;min-height:calc(var(--gup-control-compact) * 1.6)}
.ba-ed-sec{font-size:var(--gup-fs-note);color:var(--gup-text-secondary);
  margin:var(--gup-sp-2) 0 var(--gup-sp-1)}
.ba-ed-err{font-size:var(--gup-fs-sm);color:var(--gup-negative);margin-top:var(--gup-sp-1)}
.ba-ed-forces{display:grid;grid-template-columns:repeat(auto-fit,minmax(112px,1fr));gap:var(--gup-sp-2);
  margin-top:var(--gup-sp-2)}
.ba-ed-forces label{font-size:var(--gup-fs-note);color:var(--gup-text-secondary);display:block}

/* ---- 旧記録（顧客の 4 項目）---- */
.ba-legacy{flex:none;margin-top:var(--gup-sp-2);border:1px solid var(--gup-border-default);
  border-radius:var(--gup-radius-sm);background:var(--gup-surface-secondary);
  padding:0 var(--gup-sp-3)}
.ba-legacy > summary{cursor:pointer;padding:var(--gup-sp-1) 0;font-size:var(--gup-fs-sm);
  color:var(--gup-text-secondary)}
.ba-legacy[open]{padding-bottom:var(--gup-sp-2)}

/* ===== PHASE T5-7B ─ 戦略方向（ボトルネックの出口）==========================
   正本 gate/t5-7a-strategic-direction-ui。
   ★色は semantic token だけ（生の hex を作らない）。組合せの色は SWOT の役割色と同じ
     S＝positive ／ W＝negative ／ O＝info ／ T＝warning を再利用する。
   ★面の入れ子は 2 層まで。ブレークポイントは増やさない（折返しで吸収）。
   ========================================================================== */
.ba-dir-sec{display:flex;flex-direction:column;min-height:0;margin-top:var(--gup-sp-3);
  padding-top:var(--gup-sp-3);border-top:1px solid var(--gup-border-default)}
.ba-ask--sub .ba-a{font-size:var(--gup-fs-md)}
/* バッジが 3 つになるので、狭い画面では折り返せるようにする（ブレークポイントは増やさない）。
   共通の .ba-ask-r は flex:none で、内容の幅のまま器からはみ出す（実測 390px で 388px）。 */
.ba-dir-sec .ba-ask-r{flex:1 1 auto;min-width:0}
.ba-dir-tools{margin-left:auto;display:flex;gap:var(--gup-sp-2);flex-wrap:wrap}

/* ---- 組合せ・役割・状態のしるし ---- */
.ba-dir-q{display:inline-flex;align-items:center;border-radius:var(--gup-radius-sm);
  padding:0 var(--gup-sp-1);font-size:var(--gup-fs-sm);font-weight:var(--gup-font-weight-bold);
  border:1px solid currentColor;flex:none}
.ba-dir-q--SO{color:var(--gup-positive)}
.ba-dir-q--ST{color:var(--gup-warning)}
.ba-dir-q--WO{color:var(--gup-info)}
.ba-dir-q--WT{color:var(--gup-negative)}
.ba-dir-role-k{display:inline-flex;align-items:center;justify-content:center;min-width:16px;
  font-size:var(--gup-fs-note);font-weight:var(--gup-font-weight-bold);flex:none}
.ba-dir-role-k--S{color:var(--gup-positive)}
.ba-dir-role-k--W{color:var(--gup-negative)}
.ba-dir-role-k--O{color:var(--gup-info)}
.ba-dir-role-k--T{color:var(--gup-warning)}
.ba-dir-st{margin-left:auto;flex:none;display:inline-flex;align-items:center;
  border:1px solid var(--gup-border-strong);border-radius:var(--gup-radius-sm);
  padding:0 var(--gup-sp-1);font-size:var(--gup-fs-note);color:var(--gup-text-secondary)}
.ba-dir-st--handoff{color:var(--gup-brand-accent);border-color:var(--gup-brand-accent)}
.ba-dir-st--rejected{border-style:dashed}

/* ---- 一覧（選ぶ面。ここは入力欄にしない）---- */
.ba-dir-card{display:block;width:100%;text-align:left;cursor:pointer;
  margin:0 0 var(--gup-sp-1);padding:var(--gup-sp-1) var(--gup-sp-2);
  border:1px solid var(--gup-border-default);border-radius:var(--gup-radius-sm);
  background:var(--gup-surface-secondary);color:inherit;font:inherit;min-height:0;height:auto}
.ba-dir-card:hover{border-color:var(--gup-border-strong)}
.ba-dir-card.is-sel{border-color:var(--gup-brand-accent);
  box-shadow:inset 3px 0 0 var(--gup-brand-accent)}
.ba-dir-card.is-off{opacity:.72}
.ba-dir-card .r1{display:flex;align-items:center;gap:var(--gup-sp-1)}
.ba-dir-card .ttl{font-weight:var(--gup-font-weight-bold);font-size:var(--gup-fs-sm);
  min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ba-dir-card .r2{display:flex;flex-wrap:wrap;gap:var(--gup-sp-1);margin-top:2px}
.ba-dir-card .why,.ba-dir-card .drop{display:block;font-size:var(--gup-fs-note);
  color:var(--gup-text-secondary);margin-top:2px;line-height:1.45;white-space:normal}
.ba-dir-card .drop{border-left:2px solid var(--gup-border-strong);padding-left:var(--gup-sp-1)}
.ba-dir-ref{display:inline-flex;align-items:center;gap:var(--gup-sp-1);max-width:100%;
  border:1px solid var(--gup-border-default);border-radius:var(--gup-radius-sm);
  padding:0 var(--gup-sp-1);font-size:var(--gup-fs-note);color:var(--gup-text-secondary)}
.ba-dir-ref .k{font-weight:var(--gup-font-weight-bold);flex:none}
.ba-dir-ref .i{color:var(--gup-text-disabled);flex:none}
.ba-dir-ref.is-missing{border-style:dashed;color:var(--gup-negative)}

/* ---- 根拠（読むだけ）---- */
.ba-dir-ev{border:1px solid var(--gup-border-default);border-radius:var(--gup-radius-sm);
  background:var(--gup-surface-secondary);padding:var(--gup-sp-1) var(--gup-sp-2);
  margin-bottom:var(--gup-sp-1)}
.ba-dir-ev.is-missing{border-style:dashed}
.ba-dir-ev .eh{display:flex;align-items:baseline;gap:var(--gup-sp-1)}
.ba-dir-ev .et{font-weight:var(--gup-font-weight-bold);font-size:var(--gup-fs-sm);min-width:0}
.ba-dir-ev .eid{margin-left:auto;flex:none;font-size:var(--gup-fs-note);color:var(--gup-text-disabled)}
.ba-dir-ev .eb{font-size:var(--gup-fs-note);color:var(--gup-text-secondary);
  line-height:1.45;margin-top:2px}
.ba-dir-ev .ba-dir-drop{border-left:2px solid var(--gup-border-strong);padding-left:var(--gup-sp-1)}
.ba-dir-evfoot{margin-top:var(--gup-sp-2)}
.ba-dir-hand{flex:none;margin-top:var(--gup-sp-2);padding-top:var(--gup-sp-2);
  border-top:1px solid var(--gup-border-default)}
.ba-dir-hand:empty{display:none}
.ba-dir-hand .hh{font-size:var(--gup-fs-note);color:var(--gup-text-secondary);
  margin-bottom:var(--gup-sp-1)}
.ba-dir-hand .ba-kv .k{flex:none}
.ba-dir-hand .ba-kv .v{white-space:normal;text-align:right;word-break:break-all;
  font-weight:var(--gup-font-weight-regular);color:var(--gup-text-secondary)}

/* ---- 編集面（4 段。読む面を入力欄にしない）---- */
.ba-dir-editor:empty{display:none}
.ba-dir-step{border:1px solid var(--gup-border-default);border-radius:var(--gup-radius-sm);
  background:var(--gup-surface-secondary);padding:var(--gup-sp-1) var(--gup-sp-2);
  margin-top:var(--gup-sp-2)}
.ba-dir-step .sh{display:flex;align-items:center;gap:var(--gup-sp-1);margin-bottom:var(--gup-sp-1)}
.ba-dir-step .no{width:18px;height:18px;border-radius:50%;flex:none;
  background:var(--gup-surface-primary);
  border:1px solid var(--gup-border-strong);
  font-size:var(--gup-fs-note);display:flex;align-items:center;justify-content:center}
.ba-dir-step .st{font-weight:var(--gup-font-weight-bold);font-size:var(--gup-fs-sm)}
.ba-dir-step .hint{margin-left:auto;font-size:var(--gup-fs-note);color:var(--gup-text-secondary)}
.ba-dir-opt{display:flex;align-items:baseline;gap:var(--gup-sp-1);
  border:1px solid var(--gup-border-default);border-radius:var(--gup-radius-sm);
  background:var(--gup-surface-primary);padding:2px var(--gup-sp-1);margin-bottom:var(--gup-sp-1);
  font-size:var(--gup-fs-note);cursor:pointer}
.ba-dir-opt.is-on{border-color:var(--gup-brand-accent)}
.ba-dir-opt .ot{font-size:var(--gup-fs-sm)}
.ba-dir-opt .od{color:var(--gup-text-secondary);min-width:0;overflow:hidden;
  text-overflow:ellipsis;white-space:nowrap}
.ba-dir-opt .ou{margin-left:auto;flex:none;color:var(--gup-text-disabled)}
.ba-dir-quads{display:flex;gap:var(--gup-sp-1);flex-wrap:wrap}
.ba-dir-qb{flex:1 1 96px;display:flex;align-items:center;justify-content:center;gap:var(--gup-sp-1);
  border:1px solid var(--gup-border-strong);border-radius:var(--gup-radius-sm);
  background:var(--gup-surface-primary);color:var(--gup-text-secondary);cursor:pointer}
.ba-dir-qb b{font-size:var(--gup-fs-sm)}
.ba-dir-qb span{font-size:var(--gup-fs-note);color:var(--gup-text-disabled)}
.ba-dir-qb.is-on{border-color:var(--gup-brand-accent);color:var(--gup-text-primary);
  box-shadow:inset 3px 0 0 var(--gup-brand-accent)}
.ba-dir-facts{display:flex;gap:var(--gup-sp-2);flex-wrap:wrap}
.ba-dir-role{flex:1 1 260px;min-width:0;max-height:220px;overflow-y:auto}
.ba-dir-role .rh{display:flex;align-items:center;gap:var(--gup-sp-1);
  font-size:var(--gup-fs-note);color:var(--gup-text-secondary);margin-bottom:2px}
.ba-dir-srch{font-size:var(--gup-fs-note);color:var(--gup-text-disabled);margin:var(--gup-sp-1) 0 2px}
.ba-dir-legacy{margin-top:var(--gup-sp-2);border:1px dashed var(--gup-warning);
  border-radius:var(--gup-radius-sm);padding:var(--gup-sp-1) var(--gup-sp-2);
  font-size:var(--gup-fs-note);color:var(--gup-text-secondary)}
.ba-dir-foot{margin-top:var(--gup-sp-2)}
.ba-dir-statuspick{display:inline-flex;align-items:center;gap:var(--gup-sp-1);
  font-size:var(--gup-fs-note);color:var(--gup-text-secondary)}

/* 入力欄の項目名（V2-AB1 Phase A のとおり 400 のまま）。placeholder を名前の代わりにしない。 */
.ba-dir-lbl{display:block;margin:var(--gup-sp-1) 0 2px;font-size:var(--gup-fs-note);
  font-weight:var(--gup-type-label-weight);color:var(--gup-text-secondary)}
/* 知らせと保存できなかった理由。**知らせは error 色にしない**（違反ではないため）。 */
.ba-dir-msg{margin-top:var(--gup-sp-1);font-size:var(--gup-fs-sm);color:var(--gup-text-secondary)}
.ba-dir-msg.is-err{color:var(--gup-negative)}
/* いま使えない参照。**黙って外さない**ので、外すための ✕ を持つ。 */
.ba-dir-opt.is-missing{border-style:dashed}
.ba-dir-opt .del{margin-left:auto;flex:none;border:0;background:none;cursor:pointer;
  color:var(--gup-text-secondary);padding:0 var(--gup-sp-1);min-height:0}


/* ===== PHASE ANALYSIS-TARGET1 ─ 分析対象（全社 / 個別に事業分析する管理単位） =====
   ★個別分析を設定していない会社では帯ごと出ない（body.html 側で hidden）。
   ★選択中は「面 ＋ 左マーカー」。主要操作（solid blue）と同じ表現にしない。 */
.ba-target{display:flex;flex-wrap:wrap;align-items:center;gap:var(--gup-sp-2);
  padding:var(--gup-sp-2) var(--gup-sp-3);background:var(--gup-surface-secondary);
  border:1px solid var(--gup-border-default);border-radius:var(--gup-radius-md);
  margin-bottom:var(--gup-sp-2)}
/* GUP-UX-WORLDCLASS1 Phase 1（UX-48）：author の display:flex は UA の [hidden] に勝つ。hidden のときは高さ 0（5 view の開始位置をそろえる）。 */
.ba-target[hidden]{display:none}
.ba-target-k{font-size:var(--gup-fs-note);color:var(--gup-text-secondary)}
.ba-target-b{min-height:34px;padding:0 var(--gup-sp-3);
  border:1px solid var(--gup-border-default);border-left:3px solid transparent;
  border-radius:var(--gup-radius-sm);background:var(--gup-surface-primary);
  color:var(--gup-text-primary);font-size:var(--gup-fs-note);cursor:pointer}
.ba-target-b.is-on{background:var(--gup-surface-secondary);
  border-left-color:var(--gup-brand-accent);font-weight:var(--gup-font-weight-bold)}
.ba-target-b.is-stale{color:var(--gup-text-secondary)}
.ba-target-b i{font-style:normal;font-size:var(--gup-fs-note);
  color:var(--gup-text-secondary);margin-left:var(--gup-sp-1)}
.ba-target-n{font-size:var(--gup-fs-note);color:var(--gup-text-secondary)}
/* データ・設定：管理単位ごとの［個別に事業分析する］ */
.muset-ba{display:inline-flex;align-items:center;gap:var(--gup-sp-1);font-size:var(--gup-fs-note);
  color:var(--gup-text-secondary);margin-right:var(--gup-sp-2)}
.muset-ba-note{font-size:var(--gup-fs-note);color:var(--gup-text-secondary);
  margin:var(--gup-sp-1) 0 var(--gup-sp-2)}

/* ===== PHASE BA-INDUSTRY-HD1 ─ 業界 view（Founder Visual Source of Truth）=====
   ★1440×765 で 市場・PEST 主論点・5F・結論 を一望する。
     内部スクロール・accordion・details へ逃げない。読む状態に入力欄を出さない。
   ★font は既存 scale だけ（新しい段を作らない）。10px 未満は作らない。 */
/* UX-SYSTEM1A：② の道具 button（✎ と compact な文字の道具）は共通の ICON EDIT 文法（.gup-icon-btn と同値）。
   element を付けるのは、二次 button の共通規則（button.ghost）より後ろで勝つため。
   .action を持つもの（主要操作）はこの規則の外。 */
button.bi-edit:not(.action){min-width:var(--gup-control-compact);min-height:var(--gup-control-compact);padding:0 var(--gup-sp-2);margin-left:auto;
  background:none;border:0;border-radius:var(--gup-radius-sm);color:var(--gup-text-secondary);
  font-size:var(--gup-fs-xs);font-weight:var(--gup-type-secondary-action-weight)}
button.bi-edit:not(.action):hover{background:var(--gup-surface-secondary);color:var(--gup-text-primary)}
/* この 3 枚だけ見出しの下を詰める（1440×765 の一望契約のため。ほかの card は触らない）。 */
.bi-snap .ba-ch,.bi-pestc .ba-ch,.bi-f5c .ba-ch{margin-bottom:var(--gup-sp-1)}
/* GUP-UX-WORLDCLASS1 Phase 2（Founder 指示 2026-09-07）：業界変化と 5F の根拠を全文にしたぶん、下段 2 枚の上下の余白を 1 段詰める
   （競合 view の 3 枚と同じ作法）。縦スクロールバーが出て 15px 狭くなっても 765 に収まる余裕を持たせる。 */
.ba-card.bi-pestc,.ba-card.bi-f5c{padding-top:var(--gup-sp-1);padding-bottom:var(--gup-sp-1)}
.bi-none{color:var(--gup-text-disabled)}

/* --- 市場スナップショット：1 行 5 列 --- */
.ba-card.bi-snap{margin:0 0 var(--gup-sp-1)}   /* GUP-UX-WORLDCLASS1 Phase 1：本文を 13px にしたぶん（+3px）を card の間隔で返す（一望契約） */
.bi-snap-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(168px,1fr));gap:var(--gup-sp-2)}
.bi-snap-c{display:flex;align-items:center;gap:var(--gup-sp-2);min-width:0;
  padding-left:var(--gup-sp-2);border-left:1px solid var(--gup-border-default)}
.bi-snap-c:first-child{border-left:0;padding-left:0}
.bi-snap-b{display:flex;flex-direction:column;min-width:0}
/* SAMPLE32-COMPLETION-APPLY1（Founder 指示）：上段＝数値・下段＝見出し＋短い説明の 1 行。
   下段は 1 行に収めてはみ出しは省略（全文は title と編集面に残す）。 */
.bi-snap-k{font-size:var(--gup-fs-note);color:var(--gup-text-secondary);
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.bi-snap-v{font-size:var(--gup-fs-md);font-weight:var(--gup-font-weight-bold);
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.bi-snap-v small{font-size:var(--gup-fs-note);font-weight:var(--gup-font-weight-regular);
  color:var(--gup-text-secondary);margin-left:var(--gup-sp-1)}
/* GUP-UX-WORLDCLASS1 Phase 1（UX3-01）：売上比の条件（分子・分母・未算出の理由）は card の見出し行に置く。切らずに折り返す（hover だけに頼らない）。
   注記ではなく compact 本文の段（13px）。 */
.ba-ch .bi-snap-cond{font-size:var(--gup-fs-xs);color:var(--gup-text-secondary);min-width:0;flex:1 1 auto;white-space:normal;line-height:var(--gup-lh-compact)}
.ba-ch .bi-snap-cond[hidden]{display:none}
.bi-ic{width:24px;height:24px;flex:none;border-radius:var(--gup-radius-pill);
  display:inline-flex;align-items:center;justify-content:center;
  font-size:var(--gup-fs-note);color:var(--gup-text-secondary);
  background:var(--gup-surface-secondary);border:1px solid var(--gup-border-default)}

/* --- 下段 2 カラム --- */
/* ★breakpoint を増やさない（既存 42 site のまま）。広い所は 2 列・狭い所は wrap で縦へ。 */
.bi-cols{display:flex;flex-wrap:wrap;gap:var(--gup-sp-2);align-items:flex-start}
.bi-pestc{flex:1 1 600px;min-width:0}
.bi-f5c{flex:1 1 380px;min-width:0}

/* --- いま効いている業界変化（PEST 主論点） --- */
/* GUP-UX-WORLDCLASS1 Phase 2（UX-18・Founder 指示 2026-09-07）：根拠列をやめ、変化（見出し・意味）へ幅を寄せる。時間軸と確度は 1 列（折り返す）。
   効く要因の列は時間軸と **重ならない** よう、必要な幅（バッジ 3 つ）を持たせる。 */
.bi-pest-h,.bi-pest-r{display:grid;
  grid-template-columns:34px minmax(0,1fr) 108px 96px;
  gap:var(--gup-sp-2);align-items:center}
.bi-pest-h{font-size:var(--gup-fs-note);color:var(--gup-text-secondary);
  padding-bottom:var(--gup-sp-1);border-bottom:1px solid var(--gup-border-default)}
.bi-pest-r{padding:2px 0;border-bottom:1px solid var(--gup-border-default);min-height:36px}
/* 見出し（全文）→ 説明（2 行まで）＋［全文］。命令は説明の最後の行の右に置き、行を増やさない。 */
.bi-pest-r .c2{display:flex;flex-wrap:wrap;align-items:flex-end;gap:0 var(--gup-sp-1);min-width:0}
.bi-pest-r .c2 > b{flex:1 1 100%}
.bi-pest-r .c2 > i{flex:1 1 0;min-width:0}
.bi-pest-r .c2 > u{flex:none}
.bi-pest-r .c2 > .gup-cmd{flex:none}
.bi-pest-r:last-child{border-bottom:0}
/* Founder 指示（2026-09-07）：見出しも説明も **全文**（省略しない）。一画面に収めるのは幅と余白で（文字は縮めない）。 */
.bi-pest-r .c2 b{display:block;font-size:var(--gup-fs-sm);font-weight:var(--gup-font-weight-bold);
  line-height:var(--gup-lh-heading);overflow-wrap:anywhere}
.bi-pest-r .c2 i{display:block;
  font-style:normal;font-size:var(--gup-fs-xs);line-height:var(--gup-lh-compact);
  color:var(--gup-text-primary);overflow-wrap:anywhere}
.bi-pest-r .c2 u{display:inline-block;text-decoration:none;font-size:var(--gup-fs-note);
  color:var(--gup-text-secondary)}
.bi-pest-r .c4{display:flex;flex-direction:column;font-size:var(--gup-fs-xs);line-height:var(--gup-lh-compact);white-space:normal;overflow-wrap:anywhere}
.bi-more{align-self:flex-start}
.bi-pest{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;
  border-radius:var(--gup-radius-pill);font-size:var(--gup-fs-note);
  font-weight:var(--gup-font-weight-bold);background:var(--gup-surface-secondary);
  border:1px solid var(--gup-border-default)}
.bi-conf{font-size:var(--gup-fs-xs);font-weight:var(--gup-font-weight-bold)}
.bi-conf--high{color:var(--gup-negative)}
.bi-conf--mid{color:var(--gup-warning)}
.bi-conf--low{color:var(--gup-text-secondary)}
.bi-pest--none{color:var(--gup-text-secondary);border-style:dashed}
.bi-legend{display:flex;flex-wrap:wrap;align-items:center;gap:var(--gup-sp-1);
  margin-top:var(--gup-sp-1);font-size:var(--gup-fs-note);color:var(--gup-text-secondary)}
.bi-lg-x{color:var(--gup-warning)}
/* UX-MODE1（UX-17）：「すべて見る」は読む側の命令（.gup-cmd → DETAIL）。編集は ✎ だけ。 */
.bi-all{margin-left:auto}
.bi-snap-empty{font-size:var(--gup-fs-sm);color:var(--gup-text-secondary);overflow-wrap:anywhere}

/* --- 利益を削る力（5F） --- */
/* GUP-UX-WORLDCLASS1 Phase 2（UX-19・Founder 指示 2026-09-07）：根拠は **全文**。ただし一画面に収める。
   以前は根拠が計器（バー・点・向き・強さ）の左の 253px に押し込まれて 3〜4 行に折れていた（実測）。
   1 段目＝名前と計器、2 段目＝根拠を card の幅いっぱいに（2 行前後）。DOM は同じで grid の置き方だけ。 */
.bi-f5-r{display:grid;grid-template-columns:24px minmax(0,1fr) 96px 22px 18px 26px;grid-template-rows:auto auto;
  gap:0 var(--gup-sp-2);align-items:center;padding:0;   /* 行の上下の余白は持たない（8px だと 5 行で 60px 使い、根拠の全文が 765 に入らない。実測） */
  border-bottom:1px solid var(--gup-border-default);min-height:36px}
.bi-f5-r:last-child{border-bottom:0}
.bi-f5-r > .bi-ic{grid-column:1;grid-row:1}
.bi-f5-b{display:contents}
.bi-f5-b > .nm{grid-column:2;grid-row:1;min-width:0}
.bi-f5-b > .ev{grid-column:2 / 7;grid-row:2;min-width:0}
.bi-f5-b > .gup-cmd{display:none}   /* 根拠が全文なので［全文］は要らない（DETAIL は PEST 側から開ける） */
.bi-f5-r > .bi-bar{grid-column:3;grid-row:1}
.bi-f5-r > .sc{grid-column:4;grid-row:1}
.bi-f5-r > .dir{grid-column:5;grid-row:1}
.bi-f5-r > .lv{grid-column:6;grid-row:1}
.bi-f5-b .nm{font-size:var(--gup-fs-sm);font-weight:var(--gup-font-weight-bold)}
/* UX-MODE1（UX-19）：根拠の要点を 2 行まで見せる。全文は DETAIL。 */
/* GUP-UX-WORLDCLASS1 Phase 2（UX-19・Founder 指示 2026-09-07）：根拠は **全文**・本文の色（2 行省略をやめる。一画面に収めるのは幅と余白で）。 */
.bi-f5-b .ev{display:block;
  font-size:var(--gup-fs-xs);line-height:var(--gup-lh-compact);color:var(--gup-text-primary);overflow-wrap:anywhere}
/* GUP-COLOR-FIX1（CLR-07）：強さ・根拠は「まだ確かめていない補足」であって disabled ではない。
   ★disabled の段は Executive で 2.59〜3.13:1 しかなく、読めない。 */
.bi-f5-b .ev em,.bi-pest-r .c2 i em{font-style:normal;color:var(--gup-text-supplementary);
  margin-right:var(--gup-sp-1)}
.bi-bar{display:block;height:6px;border-radius:var(--gup-radius-pill);
  background:var(--gup-surface-secondary);overflow:hidden}
.bi-bar i{display:block;height:100%;background:var(--gup-text-disabled)}
.bi-bar i.bi-lv--強{background:var(--gup-negative)}
.bi-bar i.bi-lv--中{background:var(--gup-warning)}
.bi-f5-r .sc{text-align:right;font-size:var(--gup-fs-md);font-weight:var(--gup-font-weight-bold)}
.bi-f5-r .dir{text-align:center;font-size:var(--gup-fs-note);color:var(--gup-text-secondary)}
.bi-f5-r .lv{text-align:right;font-size:var(--gup-fs-note);font-weight:var(--gup-font-weight-bold)}
.lv.bi-lv--強{color:var(--gup-negative)}
.lv.bi-lv--中{color:var(--gup-warning)}
.lv.bi-lv--弱,.lv.bi-lv--未評価{color:var(--gup-text-secondary)}
.bi-f5-sum{margin-top:2px;font-size:var(--gup-fs-xs);line-height:var(--gup-lh-compact)}   /* 結論の 2 行は compact（1440×765 の一望契約：normal だと 3px あふれた） */
.ba-ed-lb{align-self:center;font-size:var(--gup-fs-note);color:var(--gup-text-secondary);
  white-space:nowrap}

/* ===== PHASE BA-COMPETITION-HD1 ─ 競合 view（Founder Visual Source of Truth）===
   ★1440×765 で 結論・主な競合・競争要因の比較・As-Is キャンバス を一望する。
     内部スクロールへ逃げない。読む状態に入力欄を出さない。
   ★font は既存 scale だけ（新しい段を作らない）。
     色は既存 token と、キャンバスと同じ系列色（compColor / selfColor）だけ。 */
.ba-ask-r .bc-badges{display:flex;gap:var(--gup-sp-2);flex-wrap:wrap}
.bc-v--win{color:var(--gup-positive)}
.bc-v--lose{color:var(--gup-negative)}
/* この 3 枚だけ見出しの下を詰める（一望契約のため。ほかの card は触らない）。 */
.bc-rivals .ba-ch,.bc-facs .ba-ch,.bc-canvas .ba-ch{margin-bottom:var(--gup-sp-1)}
/* UX-MODE1：主な競合の 4 文を 2 行にしたぶん、card の間隔を 1 段詰めて主な比較を 765 に収める（実測 ㉜ 776 → 762）。 */
.ba-card.bc-rivals{margin:0 0 var(--gup-sp-1)}

/* --- 主な競合：1 行 5 列（書かれていない項目は「—」）--- */
/* UX-WORLDCLASS1-MICRO-CLOSE（Founder 決定 2026-09-07） 2：3 社の 位置づけ／強み弱み／見立て を主比較として優先する（この 3 列を広く、要点の列を狭く）。 */
.bc-rv-h,.bc-rv-r{display:grid;
  grid-template-columns:minmax(0,1.1fr) minmax(0,1.2fr) minmax(0,1.25fr) minmax(0,1.25fr) minmax(0,0.9fr);
  gap:var(--gup-sp-2);align-items:center}
.bc-rv-h{font-size:var(--gup-fs-note);color:var(--gup-text-secondary);
  padding-bottom:var(--gup-sp-1);border-bottom:1px solid var(--gup-border-default)}
/* 行は compact の高さ（34px）を下限に、2 行の文で決まる。 */
/* ★Founder 指示（2026-09-07・GUP-UX-WORLDCLASS1 Phase 1）：主な競合の 4 文は **全文・本文の色（白）・14px**（2 行省略と薄い色をやめる）。 */
.bc-rv-r{padding:var(--gup-sp-1) 0;border-bottom:1px solid var(--gup-border-default);
  min-height:var(--gup-control-compact);font-size:var(--gup-fs-sm);color:var(--gup-text-primary)}
.bc-rv-r:last-child{border-bottom:0}
/* 位置づけ／強み弱み／見立て は全文をそのまま読ませる（省略しない）。行送りは本文の normal。 */
.bc-rv-r > span{display:block;line-height:var(--gup-lh-normal);overflow-wrap:anywhere}
/* UX-WORLDCLASS1-MICRO-CLOSE（Founder 決定 2026-09-07） 2：最近の動き・根拠 は初期比較では要点（2 行）。全文は既存 DETAIL（［全文］）。文字の大きさは不変・DOM は全文。 */
.bc-rv-r .c5{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden}
.bc-rv-r .c1{display:flex;flex-wrap:wrap;align-items:flex-end;gap:0 var(--gup-sp-1);color:var(--gup-text-primary)}
.bc-rv-r .c1 .bc-sw{align-self:center}
.bc-rv-r .c1 b{flex:1 1 0;font-size:var(--gup-fs-sm);min-width:0;line-height:var(--gup-lh-heading);overflow-wrap:anywhere}
.bc-rv-r .c1 .gup-cmd{flex:none}
/* 系列の色。キャンバスの折れ線・凡例と同じ色をここでも見せる（対応を目で追えるように）。 */
.bc-sw{width:10px;height:10px;flex:none;border-radius:var(--gup-radius-pill)}

/* --- 下段 2 カラム --- */
/* ★breakpoint を増やさない。広い所は 2 列・狭い所は wrap で縦へ。 */
/* ★Founder 指示（2026-09-07）：戦略キャンバスと競争要因の比較は同じ高さ（stretch）。 */
.bc-cols{display:flex;flex-wrap:wrap;gap:var(--gup-sp-2);align-items:stretch;
  margin-top:var(--gup-sp-1)}
/* ★余った幅は比較表へ渡す。図は viewBox の比のままなので、広げると縦だけが伸びる。 */
/* ★戦略キャンバスが主役、点数の内訳が補助。breakpoint は増やさず、狭い画面では折返しで縦積みへ落ちる。
   GUP-UX-WORLDCLASS1 Phase 2（UX-27）：比較表の見出しに競合名（短縮後 10〜13 字）を折り返して全文で置けるよう、表へ幅を渡す（2:1 → 1.4:1）。
   図は viewBox の比なので幅を渡したぶん縦が縮み、主な競合の全文で伸びた分を一部返す。 */
.bc-cols > .ba-card{margin:0;align-self:stretch}   /* Founder 指示（2026-09-07）：戦略キャンバスと競争要因の比較を同じ高さに */
.bc-canvas{flex:1.4 1 480px;min-width:0}
.bc-facs{flex:1 1 320px;min-width:0}
/* この 3 枚だけ上下の余白を 1 段詰める（一望契約のため。ほかの card は触らない）。 */
.ba-card.bc-rivals,.ba-card.bc-facs,.ba-card.bc-canvas{padding-top:var(--gup-sp-2);padding-bottom:var(--gup-sp-2)}
/* UX-MODE1：競争要因が多い記録（㉜）でも主な比較が 765 に入るよう、比較表の card だけ下を 1 段詰める（実測 766 → 762）。 */
.ba-card.bc-facs{padding-bottom:var(--gup-sp-1)}

/* --- 競争要因の比較（表の作法は #t5 .ba-card table の共通規則に乗る）--- */
/* ★列幅は renderer が宣言する（table-layout:fixed）。見出しは 1 行で、全文は title で読む。 */
.bc-fc{width:100%;table-layout:fixed}
/* GUP-UX-WORLDCLASS1 Phase 2（UX-27）：見出しの競合名は折り返して全文（「競合…」の省略をやめる。名前は短縮済み）。 */
.bc-fc th{white-space:normal;overflow-wrap:anywhere;line-height:var(--gup-lh-compact)}
/* ★Founder 判断：ここは「どの要因で差がついているか」を読む表なので、
   要因名と点数を 2 段上げて太字にする（14px → 18px）。
   UI-TYPE1 の「table body は Regular」に対する **この表だけの例外**で、
   ほかの表は Regular のまま。selector も この表に限定している。 */
/* ★共通の表の作法（#t5 .ba-card table td）は id を含むので詳細度で勝てない。
   この表だけを名指しして上書きする（強制指定も inline style も使わない）。 */
#t5 .ba-card table.bc-fc td.fn,
#t5 .ba-card table.bc-fc td.n{font-size:var(--gup-fs-lg);
  font-weight:var(--gup-font-weight-bold)}
/* 文字を 2 段上げたぶん、行の上下の余白は返す（行の高さを元と同じくらいに保つ）。 */
#t5 .ba-card table.bc-fc th,
#t5 .ba-card table.bc-fc td{padding-top:0;padding-bottom:0}

/* --- As-Is キャンバス（図は器の幅なり。狭い所でも横へあふれない）--- */
.bc-canvas #canvasChart{min-width:0}
/* GUP-UX-WORLDCLASS1 Phase 2（UX-28）：To-Be 参照 overlay の切替は凡例の行の読む側の命令（.gup-cmd・当たり判定 34px・行の高さは増やさない）。
   重ねている状態は下線を外し左に印（主要操作と同じ solid にしない）。 */
.bc-legend-row{display:flex;align-items:center;gap:var(--gup-sp-3);flex-wrap:wrap;margin:0 0 var(--gup-sp-1)}
.bc-legend-row > .canvas-legend{justify-content:flex-start;margin:0;flex:1 1 auto;min-width:0}
button.bc-tobe{flex:none}
button.bc-tobe[aria-pressed="true"]{color:var(--gup-text-primary);text-decoration:none;
  border-left:3px solid var(--gup-brand-accent);padding-left:var(--gup-sp-1)}
button.bc-tobe[hidden]{display:none}

/* --- 編集面（既定は閉じる。読む状態には出ない）--- */
.ba-editor.bc-edit{margin-top:var(--gup-sp-1)}
.bc-edit .ba-scroll{flex:none}

/* ===== PHASE BA-SELF-HD1 ─ 自社 view（Founder Visual Source of Truth）=========
   ★1440×765 で 結論・radar・8 領域・確認する論点 を一望する。
     内部スクロールへ逃げない。読む状態に入力欄を出さない。
   ★色は領域の識別のためだけ（良い／悪いを意味しない）。既存 palette から順に割り当てる。
   ★評価の高い／低いを色だけで伝えない（数字・形・見出しを併用する）。 */
.bs-cols{display:flex;flex-wrap:wrap;gap:var(--gup-sp-2);align-items:stretch;
  margin-top:var(--gup-sp-2)}
/* ★図は縦の余りを使い切る大きさまで広げる（比は viewBox のまま）。
   表は 3 列が読める幅を確保する。 */
.bs-radar{flex:0 1 500px;min-width:0}
.bs-rows{flex:1 1 500px;min-width:0}
/* ★余白は最小（Founder 判断）。図を大きくしたぶんの縦をここで返す。 */
.ba-card.bs-radar,.ba-card.bs-rows{padding-top:var(--gup-sp-1);padding-bottom:var(--gup-sp-1)}
.bs-radar .ba-ch,.bs-rows .ba-ch{margin-bottom:var(--gup-sp-1)}

/* --- 比べ方（今期のみ / 前期比較 / To-Be比較）--- */
/* ★選択中は面を薄く敷いて左に印。主要操作（solid blue）と同じ表現にしない。 */
/* 見出しの行の右端に置く（1 行を占めない）。 */
.bs-modes{display:flex;gap:var(--gup-sp-1);flex-wrap:wrap;margin-left:auto}
.bs-mode{min-height:34px;padding:0 var(--gup-sp-2);font-size:var(--gup-fs-xs);
  background:none;border:1px solid var(--gup-border-default);border-radius:var(--gup-radius-sm);
  color:var(--gup-text-secondary)}
.bs-mode.is-on{background:var(--gup-surface-secondary);color:var(--gup-text-primary);
  border-color:var(--gup-border-strong);border-left:3px solid var(--gup-brand-accent)}
.bs-mode:disabled{color:var(--gup-text-disabled);border-style:dashed}
/* ★図の余白は最小（枠の外にも中にも空きを作らない）。 */
/* --- 経営力（100 点）。この画面でいちばん大きい数字にする --- */
/* ★ゲージや点数バーは作らない。数字・単位・母数と、意味が分かる 1 行だけ。 */
.bs-score:not([hidden]){display:flex;align-items:baseline;gap:var(--gup-sp-4);
  flex-wrap:wrap;padding-bottom:var(--gup-sp-1);margin-bottom:var(--gup-sp-1);
  border-bottom:1px solid var(--gup-border-default)}
.bs-sc-l{display:flex;align-items:baseline;gap:var(--gup-sp-2)}
.bs-sc-r{margin-left:auto;display:flex;align-items:baseline;gap:var(--gup-sp-2)}
.bs-sc-k{font-size:var(--gup-fs-sm);color:var(--gup-text-secondary);white-space:nowrap}
.bs-sc-v{font-size:var(--gup-fs-hero);font-weight:var(--gup-font-weight-bold);
  color:var(--gup-text-primary);line-height:1.02;font-variant-numeric:tabular-nums}
.bs-sc-u{font-size:var(--gup-fs-base);color:var(--gup-text-primary)}
.bs-sc-max{font-size:var(--gup-fs-note);color:var(--gup-text-disabled)}
.bs-sc-m,.bs-sc-p{font-size:var(--gup-fs-note);color:var(--gup-text-secondary);white-space:nowrap}
.bs-sc-d{font-size:var(--gup-fs-note);color:var(--gup-text-disabled)}
.bs-sc-p b{font-weight:var(--gup-font-weight-bold);color:var(--gup-text-primary)}
.bs-radar-wrap{padding:0}
.bs-radar-wrap > svg{width:100%;height:auto;display:block}
.bs-legend{display:flex;flex-wrap:wrap;align-items:center;gap:var(--gup-sp-2);
  font-size:var(--gup-fs-note);color:var(--gup-text-secondary)}
.bs-lg{display:inline-flex;align-items:center;gap:var(--gup-sp-1)}
.bs-lg i{width:16px;height:0;border-top:2px solid var(--canvas-self);display:inline-block}
.bs-lg i.bs-lg-prev{border-top-style:dashed;border-top-color:var(--gup-text-secondary)}
.bs-lg-x{color:var(--gup-text-disabled)}

/* --- 8 領域の行（全件同時表示・並べ替えない）--- */
/* UX-MODE1：列は flex-basis で決める。1440 では 1 行、390 では 領域・評価／要点・確認／影響 の順に折り返す
   （DOM の順のまま。CSS の order は使わない）。 */
.bs-h,.bs-r{display:flex;flex-wrap:wrap;gap:var(--gup-sp-1) var(--gup-sp-2);align-items:center}
.bs-h > .c1,.bs-r > .c1{flex:1 1 140px;min-width:0}
.bs-h > .cr,.bs-r > .cr{flex:0 0 104px}   /* GUP-UX-WORLDCLASS1 Phase 1（UX-49）：評価＋確認 n/3 の 2 段 */
/* GUP-UX-WORLDCLASS1 Phase 2：縦スクロールバー（15px）が出た瞬間に basis の合計（628px）が card の内側（625px）を超えて全行が 2 段に折れ、
   折れたまま安定していた（実測：docH 765 ⇄ 955 の双安定）。伸びる列なので basis を 20px 下げても見た目は同じ。 */
.bs-h > .c2,.bs-r > .c2{flex:4 1 160px;min-width:0}
.bs-h > .ck,.bs-r > .ck{flex:0 0 76px}
.bs-h > .c3,.bs-r > .c3{flex:1 1 96px;min-width:0}
.bs-h{font-size:var(--gup-fs-note);color:var(--gup-text-secondary);
  padding-bottom:var(--gup-sp-1);border-bottom:1px solid var(--gup-border-default)}
.bs-r{padding:0;border-bottom:1px solid var(--gup-border-default);min-height:36px}
.bs-r .c2{display:flex;flex-wrap:wrap;align-items:flex-end;gap:0 var(--gup-sp-1)}
.bs-r .c2 > b{flex:1 1 0}
.bs-r .c2 > i{flex:1 1 100%}
.bs-r .c2 > .gup-cmd{flex:none}
.bs-r:last-child{border-bottom:0}
.bs-r .c1{display:flex;align-items:center;gap:var(--gup-sp-1);min-width:0}
/* ★狭い画面では折り返して読ませる（省略記号で消さない）。広い画面では 1 行に収まる。 */
.bs-nm{font-size:var(--gup-fs-sm);font-weight:var(--gup-font-weight-bold);
  min-width:0;overflow-wrap:anywhere}
.bs-r .c2{min-width:0}
/* UX-MODE1（UX-52）：根拠の要点は 2 行まで・compact 本文の段（13px）。全文は DETAIL。点数と確度は別の列。 */
.bs-r .c2 b{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;
  font-size:var(--gup-fs-xs);font-weight:var(--gup-font-weight-regular);line-height:var(--gup-lh-compact);overflow-wrap:anywhere}
.bs-r .cr{text-align:right;font-size:var(--gup-fs-md);font-weight:var(--gup-font-weight-bold);font-variant-numeric:tabular-nums}
.bs-r .cr i{font-style:normal;font-size:var(--gup-fs-note);font-weight:var(--gup-font-weight-regular);color:var(--gup-text-disabled)}
/* GUP-UX-WORLDCLASS1 Phase 1（UX-49）：確度（暫定・確認 n/3）は点数の直下。注記の段（12px）ではなく compact 本文（13px）。警告色は使わない（§7.1）。 */
.bs-r .cr i.bs-cf{display:block;font-size:var(--gup-fs-xs);color:var(--gup-text-secondary);line-height:var(--gup-lh-compact);white-space:nowrap}
.bs-h .cr{text-align:right}
.bs-r .ck{font-size:var(--gup-fs-note);line-height:var(--gup-lh-compact);color:var(--gup-text-secondary)}
.bs-r .c2 i{display:block;font-style:normal;font-size:var(--gup-fs-note)}
.bs-crit{color:var(--gup-warning)}
/* 番号の丸。**領域の識別だけ**（良い／悪いではない）。
   GUP-UX-WORLDCLASS1 Phase 2（UX-30）：領域の identity は **番号と名前**。8 色の分類色はやめ、丸は neutral の印にする
   （経済変数の色 P/V/Q/F と 状態の色 順調/注意/課題 と役割が混ざらない。3 配色で判別できる）。 */
.bs-no{width:22px;height:22px;flex:none;border-radius:var(--gup-radius-pill);
  display:inline-flex;align-items:center;justify-content:center;
  font-size:var(--gup-fs-note);font-weight:var(--gup-font-weight-bold);
  color:var(--gup-text-primary);background:var(--gup-surface-secondary);border:1px solid var(--gup-border-strong)}

/* --- 確認する論点 --- */
.bs-foot:not([hidden]){display:flex}
.bs-foot{align-items:center;gap:var(--gup-sp-2);margin-top:var(--gup-sp-2);flex-wrap:wrap;
  font-size:var(--gup-fs-xs);color:var(--gup-text-secondary);min-width:0}
.bs-foot-k{color:var(--gup-text-disabled);white-space:nowrap}
/* ★狭い画面では折り返して読ませる（省略記号で消さない）。広い画面では 1 行に収まる。 */
.bs-foot-t{min-width:0;overflow-wrap:anywhere}
.bs-foot .ba-go{margin-left:auto;white-space:nowrap}
.ba-legacy.bs-cap{margin-top:var(--gup-sp-1)}
.bs-cap > summary{color:var(--gup-text-secondary)}

/* --- 編集面（1 領域ずつ・画像 2）--- */
.bs-editor:empty{display:none}
.bs-ed-sel{display:flex;align-items:center;gap:var(--gup-sp-2);margin-bottom:var(--gup-sp-1)}
.bs-ed-sel > select{flex:1 1 auto;min-width:0}
.bs-ed-nav{display:flex;align-items:center;gap:var(--gup-sp-1);
  font-size:var(--gup-fs-note);color:var(--gup-text-secondary);white-space:nowrap}
.bs-ed-nav button{min-width:34px;min-height:34px;padding:0}
.bs-ed-q{font-size:var(--gup-fs-sm);margin-bottom:var(--gup-sp-1)}
.bs-ck{display:grid;grid-template-columns:16px minmax(0,1fr) auto;gap:var(--gup-sp-2);
  align-items:baseline;padding:var(--gup-sp-1) 0 0;border-bottom:1px solid var(--gup-border-default)}
.bs-ck-n{font-size:var(--gup-fs-note);color:var(--gup-text-secondary)}
.bs-ck-t{font-size:var(--gup-fs-note)}
.bs-ck-o{display:flex;flex-wrap:wrap;gap:var(--gup-sp-2);justify-content:flex-end;
  font-size:var(--gup-fs-note);color:var(--gup-text-secondary)}
.bs-ck-o label{white-space:nowrap}
.bs-ed-rate{display:flex;align-items:center;gap:var(--gup-sp-2);flex-wrap:wrap;
  padding:var(--gup-sp-1) 0 0;font-size:var(--gup-fs-note);color:var(--gup-text-secondary)}
.bs-ed-rate .k{color:var(--gup-text-primary)}
button.bs-step{min-width:var(--gup-control-compact);min-height:var(--gup-control-compact);padding:0}
.bs-rv{min-width:56px;text-align:center;font-size:var(--gup-fs-md);
  font-weight:var(--gup-font-weight-bold);color:var(--gup-text-primary);
  border:1px solid var(--gup-border-default);border-radius:var(--gup-radius-sm);padding:2px 0}
.bs-rv-p{margin-left:auto;white-space:nowrap}
.bs-ed-cri{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:var(--gup-sp-1);
  padding:var(--gup-sp-1) 0 0;font-size:var(--gup-fs-note);color:var(--gup-text-secondary)}
.bs-cri b{display:block;color:var(--gup-text-primary)}
.bs-ed-ex,.bs-ed-cc,.bs-ed-ev,.bs-ed-lv{display:flex;gap:var(--gup-sp-2);align-items:baseline;
  padding:var(--gup-sp-1) 0 0;font-size:var(--gup-fs-note);color:var(--gup-text-secondary);flex-wrap:wrap}
.bs-ed-ex .k,.bs-ed-cc .k,.bs-ed-ev .k,.bs-ed-lv .k{white-space:nowrap;color:var(--gup-text-disabled)}
.bs-ed-ex .t{min-width:0}
.bs-ed-ev{flex-wrap:nowrap}
.bs-ed-ev textarea{flex:1 1 auto;min-width:0}
.bs-crit-pick{color:var(--gup-warning)}
.bs-ed-note{font-size:var(--gup-fs-note);color:var(--gup-text-disabled);margin-top:var(--gup-sp-1)}

/* ===== PHASE BA-CUSTOMERS-HD1 ─ 顧客 view（Founder Visual Source of Truth）====
   ★1440×765 で 3 セグメントを同時に比べる。内部スクロールへ逃げない。
     読む状態に入力欄を出さない（編集は［✎ 編集］で開く編集面の中だけ）。
   ★状態は色だけで伝えない。丸・状態名・見出しを併用する。
     順調＝positive ／ 注意＝warning ／ 課題＝negative ／ 未確認＝細い枠 ／ 対象外＝破線の枠。
     未確認と対象外は **枠の線種で区別する**（どちらも「できていない」ではない）。 */
.bk-head{margin-bottom:var(--gup-sp-1)}
/* ★結論と凡例を 1 行に置く。結論の見た目は **ほかの view と同じ .ba-a のまま**
   （18px / bold）。ここで縮めると「答え」が画面でいちばん小さい文字になる。 */
.bk-sum{display:flex;align-items:baseline;gap:var(--gup-sp-3);flex-wrap:wrap}
.bk-sum .ba-a{flex:1 1 360px;min-width:0;overflow-wrap:anywhere}
.bk-legend{display:flex;gap:var(--gup-sp-2);flex-wrap:wrap;
  font-size:var(--gup-fs-note);color:var(--gup-text-secondary)}
.bk-lg{display:inline-flex;align-items:center;gap:var(--gup-sp-1);white-space:nowrap}
.bk-lg i{width:8px;height:8px;border-radius:var(--gup-radius-pill);
  border:1px solid var(--gup-border-strong)}

/* ---- 3 列（4 件以上は 3 列単位で折り返す。保存件数の上限は作らない）---- */
/* GUP-UX-WORLDCLASS1 Phase 2（Founder 指示 2026-09-07）：**横の行をそろえる**。列は grid、1 セグメントは 14 行の subgrid。
   同じ項目（流れ・課題・条件・根拠）が 3 列で同じ高さに並ぶので、横に見比べられる。
   subgrid を持たない環境でも grid のまま崩れない（行がそろわないだけ）。breakpoint は増やさない。 */
.bk-cols{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,300px),1fr));gap:var(--gup-sp-2);
  align-items:stretch;min-height:0;margin-top:var(--gup-sp-1)}
.bk-cols[hidden],.bk-foot[hidden],.bk-fold[hidden]{display:none}
.ba-card.bk-seg{display:grid;grid-template-rows:subgrid;grid-row:span 15;row-gap:0;align-content:start;
  min-width:0;padding:var(--gup-sp-1) var(--gup-sp-2)}
.bk-nm{margin:0;font-size:var(--gup-fs-md);font-weight:var(--gup-font-weight-bold);
  overflow-wrap:anywhere;text-align:center;padding-bottom:2px;line-height:1.3;
  border-bottom:1px solid var(--gup-border-default)}
/* GUP-UX-WORLDCLASS1 Phase 2（Founder 指示 2026-09-07「文字が小さい」）：値は本文の段（14px）、見出し語は compact 本文（13px）。12px の段は使わない。 */
.bk-kv{display:flex;gap:var(--gup-sp-2);align-items:baseline;font-size:var(--gup-fs-sm);
  padding-top:2px}
.bk-kv .k{color:var(--gup-text-secondary);white-space:nowrap;font-size:var(--gup-fs-xs)}
.bk-kv .v{min-width:0;overflow-wrap:anywhere}
.bk-sub{font-size:var(--gup-fs-xs);color:var(--gup-text-secondary);overflow-wrap:anywhere;
  line-height:var(--gup-lh-compact)}
/* 出所・確認日（必ず 1 行）。 */
.bk-src{padding-top:2px}
.bk-blk{margin-top:var(--gup-sp-1);padding-top:2px;line-height:1.3;align-self:end;
  border-top:1px solid var(--gup-border-default);
  font-size:var(--gup-fs-xs);color:var(--gup-text-secondary)}

/* ---- 取引の流れ（4 段階。矢印も丸の大きさも人数や率を表さない）---- */
.bk-flow{display:flex;align-items:flex-start;gap:1px;padding-top:2px}
.bk-st{display:flex;flex-direction:column;align-items:center;gap:0;flex:1 1 0;
  min-width:0;text-align:center}
.bk-st i{width:22px;height:22px;border-radius:var(--gup-radius-pill);font-style:normal;
  display:inline-flex;align-items:center;justify-content:center;
  font-size:var(--gup-fs-note);font-weight:var(--gup-font-weight-bold);
  border:1px solid transparent;color:var(--gup-surface-primary)}
.bk-st b{font-size:var(--gup-fs-xs);font-weight:var(--gup-font-weight-regular);
  overflow-wrap:anywhere;line-height:1.15}
/* ★状態名はこの画面の答え（どこが課題か）なので、段階名より 1 段上げる。
   段階名 12px → 状態名 14px。列の中の文字が全部 12px だと目のとまる所が無い。 */
.bk-st em{font-style:normal;font-size:var(--gup-fs-sm);
  font-weight:var(--gup-font-weight-bold);line-height:1.15}
.bk-ar{align-self:center;color:var(--gup-text-disabled);font-size:var(--gup-fs-note)}
.bk-st--healthy i{background:var(--gup-positive)}
.bk-st--healthy em{color:var(--gup-positive)}
.bk-st--watch i{background:var(--gup-warning)}
.bk-st--watch em{color:var(--gup-warning)}
.bk-st--problem i{background:var(--gup-negative)}
.bk-st--problem em{color:var(--gup-negative)}
.bk-st--unconfirmed i{background:none;border-color:var(--gup-border-strong);
  color:var(--gup-text-secondary)}
.bk-st--unconfirmed em{color:var(--gup-text-secondary)}
.bk-st--notApplicable i{background:none;border-style:dashed;
  border-color:var(--gup-border-strong);color:var(--gup-text-secondary)}
.bk-st--notApplicable em{color:var(--gup-text-secondary)}
/* 凡例の丸は同じ規則を共有する（色の意味を 2 か所で決めない）。 */
.bk-lg.bk-st--healthy i{background:var(--gup-positive);border-color:var(--gup-positive)}
.bk-lg.bk-st--watch i{background:var(--gup-warning);border-color:var(--gup-warning)}
.bk-lg.bk-st--problem i{background:var(--gup-negative);border-color:var(--gup-negative)}
.bk-lg.bk-st--unconfirmed i{background:none;border-color:var(--gup-border-strong)}

/* ---- 課題 / 注意点 ---- */
.bk-issue{margin-top:var(--gup-sp-1);padding-left:var(--gup-sp-2);
  border-left:3px solid var(--gup-border-strong)}
.bk-issue--problem{border-left-color:var(--gup-negative)}
.bk-issue--watch{border-left-color:var(--gup-warning)}
.bk-issue--none{border-left-style:dashed}
.bk-issue-h{font-size:var(--gup-fs-xs);font-weight:var(--gup-font-weight-bold)}
.bk-issue--problem .bk-issue-h{color:var(--gup-negative)}
.bk-issue--watch .bk-issue-h{color:var(--gup-warning)}
.bk-issue-t{font-size:var(--gup-fs-sm);font-weight:var(--gup-font-weight-bold);
  overflow-wrap:anywhere;line-height:1.3}

/* ---- 選ばれる条件（顧客が重視していること。押せる部品には見せない）---- */
/* GUP-UX-WORLDCLASS1 Phase 5（UX-24）：判断を変える条件は要点として一段強く（本文の段・Bold・濃い枠）。
   取引条件は本文のまま、根拠は補足の階層（全文のまま・二次色）にして、先に読む箇所を 1 つにする。 */
.bk-chips{display:flex;flex-wrap:wrap;gap:var(--gup-sp-1);padding-top:2px}
.bk-chip{font-size:var(--gup-fs-sm);font-weight:var(--gup-font-weight-bold);padding:0 var(--gup-sp-2);white-space:nowrap;
  line-height:var(--gup-lh-compact);color:var(--gup-text-primary);
  border:1px solid var(--gup-border-strong);border-radius:var(--gup-radius-sm);
  background:var(--gup-surface-secondary)}
.bk-none{font-size:var(--gup-fs-xs);color:var(--gup-text-disabled)}
/* 具体的な条件（要点の下の 1 段落。補足の階層＝13px・secondary）。 */
.bk-desc{font-size:var(--gup-fs-xs);color:var(--gup-text-secondary);line-height:var(--gup-lh-compact);
  overflow-wrap:anywhere;padding-top:2px}

/* ---- 取引条件・根拠 ---- */
/* UX-24：値（判断を変える条件）は本文の段（14px・primary）、項目名は 13px・secondary。 */
.bk-t{display:flex;gap:var(--gup-sp-2);align-items:baseline;font-size:var(--gup-fs-sm);
  line-height:1.4}
.bk-t .k{flex:0 0 96px;color:var(--gup-text-secondary);white-space:nowrap;font-size:var(--gup-fs-xs)}
.bk-t .v{min-width:0;overflow-wrap:anywhere}
/* UX-WORLDCLASS1-MICRO-CLOSE（Founder 決定 2026-09-07） 1：根拠は初期 READ で **最大 2 行**（全文は既存 DETAIL［詳細を読む］から必ず読める）。
   文字の大きさ（14px）・色（補足の階層）は不変。見本文章は短縮・改稿しない（省略は表示だけ・DOM は全文）。 */
.bk-ev{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden;
  font-size:var(--gup-fs-sm);color:var(--gup-text-secondary);overflow-wrap:anywhere;line-height:var(--gup-lh-normal)}
.bk-more{display:block;margin-top:var(--gup-sp-1);align-self:end;justify-self:start}

/* ---- 下の帯と折りたたみ ---- */
.bk-foot{flex:none;display:flex;align-items:center;gap:var(--gup-sp-3);flex-wrap:wrap;
  margin-top:var(--gup-sp-1);font-size:var(--gup-fs-note);color:var(--gup-text-secondary)}
.bk-foot .ba-go-pair{margin-left:auto}
/* 折りたたみは **閉じているあいだ 1 行も余分に使わない**（帯の中に並べる）。 */
.bk-fold{margin-top:0}
.bk-foot > .bk-fold{flex:0 1 auto;min-width:0}
.bk-fold > summary{color:var(--gup-text-secondary)}
.bk-lgc{display:flex;gap:var(--gup-sp-2);font-size:var(--gup-fs-note);padding:1px 0;
  border-bottom:1px solid var(--gup-border-default)}
.bk-lgc .k{flex:0 0 120px;color:var(--gup-text-secondary)}
.bk-lgc .v{min-width:0;overflow-wrap:anywhere;white-space:pre-wrap}

/* ---- 編集面（1 セグメントずつ・画像 2）---- */
.bk-editor:empty{display:none}
.bk-ed-sel{display:flex;align-items:center;gap:var(--gup-sp-2);flex-wrap:wrap;
  margin-bottom:var(--gup-sp-1)}
.bk-ed-sel .k{font-size:var(--gup-fs-note);color:var(--gup-text-secondary);white-space:nowrap}
.bk-ed-sel > select{flex:0 1 280px;min-width:0}
.bk-ed-no{margin-left:auto;font-size:var(--gup-fs-note);color:var(--gup-text-secondary);
  white-space:nowrap}
.bk-ed-row2{display:flex;flex-wrap:wrap;gap:var(--gup-sp-2);align-items:flex-start}
.bk-ed-f{display:flex;flex-direction:column;gap:0;flex:1 1 240px;min-width:0;
  font-size:var(--gup-fs-note)}
.bk-ed-f > span{color:var(--gup-text-secondary)}
/* ★checkbox / radio まで width:100% にすると、箱が列いっぱいに伸びて
   ラベルの文字が次の行へ落ちる（実機で発生）。伸ばすのは文字を入れる欄だけ。 */
.bk-ed-f input:not([type="checkbox"]):not([type="radio"]),
.bk-ed-f select,.bk-ed-f textarea{width:100%;min-width:0}
.bk-ed-cols{display:flex;flex-wrap:wrap;gap:var(--gup-sp-3);align-items:flex-start;
  margin-top:var(--gup-sp-1)}
.bk-ed-col{flex:1 1 420px;min-width:0;display:flex;flex-direction:column;gap:var(--gup-sp-1)}
/* UX-22：.bk-ed-f の flex-basis（240px）は横並びのためのもの。縦積みの column の中では
   主軸が縦なので 240px の高さになり、欄と欄のあいだに 180px 前後の空白ができていた（実測）。 */
.bk-ed-col > .bk-ed-f{flex:0 0 auto}
.bk-ed-picks{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));
  gap:var(--gup-sp-1) var(--gup-sp-2);font-size:var(--gup-fs-note)}
.bk-ed-picks--3{grid-template-columns:repeat(auto-fit,minmax(120px,1fr))}
/* 箱と文字は同じ行に置き、押せる範囲をラベル全体にする。 */
.bk-ed-picks label{display:flex;align-items:center;gap:var(--gup-sp-1);
  min-width:0;overflow-wrap:anywhere;cursor:pointer}
.bk-ed-picks label > input{flex:none}
/* 選択肢が多い欄は、1 行入力の欄より広く取る。 */
.bk-ed-f--wide{flex:2 1 420px}
.bk-ed-stages{display:flex;flex-direction:column;gap:0}
.bk-ed-stage{display:flex;align-items:center;gap:var(--gup-sp-2);flex-wrap:wrap;
  font-size:var(--gup-fs-note);padding:1px 0;border-bottom:1px solid var(--gup-border-default)}
.bk-ed-sn{flex:none;color:var(--gup-text-secondary)}
.bk-ed-st{flex:0 0 84px;min-width:0}
.bk-ed-so{display:flex;flex-wrap:wrap;gap:var(--gup-sp-2);margin-left:auto;
  justify-content:flex-end;color:var(--gup-text-secondary)}
.bk-ed-so label{white-space:nowrap}
.bk-ed-na{padding-left:var(--gup-sp-2);border-left:1px solid var(--gup-border-default)}
.bk-ed-fold{font-size:var(--gup-fs-note);border-top:1px solid var(--gup-border-default);
  padding-top:2px}
.bk-ed-fold > summary{color:var(--gup-text-secondary)}
.bk-ex{white-space:nowrap}

/* ===== PHASE BA-STRATEGY-POLICY1 ─ 戦略方針（t5:policy）====================
   ★prefix は `bp-`（業界 bi- / 競合 bc- / 自社 bs- / 顧客 bk- と衝突しない）。
   ★1440×765 で 4 枚を 2×2。**page scroll 0・card 内 scroll 0**。
     枚数で列を変えない（3 件でも同じ 2 列幅。空いた場所を架空のカードで埋めない）。
   ★カードの中にさらに枠付きカードを重ねない（ラベル・区切り線・余白で階層をつける）。
   ★色だけで意味を伝えない。狙いは必ず「P↑ 売価」の形で文字にも出す。
   ★breakpoint を増やさない（auto-fit と flex-wrap で吸収する）。
   ========================================================================== */
/* ★display:flex は UA の [hidden] に勝つ（この repo で何度も踏んだ）。
   入力・詳細のときに帯を消すため、**詳細度だけ**で閉じる（強制指定も inline style も使わない）。 */
.ba-ask.bp-head[hidden]{display:none}
.bp-head{align-items:flex-start}
.bp-legacy{display:flex;align-items:baseline;gap:var(--gup-sp-2);flex-wrap:wrap;
  padding:var(--gup-sp-1) var(--gup-sp-2);margin-bottom:var(--gup-sp-1);
  border:1px solid var(--gup-border-default);border-radius:var(--gup-radius-md);
  background:var(--gup-surface-secondary)}
.bp-legacy-t{font-weight:var(--gup-font-weight-bold)}
.bp-legacy-d{font-size:var(--gup-fs-note);color:var(--gup-text-secondary);flex:1 1 320px;min-width:0}

/* ---- 読む面：4 枚を 2×2 ---- */
/* GUP-UX-WORLDCLASS1 Phase 2（UX-34）：最小幅 400px を器の幅で上限する（390px で右端が切れない）。列数の規則は同じ。 */
.bp-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,400px),1fr));
  gap:var(--gup-sp-2);align-items:start}
.bp-card{display:flex;flex-direction:column;gap:var(--gup-sp-1);min-width:0;
  padding:var(--gup-sp-2) var(--gup-sp-3);
  border:1px solid var(--gup-border-default);border-radius:var(--gup-radius-md);
  background:var(--gup-surface-primary)}
.bp-card.is-off{background:var(--gup-surface-secondary)}
.bp-card-h{display:flex;align-items:center;gap:var(--gup-sp-2)}
.bp-card-hb{margin-left:auto;display:flex;align-items:center;gap:var(--gup-sp-1)}
.bp-no{font-size:var(--gup-fs-note);color:var(--gup-text-secondary)}
.bp-status{font-size:var(--gup-fs-note);color:var(--gup-text-secondary);
  padding:0 var(--gup-sp-1);border:1px solid var(--gup-border-default);
  border-radius:var(--gup-radius-pill)}
/* 狙い：指標＋方向＋名称。左の線だけ意味の色を借りる（面は neutral のまま）。 */
.bp-aim{font-size:var(--gup-fs-xs);font-weight:var(--gup-font-weight-bold);
  padding:1px var(--gup-sp-2);border-radius:var(--gup-radius-pill);
  background:var(--gup-surface-secondary);border-left:3px solid var(--gup-border-strong)}
/* GUP-MANAGEMENT-ISSUE1：経営課題（Layer 1）と 利益・資金への影響（Layer 2）。
   ★新しい色を作らない（影響の色は既存の lever token をそのまま借りる）。
   ★コンパクトに置く。大きな空カードも大きな余白も作らない。 */
.ba-iss{display:flex;flex-direction:column;gap:var(--gup-sp-1);margin-bottom:var(--gup-sp-2);}
.ba-iss-h{display:flex;align-items:baseline;flex-wrap:wrap;gap:var(--gup-sp-1) var(--gup-sp-2);}
.ba-iss-h b{font-size:var(--gup-fs-base);}
.ba-iss-q{font-size:var(--gup-fs-note);color:var(--gup-text-secondary);}
.ba-iss-edit{margin-left:auto;}
.ba-iss-none{font-size:var(--gup-fs-sm);color:var(--gup-text-secondary);}
.ba-iss-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--gup-sp-1);}
.ba-iss-it{display:flex;align-items:baseline;flex-wrap:wrap;gap:var(--gup-sp-1) var(--gup-sp-2);}
.ba-iss-rank{font-size:var(--gup-fs-note);color:var(--gup-text-secondary);flex:none;min-width:3.5em;}
.ba-iss-t{font-size:var(--gup-fs-sm);}
.ba-iss-note{font-size:var(--gup-fs-note);color:var(--gup-text-secondary);}
.ba-iss-imp{display:inline-flex;align-items:center;flex-wrap:wrap;gap:var(--gup-sp-1);}
.ba-iss-k{font-size:var(--gup-fs-note);color:var(--gup-text-secondary);}
.ba-iss-unk{font-size:var(--gup-fs-note);color:var(--gup-text-secondary);}
.ba-iss-chip{font-size:var(--gup-fs-note);padding:0 var(--gup-sp-1);}
.ba-iss-chip--b{min-height:var(--gup-control-compact);cursor:pointer;}
.ba-iss-ed{display:flex;flex-direction:column;gap:var(--gup-sp-1);padding:var(--gup-sp-2) 0;
  border-top:1px solid var(--gup-border-default);}
.ba-iss-edh{display:flex;align-items:center;flex-wrap:wrap;gap:var(--gup-sp-1) var(--gup-sp-2);}
.ba-iss-in{flex:1 1 16em;min-width:0;min-height:var(--gup-control-compact);}
.ba-iss-in--note{flex:1 1 100%;}
.ba-iss-imped{display:flex;align-items:center;flex-wrap:wrap;gap:var(--gup-sp-1);}
.ba-iss-add{align-self:flex-start;}
.bp-aim--P{border-left-color:var(--ui-p)}
.bp-aim--V{border-left-color:var(--ui-v)}
.bp-aim--Q{border-left-color:var(--ui-q)}
.bp-aim--F{border-left-color:var(--ui-f)}
.bp-aim--WC{border-left-color:var(--ui-wc-pay)}
.bp-aim--unset{color:var(--gup-text-secondary)}
/* UX-SYSTEM1A：鉛筆は共通の .gup-icon-btn--inline（見た目は行の高さのまま、当たり判定 34px）。ここは配置だけ。 */
.bp-pen{flex:none}
.bp-title{margin:0;font-size:var(--gup-fs-lg);font-weight:var(--gup-font-weight-bold);
  line-height:1.3;overflow-wrap:anywhere}
.bp-kv{margin:0;display:flex;flex-direction:column;gap:2px}
.bp-kv > div{display:flex;gap:var(--gup-sp-2);align-items:baseline;min-width:0}
.bp-kv dt{flex:0 0 84px;font-size:var(--gup-fs-xs);color:var(--gup-text-secondary)}
.bp-kv dd{margin:0;flex:1 1 auto;min-width:0;font-size:var(--gup-fs-sm);
  overflow-wrap:anywhere;display:flex;flex-wrap:wrap;gap:var(--gup-sp-1);align-items:baseline}
.bp-none{color:var(--gup-text-secondary)}
.bp-fact{display:inline-flex;align-items:baseline;gap:var(--gup-sp-1);min-width:0}
.bp-fact > i{font-style:normal;font-size:var(--gup-fs-note);color:var(--gup-text-secondary);
  white-space:nowrap}
.bp-fact.is-missing{color:var(--gup-text-secondary);text-decoration:line-through}
/* UX-SYSTEM1A：「詳細を読む」「外す」は共通の .gup-cmd（読む側の命令。当たり判定 34px）。 */
.bp-card-f{margin-top:auto;padding-top:var(--gup-sp-1);
  border-top:1px solid var(--gup-border-default);display:flex;gap:var(--gup-sp-2)}
.bp-pager{display:flex;align-items:center;gap:var(--gup-sp-2);margin-top:var(--gup-sp-2)}
.bp-pg-n{font-size:var(--gup-fs-note);color:var(--gup-text-secondary)}

/* ---- 詳細（read-only） ---- */
.bp-dsec{margin-top:var(--gup-sp-2)}
.bp-dsec h4{margin:0;font-size:var(--gup-fs-note);color:var(--gup-text-secondary);
  font-weight:var(--gup-font-weight-regular)}
.bp-dsec p{margin:0;font-size:var(--gup-fs-sm);overflow-wrap:anywhere}
.bp-dlist{margin:0;padding-left:var(--gup-sp-3);font-size:var(--gup-fs-sm)}
.bp-dlist > li{overflow-wrap:anywhere}
.bp-dlist > li > b,.bp-notes > li > b{font-size:var(--gup-fs-note);
  color:var(--gup-text-secondary);font-weight:var(--gup-font-weight-regular);
  margin-right:var(--gup-sp-1)}
.bp-dlist > li.is-missing{color:var(--gup-text-secondary)}
.bp-dd{display:block;font-size:var(--gup-fs-note);color:var(--gup-text-secondary)}
.bp-dsec--meta{border-top:1px solid var(--gup-border-default);padding-top:var(--gup-sp-1)}

/* ---- 入力面：左 方針の内容 ／ 右 分析との接続 ---- */
.bp-ed-cols{display:flex;gap:var(--gup-sp-3);align-items:flex-start;flex-wrap:wrap}
.bp-ed-l{flex:1 1 420px;min-width:0;display:flex;flex-direction:column;gap:var(--gup-sp-1)}
.bp-ed-r{flex:1 1 420px;min-width:0;display:flex;flex-direction:column;gap:var(--gup-sp-1)}
/* 短い control は横に並べる（縦に積むと標準ケースが 1 画面へ収まらない）。 */
.bp-row{display:flex;gap:var(--gup-sp-2);align-items:flex-start;flex-wrap:wrap}
.bp-row > .bp-fld{flex:1 1 200px}
/* 「← 一覧へ戻る」は .gup-cmd。矢印付きなので下線は要らない。 */
.bp-back{padding-right:var(--gup-sp-2);text-decoration:none;font-size:var(--gup-fs-sm)}
.bp-fld{display:flex;flex-direction:column;gap:var(--gup-sp-1);min-width:0}
.bp-lbl{font-size:var(--gup-fs-note);color:var(--gup-text-secondary);
  display:flex;align-items:baseline;gap:var(--gup-sp-1)}
.bp-lbl > em{font-style:normal;font-size:var(--gup-fs-note);color:var(--gup-text-secondary)}
.bp-cnt{margin-left:auto}
.bp-hint{font-size:var(--gup-fs-note);color:var(--gup-text-secondary);overflow-wrap:anywhere}
.bp-fld textarea,.bp-fld input[type="text"],.bp-fld select{width:100%;min-width:0}
.bp-aims,.bp-scopes{display:flex;gap:var(--gup-sp-1);flex-wrap:wrap}
/* UX-SYSTEM1A：狙い・適用対象は共通の SEGMENTED（.gup-seg）。面・枠・文字色・選択表現はそちら。
   ここは並びと、どのレバーかを示す左端の線だけ（.bp-aims > で共通規則より詳細度を上げる）。 */
.bp-aims > .bp-aim-b{display:flex;align-items:baseline;gap:var(--gup-sp-1);
  padding:var(--gup-sp-1) var(--gup-sp-2);border-left-width:3px}
.bp-aim-b > b{font-size:var(--gup-fs-base);font-weight:var(--gup-font-weight-bold)}
.bp-aim-b > span{font-size:var(--gup-fs-note);color:var(--gup-text-secondary)}
/* 選んでいる状態。**［方針を保存］と同じ solid blue にしない**（DESIGN.md §E）。
   選択専用の面と枠（ゴールド）＋ 文字を濃く太く、の 3 つで言う。
   この規則をレバー色より前に置くので、左端の色（どのレバーか）はそのまま残る。 */
.bp-aim-b.is-on > span{color:var(--gup-text-primary)}
.bp-aims > .bp-aim-b.bp-aim--P{border-left-color:var(--ui-p)}
.bp-aims > .bp-aim-b.bp-aim--V{border-left-color:var(--ui-v)}
.bp-aims > .bp-aim-b.bp-aim--Q{border-left-color:var(--ui-q)}
.bp-aims > .bp-aim-b.bp-aim--F{border-left-color:var(--ui-f)}
.bp-aims > .bp-aim-b.bp-aim--WC{border-left-color:var(--ui-wc-pay)}
/* .bp-scope-b は共通 .gup-seg の button そのまま。 */
.bp-picks,.bp-areas{display:flex;gap:var(--gup-sp-1);flex-wrap:wrap}
.bp-areas > .bp-pick{flex:1 1 22%}
.bp-pick{display:flex;align-items:center;gap:var(--gup-sp-1);cursor:pointer;
  font-size:var(--gup-fs-sm);padding:1px var(--gup-sp-2);
  border:1px solid var(--gup-border-default);border-radius:var(--gup-radius-sm);
  background:var(--gup-surface-primary)}
.bp-pick.is-on{background:var(--gup-surface-secondary);border-color:var(--gup-border-strong)}
.bp-gone{display:flex;flex-wrap:wrap;gap:var(--gup-sp-1);align-items:baseline;
  font-size:var(--gup-fs-note);color:var(--gup-text-secondary)}
.bp-gone > b{font-weight:var(--gup-font-weight-regular)}

/* 根拠タブと候補 */
.bp-tabs{display:flex;gap:var(--gup-sp-1);flex-wrap:wrap;
  border-bottom:1px solid var(--gup-border-default)}
/* UX-SYSTEM1A：根拠タブは共通の .gup-subtabs（view 切替と同じ TAB 文法）。EDIT の縦を守るため間隔だけ詰める。 */
.bp-tabs.gup-subtabs{margin-bottom:0}
.bp-tabs.gup-subtabs > button{min-height:var(--gup-control-compact);padding:0 var(--gup-sp-3);font-size:var(--gup-fs-sm)}
.bp-search > input{width:100%;min-height:var(--gup-control-compact);font-size:var(--gup-fs-sm)}
.bp-cands{display:flex;flex-direction:column;gap:var(--gup-sp-1);
  max-height:196px;overflow-y:auto}
.bp-cand{display:flex;align-items:flex-start;gap:var(--gup-sp-1);cursor:pointer;
  padding:var(--gup-sp-1) var(--gup-sp-2);min-width:0;
  border:1px solid var(--gup-border-default);border-radius:var(--gup-radius-sm);
  background:var(--gup-surface-primary)}
.bp-cand.is-on{background:var(--gup-surface-secondary);border-color:var(--gup-border-strong)}
.bp-cand-b{display:flex;flex-direction:column;min-width:0}
.bp-cand-b > i{font-style:normal;font-size:var(--gup-fs-note);color:var(--gup-text-secondary)}
.bp-cand-b > b{font-size:var(--gup-fs-sm);overflow-wrap:anywhere}
.bp-cand-b > span{font-size:var(--gup-fs-note);color:var(--gup-text-secondary);
  overflow-wrap:anywhere}
.bp-add{display:flex;flex-direction:column;gap:var(--gup-sp-1)}
.bp-notes{margin:0;padding-left:var(--gup-sp-3);font-size:var(--gup-fs-sm)}
.bp-notes > li{overflow-wrap:anywhere}
.bp-addbox{display:flex;flex-direction:column;gap:var(--gup-sp-1);
  padding:var(--gup-sp-2);border:1px solid var(--gup-border-default);
  border-radius:var(--gup-radius-sm);background:var(--gup-surface-secondary)}
.bp-addb{display:flex;gap:var(--gup-sp-2);justify-content:flex-end}

/* 保存・キャンセルは下部の一定位置。error を出しても入力欄と重ならない。 */
.bp-ed-msg{font-size:var(--gup-fs-sm);margin-top:var(--gup-sp-2)}
.bp-ed-msg.is-err{color:var(--gup-negative)}
.bp-ed-foot{display:flex;align-items:center;gap:var(--gup-sp-2);flex-wrap:wrap;
  margin-top:var(--gup-sp-1);padding-top:var(--gup-sp-1);
  border-top:1px solid var(--gup-border-default)}
.bp-ed-foot > .bp-hint{flex:1 1 240px}
.bp-ed-btns{display:flex;gap:var(--gup-sp-2)}

/* ---- THREE-FUTURES1：顧客の未来（顧客カードの 1 行）---- */
.bk-fut{margin-top:var(--gup-sp-1);display:flex;flex-direction:column;min-width:0}
.bk-fut .k{font-size:var(--gup-fs-xs);color:var(--gup-text-secondary);line-height:1.3}
.bk-fut .v{font-size:var(--gup-fs-sm);overflow-wrap:anywhere;line-height:var(--gup-lh-compact)}
.bk-fut-b{color:var(--gup-text-secondary)}
.bk-fut-ar{color:var(--gup-text-secondary);margin:0 var(--gup-sp-1)}
.bk-fut-a{color:var(--gup-text-primary)}
.bk-ed-fut-q{font-size:var(--gup-fs-xs);color:var(--gup-text-secondary)}
/* ---- THREE-FUTURES1：自社の未来（5年後）---- */
.bs-lg i.bs-lg-fut{border-top-style:dotted;border-top-color:var(--gup-text-primary)}
.bs-fut-cell{display:inline-flex;align-items:baseline;flex-wrap:wrap}
.bs-fut-ar{color:var(--gup-text-secondary);margin:0 var(--gup-sp-1)}
.bs-fut-v{color:var(--gup-text-primary)}

/* ============================================================================
   CAPITAL-UI1 — ④ 投資戦略（この投資をやるべきか）

   ★共通の部品だけを使う（.gup-btn / .gup-seg / .gup-kpi / .gup-table / .gup-msg …）。
     ここに置くのは **並べ方**だけで、色・文字サイズ・余白の直値を作らない。
   ★面の入れ子は 2 層まで（外の card ＋ 中の subtle）。
   ★幅は 折返し（flex-wrap）と auto-fit で吸収するのが第一（1440 / 1280 / 390）。
     ⚠ 例外は 1 つだけ。CAPITAL-MOBILE-MICRO1 で狭い画面（≤719px）の並べ替えを足した。
       「見出しと値を同じ行に置く」は 折返しでも auto-fit でも表せない（狭いときだけ
       横に並べたいのに、折返しは逆向きにしか効かない）ため。境目の値は既存の 719px を
       そのまま使い、**新しい境目は作っていない**。この file の他の規則は幅の条件を持たない。
   ★色は semantic token だけ。生の hex を作らない。
   ============================================================================ */

/* ---- 操作の帯（案件・見方・前提）------------------------------------------
   1 行に「どの案件を」「どの見方で」「どの前提で」読むかをまとめる。
   ★どれも表示の切替なので保存しない。 */
/* ★行の間だけ 1 段詰める。狭い画面では帯が 3 行に折り返すので、ここの余白が
   そのまま「判断そのもの」を最初の画面から押し出す（実測 390px で 8px ぶん）。
   列の間は詰めない（label と control がくっついて読みにくくなる）。 */
.cap-bar{ display:flex; flex-wrap:wrap; align-items:center;
  column-gap:var(--gup-sp-3); row-gap:var(--gup-sp-2); }
.cap-bar__grp{ display:flex; align-items:center; gap:var(--gup-sp-2); min-width:0; }
.cap-bar__lab{ font-size:var(--gup-fs-note); color:var(--gup-color-text-secondary); white-space:nowrap; }
.cap-bar__sel{ min-width:0; max-width:280px; }
/* 案件が 1 件のときの名前。select と同じ位置・同じ幅・同じ高さの範囲に置く。
   ★高さを control とそろえるのは、案件が 1 件でも 2 件以上でも **帯の位置が動かない**ようにするため
     （そろえないと 24px と 40px で帯の行の高さが変わり、下の内容ごと 5px 上下する）。
   ★切り詰めない（… で隠さない・ツールチップだけにしない）。長い名前は自然に折り返す。 */
.cap-bar__name{ min-width:0; max-width:280px; overflow-wrap:anywhere;
  display:flex; align-items:center; min-height:var(--gup-control-standard); }
.cap-bar__spacer{ flex:1 1 auto; }

/* ---- 本体：主図（会社Cash推移）と右の列 ------------------------------------
   ★DOM の並びがそのまま情報の順（CSS の order で見た目だけ入れ替えない）。 */
.cap-cols{ display:flex; flex-wrap:wrap; align-items:flex-start; gap:var(--gup-sp-2); }
.cap-main{ flex:2 1 400px; min-width:0; }
/* ★右の列は 3 枚を **横に**並べる。縦に積むと、主図（会社Cash推移）が短いのに
   ページ全体が 3 枚ぶんの高さになり、1440×765 の 1 画面に収まらない（実測 525px）。
   狭い画面では auto-fit がそのまま 1 列へ落ちるので、ブレークポイントは要らない。 */
.cap-side{ flex:3 1 520px; min-width:0; display:grid; gap:var(--gup-sp-2);
  grid-template-columns:repeat(auto-fit, minmax(196px, 1fr)); align-items:start; }
.cap-bottom{ display:grid; gap:var(--gup-sp-2);
  grid-template-columns:repeat(auto-fit, minmax(280px, 1fr)); }

/* この画面だけ、面の内側を 1 段詰める（共通の card / KPI の値は変えない）。
   判断に要るものを 1 画面へ収めるための **余白の調整**で、文字は 1px も小さくしない。 */
#capitalPane .card{ padding:var(--gup-sp-3); }
#capitalPane .gup-kpi{ padding:var(--gup-sp-1) var(--gup-sp-3); }
#capitalPane .gup-summary__grid{ gap:var(--gup-sp-1); }
/* この画面のブロックどうしの間も 1 段詰める（共通の値は変えない）。 */
#capitalPane > * + *{ margin-top:var(--gup-sp-2); }

/* ---- 小さな明細（項目 … 値）------------------------------------------------
   右の列と DETAIL で同じ形を使う。表にするほどの列が無いものはここへ。 */
.cap-kv{ display:flex; flex-direction:column; gap:2px; margin:0; }
.cap-kv__row{ display:flex; align-items:baseline; gap:var(--gup-sp-2);
  font-size:var(--gup-fs-sm); line-height:var(--gup-lh-compact); }
.cap-kv__row + .cap-kv__row{ border-top:1px solid var(--gup-color-border); padding-top:2px; }
.cap-kv__k{ color:var(--gup-color-text-secondary); min-width:0; }
.cap-kv__v{ margin-left:auto; font-variant-numeric:tabular-nums; white-space:nowrap; }
.cap-kv__row--sub .cap-kv__k{ padding-left:var(--gup-sp-3); font-size:var(--gup-fs-note); }
.cap-kv__row--sub .cap-kv__v{ font-size:var(--gup-fs-note); color:var(--gup-color-text-secondary); }
/* 合計の行だけは階層として太字（装飾では使わない）。 */
.cap-kv__row--total{ border-top:1px solid var(--gup-color-border-strong); padding-top:var(--gup-sp-1); }
.cap-kv__row--total .cap-kv__v{ font-weight:var(--gup-fw-semibold); }

/* ---- 守る条件 --------------------------------------------------------------
   ★条件を満たしたかどうかは **判定**であって、採否の決定ではない。
     だから記号は「満たす／満たさない／算定できない」の 3 つだけで、
     採用・見送りの語は使わない。 */
.cap-cond{ display:flex; flex-direction:column; gap:var(--gup-sp-1); margin:0; }
.cap-cond__row{ display:flex; align-items:baseline; gap:var(--gup-sp-2); font-size:var(--gup-fs-sm); }
.cap-cond__mark{ flex:0 0 auto; font-variant-numeric:tabular-nums; }
.cap-cond__row--met .cap-cond__mark{ color:var(--gup-color-positive); }
.cap-cond__row--miss .cap-cond__mark{ color:var(--gup-color-negative); }
.cap-cond__v{ margin-left:auto; font-variant-numeric:tabular-nums; white-space:nowrap; }

/* ---- 次の意思決定 ---------------------------------------------------------- */
.cap-next{ display:flex; flex-direction:column; gap:var(--gup-sp-2); }
.cap-next__now{ font-size:var(--gup-fs-sm); color:var(--gup-color-text-secondary); }

/* ---- ストレステスト（Base と Downside を並べて読む）------------------------ */
.cap-st-tbl th.cap-st-num, .cap-st-tbl td.cap-st-num{ text-align:right; font-variant-numeric:tabular-nums; }
.cap-st-note{ font-size:var(--gup-fs-note); color:var(--gup-color-text-secondary); margin:var(--gup-sp-1) 0 0; }
.cap-st-assum{ display:flex; flex-direction:column; gap:var(--gup-sp-2); }
.cap-st-cell{ border:1px solid var(--gup-color-border); border-radius:var(--gup-radius-sm);
  padding:var(--gup-sp-2); background:var(--gup-color-surface-subtle); }
.cap-st-cell__h{ display:flex; align-items:baseline; gap:var(--gup-sp-2);
  font-size:var(--gup-fs-sm); font-weight:var(--gup-fw-semibold); }
.cap-st-cell__h .cap-st-cell__mq{ margin-left:auto; font-weight:var(--gup-font-weight-regular);
  font-variant-numeric:tabular-nums; color:var(--gup-color-text-secondary); }

/* ---- 編集（共通 shell と同じ形）-------------------------------------------- */
.cap-editor{ margin:0 0 var(--gup-sp-3); padding:var(--gup-sp-2) var(--gup-sp-3);
  background:var(--gup-surface-primary); border:1px solid var(--gup-border-strong);
  border-radius:var(--gup-radius-md); }
.cap-editor:empty{ display:none; }
.gup-subpanel > .cap-editor:empty + *{ margin-top:0; }
.cap-ed-head{ display:flex; align-items:baseline; gap:var(--gup-sp-2); flex-wrap:wrap;
  position:sticky; top:var(--gup-app-header-h, 0px); z-index:2; background:var(--gup-surface-primary);
  margin:-8px -12px var(--gup-sp-2); padding:var(--gup-sp-2) var(--gup-sp-3);
  border-bottom:1px solid var(--gup-border-default); }
.cap-ed-head .cap-ed-sub{ font-size:var(--gup-fs-note); color:var(--gup-text-secondary); }
.cap-ed-head .cap-ed-btns{ margin-left:auto; display:flex; gap:var(--gup-sp-2); }
.cap-ed-sec{ font-size:var(--gup-fs-note); color:var(--gup-color-text-secondary);
  margin:var(--gup-sp-3) 0 var(--gup-sp-1); }
/* 資金調達は案件そのものとは別の owner なので、面で分ける（同じ入れ物に見せない）。 */
.cap-ed-fin{ margin-top:var(--gup-sp-3); padding-top:var(--gup-sp-3);
  border-top:1px solid var(--gup-color-border-strong); }
.cap-ed-rows{ display:flex; flex-direction:column; gap:var(--gup-sp-1); }
.cap-ed-row{ display:flex; flex-wrap:wrap; gap:var(--gup-sp-1); align-items:center;
  border:1px solid var(--gup-color-border); border-radius:var(--gup-radius-sm);
  padding:var(--gup-sp-1) var(--gup-sp-2); background:var(--gup-color-surface-subtle); }
.cap-ed-row > *{ flex:1 1 148px; min-width:0; }
/* 役割ごとの幅。数字は「その欄に入る文字数」から決める。 */
.cap-ed-row > .f-cell{ flex:2 1 220px; }     /* 管理単位 × 商品 */
.cap-ed-row > .f-lev{ flex:0 0 96px; }       /* P / V / Q */
.cap-ed-row > .f-mode{ flex:0 0 120px; }     /* 率 / 増減 / 目標 */
.cap-ed-row > .f-num{ flex:0 0 108px; }      /* 数値 */
.cap-ed-row > .f-mon{ flex:0 0 108px; }      /* 月 */
.cap-ed-row > .f-txt{ flex:3 1 260px; }
.cap-ed-row > .f-del{ flex:0 0 auto; }
.cap-ed-row input, .cap-ed-row select, .cap-ed-row textarea{ width:100%; min-width:0; }
.cap-ed-err{ font-size:var(--gup-fs-sm); color:var(--gup-color-negative); margin-top:var(--gup-sp-1); }
.cap-ed-hint{ font-size:var(--gup-fs-note); color:var(--gup-color-text-secondary); margin:var(--gup-sp-1) 0 0; }

/* ---- 狭い画面（≤719px）だけ、判断材料の並べ方を詰める -----------------------
   CAPITAL-SAMPLE2-POLISH1 で帯へ「いまどの案件を読んでいるか」の行が 1 行増えた。
   390px では帯が 3 行に折り返すので、実測 barH 76 → 124px（+48）。そのぶん
   概算回収期間・投資後の最低Cash が最初の画面から 43px 外れていた（839 → 887 ／ 844）。

   直し方は **並べ方だけ**（Founder 判断）。
     ★文字は 1px も小さくしない（重要な数字を読めなくして解決しない）。
     ★desktop（720px 以上）は 1px も変えない。
     ★項目を減らさない。6 つとも残す。
   狭いときだけ、KPI の中の余白を行間へ預け、見出しと値を同じ行へ置いて、
   注記だけを次の行へ回す（幅が足りない見出しは今までどおり折り返す）。
   実測：1 枚 77 → 61px ／ 判断材料の高さ 256 → 190px ／ いちばん下 887 → 821px（余白 23px）。

   ⚠ ブレークポイントの値は既存の 719px をそのまま使う（新しい境目を作らない）。
     この画面だけで完結する狭幅の並べ替えなので、共通層（shared-ui.css）へは書かない
     （共通層は画面固有の id を名指ししない契約）。 */
@media (max-width:719px){
  #capitalPane .gup-kpi{
    flex-direction:row; flex-wrap:wrap; align-items:baseline;
    column-gap:var(--gup-sp-2); row-gap:0;
    /* 上下の余白は行間（grid の row-gap）に預ける。左右は残す（文字が面の端に付かない）。 */
    padding-block:0;
  }
  /* 見出しは残りを埋め、値は右端へ寄る（どの数字がどの見出しかを離さない）。 */
  #capitalPane .gup-kpi__label{ flex:1 1 auto; min-width:0; }
  #capitalPane .gup-kpi__value{ flex:0 0 auto; }
  /* 注記だけは必ず次の行（値と混ざらない）。 */
  #capitalPane .gup-kpi__note{ flex:1 0 100%; }
  /* GUP-SIMPLIFY1（SP-42）：案件バーは 狭い画面で 3 行に折り返す。
     ★行の間だけ詰め、control は compact の高さにする。
       項目（投資案件 ／ 見方 ／ 前提 ／ 案件を追加）は 1 つも減らしていない。 */
  #capitalPane .cap-bar{ row-gap:var(--gup-sp-1); }
  #capitalPane .cap-bar .gup-btn,
  #capitalPane .cap-bar .gup-select{ min-height:var(--gup-control-compact); }
  #capitalPane .cap-bar__name{ min-height:var(--gup-control-compact); }
}

/* ============================================================================
   FINANCIAL-NAVI1 — 決算書ナビ（前期末B/S → 当期P/L・C/F → 当期末B/S）

   ★共通の部品だけを使う（.gup-table / .gup-input / .gup-btn / .gup-msg / .gup-kpi …）。
     ここに置くのは **並べ方**だけで、色・文字サイズ・余白の直値を作らない。
   ★色は semantic token だけ。生の hex を作らない。
   The diagram owns its geometry; input and detail retain shared controls.
   ============================================================================ */

/* ---- B/S を入力（11 行 × 前期末・当期末）----------------------------------
   入力画面では表がいちばん速いので、装飾カードへ分割しない。 */
.bs-ed-head{ font-size:var(--gup-fs-note); color:var(--gup-color-text-secondary);
  margin:0 0 var(--gup-sp-2); }
.bs-ed-table{ table-layout:fixed; min-width:0; }
.bs-ed-table th[scope="col"]{ text-align:right; }
.bs-ed-table th[scope="col"]:first-child{ text-align:left; }
.bs-ed-table th[scope="row"]{ text-align:left; white-space:nowrap; }
.bs-ed-table td{ text-align:right; }
/* 時点は見出しの中で 1 度だけ言う（各行へ日付を繰り返さない）。 */
.bs-ed-date{ display:block; font-size:var(--gup-fs-note); color:var(--gup-color-text-secondary); }
/* 区分（資産 / 負債 / 純資産）の見出し行。面を足さず、余白と文字だけで分ける。 */
.bs-ed-table .bs-ed-group th{ padding-top:var(--gup-sp-3);
  font-size:var(--gup-fs-note); color:var(--gup-color-text-secondary); }
/* 既存の入力から来ている科目。**編集面にしない**（二重入力させない）。 */
.bs-ed-fixed{ color:var(--gup-color-text-secondary); font-variant-numeric:tabular-nums; }
.bs-ed-note{ display:block; font-size:var(--gup-fs-note); color:var(--gup-color-text-secondary); }
.bs-ed-table input{ width:100%; min-width:0; text-align:right; }
.bs-ed-table tfoot th, .bs-ed-table tfoot td{ font-variant-numeric:tabular-nums; }
/* 差額の行。**色で良し悪しを言わない**（貸借が合わないのは業績の良し悪しではない）。 */
.bs-ed-table tfoot .bs-ed-gap td{ color:var(--gup-color-text-secondary); }
.bs-ed-hint{ font-size:var(--gup-fs-note); color:var(--gup-color-text-secondary);
  margin:var(--gup-sp-2) 0 0; }
/* 狭い画面では表ごと横へ流す（文字を小さくして押し込まない）。 */
.bs-ed{ min-width:0; }
.bs-ed .bs-ed-table{ width:100%; }

/* Dedicated sheet: standard BS at 1440 x 765 / 100%, without nested cards. */
html:has(dialog.bsw-dialog[open]){overflow:hidden;}
/* GUP-AIR-SURFACE1（補正 A）：この dialog は --gup-color-bg（＝ App Canvas）で塗られていた。
   前面と床が同じ役割だったので、前面の役割（--gup-surface-overlay）へ移した。
   ★影も枠の太さも modal の構造も変えていない。役割の宛先だけを直している。
   ★暗い 2 配色は themes.css がこの役割を各配色の canvas へ固定するので、見た目は不変。 */
.bsw-dialog{width:min(1280px,calc(100vw - 32px));max-width:none;max-height:calc(100dvh - 24px);padding:0;border:1px solid var(--gup-color-border);border-radius:var(--gup-radius-sm);background:var(--gup-surface-overlay);color:var(--gup-color-text-primary);overflow:auto;}
.bsw-dialog::backdrop{background:rgb(0 0 0 / .64);}
.bsw-dialog{overscroll-behavior:contain;}
.bsw{padding:var(--gup-sp-3) var(--gup-sp-5);position:relative;min-width:0;font-size:var(--gup-fs-sm);}
.bsw-header{display:flex;align-items:center;justify-content:space-between;gap:var(--gup-sp-4);position:sticky;top:0;z-index:2;background:var(--gup-surface-overlay);padding:0 0 var(--gup-sp-3);border-bottom:1px solid var(--gup-color-border);}
.bsw-header h2{font-size:var(--gup-fs-xl);margin:0 0 var(--gup-sp-1);}
.bsw-header span,.bsw-footer,.bsw-note{color:var(--gup-color-text-secondary);font-size:var(--gup-fs-note);}
.bsw-header .gup-actions{margin:0;flex-shrink:0;}
.bsw-toolbar{display:flex;align-items:center;gap:var(--gup-sp-4);margin:var(--gup-sp-3) 0;min-height:34px;flex-wrap:wrap;}
.bsw-toolbar>span{margin-left:auto;}
.bsw-toolbar label{display:flex;align-items:center;gap:var(--gup-sp-2);}
.bsw-columns{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:calc(var(--gup-sp-5) + var(--gup-sp-1));}
.bsw-group{min-width:0;margin:0;}
.bsw-group h3{font-size:var(--gup-fs-sm2);line-height:20px;margin:0;padding:var(--gup-sp-1) 0 var(--gup-sp-1) calc(calc(var(--gup-sp-4) + var(--gup-sp-1)) / 2);border-left:3px solid var(--gup-fn-asset-fill);}
.bsw-group--liability h3{border-color:var(--gup-fn-debt-border);}
.bsw-group--equity h3{border-color:var(--gup-fn-equity-fill);}
.bsw-group--equity{margin-top:var(--gup-sp-2);}
.bsw-table{width:100%;table-layout:fixed;min-width:0;}
.bsw-table th,.bsw-table td{padding:var(--gup-sp-1) calc(var(--gup-sp-3) / 2);font-size:var(--gup-fs-sm);line-height:20px;}
.bsw-table thead th{font-size:var(--gup-fs-note);text-align:right;font-weight:400;}
.bsw-table thead th:first-child{width:31%;text-align:left;}
.bsw-table thead span{display:block;color:var(--gup-color-text-secondary);}
.bsw-table tbody th{text-align:left;font-weight:400;white-space:normal;}
.bsw-table td{text-align:right;}
.bsw-table tbody tr:first-child th{font-weight:700;}
.bsw-number{width:100%;min-width:0;height:32px;min-height:32px;padding:var(--gup-sp-1) var(--gup-sp-2);font-size:var(--gup-fs-sm);text-align:right;font-variant-numeric:tabular-nums;color:var(--gup-color-text-primary);background:var(--input-bg);/* GUP-AIR-SURFACE1：入力面の役割で塗る */}
.bsw-residual{height:34px;}
.bsw-residual th span{font-size:var(--gup-fs-note);font-weight:400;color:var(--gup-color-text-secondary);margin-left:var(--gup-sp-2);}
.bsw-checkline{display:flex;gap:var(--gup-sp-4);align-items:center;flex-wrap:wrap;border-top:1px solid var(--gup-color-border);margin-top:calc(calc(var(--gup-sp-4) + var(--gup-sp-1)) / 2);padding-top:calc(calc(var(--gup-sp-4) + var(--gup-sp-1)) / 2);font-size:var(--gup-fs-xs);}
.bsw-checkline button{margin-left:auto;}
.bsw-warning,.bsw-error{color:var(--gup-color-warning);}
.bsw-footer{margin-top:calc(var(--gup-sp-3) / 2);line-height:18px;}
.bsw-flow-head{display:flex;justify-content:space-between;margin:var(--gup-sp-4) 0;gap:var(--gup-sp-3);}
.bsw-plan-result{display:flex;flex-wrap:wrap;gap:calc(var(--gup-sp-4) + var(--gup-sp-1));border-top:1px solid var(--gup-color-border);padding-top:var(--gup-sp-4);}
.bsw-plan-result b{margin-left:var(--gup-sp-2);font-size:var(--gup-fs-lg);}
.bsw-flow-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:calc(calc(var(--gup-sp-6) + var(--gup-sp-1)) / 2) calc(var(--gup-sp-6) + var(--gup-sp-1));max-width:960px;margin:var(--gup-sp-4) 0;}
.bsw-flow-grid label{display:grid;grid-template-columns:minmax(0,1fr) minmax(100px,1fr);align-items:center;gap:var(--gup-sp-3);}
.bsw-cf-mode{display:flex;align-items:center;gap:var(--gup-sp-4);margin:var(--gup-sp-5) 0;}
.bsw-parts{min-height:300px;background:var(--gup-surface-overlay);padding:0 var(--gup-sp-2) var(--gup-sp-3);}
.bsw-parts header{display:flex;align-items:center;justify-content:space-between;position:sticky;top:0;background:var(--gup-surface-overlay);z-index:1;}
.bsw-part{display:grid;grid-template-columns:1fr 1.4fr 1fr 1fr auto auto;gap:var(--gup-sp-3);align-items:end;padding:calc(calc(var(--gup-sp-5) + var(--gup-sp-1)) / 2) 0;border-bottom:1px solid var(--gup-color-border);}
.bsw-part label{display:grid;gap:calc(var(--gup-sp-3) / 2);min-width:0;font-size:var(--gup-fs-note);}
.bsw-part .gup-input{width:100%;min-width:0;font-size:var(--gup-fs-sm);}
.bsw-part .bsw-check{display:flex;align-items:center;align-self:center;}
.bsw-note{margin:var(--gup-sp-2) 0 0;}
.maw-scope,.maw-summary,.maw-confirm,.maw-stock-summary{display:flex;align-items:center;gap:var(--gup-sp-4);flex-wrap:wrap;}
.maw-scope{justify-content:space-between;margin:var(--gup-sp-3) 0;}
.maw-scope label{display:flex;align-items:center;gap:var(--gup-sp-3);min-width:0;}
.maw-scope select{max-width:300px;}
.maw-summary{font-size:var(--gup-fs-sm);color:var(--gup-color-text-secondary);}
.maw-summary b{font-size:var(--gup-fs-lg);color:var(--gup-color-text-primary);}
.maw-columns{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(0,1fr);gap:var(--gup-sp-5);min-height:390px;}
.maw-section{min-width:0;}
.maw-section header{display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--gup-color-border);padding:var(--gup-sp-2) 0;}
.maw-section h3{font-size:var(--gup-fs-md);margin:0;}
.maw-section header>span,.maw-count,.maw-table label>span,.maw-table small{font-size:var(--gup-fs-note);color:var(--gup-color-text-secondary);}
.maw-count{font-weight:400;}
.maw-mode .bsw-toolbar .gup-seg button{min-width:166px;}
.maw-table{width:100%;min-width:0;table-layout:fixed;}
.maw-table th,.maw-table td{padding:var(--gup-sp-2) var(--gup-sp-1);font-size:var(--gup-fs-sm);}
.maw-table th{text-align:left;font-weight:400;overflow-wrap:anywhere;white-space:normal;width:31%;}
.maw-table small{display:block;font-weight:400;}
.maw-table label{display:grid;gap:var(--gup-sp-1);}
.maw-section:nth-child(2) .maw-table th{width:64%;}
.maw-pages{display:flex;justify-content:flex-end;align-items:center;gap:var(--gup-sp-3);margin-top:var(--gup-sp-2);}
.maw-confirm{justify-content:space-between;border-top:1px solid var(--gup-color-border);padding-top:var(--gup-sp-2);margin-top:var(--gup-sp-2);font-size:var(--gup-fs-sm);}
.maw-confirm>span:last-child{font-size:var(--gup-fs-note);color:var(--gup-color-text-secondary);}
.maw-mode .bsw-table th,.maw-mode .bsw-table td{padding-top:calc(var(--gup-sp-3) / 4);padding-bottom:calc(var(--gup-sp-3) / 4);}
.maw-overview{width:100%;font-size:var(--gup-fs-sm);}
.maw-overview td,.maw-overview thead th{text-align:right;}
.maw-overview th:first-child{text-align:left;}
.maw-overview .maw-selected{background:var(--gup-color-surface);}
.maw-stock-summary{padding:var(--gup-sp-3) 0;font-size:var(--gup-fs-sm);}

/* ---- 決算書ナビ（READ）------------------------------------------------------
   配置は固定：左 B/S ／ 中央上 C/F ／ 中央下 P/L ／ 右 B/S。
   ★幅は auto-fit と折返しで吸収する（新しい境目を作らない）。 */
.fn-navi{ min-width:0; }
.fn-navi__head{ display:flex; flex-wrap:wrap; align-items:baseline;
  column-gap:var(--gup-sp-3); row-gap:var(--gup-sp-1); margin:0 0 var(--gup-sp-2); }
.fn-navi__mode{ font-weight:700; }
.fn-navi__period{ color:var(--gup-color-text-secondary); }
/* 単位は画面に 1 か所だけ（UI-UNIT1）。 */
.fn-navi__unit{ margin-left:auto; font-size:var(--gup-fs-note); color:var(--gup-color-text-secondary); }

/* Columns consume the actual host width; labels are not scaled with an SVG. */
.fn-grid{ display:grid; grid-template-columns:minmax(0,31fr) minmax(0,38fr) minmax(0,31fr); grid-template-rows:auto auto; column-gap:var(--gup-sp-3); row-gap:var(--gup-sp-1); align-items:start; }
.fn-grid > .fn-pane--bs{ display:grid; grid-template-rows:subgrid; grid-row:1 / span 2; align-self:stretch; }
.fn-grid > .fn-pane--bs:first-child{ grid-column:1; }
.fn-grid > .fn-pane--bs:last-child{ grid-column:3; }
.fn-grid > .fn-mid{ grid-column:2; grid-row:1; }
.fn-mid{ display:grid; gap:var(--gup-sp-1); align-content:start; min-width:0; }
.fn-pane{ min-width:0; }
.fn-pane > h3{ display:flex; flex-wrap:wrap; align-items:baseline;
  column-gap:var(--gup-sp-2); margin:0 0 var(--gup-sp-2); }
/* 時点は「いつの姿か」を言う **重要情報**なので、注記の段（12px）へ逃がさない。 */
.fn-pane__at{ font-size:var(--gup-fs-sm); color:var(--gup-color-text-secondary); font-weight:400; }
.fn-bs-table, .fn-pl-table, .fn-cf-table{ table-layout:fixed; min-width:0; }
.fn-bs-table th[scope="row"], .fn-pl-table th[scope="row"], .fn-cf-table th[scope="row"]{
  text-align:left; font-weight:400; }
/* 区分の見出し行。面を足さず、余白と文字だけで分ける。 */
.fn-bs-table .fn-bs-group th{ padding-top:var(--gup-sp-2);
  font-size:var(--gup-fs-sm); color:var(--gup-color-text-secondary); }
.fn-cf-chart{ min-width:0; overflow-x:auto; }
.fn-cf-table .fn-cf-op th, .fn-cf-table .fn-cf-op td{ color:var(--gup-color-text-secondary); }

/* 2 本の橋。★決算書ナビの核なので、内訳より前に置く。
   左の残高 →（当期の増減）→ 右の残高 を、**1 本の矢印**で読ませる。 */
.fn-bridges{ display:grid; gap:var(--gup-sp-2); margin:var(--gup-sp-3) 0 0;
  grid-template-columns:repeat(auto-fit, minmax(280px, 1fr)); }
.fn-bridges--lead{ margin-top:var(--gup-sp-2); }
.fn-bridge{ position:relative; padding:var(--gup-sp-1) var(--gup-sp-3); min-width:0; color:var(--gup-color-text-primary); }
/* PU-12 の検討結果：決算書ナビの 12px は **図の中と図に付く札**（科目名・合計・橋の式・
   営業CF の括り・出所の札・種別の badge）で、本文ではない。
   ★実測：1 段上げると 4 面を 1440×765 で一望する契約が破れ（いちばん下 772px）、
     描画が別の並びを作って B/S の棒も出なくなった。だから 12px のままにする。
   ★図の契約（実効 10px 以上）は満たしている。図の中の金額は 17px。 */
.fn-bridge__equation{ position:relative; display:flex; flex-wrap:wrap; justify-content:center; align-items:baseline; gap:var(--gup-sp-1); font-size:var(--gup-fs-note); }
.fn-bridge__t{ font-weight:700; }
.fn-bridge__from, .fn-bridge__to{ font-variant-numeric:tabular-nums; }
.fn-bridge__to{ font-weight:700; }
/* 矢印は絵。増減はその上に置き、線そのものは意味を持たない（色で良し悪しを言わない）。 */
.fn-bridge__d{ font-size:var(--gup-fs-note); color:var(--gup-color-text-secondary);
  font-variant-numeric:tabular-nums; }
.fn-arrow{ position:absolute; inset:0; display:block; width:100%; height:100%; pointer-events:none; color:var(--gup-fn-line); }
/* 出せない・合わないことは言うが、業績の良し悪しではないので色で判定しない。 */
.fn-bridge__ng{ position:relative; display:block; text-align:center; font-size:var(--gup-fs-note); color:var(--gup-color-text-secondary); }

/* 狭い画面の縦積み。★desktop の図を縮小コピーせず、確かめる順へ並べ替える。 */
.fn-stack{ display:grid; gap:var(--gup-sp-3); align-content:start; min-width:0;
  margin:var(--gup-sp-3) 0 0; }
.fn-navi--narrow .fn-bridges{ grid-template-columns:1fr; }
/* 狭い画面で滝を横へ潰さない（潰すと文字だけが細くなって読みにくい）。
   ★図は実寸のまま、器の中で横へ流す（document は横あふれしない）。 */
.fn-cf-chart svg{ display:block; max-width:none; }
.fn-cf-chart [data-cf-value]{ stroke:var(--gup-fn-line); stroke-width:1; vector-effect:non-scaling-stroke; }
.fn-cf-chart [data-fn-cf]{ cursor:pointer; }
.fn-cf-chart [data-fn-cf]:focus-visible{ outline:2px solid var(--gup-color-text-primary); outline-offset:-2px; }

.fn-note{ font-size:var(--gup-fs-note); color:var(--gup-color-text-secondary);
  margin:var(--gup-sp-2) 0 0; }
.fn-detail{ margin-top:var(--gup-sp-3); }
.fn-detail__body{ display:grid; gap:var(--gup-sp-2); }
.fn-detail__body h4{ margin:var(--gup-sp-2) 0 0; }
/* 図のすぐ下の合計。★表にせず 1 行で（READ は全体像・明細は DETAIL）。 */
.fn-bs-tot{ display:grid; grid-template-columns:1fr 1fr; column-gap:var(--gup-sp-2); row-gap:var(--gup-sp-1);
  margin:var(--gup-sp-2) 0 0; font-variant-numeric:tabular-nums; }
.fn-bs-tot > span{ display:flex; flex-wrap:wrap; justify-content:space-between; align-items:baseline; gap:var(--gup-sp-1); font-size:var(--gup-fs-note); }
.fn-bs-tot b{ font-size:var(--gup-fs-md); }
.fn-bs-tot__ng{ color:var(--gup-color-text-secondary); font-size:var(--gup-fs-note); }
.fn-bs-tot__ng{grid-column:1 / -1;margin:0;line-height:var(--gup-lh-compact);}

/* 読み取る情報（科目名・区分・分類のしるし）は 13px 未満へ逃がさない。
   ★共通の table th は 12px（layout.css）だが、ここは決算書ナビの主役の文字なので
     この画面の中だけ 1 段上げる。数値・注記の契約は変えていない。 */
.fn-navi .gup-table th[scope="row"],
.fn-navi .gup-table th[scope="col"],
.fn-navi .gup-table th[scope="rowgroup"]{ font-size:var(--gup-fs-sm); }
/* 「簡易CF」は法定のキャッシュ・フロー計算書と取り違えさせないための札。 */
.fn-navi .gup-badge{ font-size:var(--gup-fs-xs); }

/* 4 つの面を 1440×765 で同時に読めるようにする。
   ★文字は 1px も小さくしない。詰めるのは行の上下の余白（密度）だけ。
   ★共通の表の契約は変えない（この画面の表にだけ当てる）。 */
.fn-navi .gup-table th, .fn-navi .gup-table td{ padding-block:var(--gup-sp-1); }
.fn-navi .fn-pane > h3{ margin-bottom:var(--gup-sp-1); }
.fn-navi .fn-bs-tot{ margin-top:var(--gup-sp-1); }

/* ---- 当期の流れ／資金の予定（EDIT）------------------------------------------ */
.fn-ed{ margin-top:var(--gup-sp-4); }
.fn-ed > h3{ margin:0 0 var(--gup-sp-2); }
.fn-ed-table{ table-layout:fixed; min-width:0; }
.fn-ed-table th[scope="col"]{ text-align:right; }
.fn-ed-table th[scope="col"]:first-child{ text-align:left; }
.fn-ed-table th[scope="row"]{ text-align:left; }
.fn-ed-table td{ text-align:right; }
.fn-ed-table input{ width:100%; min-width:0; text-align:right; }
/* 決算書ナビの中の見方（当期実績 / 通期見込）。共通の segmented をそのまま使う。 */
.fn-t0__modes{ margin-left:var(--gup-sp-3); }
.fn-t0__back{ margin-left:auto; }

/* ---- EDIT（数字を入れる）------------------------------------------------------
   FINANCIAL-NAVI-EDIT1。入力面は ① 現状把握 → 決算書ナビ の 1 か所だけ。
   ★hidden で出し分けるので、ここに display を書かない（UA の [hidden] に勝たせない）。 */
.fn-edit__open{ margin-left:var(--gup-sp-3); }
.fn-edit__head{ display:flex; align-items:center; gap:var(--gup-sp-3); margin-bottom:var(--gup-sp-3); }
.fn-edit__head > h3{ margin:0; }
.fn-edit__head > .gup-cmd{ margin-left:auto; }

/* FINANCIAL-NAVI-VISUAL1: one financial diagram, not four dashboard cards. */
#fnPrevCard:has(.fn-navi), #fnPlanCard:has(.fn-navi){ background:transparent; border:0; border-radius:0; }
#fnPrevCard:has(.fn-navi) > h2, #fnPlanCard:has(.fn-navi) > h2{ margin-bottom:var(--gup-sp-2); }
/* The previous-year view has its own period; the plan-year strip is redundant here. */
#t1:has(#t1panel-kessan:not([hidden])) > #t1YearContext{ display:none; }
.fn-navi{ font-variant-numeric:tabular-nums; }
.fn-navi .fn-pane > h3{ font-size:var(--gup-fs-sm); line-height:var(--gup-lh-compact); margin:0 0 var(--gup-sp-1); }
.fn-wc-band{ display:grid; grid-template-columns:1.15fr 1fr 1fr 1fr .85fr; gap:var(--gup-sp-3); border-block:1px solid var(--gup-color-border); padding-block:var(--gup-sp-2); margin-bottom:var(--gup-sp-3); }
.fn-wc-item{ position:relative; min-width:0; padding-right:var(--gup-sp-1); font-size:var(--gup-fs-note); line-height:var(--gup-lh-compact); }
.fn-wc-item > span:first-child,.fn-wc-effect > span{ font-size:var(--gup-fs-note); color:var(--gup-color-text-secondary); }
.fn-wc-item > div{ display:flex; flex-wrap:wrap; align-items:baseline; gap:var(--gup-sp-1); font-size:var(--gup-fs-sm); }
.fn-wc-main > span:first-child{ color:var(--gup-fn-wc); }
.fn-wc-delta{ position:absolute; top:0; right:0; font-size:var(--gup-fs-note); }
.fn-wc-to{ color:var(--gup-color-text-secondary); }
.fn-wc-effect{ border-left:1px solid var(--gup-color-border); padding-left:var(--gup-sp-2); font-size:var(--gup-fs-note); line-height:var(--gup-lh-compact); }
.fn-wc-effect b{ display:block; font-size:var(--gup-fs-md); color:var(--gup-fn-wc); }
.fn-bs-total-assets{ display:flex; align-items:baseline; gap:var(--gup-sp-2); padding-bottom:var(--gup-sp-2); }
.fn-bs-total-assets span{ font-size:var(--gup-fs-note); }
.fn-bs-total-assets strong{ font-size:var(--gup-fs-xl); line-height:var(--gup-lh-compact); }
.fn-bs-state{ font-size:var(--gup-fs-note); margin-left:auto; color:var(--gup-color-text-secondary); }
.fn-bs-plot{ height:330px; display:grid; grid-template-columns:1fr 1fr; gap:var(--gup-sp-1); align-items:end; }
.fn-bs-column{ height:100%; min-width:0; display:flex; flex-direction:column; justify-content:flex-end; }
.fn-bs-segment{ position:relative; flex:none; box-sizing:border-box; width:100%; display:flex; flex-direction:column; justify-content:center; padding-inline:var(--gup-sp-2); border-bottom:1px solid color-mix(in srgb,var(--gup-text-on-light) 25%,transparent); color:var(--gup-text-on-light); outline:1px solid var(--gup-fn-line); outline-offset:-1px; }
.fn-bs-asset{ background:var(--gup-fn-asset-fill); }
.fn-bs-liability{ background:var(--gup-fn-liability-fill); }
.fn-bs-equity{ background:var(--gup-fn-equity-fill); }
.fn-bs-cash{ background:var(--gup-fn-cash-fill); }
.fn-bs-wc{ outline:2px solid var(--gup-fn-wc-border); outline-offset:-2px; }
.fn-bs-debt{ outline:2px solid var(--gup-fn-debt-border); outline-offset:-2px; }
/* ★ここは棒の中のラベル。区画の高さは金額に比例するので、大きくすると小さい区画から溢れ、
   4 面を 1440×765 で一望する契約（実測 772px で破れた）も守れない。図の契約（実効 10px 以上）で読む。 */
.fn-bs-label{ font-size:var(--gup-fs-note); line-height:var(--gup-lh-compact); overflow-wrap:anywhere; }
.fn-bs-amount{ font-size:var(--gup-fs-md); line-height:var(--gup-lh-compact); overflow-wrap:anywhere; }
.fn-bs-small{ display:flex; flex-wrap:wrap; justify-content:space-between; align-items:baseline; gap:var(--gup-sp-1); background:transparent; outline:0; padding-left:var(--gup-sp-1); border-left:2px solid var(--gup-color-border); margin-bottom:var(--gup-sp-1); }
.fn-bs-small.fn-bs-wc{ border-color:var(--gup-fn-wc); }
.fn-bs-small.fn-bs-debt{ border-color:var(--ui-v); }
.fn-bs-small .fn-bs-amount{ font-size:var(--gup-fs-note); }
.fn-bs-plot--signed{ height:auto; min-height:320px; align-items:start; }
.fn-bs-plot--signed .fn-bs-column{ justify-content:flex-start; }
.fn-bs-signed-row{ padding:var(--gup-sp-2); color:var(--gup-text-on-light); display:grid; gap:var(--gup-sp-1); }
.fn-cf-operating{ margin-inline:12.5% 37.5%; text-align:center; font-size:var(--gup-fs-note); border-bottom:1px solid var(--gup-fn-line); padding-bottom:var(--gup-sp-1); position:relative; }
.fn-cf-operating:before,.fn-cf-operating:after{ content:''; position:absolute; width:1px; height:4px; background:var(--gup-fn-line); bottom:-4px; }
.fn-cf-operating:before{ left:0; }.fn-cf-operating:after{ right:0; }
.fn-cf-operating--aggregate{ margin-inline:20% 60%; }
.fn-cf-unavailable{ min-height:150px; display:flex; flex-direction:column; justify-content:center; gap:var(--gup-sp-2); color:var(--gup-color-text-secondary); }
.fn-cf-unavailable span{ font-size:var(--gup-fs-note); overflow-wrap:anywhere; }
.fn-pane--pl{ position:relative; }
.fn-mq-caption{ position:absolute; top:0; right:0; font-size:var(--gup-fs-note); color:var(--gup-color-text-secondary); }
.fn-mq{ display:grid; grid-template-columns:minmax(0,26fr) minmax(0,74fr); height:200px; }
.fn-mid > .fn-pane--pl{ width:90%; margin-inline:auto; }
.fn-mq-right{ display:grid; grid-template-rows:minmax(0,26fr) minmax(0,74fr); min-width:0; }
.fn-mq-margin{ display:grid; grid-template-columns:34% 66%; min-height:0; min-width:0; }
.fn-mq-result{ display:grid; grid-template-rows:minmax(0,36fr) minmax(0,64fr); min-width:0; }
.fn-mq-profit{ display:grid; grid-template-columns:1fr 1fr; min-height:0; min-width:0; }
.fn-mq-net{ display:grid; grid-template-rows:1fr 1fr; min-height:0; min-width:0; }
.fn-mq-box{ display:flex; flex-direction:column; justify-content:center; align-items:center; text-align:center; padding:0 var(--gup-sp-1); min-width:0; min-height:0; color:var(--gup-text-on-light); outline:1px solid var(--gup-fn-line); outline-offset:-1px; }
.fn-mq-box > span{ font-size:var(--gup-fs-note); line-height:var(--gup-lh-compact); }
.fn-mq-box strong{ font-size:var(--gup-fs-md); line-height:var(--gup-lh-compact); overflow-wrap:anywhere; max-width:100%; }
.fn-mq-pq{ background:color-mix(in srgb,var(--mg-p) 45%,var(--gup-p-ink-050)); }
.fn-mq-vq{ background:color-mix(in srgb,var(--mg-v) 35%,var(--gup-p-ink-050)); }
.fn-mq-mq{ background:color-mix(in srgb,var(--mg-m) 40%,var(--gup-p-ink-050)); }
.fn-mq-f{ background:color-mix(in srgb,var(--mg-f) 45%,var(--gup-p-ink-050)); }
.fn-mq-g{ background:color-mix(in srgb,var(--gup-fn-g) 60%,var(--gup-p-ink-050)); }
.fn-mq-taxOther{ background:var(--gup-p-ink-050); }
.fn-mq-netIncome{ background:var(--gup-fn-equity-fill); }
.fn-retained-lane{ margin-top:var(--gup-sp-2); }
.fn-bs-pair{ display:grid; grid-template-columns:1fr 1fr; gap:var(--gup-sp-4); }
.fn-navi--compact .fn-mid{ display:block; }
.fn-navi--compact .fn-stack{ max-width:100%; }
.fn-navi--narrow .fn-wc-band{ grid-template-columns:1fr 1fr; }
.fn-navi--narrow .fn-wc-main{ grid-column:1 / -1; }
.fn-navi--narrow .fn-wc-effect{ border-left:0; padding-left:0; }
.fn-navi--narrow .fn-wc-delta{ position:static; }
.fn-mobile-answer{ display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:var(--gup-sp-2); border-block:1px solid var(--gup-color-border); padding-block:var(--gup-sp-2); }
.fn-mobile-answer span{ font-size:var(--gup-fs-note); }
.fn-mobile-answer b{ display:block; font-size:var(--gup-fs-md); overflow-wrap:anywhere; }
.fn-navi--narrow .fn-mq{ height:220px; }
.fn-navi--narrow .fn-mq-box strong{ font-size:var(--gup-fs-sm); }

/* Match the two stock diagrams to the flow diagram's baseline, not its top. */
.fn-navi{ position:relative; }
.fn-bs-visual{ position:relative; min-height:350px; }
.fn-bs-visual > .fn-bs-plot{ position:absolute; top:32px; bottom:0; height:auto; width:100%; }
.fn-bs-heading{ position:absolute; bottom:calc((100% - 32px) * var(--fn-bs-ratio,1) + 6px); width:100%; }
.fn-bs-heading h3{ display:flex; align-items:baseline; flex-wrap:wrap; gap:var(--gup-sp-2); margin:0 0 var(--gup-sp-1); }
.fn-bs-segment{ flex-direction:row; justify-content:space-between; align-items:center; gap:var(--gup-sp-1); }
.fn-bs-segment .fn-bs-amount{ white-space:nowrap; }
.fn-bs-caption{position:absolute;left:var(--gup-sp-2);right:var(--gup-sp-2);display:flex;align-items:center;justify-content:space-between;gap:var(--gup-sp-1);min-height:20px;z-index:2;background:inherit;}
.fn-bs-caption .fn-bs-label{overflow-wrap:anywhere;}
.fn-bs-caption--moved::before{content:"";position:absolute;left:-4px;top:min(50%,calc(50% + var(--fn-caption-shift,0px)));height:abs(var(--fn-caption-shift,0px));border-left:1px solid currentColor;}
.fn-bs-notes .fn-bs-small{ margin-bottom:0; }
.fn-pane--cf .gup-badge{ min-height:0; padding:0 var(--gup-sp-1); line-height:var(--gup-lh-compact); font-size:var(--gup-fs-note); border-radius:var(--gup-radius-sm); }
.fn-cf-operating{ padding-bottom:0; }
.fn-foot{ display:flex; align-items:baseline; justify-content:space-between; flex-wrap:wrap; column-gap:var(--gup-sp-3); }
.fn-foot > .fn-note,.fn-foot > .fn-detail{ margin-top:var(--gup-sp-1); }
.fn-foot .fn-note{ line-height:var(--gup-lh-compact); }
.fn-navi__head{ margin-bottom:var(--gup-sp-1); }
.fn-foot > .fn-detail[open]{ width:100%; }
.fn-retained-lane{ margin-left:calc((100% - var(--gup-sp-3) * 2) * .31); }
.fn-connectors{ position:absolute; inset:0; width:100%; height:100%; overflow:visible; pointer-events:none; }
.fn-connectors path{ fill:none; stroke-width:1; vector-effect:non-scaling-stroke; }
.fn-connectors .fn-connect-cash,.fn-connectors .fn-connect-retained{ stroke:var(--gup-fn-line); }
.fn-connectors .fn-common-baseline,.fn-connectors .fn-common-topline{ stroke:var(--gup-fn-line); }
.fn-bs-visual:has(.fn-bs-plot--signed){ height:auto!important; }
.fn-bs-visual:has(.fn-bs-plot--signed) > .fn-bs-plot,.fn-bs-visual:has(.fn-bs-plot--signed) > .fn-bs-heading{ position:static; }
.fn-navi--narrow .fn-bs-heading,.fn-navi--compact .fn-bs-heading{ position:static; }
.fn-navi--narrow .fn-bs-visual,.fn-navi--compact .fn-bs-visual{ height:auto; }
.fn-navi--narrow .fn-bs-visual > .fn-bs-plot,.fn-navi--compact .fn-bs-visual > .fn-bs-plot{ position:relative; top:auto; height:330px; }
.fn-bs-tot{ border-top:1px solid var(--gup-color-border); padding-top:var(--gup-sp-1); }
.fn-bs-sum{ display:flex; justify-content:space-between; align-items:baseline; flex-wrap:wrap; gap:var(--gup-sp-1); font-size:var(--gup-fs-note); }
.fn-bs-sum b{ font-size:var(--gup-fs-md); }
.fn-bs-total-group + .fn-bs-total-group{ margin-top:var(--gup-sp-1); }
.fn-bs-total-group .fn-bs-small{ border:0; padding:0; margin:0; color:var(--gup-color-text-secondary); }
.fn-bs-total-group .fn-bs-small .fn-bs-amount{ font-size:var(--gup-fs-note); }
.fn-bs-micro{ z-index:1; overflow:visible; }
.fn-bs-micro .fn-bs-label,.fn-bs-micro .fn-bs-amount{ font-size:var(--gup-fs-note); line-height:var(--gup-lh-compact); background:inherit; }
.fn-bs-zero{ border:0; outline:0; }
.fn-bs-tot{ padding-top:var(--gup-sp-3); }

/* Insolvent pairs share a top edge; the bottom edges legitimately differ. */
.fn-bs-plot--top{ align-items:start; }
.fn-bs-plot--top .fn-bs-column{ justify-content:flex-start; }
.fn-bs-visual--top .fn-bs-heading{ top:0; bottom:auto; }
/* The shortfall is empty space between the two bottom edges, never a filled account. */
.fn-bs-gap{ position:relative; flex:none; box-sizing:border-box; width:100%; z-index:3;
  display:flex; align-items:center; justify-content:flex-end; overflow:visible;
  padding-inline-end:calc(var(--gup-sp-2) + 10px); }
.fn-bs-gap::after{ content:""; position:absolute; top:0; bottom:0; right:var(--gup-sp-1); width:9px;
  border:1px solid var(--gup-fn-line); border-left:0; }
.fn-bs-gap__label{ display:flex; align-items:baseline; gap:var(--gup-sp-1); white-space:nowrap; }
.fn-bs-gap__label .fn-bs-label{ color:var(--gup-color-text-secondary); }
.fn-bs-gap__label .fn-bs-amount{ font-size:var(--gup-fs-md); }
/* Equity detail that cannot sit inside the plot reads as one line under the totals. */
.fn-bs-eqrow{ grid-column:1 / -1; display:flex; flex-wrap:wrap; align-items:baseline;
  column-gap:var(--gup-sp-3); row-gap:var(--gup-sp-1); margin-top:var(--gup-sp-1); }
.fn-bs-eqitem{ display:inline-flex; align-items:baseline; gap:var(--gup-sp-1); white-space:nowrap;
  font-size:var(--gup-fs-sm); line-height:var(--gup-lh-compact); }
.fn-bs-eqitem__l{ color:var(--gup-color-text-secondary); }
.fn-bs-eqitem__v{ font-size:var(--gup-fs-sm); }
.fn-bs-eqitem--sub .fn-bs-eqitem__v{ color:var(--gup-color-text-secondary); }

/* Incomplete B/S is a readout. Row sizes never claim a balance proportion. */
.fn-bs-visual--pending .fn-bs-heading{ top:0; bottom:auto; }
.fn-bs-pending-note{ margin:0; font-size:var(--gup-fs-note); line-height:var(--gup-lh-compact); color:var(--gup-color-text-secondary); }
.fn-bs-visual--pending > .fn-bs-plot--pending{ top:52px; align-items:stretch; }
.fn-bs-readout-column{ display:flex; flex-direction:column; min-width:0; border:1px solid var(--gup-fn-line); }
.fn-bs-readout-heading{ padding:var(--gup-sp-2); font-size:var(--gup-fs-sm); font-weight:700; border-bottom:1px solid var(--gup-fn-line); }
.fn-bs-readout-row{ display:flex; flex-direction:column; justify-content:center; gap:var(--gup-sp-1); padding:var(--gup-sp-2); min-height:44px; min-width:0; flex:1; border-bottom:1px solid var(--gup-color-border); border-left:3px solid var(--gup-fn-asset-fill); }
.fn-bs-readout-row:last-child{ border-bottom:0; }
.fn-bs-readout-liability{ border-left-color:var(--gup-fn-liability-fill); }
.fn-bs-readout-equity{ border-left-color:var(--gup-fn-equity-fill); }
.fn-bs-readout-wc{ border-left-color:var(--gup-fn-wc-border); }
.fn-bs-readout-debt{ border-left-color:var(--gup-fn-debt-border); }
.fn-bs-readout-unknown .fn-bs-amount{ font-size:var(--gup-fs-note); font-weight:400; color:var(--gup-color-text-secondary); }
.fn-bridge--pending{ display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; gap:var(--gup-sp-2); border:1px solid var(--gup-fn-line); font-size:var(--gup-fs-note); }
.fn-bridge__pending-state{ color:var(--gup-color-text-secondary); }
.fn-cf-unavailable{ min-height:170px; padding:var(--gup-sp-3); border:1px solid var(--gup-fn-line); }
.fn-cf-unavailable strong{ color:var(--gup-color-text-primary); }
.fn-navi--narrow .fn-bs-visual--pending > .fn-bs-plot,.fn-navi--compact .fn-bs-visual--pending > .fn-bs-plot{ top:auto; height:400px; }

/* ============================================================================
   GUP-TREND1 — 推移表（月次 / 年計）

   ★ここに置くのは **並べ方**だけ。色・文字サイズ・余白の直値を作らない。
   ★月次と年計で別の規則を作らない（同じ枠を同じ場所に置く）。
     見方を変えても図の枠と controls の位置が動かないことが、この画面の前提。
   ★指標の色は既存の役割 token（--ui-p / --ui-v / --ui-m / --ui-f / --ui-g / --ui-q）だけ。
   ============================================================================ */

/* ---- controls ---------------------------------------------------------- */
.tr-tools{ display:flex; flex-wrap:wrap; align-items:flex-end;
  gap:var(--gup-sp-2) var(--gup-sp-5); margin:0 0 var(--gup-sp-1); }
.tr-field{ display:flex; flex-direction:column; gap:var(--gup-sp-1); min-width:0; }
.tr-field--cmp{ flex-direction:row; flex-wrap:wrap; align-items:baseline;
  gap:var(--gup-sp-1) var(--gup-sp-3); }
.tr-lb{ font-size:var(--gup-fs-note); color:var(--gup-color-text-secondary); }
.tr-field select{ width:100%; min-width:0; max-width:20rem; }
.tr-seg{ flex:none; }
.tr-chk{ display:inline-flex; align-items:center; gap:var(--gup-sp-1);
  font-size:var(--gup-fs-sm); white-space:nowrap; }
.tr-field--cmp > .tr-chk{ display:inline-flex; }
.tr-field--cmp > .tr-lb{ flex:1 0 100%; }

/* 指標。checkbox ＋ 色の点 ＋ 記号。使えないものは理由つきで薄くするが、消さない。 */
.tr-metrics{ display:flex; flex-wrap:wrap; align-items:center;
  gap:var(--gup-sp-2) var(--gup-sp-4); padding:var(--gup-sp-1) 0;
  border-top:1px solid var(--gup-color-border); border-bottom:1px solid var(--gup-color-border);
  margin:0 0 var(--gup-sp-1); }
.tr-m{ display:inline-flex; align-items:center; gap:var(--gup-sp-1);
  font-size:var(--gup-fs-sm); white-space:nowrap; }
.tr-m.is-off{ color:var(--gup-color-text-disabled); }
.tr-dot{ width:8px; height:8px; border-radius:var(--gup-radius-pill); display:inline-block; flex:none; }
/* 1 個あたりの指標（P・V・M）は 金額（PQ・VQ・MQ）と同じ色なので、点の形で分ける。
   ★図の中の点と同じ形にする（凡例と図がずれない）。 */
.tr-dot--unit{ border-radius:0; }
.tr-msep{ width:1px; align-self:stretch; background:var(--gup-color-border); }
.tr-grow{ flex:1 1 auto; }

/* ---- 対象と注記 ---------------------------------------------------------
   ★対象は 注目指標と同じ行に置く（図へ渡す縦を 1 行ぶん増やすため）。 */
.tr-scopecell{ display:flex; flex-direction:column; gap:var(--gup-sp-1); min-width:0; }
.tr-scope{ font-size:var(--gup-fs-base); white-space:nowrap; }
.tr-note{ font-size:var(--gup-fs-note); color:var(--gup-color-text-secondary); }

/* ---- 注目指標のまとめ --------------------------------------------------- */
.tr-summary{ display:flex; flex-wrap:wrap; align-items:flex-start;
  gap:var(--gup-sp-2) var(--gup-sp-5); margin:0 0 var(--gup-sp-2); }
.tr-focusfield{ display:flex; align-items:baseline; gap:var(--gup-sp-2); }
.tr-focusfield > .tr-lb{ white-space:nowrap; }
.tr-focusfield select{ min-width:7rem; }
/* 見出しは 1 行目、値・単位・期間・理由は 2 行目へ横に並べる（縦 5 段 → 2 段）。
   ★baseline でそろえるので、値を小さくしなくても行が 1 つで済む。 */
.tr-main{ display:grid; align-items:baseline;
  grid-template-columns:repeat(4, auto) minmax(0, auto);
  column-gap:var(--gup-sp-2); }
.tr-main > .tr-cap, .tr-main > .tr-val,
.tr-main > .tr-sub:not(.tr-why){ white-space:nowrap; }
.tr-cap{ font-size:var(--gup-fs-note); color:var(--gup-color-text-secondary); }
.tr-val{ font-size:var(--gup-fs-hero); font-weight:700; line-height:1.15;
  font-variant-numeric:tabular-nums; }
.tr-val.is-empty{ color:var(--gup-color-text-secondary); }
.tr-sub{ font-size:var(--gup-fs-note); color:var(--gup-color-text-secondary); }
/* 理由の行は書くことが無くても場所を取る（見方で図の位置を動かさないため）。 */
.tr-why{ min-height:1.5em; }
.tr-cmpcell{ min-width:0; }
.tr-num{ font-size:var(--gup-fs-kpi); font-variant-numeric:tabular-nums; line-height:1.2; }

/* ---- 図 ------------------------------------------------------------------ */
.tr-charthead{ display:flex; flex-wrap:wrap; align-items:baseline;
  gap:var(--gup-sp-2) var(--gup-sp-3); margin:0 0 var(--gup-sp-1); }
.tr-charthead h3{ margin:0; font-size:var(--gup-fs-lg); }
.tr-leg{ display:inline-flex; align-items:center; gap:var(--gup-sp-1);
  font-size:var(--gup-fs-note); color:var(--gup-color-text-secondary); }

/* 縦軸は HTML 側で持つ（svg の中に文字を増やさない）。左＝金額、右＝単価。
   ★格子の本数は左右で共有しているので、目盛りの数も同じになる。 */
.tr-plotwrap{ display:flex; align-items:stretch; gap:var(--gup-sp-2); min-width:0; }
.tr-plotwrap.is-scroll{ overflow-x:auto; }
.tr-yaxis{ display:flex; flex-direction:column; justify-content:space-between;
  flex:none; font-size:var(--gup-fs-note); color:var(--gup-color-text-secondary);
  font-variant-numeric:tabular-nums; padding:0 0 var(--gup-sp-5); }
/* ★目盛りの桁数で図の左端が動かないように、軸の欄はあらかじめ場所を取る。
   月次（120,000）と年計（1,200,000）で桁が変わるので、取らないと見方を切り替えた
   だけで図の枠が横へずれる（実測 41px → 50px）。数字は切り詰めない（入りきらなければ広がる）。 */
.tr-yaxis--l{ text-align:right; min-width:10ch; }
.tr-yaxis--r{ text-align:left; min-width:9ch; }
.tr-yaxis span{ line-height:1; }
.tr-plot{ flex:1 1 auto; min-width:0; }
.tr-plot svg{ display:block; }
.tr-plot--q svg{ display:block; }
.tr-qhead{ font-size:var(--gup-fs-note); color:var(--gup-color-text-secondary);
  margin:var(--gup-sp-2) 0 0; }
.tr-empty{ display:flex; align-items:center; justify-content:center;
  min-height:180px; color:var(--gup-color-text-secondary); font-size:var(--gup-fs-sm);
  border:1px dashed var(--gup-color-border); border-radius:var(--gup-radius-sm); }

/* ---- 期間と充足 ---------------------------------------------------------- */
.tr-foot{ display:flex; flex-wrap:wrap; align-items:baseline;
  gap:var(--gup-sp-2) var(--gup-sp-4); margin:var(--gup-sp-1) 0; }

/* ---- 終点を選ぶ帯 -------------------------------------------------------- */
.tr-strip{ display:flex; gap:2px; margin:0 0 var(--gup-sp-1); }
.tr-cell{ flex:1 1 0; min-width:0; min-height:14px; padding:0;
  background:none; border:1px solid var(--gup-color-border);
  border-radius:var(--gup-radius-sm); cursor:pointer; overflow:hidden; }
.tr-cell .tr-cellin{ display:block; height:10px; opacity:0; }
.tr-cell.is-on .tr-cellin{ opacity:.35; }
.tr-cell.is-sel{ border-color:var(--gup-brand-accent); }
.tr-cell.is-sel .tr-cellin{ opacity:1; }

/* ---- 内訳 ---------------------------------------------------------------- */
.tr-detail{ margin:0; }
.tr-detail > summary{ font-size:var(--gup-fs-sm); cursor:pointer; }
.tr-table{ min-width:0; width:auto; margin:var(--gup-sp-2) 0 0; }
.tr-table th, .tr-table td{ font-variant-numeric:tabular-nums; }

/* ---- 狭い画面 ------------------------------------------------------------
   ★図を縮小した写しにしない。controls と summary は **折返し**で縦へ積む。
   ★新しい画面幅の分岐は作らない（既存の折返しで吸収する）。順番は DOM のまま。 */
.tr-field{ flex:1 1 11rem; }
.tr-field--cmp{ flex:1 1 14rem; }
.tr-field > .tr-seg{ align-self:flex-start; }
.tr-scopecell{ flex:0 1 auto; }
.tr-main{ flex:1 1 12rem; }
.tr-cmpcell{ flex:1 1 8rem; }

/* Stock controls share the existing trend surface; no additional card layer. */
.tr-filters{margin-bottom:var(--gup-sp-2);}
.tr-filters > summary{font-size:var(--gup-fs-sm);padding:var(--gup-sp-2) 0;cursor:pointer;}
.tr-filters > summary span{color:var(--gup-color-text-secondary);}
.tr-filters.is-wide > summary{display:none;}
.tr-display{display:flex;align-items:center;flex-wrap:wrap;gap:var(--gup-sp-2);margin:var(--gup-sp-2) 0;}
.tr-chartseg button{display:inline-flex;align-items:center;justify-content:center;}
.tr-metric-break{flex-basis:100%;height:0;}
.tr-dot--bar{border-radius:0;height:1em;}
.tr-dot--line{height:2px;width:1.3em;border-radius:0;}
.tr-layers{position:relative;}
.tr-layers > svg{position:relative;}
.tr-layers > .tr-stack{position:absolute;inset:0;}
.tr-stack{pointer-events:none;}
.tr-gap{fill:var(--gup-color-text-secondary);fill-opacity:.06;}
.tr-gap-label{fill:var(--gup-color-text-secondary);font-size:var(--gup-fs-note);}
.tr-cursor{stroke:var(--gup-brand-accent);stroke-width:1;stroke-dasharray:2 4;opacity:.6;}
.tr-metrics[hidden]{display:none;}
.tr-m.is-off{position:relative;}
.tr-disabled-reason{display:none;position:absolute;inset-inline-start:0;top:100%;z-index:var(--gup-z-dropdown);
  background:var(--gup-surface-primary);color:var(--gup-color-text-primary);border:1px solid var(--gup-color-border);
  padding:var(--gup-sp-2);white-space:normal;width:12rem;max-width:70vw;}
.tr-m.is-off:focus .tr-disabled-reason,.tr-m.is-off:hover .tr-disabled-reason{display:block;}
.tr-density{flex-direction:column;gap:var(--gup-sp-3);padding:var(--gup-sp-4);}
.tr-blocked{padding:var(--gup-sp-1) 0;}
.tr-monthread{display:flex;align-items:center;gap:var(--gup-sp-2);font-size:var(--gup-fs-sm);}
.tr-monthread select{width:auto;max-width:100%;}
.tr-readout{display:grid;grid-template-columns:repeat(auto-fit,minmax(9rem,1fr));gap:var(--gup-sp-2) var(--gup-sp-4);
  padding:var(--gup-sp-2) 0;border-bottom:1px solid var(--gup-color-border);margin-bottom:var(--gup-sp-2);}
.tr-readout > div{min-width:0;display:flex;flex-direction:column;gap:var(--gup-sp-1);}
.tr-readout strong{font-size:var(--gup-fs-kpi);font-variant-numeric:tabular-nums;}
.tr-readout .tr-leg{flex-wrap:wrap;}
.tr-table-scroll{max-width:100%;overflow:auto;max-height:24rem;}
.tr-table-scroll table{width:100%;}
.tr-table-scroll th,.tr-table-scroll td{white-space:nowrap;text-align:right;}
.tr-table-scroll th:first-child{text-align:left;}
.tr-table-scroll small{display:block;color:var(--gup-color-text-secondary);font-size:var(--gup-fs-note);}
.tr-plot{cursor:crosshair;}
.tr-main{display:flex;flex-wrap:wrap;gap:var(--gup-sp-1) var(--gup-sp-2);}
.tr-main > .tr-cap{flex-basis:100%;white-space:normal;}
.tr-why:empty{display:none;}
.tr-summary{align-items:center;}
.tr-scope{white-space:normal;overflow-wrap:anywhere;}
.tr-narrow .tr-filters .tr-tools{gap:var(--gup-sp-2);}
.tr-narrow .tr-field{flex-basis:9rem;}
.tr-narrow .tr-summary{gap:var(--gup-sp-2);}
.tr-narrow .tr-main{flex-basis:100%;}
.tr-narrow .tr-cmpcell{flex-basis:7rem;}
.tr-narrow .tr-strip{display:none;}
.tr-narrow .tr-yaxis--l{min-width:8ch;}
.tr-narrow .tr-yaxis--r{min-width:7ch;}
.tr-narrow .tr-charthead{gap:var(--gup-sp-1) var(--gup-sp-2);}

/* ===== Phase UI-IA2: 左サイドナビゲーション =====
   正本 docs/UI_IA2_SIDENAV.md

   ★色・余白・角丸は --gup-* token を経由する。
   ★第 1 階層（経営の流れ）と第 2 階層（画面の中の作業）を、見た目で必ず区別する。
   ★現在地は「色だけ」で示さない（左端のマーカー ＋ 背景 ＋ 文字の太さ）。 */

.app-shell{ display:flex; align-items:flex-start; gap:0; min-width:0; }
.app-shell > main{ flex:1 1 0; min-width:0; }

.gup-side{
  max-width:84%;
  flex:0 0 236px; width:236px; box-sizing:border-box;
  position:sticky; top:0;                       /* 本文と一緒に流れず、画面内に留まる */
  max-height:100vh; overflow-y:auto; overscroll-behavior:contain;
  background:var(--gup-color-surface-subtle);
  border-right:1px solid var(--gup-color-border);
  /* GUP-HIGH-DENSITY-UI1（ALL VIEWS）：①の l2（9項目）を展開すると余白の合計が
     NO-SCROLL の壁になっていた（実測 741px。real viewport 1440×765 で Key4 が 0px に届かない）。
     上下だけ token の外の px で詰める（実測して決めた px。他の余白は token のまま）。 */
  padding:6px var(--gup-sp-3) 10px;
}
.side-inner{ display:flex; flex-direction:column; gap:var(--gup-sp-2); min-height:0; }
.side-close{ display:none; }

.side-head{
  margin:0 0 var(--gup-sp-1);
  padding:0 var(--gup-sp-2);
  font-size:var(--gup-fs-note); font-weight:var(--gup-fw-semibold);
  letter-spacing:.04em; color:var(--gup-color-text-secondary);
}
.side-head--danger{ color:var(--gup-color-danger); }

/* ---- 第 1 階層：経営の流れ ---- */
.side-l1, .side-l2, .side-actions, .side-group ul{ list-style:none; margin:0; padding:0; }
.side-l1 > .side-item + .side-item{ margin-top:2px; }
.side-l1 > .side-item > button{
  display:flex; align-items:center; gap:var(--gup-sp-2);
  width:100%; box-sizing:border-box;
  min-height:var(--gup-control-standard);
  padding:var(--gup-sp-2) var(--gup-sp-3);
  border:1px solid var(--gup-color-border);     /* 押せることが分かるように、ふだんも枠を持つ */
  border-left:3px solid transparent;            /* 現在地のマーカー用に常に場所を空けておく */
  border-radius:var(--gup-radius-sm);
  background:var(--gup-color-surface);
  color:var(--gup-color-text-primary);
  font-family:inherit; font-size:var(--gup-fs-base); font-weight:var(--gup-fw-medium);
  line-height:var(--gup-lh-compact); text-align:left; cursor:pointer;
}
.side-l1 > .side-item > button:hover{ background:var(--gup-color-surface-subtle); border-color:var(--gup-color-border); }
/* UI-NAVSEL1（Founder 判断）：選択中は **黒い面に白い太字**。
   薄いアンバーの面は控えめすぎて、いまどの画面に居るのかが読み取りにくかった。
   色だけに頼らないのは従来どおり（font-weight ＋ aria-current も併用）。 */
.side-l1 > .side-item > button.active{
  background:var(--gup-surface-inverse);
  border-color:var(--navy);
  color:var(--gup-text-inverse);
  font-weight:var(--gup-font-weight-bold);
}
.side-l1 > .side-item > button.active:hover{ background:var(--header-hover); border-color:var(--header-hover); }
.side-l1 .tb-num{ flex:none; color:var(--gup-color-text-secondary); font-size:var(--gup-fs-sm); }
.side-l1 > .side-item > button.active .tb-num{ color:var(--header-gold); }
.side-l1 .tb-short{ display:none; }             /* PC では正式名称だけを出す */

/* ---- 第 2 階層：選んでいる画面の中の作業 ---- */
.side-l2[hidden]{ display:none; }
.side-l2{ margin:2px 0 var(--gup-sp-1) var(--gup-sp-5); }
.side-l2 > li + li{ margin-top:0; }
/* GUP-HIGH-DENSITY-UI1（ALL VIEWS）：① だけ l2 が 9 項目（他画面は 5〜8）で、
   単一列だと 34px（--gup-control-compact）floor × 9 が NO-SCROLL の壁になる。
   ① だけ 2 列 grid にして 9 項目 → 5 行へ（実データの日本語ラベルで折返し 0 件を実測済み）。
   項目が少ない他画面は 1 列のままにする（崩す理由が無い）。 */
/* ★:not([hidden]) を必ず付ける。[hidden] の間は class+attribute の詳細度が
   .side-l2[hidden]{display:none} と同点になり、後勝ちで display:grid が hidden を破ってしまう
   （実測で踏んだ）。他の上位タブを見ているときに t1 の l2 だけ見えてしまう欠陥になる。 */
.side-l2[data-sidesub="t1"]:not([hidden]){
  display:grid; grid-template-columns:1fr 1fr; gap:2px var(--gup-sp-1); margin-left:var(--gup-sp-3);
}
.side-l2[data-sidesub="t1"] > li{ margin-top:0; }
/* ★KEY4 VISUAL POLISH の回帰確認で発見：「利益感度分析」が 利益感度分/析 と語の途中で折れていた。
   実測：この 6 文字はちょうど 14px×6＝84px 必要で、内容幅も 84px しか無かった（1px も足りない）。
   **文字は縮めず**、列の隙間を 6→4px・左右の padding を 8/6→6/4px にして内容幅を 88px にする。
   （インデント＝.side-l2 の margin-left は触らない。第 1／第 2 階層の差を弱めないため。） */
.side-l2[data-sidesub="t1"] .side-l2-btn{
  padding-left:6px; padding-right:var(--gup-sp-1); white-space:normal; line-height:1.15;
}
/* PHASE T5-6B：② の第 2 階層は「外を見る / 自分を見る / 決める」の 3 群で読む。
   ★見出しは押せない（button ではない）。移動できるのは view のボタンだけ。 */

.side-l2-btn{
  display:block; width:100%; box-sizing:border-box;
  min-height:var(--gup-control-compact);
  padding:var(--gup-sp-1) var(--gup-sp-3);
  /* V2-AB1（Phase B）：マーカーの場所を 3px 確保する（第 1 階層と同じ考え方）。
     選択中／非選択で幅を変えないので、文字の位置は動かない。 */
  border:none; border-left:3px solid var(--gup-color-border);
  border-radius:0 var(--gup-radius-sm) var(--gup-radius-sm) 0;
  background:transparent;
  color:var(--gup-color-text-secondary);
  font-family:inherit; font-size:var(--gup-fs-sm); font-weight:var(--gup-fw-normal);
  line-height:var(--gup-lh-compact); text-align:left; cursor:pointer;
}
/* V2-AB1（Phase B）：hover は選択中より弱くする。 */
.side-l2-btn:hover{ background:var(--gup-color-surface-subtle); color:var(--gup-color-text-primary); }
/* V2-AB1（Phase B・Founder 決定）：第 2 階層の選択中から **solid primary blue を撤去**する。
   before は主要操作のボタンと同じ塗り・同じ白文字・同じ太さで、
   「押すとデータが変わるもの」と「いま見ている場所」が見分けられなかった。
   正式 selection grammar ＝ soft / neutral な面 ＋ 小さな accent マーカー ＋（必要なら）700。
   ★旧契約の「アンバー面＋ゴールドの線」を機械的に戻したのではない。
     いま画面でいちばんうまく機能している .sens-card.active（白い面＋左のマーカー）に合わせている。
   ★primary blue は**ボタンの塗り**としてそのまま残る。ここではマーカーの色としてだけ使う。 */
.side-l2-btn.active{
  border-left-color:var(--gup-color-accent);
  background:var(--gup-color-surface);
  color:var(--gup-color-text-primary);
  font-weight:var(--gup-font-weight-bold);
}
.side-l2-btn.active:hover{ background:var(--gup-color-surface); color:var(--gup-color-text-primary); }

/* ---- 下部：データ・設定（UI-IA2.1 で 1 つに畳んだ）----
   ふだんは閉じておき、左は「どの画面へ行くか」だけに集中させる。
   開いたときだけ 記録／入出力・共有／設定・ヘルプ／危険な操作 を出す。 */
.side-data{ border-top:1px solid var(--gup-color-border); padding-top:var(--gup-sp-3); }
.side-tools > summary{
  display:flex; align-items:center; justify-content:space-between;
  list-style:none; cursor:pointer;
  min-height:var(--gup-control-standard);
  padding:var(--gup-sp-2) var(--gup-sp-3);
  border:1px solid var(--gup-color-border); border-radius:var(--gup-radius-sm);
  background:var(--gup-color-surface);
  color:var(--gup-color-text-primary);
  font-size:var(--gup-fs-sm); font-weight:var(--gup-fw-medium); line-height:var(--gup-lh-compact);
}
.side-tools > summary::-webkit-details-marker{ display:none; }
.side-tools > summary::after{ content:'▸'; color:var(--gup-color-text-secondary); }
.side-tools[open] > summary::after{ content:'▾'; }
.side-tools > summary:hover{ background:var(--gup-color-surface-subtle); }
.side-tools-body{ padding-top:var(--gup-sp-3); }
.side-data .side-head{ margin-top:var(--gup-sp-3); }
.side-tools-body > .side-head:first-child{ margin-top:0; }
.side-actions > li + li{ margin-top:2px; }
/* VER1-RELEASE-YEAR-ROLLOVER-UX1 の .side-note（③ への道しるべ）は、
   翌期繰越を記録の並びそのものへ移した時点で使う DOM が無くなったので削除した
   （VER1-FINAL-UIUX-MERGE-FIX。案内文ではなく操作を置く）。 */
.side-actions .rb-btn,
.side-group summary{
  display:block; width:100%; box-sizing:border-box;
  min-height:var(--gup-control-compact);
  padding:var(--gup-sp-1) var(--gup-sp-3);
  border:1px solid transparent; border-radius:var(--gup-radius-sm);
  background:transparent; color:var(--gup-color-text-primary);
  font-family:inherit; font-size:var(--gup-fs-sm); font-weight:var(--gup-fw-normal);
  line-height:var(--gup-lh-compact); text-align:left; cursor:pointer;
}
.side-actions .rb-btn:hover,
.side-group summary:hover{ background:var(--gup-color-surface); border-color:var(--gup-color-border); }
/* GUP-HOME-PROD1 Gate A：配色（テーマ）の選択。
   ★選択中は **面と太さの 2 つ**で示す（色だけに頼らない）。
     ほかの選択中の表現（左ナビの現在地）と同じ文法にそろえる。 */
.gup-theme-pick{
  display:flex; flex-wrap:wrap; align-items:center; gap:var(--gup-sp-1);
  padding:var(--gup-sp-1) 0;
}
.gup-theme-lbl{
  flex:none; padding-inline:var(--gup-sp-3) var(--gup-sp-1);
  font-size:var(--gup-fs-note); color:var(--gup-color-text-secondary);
}
.gup-theme-pick .rb-btn{
  width:auto; flex:1 1 auto; min-width:0;
  padding:var(--gup-sp-1) var(--gup-sp-2); text-align:center;
  border-color:var(--gup-color-border);
}
.gup-theme-pick .rb-btn.active{
  background:var(--gup-surface-inverse); color:var(--gup-text-inverse);
  border-color:var(--gup-surface-inverse);
  font-weight:var(--gup-type-selected-weight);
}
.side-group summary{ list-style:none; font-weight:var(--gup-fw-medium); }
.side-group summary::-webkit-details-marker{ display:none; }
.side-group summary::after{ content:'▸'; float:right; color:var(--gup-color-text-secondary); }
.side-group[open] summary::after{ content:'▾'; }
.side-group ul{ margin:2px 0 var(--gup-sp-1) var(--gup-sp-4); }
/* 取り消せない操作は、通常の移動から見た目で切り離す */
.side-actions--danger{
  border:1px solid var(--gup-color-danger-subtle);
  border-radius:var(--gup-radius-sm);
  padding:var(--gup-sp-1);
  background:var(--gup-color-surface);
}
.side-actions--danger .rb-btn{ color:var(--gup-color-danger); font-weight:var(--gup-fw-medium); }
.side-actions--danger .rb-btn:hover{ background:var(--gup-color-danger-subtle); border-color:var(--gup-color-danger); }

/* ---- 1280px 前後：本文幅を優先して少し細くする ---- */
@media (max-width:1365px){
  .gup-side{ flex-basis:200px; width:200px; padding-left:var(--gup-sp-2); padding-right:var(--gup-sp-2); }
  .side-l1 > .side-item > button{ font-size:var(--gup-fs-sm); padding:var(--gup-sp-2); }
}

/* ---- 狭い画面：左ドロワー ---- */
.side-open{ display:none; }
@media (max-width:719px){
  .app-shell{ display:block; }
  .side-open{
    display:inline-flex; align-items:center;
    min-height:var(--gup-control-compact);
    padding:0 var(--gup-sp-3);
    border:1px solid var(--header-control-line, var(--gup-color-border));
    border-radius:var(--gup-radius-sm);
    background:var(--header-control); color:var(--header-control-text);
    font-family:inherit; font-size:var(--gup-fs-sm); font-weight:var(--gup-fw-medium); cursor:pointer;
  }
  .gup-side{
    position:fixed; inset:0 auto 0 0; z-index:var(--gup-z-modal, 200);
    width:min(84vw, 300px); flex-basis:auto; max-height:none; height:100%;
    transform:translateX(-100%); transition:transform .16s ease;
    box-shadow:var(--gup-shadow-md, 0 10px 30px rgba(0,0,0,.24));
    background:var(--gup-color-surface);
  }
  .gup-side.is-open{ transform:translateX(0); }
  .side-close{
    display:inline-flex; align-items:center; justify-content:center;
    align-self:flex-end;
    min-width:var(--gup-control-standard); min-height:var(--gup-control-standard);
    border:1px solid var(--gup-color-border); border-radius:var(--gup-radius-sm);
    background:var(--gup-color-surface); color:var(--gup-color-text-secondary);
    font-family:inherit; font-size:var(--gup-fs-base); cursor:pointer;
  }
  body.side-open-lock{ overflow:hidden; }
  /* ◎ 経営状況 の左端のつまみは、狭い画面では出さない。
     hover が無い端末では開けないうえ、幅を 22px 取られるだけになるため、
     ここではヘッダのボタンへ戻す（新しい breakpoint は作らない）。 */
  /* ★home.css はこの file より後ろに連結されるので、同じ詳細度だと向こうが勝つ。
     !important も inline style も使わず、要素 1 つぶんだけ詳細度を上げて解く。 */
  html body.gup-cockpit .side-open{
    position:static; inset:auto; transform:none; z-index:auto; height:auto;
    width:auto; min-height:var(--gup-control-compact);
    padding:0 var(--gup-sp-3);
    border:1px solid var(--header-control-line, var(--gup-color-border));
    border-radius:var(--gup-radius-sm);
    font-size:var(--gup-fs-sm);
  }
  html body.gup-cockpit .side-open::after{ content:none; }
}

@media print{
  .gup-side, .side-open{ display:none !important; }
  .app-shell{ display:block !important; }
}

/* ============================================================================
   運転資本の図（共通）
   ★1 つの component を ① 現状把握 と ③ キャッシュG が使う。
     #t0 のような画面固有の scope を持たない（HOME 専用ではない）。
   ★色は既存の semantic token だけ。新しい生の色を作らない。
       棚卸資産＝V ／ 売掛金＝P ／ 買掛金＝運転資本の買掛色 ／ 運転資本＝cG
     塗りの上のインクは --gup-on-fill が **対**で持つ（塗りだけ差し替えると文字が消える）。
   ========================================================================== */
.gup-wc-visual{ min-width:0; }
.gup-wc-head{ display:flex; align-items:baseline; gap:var(--gup-sp-2); flex-wrap:wrap;
  font-size:var(--gup-fs-note); color:var(--gup-text-muted); margin-bottom:3px; }
.gup-wc-head .gup-wc-when{ color:var(--gup-text-secondary); }
.gup-wc-head .gup-wc-src{ margin-left:auto; }
.gup-wc-box{ border:1px solid var(--gup-border-strong); border-radius:var(--gup-radius-sm);
  overflow:hidden; }
.gup-wc-row{ display:flex; height:23px; }
.gup-wc-row + .gup-wc-row{ border-top:1px solid var(--gup-border-strong); }
.gup-wc-cell{ display:flex; flex:none; align-items:center; justify-content:center; gap:5px;
  min-width:0; font-size:var(--gup-fs-note); overflow:hidden; white-space:nowrap;
  padding:0 var(--gup-sp-1); color:var(--gup-on-fill); }
.gup-wc-cell + .gup-wc-cell{ border-left:1px solid var(--gup-border-strong); }
.gup-wc-cell b{ font-weight:700; font-variant-numeric:tabular-nums; }
.gup-wc-cell[data-wc-role="inventory"]{ background:var(--ui-v); }
.gup-wc-cell[data-wc-role="receivable"]{ background:var(--ui-p); }
.gup-wc-cell[data-wc-role="payable"]{ background:var(--ui-wc-pay); }
.gup-wc-cell[data-wc-role="workingCapital"]{ background:var(--gup-cg); }
/* 幅が足りない箱は、**箱は実寸のまま**ラベルを外へ出す（比例を歪めない）。 */
.gup-wc-cell.is-tiny{ overflow:visible; padding:0; justify-content:flex-start; }
.gup-wc-cell.is-tiny > span,.gup-wc-cell.is-tiny > b{ position:relative; left:calc(100% + var(--gup-sp-1));
  color:var(--gup-text-secondary); }
/* 運転資本が負のときの段。右詰めにして、上の行からはみ出した量として読ませる。
   色だけに頼らないので、破線の枠と ▲ 付きの数値を併用する。 */
.gup-wc-row--neg{ justify-content:flex-end; }
.gup-wc-cell.is-neg{ outline:1px dashed var(--gup-border-strong); outline-offset:-1px; }
.gup-wc-note{ margin:var(--gup-sp-1) 0 0; font-size:var(--gup-fs-note);
  color:var(--gup-text-secondary); }
.gup-wc-missing{ margin:0; padding:var(--gup-sp-2); font-size:var(--gup-fs-note);
  color:var(--gup-text-secondary); border:1px dashed var(--gup-border-default);
  border-radius:var(--gup-radius-sm); }
.gup-wc-visual.is-compact .gup-wc-row{ height:20px; }

/* 起点 → 計画期末 の比較（③）。ΔWC と、それがキャッシュへどう効くか。 */
.gup-wc-cmp{ display:flex; align-items:baseline; flex-wrap:wrap; gap:var(--gup-sp-1) var(--gup-sp-3);
  margin-top:var(--gup-sp-2); font-size:var(--gup-fs-note); color:var(--gup-text-secondary); }
.gup-wc-cmp b{ font-size:var(--gup-fs-sm); font-weight:700; color:var(--gup-text-primary);
  font-variant-numeric:tabular-nums; }

/* ③ の 2 図は 起点 → 計画期末 を並べる（同じ物差し）。
   ★新しい画面幅の分岐は作らない。狭くなったら折り返すだけにする（41 の契約を守る）。
     折り返しても **両方の時点**が出る（片方を隠して比較対象を消さない）。 */
.gup-wc-pair{ display:flex; flex-wrap:wrap; align-items:center; gap:var(--gup-sp-2); min-width:0; }
.gup-wc-pair > .gup-wc-side{ flex:1 1 220px; min-width:0; }
.gup-wc-pair > .gup-wc-arrow{ flex:0 0 auto; font-size:var(--gup-fs-sm); color:var(--gup-text-muted); }

/* ===== GUP-HOME-PROD1 Gate B: 経営状況（HOME）=====
   正本 Founder VISUAL OVERRIDE ／ gate/home-prod1/GATE_B.md

   ★ここは **採用 prototype の再現**。UI-THEME1 で Founder が採用した HOME の
     視覚構造・階層・密度・計器の組み方をそのまま production へ持ってくる。
     production の都合に合わせて作り直さない（Founder 指示）。
   ★下の p31-* / hp-* の宣言は prototype の原文。host の名前だけ #hpHost → #t0。
     取り出しは scripts/build-home-cockpit-css.mjs（--check で一致を確かめられる）。
   ★色はここで決めない。#t0 の中で prototype の role を production の token へ
     別名で向けているだけなので、3 テーマの切替がそのまま効く。
   ★HOME だけ器を変える（Cockpit Shell）。①〜⑤ の shell は 1 文字も変えない。 */
/* ===== Cockpit Shell：HOME のときだけ共通 shell を外す =====
   正本 Founder VISUAL OVERRIDE §3

   HOME は司令室で、①〜⑤ は操作盤。だから HOME のときだけ器を変える。
   ★当たり先は body.gup-cockpit の 1 つだけ（ui/cockpit-shell.js が付け外しする）。
   ★①〜⑤ へ移れば class が外れ、共通 shell がそのまま戻る。
   ★画面幅の分岐は増やさない。狭い画面用の宣言をここで書き直しているのは、
     「狭いから」ではなく「HOME だから」外すためで、条件が別だから。 */

/* 共通 KPI ヘッダは出さない。HOME 自身が PQ/VQ/MQ/F/G/cG の正式レールを持つ。 */
body.gup-cockpit .header-kpis{ display:none; }
/* GUP-GLOBAL-SCENARIO-CONTEXT1：ミニ KPI を隠すなら、その札も一緒に隠す
   （札だけ残ると、何を指しているのか分からない札が浮く。実機で踏んだ）。 */
body.gup-cockpit .hkpi-scenario{ display:none; }

/* footer は出さない（cockpit の高さを優先）。
   法的表示は「データ・設定」からいつでも読める。 */
body.gup-cockpit > footer{ display:none; }

/* 業務画面のための大きな余白を HOME へ強制しない。 */
body.gup-cockpit .app-shell > main{ padding:0; }

/* 左ナビは常設しない。狭い画面と同じ drawer にして、ボタンで開く。 */
body.gup-cockpit .app-shell{ display:block; }
body.gup-cockpit .gup-side{
  position:fixed; inset:0 auto 0 0; z-index:var(--gup-z-modal, 400);
  width:min(84vw, 300px); flex-basis:auto; max-height:none; height:100%;
  transform:translateX(-100%); transition:transform .16s ease;
  box-shadow:var(--gup-shadow-overlay);   /* drawer 用の正式 token（未定義 token の fallback をやめた） */
  background:var(--gup-color-surface);
}
body.gup-cockpit .gup-side.is-open{ transform:translateX(0); }
body.gup-cockpit .side-close{
  display:inline-flex; align-items:center; justify-content:center; align-self:flex-end;
  min-width:var(--gup-control-standard); min-height:var(--gup-control-standard);
  border:1px solid var(--gup-color-border); border-radius:var(--gup-radius-sm);
  background:var(--gup-color-surface); color:var(--gup-color-text-secondary);
}
/* Founder 指示：左ナビの入口は、ヘッダの文字ボタンではなく **左端の細いつまみ**。
   ★カーソルを合わせるだけで開く（開閉は sidenav.js が持つ）。
   ★押せる要素として残すので、キーボード（Tab → Enter）とタッチでも開ける。
   ★ドロワーより 1 つ下の層に置く（開いているあいだはドロワーが上に来る）。
   ★文字は読み上げのために残し、見た目だけつまみにする。 */
/* ★画面の高さいっぱいにすると、ヘッダの帯（左上のロゴ）へ被る。
   ロゴを動かすのではなく、つまみを本文の高さの真ん中へ置く。 */
body.gup-cockpit .side-open{
  position:fixed; left:0; top:50%; bottom:auto; transform:translateY(-50%);
  z-index:calc(var(--gup-z-modal, 400) - 1);
  display:flex; align-items:center; justify-content:center;
  width:22px; height:min(46vh, 360px); min-height:0; padding:0;
  border:0; border-right:1px solid var(--gup-color-border);
  border-radius:0 var(--gup-radius-sm) var(--gup-radius-sm) 0;
  background:var(--gup-color-surface-secondary, var(--gup-color-surface));
  color:var(--gup-color-text-secondary);
  font-family:inherit; font-size:0; cursor:pointer;
}
body.gup-cockpit .side-open::after{
  content:'\203A';                      /* › ＝ ここから開く、という向きだけを示す */
  font-size:var(--gup-fs-base); line-height:1;
}
/* つまみ（左 22px）は position:fixed で本文の流れの外に居るので、
   本文の側で場所を空けないと下の内容が潜る。
   ◎ の決算書ナビは左端から貸借対照表を描くため、実測で 24 要素が潜っていた。
   ★空けるのは決算書ナビだけ。HOME は元から左に余白があり、動かす理由が無い。 */
/* ★左端のつまみ（22px）は本文の上に乗る。コックピットの中の画面は
   その幅ぶんを空けておく（空けないと左端の文字がつまみに隠れる）。 */
body.gup-cockpit #t0kessan,
body.gup-cockpit #t0trend{ padding-left:var(--gup-sp-5); }

/* ===== Cockpit の器：HOME を viewport いっぱいにする =====
   ★prototype は 1440×900 を丸ごと使っていた（shell を隠した状態で 1408×874）。
     production でも同じ面積を渡すため、HOME のときだけ body を縦 flex にして
     残り全部を #t0 へ渡す。header の高さが変わっても追随する。

   ★★**足りないときは重ねずにスクロールさせる。**
     実機のブラウザはタブとブックマーク帯があるので viewport は 900 より低い。
     実測（直す前）：viewport 880 で 6px、860 で 26px、800 で 86px 重なっていた。
     1fr が中身より小さくなり、Hero の中身が下の instrument strip の上へ描かれていた。
     効いているのは次の 2 行：
       body を height:100vh + overflow:hidden にしない（min-height にする）
       app-shell を縮ませない（flex-shrink 0）
     これで 1440×900 は従来どおりスクロール 0、低い画面はスクロールになる。 */
body.gup-cockpit{ min-height:100vh; display:flex; flex-direction:column; }
body.gup-cockpit > header{ flex:none; }
body.gup-cockpit .app-shell{ flex:1 0 auto; }
body.gup-cockpit .app-shell > main{ height:100%; }
body.gup-cockpit #t0{ height:100%; }

/* 狭い画面は縮小せず折り返す（Founder §16）。縦スクロールは許す。 */
body.gup-cockpit.gup-cockpit-narrow{ min-height:0; display:block; }
body.gup-cockpit.gup-cockpit-narrow #t0{ height:auto; }

/* ===== Cockpit の実寸あわせ =====
   prototype は 1440×900 を丸ごと使い、中身が 1408×874 だった。
   production は header を残すので、そのぶんだけ縦が短い。
   Founder §15 のとおり、まず器から取り戻す。**構造（4 帯・3 列・右 rail）は変えない。**
     ・ヘッダの帯        56 → 48（上下の余白だけ。中の control は 34px のまま）
     ・#t0 の上下余白    16+16 → 4+4
     ・帯どうしの間隔    9×3 → 6×3
   横は 1408（左右 16）を prototype と同じに保つ。
   計器レール 118 と下段 console 202 は prototype と同じ px（削ると中身が切れる。実測）。 */
body.gup-cockpit > header{ padding-top:var(--gup-sp-1); padding-bottom:0; }
body.gup-cockpit .topline{ padding-bottom:var(--gup-sp-1); }
body.gup-cockpit #t0{ padding:var(--gup-sp-1) var(--gup-sp-4); }
body.gup-cockpit #t0 .p31{ gap:6px; }

/* 右端の補助テキストだけ Regular へ戻す。
   prototype は inline の font-weight:400 で打ち消していたが、
   UI-TYPE1（#10）は JS から weight を書かない契約なので class にした。見た目は同じ。 */
#t0 .p31-row .y.reg{ font-weight:var(--gup-type-body-weight); }

/* ---- prototype の role を production の token へ向ける（色はここで決めない） ---- */
#t0{
  --t-surface-canvas:var(--gup-surface-app);
  --t-surface-panel:var(--gup-surface-primary);
  --t-surface-raised:var(--gup-surface-secondary);
  --t-text-primary:var(--gup-text-primary);
  --t-text-secondary:var(--gup-text-secondary);
  --t-text-muted:var(--gup-text-muted);
  --t-border-subtle:var(--gup-border-default);
  --t-border-strong:var(--gup-border-strong);
  --t-grid:var(--chart-grid);
  --t-mq-p:var(--ui-p);
  --t-mq-v:var(--ui-v);
  --t-mq-m:var(--ui-m);
  --t-mq-q:var(--ui-q);
  --t-mq-f:var(--ui-f);
  --t-mq-g:var(--ui-g);
  /* GUP-COLOR-FIX1（CLR-09 / CLR-10）：G の **文字と目盛り**。塗り・線・帯は --t-mq-g のまま。 */
  --t-mq-g-text:var(--ui-g-text);
  --t-gup-target:var(--gup-target);
  --t-gup-cg:var(--gup-cg);
  --t-wc-pay:var(--ui-wc-pay);
  --t-on-fill:var(--gup-on-fill);
  --t-action-primary:var(--gup-action-primary);
  --t-status-positive:var(--gup-positive);
  --t-status-negative:var(--gup-negative);
  --t-status-warning:var(--gup-warning);
  --t-status-info:var(--gup-info);
  --t-status-unavailable:var(--gup-text-disabled);
  --hp-bg:var(--gup-surface-app);
  --hp-panel:var(--gup-surface-primary);
  --hp-panel-2:var(--gup-surface-secondary);
  --hp-hair:var(--gup-border-default);
  --hp-hair-2:var(--gup-border-strong);
  --hp-accent:var(--gup-action-primary);
}

/* ---- 採用 prototype の共通 shell（hp-*） ---- */
#t0{position:relative;width:100%;box-sizing:border-box;
  font-family:inherit;line-height:1.4;
  padding:var(--gup-sp-4);}
#t0 *{box-sizing:border-box;}
#t0 .hp-p{position:relative;background:var(--hp-panel);border:1px solid var(--hp-hair);
  border-radius:var(--gup-radius-md);padding:var(--gup-sp-4);min-width:0;}
#t0 .hp-p::before,#t0 .hp-p::after{content:"";position:absolute;width:10px;height:10px;
  border-color:var(--hp-accent, var(--gup-action-primary));pointer-events:none;}
#t0 .hp-p::before{left:-1px;top:-1px;border-left:2px solid;border-top:2px solid;
  border-top-left-radius:var(--gup-radius-md);}
#t0 .hp-p::after{right:-1px;bottom:-1px;border-right:2px solid;border-bottom:2px solid;
  border-bottom-right-radius:var(--gup-radius-md);}
#t0 .hp-p--flat::before,#t0 .hp-p--flat::after{display:none;}
#t0 .hp-p--tight{padding:10px var(--gup-sp-3);}
#t0 .hp-p--tight .hp-h{margin-bottom:var(--gup-sp-2);}
#t0 .hp-fit{height:100%;display:flex;flex-direction:column;min-height:0;}
#t0 .hp-fit > .hp-grow{flex:1;min-height:0;}
#t0 .hp-h{display:flex;align-items:baseline;gap:var(--gup-sp-2);
  margin:0 0 var(--gup-sp-3);}
#t0 .hp-h b{font-size:var(--gup-fs-lg);font-weight:700;letter-spacing:.02em;}
#t0 .hp-h span{font-size:var(--gup-fs-note);color:var(--gup-text-muted);
  letter-spacing:.14em;text-transform:uppercase;}
#t0 .hp-h .hp-h-r{margin-left:auto;font-size:var(--gup-fs-note);color:var(--gup-text-muted);}
#t0 .hp-n{font-variant-numeric:tabular-nums;letter-spacing:-.01em;}
#t0 .hp-big{font-size:var(--gup-fs-hero);font-weight:700;line-height:1.05;}
#t0 .hp-mid{font-size:var(--gup-fs-xl);font-weight:700;line-height:1.1;}
#t0 .hp-u{font-size:var(--gup-fs-sm);color:var(--gup-text-secondary);
  font-weight:400;margin-left:var(--gup-sp-1);}
#t0 .hp-lb{font-size:var(--gup-fs-sm);color:var(--gup-text-secondary);}
#t0 .hp-note{font-size:var(--gup-fs-note);color:var(--gup-text-muted);}   /* 現金カードの器（182px）に収める。注記の段のまま */
#t0 .hp-pos{color:var(--gup-positive);}
#t0 .hp-neg{color:var(--gup-negative);}
#t0 .hp-warn{color:var(--gup-warning);}
#t0 .hp-acc{color:var(--hp-accent, var(--gup-action-primary));}
#t0 .hp-grid{display:grid;gap:var(--gup-sp-3);}
#t0 .hp-row{display:flex;gap:var(--gup-sp-3);align-items:center;}
#t0 .hp-col{display:flex;flex-direction:column;gap:var(--gup-sp-2);}
#t0 .hp-sep{height:1px;background:var(--hp-hair);margin:var(--gup-sp-3) 0;}
#t0 .hp-vsep{width:1px;align-self:stretch;background:var(--hp-hair);}
#t0 .hp-top{display:flex;align-items:center;flex-wrap:wrap;gap:var(--gup-sp-3);
  padding-bottom:var(--gup-sp-3);margin-bottom:var(--gup-sp-3);
  border-bottom:1px solid var(--hp-hair);}
#t0 .hp-top h1{margin:0;font-size:var(--gup-fs-xl);font-weight:700;letter-spacing:.02em;}
#t0 .hp-chip{display:inline-flex;align-items:center;gap:6px;font-size:var(--gup-fs-note);
  color:var(--gup-text-secondary);border:1px solid var(--hp-hair);border-radius:var(--gup-radius-pill);
  padding:3px 10px;letter-spacing:.08em;}
#t0 .hp-dot{width:6px;height:6px;border-radius:50%;background:var(--gup-positive);flex:none;}
#t0 table.hp-t{width:100%;min-width:0;table-layout:fixed;border-collapse:collapse;
  font-size:var(--gup-fs-sm);}
#t0 table.hp-t th,#t0 table.hp-t td{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
#t0 table.hp-t th{text-align:left;font-weight:400;color:var(--gup-text-muted);
  font-size:var(--gup-fs-note);padding:var(--gup-sp-1) 6px;border-bottom:1px solid var(--hp-hair);
  letter-spacing:.06em;}
#t0 table.hp-t td{padding:6px;border-bottom:1px solid var(--hp-hair);
  font-variant-numeric:tabular-nums;}
#t0 table.hp-t td.num{text-align:right;}
#t0 table.hp-t tr:last-child td{border-bottom:none;}
#t0 .hp-bar{height:6px;border-radius:var(--gup-radius-pill);background:var(--hp-hair);overflow:hidden;flex:1;}
#t0 .hp-bar i{display:block;height:100%;border-radius:var(--gup-radius-pill);
  background:var(--hp-accent, var(--gup-action-primary));}
#t0 .hp-alert{border:1px solid var(--hp-hair);border-left:3px solid var(--gup-warning);
  border-radius:var(--gup-radius-sm);padding:var(--gup-sp-2) var(--gup-sp-3);}
#t0 .hp-alert--hi{border-left-color:var(--gup-negative);}
#t0 .hp-alert--ok{border-left-color:var(--gup-positive);}
#t0 .hp-foot{margin-top:var(--gup-sp-4);padding-top:var(--gup-sp-2);
  border-top:1px solid var(--hp-hair);display:flex;
  font-size:var(--gup-fs-note);color:var(--gup-text-muted);letter-spacing:.1em;}
#t0 .hp-foot span:last-child{margin-left:auto;}

/* ---- 採用 prototype の base ---- */
#t0[data-hp-theme]{padding:13px var(--gup-sp-4);
  background-image:
    linear-gradient(to bottom,var(--t-grid) 1px,transparent 1px);
  background-size:48px 48px,48px 48px;}
#t0 .hp-top{padding-bottom:6px;margin-bottom:0;border-bottom-color:var(--t-border-subtle);}
#t0 .hp-top h1{letter-spacing:.06em;}
#t0 .hp-chip{border-color:var(--t-border-subtle);background:var(--t-surface-panel);
  color:var(--t-text-secondary);border-radius:3px;}
#t0 .hp-dot{background:var(--t-status-positive);border-radius:1px;}
#t0 .hp-p{background:var(--t-surface-panel);border-color:var(--t-border-subtle);
  border-radius:4px;box-shadow:inset 0 1px 0 rgba(255,255,255,.035);}
#t0 .hp-p::before,#t0 .hp-p::after{width:8px;height:8px;
  border-color:var(--t-border-strong);border-radius:0;}
#t0 .hp-note{color:var(--t-text-muted);}
#t0 .hp-n{font-variant-numeric:tabular-nums;font-feature-settings:"tnum" 1;
  letter-spacing:-.015em;}
#t0 table.dg-t{width:100%;min-width:0;table-layout:fixed;border-collapse:collapse;
  font-size:var(--gup-fs-note);}
#t0 table.dg-t th,#t0 table.dg-t td{overflow:hidden;text-overflow:ellipsis;
  white-space:nowrap;padding:var(--gup-sp-1) 6px;}
#t0 table.dg-t th{text-align:right;font-weight:400;color:var(--t-text-muted);
  font-size:var(--gup-fs-note);letter-spacing:.06em;border-bottom:1px solid var(--t-border-strong);}
#t0 table.dg-t th.l,#t0 table.dg-t td.l{text-align:left;}
#t0 table.dg-t td{text-align:right;font-variant-numeric:tabular-nums;
  border-bottom:1px solid var(--t-grid);}
#t0 table.dg-t tr.sec td,#t0 table.dg-t tr.sec th{border-top:1px solid var(--t-border-subtle);}
#t0 table.dg-t td.dim{color:var(--t-text-muted);}
#t0 table.dg-t td.lock{background:var(--t-surface-raised);}
#t0 table.dg-t td.b{font-weight:700;}



/* ---- 採用 prototype の HOME 本体（p31-*） ---- */
#t0 .p31{display:grid;grid-template-rows:auto 118px minmax(0,1fr) 202px;
  gap:9px;height:100%;}
/* 列の数は中身の枚数から決める（GUP-COCKPIT-UNIT-FIDELITY1）。
   管理単位は cG が formal に無いので 5 枚になる。空の 6 枠目を残さない。
   ★画面幅の分岐は増やさない（狭い画面は下の narrow が 2 列にする）。 */
#t0 .p31-rail{display:grid;grid-template-columns:repeat(var(--p31-rail-n,6),minmax(0,1fr));
  min-height:0;overflow:hidden;padding:var(--gup-sp-2) 0 7px;}
#t0 .p31-rail > div{min-width:0;padding:0 14px;display:flex;flex-direction:column;
  border-left:1px solid var(--t-border-subtle);position:relative;}
#t0 .p31-rail > div:first-child{border-left:none;padding-left:2px;}
#t0 .p31-rail > div::before{content:"";position:absolute;left:14px;right:14px;top:-8px;
  height:2px;background:var(--k-c);}
#t0 .p31-rail > div:first-child::before{left:2px;}
/* UX-SYSTEM1A（UX-12）：比較基準・期間・差異の行を 11px の補助段から 12px（注記の段）へ。
   差異の値（太字）は 13px（compact 本文）。DESIGN.md v2 §6.1 の段に合わせる。
   ★GUP-SIMPLIFY1（SP-02）：ここに在った英字 caption（見出しの下の装飾）は退役した。 */
#t0 .p31-k1{display:flex;align-items:baseline;gap:6px;}
#t0 .p31-k1 span{font-size:var(--gup-fs-note);white-space:nowrap;color:var(--t-text-secondary);}
/* GUP-COLOR-FIX1（CLR-09）：記号は文字。塗り（--k-c）と別に文字用の段を受け取る。 */
#t0 .p31-k1 i{font-style:normal;font-size:var(--gup-fs-note);letter-spacing:.14em;font-weight:700;
  color:var(--k-ct, var(--k-c));}
#t0 .p31-k1 u{text-decoration:none;margin-left:auto;font-size:var(--gup-fs-note);letter-spacing:.12em;
  color:var(--t-text-muted);}
/* 主数値と比較（前期比／計画比）は同じ段。比較は右に 2 段（Founder）。入りきらない狭い幅では下へ折り返す */
#t0 .p31-k2r{display:flex;flex-wrap:wrap;align-items:flex-end;gap:0 var(--gup-sp-2);min-width:0;}
#t0 .p31-k2{font-size:26px;font-weight:700;line-height:1.1;white-space:nowrap;
  margin:2px 0 3px;color:var(--t-text-primary);}
#t0 .p31-k3{display:flex;flex-direction:column;min-width:0;margin:0 0 3px;font-size:var(--gup-fs-note);line-height:1.2;
  white-space:nowrap;color:var(--t-text-muted);}
#t0 .p31-k3 b{font-weight:700;color:var(--t-text-secondary);}
/* micro chart：比較を横へ逃がしたぶんを図の高さへ返す（16/24 → 32/48）。cG の meter は中央に置く */
#t0 .p31-k4{margin-top:auto;height:48px;display:flex;align-items:center;}
#t0 .p31-main{display:grid;grid-template-columns:minmax(0,1fr) 316px;gap:9px;min-height:0;}
#t0 .p31-fc{display:flex;flex-direction:column;min-height:0;overflow:hidden;padding:10px 14px;}
/* GUP-MANAGEMENT-ISSUE1：経営課題 → 利益・資金への影響 の 1 行。
   ★1 行に収める（広い画面では折り返さない）。狭い画面だけ意味単位で折り返す。
   ★新しい色は作らない。影響は既存の lever token をそのまま借りる。 */
#t0 .hp-iss{display:flex;align-items:baseline;gap:var(--gup-sp-1) var(--gup-sp-2);
  flex:none;min-width:0;padding:0 var(--gup-sp-1);}
#t0 .hp-iss-k{font-size:var(--gup-fs-note);color:var(--t-text-secondary);flex:none;}
#t0 .hp-iss-t{font-size:var(--gup-fs-sm);min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
#t0 .hp-iss-i{font-size:var(--gup-fs-note);flex:none;padding:0 var(--gup-sp-1);
  border-left:2px solid var(--t-border-subtle);}
#t0 .hp-iss-u,#t0 .hp-iss-2{font-size:var(--gup-fs-note);color:var(--t-text-secondary);
  min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
#t0 .hp-iss > .hp-cmd{margin-left:auto;flex:none;}
/* 狭い画面では意味の単位で折り返す。★HOME 自身の既存機構（body.gup-cockpit-narrow）を使う。
   画面幅の分岐を 1 つも増やさない — HOME は幅の判定を JS 側の 1 か所が持つ。 */
body.gup-cockpit-narrow #t0 .hp-iss{flex-wrap:wrap;}
#t0 .p31-fch{display:flex;align-items:baseline;gap:9px;flex:none;
  padding-bottom:var(--gup-sp-2);border-bottom:1px solid var(--t-border-subtle);}
#t0 .p31-fch b{font-size:var(--gup-fs-lg);font-weight:700;white-space:nowrap;}
/* GUP-MANAGEMENT-ISSUE1：この行は 見込の札 ／ 経営課題 ／ 問い の 3 つを並べる。
   ★問いだけを右端へ寄せる（経営課題は札のすぐ隣＝読む順を変えない）。 */
#t0 .p31-fch > .p31-fcq{margin-left:auto;font-size:var(--gup-fs-note);color:var(--t-text-secondary);}
#t0 .p31-fch{flex-wrap:wrap;}
#t0 .p31-fcr{flex:1;min-height:0;display:grid;
  grid-template-columns:252px minmax(0,1fr) 200px;gap:15px;padding:9px 0;align-items:stretch;}
/* ---- GUP-COCKPIT-UNIT-WC1：表示対象（全社 ／ 管理単位）---------------------
   会社・年度の selector とは別の概念なので、現在地の帯の中に 1 つだけ置く。
   ★「表示対象」という見出しの文字は出さない（帯が縦に伸びるため。Founder 指示）。
     選んでいる値そのもの（全社 ／ 単位名）が何を選ぶ欄かを言う。
     読み上げ用の名前は select の aria-label が持つので、見た目の label は要らない。 */
#t0 .hp-scope{display:inline-flex;align-items:center;padding:0;border:0;background:transparent;
  letter-spacing:normal;font-size:var(--gup-fs-note);}
#t0 .hp-scope-sel{font:inherit;color:var(--t-text-secondary);background:transparent;
  border:1px solid var(--t-border-subtle);border-radius:var(--gup-radius-sm);
  padding:2px var(--gup-sp-1);max-width:14em;
  min-height:var(--gup-control-compact);cursor:pointer;}
#t0 .hp-scope-sel:hover{color:var(--gup-text-primary);border-color:var(--t-border-strong);}
/* GUP-COLOR-FIX1（CLR-01）：帯へ移すと #t0 の規則から外れ、面と枠が UA の既定へ戻る。
   色だけ帯の文字色にすると **白い面に白い文字**（1.15:1）になっていた。
   ★帯の中の操作部品なので、面・枠・文字を chrome の control role で **対**にする。
   ★既定・hover・focus を同じ家系でそろえる（一状態だけ直さない）。 */
.hm-head-slot .hp-scope-sel{font:inherit;color:var(--header-control-text);
  background:var(--header-control);border:1px solid var(--header-border);
  border-radius:var(--gup-radius-sm);padding:2px var(--gup-sp-1);max-width:14em;
  min-height:var(--gup-control-compact);cursor:pointer;}
.hm-head-slot .hp-scope-sel:hover{background:var(--header-control-hover);
  border-color:var(--header-border-soft);color:var(--header-text);}
.hm-head-slot .hp-scope-sel:focus-visible{outline:2px solid var(--header-focus);outline-offset:1px;}
#t0 .p31-hero{min-width:0;display:flex;flex-direction:column;}
#t0 .p31-hero .cap{font-size:var(--gup-fs-note);letter-spacing:.14em;color:var(--t-text-muted);}
#t0 .p31-hero .big{font-size:38px;font-weight:700;line-height:1;letter-spacing:-.025em;
  margin:2px 0;white-space:nowrap;color:var(--t-text-primary);}
#t0 .p31-hero .sub{font-size:var(--gup-fs-xs);color:var(--t-text-muted);white-space:nowrap;}
#t0 .p31-hero .sub b{font-weight:700;color:var(--t-text-secondary);}
#t0 .p31-gaps{margin-top:9px;padding-top:var(--gup-sp-2);border-top:1px solid var(--t-border-subtle);
  display:flex;flex-direction:column;gap:6px;}
#t0 .p31-gap{display:flex;align-items:baseline;gap:var(--gup-sp-2);border-left:2px solid var(--p31-c);
  padding-left:9px;}
#t0 .p31-gap .n{min-width:0;flex:1;}
#t0 .p31-gap .n i{font-style:normal;display:block;font-size:var(--gup-fs-note);
  color:var(--t-text-secondary);white-space:nowrap;}
#t0 .p31-gap .n s{text-decoration:none;display:block;font-size:var(--gup-fs-xs);
  color:var(--t-text-muted);white-space:nowrap;}
#t0 .p31-gap .v{flex:none;font-size:17px;font-weight:700;white-space:nowrap;}
/* PU-09：計画を作ったときの話は既定で閉じる。見出しは注記の段で、主 KPI と競合させない。 */
#t0 .p31-more{display:flex;flex-direction:column;gap:6px;min-width:0;}
#t0 .p31-more > summary{cursor:pointer;list-style:none;font-size:var(--gup-fs-note);
  color:var(--t-text-muted);line-height:var(--gup-lh-compact);}
#t0 .p31-more > summary::-webkit-details-marker{display:none;}
#t0 .p31-more > summary::before{content:'\25B8';margin-right:var(--gup-sp-1);}
#t0 .p31-more[open] > summary::before{content:'\25BE';}
/* ★閉じた details でも、中の .p31-gap が display:flex を持つので消えない。
   「閉じているときは中身を出さない」を明示する（実機で高さ 0 になることを gate が見る）。 */
#t0 .p31-more:not([open]) > *:not(summary){display:none;}
#t0 .p31-hero .adv{padding-top:7px;font-size:var(--gup-fs-note);color:var(--t-text-secondary);}
#t0 .p31-hero .adv b{font-weight:700;color:var(--t-status-positive);}
/* GUP-UX-WORLDCLASS1 Phase 1（UX-07 / UX-10）：1 レバーの行は第 3 層「計画のつくり方」の続き（.p31-gap--third と同じ段）。
   独立して下端へ寄せない（margin-top:auto を外した）。基準の 1 行は折り返してよい（切らない）。 */
#t0 .p31-lever .n i{white-space:normal;}
#t0 .p31-lever .n s b{font-size:var(--gup-fs-xs);font-weight:700;color:var(--t-text-primary);}
#t0 .p31-tr{min-width:0;display:flex;flex-direction:column;}
#t0 .p31-lg{display:inline-flex;align-items:center;gap:var(--gup-sp-1);white-space:nowrap;}
#t0 .p31-lg em{font-style:normal;width:15px;height:0;border-top:2.5px solid currentColor;}
#t0 .p31-lg em.d{border-top-style:dashed;border-top-width:2px;}
#t0 .p31-lg em.t{border-top-width:1.5px;opacity:.62;}
#t0 .p31-lg em.s{width:9px;height:9px;border:none;border-radius:1px;background:currentColor;}
#t0 .p31-lg em.o{width:9px;height:9px;border:1.4px dashed currentColor;border-radius:1px;
  background:none;}
/* 予測＝同じ色の薄い面 ＋ 枠（GUP-PERIOD-STATUS-GRAMMAR1 §8。棒の描き方と同じ文法）。
   ★色は currentColor だけ（生の色を書かない）。枠幅は既存の 1.4px を使う（種類を増やさない）。 */
#t0 .p31-lg em.soft{width:9px;height:9px;border:1.4px solid currentColor;border-radius:1px;
  background:currentColor;opacity:.45;}
#t0 .p31-lg em.g{width:15px;height:0;border-top:3px solid currentColor;}
#t0 .p31-zh{display:flex;flex-wrap:wrap;align-items:baseline;gap:2px 10px;font-size:var(--gup-fs-note);
  flex:none;color:var(--t-text-muted);}
#t0 .p31-zh b{font-weight:700;color:var(--t-text-secondary);letter-spacing:.04em;}
#t0 .p31-zh .u{margin-left:auto;}
#t0 .p31-z{flex:none;}
#t0 .p31-z svg{display:block;}
#t0 .p31-pg{min-width:0;display:flex;flex-direction:column;align-items:center;
  justify-content:center;}
#t0 .p31-pgd{position:relative;width:100%;}
#t0 .p31-pgring{position:absolute;left:0;right:0;top:0;pointer-events:none;}
#t0 .p31-pgring i{position:absolute;left:50%;transform:translateX(-50%);top:2px;
  width:3px;height:21px;}
#t0 .p31-pgv{position:absolute;left:0;right:0;top:50%;transform:translateY(-58%);
  text-align:center;}
#t0 .p31-pgv b{display:block;font-size:28px;font-weight:700;line-height:1;}
#t0 .p31-pgv s{text-decoration:none;display:block;font-size:var(--gup-fs-note);
  color:var(--t-text-muted);margin-top:2px;}
#t0 .p31-pgn{margin-top:5px;text-align:center;font-size:var(--gup-fs-note);
  color:var(--t-text-secondary);white-space:nowrap;}
#t0 .p31-pgn b{font-weight:700;color:var(--t-text-primary);}
#t0 .p31-mini{flex:none;display:grid;grid-template-columns:repeat(5,minmax(0,1fr));
  gap:var(--gup-sp-3);padding-top:var(--gup-sp-2);border-top:1px solid var(--t-border-subtle);}
#t0 .p31-mini > div{min-width:0;display:flex;flex-direction:column;}
#t0 .p31-mini .t{display:flex;justify-content:space-between;gap:6px;font-size:var(--gup-fs-note);
  color:var(--t-text-secondary);}
#t0 .p31-mini .t span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
  display:flex;align-items:baseline;gap:5px;min-width:0;}
#t0 .p31-mini .t i{flex:none;font-style:normal;font-size:var(--gup-fs-note);
  color:var(--t-text-muted);white-space:nowrap;}
#t0 .p31-mini .t b{flex:none;font-weight:700;color:var(--t-text-primary);white-space:nowrap;}
#t0 .p31-mini .cv{flex:none;}
#t0 .p31-mini .cv svg{display:block;}
#t0 .p31-ef{height:60px;display:grid;
  grid-template-rows:repeat(var(--p31-rows,4),minmax(0,1fr));}
#t0 .p31-ef .r{display:flex;align-items:center;gap:5px;min-width:0;}
/* GUP-AIR-SURFACE1（補正 B）：opacity で薄くするのをやめた。
   ★opacity .7 は「その他 / 未割当 / 未説明」の行ラベルを 3.14:1 まで落としていた
     （現行 Air でも同じ。面を変えただけでは 3.04:1 のまま残るのでここで直す）。
   ★補足は「重要度が低い」であって「操作できない」ではないので disabled へ逃がさない
     （GUP-COLOR-FIX1：secondary ≠ disabled）。supplementary の semantic role をそのまま使う。
   ★主役（P/V/Q/F）との区別は、薄さではなく **左の印が neutral かどうか**が担う。 */
#t0 .p31-ef .r.sub .n{color:var(--gup-text-supplementary);}
#t0 .p31-ef .n{flex:none;width:50px;font-size:var(--gup-fs-note);color:var(--t-text-secondary);
  white-space:nowrap;display:flex;align-items:center;gap:var(--gup-sp-1);}
#t0 .p31-ef .n em{flex:none;font-style:normal;width:3px;height:10px;background:var(--e-c);}
#t0 .p31-ef .b{flex:1;min-width:0;height:6px;position:relative;background:var(--t-grid);}
#t0 .p31-ef .b::before{content:"";position:absolute;left:50%;top:-2px;bottom:-2px;
  width:1px;background:var(--t-border-strong);}
#t0 .p31-ef .b i{position:absolute;top:0;bottom:0;background:var(--e-c);}
#t0 .p31-ef .v{flex:none;width:56px;text-align:right;font-size:var(--gup-fs-note);font-weight:700;
  white-space:nowrap;}
#t0 .p31-ill{margin-right:var(--gup-sp-1);padding:0 3px;border-radius:2px;font-size:var(--gup-fs-note);
  color:var(--t-text-secondary);border:1px solid var(--t-border-strong);}
#t0 .p31-cs{display:flex;flex-direction:column;min-height:0;overflow:hidden;padding:10px 13px;}
#t0 .p31-csh{display:flex;align-items:baseline;gap:9px;flex:none;
  padding-bottom:var(--gup-sp-2);border-bottom:1px solid var(--t-border-subtle);}
#t0 .p31-csh b{font-size:var(--gup-fs-lg);font-weight:700;}
#t0 .p31-csh span{margin-left:auto;font-size:var(--gup-fs-note);font-weight:700;}
/* GUP-COCKPIT-UNIT-WC1（Founder 決定 2）：下段は 打ち手と宿題 ｜ 打ち手は効いているか の 2 列。
   Cash の列を退役したので、空いた幅は **読みやすさ**（担当・期限・KPI の 3 数値）へ渡す。
   62:38 は初期値。1440 の実測で 60〜65 : 35〜40 の範囲で調整する。 */
#t0 .p31-low{display:grid;grid-template-columns:minmax(0,62fr) minmax(0,38fr);
  min-height:0;overflow:hidden;padding:9px 0;}
#t0 .p31-low > div{min-width:0;padding:0 14px;display:flex;flex-direction:column;
  border-left:1px solid var(--t-border-subtle);overflow:hidden;}
#t0 .p31-low > div:first-child{border-left:none;padding-left:var(--gup-sp-1);}
#t0 .p31-lh{display:flex;align-items:baseline;gap:7px;margin-bottom:7px;flex:none;}
#t0 .p31-lh b{font-size:var(--gup-fs-sm);font-weight:700;white-space:nowrap;}
#t0 .p31-lh span{margin-left:auto;font-size:var(--gup-fs-note);color:var(--t-text-muted);white-space:nowrap;}
#t0 .p31-row{display:flex;align-items:baseline;gap:var(--gup-sp-2);font-size:var(--gup-fs-note);margin-bottom:6px;}
#t0 .p31-row .k{flex:none;font-size:var(--gup-fs-note);color:var(--t-text-muted);width:36px;
  font-variant-numeric:tabular-nums;}
#t0 .p31-row .x{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
#t0 .p31-row .y{flex:none;font-weight:700;white-space:nowrap;}
#t0 .p31-row .z{flex:none;font-size:var(--gup-fs-note);color:var(--t-text-muted);white-space:nowrap;
  width:82px;text-align:right;overflow:hidden;text-overflow:ellipsis;}
#t0 .p31-sep{margin:5px 0 7px;height:1px;background:var(--t-border-subtle);}


/* ---- HOME-INFORMATION-REDESIGN1（REV5）------------------------------
   分析帯は 3 つ。3 つ目（固定費 F）は空いた 3 列ぶんの幅を受け取る。 */
#t0 .p31-mini > div:nth-child(3){grid-column:span 3;}
#t0 .p31-fb{display:grid;grid-template-columns:1fr 1fr;column-gap:var(--gup-sp-4);row-gap:2px;height:60px;
  align-content:start;}
#t0 .p31-fbr{display:grid;grid-template-columns:76px minmax(0,1fr) 50px 50px;gap:5px;
  align-items:center;font-size:var(--gup-fs-note);line-height:14px;height:14px;}
#t0 .p31-fbr .n{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
  color:var(--t-text-secondary);}
#t0 .p31-fbr .tk{position:relative;height:8px;background:var(--t-grid);min-width:0;}
#t0 .p31-fbr .tk i{position:absolute;left:0;top:0;height:100%;}
/* 計画は「印」。塗りではないので、見込が計画を超えたことが形で分かる。 */
#t0 .p31-fbr .tk u{position:absolute;top:-2px;width:2px;height:12px;margin-left:-2px;
  background:var(--t-text-primary);}
#t0 .p31-fbr s{text-decoration:none;text-align:right;color:var(--t-text-muted);
  white-space:nowrap;overflow:hidden;}
#t0 .p31-fbr b{text-align:right;font-weight:700;white-space:nowrap;overflow:hidden;}

/* ---- 中央右：商品・サービス別の MQ 見込 ---- */
#t0 .p31-pl{flex:1;min-height:0;overflow-y:auto;overflow-x:hidden;overscroll-behavior:contain;
  scrollbar-width:thin;scrollbar-color:var(--t-border-strong) transparent;padding:var(--gup-sp-2) 0 0;}
#t0 .p31-pl::-webkit-scrollbar{width:6px;}
#t0 .p31-pl::-webkit-scrollbar-track{background:transparent;}
#t0 .p31-pl::-webkit-scrollbar-thumb{background:var(--t-border-strong);border-radius:var(--gup-radius-pill);}
#t0 .p31-plr{padding:5px 0;}
#t0 .p31-plr + .p31-plr{border-top:1px solid var(--t-border-subtle);}
#t0 .p31-plr .h{display:flex;align-items:baseline;gap:var(--gup-sp-2);}
#t0 .p31-plr .h b{flex:1;min-width:0;font-size:var(--gup-fs-sm);font-weight:700;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
#t0 .p31-plr .h u{flex:none;text-decoration:none;font-size:19px;font-weight:700;line-height:1.1;}
#t0 .p31-plr .tk{position:relative;height:7px;background:var(--t-grid);
  margin:var(--gup-sp-1) 0 3px;}
#t0 .p31-plr .tk i{display:block;height:100%;}
/* 予算は「印」。塗りではないので、見込が予算を超えたことが形で分かる。 */
#t0 .p31-plr .tk em{position:absolute;top:-2px;width:2px;height:11px;margin-left:-2px;
  background:var(--t-text-primary);}
#t0 .p31-plr .s{display:flex;gap:var(--gup-sp-3);font-size:var(--gup-fs-note);color:var(--t-text-muted);}
#t0 .p31-plt{flex:none;display:flex;gap:var(--gup-sp-3);font-size:var(--gup-fs-note);color:var(--t-text-muted);
  padding-top:5px;border-top:1px solid var(--t-border-subtle);}
#t0 .p31-un{flex:none;padding-top:var(--gup-sp-2);margin-top:var(--gup-sp-2);
  border-top:1px solid var(--t-border-subtle);}
#t0 .p31-unr{display:flex;align-items:baseline;gap:var(--gup-sp-2);font-size:var(--gup-fs-xs);
  margin-bottom:3px;}
#t0 .p31-unr .x{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
#t0 .p31-unr .y,#t0 .p31-unr .z{flex:none;width:62px;text-align:right;font-weight:700;}

/* ---- 下段：器の高さを固定し、中身だけ内部スクロール ---- */
/* GUP-COCKPIT-UNIT-WC1：現金・借入・ネットキャッシュの表と、運転資本の図は
   HOME から退役した。図は共通 component（styles/working-capital.css）が ① と ③ で描く。 */
/* KPI の「増えるほど良い／減るほど良い」は名前の下に小さく（差の符号だけで良し悪しを決めない）。 */
#t0 .p31-kdir{display:block;text-decoration:none;font-size:var(--gup-fs-note);color:var(--t-text-muted);}
#t0 .p31-tb{flex:1;min-height:0;overflow-y:auto;overscroll-behavior:contain;
  scrollbar-width:thin;scrollbar-color:var(--t-border-strong) transparent;}
#t0 .p31-tb::-webkit-scrollbar{width:6px;}
#t0 .p31-tb::-webkit-scrollbar-track{background:transparent;}
#t0 .p31-tb::-webkit-scrollbar-thumb{background:var(--t-border-strong);border-radius:var(--gup-radius-pill);}
/* ★layout.css の global `table{min-width:820px}` をここで閉じる（cG Gate 3B と同じ罠）。 */
#t0 .p31-tb table{width:100%;min-width:0;table-layout:fixed;border-collapse:collapse;
  font-variant-numeric:tabular-nums;}
#t0 .p31-tb th,#t0 .p31-tb td{padding:3px 3px 3px 0;font-size:var(--gup-fs-xs);
  text-align:right;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.3;}
#t0 .p31-tb th{font-size:var(--gup-fs-note);color:var(--t-text-muted);font-weight:400;
  border-bottom:1px solid var(--t-border-subtle);}
#t0 .p31-tb th:first-child,#t0 .p31-tb td:first-child{text-align:left;}
#t0 .p31-tb tr + tr td{border-top:1px solid var(--t-border-subtle);}
#t0 .p31-tb td.m{color:var(--t-text-muted);}

/* ---- 到達リング：100% を超えた分は内側の細い輪へ ---- */
#t0 .p31-pgo{position:absolute;left:0;right:0;top:0;bottom:0;pointer-events:none;
  display:flex;align-items:center;justify-content:center;}
#t0 .p31-pgo svg{display:block;}
#t0 .p31-pga{margin-top:2px;text-align:center;font-size:var(--gup-fs-note);color:var(--t-text-muted);}


/* ---- HOME-CASH-VISUAL-POLISH1：現金はどうか（前期末 / 現在 / 増減 ＋ 運転資本）---- */
/* ★塗りは変数の色（棚卸資産＝V ／ 売掛金＝P ／ 買掛金＝紫 ／ 運転資本＝cG）。
   塗りの上のインクは --t-on-fill が **対**で持つ（塗りだけ差し替えると文字が消える）。 */
/* PU-17：比例を歪めないための逃がし方。
   ・is-tiny … 幅が足りない箱は、ラベルを箱の外（右）へ出す。箱は実寸のまま。
   ・is-neg  … 運転資本が負のときの段。右詰めにして、上の行からはみ出した量として読ませる。
     色だけに頼らないので、破線の枠と ▲ 付きの数値を併用する。 */

body.gup-cockpit-narrow #t0[data-hp-theme]{height:auto;overflow:visible;background-size:36px 36px,36px 36px;}
body.gup-cockpit-narrow #t0 .p31{grid-template-rows:none;height:auto;}
body.gup-cockpit-narrow #t0 .p31-rail{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px 0;}
body.gup-cockpit-narrow #t0 .p31-rail > div{border-left:none;padding:9px var(--gup-sp-1) 0;}
body.gup-cockpit-narrow #t0 .p31-rail > div::before{left:4px;right:4px;top:0;}
body.gup-cockpit-narrow #t0 .p31-rail > div:first-child::before{left:4px;}
body.gup-cockpit-narrow #t0 .p31-main,body.gup-cockpit-narrow #t0 .p31-low{grid-template-columns:minmax(0,1fr);}
body.gup-cockpit-narrow #t0 .p31-low > div{border-left:none;border-top:1px solid var(--t-border-subtle);
    padding:11px var(--gup-sp-1) 0;}
body.gup-cockpit-narrow #t0 .p31-fcr{grid-template-columns:minmax(0,1fr);}
body.gup-cockpit-narrow #t0 .p31-mini{grid-template-columns:minmax(0,1fr);gap:var(--gup-sp-3);}
/* ★狭いときは固定費 F を 1 列へ。2 列のままだと 1 行 186px が要り、
   390px で右へ 39px はみ出す（実測）。断ち切り規則は増やさない（既存の narrow class に相乗り）。 */
body.gup-cockpit-narrow #t0 .p31-fb{grid-template-columns:minmax(0,1fr);height:auto;}
body.gup-cockpit-narrow #t0 .p31-pgd{max-width:220px;margin:0 auto;}

/* ===== Compact Cockpit =====
   正本 Founder VISUAL OVERRIDE / COMPACT COCKPIT GATE

   高さが足りないときだけ当たる（ui/home.js が実測して付ける）。
   ★やるのは「縮小」ではなく「高密度化」。
     削る順は 空白 → 装飾の高さ → 補助文の行送り の順で、**情報も構造も削らない**。
   ★第一階層（着地見込・目標・あと○○・3 つの Gap の値・制約・実行のずれ・
     次の一手・Three G の値）は小さくしない。
   ★全体を scale() で縮めない。 */

/* ---- 器（Priority 1：空白）---- */
body.gup-cockpit-compact > header{ padding-top:2px; }
body.gup-cockpit-compact .topline{ padding-bottom:2px; }
body.gup-cockpit-compact #t0{ padding:2px var(--gup-sp-4); }
body.gup-cockpit-compact #t0 .p31{ grid-template-rows:auto auto minmax(0,1fr) auto; gap:3px; }

/* ---- 見出し行：横へ逃がして高さを使わない（Founder §17）---- */
body.gup-cockpit-compact #t0 .hp-top{ padding:0; }
body.gup-cockpit-compact #t0 .hp-top h1{ font-size:17px; line-height:1.25; }
body.gup-cockpit-compact #t0 .hp-chip{ padding:1px 7px; }

/* ---- 計器レール（Priority 1・2）---- */
body.gup-cockpit-compact #t0 .p31-rail{ padding:5px 0 var(--gup-sp-1); }
body.gup-cockpit-compact #t0 .p31-k2{ font-size:23px; }
body.gup-cockpit-compact #t0 .p31-k3{ line-height:1.2; }
body.gup-cockpit-compact #t0 .p31-k4{ height:36px; }

/* ---- Hero（Priority 1・2）---- */
body.gup-cockpit-compact #t0 .p31-fc{ padding:5px var(--gup-sp-3); }
body.gup-cockpit-compact #t0 .p31-fch{ padding-bottom:var(--gup-sp-1); }
body.gup-cockpit-compact #t0 .p31-fcr{ padding:5px 0; gap:var(--gup-sp-3); }
body.gup-cockpit-compact #t0 .p31-hero .big{ font-size:33px; }
body.gup-cockpit-compact #t0 .p31-gaps{ margin-top:6px; padding-top:5px; gap:5px; }
body.gup-cockpit-compact #t0 .p31-hero .adv{ padding-top:var(--gup-sp-1); }
body.gup-cockpit-compact #t0 .p31-pgn{ margin-top:3px; }
body.gup-cockpit-compact #t0 .p31-pgv b{ font-size:25px; }

/* ---- instrument strip（Founder §13：ここは必ず実高さを確保する）---- */
body.gup-cockpit-compact #t0 .p31-mini{ padding-top:5px; gap:10px; }
body.gup-cockpit-compact #t0 .p31-ef,
body.gup-cockpit-compact #t0 .p31-fb{ height:62px; }

/* ---- Constraint rail（縦だけ詰める。情報は削らない）---- */
body.gup-cockpit-compact #t0 .p31-cs{ padding:6px var(--gup-sp-3); }
/* ⑥ 制約 rail（Founder §14：幅 316 は維持。縦だけ詰める。情報は削らない）。
   ★実測で Hero の高さを決めているのは **右の制約 rail 446px**（Hero は 399px）。
     だから Hero を詰めても縦は減らない。ここを詰めるのが正しい。
   ★制約の要因名・基準外の件数・次の一手の見出し（第一階層）は小さくしていない。
     詰めたのは 内側の余白 と 補助文の行送り だけ。 */
body.gup-cockpit-compact #t0 .p31-csh{ padding-bottom:2px; line-height:1.2; }

/* ---- 下段 console（Priority 1・2）---- */
body.gup-cockpit-compact #t0 .p31-low{ padding:5px var(--gup-sp-3); }

body.gup-cockpit-compact #t0 .p31-row{ padding:1px 0; }
body.gup-cockpit-compact #t0 .p31-sep{ margin:3px 0; }
body.gup-cockpit-compact #t0 .p31-lh{ padding-bottom:1px; line-height:1.2; }
body.gup-cockpit-compact #t0 .p31-row{ line-height:1.25; }
body.gup-cockpit-compact #t0 .p31-low > div{ gap:0; }

/* ===== 実機 1440×731 へ収めるための圧縮 =====
   Founder 実測：innerWidth 1440 ／ innerHeight 731 ／ Zoom 100%（visualViewport.scale 1）。
   ここまでで下限 797px だったので、あと 66px を **指示の順**で詰める。
     ① 見出し行をヘッダへ逃がす（行ごと無くす）
     ② 下段 console
     ③ KPI レール
     ④ ヘッダと余白
   ★Hero の第一階層（着地見込・目標・あと○○・3 つの Gap の値）は最後まで触らない。 */

/* ① 見出し行はヘッダへ逃がす（ui/home.js が中身を移す） */
body.gup-cockpit-compact #t0 .hp-top{ display:none; }
.hm-head-slot{ display:flex; align-items:center; gap:var(--gup-sp-3);
  margin-left:auto; min-width:0; max-width:100%; flex:1 1 200px; flex-wrap:wrap; }
#t0 .hm-head-context{display:flex;align-items:baseline;flex-wrap:wrap;flex:1 1 180px;min-width:0;gap:var(--gup-sp-1) var(--gup-sp-3);}
#t0 .hm-head-context > span{max-width:100%;overflow:hidden;text-overflow:ellipsis;}
.hm-head-slot [data-hp-move]{flex:none;max-width:100%;}
.hm-head-slot[hidden]{ display:none; }
.hm-head-slot b{ font-size:var(--gup-fs-base); font-weight:var(--gup-font-weight-bold);
  color:var(--header-text, var(--gup-text-inverse)); white-space:nowrap; }
.hm-head-slot span{ font-size:var(--gup-fs-xs); color:var(--header-text, var(--gup-text-inverse));
  opacity:.85; white-space:nowrap; }

/* ② 下段 console */
body.gup-cockpit-compact #t0 .p31-low{ padding:var(--gup-sp-1) var(--gup-sp-3); }
body.gup-cockpit-compact #t0 .p31-lh{ padding-bottom:0; line-height:1.15; }
body.gup-cockpit-compact #t0 .p31-row{ line-height:1.15; }

/* ③ KPI レール */
body.gup-cockpit-compact #t0 .p31-rail{ padding:6px 0 5px; }
/* ★3px まで詰めたら中身が 5px はみ出した（実測）。制約 rail を詰めて余裕ができたので戻す。 */

body.gup-cockpit-compact #t0 .p31-k3{ line-height:1.15; }
body.gup-cockpit-compact #t0 .p31-k4{ height:32px; }

/* ④ ヘッダと外側の余白 */
body.gup-cockpit-compact > header{ padding-top:2px; }
body.gup-cockpit-compact .topline{ padding-bottom:2px; }
body.gup-cockpit-compact #t0{ padding:0 var(--gup-sp-4); }
body.gup-cockpit-compact #t0 .p31{ gap:2px; }

/* ⑤ 結論の列の補助文だけ行送りを詰める（Founder §7 Priority 3）。
   ★実測で Hero の高さを決めているのは **結論の列 289px**（図 205 ／ リング 144）。
     だから図とリングを縮めても縦は 1px も減らない。縮めたのは補助文の行送りだけ。
   ★第一階層（着地見込 33px ／ 3 つの Gap の値 17px ／ あと○○）は触っていない。 */
body.gup-cockpit-compact #t0 .p31-hero .sub{ line-height:1.2; }
body.gup-cockpit-compact #t0 .p31-gaps{ gap:var(--gup-sp-1); }
body.gup-cockpit-compact #t0 .p31-gap .n i{ line-height:1.2; }
body.gup-cockpit-compact #t0 .p31-gap .n s{ line-height:1.15; }
body.gup-cockpit-compact #t0 .p31-lever i,
body.gup-cockpit-compact #t0 .p31-lever s{ line-height:1.2; }
body.gup-cockpit-compact #t0 .p31-hero .adv{ line-height:1.2; }


/* ===== Gate C：語りの動き（Motion A / Motion C）=====
   正本 ui/home-motion.js（順番の表はあちらの 1 か所だけ）

   ★動かすのは opacity と transform だけ。**layout は 1px も動かない**（reflow 0）。
   ★印が付いていないとき（＝2 回目以降）は規則そのものが当たらないので、
     transition も起きない＝再生し直しにならない。
   ★段の間隔と長さ：micro は 150〜250ms、全体は 1000ms 以内（Founder §26）。
     ★段数は **データで伸びる**。固定 10 段 ＋「実行のずれ」の行数（P/V/Q/F ＋
       構成差 ／ 未割当 ／ 未説明 の 4〜7 行）なので **最大 17 段**。
       55ms のままだと 17 段で 16×55 ＋ 200 ＝ 1080ms となり Founder §26 を破る
       （実測の最大は 15 段 970ms で、余白が 30ms しか無かった）。
       43ms なら **最悪 17 段でも 16×43 ＋ 200 ＝ 888ms**（上限 900ms 以内）。
       いまの 15 段では 14×43 ＋ 200 ＝ 802ms。 */
#t0.mo-arm [data-mo]{ opacity:0; transform:translateY(3px); }
#t0.mo-arm.mo-run [data-mo]{
  opacity:1; transform:none;
  transition:opacity 200ms ease-out, transform 200ms ease-out;
  transition-delay:calc(var(--mo-i, 0) * 43ms);
}
/* 「動きを減らす」設定のときは動かさない。
   ★受けるのは **JS の 1 か所だけ**（gupHomeMotionAllowed）。
     reduce のときは印（mo-arm）を付けないので、上の 2 規則がそもそも当たらない。
     ここへ画面条件の分岐を足しても **到達しない dead な二重実装**になるので置かない。
     ★repo 全体の「動きを減らす」対応（実測 transition 21・scale 5・smooth scroll 2）は
       DESIGN.md の A5／P1 として別に開いている。HOME だけ先に部分対応して
       breakpoint の数え方を濁らせない。 */

/* 残高が「どの時点のものか」を数字のすぐ下で言う（GUP-TIME-FORECAST-STOCK1 Gate F）。
   ★「いま」とは言わない。時点を証明できるのは実績の月末だけ。 */
#t0 .p31-asof{
  font-size: var(--gup-fs-note);
  color: var(--gup-text-secondary);
  text-align: right;
  margin-top: 2px;
}

/* 現金カードの注記はカードの下端へ寄せる（inline style を増やさない）。 */
#t0 .p31-finnote{ margin-top: auto; }

/* 輪だけでは言えないこと（100% 超・赤字・目標 0 以下）を短く言う。
   ★色は付けない。良し悪しの判定ではなく「輪では表せない」という但し書きだから。
   GUP-TIME-FORECAST-STOCK1 Gate F2 */
#t0 .p31-pgs{
  font-size: var(--gup-fs-note);
  color: var(--gup-text-secondary);
  text-align: center;
  margin-top: 2px;
}

/* UX-SYSTEM1A（UX-12）：差異の値そのものは compact 本文の段（13px）。 */
#t0 .p31-ef .v{font-size:var(--gup-fs-xs);}
#t0 .p31-pgn b{font-size:var(--gup-fs-xs);}
#t0 .p31-k3 b{font-size:var(--gup-fs-xs);}
#t0 .p31-mini .t b{font-size:var(--gup-fs-xs);}

/* ===== GUP-UX-OVERNIGHT1 Phase 4（HOME-COCKPIT2）=====
   情報階層（見込 G → 目標との差 → 計画との差 → 計画のつくり方）・押せる領域の共通文法・
   宿題と具体策の分離・現金の未確認状態・狭い画面の並び。
   ★文字は 12px 以上（DESIGN.md v2 §6.1）。色は token だけ。メディア条件は増やさない。 */
/* Gap の 3 段：主役（目標との差）＝ 20px ／ 2 番手（計画との差）＝ 16px ／ 3 番手（つくり方）＝ 注記の段 */
#t0 .p31-gap--primary .v{font-size:var(--gup-fs-xl);}
#t0 .p31-gap--primary .n i{font-size:var(--gup-fs-xs);color:var(--t-text-primary);}
#t0 .p31-gap--second .v{font-size:var(--gup-fs-base);}
/* Full で Hero の列が図（254px）より高くならないように、Gap の行間を 6 → 5px（1440×900 で 2px あふれていた実測） */
#t0 .p31-gaps{gap:5px;}
#t0 .p31-gap--third{border-left-color:var(--t-border-subtle);}
#t0 .p31-gap--third .n i{display:flex;align-items:baseline;gap:var(--gup-sp-2);line-height:var(--gup-lh-compact);}
#t0 .p31-gap--third .n s{line-height:var(--gup-lh-compact);}
#t0 .p31-hero .hp-cmd{line-height:var(--gup-lh-compact);}
/* 押せる領域：面の hover と cursor で「押せる」と分かる。keyboard は中の command（button）が受ける。 */
#t0 .hp-go{cursor:pointer;border-radius:var(--gup-radius-sm);}
/* GUP-UX-WORLDCLASS1 Phase 5（UX-14）：前期末が取れない理由は「—」のセルに短い語（全文は title）。行を足さない。 */
#t0 .hp-go:hover{background:var(--t-surface-raised);}
#t0 .hp-go:focus-within{outline:2px solid var(--gup-focus-ring);outline-offset:2px;}
#t0 .hp-cmd{white-space:nowrap;flex:none;}
#t0 .hp-cmd:focus-visible{outline:2px solid var(--gup-focus-ring);outline-offset:1px;}
#t0 .p31-mini .t .hp-cmd{margin-left:0;}
#t0 .p31-lh span .hp-cmd{margin-left:var(--gup-sp-2);}
#t0 .p31-lever s .hp-cmd{font-size:var(--gup-fs-note);}
/* 到達リングの下：実績到達 ／ 見込到達 を同じ段（13px）で言う。注記へ降格しない。 */
#t0 .p31-pga{display:flex;justify-content:center;flex-wrap:wrap;gap:0 var(--gup-sp-3);
  font-size:var(--gup-fs-xs);color:var(--t-text-secondary);}
#t0 .p31-pga b{font-weight:700;color:var(--t-text-primary);}
/* 下段：宿題（今日確認）と 実行中の具体策 は別 entity のまま 1 つの表（状態・担当・期限 の列が同じ）。
   件数と入口は見出しの行に 1 度だけ。明細は器の中でスクロール。
   min-height 138 ＝ 表頭 22 ＋ 5 行（23px）。1440×765 の下段（列 177）では 6 行まで器の中に見える */
#t0 .p31-act .p31-tb{flex:1 1 0;min-height:138px;}
#t0 .p31-act .p31-tb th:nth-child(2),#t0 .p31-act .p31-tb td:nth-child(2){text-align:left;}
#t0 .p31-lh span b{font-weight:700;color:var(--t-text-primary);}
#t0 .p31-tb tr.p31-tn td{color:var(--t-text-muted);text-align:left;}
#t0 .p31-tb tr.is-overdue td{color:var(--t-text-primary);}
/* 現金が未確認のとき：大きな空表ではなく 理由 ＋ 入口 だけ。残高が入れば正式な表へ戻る。 */
/* 狭い画面：補助 KPI は畳む（summary は compact control の高さ）。開くと従来の 2 列。 */
body.gup-cockpit-narrow #t0 .p31-railx{border:1px solid var(--t-border-subtle);border-radius:var(--gup-radius-md);
  background:var(--t-surface-panel);}
body.gup-cockpit-narrow #t0 .p31-railx-s{display:flex;align-items:baseline;gap:var(--gup-sp-2);flex-wrap:wrap;
  min-height:var(--gup-control-compact);padding:var(--gup-sp-2) var(--gup-sp-3);cursor:pointer;
  font-size:var(--gup-fs-sm);color:var(--t-text-primary);}
body.gup-cockpit-narrow #t0 .p31-railx-s b{font-weight:700;}
body.gup-cockpit-narrow #t0 .p31-railx-s span{font-size:var(--gup-fs-note);color:var(--t-text-secondary);}
body.gup-cockpit-narrow #t0 .p31-railx > .p31-rail{border:0;border-top:1px solid var(--t-border-subtle);
  border-radius:0;box-shadow:none;}
/* 閉じているあいだは中身を出さない（author の display:grid が UA の隠し規則に勝ってしまうため） */
body.gup-cockpit-narrow #t0 .p31-railx:not([open]) > .p31-rail{display:none;}
/* 狭い画面：現在地は「枠つきのチップ」を並べると 1 行に 1〜2 個しか入らず、4 段になっていた。
   ★GUP-SIMPLIFY1（SP-40）：文字は 1 つも減らさず、**枠と余白だけ**外して区切りで並べる。
     compact sticky context（MOBILE_PLAN）そのもので、desktop は今までどおり。 */
body.gup-cockpit-narrow #t0 .hp-top{gap:var(--gup-sp-1) 0;}
body.gup-cockpit-narrow #t0 .hp-chip{border:0;background:none;padding:0 0 0 0;}
body.gup-cockpit-narrow #t0 .hp-chip + .hp-chip::before{content:"｜";margin:0 6px;
  color:var(--t-text-muted);letter-spacing:0;}
/* 狭い画面：中央の 2 つの図（月次・到達リング）も畳む（GUP-SIMPLIFY1 SP-41）。
   ★補助 KPI の畳みと同じ形。開くと従来と同じ図が同じ値で出る。 */
body.gup-cockpit-narrow #t0 .p31-midx{border:1px solid var(--t-border-subtle);border-radius:var(--gup-radius-md);
  background:var(--t-surface-panel);min-width:0;}
body.gup-cockpit-narrow #t0 .p31-midx-s{display:flex;align-items:baseline;gap:var(--gup-sp-2);flex-wrap:wrap;
  min-height:var(--gup-control-compact);padding:var(--gup-sp-2) var(--gup-sp-3);cursor:pointer;
  font-size:var(--gup-fs-sm);color:var(--t-text-primary);}
body.gup-cockpit-narrow #t0 .p31-midx-s b{font-weight:700;}
body.gup-cockpit-narrow #t0 .p31-midx-s span{font-size:var(--gup-fs-note);color:var(--t-text-secondary);}
body.gup-cockpit-narrow #t0 .p31-midx > .p31-tr,
body.gup-cockpit-narrow #t0 .p31-midx > .p31-pg{border-top:1px solid var(--t-border-subtle);}
/* 閉じているあいだは中身を出さない（author の display が UA の隠し規則に勝ってしまうため） */
body.gup-cockpit-narrow #t0 .p31-midx:not([open]) > .p31-tr,
body.gup-cockpit-narrow #t0 .p31-midx:not([open]) > .p31-pg{display:none;}
/* 狭い画面：見出しの行の件数と入口は折り返してよい（1 行に収まらない） */
body.gup-cockpit-narrow #t0 .p31-lh{flex-wrap:wrap;}
body.gup-cockpit-narrow #t0 .p31-lh span{white-space:normal;}
/* 狭い画面の分析帯は 1 列。広い画面用の「3 列ぶん」を外さないと、暗黙の列が増えて 1 つ目と 2 つ目が同じ行に押し込まれる（390px の実測） */
body.gup-cockpit-narrow #t0 .p31-mini > div:nth-child(3){grid-column:auto;}

/* ===== Phase S1b: ⑥ 予実管理 共通 UI component =====
   正本 docs/GUP_UI_BASIC.md ／ docs/PHASE_S1B_UI_FOUNDATION.md

   ★適用範囲は #t7（⑤ 予実管理）だけ。①〜⑥ の外観は変えない。
   ★class 名は既存のまま（JS の hook は data-* と id なので、見た目だけを差し替える）。
   ★色・font-size・余白のリテラルは書かない。必ず --gup-* token を経由する。
   ★!important と inline style は新規に増やさない。 */

/* --------------------------------------------------------------------------
   1. button hierarchy
   既存の .btn / .solid / .ghost / .link をそのまま正式 component として定義する。
   これまで #t7 内の .btn には CSS が一切当たっておらず、ブラウザ標準（約 25px）
   のままだった（S1a P0-1）。
   -------------------------------------------------------------------------- */
#t7 .btn{
  display:inline-flex; align-items:center; justify-content:center; gap:var(--gup-sp-2);
  min-height:var(--gup-control-standard);
  padding:0 var(--gup-sp-4);
  font-family:inherit;
  font-size:var(--gup-fs-base);
  font-weight:var(--gup-fw-medium);
  line-height:var(--gup-lh-compact);
  border-radius:var(--gup-radius-sm);
  border:1px solid var(--gup-color-border-strong);
  background:var(--gup-color-surface);
  color:var(--gup-color-text-primary);
  cursor:pointer;
  transition:background-color .12s ease, border-color .12s ease, color .12s ease;
}
#t7 .btn:hover:not(:disabled){ background:var(--gup-color-surface-subtle); }
#t7 .btn:active:not(:disabled){ background:var(--gup-color-border); }

/* primary — 各画面の主目的。原則 1 画面 1 つ */
#t7 .btn.solid{
  background:var(--gup-color-accent);
  border-color:var(--gup-color-accent);
  color:var(--gup-color-text-on-accent);
  font-weight:var(--gup-fw-semibold);
  padding:0 var(--gup-sp-5);
}
#t7 .btn.solid:hover:not(:disabled){
  background:var(--gup-color-accent-hover);
  border-color:var(--gup-color-accent-hover);
}
#t7 .btn.solid:active:not(:disabled){ background:var(--gup-color-accent-hover); }

/* tertiary / text — 閉じる・キャンセル・詳細・画面内ナビゲーション */
#t7 .btn.ghost,
#t7 .btn.link{
  background:transparent;
  border-color:transparent;
  color:var(--gup-color-accent);
  padding:0 var(--gup-sp-2);
}
#t7 .btn.ghost:hover:not(:disabled),
#t7 .btn.link:hover:not(:disabled){ background:var(--gup-color-accent-subtle); }
#t7 .btn.link{ font-size:var(--gup-fs-sm); }
#t7 .btn.link.active{
  background:var(--gup-color-accent-subtle);
  color:var(--gup-color-accent-hover);
  font-weight:var(--gup-fw-semibold);
}

/* danger — 削除・破棄。primary accent としては使わない */
#t7 .btn.danger{
  background:var(--gup-color-surface);
  border-color:var(--gup-color-danger);
  color:var(--gup-color-danger);
  font-weight:var(--gup-fw-semibold);
}
#t7 .btn.danger:hover:not(:disabled){ background:var(--gup-color-danger-subtle); }
/* text 系の danger（表内の削除など）は枠を持たず色だけで区別する */
#t7 .btn.link.danger,
#t7 .btn.ghost.danger{ background:transparent; border-color:transparent; color:var(--gup-color-danger); }
#t7 .btn.link.danger:hover:not(:disabled),
#t7 .btn.ghost.danger:hover:not(:disabled){ background:var(--gup-color-danger-subtle); }

/* compact — table 内 action・高密度 filter。25px 以下にはしない */
#t7 .btn.compact{
  min-height:var(--gup-control-compact);
  padding:0 var(--gup-sp-3);
  font-size:var(--gup-fs-sm);
}

/* disabled — 「押せない」ことが見て分かる。opacity で薄くしすぎない */
#t7 .btn:disabled{
  background:var(--gup-color-surface-subtle);
  border-color:var(--gup-color-border);
  color:var(--gup-color-text-disabled);
  cursor:not-allowed;
}
#t7 .btn.solid:disabled{
  background:var(--gup-color-surface-subtle);
  border-color:var(--gup-color-border);
  color:var(--gup-color-text-disabled);
}

/* toggle 位置指定だけを担う既存 class（見た目は .btn 側） */
#t7 .mucur-toggle{ margin-left:auto; font-size:var(--gup-fs-sm); }

/* --------------------------------------------------------------------------
   2. input / select / textarea
   -------------------------------------------------------------------------- */
#t7 .mucur-sel,
#t7 input[type="text"],
#t7 input[type="number"],
#t7 textarea{
  box-sizing:border-box;
  min-height:var(--gup-control-standard);
  padding:0 var(--gup-sp-3);
  font-family:inherit;
  font-size:var(--gup-fs-base);
  font-weight:var(--gup-fw-normal);
  line-height:var(--gup-lh-normal);
  color:var(--gup-color-text-primary);
  /* GUP-AIR-SURFACE1：入力面の役割で塗る（情報面に付いてこないようにする） */
  background:var(--input-bg);
  border:1px solid var(--gup-color-border-strong);
  border-radius:var(--gup-radius-sm);
}
#t7 textarea{
  min-height:calc(var(--gup-control-standard) * 2);
  padding:var(--gup-sp-2) var(--gup-sp-3);
  resize:vertical;
}
#t7 .mucur-sel{ max-width:260px; }

/* compact — 月次 12 か月 table 内の数値入力（.mup-in / .mb-in / .mp-in / .roll-in）
   ※ `#t7 input[type="text"]` は attribute selector を含むため詳細度 (1,1,1)。
      class だけの `#t7 .mup-in` は (1,1,0) で負けるので、element を明示して同詳細度にし、
      後方に置くことで compact 指定を確実に効かせる。 */
#t7 input.mup-in,
#t7 select.mup-in,
#t7 .mup-in{
  box-sizing:border-box;
  width:96px;
  min-height:var(--gup-control-compact);
  padding:0 var(--gup-sp-2);
  font-family:inherit;
  font-size:var(--gup-fs-sm);
  text-align:right;
  font-variant-numeric:tabular-nums;
  color:var(--gup-color-text-primary);
  /* GUP-AIR-SURFACE1：入力面の役割で塗る */
  background:var(--input-bg);
  border:1px solid var(--gup-color-border-strong);
  border-radius:var(--gup-radius-sm);
}
/* read-only / disabled / locked — 通常セルと必ず見分けがつくこと（S1a P0-3） */
#t7 input:disabled,
#t7 select:disabled,
#t7 textarea:disabled,
#t7 .mup-in:disabled{
  background:var(--gup-color-surface-subtle);
  border-color:var(--gup-color-border);
  color:var(--gup-color-text-secondary);   /* 値は読める明るさを保つ */
  cursor:not-allowed;
}
#t7 input[readonly],
#t7 textarea[readonly]{
  background:var(--gup-color-surface-subtle);
  border-color:var(--gup-color-border);
}
#t7 .is-invalid,
#t7 input.is-invalid,
#t7 select.is-invalid{ border-color:var(--gup-color-negative); }

/* --------------------------------------------------------------------------
   3. focus — S1a P0-5。⑦ のすべての control に可視 focus を出す
   -------------------------------------------------------------------------- */
#t7 button:focus-visible,
#t7 a:focus-visible,
#t7 input:focus-visible,
#t7 select:focus-visible,
#t7 textarea:focus-visible,
#t7 summary:focus-visible,
#t7 [tabindex]:focus-visible,
/* 横スクロールする表の枠は Chrome が自動で focusable にする。ここも Gup の focus 表示へ揃える。 */
#t7 div:focus-visible{
  outline:2px solid var(--gup-color-focus);
  outline-offset:2px;
  border-radius:var(--gup-radius-sm);
}
/* キーボード操作でなくても、入力中の欄は分かるようにする（枠色だけ変える） */
#t7 input:focus,
#t7 select:focus,
#t7 textarea:focus{ border-color:var(--gup-color-accent); }

/* --------------------------------------------------------------------------
   4. KPI card / section card
   -------------------------------------------------------------------------- */
#t7 .mucur-wrap{
  border:1px solid var(--gup-color-border);
  border-radius:var(--gup-radius-md);
  padding:var(--gup-sp-4);
  background:var(--gup-color-surface);
  margin-bottom:var(--gup-sp-4);
}
#t7 .mucur-gcard{
  background:var(--gup-color-surface);
  border:1px solid var(--gup-color-border);
  border-radius:var(--gup-radius-md);
  padding:var(--gup-sp-5);
  margin-bottom:var(--gup-sp-4);
  box-shadow:var(--gup-shadow-none);
}
#t7 .mucur-gtitle{
  font-size:var(--gup-fs-sm);
  font-weight:var(--gup-fw-medium);
  color:var(--gup-color-text-secondary);
}
#t7 .mucur-gval{
  font-size:var(--gup-fs-hero);
  font-weight:var(--gup-fw-semibold);
  line-height:var(--gup-lh-compact);
  color:var(--gup-color-text-primary);
  font-variant-numeric:tabular-nums;
  margin-top:var(--gup-sp-1);
}
#t7 .mucur-gsub{
  display:flex; flex-wrap:wrap; gap:var(--gup-sp-4);
  font-size:var(--gup-fs-sm);
  color:var(--gup-color-text-secondary);
  margin-top:var(--gup-sp-2);
}
#t7 .mucur-gsub b{
  color:var(--gup-color-text-primary);
  font-weight:var(--gup-fw-semibold);
  font-variant-numeric:tabular-nums;
}
#t7 .mucur-bar{
  display:flex; align-items:center; flex-wrap:wrap;
  gap:var(--gup-sp-3);
  margin-bottom:var(--gup-sp-3);
}
#t7 .mucur-lbl{
  font-size:var(--gup-fs-sm);
  font-weight:var(--gup-fw-medium);
  color:var(--gup-color-text-secondary);
}
#t7 .mucur-note{ 
  font-size:var(--gup-fs-sm);
  color:var(--gup-color-text-secondary);
}
#t7 .mucur-hint{ 
  font-size:var(--gup-fs-sm);
  line-height:var(--gup-lh-body);max-width:var(--gup-measure);   /* UI-TYPE5：本文の行送りと 1 行の長さ */
  color:var(--gup-color-text-secondary);
  margin-top:var(--gup-sp-2);
}
#t7 .mucur-subhead{
  font-size:var(--gup-fs-lg);
  font-weight:var(--gup-fw-semibold);
  color:var(--gup-color-text-primary);
  margin:var(--gup-sp-5) 0 var(--gup-sp-2);
}
#t7 .mup-actions{
  display:flex; align-items:center; flex-wrap:wrap;
  gap:var(--gup-sp-3);
  margin-top:var(--gup-sp-4);
}

/* --------------------------------------------------------------------------
   5. message（info / warning / error / success）
   色だけで区別しない。既定は info 相当の落ち着いた見た目。
   -------------------------------------------------------------------------- */
#t7 .mup-cmp{
  border:1px solid var(--gup-color-border);
  border-left:3px solid var(--gup-color-info);
  border-radius:var(--gup-radius-sm);
  background:var(--gup-color-info-subtle);
  padding:var(--gup-sp-3);
  margin-top:var(--gup-sp-3);
}
#t7 .mup-cmp>b{
  display:block;
  font-size:var(--gup-fs-base);
  font-weight:var(--gup-fw-semibold);
  color:var(--gup-color-text-primary);
  margin-bottom:var(--gup-sp-1);
}
#t7 .mup-cmp .mucur-hint{ margin-top:0; }
#t7 .gup-msg--warning{
  border-left-color:var(--gup-color-warning);
  background:var(--gup-color-warning-subtle);
}
#t7 .gup-msg--error{
  border-left-color:var(--gup-color-negative);
  background:var(--gup-color-negative-subtle);
}
#t7 .gup-msg--success{
  border-left-color:var(--gup-color-positive);
  background:var(--gup-color-positive-subtle);
}

/* status badge */
#t7 .gup-badge{
  display:inline-flex; align-items:center;
  min-height:var(--gup-sp-5);
  padding:0 var(--gup-sp-3);
  border-radius:var(--gup-radius-pill);
  font-size:var(--gup-fs-note);
  font-weight:var(--gup-fw-medium);
  background:var(--gup-color-surface-subtle);
  color:var(--gup-color-text-secondary);
}
#t7 .gup-badge--positive{ background:var(--gup-color-positive-subtle); color:var(--gup-color-positive); }
#t7 .gup-badge--negative{ background:var(--gup-color-negative-subtle); color:var(--gup-color-negative); }
#t7 .gup-badge--warning{ background:var(--gup-color-warning-subtle); color:var(--gup-color-warning); }

/* --------------------------------------------------------------------------
   6. table
   -------------------------------------------------------------------------- */
#t7 .mucur-table{
  width:100%;
  border-collapse:collapse;
  font-size:var(--gup-fs-sm);
  color:var(--gup-color-text-primary);
}
#t7 .mucur-table th,
#t7 .mucur-table td{
  border-bottom:1px solid var(--gup-color-border);
  padding:var(--gup-sp-2) var(--gup-sp-3);
  white-space:nowrap;
}
#t7 .mucur-table th{
  font-size:var(--gup-fs-note);
  font-weight:var(--gup-font-weight-bold);   /* UI-TYPE4：表の列見出しは Bold */
  color:var(--gup-color-text-secondary);
  text-align:right;
  background:var(--gup-color-surface-subtle);
  border-bottom:1px solid var(--gup-color-border-strong);
}
#t7 .mucur-table th.lft,
#t7 .mucur-table td.lft{ text-align:left; }
#t7 .mucur-table td.num,
#t7 .mucur-table th.num{
  text-align:right;
  font-variant-numeric:tabular-nums;
}
#t7 .mucur-table tbody tr:hover td{ background:var(--gup-color-surface-subtle); }
#t7 .mucur-table tr.mucur-row{ cursor:pointer; }

/* 実績確定済み・予算確定済みの行（S1a P0-3）。#fpaActualWrap 限定だった規則を ⑦ 全体へ広げる */
#t7 tr.mu-commonrow > td{
  background:var(--gup-color-surface-subtle);
  color:var(--gup-color-text-secondary);
}
#t7 tr.mu-commonrow:hover > td{ background:var(--gup-color-surface-subtle); }
#t7 tr.mu-totalrow > td{
  border-top:2px solid var(--gup-color-border-strong);
  font-weight:var(--gup-fw-semibold);
  color:var(--gup-color-text-primary);
}

/* 数値表示の共通クラス（意味色は業績にだけ使う。素の金額は neutral） */
#t7 .gup-num{ font-variant-numeric:tabular-nums; text-align:right; }
#t7 .gup-num--positive{ color:var(--gup-color-positive); }
#t7 .gup-num--negative{ color:var(--gup-color-negative); }
#t7 .gup-num--muted{ color:var(--gup-color-text-secondary); }

/* --------------------------------------------------------------------------
   7. details（詳細の折りたたみ）
   -------------------------------------------------------------------------- */
#t7 .mucur-det{ margin-top:var(--gup-sp-3); }
#t7 .mucur-det>summary{
  font-size:var(--gup-fs-sm);
  font-weight:var(--gup-fw-medium);
  color:var(--gup-color-accent);
  cursor:pointer;
  padding:var(--gup-sp-2) 0;
  min-height:var(--gup-control-compact);
  display:flex; align-items:center;
}
#t7 .mucur-det>summary:hover{ color:var(--gup-color-accent-hover); }

/* 従来の全社差異分析（S1a P0-2 の最小対応）。既定は閉じ、正式分析と同格に見せない */
#t7 .gup-legacy{
  margin-top:var(--gup-sp-5);
  border-top:1px solid var(--gup-color-border);
  padding-top:var(--gup-sp-3);
}
#t7 .gup-legacy>summary{
  font-size:var(--gup-fs-sm);
  font-weight:var(--gup-fw-medium);
  color:var(--gup-color-text-secondary);
  cursor:pointer;
  min-height:var(--gup-control-compact);
  display:flex; align-items:center;
}
#t7 .gup-legacy>summary:hover{ color:var(--gup-color-text-primary); }
/* management null のときは折りたたみ自体を見せず、従来どおり通常表示にする */
#t7 details#fpaVarianceLegacy:not(.gup-legacy){ margin-top:0; border-top:none; padding-top:0; }
#t7 details#fpaVarianceLegacy:not(.gup-legacy)>summary{ display:none; }
/* PRODUCT-CLEAN1A: 管理単位が正本の記録では正式導線から外す（DOM は残す）。
   [hidden] だけでは display を持つ規則に負けうるので明示的に閉じる。 */
#t7 details#fpaVarianceLegacy[hidden]{ display:none; }

/* --------------------------------------------------------------------------
   8. tabs — ⑦ 内の第一階層／第二階層。primary action より強くしない（S1a P0-1）
   -------------------------------------------------------------------------- */
#t7 .mbnav button{
  min-height:var(--gup-control-standard);   /* primary action と同じ高さまで。それ以上に強くしない */
  padding:0 var(--gup-sp-4);
  font-size:var(--gup-fs-base);
  font-weight:var(--gup-fw-medium);
  line-height:var(--gup-lh-compact);
  border-radius:var(--gup-radius-sm) var(--gup-radius-sm) 0 0;
  border:1px solid transparent;
  border-bottom:2px solid transparent;
  background:transparent;
  color:var(--gup-color-text-secondary);
  cursor:pointer;
}
#t7 .mbnav button:hover{ color:var(--gup-color-text-primary); background:var(--gup-color-surface-subtle); }
#t7 .mbnav button.active{
  color:var(--gup-color-text-primary);
  font-weight:var(--gup-fw-semibold);
  background:transparent;
  border-bottom-color:var(--gup-color-accent);
}

/* UI-NAV1: 「月次予算」の中の表示切替（MQ／F／検証）。
   第 3 階層のタブを作らない代わりに、押した状態が分かるボタン群にする。
   タブ（下線）とは別の見た目にして、階層が違うことを形でも示す。 */
#t7 .mbsubswitch{
  display:flex; flex-wrap:wrap; align-items:center; gap:var(--gup-sp-2);
  margin:var(--gup-sp-4) 0 0;
}
#t7 .mbsw-lbl{
  font-size:var(--gup-fs-note); font-weight:var(--gup-fw-medium);
  color:var(--gup-color-text-secondary);
}
#t7 .mbsw-btn{
  display:inline-flex; align-items:center; gap:var(--gup-sp-2);
  min-height:var(--gup-control-compact);
  padding:0 var(--gup-sp-3);
  border:1px solid var(--gup-color-border);
  border-radius:var(--gup-radius-pill);
  background:var(--gup-color-surface);
  color:var(--gup-color-text-secondary);
  font-size:var(--gup-fs-sm); font-weight:var(--gup-fw-medium);
  line-height:var(--gup-lh-compact);
  cursor:pointer;
}
#t7 .mbsw-btn:hover{ background:var(--gup-color-surface-subtle); color:var(--gup-color-text-primary); }
#t7 .mbsw-btn.active{
  border-color:var(--gup-color-accent);
  background:var(--gup-color-accent-subtle);
  color:var(--gup-color-text-primary);
  font-weight:var(--gup-fw-semibold);
}
#t7 .mbsw-btn .mbbadge{ margin:0; font-size:var(--gup-fs-note); font-weight:var(--gup-fw-medium); }

/* --------------------------------------------------------------------------
   9. Phase S1c — 情報構造（現在地 → 結論 → 原因 → 操作 → 詳細）
   DOM の並び順そのものが情報順。ここでは見た目の階層だけを与え、
   CSS で順番を入れ替えない（keyboard / screen reader 順を崩さないため）。
   -------------------------------------------------------------------------- */
#t7 .fpa-screen{ display:flex; flex-direction:column; gap:var(--gup-sp-3); }   /* UI-FOLD2：区間の隙間 24 → 12 */

/* screen heading — 既存の step-hint の見た目を保ったまま h2 にする（見出し階層 h2 → h3） */
#t7 .fpa-screen-heading{
  margin:0; min-width:0; flex:1 1 auto;
  font-size:inherit; font-weight:var(--gup-fw-normal);
  line-height:inherit; color:inherit;
}
#t7 .fpa-screen-heading b{ font-weight:var(--gup-fw-semibold); }

/* ① コンテキスト — 結論より弱く、しかし何を選んでいるかは読める */
#t7 .fpa-context{
  display:flex; flex-wrap:wrap; align-items:center;
  gap:var(--gup-sp-2) var(--gup-sp-4);
  padding:var(--gup-sp-2) 0;   /* UI-FOLD2：帯は薄く */
  border-bottom:1px solid var(--gup-color-border);
}
#t7 .fpa-context__item{ display:flex; align-items:center; gap:var(--gup-sp-2); }
/* UI-FOLD2：単位はコンテキスト行の右端に 1 か所（① の 単位：千円 と同じ規則） */
#t7 .fpa-context__unit{ margin-left:auto; font-size:var(--gup-fs-sm); color:var(--gup-color-text-secondary); white-space:nowrap; }
#t7 .fpa-context__label{
  font-size:var(--gup-fs-sm); font-weight:var(--gup-fw-medium);
  color:var(--gup-color-text-secondary); white-space:nowrap;
}
#t7 .fpa-context__value{ font-size:var(--gup-fs-sm); color:var(--gup-color-text-primary); }
#t7 .fpa-context__note{ white-space:pre-line;   /* UI-SENT1 */
  flex:1 1 100%; font-size:var(--gup-fs-xs); color:var(--gup-color-text-secondary);
}

/* ② 結論 — 主 KPI をいちばん大きく、補助 KPI は同じ行の中で小さく */
#t7 .fpa-summary__heading{
  margin:0 0 var(--gup-sp-2);
  font-size:var(--gup-fs-lg); font-weight:var(--gup-fw-semibold);
  line-height:var(--gup-lh-heading); color:var(--gup-color-text-primary);
}
#t7 .fpa-summary__grid{
  display:grid; gap:var(--gup-sp-3);
  grid-template-columns:repeat(auto-fit, minmax(160px, 1fr));
  align-items:stretch;
}
#t7 .fpa-summary__sub{ white-space:pre-line;   /* UI-SENT1 */
  margin:var(--gup-sp-2) 0 0;
  font-size:var(--gup-fs-sm); color:var(--gup-color-text-secondary);
}
#t7 .fpa-kpi{
  display:flex; flex-direction:column; gap:var(--gup-sp-1);
  padding:var(--gup-sp-2) var(--gup-sp-3);   /* UI-FOLD2：カードの余白を一段詰める */
  /* UI-SYSTEM1-1B3: 外側の card が既に枠を持つ。内側は枠ではなく背景差でまとまりを示す。 */
  border-radius:var(--gup-radius-md);
  background:var(--gup-color-surface-subtle);
}
#t7 .fpa-kpi__label{
  font-size:var(--gup-fs-sm); font-weight:var(--gup-fw-medium);
  color:var(--gup-color-text-secondary); line-height:var(--gup-lh-compact);
}
#t7 .fpa-kpi__value{
  font-size:var(--gup-fs-xl); font-weight:var(--gup-fw-semibold);
  line-height:var(--gup-lh-compact); color:var(--gup-color-text-primary);
  font-variant-numeric:tabular-nums;
}
#t7 .fpa-kpi__note{ font-size:var(--gup-fs-xs); color:var(--gup-color-text-secondary); }
#t7 .fpa-kpi--primary{
  grid-column:span 2;
  border-color:var(--gup-color-border-strong);
  background:var(--gup-color-surface);
}
#t7 .fpa-kpi--primary .fpa-kpi__value{ font-size:var(--gup-fs-hero); }
/* 値の色は「業績の良し悪し」にだけ使う（素の金額は neutral のまま） */
#t7 .fpa-kpi--positive .fpa-kpi__value{ color:var(--gup-color-positive); }
#t7 .fpa-kpi--negative .fpa-kpi__value{ color:var(--gup-color-negative); }

/* 状態表示 — error → warning → info の順。通常は静かに */
#t7 .fpa-status{
  padding:var(--gup-sp-2) var(--gup-sp-3);   /* UI-FOLD2 */
  border-left:3px solid var(--gup-color-border-strong);
  border-radius:var(--gup-radius-sm);
  background:var(--gup-color-surface-subtle);
  font-size:var(--gup-fs-sm); color:var(--gup-color-text-primary);
}
#t7 .fpa-status + .fpa-status{ margin-top:var(--gup-sp-2); }
#t7 .fpa-status b{ font-weight:var(--gup-fw-semibold); }
#t7 .fpa-status__detail{
  margin-top:var(--gup-sp-1);
  font-size:var(--gup-fs-note); color:var(--gup-color-text-secondary);
}
#t7 .fpa-status--info{ border-left-color:var(--gup-color-info); background:var(--gup-color-info-subtle); }
#t7 .fpa-status--warning{ border-left-color:var(--gup-color-warning); background:var(--gup-color-warning-subtle); }
#t7 .fpa-status--error{ border-left-color:var(--gup-color-negative); background:var(--gup-color-negative-subtle); }
#t7 .fpa-badges{ display:flex; flex-wrap:wrap; gap:var(--gup-sp-2); }
#t7 .fpa-badge{
  display:inline-flex; align-items:center; padding:0 var(--gup-sp-3);
  min-height:var(--gup-control-compact);
  border-radius:var(--gup-radius-pill);
  border:1px solid var(--gup-color-border);
  background:var(--gup-color-surface-subtle);
  font-size:var(--gup-fs-note); font-weight:var(--gup-fw-medium);
  color:var(--gup-color-text-secondary);
}
#t7 .fpa-badge--warning{ border-color:var(--gup-color-warning); color:var(--gup-color-warning); background:var(--gup-color-warning-subtle); }
#t7 .fpa-badge--negative{ border-color:var(--gup-color-negative); color:var(--gup-color-negative); background:var(--gup-color-negative-subtle); }
#t7 .fpa-badge--positive{ border-color:var(--gup-color-positive); color:var(--gup-color-positive); background:var(--gup-color-positive-subtle); }

/* ③ 原因などの通常セクション */
#t7 .fpa-section__heading{
  margin:0 0 var(--gup-sp-2);
  font-size:var(--gup-fs-lg); font-weight:var(--gup-fw-semibold);
  line-height:var(--gup-lh-heading); color:var(--gup-color-text-primary);
}
#t7 .fpa-section__sub{
  margin:0 0 var(--gup-sp-3);
  font-size:var(--gup-fs-sm); color:var(--gup-color-text-secondary);
}

/* ④ 操作 */
#t7 .fpa-actions{
  display:flex; flex-wrap:wrap; align-items:center; gap:var(--gup-sp-3);
}
#t7 .fpa-actions__hint{ white-space:pre-line;   /* UI-SENT1 */
  flex:1 1 220px; font-size:var(--gup-fs-sm); color:var(--gup-color-text-secondary);line-height:var(--gup-lh-body);max-width:var(--gup-measure);}

/* ⑤ 詳細 — 既定は閉じる */
#t7 .fpa-detail{
  border:1px solid var(--gup-color-border);
  border-radius:var(--gup-radius-md);
  background:var(--gup-color-surface);
}
#t7 .fpa-detail + .fpa-detail{ margin-top:var(--gup-sp-3); }
#t7 .fpa-detail>summary{
  padding:var(--gup-sp-3) var(--gup-sp-4);
  font-size:var(--gup-fs-sm); font-weight:var(--gup-fw-medium);   /* UI-TYPE4：開閉は 14px */
  color:var(--gup-color-text-primary); cursor:pointer;
  list-style-position:inside;
}
#t7 .fpa-detail>summary:hover{ background:var(--gup-color-surface-subtle); }
#t7 .fpa-detail__body{
  padding:0 var(--gup-sp-4) var(--gup-sp-4);
  display:flex; flex-direction:column; gap:var(--gup-sp-3);
}
#t7 .fpa-scroll{ overflow-x:auto; }

/* 実績／見込みの境界 — 色だけに頼らず「実績」「見込み」の文字を必ず出す */
#t7 .fpa-boundary__list{
  display:flex; flex-wrap:wrap; gap:var(--gup-sp-1);
  margin:0; padding:0; list-style:none;
}
#t7 .fpa-month{
  display:flex; flex-direction:column; gap:var(--gup-sp-1);
  padding:var(--gup-sp-2) var(--gup-sp-3);
  /* UI-SYSTEM1-1B3: 外側の card が既に枠を持つ。内側は枠ではなく背景差でまとまりを示す。 */
  border-radius:var(--gup-radius-sm);
  background:var(--gup-color-surface-subtle);
  font-size:var(--gup-fs-xs);
}
#t7 .fpa-month__label{ font-weight:var(--gup-fw-medium); color:var(--gup-color-text-primary); }
#t7 .fpa-month__tag{ color:var(--gup-color-text-secondary); }
#t7 .fpa-month--actual{ background:var(--gup-color-surface-subtle); }
#t7 .fpa-month--boundary{ border-left:3px solid var(--gup-color-accent); }
#t7 .fpa-month--missing{ border-style:dashed; }
#t7 .fpa-boundary__note{
  margin:var(--gup-sp-2) 0 0;
  font-size:var(--gup-fs-note); color:var(--gup-color-text-secondary);
}

/* --------------------------------------------------------------------------
   Phase S1d — 取込の段階表示（いまどこにいて、次に何をするか）
   色だけに頼らず「いまここ」「完了」の文字を併記する。
   -------------------------------------------------------------------------- */
#t7 .mi-steps{
  display:flex; flex-wrap:wrap; gap:var(--gup-sp-2);
  margin:0 0 var(--gup-sp-3); padding:0; list-style:none;
}
#t7 .mi-step{
  display:flex; align-items:center; gap:var(--gup-sp-2);
  padding:var(--gup-sp-2) var(--gup-sp-3);
  border:1px solid var(--gup-color-border);
  border-radius:var(--gup-radius-sm);
  background:var(--gup-color-surface);
  font-size:var(--gup-fs-sm); color:var(--gup-color-text-secondary);
}
#t7 .mi-step__no{
  display:inline-flex; align-items:center; justify-content:center;
  width:22px; height:22px; border-radius:var(--gup-radius-pill);
  border:1px solid var(--gup-color-border-strong);
  font-size:var(--gup-fs-note); font-weight:var(--gup-fw-medium);
}
#t7 .mi-step__tag{ font-size:var(--gup-fs-note); }
#t7 .mi-step--current{
  border-color:var(--gup-color-accent);
  background:var(--gup-color-accent-subtle);
  color:var(--gup-color-text-primary);
  font-weight:var(--gup-fw-medium);
}
#t7 .mi-step--current .mi-step__no{ border-color:var(--gup-color-accent); color:var(--gup-color-accent); }
#t7 .mi-step--done{ background:var(--gup-color-surface-subtle); }
/* 未解決の対応づけ行は、通常行と見分けがつくようにする（色だけに頼らず先頭に印を出す） */
#t7 tr.mi-unresolved > td{ background:var(--gup-color-warning-subtle); }
#t7 tr.mi-unresolved > td:first-child::before{
  content:'未解決 '; font-size:var(--gup-fs-note); font-weight:var(--gup-fw-medium);
  color:var(--gup-color-warning);
}

/* --------------------------------------------------------------------------
   Phase S1d — アクション editor の 4 群 と field ごとのエラー
   -------------------------------------------------------------------------- */
/* UX-MODE1（UX-42 の共通部分）：群のあいだの余白を 1 段詰め、保存まで縦に長くしない（項目は減らさない）。 */
/* GUP-UX-WORLDCLASS1 Phase 4（UX-42・UX-23）：4 群は共通 editor shell（.ba-editor ＋ .ba-ed-head ＋ .ba-ed-row）の 3 行へ。
   欄は「項目名の下に入力」。#t7 input.mup-in（月次セル用の狭い右寄せ欄）を行いっぱいの左寄せへ。 */
#t7 .act-editor{ display:flex; flex-direction:column; gap:var(--gup-sp-2); }
#t7 .act-editor .ba-ed-rows{ gap:var(--gup-sp-2); }
#t7 .act-f{ display:flex; flex-direction:column; gap:2px; min-width:0; }
#t7 .act-f .act-k{ font-size:var(--gup-fs-note); font-weight:var(--gup-fw-medium); color:var(--gup-color-text-secondary); line-height:var(--gup-lh-compact); }
#t7 .act-editor input.mup-in{ width:100%; max-width:none; min-width:0; text-align:left; }
#t7 .act-editor select.mucur-sel{ width:100%; max-width:none; min-width:0; }
#t7 .act-editor .act-origin{ margin:0; max-width:none; }
/* 直すべき欄はその場で分かるように（枠 ＋ 文字。色だけに頼らない） */
#t7 input.act-invalid{ border-color:var(--gup-color-negative); border-width:2px; }
#t7 .act-fielderr{
  font-size:var(--gup-fs-note); font-weight:var(--gup-fw-medium);
  color:var(--gup-color-negative);
}
#t7 .act-fielderr::before{ content:'！ '; }
/* 差異の効果：金額の隣に「好転／悪化」を文字でも出す */
#t7 .mv-judge{ margin-left:var(--gup-sp-2); }
#t7 b.mv-good{ color:var(--gup-color-positive); }
#t7 b.mv-bad{ color:var(--gup-color-negative); }

/* --------------------------------------------------------------------------
   10. narrow（< 720px）
   横スクロールは表の内側だけ。画面全体は横あふれさせない。
   -------------------------------------------------------------------------- */
@media (max-width:719px){
  #t7 .mucur-bar{ gap:var(--gup-sp-2); }
  #t7 .mucur-sel{ max-width:100%; width:100%; }
  #t7 .mucur-gval{ font-size:var(--gup-fs-kpi); }
  #t7 .mup-actions .btn{ flex:1 1 auto; }
  #t7 .fpa-context{ flex-direction:column; align-items:stretch; }
  #t7 .fpa-context__item{ flex-direction:column; align-items:stretch; gap:var(--gup-sp-1); }
  #t7 .fpa-summary__grid{ grid-template-columns:repeat(auto-fit, minmax(140px, 1fr)); }
  #t7 .fpa-kpi--primary{ grid-column:1 / -1; }
  #t7 .fpa-kpi--primary .fpa-kpi__value{ font-size:var(--gup-fs-kpi); }
  #t7 .fpa-actions .btn{ flex:1 1 auto; }
  #t7 .mbnav{ overflow-x:auto; }
  #t7 .mbnav button{ white-space:nowrap; }
}

/* ===== Phase UI-MONTHLY-PVQ-INDEX1：月別の動き（配分指数を数値で入力） ===== */
/*   3 段階（↓・－・↑）の cell は撤去した。指数欄は既存の月次数値欄（.mup-in）と同じ contract で、
     12 か月ぶん並べても詰まらないよう幅だけ抑える（寸法は token 経由・直値を書かない）。 */
#t7 .mi-in{ min-width: var(--gup-control-compact); }
#t7 .mi-lock{ color: var(--gup-text-muted); }

/* B-MEANING1（B-6）: 金額の単位は画面につき 1 行だけ出す（毎セルへ繰り返さない） */
#t7 .fpa-unit-note{ margin:0 0 var(--gup-sp-2); font-size:var(--gup-fs-sm); color:var(--gup-color-text-secondary); }


/* GUP-UX-WORLDCLASS1 Phase 4（UX-43・UX-44）：アクション一覧は table ではなく折り返す行（1 件 ＝ 1 行）。
   1440 では 内容｜対象｜担当｜期限｜状態｜操作 の 6 列、390 では同じ行が 内容 → 対象・担当 → 期限・状態・操作 の 3 段に折れる
   （basis の和 ≈ 870px。メディアクエリを増やさない）。見出し行も同じ basis なので列がそろう。
   B-LAYOUT1（B-5）の「状態・操作は毎月触るので必ず見える」は、横スクロールを無くしたことで狭い幅でも成り立つ。 */
#t7 .ma-list{ display:flex; flex-direction:column; }
#t7 .ma-row{ display:flex; flex-wrap:wrap; align-items:flex-start; gap:var(--gup-sp-1) var(--gup-sp-3); padding:var(--gup-sp-1) 0 var(--gup-sp-2); border-bottom:1px solid var(--gup-color-border); }
#t7 .ma-c{ min-width:0; font-size:var(--gup-fs-sm); line-height:var(--gup-lh-compact); overflow-wrap:anywhere; }
/* 各欄の項目名（見出し行の代わり）。表の列見出しと同じ Bold・小さく・二次色。 */
#t7 .ma-k{ display:block; font-size:var(--gup-fs-note); font-weight:var(--gup-font-weight-bold); color:var(--gup-color-text-secondary); line-height:var(--gup-lh-compact); }
#t7 .ma-c--title{ flex:3 1 240px; }
#t7 .ma-c--scope{ flex:2 1 150px; }
#t7 .ma-c--who{ flex:1 1 96px; }
#t7 .ma-c--when{ flex:1.2 1 120px; }
#t7 .ma-c--status{ flex:0 0 56px; }
#t7 .ma-c--ops{ flex:0 0 120px; display:flex; flex-wrap:wrap; gap:var(--gup-sp-2); justify-content:flex-end; padding-right:var(--gup-sp-1); align-self:flex-end; }
#t7 .ma-c--ops > .gup-cmd{margin:0;min-height:var(--gup-control-compact)}
#t7 .ma-title{ color:var(--gup-color-text-primary); }
#t7 .ma-desc, #t7 .ma-sub{ font-size:var(--gup-fs-note); color:var(--gup-color-text-secondary); margin-top:2px; }
/* 期限超過・今日が期限は文字（印）でも分かるようにする（色だけに頼らない）。左の線は状態の意味にだけ色を使う。 */
#t7 .ma-row--overdue{ border-left:3px solid var(--gup-color-negative); padding-left:var(--gup-sp-2); }
#t7 .ma-row--today{ border-left:3px solid var(--gup-color-warning); padding-left:var(--gup-sp-2); }
#t7 .ma-tag{ display:inline-block; margin-left:var(--gup-sp-1); padding:0 var(--gup-sp-1); border-radius:var(--gup-radius-pill); border:1px solid currentColor; font-size:var(--gup-fs-note); line-height:var(--gup-lh-normal); white-space:nowrap; }
#t7 .ma-tag--over{ color:var(--gup-color-negative); }
#t7 .ma-tag--today{ color:var(--gup-color-warning); }
#t7 .ma-row--closed .ma-c{ color:var(--gup-color-text-secondary); }
/* 絞り込み（UX-43）：閉じた明細の中の context 行は帯にしない */
#t7 .ma-filters .fpa-context{ border-bottom:0; padding:0; }

/* GUP-UX-WORLDCLASS1 Phase 4（UX-40）：月ごとの表は 13 行を一画面に入れる（行を詰める）。実績 → 見込み の境界行に上線。詳細度は #t7 .mucur-table より上（class 2 つ）。 */
#t7 .mucur-table.roll-mtab th, #t7 .mucur-table.roll-mtab td{ padding:1px var(--gup-sp-2); line-height:var(--gup-lh-compact); }
#t7 .mucur-table.roll-mtab tr.roll-boundary > td{ border-top:2px solid var(--gup-color-accent); }
#t7 .mucur-table.roll-mtab .roll-tag{ font-size:var(--gup-fs-note); color:var(--gup-color-text-secondary); }

/* ===== GUP-TIME-FORECAST-STOCK1 Gate D：会社ぜんぶの月末残高 =====
   ★実績と見込みは **色ではなく区分の印**で分ける（Gate F の視覚文法と同じ考え方）。
   ★数値は右そろえ・桁そろえ。単位は見出しではなくカードの説明に 1 回だけ（UI-UNIT1）。 */
#t7 .mes-scroll{ overflow-x:auto; }
#t7 .mes-t{ width:100%; min-width:760px; border-collapse:collapse; }
#t7 .mes-t th, #t7 .mes-t td{ padding:var(--gup-sp-1) var(--gup-sp-2); border-bottom:1px solid var(--gup-border-default); }
#t7 .mes-t thead th{ font-size:var(--gup-fs-note); color:var(--gup-text-secondary); text-align:right; white-space:nowrap; }
#t7 .mes-t thead th:first-child, #t7 .mes-t thead th:nth-child(2){ text-align:left; }
#t7 .mes-t tbody th{ text-align:left; font-weight:var(--gup-type-body-weight); white-space:nowrap; }
#t7 .mes-t td.num{ text-align:right; font-variant-numeric:tabular-nums; }
#t7 .mes-t input.mes-in{ width:96px; text-align:right; font-variant-numeric:tabular-nums; }
/* 派生（読み取り専用）は入力欄と見た目を分ける */
#t7 .mes-t td.mes-der{ color:var(--gup-text-secondary); background:var(--gup-surface-readonly); }
/* 区分の印：実績＝はっきり、見込み＝やわらかい（色相は同じ） */
#t7 .mes-badge{ display:inline-block; padding:0 var(--gup-sp-2); border-radius:var(--gup-radius-pill);
  font-size:var(--gup-fs-note); border:1px solid var(--gup-border-strong); }
#t7 .mes-badge-actual{ background:var(--gup-surface-secondary); color:var(--gup-text-primary); }
#t7 .mes-badge-forecast{ background:transparent; color:var(--gup-text-secondary); border-style:dashed; }

/* 月末残高のカード（GUP-TIME-FORECAST-STOCK1 Gate D）。
   余白は token から。inline style で足さない（UI-SYSTEM1-1B1）。 */
#t7 .mes-card{ margin-top: var(--gup-sp-4); }
#t7 .mes-bar{ align-items: center; gap: var(--gup-sp-2); }

/* ===== GUP-LEARN-LOOP1：効果を確認（実施完了の Action だけ）=====
   ★行の中の 1 ブロック（新しい上位 view も巨大カードも作らない）。
   ★色で良し悪しを言わない（Gup は成功／失敗を判定しない）。文字だけ。
   ★1440 では 1 行 1 項目、390 では同じ行が折り返す（メディアクエリを増やさない）。 */
#t7 .ma-learn{ flex:1 1 100%; margin-top:var(--gup-sp-1); padding:var(--gup-sp-2) var(--gup-sp-3);
  border-left:2px solid var(--gup-border-default); background:var(--gup-surface-secondary);
  border-radius:var(--gup-radius-sm); display:flex; flex-direction:column; gap:var(--gup-sp-1); }
#t7 .ma-learn__lead{ margin:0; font-size:var(--gup-fs-note); color:var(--gup-color-text-secondary); }
#t7 .ma-learn__g{ display:flex; flex-wrap:wrap; align-items:baseline; gap:var(--gup-sp-1) var(--gup-sp-2);
  font-size:var(--gup-fs-sm); line-height:var(--gup-lh-compact); }
#t7 .ma-learn__k{ flex:0 0 7em; font-size:var(--gup-fs-note); font-weight:var(--gup-font-weight-bold);
  color:var(--gup-color-text-secondary); }
#t7 .ma-learn__v{ font-variant-numeric:tabular-nums; }
#t7 .ma-learn__note{ font-size:var(--gup-fs-note); color:var(--gup-color-text-secondary); }
