/* ============================================================
   しばまる決算マップ 画面モック v1 (2026-07-17)
   - 表示データはすべてダミー(実数値ではない)
   - データ契約ドラフト = <script> 冒頭の DATA オブジェクト
     (実装時は R2 上の JSON がこの形を配る想定)
   - ページ = ブロックの合成(濃淡3層は出すブロックの差)
   - v1: 銘柄一覧ページ / 開示詳細ページ / 複数業界カレンダー /
         チェーン→カレンダー遷移 / 日付は西暦込み
   ============================================================ */
:root {
  color-scheme: dark;
  --paper: #0f1115;         /* ページ地(ダーク既定・青みのニュートラル) */
  --surface: #171a21;       /* カード面 */
  --surface-2: #1f242e;     /* 淡い面(チップ・行ホバー) */
  --ink: #e8eaf0;
  --ink-2: #a8adbb;
  --ink-3: #6d7382;
  --line: #262b36;
  --hairline: rgba(232,234,240,.08);
  --accent: #9085e9;        /* 検証済パレット violet(ダーク) */
  --accent-ink: #a9aef8;
  --accent-bg: #262a52;
  --chart-surface: #14171d;
  --grid: #232833;
  --axis: #333947;
  --s1: #3987e5;            /* 系列1: 売上 */
  --s2: #199e70;            /* 系列2: 営業利益 */
  --up-ink: #f27a76;        /* 上方(国内慣行=暖色) */
  --up-bg: #3d1f22;
  --down-ink: #6ea8f0;      /* 下方(寒色) */
  --down-bg: #1a2c47;
  --shadow: none;
}
@media (prefers-color-scheme: light) {
  :root:where(:not([data-theme="dark"])) {
    color-scheme: light;
    --paper: #f5f6f8; --surface: #ffffff; --surface-2: #eef0f4;
    --ink: #16181d; --ink-2: #4c515c; --ink-3: #7d8290;
    --line: #e2e5ea; --hairline: rgba(22,24,29,.08);
    --accent: #4a3aa7; --accent-ink: #4a3aa7; --accent-bg: #e7e4f8;
    --chart-surface: #fcfcfd; --grid: #e4e6eb; --axis: #c6c9d2;
    --s1: #2a78d6; --s2: #1baf7a;
    --up-ink: #b32c2b; --up-bg: #f9e3e2; --down-ink: #1c5cab; --down-bg: #e0ebf9;
    --shadow: 0 1px 2px rgba(22,24,29,.05), 0 4px 14px rgba(22,24,29,.06);
  }
}
:root[data-theme="light"] {
  color-scheme: light;
  --paper: #f5f6f8; --surface: #ffffff; --surface-2: #eef0f4;
  --ink: #16181d; --ink-2: #4c515c; --ink-3: #7d8290;
  --line: #e2e5ea; --hairline: rgba(22,24,29,.08);
  --accent: #4a3aa7; --accent-ink: #4a3aa7; --accent-bg: #e7e4f8;
  --chart-surface: #fcfcfd; --grid: #e4e6eb; --axis: #c6c9d2;
  --s1: #2a78d6; --s2: #1baf7a;
  --up-ink: #b32c2b; --up-bg: #f9e3e2; --down-ink: #1c5cab; --down-bg: #e0ebf9;
  --shadow: 0 1px 2px rgba(22,24,29,.05), 0 4px 14px rgba(22,24,29,.06);
}
:root[data-theme="dark"] {
  color-scheme: dark;
  --paper: #0f1115; --surface: #171a21; --surface-2: #1f242e;
  --ink: #e8eaf0; --ink-2: #a8adbb; --ink-3: #6d7382;
  --line: #262b36; --hairline: rgba(232,234,240,.08);
  --accent: #9085e9; --accent-ink: #a9aef8; --accent-bg: #262a52;
  --chart-surface: #14171d; --grid: #232833; --axis: #333947;
  --s1: #3987e5; --s2: #199e70;
  --up-ink: #f27a76; --up-bg: #3d1f22; --down-ink: #6ea8f0; --down-bg: #1a2c47;
  --shadow: none;
}

* { box-sizing: border-box; }
html, body { margin: 0; padding: 0; }
body {
  background: var(--paper); color: var(--ink);
  position: relative;
  font-family: "Hiragino Sans", "Yu Gothic UI", "Noto Sans JP", system-ui, -apple-system, sans-serif;
  font-size: 14px; line-height: 1.6;
  -webkit-font-smoothing: antialiased;
}
a { color: var(--accent-ink); text-decoration: none; }
a:hover { text-decoration: underline; }
body::before {
  content: ""; position: fixed; inset: 0; z-index: -1; pointer-events: none;
  background:
    radial-gradient(640px 420px at 6% -8%, color-mix(in srgb, var(--accent) 13%, transparent), transparent 70%),
    radial-gradient(760px 520px at 108% 6%, color-mix(in srgb, var(--s1) 9%, transparent), transparent 70%);
}
::-webkit-scrollbar { height: 10px; width: 10px; }
::-webkit-scrollbar-thumb { background: var(--line); border-radius: 6px; }
::-webkit-scrollbar-track { background: transparent; }
button { font: inherit; }

