  :root { --bg:#ffffff; --panel:#ffffff; --border:#d8dee6; --text:#222; --sub:#66707a;
          --accent:#0077b6; --up:#d32f2f; --down:#1b8a5a; --warn:#e6a100;
          --row:#f6f8fa; --row-sel:#e7f3fb; --now:#fff8e1; --grid:#e8ecf0; }
  * { box-sizing:border-box; margin:0; }
  html { color-scheme: light; }
  body { background:var(--bg); color:var(--text); font-family:-apple-system,"Hiragino Sans","Noto Sans JP",Meiryo,sans-serif; font-size:14px; }
  header { display:flex; align-items:center; gap:8px; padding:10px 14px; border-top:3px solid var(--accent);
           border-bottom:1px solid var(--border); flex-wrap:wrap; background:var(--panel); }
  header h1 { font-size:16px; margin-right:8px; }
  nav button { background:none; border:none; color:var(--sub); padding:8px 10px; cursor:pointer; font-size:14px; border-bottom:2px solid transparent; }
  nav button.active { color:var(--accent); border-bottom-color:var(--accent); font-weight:600; }
  main { padding:8px 12px; }
  .panel { background:var(--panel); padding:12px; margin-bottom:12px; }
  .a-chart, .a-fin { border:1px solid var(--border); }
  .a-list.panel { border:none; padding-left:0; padding-right:0; }
  table { width:100%; border-collapse:collapse; font-size:13px; font-variant-numeric:tabular-nums; }
  th,td { padding:6px 8px; text-align:right; border-bottom:1px solid var(--border); white-space:nowrap; }
  th { color:var(--sub); font-weight:normal; position:sticky; top:0; background:var(--panel); }
  td:first-child, th:first-child, td.l, th.l { text-align:left; }
  .pos { color:var(--up); } .neg { color:var(--down); }
  .badge { display:inline-block; padding:1px 6px; border-radius:4px; font-size:11px; margin-left:4px; }
  .badge.up { background:var(--up); color:#fff; }
  .badge.dn { background:var(--down); color:#fff; }
  .badge.st1 { background:#5b6470; } .badge.st2 { background:#2e8b57; }
  .badge.st3 { background:#b8860b; } .badge.st4 { background:#a04050; }
  .cal { display:grid; grid-template-columns:repeat(7,1fr); gap:2px; }
  .cal .h { text-align:center; color:var(--sub); font-size:11px; padding:2px 0; }
  .cal .d { min-height:36px; border:1px solid transparent; border-radius:6px; padding:3px 2px 10px; cursor:pointer; position:relative; text-align:center; }
  .cal .d:hover { border-color:var(--accent); }
  .cal .d.today { background:var(--now); }
  .cal .d.sel { border-color:var(--accent); background:var(--row-sel); }
  .cal .d.today.sel { background:var(--row-sel); border-bottom:2px solid var(--warn); }
  .cal .d .n { font-size:12px; color:var(--text); }
  .cal .d.sel .n { font-weight:600; color:var(--accent); }
  .cal .d .cnt { position:absolute; right:2px; bottom:1px; font-size:9px; line-height:1; color:var(--accent); }
  .cal .d .cnt.sched { color:var(--sub); }
  .cal .d .cnt.pend { left:2px; right:auto; color:var(--warn); }
  .row { display:flex; gap:8px; align-items:center; flex-wrap:wrap; margin-bottom:8px; }
  input,select { background:var(--panel); color:var(--text); border:1px solid var(--border); border-radius:6px; padding:6px 8px; font-size:14px; }
  button.btn { background:var(--accent); border:none; color:#fff; border-radius:6px; padding:6px 12px; cursor:pointer; }
  #chart, #relchart { width:100%; }
  .evt-toggles { display:flex; gap:14px; flex-wrap:wrap; align-items:center;
                 margin-top:8px; padding-top:8px; border-top:1px solid var(--border);
                 font-size:13px; color:var(--sub); }
  .evt-toggles .evt-cap { font-size:12px; }
  .evt-toggles .evt-label { display:inline-flex; align-items:center; gap:6px; cursor:pointer; user-select:none; }
  .evt-toggles .swatch { width:8px; height:8px; border-radius:50%; flex-shrink:0; }
  .tbl-wrap { overflow-x:auto; }
  .clicky { cursor:pointer; color:var(--accent); }
  h3 { font-size:14px; color:var(--sub); margin:8px 0; }
  .suggest { position:absolute; background:var(--panel); border:1px solid var(--border); border-radius:6px; z-index:10; max-height:240px; overflow:auto; }
  .suggest div { padding:6px 10px; cursor:pointer; }
  .suggest div:hover { background:var(--row); }
  #monthly-top .row { z-index:2; }
  #monthly-suggest { left:0; top:100%; }
  .a-list > .row { z-index:5; }  /* 一覧の sticky 見出し (z-index:2) より上に候補を出す */
  #earn-suggest { left:0; top:100%; }
  .mchip .n { margin-left:4px; opacity:.75; }
  .sub { color:var(--sub); }
  .dim { opacity:.4; }

  .egrid { display:grid; gap:12px; grid-template-columns:minmax(0,1fr); }
  .egrid > * { min-width:0; }
  /* 一覧は必ずスクロール枠に収める (ピーク日は1000件近くあり、下段の詳細に辿り着けなくなる) */
  .a-list .scroll { max-height:50vh; overflow:auto; }
  @media (min-width:1100px){
    .egrid { grid-template-columns:repeat(2,minmax(0,1fr)); align-items:start; }
    .a-list { grid-column:span 2; }
    .a-chart { grid-column:span 1; } .a-fin { grid-column:span 1; }
    .a-list .scroll { max-height:46vh; }
  }
  /* 決算表 (table.fin) と同じ見た目: 縦罫なし・横罫だけ・縞・上揃え・バッジは値の下段 */
  #earn-tbl { width:100%; border-collapse:separate; border-spacing:0; }
  #earn-tbl th { font-size:11px; letter-spacing:.02em; padding:6px 8px; }
  #earn-tbl td { padding:7px 8px; vertical-align:top; background:var(--panel); }
  #earn-tbl td.num { font-size:13px; font-weight:500; }
  #earn-tbl th.l { text-align:left; }
  #earn-tbl thead tr:first-child th[colspan] { text-align:center; }
  /* 2段目の先頭 (3か月の売上) が th:first-child の左寄せを拾わないよう、指標の見出しは右に揃える */
  #earn-tbl thead tr + tr th { text-align:right; }
  #earn-tbl td.name, #earn-tbl th.name { width:1%; white-space:nowrap; }
  #earn-tbl td.fy, #earn-tbl th.fy { width:1%; }
  #earn-tbl .g { display:block; font-size:11px; font-weight:400; line-height:1.35; min-height:1.35em; }
  #earn-tbl .g .qb + .qb { margin-left:3px; }
  #earn-tbl .loss { color:var(--up); }
  /* 時刻・決算期・銘柄は横スクロールで残す。left は pinCols が実測で入れる */
  #earn-tbl .pin0, #earn-tbl .pin1, #earn-tbl .pin2 { position:sticky; z-index:1; }
  #earn-tbl .pin0 { left:var(--pin0, 0); }
  #earn-tbl .pin1 { left:var(--pin1, 0); }
  #earn-tbl .pin2 { left:var(--pin2, 0); box-shadow:inset -1px 0 0 var(--border); }
  .phead { display:flex; align-items:center; gap:8px; justify-content:space-between; margin-bottom:8px; }
  .phead h3 { margin:0; }
  .phead-right { display:flex; align-items:center; gap:8px; flex-shrink:0; }
  .cal-wrap { position:relative; }
  .cal-btn { background:transparent; border:1px solid var(--border); color:var(--sub); border-radius:6px; width:32px; height:32px; padding:0; cursor:pointer; display:inline-flex; align-items:center; justify-content:center; }
  .cal-btn:hover, .cal-btn[aria-expanded="true"] { border-color:var(--accent); color:var(--accent); }
  .cal-btn svg { width:16px; height:16px; }
  .cal-pop { position:absolute; top:calc(100% + 6px); right:0; z-index:30; width:min(300px, calc(100vw - 24px)); background:var(--panel); border:1px solid var(--border); padding:10px; }
  .cal-pop .row { margin-bottom:6px; justify-content:space-between; }
  .cal-pop .btn { background:transparent; color:var(--text); border:1px solid var(--border); padding:2px 8px; }
  #cal-backdrop { position:fixed; inset:0; z-index:20; }
  summary { cursor:pointer; color:var(--sub); }
  td.num { font-variant-numeric:tabular-nums; }
  .grp { border-left:1px solid var(--border); }
  #earn-list:focus { outline:none; }
  /* 2段ヘッダは thead ごと固定。th 単体 + top:29px だと段の実高さとズレて本文が透ける */
  #earn-tbl thead { position:sticky; top:0; z-index:2; }
  #earn-tbl thead th { position:static; top:auto; z-index:auto; background:var(--panel); }
  #earn-tbl tbody tr { cursor:pointer; }
  #earn-tbl tbody tr:nth-child(even) td { background:var(--row); }
  #earn-tbl tbody tr:hover td { background:var(--row-sel); }
  #earn-tbl tbody tr.sel td { background:var(--row-sel); }
  #earn-tbl tbody tr.sel td:first-child { box-shadow:inset 3px 0 0 var(--accent); }
  table.fin td:first-child, table.fin th:first-child { position:sticky; left:0; z-index:2; background:var(--panel); width:1%; }
  table.fin { font-variant-numeric:tabular-nums; }
  table.fin th { font-size:11px; letter-spacing:.02em; }
  table.fin td { padding:7px 8px; vertical-align:top; }
  table.fin td.num { font-size:13px; font-weight:500; }
  table.fin .opm { font-size:11px; font-weight:400; color:var(--sub); }
  table.fin .opm.loss { color:var(--up); }
  table.fin .g { display:block; font-size:11px; font-weight:400; line-height:1.35; min-height:1.35em; }
  table.fin tbody tr:nth-child(even) td { background:var(--row); }
  table.fin tbody tr:hover td { background:var(--row-sel); }
  table.fin tr.now td { background:var(--now) !important; color:var(--text); }
  table.fin tr.now td:first-child { font-weight:600; background:var(--now) !important; box-shadow:inset 3px 0 0 var(--warn); }
  table.fin tr.fc td { background:#f0f7fc !important; }
  table.fin tr.prevfy td { opacity:.78; }
  table.fin tr.sep td { border-top:1px solid var(--border); }
  table.fin .loss { color:var(--up); }
  #monthly-groups, #earn-groups { display:flex; flex-wrap:wrap; gap:6px; margin:0 0 10px; }
  .mchip { background:transparent; border:1px solid var(--border); color:var(--sub); border-radius:999px; padding:4px 12px; cursor:pointer; font-size:13px; }
  .mchip.on { background:var(--accent); color:#fff; border-color:var(--accent); }
  #monthly-detail { min-height:calc(100vh - 52px); max-width:1080px; margin:0 auto; }
  #monthly-tbl {
    width:max-content;
    margin-inline:auto;
    border-collapse:collapse;
    background:#fff;
  }
  #monthly-tbl th,
  #monthly-tbl td {
    border:1px solid var(--border);
    background:#fff;
    padding:6px 8px;
  }
  #monthly-tbl th:first-child,
  #monthly-tbl td.name,
  #monthly-tbl td.mkt,
  #monthly-tbl td.sector {
    white-space:nowrap;
    width:1%;
  }
  #monthly-tbl td.name { cursor:pointer; color:var(--accent); }
  #monthly-tbl td.name:hover { text-decoration:underline; }
  #monthly-tbl td.mkt::before {
    content:''; display:inline-block; width:.55em; height:.55em;
    border-radius:2px; margin-right:.35em; vertical-align:middle;
  }
  #monthly-tbl td.mkt-p::before { background:#2563eb; }
  #monthly-tbl td.mkt-s::before { background:#9ca3af; }
  #monthly-tbl td.mkt-g::before { background:#16a34a; }
  .badge.new { background:var(--warn); color:#fff; margin-left:6px; }
  #monthly-back { background:transparent; border:1px solid var(--border); color:var(--text); border-radius:6px; padding:4px 10px; cursor:pointer; font-size:13px; }
  #monthly-chart { width:100%; margin:0 0 16px; }
  #monthly-chart svg { width:100%; height:auto; display:block; font-family:inherit; overflow:visible; }
  #monthly-chart .monthly-year-chart { margin:0 0 10px; min-height:140px; }
  #monthly-chart .monthly-year-chart:last-child { margin-bottom:0; }
  #monthly-chart .monthly-year-lab {
    display:flex; align-items:center; gap:6px;
    font-size:12px; font-weight:600;
    margin:0 0 2px; color:var(--text);
  }
  #monthly-chart .monthly-year-swatch {
    display:inline-block; width:8px; height:8px; flex-shrink:0;
  }
  table.monthly {
    font-size:14px;
    font-variant-numeric:tabular-nums;
    table-layout:fixed;
    width:max-content;
    min-width:100%;
    margin-inline:auto;
    background:#fff;
    border-collapse:collapse;
  }
  table.monthly col.monthly-name { width:16em; min-width:16em; }
  table.monthly col.monthly-m { width: var(--monthly-m-w); }
  table.monthly th,
  table.monthly td {
    border:1px solid var(--border);
    background:#fff;
  }
  table.monthly thead th:not(:first-child),
  table.monthly td.num,
  table.monthly th:last-child,
  table.monthly td:last-child {
    width: var(--monthly-m-w);
    position:static; left:auto; right:auto;
  }
  table.monthly thead th:first-child,
  table.monthly td:first-child {
    min-width:16em; width:16em;
    position:sticky; left:0; z-index:2;
    background:var(--panel);
  }
  table.monthly td:first-child { font-weight:700; }
  table.monthly.monthly-gated {
    --stub-ch: 5em;
    --stub-sc: 4.25em;
    --stub-leaf: 9.5em;
    min-width: 0;
  }
  table.monthly.monthly-gated col.monthly-stub-ch { width: var(--stub-ch); }
  table.monthly.monthly-gated col.monthly-stub-sc { width: var(--stub-sc); }
  table.monthly.monthly-gated col.monthly-stub-leaf { width: var(--stub-leaf); }
  table.monthly.monthly-gated td:first-child {
    min-width:0; width:auto;
  }
  table.monthly.monthly-gated td.monthly-stub {
    position:sticky; z-index:2; background:var(--panel);
    white-space:normal; overflow:visible;
    padding-left:6px; padding-right:6px;
    text-align:left; vertical-align:top; font-weight:700;
  }
  table.monthly.monthly-gated td.monthly-stub-ch { left:0; }
  table.monthly.monthly-gated td.monthly-stub-sc { left:var(--stub-ch); }
  table.monthly.monthly-gated td.monthly-stub-leaf { left:calc(var(--stub-ch) + var(--stub-sc)); }
  table.monthly.monthly-gated td.monthly-stub-leaf.monthly-bd {
    padding-left:1.25em;
    font-size:12px;
    font-weight:600;
  }
  table.monthly.monthly-gated td.monthly-stub-leaf.monthly-bd-2 {
    padding-left:2.25em;
  }
  table.monthly thead th.l,
  table.monthly thead th:first-child,
  table.monthly thead th.year {
    z-index:3;
    background:var(--up);
    color:#fff;
    font-weight:700;
    font-size:13px;
  }
  table.monthly tbody tr:nth-child(even) td,
  table.monthly tbody tr:nth-child(even) td:first-child {
    background:#fff;
  }
  table.monthly tbody tr:hover td,
  table.monthly tbody tr:hover td:first-child,
  table.monthly tbody tr:hover td.monthly-stub {
    background:var(--row-sel);
  }
  table.monthly tbody tr[data-series].on td,
  table.monthly tbody tr[data-series].on td:first-child,
  table.monthly tbody tr[data-series].on td.monthly-stub {
    background:var(--row-sel);
  }
  table.monthly tbody tr.monthly-sec td {
    text-align:left; cursor:default;
  }
  table.monthly tbody tr.monthly-sec td.monthly-sec-label,
  table.monthly tbody tr.monthly-sec:hover td.monthly-sec-label {
    background:#f0f3f6; color:#111827; font-weight:700; font-size:12px;
    padding:7px 10px;
    position:sticky; left:0; z-index:2;
  }
  #monthly-table-wrap { display:flex; flex-direction:column; gap:1.75rem; overflow-x:auto; min-width:0; background:#fff; }
  table.monthly thead th { top:auto; }
  table.monthly thead th:not(:first-child) {
    background:#eceff2;
    font-weight:700;
    text-align:center;
  }
  table.monthly tbody tr.monthly-sec td.monthly-sec-month,
  table.monthly tbody tr.monthly-sec:hover td.monthly-sec-month {
    background:#eceff2;
    color:var(--sub);
    font-weight:700;
    font-size:11px;
    letter-spacing:.02em;
    text-align:center;
  }
  #monthly-series { max-width:100%; margin:0 0 8px; }
  .monthly-layout-debug {
    display:flex; align-items:center; gap:6px; flex-wrap:wrap;
    margin:0 0 8px; font-size:12px; color:#666;
  }
  .monthly-layout-debug[hidden] { display:none; }
  .monthly-layout-debug select { font-size:12px; max-width:100%; }
  table.monthly tbody tr[data-series] { cursor:pointer; }
  table.monthly-tl {
    width:max-content; table-layout:fixed; border-collapse:separate; border-spacing:0;
    font-size:13px; font-variant-numeric:tabular-nums; background:#fff;
  }
  table.monthly-tl th,
  table.monthly-tl td { border:0 solid var(--border); border-width:0 1px 1px 0; padding:5px 6px; }
  table.monthly-tl thead th { position:static; text-align:center; font-weight:700; color:var(--text); background:#eceff2; width:var(--monthly-m-w); min-width:var(--monthly-m-w); }
  table.monthly-tl thead tr:first-child th { border-top-width:1px; }
  table.monthly-tl thead th .tl-hy { display:block; font-size:10px; font-weight:400; color:var(--sub); line-height:1.2; }
  table.monthly-tl .tl-corner,
  table.monthly-tl td.tl-name {
    position:sticky; left:0; z-index:2; background:#fff; text-align:left; font-weight:700;
    width:18em; min-width:18em; max-width:18em; white-space:normal; border-left-width:1px;
  }
  table.monthly-tl .tl-corner { z-index:3; vertical-align:bottom; background:#eceff2; }
  table.monthly-tl .tl-yb { border-left:2px solid #9aa5b1; }
  table.monthly-tl tbody tr[data-series] { cursor:pointer; }
  table.monthly-tl tbody tr[data-series]:hover td.tl-name,
  table.monthly-tl tbody tr[data-series].on td.tl-name { background:var(--row-sel); }
  table.monthly-tl tbody tr[data-series].on td { box-shadow:inset 0 2px 0 var(--accent), inset 0 -2px 0 var(--accent); }
  table.monthly-tl tr.tl-sec { cursor:pointer; }
  table.monthly-tl tr.tl-sec td { background:#f0f3f6; font-size:12px; padding:7px 10px; }
  table.monthly-tl tr.tl-sec:hover td { background:#e4e9ee; }
  table.monthly-tl .tl-cnt { margin-left:6px; font-weight:400; color:var(--sub); }
  table.monthly-tl .tl-tw { display:inline-block; width:1.1em; color:var(--sub); }
  table.monthly-tl td.tl-tog { cursor:pointer; }
  /* 内数の節（うち商品売上高）。店計・法人・本社等と足し合わせる関係ではないので薄くする */
  table.monthly-tl tr.tl-part td.tl-name { color:var(--sub); font-weight:400; }
  table.monthly-tl td.num[data-m] { cursor:pointer; }
  .monthly-pop {
    position:absolute; z-index:50; background:#fff; border:1px solid var(--border); border-radius:8px;
    box-shadow:0 4px 16px rgba(0,0,0,.14); padding:6px 8px 8px; max-width:calc(100vw - 16px);
  }
  .monthly-pop .mpop-head { display:flex; align-items:flex-start; gap:6px; margin:0 0 4px; font-weight:700; font-size:12px; max-width:14em; }
  .monthly-pop .mpop-m { color:var(--sub); white-space:nowrap; }
  .monthly-pop .mpop-x { margin-left:auto; background:none; border:none; font-size:18px; line-height:1; color:var(--sub); cursor:pointer; padding:0 2px; }
  .monthly-pop table { width:auto; font-size:13px; margin-left:auto; }
  .monthly-pop th { position:static; text-align:right; font-size:11px; font-weight:700; padding:1px 6px; }
  .monthly-pop td { padding:3px 6px; border-bottom:1px solid var(--grid); }
  .monthly-pop td.yr { font-weight:700; color:var(--sub); white-space:nowrap; }
  .monthly-pop .sw { display:inline-block; width:7px; height:7px; margin-right:4px; vertical-align:middle; }
  table.monthly-tl .tl-sub { display:block; font-size:11px; color:var(--sub); line-height:1.2; }
  header a.brand { font-size:16px; font-weight:700; color:var(--text); text-decoration:none; margin-right:8px; }
  a#monthly-back { display:inline-block; background:var(--accent); border:none; color:#fff; border-radius:6px; padding:6px 12px; cursor:pointer; text-decoration:none; font-size:14px; }
  .site-foot { padding:16px 14px 24px; font-size:12px; color:var(--sub); border-top:1px solid var(--border); line-height:1.6; }
  body.public-monthly #monthly-tbl td.name a { color:inherit; text-decoration:none; }
  body.public-monthly #monthly-tbl td.name a:hover { color:var(--accent); }
  body.public-monthly #tab-monthly h1 { font-size:16px; color:var(--text); margin:0; }
  body.public-monthly #monthly-detail .phead { display:flex; align-items:center; gap:10px; flex-wrap:wrap; }
  .fin-tabs { display:flex; border:1px solid var(--border); border-radius:8px; overflow:hidden; }
  .ftab { background:transparent; border:none; color:var(--sub); padding:5px 14px; cursor:pointer; font-size:13px; }
  .ftab.on { background:var(--accent); color:#fff; }
  .qb { display:inline-block; font-size:10px; padding:0 5px; border-radius:3px; background:var(--row); color:var(--sub); vertical-align:middle; }
  table.fin .g .qb { margin-left:0; }
  .qb-1Q { color:#c48a00; }
  .qb-2Q { color:#1b8a5a; }
  .qb-3Q { color:#0077b6; }
  .qb-4Q { color:#8e4ec6; }
  .qb-h { color:#0e7490; }
  .qb-fy { color:#1d4ed8; }
  .qb-prev { color:var(--sub); }
  .qb-rev { color:#fff; background:var(--warn); }
  .a-fin .tbl-wrap { max-height:min(52vh, 560px); }

  @media (max-width:640px){
    body{font-size:13px} th,td{padding:4px 5px; font-size:12px} .cal .d{min-height:34px}
    .evt-toggles .evt-label { min-height:32px; }
    #monthly-chart .monthly-year-chart { min-height:148px; }
    table.monthly th,
    table.monthly td { font-size:13px; }
    table.monthly.monthly-gated td.monthly-stub-leaf.monthly-bd { font-size:12px; }
    table.monthly col.monthly-name { width:8em; min-width:8em; }
    table.monthly thead th:first-child,
    table.monthly td:first-child {
      min-width:8em; width:8em;
      position:static; left:auto; right:auto; z-index:auto;
      white-space:normal;
      overflow:hidden;
      background:#fff;
    }
    table.monthly thead th:first-child,
    table.monthly thead th.year {
      background:var(--up);
      color:#fff;
    }
    table.monthly tbody tr:nth-child(even) td,
    table.monthly tbody tr:nth-child(even) td:first-child { background:#fff; }
    table.monthly tbody tr:hover td,
    table.monthly tbody tr:hover td:first-child,
    table.monthly tbody tr:hover td.monthly-stub { background:var(--row-sel); }
    table.monthly tbody tr[data-series].on td,
    table.monthly tbody tr[data-series].on td:first-child,
    table.monthly tbody tr[data-series].on td.monthly-stub { background:var(--row-sel); }
    table.monthly tbody tr.monthly-sec td.monthly-sec-label { position:static; background:#f0f3f6; }
    table.monthly.monthly-gated { --stub-ch:2em; --stub-sc:4.25em; --stub-leaf:8.5em; }
    table.monthly-tl .tl-corner,
    table.monthly-tl td.tl-name { width:12em; min-width:12em; max-width:12em; font-size:12px; }
        table.monthly.monthly-gated thead th:first-child { min-width:14.75em; width:14.75em; }
    table.monthly.monthly-gated td.monthly-stub,
    table.monthly.monthly-gated td.monthly-stub-ch,
    table.monthly.monthly-gated td.monthly-stub-sc,
    table.monthly.monthly-gated td.monthly-stub-leaf {
      position:static; left:auto; right:auto; z-index:auto;
      min-width:0; width:auto; white-space:normal; overflow:visible;
    }
    table.monthly.monthly-gated td.monthly-stub-sc { white-space:nowrap; }
    table.monthly thead th:not(:first-child),
    table.monthly td.num,
    table.monthly th:last-child,
    table.monthly td:last-child {
      position:static; left:auto; right:auto;
    }
    /* 決算集中日は 30 業種を超える。折り返さず横に流して一覧を押し下げない */
    #earn-groups { flex-wrap:nowrap; overflow-x:auto; }
    #earn-groups .mchip { flex-shrink:0; }
  }

  /* サプライ (docs/DESIGN_supply.md) */
  #supply-q { flex:1 1 200px; min-width:0; max-width:320px; }
  .supply-btn { background:var(--panel); border:1px solid var(--border); color:var(--text); border-radius:6px; padding:6px 10px; cursor:pointer; font-size:13px; }
  .supply-tg { display:inline-flex; align-items:center; gap:4px; font-size:13px; }
  .supply-legend { display:inline-flex; align-items:center; gap:4px; font-size:12px; }
  .supply-legend i, .supply-chip i { display:inline-block; width:10px; height:10px; border-radius:2px; border:1.5px solid; }
  .supply-legend i:not(:first-child) { margin-left:8px; }
  .k-raw { --k-fill:#fdf1de; --k-line:#b37314; }
  .k-mid { --k-fill:#e3f0f4; --k-line:#2f7489; }
  .k-prod { --k-fill:#e6f2e0; --k-line:#4a8a37; }
  .supply-legend i, .supply-chip i { background:var(--k-fill); border-color:var(--k-line); }
  .supply-grid { display:grid; grid-template-columns:1fr; gap:12px; }
  @media (min-width:900px){ .supply-grid { grid-template-columns:minmax(0,1fr) 300px; } }
  #supply-map { height:calc(100vh - 150px); min-height:360px; border:1px solid var(--border); position:relative; min-width:0; }
  #supply-msg { position:absolute; left:10px; top:8px; font-size:13px; }
  #supply-panel h2 { font-size:16px; display:flex; align-items:center; gap:6px; flex-wrap:wrap; }
  #supply-panel h3 { font-size:12px; margin:12px 0 4px; }
  .supply-meta { font-size:12px; margin-top:2px; font-variant-numeric:tabular-nums; }
  .supply-note { font-size:13px; margin-top:6px; }
  .supply-kind { font-size:11px; font-weight:600; padding:1px 6px; border-radius:3px; background:var(--k-fill); color:var(--k-line); }
  .supply-chips { display:flex; flex-wrap:wrap; gap:4px; }
  .supply-chip { display:inline-flex; align-items:center; gap:5px; font-size:12px; border:1px solid var(--border); border-radius:999px; padding:2px 9px; background:var(--panel); color:var(--text); cursor:pointer; }
  .supply-chip:hover { border-color:var(--accent); }
  @media (max-width:640px){
    #supply-map { height:60vh; }
    .supply-chip { padding:5px 10px; font-size:13px; }
  }
  .supply-unit { font-size:11px; margin-bottom:2px; }
  #supply-chart { width:100%; height:180px; }
  .supply-tbl { width:auto; margin-top:6px; font-size:12px; }
  .supply-tbl th, .supply-tbl td { padding:3px 6px; }
  .supply-tbl i { display:inline-block; width:8px; height:8px; border-radius:50%; margin-right:5px; }
  .supply-rev { font-size:10px; color:var(--warn); margin-right:4px; }
  .supply-row { cursor:pointer; }
  .supply-row:hover td { background:var(--row); }
  .supply-row.sel td { background:var(--row-sel); }
  .supply-legend-v { display:flex; flex-wrap:wrap; align-content:flex-start; gap:2px 10px; font-size:11px; min-height:34px; margin-bottom:2px; }
  .supply-chart-wrap { position:relative; }
  #supply-tip { position:absolute; z-index:3; pointer-events:none; background:var(--panel); border:1px solid var(--border); border-radius:6px;
                padding:4px 8px; font-size:11px; line-height:1.5; font-variant-numeric:tabular-nums; white-space:nowrap; box-shadow:0 1px 4px rgba(0,0,0,.12); }
  #supply-tip b { display:block; font-weight:600; }
  #supply-tip i { display:inline-block; width:8px; height:8px; border-radius:50%; margin-right:4px; }
  #supply-tip span { margin-left:10px; float:right; }
  .supply-legend-v i { display:inline-block; width:8px; height:8px; border-radius:50%; margin-right:4px; }
  .supply-hint { font-size:11px; margin-top:4px; }
  .k-co { --k-fill:#eef1f4; --k-line:#4d5763; }
  .supply-chip.unverified { border-style:dashed; }
  .supply-code { font-size:11px; color:var(--sub); font-variant-numeric:tabular-nums; }
  .supply-chip .sub { font-size:11px; }
  .supply-share-body { display:flex; flex-direction:column; align-items:flex-start; }
  .supply-donut { width:128px; height:128px; margin-top:4px; }
  .supply-donut path { stroke:#fff; stroke-width:2; cursor:pointer; }
  .supply-donut .t1 { font-size:13px; font-weight:600; fill:var(--text); }
  .supply-donut .t2 { font-size:9px; fill:var(--sub); }
  .supply-share-tbl td:nth-child(n+2), .supply-share-tbl th:nth-child(n+2) { text-align:right; font-variant-numeric:tabular-nums; }
  .supply-share-tbl td.l { white-space:nowrap; }
  .supply-src { font-size:11px; margin-top:4px; }
  .supply-share .supply-tg { font-size:12px; margin-top:2px; }
