:root{--ink:#23201C;--shu:#B5402F;--shu-d:#9d3526;--paper:#FBF8F1;--paper2:#F1EADC;--raised:#f6f2ea;
 --good:#2E8B6F;--warn:#E0A458;--bad:#C0392B;--blue:#3E6BA8;--muted:#8A8275;--border:rgba(35,32,28,.10);
 --shu-bd:#E4C3BA;--shu-bg:#F8ECE8;   /* JCCコクピットの accent-bd/accent-bg 相当（朱系・2026-08-22 デザイン改修） */
 --font:'Noto Sans JP',sans-serif;--serif:'Noto Serif JP',serif;}

/* ══ ✍️ 営業活動入力（①②③）＋コクピットの記録パネル 専用トークン（2026-09-13）
   出典: Astra 設計 §6-1／参照アプリ ENGINE の実測（16px・行間1.6・罫線1.5px・影なし・余白4/8/16/32）を
   業務画面へ翻訳したもの。色は大和書房ブランド（墨＋朱＋紙）を継続し、参照アプリの橙は持ち込まない。 */
.ops-ui,.ops-panels{
  --fs-base:16px; --fs-input:15px; --fs-label:13px; --fs-table:14px; --fs-progress:11px;
  --lh-body:1.6; --lh-table:1.4; --lh-table-compact:1.35;
  --sp-1:4px; --sp-2:8px; --sp-3:16px; --sp-4:24px; --sp-5:32px; --sp-aux:12px;
  --r-sm:8px; --r-md:10px; --r-lg:14px; --r-pill:999px;
  --text:var(--ink); --text-2:#655E54;          /* muted より濃い。必須ラベルを薄色にしない */
  --brand:var(--shu); --brand-hover:var(--shu-d); --brand-subtle:var(--shu-bg); --brand-bd:var(--shu-bd);
  --surface:var(--paper); --surface-2:var(--raised);
  --bd:1.5px; --bd-color:var(--border); --shadow:none;   /* 影で境界を作らず罫線で作る */
  --control-h:44px; --row-h:44px; --row-h-compact:36px; --form-max:640px; --form-narrow:480px;
  font-size:var(--fs-base); line-height:var(--lh-body);
}
.ops-ui *,.ops-panels *{box-sizing:border-box;}
/* 入力の基本形 */
.ops-ui label.f{display:block;font-size:var(--fs-label);color:var(--text-2);margin:0 0 var(--sp-1);}
.ops-ui input[type=text],.ops-ui input[type=date],.ops-ui input[type=number],.ops-ui select,.ops-ui textarea{
  font-family:var(--font);font-size:var(--fs-input);min-height:var(--control-h);
  padding:0 var(--sp-aux);border:var(--bd) solid var(--bd-color);border-radius:var(--r-sm);
  background:#fff;color:var(--text);box-shadow:none;width:100%;}
.ops-ui textarea{padding:var(--sp-2) var(--sp-aux);min-height:72px;line-height:var(--lh-body);}
.ops-ui input:focus,.ops-ui select:focus,.ops-ui textarea:focus{outline:none;border-color:var(--brand);
  box-shadow:0 0 0 3px var(--brand-subtle);}
/* 区分ラジオ＝ボタン型セグメント（ENGINE の選択肢ボタンを 44px に詰めた形） */
.ops-seg{display:inline-flex;gap:var(--sp-2);flex-wrap:wrap;}
.ops-seg button{font-family:var(--font);font-size:var(--fs-input);font-weight:500;min-height:var(--control-h);
  padding:0 var(--sp-3);border:var(--bd) solid var(--bd-color);border-radius:var(--r-lg);background:#fff;
  color:var(--text);cursor:pointer;transition:border-color .12s,background .12s,transform .12s;}
.ops-seg button:hover{border-color:var(--brand);background:var(--brand-subtle);}
.ops-seg button:active{transform:scale(.99);}
.ops-seg button[aria-pressed=true]{border-color:var(--brand);background:var(--brand-subtle);font-weight:700;}
.ops-seg button[aria-pressed=true]::before{content:'✓ ';color:var(--brand);}
/* 主ボタン＝朱の単色（参照アプリのグラデーションは採用しない） */
.ops-ui .btn-primary{font-family:var(--font);font-size:var(--fs-input);font-weight:700;min-height:var(--control-h);
  padding:0 var(--sp-4);border:0;border-radius:var(--r-sm);background:var(--brand);color:#fff;cursor:pointer;
  letter-spacing:.02em;}
.ops-ui .btn-primary:hover{background:var(--brand-hover);}
.ops-ui .btn-primary:disabled{background:#cfc7bb;cursor:not-allowed;}
/* 表の規律（行高2段階・sticky・編集中は朱枠） */
.ops-tbl{font-size:var(--fs-table);line-height:var(--lh-table);border-collapse:separate;border-spacing:0;}
.ops-tbl.compact{line-height:var(--lh-table-compact);}
.ops-tbl th,.ops-tbl td{height:var(--row-h);padding:0 var(--sp-2);border-bottom:1px solid var(--bd-color);
  background:#fff;text-align:left;}
.ops-tbl.compact th,.ops-tbl.compact td{height:var(--row-h-compact);}
.ops-tbl thead th{position:sticky;top:0;z-index:3;background:var(--surface-2);font-size:var(--fs-label);
  color:var(--text-2);font-weight:700;}
.ops-tbl .fixcol{position:sticky;left:0;z-index:2;background:#fff;}
.ops-tbl thead .fixcol{z-index:4;background:var(--surface-2);}
.ops-tbl td.editing{outline:var(--bd) solid var(--brand);outline-offset:-2px;}
/* 進捗（薄いトラック＋朱・右に11px/700 の数値。ENGINE の進捗表現を踏襲） */
.ops-bar{display:inline-flex;align-items:center;gap:var(--sp-2);}
.ops-bar .t{width:84px;height:6px;border-radius:var(--r-pill);background:var(--brand-subtle);overflow:hidden;}
.ops-bar .t>i{display:block;height:100%;background:var(--brand);}
.ops-bar .v{font-size:var(--fs-progress);font-weight:700;color:var(--brand);font-style:normal;}
/* 状態（成功はインライン2秒・失敗は赤帯で入力保持） */
.ops-ok{color:var(--good);font-size:var(--fs-label);font-weight:700;}
.ops-er{background:#fdecea;border:var(--bd) solid var(--bad);border-radius:var(--r-sm);
  color:var(--bad);font-size:var(--fs-label);font-weight:700;padding:var(--sp-2) var(--sp-aux);}
.ops-warn{background:#fdf4e3;border:var(--bd) solid var(--warn);border-radius:var(--r-sm);
  color:#8a5a12;font-size:var(--fs-label);padding:var(--sp-2) var(--sp-aux);}

/* 🔴 部品は .ops-ui の外にも置かれる。トークンは .ops-ui スコープにしか無いため、
   var() には必ず既定値フォールバックを持たせる（無いと選択中セグメントが白文字 on 透明で消える・実測） */
/* ══ UX v2（2026-09-14）: 状態は短く常設、定義は開いて読む ══
   Astra UXレビュー §2/§3/§4。数値の正しさは後退させず、表現手段だけ文章→視覚へ移す。 */

/* ── ⓘ 開閉式の定義（クリック/タップ/キーボード。ホバー依存にしない） ── */
.defwrap{display:inline;}
.defbtn{font:inherit;font-size:12px;line-height:1.4;color:var(--blue);background:transparent;
  border:1px solid transparent;border-radius:var(--r-sm, 8px);padding:2px 6px;cursor:pointer;white-space:nowrap;}
.defbtn::before{content:'ⓘ ';}
.defbtn:hover{background:#eef2f9;border-color:#d6dfee;}
.defbtn:focus-visible{outline:2px solid var(--blue);outline-offset:1px;}
.defbtn[aria-expanded="true"]{background:#eef2f9;border-color:#d6dfee;}
.defbtn .dchev{display:inline-block;margin-left:3px;transition:transform .12s;}
.defbtn[aria-expanded="true"] .dchev{transform:rotate(180deg);}
.defbtn.mini{font-size:11.5px;padding:1px 5px;}
.defbody{display:block;margin:6px 0 2px;padding:10px 12px;background:#f7f9fc;
  border:1px solid #dde4ef;border-left:3px solid var(--blue);border-radius:var(--r-sm, 8px);
  font-size:13px;line-height:1.65;color:var(--text-2,#655E54);}
.defbody[hidden]{display:none;}

/* ── 状態ラベル（🔴 空の進捗バーで未到来を表さない。0%の未達に見えるため） ── */
.stag{display:inline-flex;align-items:center;gap:4px;font-size:12.5px;line-height:1.3;
  padding:2px 8px;border-radius:var(--r-pill, 999px);white-space:nowrap;}
.stag>i{font-style:normal;font-size:11px;opacity:.8;}
.st-pending{background:#eef1f6;color:#5b6579;border:1px dashed #b9c2d2;}  /* 未到来＝破線。未記入と質が違う */
.st-blank  {background:transparent;color:#8a8275;border:1px solid var(--border);}
.st-undef  {background:#fdf4e3;color:#8a5a12;border:1px dashed var(--warn);}
.st-nodate {background:#f3f0ea;color:#6b6355;border:1px dashed #c9c1b2;}
.st-noinput{background:#eef2f9;color:#3E6BA8;border:1px solid #d6dfee;}
.st-na     {background:transparent;color:#a8a196;border:1px solid transparent;}

/* 判定未確定のセルは薄いハッチ（色だけに頼らず模様で伝える） */
.cell-undef{background-image:repeating-linear-gradient(45deg,
  rgba(224,164,88,.10) 0 6px, transparent 6px 12px);}
.cell-pending{background-image:repeating-linear-gradient(45deg,
  rgba(90,100,120,.07) 0 6px, transparent 6px 12px);}

/* ── ソース1行サマリ（旧: 横長バッジ5個） ── */
.srcline{display:flex;align-items:center;gap:6px;flex-wrap:wrap;
  font-size:12px;color:var(--muted);margin:0 0 10px;}
.srcline .sname{font-weight:700;color:var(--ink);}
.srcline .sdot{opacity:.5;}

/* ── ヘッダ1段（タイトル＋レビュー情報＋主操作） ── */
.qh2{margin:0 0 10px;}
.qh2row{display:flex;align-items:center;gap:10px;flex-wrap:wrap;}
.qh2row h1{margin:0;font-size:21px;line-height:1.35;}
.qh2sp{flex:1 1 auto;}

/* ── ツールバー（検索・フィルタ・密度を1行に） ── */
.uxbar{display:flex;align-items:center;gap:var(--sp-2, 8px);flex-wrap:wrap;
  padding:8px 10px;background:var(--surface-2, #f6f2ea);border:1px solid var(--bd-color, rgba(35,32,28,.10));
  border-radius:var(--r-md, 10px);margin:0 0 10px;}
.uxbar>.lb{font-size:var(--fs-label, 13px);color:var(--text-2,#655E54);white-space:nowrap;}
.uxbar .grow{flex:1 1 200px;min-width:160px;}
.uxbar .rt{margin-left:auto;display:flex;gap:var(--sp-2, 8px);align-items:center;}

/* ── セグメント（一体型・44px・gap4・r8。独立ボタンの羅列をやめる） ── */
.useg{display:inline-flex;gap:4px;padding:3px;background:#fff;
  border:1px solid var(--bd-color, rgba(35,32,28,.10));border-radius:var(--r-sm, 8px);}
.useg button{font:inherit;font-size:13.5px;font-weight:500;min-height:38px;padding:0 14px;
  border:0;border-radius:6px;background:transparent;color:var(--ink);cursor:pointer;white-space:nowrap;}
.useg button:hover{background:var(--brand-subtle, #F8ECE8);}
.useg button[aria-pressed="true"]{background:var(--brand, #B5402F);color:#fff;font-weight:700;}
.useg button:focus-visible{outline:2px solid var(--brand, #B5402F);outline-offset:1px;}
/* 下線タブ（週のような「同じ対象の見せ方違い」に使う。主タブと見た目を変える） */
.utabs{display:flex;gap:2px;border-bottom:1px solid var(--bd-color, rgba(35,32,28,.10));margin:0 0 10px;}
.utabs button{font:inherit;font-size:13.5px;min-height:38px;padding:0 12px;border:0;background:transparent;
  color:var(--text-2,#655E54);cursor:pointer;border-bottom:2px solid transparent;white-space:nowrap;}
.utabs button[aria-selected="true"]{color:var(--brand, #B5402F);font-weight:700;border-bottom-color:var(--brand, #B5402F);}
.utabs button:focus-visible{outline:2px solid var(--brand, #B5402F);outline-offset:-2px;}
.utabs .tsub{display:block;font-size:10.5px;opacity:.75;font-weight:400;}

/* ── 表ツールバー（対象と件数を1行で言う） ── */
.tbar{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap;margin:0 0 6px;font-size:13px;}
.tbar .tgt{font-weight:700;font-size:14px;}
.tbar .cnt{color:var(--text-2,#655E54);}
.tbar .rt{margin-left:auto;}
*{box-sizing:border-box}
html{zoom:1.1;}   /* 既定の拡大率（2026-07-30 要望・ブラウザ110%相当）。実装版は Streamlit テーマのフォントサイズで再現 */
body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--font);font-size:15px;line-height:1.7;}
.app{display:flex;min-height:100vh;}
/* ── sidebar v2（墨地ナビ） ── */
.sb2{width:246px;flex-shrink:0;background:var(--ink);color:#EDE7DB;padding:14px 12px 40px;position:sticky;top:0;height:100vh;overflow-y:auto;}
.sb2 .logo{text-align:center;margin:6px 0 14px;}
.sb2 .logo .n{font-family:var(--serif);font-weight:700;font-size:21px;letter-spacing:.24em;color:#fff;}
.sb2 .logo .r{font-size:8.5px;letter-spacing:.4em;color:rgba(237,231,219,.45);margin-top:2px;}
/* モードタブ（カンテラ｜売上管理） */
.mode{display:flex;gap:4px;background:rgba(255,255,255,.08);border-radius:12px;padding:4px;margin:4px 0 8px;}
.mode button{flex:1;border:none;background:transparent;color:rgba(237,231,219,.75);font-family:var(--font);font-size:12.5px;font-weight:700;padding:7px 6px;border-radius:9px;cursor:pointer;white-space:nowrap;}
.mode button.on{background:var(--shu);color:#fff;box-shadow:0 1px 4px rgba(181,64,47,.5);}
.mode button:not(.on):hover{background:rgba(255,255,255,.08);color:#fff;}
.sb2 .glab{font-size:10.5px;font-weight:700;letter-spacing:.14em;color:rgba(237,231,219,.5);margin:16px 6px 4px;display:flex;align-items:center;gap:6px;}
.sb2 .glab::after{content:"";flex:1;border-top:1px solid rgba(237,231,219,.14);}
.sb2 button.nv{display:flex;align-items:center;gap:7px;width:100%;border:none;background:transparent;color:#EDE7DB;
 font-family:var(--font);font-size:12.5px;font-weight:600;padding:7px 8px;border-radius:8px;cursor:pointer;text-align:left;transition:background .15s;white-space:nowrap;}
.sb2 button.nv:hover{background:rgba(255,255,255,.08);}
.sb2 button.nv.on{background:var(--shu);color:#fff;box-shadow:0 1px 4px rgba(181,64,47,.5);}
.sb2 button.nv.lock{color:rgba(237,231,219,.38);cursor:pointer;}
.sb2 button.nv .lk{margin-left:auto;font-size:9px;color:rgba(237,231,219,.45);border:1px solid rgba(237,231,219,.25);border-radius:8px;padding:0 4px;flex-shrink:0;}
.sb2 .fbox{margin-top:18px;padding:10px;border:1px solid rgba(237,231,219,.16);border-radius:10px;}
.sb2 .fbox .ft{font-size:10.5px;font-weight:700;letter-spacing:.1em;color:rgba(237,231,219,.55);margin-bottom:6px;}
.sb2 select{width:100%;background:rgba(255,255,255,.06);border:1px solid rgba(237,231,219,.22);border-radius:8px;color:#EDE7DB;
 font-family:var(--font);font-size:12px;padding:6px 8px;margin-bottom:6px;}
.sb2 select option{color:var(--ink);}
.sb2 .fnote{font-size:10px;color:rgba(237,231,219,.4);line-height:1.5;}
.sb2 .pbtn{width:100%;border:none;background:var(--shu);color:#fff;font-family:var(--font);font-size:12px;font-weight:700;border-radius:8px;padding:7px 8px;cursor:pointer;margin-top:6px;}
.sb2 .pbtn.ghost{background:transparent;border:1px solid rgba(237,231,219,.3);color:rgba(237,231,219,.75);font-weight:600;}
/* ── main ── */
.main{flex:1;min-width:0;padding:16px 26px 70px;max-width:1600px;}
.topbar{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:10px;}
.fresh{font-size:11.5px;color:var(--muted);}
.fresh b{color:var(--ink);}
.pbanner{display:inline-flex;align-items:center;gap:8px;background:var(--shu);color:#fff;padding:4px 14px;border-radius:18px;font-size:12px;font-weight:600;}
.mockbadge{display:inline-block;background:var(--warn);color:#3a2c10;border-radius:11px;padding:1px 10px;font-size:10.5px;font-weight:700;}
/* qhead（この画面の問い）: JCCコクピットの .hero を朱で移植（2026-08-22）
   短い縦バー（文字高に合わせた5×28px・角丸）＋サンセリフ太字。serif見出しは廃止 */
.qhead{position:relative;border-left:none;padding:0 0 0 16px;margin:6px 0 14px;}
.qhead::before{content:"";position:absolute;left:0;top:5px;width:5px;height:28px;background:var(--shu);border-radius:3px;}
.qhead h1{font-family:var(--font);font-size:23px;font-weight:700;margin:0;line-height:1.35;letter-spacing:.01em;}
.qhead .who{display:inline-block;background:#fff;border:1px solid var(--shu-bd);border-radius:14px;padding:2px 11px;font-size:11px;font-weight:600;color:var(--shu-d);margin-left:10px;vertical-align:middle;}
.qhead .steps{color:var(--muted);font-size:12.5px;margin-top:4px;}
/* KPI: JCCコクピットの .kpi を朱で移植（2026-08-22）。
   左の朱帯・スパークラインは廃止（ごちゃつきの主因）。丸アイコンを右上・値は大きく1系統 */
.kpis{display:flex;gap:14px;flex-wrap:wrap;margin:8px 0 18px;}
.kpi{position:relative;background:#fff;border:1px solid var(--border);border-radius:16px;
 padding:15px 17px 13px;box-shadow:0 4px 14px rgba(35,32,28,.07);min-width:172px;flex:1 1 175px;}
.kpi .l{font-size:12.5px;color:#3B362E;font-weight:600;line-height:1.4;padding-right:44px;}
.kpi .kico{position:absolute;top:14px;right:14px;width:36px;height:36px;border-radius:50%;border:1.5px solid var(--shu-bd);color:var(--shu);display:flex;align-items:center;justify-content:center;font-size:16px;font-weight:700;background:#fff;}
.kpi .spk{display:none;}   /* カードのミニ折れ線は廃止（JCC準拠・情報は値＋差分の2行に絞る） */
/* サブラベル: 項目名の直下に定義を小さく薄く（項目名だけで意味が分かるように） */
.sub{display:block;font-size:9px;font-weight:500;line-height:1.35;margin-top:1px;letter-spacing:.02em;white-space:normal;}
table.zt th .sub{color:rgba(255,255,255,.62);max-width:120px;}
.kpi .l .sub{color:var(--muted);}
.kpi .v{font-size:26px;color:var(--shu);font-weight:700;line-height:1.15;margin-top:3px;font-variant-numeric:tabular-nums;white-space:nowrap;}
.kpi .d{font-size:12px;font-weight:600;margin-top:2px;color:var(--muted);}
.kpi .d.up{color:var(--good);} .kpi .d.dn{color:var(--bad);} .kpi .d.mut{color:var(--muted);font-weight:400;}
h5{font-family:var(--font);font-size:15.5px;font-weight:700;margin:18px 0 6px;}
h6{font-size:13.5px;margin:14px 0 5px;color:var(--ink);font-weight:700;}
.cap{color:var(--muted);font-size:11.5px;margin:6px 0 10px;line-height:1.6;}
/* tabs: JCCコクピットのタブを朱で移植（選択中がひと目で分かる・角丸の起き上がりタブ） */
.tabs{display:flex;gap:3px;border-bottom:2px solid var(--border);margin:10px 0 8px;flex-wrap:wrap;}
.tabs button{border:1px solid var(--border);border-bottom:none;background:#F3EDE1;font-family:var(--font);
 font-size:13.5px;font-weight:700;color:var(--muted);padding:9px 20px;cursor:pointer;border-radius:10px 10px 0 0;margin-bottom:-2px;}
.tabs button:hover{background:#EDE4D3;}
.tabs button.on{color:#fff;background:var(--shu);border-color:var(--shu);}
/* table */
.zwrap{overflow:auto;border:1px solid var(--border);border-radius:12px;margin-bottom:6px;background:#fff;box-shadow:0 4px 14px rgba(35,32,28,.05);}
table.zt{border-collapse:separate;border-spacing:0;width:100%;font-size:13.5px;}
table.zt th{background:var(--ink);color:#fff;text-align:left;padding:6px 10px;font-weight:600;font-size:11.5px;position:sticky;top:0;white-space:nowrap;cursor:pointer;user-select:none;z-index:2;}
table.zt th:hover{background:#332f28;}
.sarrow{font-size:10px;opacity:.9;margin-left:2px;}
table.zt td{padding:4px 10px;border-bottom:1px solid rgba(35,32,28,.06);white-space:nowrap;}
table.zt td.ell{max-width:230px;overflow:hidden;text-overflow:ellipsis;}
table.zt tr:nth-child(even) td{background:rgba(35,32,28,.035);}
table.zt tr:hover td{background:rgba(181,64,47,.06);}
table.zt td.num{text-align:right;font-variant-numeric:tabular-nums;}
/* 実績マトリクス（③チェーン別/④店舗別実績）: 先頭列を左固定＝縦横スクロールしても列名と店舗名が見える（2026-07-29） */
table.zt.fixcol th:first-child,table.zt.fixcol td:first-child{position:sticky;left:0;z-index:3;background:#fff;border-right:1px solid rgba(35,32,28,.12);}
table.zt.fixcol thead th:first-child{z-index:4;background:var(--ink);}
table.zt.fixcol tr:nth-child(even) td:first-child{background:#F7F7F6;}
table.zt.fixcol tr:hover td:first-child{background:#FAF3F2;}
table.zt tr.grow td{background:#F3EFE6!important;font-weight:700;border-top:2px solid rgba(35,32,28,.14);}
table.zt.llist td{padding-top:6px;padding-bottom:6px;}   /* 新刊ローンチ発売日順一覧: 行高を約1.1倍に（2026-07-30 要望） */
/* ── 共通フィルタ: 複数選択コンボ（ワード検索＋プルダウン併用・2026-07-29） ── */
.flab{font-size:11px;color:#B8B0A2;margin:8px 0 3px;font-weight:600;}
.msel{position:relative;}
.msel .mbox{display:flex;align-items:center;gap:6px;background:#2A2620;border:1px solid #4a443c;border-radius:8px;padding:6px 9px;cursor:text;}
.msel.open .mbox{border-color:var(--shu);box-shadow:0 0 0 2px rgba(181,64,47,.28);}
.msel input{flex:1;min-width:40px;background:transparent;border:0;outline:none;color:#EDE7DB;font-size:12.5px;font-family:var(--font);}
.msel input::placeholder{color:#8A8275;}
.msel .mcar{color:#8A8275;font-size:10px;}
.mchips{display:flex;flex-wrap:wrap;gap:4px;margin-bottom:5px;}
.mchip{display:inline-flex;align-items:center;gap:5px;background:rgba(181,64,47,.25);border:1px solid rgba(181,64,47,.55);color:#F5E9E6;border-radius:12px;padding:2px 8px;font-size:11px;}
.mchip a{cursor:pointer;opacity:.75;font-weight:700;}
.mchip a:hover{opacity:1;}
.mclear{background:none;border:0;color:#B8B0A2;font-size:10.5px;cursor:pointer;text-decoration:underline;padding:0 2px;font-family:var(--font);}
.mmenu{display:none;position:fixed;background:#fff;border:1px solid var(--border);border-radius:10px;box-shadow:0 12px 30px rgba(0,0,0,.3);max-height:280px;overflow:auto;z-index:80;padding:4px;}
.mmenu.open{display:block;}
.mmenu .opt{display:flex;align-items:center;gap:8px;padding:7px 10px;font-size:12.5px;color:var(--ink);border-radius:6px;cursor:pointer;white-space:nowrap;}
.mmenu .opt:hover{background:var(--paper2);}
.mmenu .opt.on{background:rgba(181,64,47,.10);color:var(--shu);font-weight:700;}
.mmenu .osub{margin-left:auto;font-size:10.5px;color:var(--muted);font-weight:400;}
.mmenu .empty{padding:10px;font-size:11.5px;color:var(--muted);}
.barcell{position:relative;z-index:0;} .barcell .bt{position:relative;z-index:1;}
.dl{color:var(--shu);text-decoration:none;font-weight:600;cursor:pointer;} .dl:hover{text-decoration:underline;}
.namelink{color:var(--ink);text-decoration:none;border-bottom:1px dotted rgba(35,32,28,.35);cursor:pointer;}
.namelink:hover{color:var(--shu);border-bottom-color:var(--shu);}
/* dropdown / search select */
.dd{position:relative;display:inline-block;margin:6px 0;}
.dd .cur{background:#fff;border:1px solid var(--border);border-radius:8px;padding:6px 12px;font-size:12.5px;min-width:240px;display:flex;justify-content:space-between;align-items:center;cursor:pointer;gap:8px;}
.dd .menu{display:none;position:absolute;z-index:20;background:#fff;border:1px solid var(--border);border-radius:8px;box-shadow:0 6px 18px rgba(0,0,0,.12);margin-top:3px;max-height:290px;overflow:auto;min-width:260px;}
.dd.open .menu{display:block;}
.dd .menu div{padding:6px 12px;font-size:12.5px;cursor:pointer;}
.dd .menu div:hover{background:var(--paper2);}
.dd .menu input{width:calc(100% - 16px);margin:6px 8px;padding:5px 8px;border:1px solid var(--border);border-radius:6px;font-family:var(--font);font-size:12px;}
.chip{display:inline-block;border-radius:10px;padding:0 8px;font-size:11px;font-weight:700;}
.lchip{display:inline-flex;align-items:center;gap:6px;border:1.5px solid;border-radius:14px;padding:2px 10px;font-size:11.5px;font-weight:600;background:#fff;}
.lchip .rm{cursor:pointer;font-weight:800;text-decoration:none;}
.lbtn{background:#fff;border:1px solid var(--border);border-radius:8px;padding:6px 14px;font-size:12.5px;font-family:var(--font);cursor:pointer;}
.lbtn:hover{border-color:var(--shu);color:var(--shu);}
.lbtn.on{background:var(--shu);color:#fff;border-color:var(--shu);}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:18px;}
.note{color:var(--muted);font-size:12px;margin-top:12px;}
svg text{font-family:var(--font);} svg circle{cursor:pointer;}
/* tooltip */
#tip{position:fixed;z-index:200;background:rgba(35,32,28,.96);color:#fff;padding:8px 11px;border-radius:8px;font-size:12px;line-height:1.5;pointer-events:none;display:none;box-shadow:0 6px 18px rgba(0,0,0,.25);max-width:300px;}
#tip b{color:#f0a87f;}
.ic{cursor:help;color:var(--muted);border:1px solid var(--border);border-radius:12px;padding:2px 10px;font-size:11.5px;background:#fff;white-space:nowrap;}
.ic:hover{border-color:var(--shu);color:var(--shu);}
.term{border-bottom:1px dotted rgba(35,32,28,.45);cursor:help;}
/* 凡例 */
.legend{display:flex;gap:10px;flex-wrap:wrap;align-items:center;font-size:11px;color:var(--muted);margin:4px 0 10px;}
.legend .sw{display:inline-block;width:11px;height:11px;border-radius:3px;margin-right:4px;vertical-align:-1px;}
/* 状態バッジ */
.st{display:inline-block;border-radius:9px;padding:0 9px;font-size:11px;font-weight:700;white-space:nowrap;}
.st.out{background:var(--bad);color:#fff;} .st.low{background:#fdebd7;color:#9a6414;border:1px solid var(--warn);}
.st.ok{background:#e2f2ec;color:var(--good);} .st.sleep{background:#eee9df;color:var(--muted);}
/* spark bar */
.spark{display:inline-flex;align-items:flex-end;gap:1.5px;height:18px;vertical-align:middle;}
.spark i{display:inline-block;width:6px;background:rgba(181,64,47,.55);border-radius:1.5px 1.5px 0 0;}
/* home cards */
.cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:12px;margin:8px 0 16px;}
.card{background:#fff;border:1px solid var(--border);border-radius:12px;padding:13px 16px;cursor:pointer;box-shadow:0 1px 3px rgba(35,32,28,.05);transition:transform .15s,box-shadow .15s;}
.card:hover{transform:translateY(-2px);box-shadow:0 4px 12px rgba(35,32,28,.12);}
.card .t{font-weight:700;font-size:14.5px;}
.card .w{font-size:11px;color:var(--shu);font-weight:600;margin-top:2px;}
.card .d{font-size:12px;color:var(--muted);margin-top:3px;line-height:1.55;}
.card.lock{opacity:.55;cursor:default;}
.alertstrip{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:12px;margin:8px 0 6px;}
.acard{background:#fff;border:1px solid var(--border);border-radius:14px;padding:11px 16px;cursor:pointer;box-shadow:0 4px 14px rgba(35,32,28,.05);}
.acard:hover{box-shadow:0 4px 12px rgba(35,32,28,.12);}
.acard .n{font-size:1.4rem;font-weight:800;}
.acard .l{font-size:12.5px;font-weight:700;}
.acard .s{font-size:11.5px;color:var(--muted);}
.hl{background:#fff;border:1px solid var(--border);border-radius:12px;padding:10px 16px;margin:8px 0;font-size:13px;}
.hl li{margin:3px 0;}
/* T2 ghost */
.ghost{position:relative;opacity:.62;border:1.5px dashed var(--warn);border-radius:12px;padding:12px 16px;margin:14px 0;background:repeating-linear-gradient(45deg,#fff, #fff 12px, #fdf6ec 12px, #fdf6ec 24px);}
.ghost .gb{position:absolute;top:-11px;left:14px;background:var(--warn);color:#3a2c10;border-radius:11px;padding:1px 12px;font-size:11px;font-weight:800;}
/* section box: JCCの .karte/.sfsec 相当（角丸14・やわらかい影） */
.sec{background:#fff;border:1px solid var(--border);border-radius:14px;padding:15px 20px;margin:12px 0;box-shadow:0 4px 14px rgba(35,32,28,.05);}
.sec.plain{background:transparent;border:none;box-shadow:none;padding:0;}
/* 計算例ブロック（指標ガイド） */
.ex{border:1px solid var(--border);border-radius:10px;overflow:hidden;background:#fff;}
.ex .exq{background:var(--ink);color:#f4efe6;font-family:var(--serif);font-size:13.5px;padding:8px 14px;}
.ex .exs{padding:10px 14px;border-bottom:1px dashed var(--border);font-size:13px;line-height:1.85;}
.ex .exd{display:block;background:var(--paper2);border-radius:6px;padding:6px 10px;margin:4px 0;font-variant-numeric:tabular-nums;font-size:12.5px;}
.ex .exn{padding:10px 14px;background:var(--raised);font-size:12px;color:var(--muted);line-height:1.8;}
.ex .exn b{color:var(--ink);}
.summary3{background:linear-gradient(135deg,#2a2622,#3a332c);color:#f4efe6;border-radius:12px;padding:14px 20px;margin:14px 0;}
.summary3 .st3{font-family:var(--serif);font-size:15px;color:#f0a87f;margin-bottom:6px;}
.summary3 li{margin:4px 0;font-size:13.5px;}
/* 売上管理モード: 画面ヒーロー/KPIカード（ニッカホーム版ダッシュのデザイン踏襲・2026-07-28） */
.shero{border-left:6px solid var(--shu);padding:2px 0 2px 16px;margin:4px 0 14px;}
.shero .eyebrow{font-size:11px;color:var(--muted);font-weight:700;letter-spacing:.04em;margin-bottom:2px;}
.shero h1{font-family:var(--serif);font-size:26px;font-weight:700;margin:0;line-height:1.35;}
.shero .sub2{color:var(--muted);font-size:12.5px;margin-top:4px;line-height:1.6;}
.kpis2{display:grid;grid-template-columns:repeat(auto-fit,minmax(178px,1fr));gap:14px;margin-bottom:18px;}
/* .kpi2 は .kpi（JCC移植版）と完全に同じ見た目に統一（2026-08-22） */
.kpi2{position:relative;background:#fff;border:1px solid var(--border);border-radius:16px;padding:15px 17px 13px;box-shadow:0 4px 14px rgba(35,32,28,.07);}
.kpi2 .l{font-size:12.5px;font-weight:600;color:#3B362E;padding-right:44px;line-height:1.4;}
.kpi2 .l .sub{color:var(--muted);}
.kpi2 .v{font-size:26px;font-weight:700;line-height:1.15;color:var(--shu);margin-top:3px;font-variant-numeric:tabular-nums;white-space:nowrap;}
.kpi2 .d{font-size:12px;font-weight:600;margin-top:2px;color:var(--muted);}
.kpi2 .d.up{color:var(--good);} .kpi2 .d.dn{color:var(--bad);} .kpi2 .d.mut{color:var(--muted);font-weight:400;}
.kpi2 .kico{position:absolute;top:14px;right:14px;width:36px;height:36px;border-radius:50%;border:1.5px solid var(--shu-bd);color:var(--shu);display:flex;align-items:center;justify-content:center;font-size:16px;font-weight:700;background:#fff;}
.kpi2 .spk{display:none;}
/* 商談モード */
body.deal .sb2{display:none;}
body.deal .no-deal{display:none !important;}
body.deal{font-size:17px;}
body.deal .main{padding:14px 20px 60px;}
body.deal table.zt{font-size:15.5px;}
body.deal .lbtn,body.deal .dd .cur{padding:10px 16px;font-size:14px;}
body.deal .kpi .v{font-size:1.7rem;}
@media(max-width:1180px){.grid2{grid-template-columns:1fr}}
/* ── モバイル最適化（2026-08-16）: サイドバー→折りたたみトップバー・ズーム解除・余白/文字圧縮 ── */
.sbtgl{display:none;}
@media(max-width:900px){
  html{zoom:1;}                                   /* 拡大はデスクトップのみ（スマホはピンチズームがある） */
  .app{flex-direction:column;}
  .sb2{width:100%;height:auto;position:sticky;top:0;z-index:60;padding:8px 12px;overflow:visible;
    box-shadow:0 2px 10px rgba(0,0,0,.25);}
  .sb2 .logo{display:flex;align-items:baseline;gap:8px;margin:0 0 6px;text-align:left;}
  .sb2 .logo .n{font-size:16px;letter-spacing:.14em;}
  .sb2 .logo .r{font-size:8.5px;}
  .sbtgl{display:inline-flex;align-items:center;gap:6px;margin-left:auto;background:#3a332c;color:#EDE7DB;
    border:1px solid #57503f;border-radius:8px;padding:6px 12px;font-size:12px;font-family:var(--font);cursor:pointer;}
  .sb2 .mode{margin-bottom:0;}
  /* ナビ・共通フィルタは既定たたむ（メニュー開閉で表示） */
  .sb2 #nav2,.sb2 .fbox{display:none;}
  .sb2.open #nav2,.sb2.open .fbox{display:block;}
  .sb2.open{max-height:82vh;overflow-y:auto;}
  .sb2 #nav2{display:none;margin-top:8px;}
  .main{padding:12px 12px 60px;}
  .topbar{flex-wrap:wrap;gap:6px;}
}
@media(max-width:640px){
  .shero h1{font-size:19px;}
  .qhead h1{font-size:19px;}
  .kpis2{grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:8px;}
  .kpi2 .v{font-size:21px;}
  .kpi .v{font-size:1.2rem;}
  .kpis{gap:8px;}
  .tabs{overflow-x:auto;white-space:nowrap;flex-wrap:nowrap;scrollbar-width:none;}
  .tabs button{padding:8px 10px;font-size:12.5px;}
  table.zt{font-size:12px;}
  table.zt th{padding:5px 7px;}
  table.zt td{padding:4px 7px;}
  .zwrap{--h:70vh;}
  .zwrap svg{min-width:640px !important;}
  .lbtn,.dd .cur{font-size:11.5px;padding:4px 10px;}
  .cards{grid-template-columns:1fr 1fr;gap:8px;}
  .alertstrip{grid-template-columns:1fr;gap:8px;}
  .pbanner{font-size:11px;padding:3px 10px;}
}
/* ══ IA v3（2026-08-22 再編・要件書 §1）: データソースバッジ／未確定バッジ／入力フォーム ══ */
/* モード3つ（インテージ｜営業活動入力｜カンテラ）は縦積みリスト（横3分割では文字が入らない） */
.mode.m3{flex-direction:column;gap:3px;}
.mode.m3 button{font-size:12px;padding:7px 10px;letter-spacing:0;line-height:1.3;text-align:left;display:flex;align-items:center;gap:7px;}
/* データソースバッジ（5要素固定: ソース｜母集団｜対象期間｜確定状態｜更新時刻） */
.srcb{display:inline-flex;align-items:stretch;flex-wrap:wrap;border:1px solid var(--border);border-radius:9px;
 background:#fff;font-size:11.5px;margin:0 0 8px;overflow:hidden;box-shadow:0 1px 2px rgba(35,32,28,.05);}
.srcb b{font-weight:700;padding:3px 11px;color:#fff;white-space:nowrap;}
.srcb i{font-style:normal;padding:3px 11px;border-left:1px solid var(--border);color:var(--muted);white-space:nowrap;}
.srcb.intage b{background:#3E6BA8;} .srcb.cantera b{background:#C2792A;}
.srcb.input b{background:#2E8B6F;}  .srcb.guide b{background:#6B6459;}
/* セクション単位のソースチップ（1画面に2母集団が同居する時は必須・要件書 §1-2(b)） */
.secsrc{display:inline-flex;align-items:center;gap:5px;border-radius:9px;padding:1px 9px;font-size:10.5px;font-weight:700;
 margin-left:8px;vertical-align:middle;white-space:nowrap;}
.secsrc.intage{background:rgba(62,107,168,.13);color:#2C4E7C;border:1px solid rgba(62,107,168,.35);}
.secsrc.cantera{background:rgba(194,121,42,.14);color:#8A5314;border:1px solid rgba(194,121,42,.4);}
.secsrc.input{background:rgba(46,139,111,.13);color:#1D6B53;border:1px solid rgba(46,139,111,.35);}
.secsrc.guide{background:rgba(107,100,89,.12);color:#4a453c;border:1px solid rgba(107,100,89,.3);}
/* 色帯・色枠つきセクション（.sec.cant/.intg/.inp の左ストライプ）は全廃（2026-08-22 西川指示）。
   出どころの区別はソースチップ（.secsrc）だけで示す。.sec.inp はクラスとして未保存ガードが参照するため残す */
/* 未確定バッジ（要件書 §4 ブロッカーを画面に出す） */
.wbadges{display:flex;flex-wrap:wrap;gap:6px;margin:0 0 10px;}
.wbadge{display:inline-block;background:#FDF3E2;border:1px dashed var(--warn);color:#8A5A12;border-radius:9px;
 padding:1px 10px;font-size:11px;font-weight:600;}
.wbadge.blk{background:#FBEAE7;border-color:var(--bad);color:#8F2A1E;}
/* 入力フォーム（✍️ 活動を記録） */
.frm{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:12px;margin:6px 0 10px;}
.frm.w2{grid-template-columns:repeat(auto-fit,minmax(300px,1fr));}
.fld{display:flex;flex-direction:column;gap:3px;min-width:0;}
.fld>label{font-size:11.5px;font-weight:700;color:var(--ink);}
.fld .hint{font-size:10.5px;color:var(--muted);line-height:1.5;}
.fld input,.fld select,.fld textarea{font-family:var(--font);font-size:13px;padding:7px 9px;border:1px solid var(--border);
 border-radius:8px;background:#fff;color:var(--ink);width:100%;}
.fld input:disabled,.fld select:disabled,.fld input[readonly]{background:#F2EFE8;color:var(--muted);}
.fld input:focus,.fld select:focus,.fld textarea:focus{outline:none;border-color:var(--shu);box-shadow:0 0 0 2px rgba(181,64,47,.18);}
.req{color:var(--shu);font-size:10px;margin-left:3px;}
.pills{display:flex;gap:6px;flex-wrap:wrap;align-items:center;}
.pill{border:1.5px solid var(--border);background:#fff;border-radius:16px;padding:4px 14px;font-size:12.5px;
 font-family:var(--font);font-weight:600;color:var(--ink);cursor:pointer;}
.pill:hover{border-color:var(--shu);color:var(--shu);}
.pill.on{background:var(--shu);border-color:var(--shu);color:#fff;}
.chk{display:inline-flex;align-items:center;gap:6px;font-size:13px;font-weight:600;cursor:pointer;}
.chk input{width:16px;height:16px;accent-color:var(--shu);}
.chk.off{color:var(--muted);}
.btnp{background:var(--shu);color:#fff;border:none;border-radius:9px;padding:9px 22px;font-size:13.5px;font-weight:700;
 font-family:var(--font);cursor:pointer;}
.btnp:hover{background:var(--shu-d);}
.btns{background:#fff;border:1px solid var(--border);border-radius:9px;padding:8px 16px;font-size:12.5px;
 font-family:var(--font);cursor:pointer;}
.btns:hover{border-color:var(--shu);color:var(--shu);}
.okmsg{background:#E2F2EC;border:1px solid var(--good);color:#1D6B53;border-radius:9px;padding:8px 14px;font-size:12.5px;font-weight:600;margin:8px 0;}
.ermsg{background:#FBEAE7;border:1px solid var(--bad);color:#8F2A1E;border-radius:9px;padding:8px 14px;font-size:12.5px;font-weight:600;margin:8px 0;}
.prog{height:9px;border-radius:5px;background:var(--paper2);overflow:hidden;min-width:80px;}
.prog i{display:block;height:100%;background:var(--shu);}
#toast{position:fixed;left:50%;transform:translateX(-50%);bottom:26px;background:rgba(35,32,28,.95);color:#fff;
 padding:9px 18px;border-radius:20px;font-size:12.5px;z-index:300;display:none;box-shadow:0 6px 20px rgba(0,0,0,.3);max-width:80vw;}
.mig{background:#FFF6E8;border:1px solid var(--warn);border-radius:10px;padding:9px 14px;font-size:12px;margin:0 0 10px;line-height:1.6;}
table.zt tr.tot td{background:#F3EFE6!important;font-weight:700;border-top:2px solid rgba(35,32,28,.14);}
table.zt tr.unalloc td{background:#FFF6E8!important;font-weight:700;color:#8A5A12;}
table.zt tr.chrow td{background:#F7F3EA!important;font-weight:700;cursor:pointer;}
/* トップバーの「最終データ」「期間バナー」はカンテラ日次のもの。📊/✍️ では出さない（画面のバッジが正） */
body[data-mode="goal"] .fresh,body[data-mode="goal"] .pbanner,
body[data-mode="ops"] .fresh,body[data-mode="ops"] .pbanner{display:none;}

/* ══ 2026-08-22 デザイン改修（JCCコクピット移植・朱系） ══ */
/* 最終データ: JCC .asofbox（白ピル＋🔄） */
.fresh{display:inline-flex;align-items:center;gap:7px;background:#fff;border:1px solid var(--border);
 border-radius:12px;padding:6px 14px;font-size:12px;color:var(--ink);white-space:nowrap;}
.fresh::before{content:'🔄';}
.fresh b{color:var(--ink);}
/* 設計メモ トグル（右上）: OFF が既定。ON の間だけ設計上の注記・未確定バッジを出す */
.memotgl{margin-left:auto;display:inline-flex;align-items:center;gap:6px;font-size:11.5px;font-weight:600;
 color:var(--muted);cursor:pointer;background:#fff;border:1px solid var(--border);border-radius:12px;
 padding:5px 12px;user-select:none;white-space:nowrap;}
.memotgl input{width:14px;height:14px;accent-color:var(--shu);margin:0;}
.memotgl:hover{border-color:var(--shu);color:var(--shu);}
body:not(.dmemo) .wbadges,body:not(.dmemo) .dmemo,body:not(.dmemo) .mig{display:none !important;}
body.dmemo .dmemo{color:#8A5A12;}
span.dmemo{display:inline;}
/* ✍️ 活動入力モードでは共通フィルタは使わない（フォーム内で選ぶ）→ サイドバーから消す */
body[data-mode="ops"] .fbox{display:none;}
/* 検索つきプルダウン（単一選択・全プルダウン共通の設計）。候補リストは .mmenu を共用 */
.ssel{position:relative;display:flex;align-items:center;border:1px solid var(--border);border-radius:8px;
 background:#fff;padding:0 9px 0 0;cursor:text;min-width:0;}
.ssel input{flex:1;border:none;outline:none;background:transparent;font-family:var(--font);font-size:13px;
 padding:7px 9px;color:var(--ink);min-width:0;}
.ssel .mcar{color:var(--muted);font-size:10px;flex-shrink:0;}
.ssel.open{border-color:var(--shu);box-shadow:0 0 0 2px rgba(181,64,47,.18);}
.ssel input::placeholder{color:#B4AC9E;}
.mmenu .opt .kstar{color:#C9962E;font-weight:700;}
.mmenu .ogrp{padding:6px 10px 2px;font-size:10.5px;font-weight:700;color:var(--muted);letter-spacing:.06em;}
/* 保存CTA: JCC準拠＝左下に常時追従。未変更=グレー／未保存あり=オレンジで脈打つ */
.savecta{position:fixed;left:266px;bottom:18px;z-index:60;border:none;border-radius:999px;
 background:#9AA4B4;color:#fff;font-family:var(--font);font-weight:700;font-size:14px;
 padding:12px 26px;cursor:pointer;box-shadow:0 4px 12px rgba(35,32,28,.18);white-space:nowrap;
 transition:background .2s, box-shadow .2s;}
body.dirty .savecta{background:#E8541F;box-shadow:0 8px 24px rgba(232,84,31,.55);
 animation:ctaPulse 1.15s ease-in-out infinite;}
body.dirty .savecta:hover{background:#CF4715;}
@keyframes ctaPulse{0%,100%{transform:scale(1);box-shadow:0 8px 24px rgba(232,84,31,.55);}
 50%{transform:scale(1.06);box-shadow:0 10px 30px rgba(232,84,31,.75);}}
@media (prefers-reduced-motion: reduce){body.dirty .savecta{animation:none;}}
.ctacount{position:fixed;left:266px;bottom:62px;z-index:60;background:#FBF0D4;color:#8A6D00;
 border:1px solid #E3CB6A;border-radius:999px;padding:3px 12px;font-size:11.5px;font-weight:700;
 box-shadow:0 4px 12px rgba(35,32,28,.14);display:none;}
body.dirty .ctacount{display:inline-block;}
@media(max-width:900px){.savecta,.ctacount{left:14px;}}

/* ══ ❄️ カンテラ凍結（2026-09-02: CANTERA API 利用不可・データは sale_date=2026-08-26 で凍結） ══ */
/* モードタブの凍結ピル */
.frz{display:inline-block;background:#C0392B;color:#fff;border-radius:9px;padding:0 8px;
 font-size:10px;font-weight:800;margin-left:7px;letter-spacing:.03em;vertical-align:1px;}
#modeTabs button.on .frz{background:#fff;color:#C0392B;}
/* カンテラ配下のサイドバー項目: 取り消し線＋グレーアウト（クリックは可のまま） */
.sb2 button.nv.frozen{color:rgba(237,231,219,.38);}
.sb2 button.nv.frozen span:nth-of-type(2){text-decoration:line-through;text-decoration-thickness:1.5px;}
.sb2 button.nv.frozen.on{background:rgba(181,64,47,.5);color:rgba(255,255,255,.85);}
/* カンテラ各画面の上部凍結バナー */
.frzbanner{display:flex;gap:10px;align-items:flex-start;background:#FBEAE7;border:1.5px solid var(--bad);
 color:#8F2A1E;border-radius:12px;padding:10px 16px;margin:0 0 12px;font-size:13px;font-weight:600;line-height:1.7;}
.frzbanner .fico{font-size:1.3rem;line-height:1.2;}
.frzbanner a{color:var(--shu);font-weight:700;}