/* ---- ヘッダー(ハンバーガー+ロゴタイプ) ---- */
.site-head {
  position: sticky; top: 0; z-index: 30;
  background: color-mix(in srgb, var(--paper) 86%, transparent);
  backdrop-filter: blur(10px);
  border-bottom: 1px solid var(--line);
}
.site-head .row {
  max-width: 1100px; margin: 0 auto; padding: 12px 20px;
  display: flex; align-items: center; gap: 14px; flex-wrap: wrap;
}
.menu-btn {
  width: 38px; height: 38px; border: 1px solid var(--line); border-radius: 10px;
  background: var(--surface); cursor: pointer; display: flex; flex-direction: column;
  align-items: center; justify-content: center; gap: 4px; flex: none;
  transition: background .15s;
}
.menu-btn:hover { background: var(--surface-2); }
.menu-btn:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
.menu-btn span { display: block; width: 16px; height: 2px; border-radius: 2px; background: var(--ink); transition: transform .2s, opacity .2s; }
.menu-btn[aria-expanded="true"] span:nth-child(1) { transform: translateY(6px) rotate(45deg); }
.menu-btn[aria-expanded="true"] span:nth-child(2) { opacity: 0; }
.menu-btn[aria-expanded="true"] span:nth-child(3) { transform: translateY(-6px) rotate(-45deg); }
.logo { display: flex; align-items: center; gap: 9px; cursor: pointer; }
.mark-ripple { width: 30px; height: 30px; flex: none; }
.mark-ripple svg { width: 100%; height: 100%; overflow: visible; }
.mark-ripple circle { fill: none; stroke: var(--accent); stroke-width: 1.7; transform-box: fill-box; transform-origin: center; }
.mark-ripple .r0 { fill: var(--accent); stroke: none; }
.mark-ripple .r1 { animation: rippleOut 3.6s ease-out infinite; }
.mark-ripple .r2 { animation: rippleOut 3.6s ease-out infinite 1.8s; }
@keyframes rippleOut {
  0% { transform: scale(.55); opacity: .95; }
  70% { opacity: .25; }
  100% { transform: scale(1.18); opacity: 0; }
}
.theme-btn {
  width: 32px; height: 32px; border: 1px solid var(--line); border-radius: 9px;
  background: var(--surface); color: var(--ink-2); cursor: pointer; font-size: 15px; line-height: 1;
  transition: background .15s;
}
.theme-btn:hover { background: var(--surface-2); }
.theme-btn:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
.logo .mark { font-weight: 800; font-size: 16.5px; letter-spacing: .13em; white-space: nowrap; }
.logo .kanji { font-size: 13px; font-weight: 700; color: var(--accent-ink); letter-spacing: .22em; white-space: nowrap; }
.logo .tagline { font-size: 11px; color: var(--ink-3); letter-spacing: .04em; }
.logo .beta {
  font-size: 10px; font-weight: 700; letter-spacing: .1em;
  color: var(--accent-ink); background: var(--accent-bg);
  border-radius: 4px; padding: 1px 7px;
}
@media (max-width: 860px) { .logo .tagline { display: none; } }
.view-title { font-size: 12.5px; color: var(--ink-2); font-weight: 600; }
.mock-note {
  margin-left: auto; font-size: 11px; color: var(--ink-3);
  display: flex; align-items: center; gap: 10px;
}
.mock-note .dot { color: var(--up-ink); }

/* ドロワー(ハンバーガーメニュー) */
.drawer-overlay {
  position: fixed; inset: 0; z-index: 40; background: rgba(0,0,0,.44);
  opacity: 0; pointer-events: none; transition: opacity .2s;
}
.drawer-overlay.open { opacity: 1; pointer-events: auto; }
.drawer {
  position: fixed; top: 0; left: 0; bottom: 0; z-index: 41; width: 264px;
  background: var(--surface); border-right: 1px solid var(--line);
  transform: translateX(-100%); transition: transform .22s ease;
  padding: 18px 14px; display: flex; flex-direction: column; gap: 4px;
}
.drawer.open { transform: translateX(0); }
.drawer .d-head { font-weight: 800; letter-spacing: .1em; font-size: 13.5px; padding: 4px 12px 14px; }
.drawer .d-head .kanji { font-size: 12px; color: var(--accent-ink); letter-spacing: .3em; margin-left: 8px; }
.drawer-nav { display: flex; flex-direction: column; gap: 4px; }
.drawer-nav button {
  text-align: left; border: none; background: none; color: var(--ink-2);
  border-radius: 10px; padding: 10px 12px; cursor: pointer; font-size: 13.5px; font-weight: 600;
  transition: background .15s, color .15s;
}
.drawer-nav button:hover { background: var(--surface-2); color: var(--ink); }
.drawer-nav button[aria-selected="true"] { background: var(--accent-bg); color: var(--accent-ink); }
.drawer-nav button:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
.drawer .d-note { margin-top: auto; font-size: 11px; color: var(--ink-3); padding: 0 12px 6px; line-height: 1.7; }

/* ---- 共通レイアウト ---- */
main { max-width: 1100px; margin: 0 auto; padding: 22px 20px 60px; }
section[hidden] { display: none; }
@keyframes viewIn { from { opacity: 0; transform: translateY(7px); } to { opacity: 1; transform: none; } }
main > section:not([hidden]) { animation: viewIn .26s ease; }
.card {
  background: var(--surface); border: 1px solid var(--line);
  border-radius: 14px; box-shadow: var(--shadow), inset 0 1px 0 rgba(255,255,255,.035); padding: 16px 18px;
}
.card + .card, .vstack > * + * { margin-top: 14px; }
h2.sec { font-size: 16px; margin: 0 0 4px; letter-spacing: .01em; }
.sub { color: var(--ink-3); font-size: 12px; margin: 0 0 12px; }
.num { font-variant-numeric: tabular-nums; }
.crumb { font-size: 12px; color: var(--ink-3); margin: 0 0 12px; }
.crumb a { color: var(--ink-2); }
.crumb .sep { padding: 0 6px; }
.link-btn {
  background: none; border: none; padding: 0; cursor: pointer;
  color: var(--accent-ink); font-size: inherit; font-weight: inherit;
}
.link-btn:hover { text-decoration: underline; }
.link-btn:focus-visible { outline: 2px solid var(--accent); outline-offset: 1px; }

/* ---- 業界決算カレンダー ---- */
/* ---- 業界のパンくず(業界一覧 › 群 › クラスタ)= カレンダー/カルテ共通ヘッダー ---- */
.crumb { display: flex; align-items: center; gap: 7px; flex-wrap: wrap; margin-bottom: 8px; font-size: 12px; }
/* パンくずのリンク(業界一覧・中段の群)は素のテキストに見せる。
   :not(.ind-switch) で「業界を変える」ボタンだけ枠付きのまま除外する */
.crumb button:not(.ind-switch) {
  border: none; background: none; color: var(--accent-ink); cursor: pointer;
  font-size: 12px; padding: 0; font-family: inherit;
}
.crumb button:not(.ind-switch):hover { text-decoration: underline; }
.crumb button:not(.ind-switch):focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; border-radius: 3px; }
.crumb .sep { color: var(--ink-3); }
.crumb .grp { color: var(--ink-2); }
.crumb b { color: var(--ink); font-size: 12.5px; }
.crumb .ind-switch {
  margin-left: auto; border: 1px solid var(--line); background: var(--surface);
  color: var(--ink-2); border-radius: 99px; padding: 3px 12px; font-size: 11.5px;
}
.crumb .ind-switch:hover { text-decoration: none; border-color: var(--accent); color: var(--accent-ink); }

.crumb .mid-badge {
  font-size: 10px; letter-spacing: .04em; color: var(--accent-ink); background: var(--accent-bg);
  border-radius: 4px; padding: 1px 6px; font-weight: 700;
}
.sec .mid-badge {
  font-size: 10px; color: var(--accent-ink); background: var(--accent-bg);
  border-radius: 4px; padding: 2px 7px; margin-left: 9px; vertical-align: middle; font-weight: 700;
}

/* ---- 業界決算カレンダーの業界カード(当日/前日/今週/来週の決算社数)---- */
.cal-grid-cards { grid-template-columns: repeat(auto-fill, minmax(268px, 1fr)); }
.cal-card {
  border: 1px solid var(--line); border-radius: 10px; background: var(--surface);
  padding: 11px 13px; cursor: pointer; display: flex; flex-direction: column; gap: 9px;
}
.cal-card:hover { border-color: var(--accent); }
/* 当日に決算がある業界だけ左に軸を立てる(一覧の中で「今日はここ」が一目で分かる) */
.cal-card.today { border-left: 3px solid var(--accent); }
.cal-card .ic-head h3 { font-size: 13.5px; margin: 0; flex: 1; }
.cal-card .ic-head .soon { font-size: 10px; color: var(--ink-3); margin-left: 5px; font-weight: 400; }
.cal-card.soon-card { opacity: .66; }
.cal-card.soon-card:hover { opacity: 1; }
.cc-row { display: grid; grid-template-columns: repeat(4, 1fr); gap: 6px; }
.cc-cell {
  display: flex; flex-direction: column; align-items: center; gap: 1px;
  border: 1px solid var(--hairline); border-radius: 7px; padding: 5px 2px; background: var(--surface-2);
}
.cc-l { font-size: 10px; color: var(--ink-3); }
.cc-v { font-size: 15px; font-weight: 800; color: var(--ink-2); }
.cc-cell.hot { border-color: var(--accent); background: var(--accent-bg); }
.cc-cell.hot .cc-v, .cc-cell.hot .cc-l { color: var(--accent-ink); }

/* ---- 業界の表示切替タブ(カルテ ⇄ カレンダー)----
   丸チップ(=どの業界か)と役割が違うので、下線タブ(=その業界の何を見るか)で見た目を分ける */
.ind-tabs {
  display: flex; gap: 2px; margin-bottom: 14px;
  border-bottom: 1px solid var(--line);
}
.ind-tabs button {
  border: none; background: none; color: var(--ink-3); cursor: pointer; font-family: inherit;
  font-size: 13px; padding: 8px 16px; border-bottom: 2px solid transparent; margin-bottom: -1px;
}
.ind-tabs button:hover { color: var(--ink); }
.ind-tabs button[aria-selected="true"] {
  color: var(--accent-ink); border-bottom-color: var(--accent); font-weight: 700;
}
.ind-tabs button:focus-visible { outline: 2px solid var(--accent); outline-offset: -2px; }

/* ---- 業界画面の 1 行ヘッダー(戻る + 業界セレクタ + タブ)= 2026-07-21 改訂 ---- */
.ind-head1 {
  display: flex; align-items: center; gap: 14px; flex-wrap: wrap;
  margin-bottom: 16px; padding-bottom: 10px; border-bottom: 1px solid var(--line);
}
.ind-head1 .ind-tabs { margin: 0 0 0 auto; border-bottom: none; }
.ih-back {
  border: none; background: none; color: var(--ink-3); cursor: pointer; font-family: inherit;
  font-size: 12px; padding: 4px 2px; white-space: nowrap;
}
.ih-back:hover { color: var(--accent-ink); }
.ih-sel-wrap { position: relative; }
.ih-sel {
  display: inline-flex; align-items: center; gap: 8px; cursor: pointer; font-family: inherit;
  border: 1px solid var(--line); background: var(--surface); color: var(--ink);
  border-radius: 10px; padding: 7px 14px; font-size: 15px; font-weight: 700;
}
.ih-sel:hover { border-color: var(--accent); }
.ih-sel .ih-grp { color: var(--ink-3); font-weight: 400; font-size: 12px; }
.ih-sel .sep { color: var(--ink-3); font-weight: 400; }
.ih-sel .ih-caret { color: var(--ink-3); font-size: 11px; }
.ih-sel[aria-expanded="true"] { border-color: var(--accent); }
/* ピッカー(群 → クラスタの検索付きオーバーレイ) */
.ind-picker {
  position: absolute; top: calc(100% + 6px); left: 0; z-index: 40; width: 320px; max-width: 86vw;
  background: var(--surface); border: 1px solid var(--line); border-radius: 12px;
  box-shadow: 0 10px 30px rgba(0,0,0,.28); padding: 10px; max-height: 66vh;
  display: flex; flex-direction: column;
}
.ind-picker[hidden] { display: none; }  /* hidden 属性が .ind-picker の display を上書きされないように */
.pk-q {
  border: 1px solid var(--line); background: var(--paper); color: var(--ink);
  border-radius: 8px; padding: 7px 11px; font-size: 13px; font-family: inherit; margin-bottom: 8px;
}
.pk-q:focus { outline: none; border-color: var(--accent); }
.pk-list { overflow-y: auto; }
.pk-group { margin-bottom: 8px; }
.pk-g, .pk-glabel {
  display: flex; align-items: baseline; gap: 8px; width: 100%; text-align: left;
  font-size: 12.5px; font-weight: 700; color: var(--ink); letter-spacing: .03em;
  padding: 5px 8px; border-radius: 7px; border: none; background: none; cursor: pointer; font-family: inherit;
}
.pk-glabel { cursor: default; color: var(--accent-ink); }
.pk-g:hover { background: var(--accent-bg); color: var(--accent-ink); }
.pk-g .pk-n { margin-left: auto; font-size: 11px; color: var(--ink-3); font-weight: 400; }
.pk-cls { display: flex; flex-direction: column; }
.pk-cl {
  text-align: left; border: none; background: none; cursor: pointer; font-family: inherit;
  color: var(--ink-2); font-size: 12.5px; padding: 4px 8px 4px 18px; border-radius: 7px;
}
.pk-cl:hover { background: var(--surface-2); color: var(--ink); }
.pk-cl .soon { font-size: 10px; color: var(--ink-3); margin-left: 5px; }

/* ---- 業界一覧: 入口の群タイル(12 + 切り口)---- */
.grp-tiles { display: grid; grid-template-columns: repeat(auto-fill, minmax(232px, 1fr)); gap: 12px; }
.grp-tile {
  text-align: left; border: 1px solid var(--line); border-radius: 12px; background: var(--surface);
  padding: 14px 15px; cursor: pointer; font-family: inherit; display: flex; flex-direction: column; gap: 7px;
}
.grp-tile:hover { border-color: var(--accent); }
.grp-tile.today { border-left: 3px solid var(--accent); }
.grp-tile.lens { border-style: dashed; }
.gt-head { display: flex; align-items: baseline; gap: 8px; }
.gt-head h3 { font-size: 15px; margin: 0; flex: 1; color: var(--ink); }
.gt-size { font-size: 11px; color: var(--ink-3); white-space: nowrap; }
.gt-heat { font-size: 11.5px; color: var(--ink-2); }
.gt-cal { font-size: 11.5px; color: var(--ink-3); }
.gt-cal b { color: var(--accent-ink); }
/* ドリル(群の中の小分類)*/
.ig-head-drill {
  font-size: 15px; margin: 4px 0 12px; display: flex; align-items: baseline; gap: 12px; flex-wrap: wrap;
}
.ig-head-drill .link-btn { font-size: 12px; }
.inds-drill .ih-back { margin-bottom: 4px; }

/* ---- 業界一覧(§2-7)---- */
.inds-bar { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; margin-bottom: 18px; }
.inds-bar #indsQ {
  flex: 1; min-width: 220px; border: 1px solid var(--line); background: var(--surface);
  color: var(--ink); border-radius: 8px; padding: 7px 12px; font-size: 13px; font-family: inherit;
}
.inds-bar #indsQ:focus { outline: none; border-color: var(--accent); }
.ind-group { margin-bottom: 26px; }
.ig-head {
  font-size: 13px; letter-spacing: .04em; margin: 0 0 10px; padding-bottom: 6px;
  border-bottom: 1px solid var(--line); display: flex; align-items: baseline; gap: 10px;
}
/* 群見出し= それ自体が選べる 1 カテゴリ(中分類) */
.ig-link {
  border: none; background: none; padding: 0; cursor: pointer; font-family: inherit;
  font-size: 13px; font-weight: 700; letter-spacing: .04em; color: var(--ink);
  display: inline-flex; align-items: baseline; gap: 5px;
}
.ig-link:hover { color: var(--accent-ink); }
.ig-go { font-size: 11px; color: var(--ink-3); }
.ig-link:hover .ig-go { color: var(--accent-ink); }
.ig-link:focus-visible { outline: 2px solid var(--accent); outline-offset: 3px; border-radius: 3px; }
.ig-n { font-size: 11px; color: var(--ink-3); font-weight: 400; }
.ig-head .ig-heat { font-size: 11px; color: var(--ink-2); font-weight: 400; margin-left: auto; }
.ind-group.lens .ig-head { border-bottom-color: var(--accent); color: var(--accent-ink); }
.ind-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(248px, 1fr)); gap: 10px; }
.ind-card {
  border: 1px solid var(--line); border-radius: 10px; background: var(--surface);
  padding: 11px 13px; cursor: pointer; display: flex; flex-direction: column; gap: 6px;
}
.ind-card:hover { border-color: var(--accent); }
.ind-card[data-depth="low"] { opacity: .62; }
.ind-card[data-depth="low"]:hover { opacity: 1; }
.ic-head { display: flex; align-items: baseline; gap: 8px; }
.ic-head h3 { font-size: 13.5px; margin: 0; flex: 1; }
.ic-head .soon { font-size: 10px; color: var(--ink-3); margin-left: 5px; font-weight: 400; }
.ic-size { font-size: 11px; color: var(--ink-3); white-space: nowrap; }
/* thesis は 2 行で打ち切る(カードの高さを揃え、一覧の走査性を保つ) */
.ic-thesis {
  font-size: 11.5px; color: var(--ink-2); margin: 0; line-height: 1.5;
  display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden;
}
.ic-foot { display: flex; align-items: center; gap: 8px; margin-top: auto; padding-top: 2px; }
.ic-heat { font-size: 11.5px; color: var(--ink); font-weight: 700; }
.ic-cal {
  margin-left: auto; border: 1px solid var(--line); background: none; color: var(--ink-3);
  border-radius: 99px; padding: 2px 9px; font-size: 10.5px; cursor: pointer; font-family: inherit;
}
.ic-cal:hover { border-color: var(--accent); color: var(--accent-ink); }

.cal-tabs { display: flex; gap: 6px; flex-wrap: wrap; margin-bottom: 12px; }
/* タブ列が付かない側(小分類=カルテのみ)は、チップ列側で下の間を取る */
.cal-tabs.mid { margin-bottom: 20px; padding-bottom: 14px; border-bottom: 1px solid var(--line); }
.cal-tabs button {
  border: 1px solid var(--line); background: var(--surface); color: var(--ink-2);
  border-radius: 99px; padding: 4px 14px; font-size: 12.5px; cursor: pointer;
}
.cal-tabs button[aria-pressed="true"] { background: var(--accent-bg); color: var(--accent-ink); border-color: var(--accent); font-weight: 700; }
.cal-tabs button .soon { font-size: 10px; color: var(--ink-3); margin-left: 4px; }
.season-bar { display: flex; align-items: center; gap: 14px; flex-wrap: wrap; margin-bottom: 12px; }
.season-bar h2 { font-size: 18px; margin: 0; }
.acts { display: flex; gap: 6px; flex-wrap: wrap; font-size: 11.5px; }
.acts span {
  border: 1px solid var(--line); border-radius: 99px; padding: 2px 10px; color: var(--ink-2);
  background: var(--surface);
}
.acts span b { color: var(--accent-ink); font-weight: 700; }
.cal-legend { font-size: 11.5px; color: var(--ink-3); display: flex; gap: 16px; flex-wrap: wrap; margin: 8px 0 10px; }
.cal-legend .watch-dot::before { content: "●"; color: var(--accent); margin-right: 4px; }
.cal-legend .done-mark::before { content: "✓"; color: var(--s2); font-weight: 700; margin-right: 4px; }

.cal-scroll { overflow-x: auto; border: 1px solid var(--line); border-radius: 10px; background: var(--surface); }
.cal { display: grid; grid-template-columns: 110px repeat(8, minmax(112px, 1fr)); min-width: 1030px; }
.cal .hcell, .cal .lane, .cal .cell { border-bottom: 1px solid var(--line); border-right: 1px solid var(--hairline); padding: 6px 8px; }
.cal .hcell {
  font-size: 11px; color: var(--ink-3); font-weight: 600; letter-spacing: .02em;
  background: var(--surface-2); position: sticky; top: 0;
}
.cal .hcell.now { color: var(--accent-ink); }
.cal .lane {
  font-size: 12px; font-weight: 700; color: var(--ink-2); background: var(--surface-2);
  display: flex; align-items: center;
}
.cal .cell { min-height: 54px; display: flex; flex-direction: column; gap: 4px; }
.cal .cell.now { background: color-mix(in srgb, var(--accent-bg) 36%, transparent); }
.ev {
  font-size: 11px; line-height: 1.35; border: 1px solid var(--line); border-radius: 6px;
  background: var(--surface); padding: 3px 6px; cursor: pointer; text-align: left;
  color: var(--ink); width: 100%;
  transition: border-color .15s, opacity .15s;
}
.ev:hover { border-color: var(--accent); }
.ev:focus-visible { outline: 2px solid var(--accent); outline-offset: 1px; }
.ev .d { color: var(--ink-3); margin-right: 4px; }
.ev .nm { font-weight: 600; }
.ev.watch { border-left: 3px solid var(--accent); }
.ev.done { background: var(--surface-2); }
.ev.done .nm::after { content: " ✓"; color: var(--s2); font-weight: 700; }
.ev.more { color: var(--ink-3); border-style: dashed; cursor: default; }
.cal.focus .ev { opacity: .32; }
.cal.focus .ev.src { opacity: 1; border-color: var(--accent); background: var(--accent-bg); }
.cal.focus .ev.rel { opacity: 1; border-color: var(--accent); box-shadow: 0 0 0 1px var(--accent) inset; }
.cal.focus .ev.rel::after { content: "予告先"; display: inline-block; margin-left: 4px; font-size: 9px; color: var(--accent-ink); font-weight: 700; }
.chain-strip {
  margin-top: 10px; font-size: 12.5px; color: var(--ink-2);
  border: 1px dashed var(--line); border-radius: 8px; padding: 8px 12px; background: var(--surface);
}
.chain-strip b { color: var(--accent-ink); }
.chain-strip .link-btn { font-weight: 700; margin-left: 6px; }

/* ---- 観測点(テーゼ由来・問いのみ) ---- */
.cp-row { display: flex; gap: 12px; padding: 9px 0; border-top: 1px solid var(--hairline); }
.cp-no {
  width: 22px; height: 22px; border-radius: 50%; background: var(--accent-bg); color: var(--accent-ink);
  font-weight: 800; font-size: 12px; display: flex; align-items: center; justify-content: center;
  flex: none; margin-top: 2px;
}
.cp-q { font-size: 13.5px; font-weight: 700; }
.cp-fact { font-size: 12px; color: var(--ink-3); }
.cp-foot { padding-top: 10px; font-size: 12.5px; border-top: 1px solid var(--hairline); margin-top: 4px; }
.ext {
  font-size: 10.5px; color: var(--accent-ink); border: 1px solid var(--accent-bg);
  border-radius: 3px; padding: 0 5px; margin-left: 6px;
}
.cal-placeholder {
  border: 1px dashed var(--line); border-radius: 10px; background: var(--surface);
  padding: 40px 20px; text-align: center; color: var(--ink-3); font-size: 13px;
}

/* ---- 業界カルテ ---- */
.theme-row { padding: 9px 0; border-top: 1px solid var(--hairline); }
.theme-row summary.th-t { cursor: pointer; }
.theme-row summary.th-t:hover { color: var(--accent-ink); }
.theme-row .th-t { font-size: 13.5px; font-weight: 700; }
.theme-row .th-b { font-size: 12.5px; color: var(--ink-2); margin-top: 2px; }
.theme-row .th-w { font-size: 12px; color: var(--accent-ink); margin-top: 3px; }
.theme-row .th-w::before { content: "◎ "; }
.karte-heat { border-collapse: collapse; font-size: 12px; }
.karte-heat th, .karte-heat td { border: 1px solid var(--line); padding: 5px 12px; text-align: center; font-variant-numeric: tabular-nums; }
.karte-heat th { background: var(--surface-2); font-size: 11px; color: var(--ink-3); font-weight: 600; }
.karte-heat th.lyr { text-align: left; }
.karte-heat td.lyr { text-align: left; font-weight: 700; color: var(--ink-2); background: var(--surface-2); font-size: 11.5px; }
.hw2 { background: var(--up-bg); color: var(--up-ink); font-weight: 700; }
.hw1 { background: color-mix(in srgb, var(--up-bg) 45%, var(--surface)); color: var(--up-ink); }
.hc2 { background: var(--down-bg); color: var(--down-ink); font-weight: 700; }
.hc1 { background: color-mix(in srgb, var(--down-bg) 45%, var(--surface)); color: var(--down-ink); }
.hz { color: var(--ink-3); }

.karte-table { width: 100%; border-collapse: collapse; font-size: 12.5px; }
.karte-table th {
  text-align: left; font-size: 11px; color: var(--ink-3); font-weight: 600; letter-spacing: .03em;
  border-bottom: 1px solid var(--line); padding: 6px 8px; background: var(--surface-2);
}
.karte-table th.c, .karte-table td.c { text-align: center; }
.karte-table td { border-bottom: 1px solid var(--hairline); padding: 6px 8px; }
.karte-table .layer-row td {
  background: var(--surface-2); font-weight: 700; font-size: 11.5px; color: var(--ink-2);
  border-bottom: 1px solid var(--line); padding: 5px 8px;
}
.karte-table .layer-row .lsum { font-weight: 400; color: var(--ink-3); margin-left: 10px; }
.karte-table .co { font-weight: 700; white-space: nowrap; }
.karte-table .co .seg { font-weight: 400; color: var(--ink-3); font-size: 11px; }
.yoy-cell { text-align: center; font-variant-numeric: tabular-nums; min-width: 58px; }
.estrip { display: grid; grid-template-columns: repeat(12, 1fr); min-width: 220px; }
.estrip .mcell { border-left: 1px solid var(--hairline); min-height: 20px; display: flex; align-items: center; justify-content: center; gap: 1px; font-size: 11px; }
.estrip .mcell:first-child { border-left: 0; }
.mk-e { color: var(--ink-2); }
.mk-u { color: var(--up-ink); font-weight: 700; }
.mk-d { color: var(--down-ink); font-weight: 700; }
.mk-s { color: var(--ink-3); }
.estrip-head { display: grid; grid-template-columns: repeat(12, 1fr); font-size: 9.5px; color: var(--ink-3); min-width: 220px; }
.estrip-head span { text-align: center; }

/* ---- 速報タイムライン ---- */
.filters { display: flex; gap: 6px; flex-wrap: wrap; margin-bottom: 12px; }
.filters button {
  border: 1px solid var(--line); background: var(--surface); color: var(--ink-2);
  border-radius: 99px; padding: 4px 12px; font-size: 12px; cursor: pointer;
}
.filters button[aria-pressed="true"] { background: var(--ink); color: var(--paper); border-color: var(--ink); }
/* 速報の表示(既定=リスト・カードに切替可) */
.fdate { font-size: 11.5px; font-weight: 700; color: var(--ink-3); letter-spacing: .05em; padding: 14px 6px 6px; border-bottom: 1px solid var(--line); }
.flash-tools { display: flex; gap: 6px 14px; flex-wrap: wrap; align-items: center; margin-bottom: 12px; }
.flash-tools .mode-lbl { font-size: 11px; color: var(--ink-3); margin-left: auto; }
/* カード(X ポストと同一内容・メタは軽量化) */
.xpost { padding: 12px 6px; border-bottom: 1px solid var(--line); }
.fgroup:last-child .xpost:last-child, .fgroup:last-child .frow:last-child { border-bottom: 0; }
.xhead { display: flex; align-items: baseline; gap: 10px; flex-wrap: wrap; font-size: 13.5px; }
.xhead .cash { font-weight: 700; }
.xhead .xtime { color: var(--ink-3); font-size: 11px; margin-left: auto; }
.numrow {
  display: flex; gap: 10px; align-items: baseline; margin-top: 6px; font-size: 13.5px;
  background: var(--surface-2); border-radius: 6px; padding: 5px 12px; max-width: 560px;
}
.numrow .nl { color: var(--ink-3); font-size: 11.5px; white-space: nowrap; }
.numrow .nv b { font-size: 14.5px; }
.numrow .arr { color: var(--ink-3); padding: 0 5px; }
.pctv { margin-left: auto; font-weight: 800; }
.pctv.up { color: var(--up-ink); }
.pctv.down { color: var(--down-ink); }
.xline { font-size: 13px; margin-top: 4px; }
.imgfold { margin-top: 6px; font-size: 11.5px; color: var(--ink-3); }
.imgfold summary { cursor: pointer; }
.disc-img {
  margin-top: 8px; border: 1px solid var(--line); border-radius: 8px;
  width: min(340px, 100%); background: var(--chart-surface); padding: 12px 12px 8px;
}
.di-bar { height: 8px; width: 55%; background: var(--surface-2); border: 1px solid var(--hairline); margin-bottom: 8px; }
.di-line { height: 5px; background: var(--surface-2); margin: 5px 0; }
.w80 { width: 80%; } .w95 { width: 95%; } .w60 { width: 60%; }
.di-cap { font-size: 10px; color: var(--ink-3); margin-top: 8px; }
.xpost .foot { margin-top: 8px; font-size: 11.5px; color: var(--ink-3); display: flex; gap: 14px; flex-wrap: wrap; align-items: baseline; }
.xpost .foot .ctx::before { content: "─ "; }
/* リスト(1行=1件・縦走査用) */
.frow {
  display: grid; grid-template-columns: 42px 100px minmax(150px, 210px) 1fr 82px 58px;
  gap: 10px; padding: 7px 6px; border-bottom: 1px solid var(--hairline); align-items: baseline; font-size: 12.5px;
}
.frow .ft { color: var(--ink-3); font-size: 11.5px; }
.frow .fco { font-weight: 700; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.frow .fsum { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; color: var(--ink-2); }
.frow .fpct { text-align: right; font-weight: 700; }
.fpct.up { color: var(--up-ink); }
.fpct.down { color: var(--down-ink); }
.frow .fgo { font-size: 11.5px; text-align: right; white-space: nowrap; }
@media (max-width: 760px) { .frow { grid-template-columns: 42px 92px 1fr 70px; } .frow .fsum, .frow .fgo { display: none; } }
.frow-item { border-bottom: 1px solid var(--hairline); }
.frow-item .frow { border-bottom: 0; }
/* ツイートのインライン展開(速報カード/行・要件2)+ 銘柄ページ/開示詳細のツイート本体 */
.tweetfold { margin-top: 6px; font-size: 12px; }
.tweetfold summary { cursor: pointer; color: var(--accent-ink); font-size: 11.5px; padding: 2px 0; }
.tweetfold summary:hover { text-decoration: underline; }
.frow-item .tweetfold { padding: 0 6px 8px 62px; }
.tweet { border: 1px solid var(--line); border-radius: 8px; padding: 10px 12px; margin-top: 8px; background: var(--surface-2); }
.tweet .xline { font-size: 13px; }
.tweet .tthread { margin-top: 6px; padding-left: 12px; border-left: 2px solid var(--line); color: var(--ink-2); }
.tweet .foot { margin-top: 8px; font-size: 11.5px; color: var(--ink-3); display: flex; gap: 14px; align-items: baseline; flex-wrap: wrap; }
.data-through { font-size: 11.5px; color: var(--ink-3); margin-top: 4px; cursor: help; }
.through-cell { color: var(--ink-2); font-size: 11.5px; white-space: nowrap; }
.disc-tweets { margin-top: 14px; }
.disc-tweets-h { font-size: 13px; font-weight: 700; margin: 0; color: var(--ink-2); }
.kind {
  display: inline-flex; align-items: center; gap: 5px; font-size: 11px; font-weight: 700;
  border-radius: 4px; padding: 1px 7px; margin-right: 8px; vertical-align: 1px;
  background: var(--surface-2); color: var(--ink-2); border: 1px solid var(--hairline);
}
.kind.up { background: var(--up-bg); color: var(--up-ink); }
.kind.down { background: var(--down-bg); color: var(--down-ink); }

/* ---- 銘柄一覧 ---- */
.list-tools { display: flex; gap: 10px; flex-wrap: wrap; align-items: center; margin-bottom: 12px; }
.list-tools input {
  border: 1px solid var(--line); background: var(--surface); color: var(--ink);
  border-radius: 7px; padding: 6px 12px; font: inherit; font-size: 13px; width: 240px;
}
.list-tools input:focus-visible { outline: 2px solid var(--accent); outline-offset: 1px; }
/* 速報の期間指定(2026-07-17 追加) */
.range { display: inline-flex; align-items: center; gap: 6px; font-size: 11.5px; color: var(--ink-3); }
.range input[type="date"] {
  border: 1px solid var(--line); background: var(--surface); color: var(--ink);
  border-radius: 7px; padding: 4px 8px; font: inherit; font-size: 12px;
}
.range input[type="date"]:focus-visible { outline: 2px solid var(--accent); outline-offset: 1px; }
.range input[type="date"]::-webkit-calendar-picker-indicator { filter: invert(.5); cursor: pointer; }
.fcount { margin-left: auto; font-size: 11.5px; color: var(--ink-3); }
.sel-wrap { display: inline-flex; align-items: center; gap: 7px; font-size: 11.5px; color: var(--ink-3); }
.sel-wrap select {
  border: 1px solid var(--line); background: var(--surface); color: var(--ink);
  border-radius: 7px; padding: 6px 10px; font: inherit; font-size: 13px;
}
.sel-wrap select:focus-visible { outline: 2px solid var(--accent); outline-offset: 1px; }
/* 所属業界チップ(重複所属可・クリックでその業界のカルテへ) */
.stock-table td.inds { display: flex; gap: 4px; flex-wrap: wrap; align-items: center; }
.ind-chip {
  border: 1px solid var(--line); background: var(--surface-2); color: var(--ink-2);
  border-radius: 99px; padding: 2px 9px; font-size: 11px; cursor: pointer; font-family: inherit;
  white-space: nowrap;
}
.ind-chip:hover { border-color: var(--accent); color: var(--accent-ink); }
/* 週ヘッダーの市場全体の決算社数(旧「その他 上位500」レーンの代替) */
.cal .hcell .mkt { display: block; font-size: 10px; color: var(--ink-3); font-weight: 400; margin-top: 2px; }
.cal .hcell.now .mkt { color: var(--accent-ink); }
.stock-table { width: 100%; border-collapse: collapse; font-size: 13px; }
.stock-table th {
  text-align: left; font-size: 11px; color: var(--ink-3); font-weight: 600; letter-spacing: .04em;
  border-bottom: 1px solid var(--line); padding: 6px 10px; background: var(--surface-2);
}
/* 並べ替え可能な列見出し(2026-07-17 追加)。矢印は現在のソート列だけ濃く出す */
.stock-table th[data-sort] { cursor: pointer; user-select: none; white-space: nowrap; }
.stock-table th[data-sort]:hover { color: var(--ink); }
.stock-table th[data-sort]:focus-visible { outline: 2px solid var(--accent); outline-offset: -2px; }
.stock-table th .sarr { margin-left: 5px; font-size: 9px; color: var(--ink-3); opacity: .45; }
.stock-table th .sarr::after { content: "▲▼"; letter-spacing: -1px; }
.stock-table th[aria-sort="ascending"] { color: var(--accent-ink); }
.stock-table th[aria-sort="descending"] { color: var(--accent-ink); }
.stock-table th[aria-sort="ascending"] .sarr { opacity: 1; color: var(--accent-ink); }
.stock-table th[aria-sort="ascending"] .sarr::after { content: "▲"; }
.stock-table th[aria-sort="descending"] .sarr { opacity: 1; color: var(--accent-ink); }
.stock-table th[aria-sort="descending"] .sarr::after { content: "▼"; }
.sort-reset {
  border: 1px solid var(--line); background: var(--surface); color: var(--ink-2);
  border-radius: 99px; padding: 5px 12px; font-size: 11.5px; cursor: pointer; font-family: inherit;
}
.sort-reset:hover { border-color: var(--accent); color: var(--accent-ink); }
.stock-table td { border-bottom: 1px solid var(--hairline); padding: 8px 10px; }
.stock-table tr.click { cursor: pointer; }
.stock-table tr.click:hover td { background: var(--surface-2); }
.stock-table .code { color: var(--ink-3); font-weight: 600; }
.stock-table .nm { font-weight: 700; }
.stock-table .mut { color: var(--ink-3); font-size: 12px; }
.pill {
  display: inline-block; font-size: 10.5px; font-weight: 700; border-radius: 99px;
  padding: 1px 8px; background: var(--surface-2); color: var(--ink-2); border: 1px solid var(--hairline);
}
.pill.watch { background: var(--accent-bg); color: var(--accent-ink); }
.pill.chainp { border-color: var(--accent); color: var(--accent-ink); background: var(--surface); }
.list-note { font-size: 11.5px; color: var(--ink-3); padding: 10px; text-align: center; }

/* ---- 銘柄ページ ---- */
.stock-head { display: flex; align-items: flex-start; gap: 18px; flex-wrap: wrap; }
.stock-head .id h2 { margin: 0; font-size: 24px; letter-spacing: .01em; }
.stock-head .id .code { color: var(--ink-3); font-weight: 600; font-size: 14px; margin-right: 8px; }
.tags { display: flex; gap: 6px; flex-wrap: wrap; margin-top: 7px; }
.tag {
  font-size: 11px; font-weight: 600; border-radius: 4px; padding: 2px 8px;
  background: var(--surface-2); color: var(--ink-2); border: 1px solid var(--hairline);
}
.tag.watch { background: var(--accent-bg); color: var(--accent-ink); }
.next-earn {
  margin-left: auto; text-align: right; border: 1px solid var(--line); border-radius: 10px;
  padding: 10px 16px; background: var(--surface);
}
.next-earn .lbl { font-size: 11px; color: var(--ink-3); letter-spacing: .06em; }
.next-earn .val { font-size: 17px; font-weight: 800; }
.next-earn .rel { font-size: 11.5px; color: var(--accent-ink); font-weight: 600; }
.thin-strip {
  font-size: 12px; color: var(--ink-3); background: var(--surface-2);
  border: 1px dashed var(--line); border-radius: 8px; padding: 7px 12px; margin-top: 12px;
}
.cal-belong { display: flex; gap: 8px; flex-wrap: wrap; align-items: center; margin-bottom: 12px; font-size: 12px; color: var(--ink-3); }
.cal-belong button {
  border: 1px solid var(--accent); background: var(--surface); color: var(--accent-ink);
  border-radius: 99px; padding: 3px 12px; font-size: 12px; cursor: pointer; font-weight: 600;
}
.cal-belong button:hover { background: var(--accent-bg); }
.cal-belong button:disabled { border-color: var(--line); color: var(--ink-3); cursor: default; font-weight: 400; }

.chain-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; }
@media (max-width: 720px) { .chain-grid { grid-template-columns: 1fr; } }
.chain-col h3 { font-size: 12px; color: var(--ink-3); letter-spacing: .05em; margin: 0 0 8px; font-weight: 700; }
.chain-row { display: flex; gap: 10px; padding: 7px 0; border-top: 1px solid var(--hairline); font-size: 12.5px; }
.chain-row .dt { color: var(--ink-3); white-space: nowrap; width: 76px; }
.chain-row .who { font-weight: 700; white-space: nowrap; }
.chain-row .who .st { font-weight: 400; font-size: 11px; margin-left: 4px; color: var(--ink-3); }
.chain-row .who .st.done { color: var(--s2); }
.chain-row .note { color: var(--ink-2); }

.stats { display: grid; grid-template-columns: repeat(4, 1fr); gap: 12px; }
@media (max-width: 760px) { .stats { grid-template-columns: repeat(2, 1fr); } }
.stat { border: 1px solid var(--line); border-radius: 10px; padding: 10px 14px; background: var(--surface); }
.stat .lbl { font-size: 11px; color: var(--ink-3); letter-spacing: .04em; }
.stat .val { font-size: 20px; font-weight: 800; margin-top: 2px; }
.stat .note { font-size: 11px; color: var(--ink-2); }

.charts { display: grid; grid-template-columns: 1fr; gap: 14px; }
.chart-card { background: var(--chart-surface); border: 1px solid var(--line); border-radius: 10px; padding: 14px 16px 8px; }
.chart-card h3 { margin: 0; font-size: 13.5px; }
.chart-card .legend { display: flex; gap: 14px; font-size: 11.5px; color: var(--ink-2); margin: 6px 0 2px; flex-wrap: wrap; }
.legend .sw { display: inline-block; width: 10px; height: 10px; border-radius: 2px; margin-right: 5px; vertical-align: -1px; }
.legend .ln { display: inline-block; width: 14px; height: 0; border-top: 2px solid; margin-right: 5px; vertical-align: 3px; }
.legend .dash { border-top-style: dashed; }
.chart-card svg { width: 100%; height: auto; display: block; }
.chart-card details { font-size: 11.5px; color: var(--ink-3); margin: 4px 0 6px; }
.chart-card details table { border-collapse: collapse; margin-top: 6px; }
.chart-card details td, .chart-card details th {
  border: 1px solid var(--line); padding: 2px 8px; font-weight: 400; text-align: right;
  font-variant-numeric: tabular-nums; color: var(--ink-2);
}
.chart-card details th { background: var(--surface-2); }
svg text { font-family: inherit; }
.hitcol { fill: transparent; }
.hitcol:hover { fill: color-mix(in srgb, var(--accent) 7%, transparent); }
.hitpt { fill: transparent; stroke: none; cursor: default; }

.hist-row { display: grid; grid-template-columns: 96px 92px 1fr auto; gap: 10px; padding: 8px 4px; border-top: 1px solid var(--hairline); font-size: 12.5px; align-items: baseline; }
.hist-row .dt { color: var(--ink-3); }
.hist-row .go { font-size: 11.5px; white-space: nowrap; }
.articles a.art { display: block; padding: 9px 4px; border-top: 1px solid var(--hairline); font-size: 13px; }
.articles a.art .meta { font-size: 11px; color: var(--ink-3); display: block; }
.articles a.art .ext { font-size: 10.5px; color: var(--accent-ink); border: 1px solid var(--accent-bg); border-radius: 3px; padding: 0 5px; margin-left: 6px; }

/* ---- 開示詳細 ---- */
.disc-head { display: flex; align-items: baseline; gap: 12px; flex-wrap: wrap; }
.disc-head h2 { margin: 0; font-size: 19px; }
.disc-head .ts { font-size: 12px; color: var(--ink-3); }
.disc-title { font-size: 14px; color: var(--ink-2); margin: 8px 0 0; }
.disc-table { border-collapse: collapse; margin: 12px 0 4px; width: 100%; max-width: 640px; font-size: 13px; }
.disc-table th, .disc-table td { border: 1px solid var(--line); padding: 6px 12px; text-align: right; font-variant-numeric: tabular-nums; }
.disc-table th { background: var(--surface-2); font-size: 11.5px; color: var(--ink-3); font-weight: 600; }
.disc-table td:first-child, .disc-table th:first-child { text-align: left; }
.disc-table .chg.up { color: var(--up-ink); font-weight: 700; }
.disc-table .chg.down { color: var(--down-ink); font-weight: 700; }
.disc-links { display: flex; gap: 10px; flex-wrap: wrap; margin-top: 14px; font-size: 12.5px; }
.disc-links a, .disc-links button.link-btn {
  border: 1px solid var(--line); border-radius: 7px; padding: 5px 12px; background: var(--surface); font-size: 12.5px;
}
.disc-links a:hover { background: var(--surface-2); text-decoration: none; }
.disc-note { font-size: 11px; color: var(--ink-3); margin-top: 12px; }

#tip {
  position: fixed; z-index: 99; pointer-events: none; display: none;
  background: var(--ink); color: var(--paper); font-size: 11.5px; line-height: 1.5;
  border-radius: 6px; padding: 6px 9px; max-width: 260px;
  font-variant-numeric: tabular-nums;
}
footer.foot { max-width: 1100px; margin: 0 auto; padding: 0 20px 40px; font-size: 11px; color: var(--ink-3); }
@media (prefers-reduced-motion: reduce) { *, *::before, *::after { transition: none !important; animation: none !important; } }

/* 速報リストのカラムヘッダー */
.frow.fhead { border-bottom: 1px solid var(--line); padding: 10px 6px 6px; }
.frow.fhead span { font-size: 10.5px; color: var(--ink-3); font-weight: 700; letter-spacing: .06em; }
/* 銘柄ページ: 小分類チップ(→カルテ)と 中分類のカレンダー(→カレンダー)の区切り */
.cal-belong .belong-sep { font-size: 11px; color: var(--ink-3); margin: 0 4px 0 8px; }

/* cal-top「全銘柄の決算予定(直近)」= 日付ごとの銘柄チップ列(要ユーザー 2026-07-21) */
.ua-list { display: flex; flex-direction: column; gap: 6px; }
.ua-row { display: grid; grid-template-columns: 96px 1fr; gap: 10px; align-items: baseline;
  padding: 7px 0; border-top: 1px solid var(--line, #e5e7eb); }
.ua-row:first-child { border-top: none; }
.ua-date { font-weight: 700; white-space: nowrap; }
.ua-dow { font-weight: 400; opacity: .65; margin-left: 2px; }
.ua-n { display: block; font-size: 11px; font-weight: 400; opacity: .6; }
.ua-chips { display: flex; flex-wrap: wrap; gap: 6px; }
.cal-chip { font: inherit; font-size: 12px; padding: 3px 8px; border-radius: 999px;
  border: 1px solid var(--line, #e5e7eb); background: var(--card, #fff); color: inherit; cursor: pointer; }
button.cal-chip:hover { border-color: var(--accent, #16a34a); color: var(--accent, #16a34a); }
.cal-chip.mut { opacity: .55; cursor: default; }
