/* ============================================================================
   極簡版（參考圖風格）：LOGO 左上、分類置中、大量留白、柔和漸層底
   載入順序：board.css → logo-light.css（色票）→ 本檔（結構與留白）
   ⚠️ 模擬用，不是定案檔；board_web/ 完全沒被改動。
   ============================================================================ */

/* ---------- 1. 色票：深墨綠字、細描邊、柔和底 ---------- */
:root{
  --ink:#16241E;
  --ink-soft:#63756B;
  --line-soft:rgba(22,36,30,.13);
  --line-hair:rgba(22,36,30,.08);
  --txt:#16241E;
  --sub:#63756B;
  --line:rgba(22,36,30,.13);
  --accent:#2F6B54;
  --card:#FFFFFF;
}

/* ---------- 2. 底色：薄荷 × 暖杏 柔和漸層，靜止不閃 ---------- */
body{
  background:
    radial-gradient(1100px 720px at -8% 112%, #D6EFE2 0%, rgba(214,239,226,0) 62%),
    radial-gradient(980px 620px at 108% -12%, #F7E8C8 0%, rgba(247,232,200,0) 64%),
    linear-gradient(180deg,#FDFEFD 0%,#F7FAF8 100%) fixed;
  color:var(--ink);
  padding:26px 40px 72px;
  font-family:"Microsoft JhengHei","Segoe UI",sans-serif;
}
.aurora{display:none}

/* ---------- 3. 頂部：LOGO 左、分類中、狀態與搜尋右（單列、無卡片底） ---------- */
.top-dock{
  background:linear-gradient(180deg,rgba(253,254,253,.97) 78%,rgba(253,254,253,.80) 100%);
  box-shadow:none;padding:10px 0 14px;border-bottom:1px solid var(--line-hair);
}
.top-dock header,header{
  background:transparent!important;border:0!important;box-shadow:none!important;
  display:flex;align-items:center;gap:14px;flex-wrap:wrap!important;
  padding:6px 2px 16px;zoom:1!important;
}

/* 品牌（左上） */
.brand{order:1;flex:none;display:flex;align-items:center;gap:9px;min-width:0}
.brand-logo{width:30px;height:30px;mix-blend-mode:multiply;filter:none}
.brand h1{font-size:19px;font-weight:900;letter-spacing:.06em;color:var(--ink)}

/* 分類區（正中）：三個分類橫向並排，籌碼收在各自下方 */
.top-dock header nav,nav{
  order:2;flex:0 1 auto;display:flex;flex-direction:row;flex-wrap:wrap;
  justify-content:center;align-items:flex-start;gap:10px 34px;padding:0;
  margin-left:auto;margin-right:auto;
}
.nav-group{display:flex;flex-direction:column;align-items:center;gap:7px;background:transparent}
.nav-group.is-collapsed{grid-template-columns:none}

/* 三個分類＝參考圖的那排選單文字 */
.nav-group-label,.top-dock nav .nav-group-label{
  background:transparent!important;border:0!important;box-shadow:none!important;
  color:var(--ink)!important;font-size:14.5px;font-weight:900;letter-spacing:.2em;
  padding:2px 2px;min-height:0!important;height:auto!important;cursor:pointer;
}
.nav-group-label::after{content:'▾'!important;font-size:9px;opacity:.5}
.nav-group:nth-child(1) .nav-group-label,
.nav-group:nth-child(2) .nav-group-label,
.nav-group:nth-child(3) .nav-group-label{
  background:transparent!important;border:0!important;color:var(--ink)!important;
}
.nav-group-label:hover{opacity:.62;filter:none}
.nav-group.is-collapsed .nav-group-label::after{content:'▸'!important}

/* 戰法籌碼：極輕的小描邊膠囊 */
.nav-group-list{display:flex!important;flex-wrap:wrap!important;justify-content:center;gap:6px;min-width:0;zoom:1!important}
.top-dock nav .nav-group-list button{
  background:transparent!important;border:1px solid var(--line-soft)!important;
  color:var(--ink-soft)!important;border-radius:999px;padding:4px 12px!important;
  min-height:0!important;height:auto!important;font-size:12px;font-weight:700;
  box-shadow:none!important;transform:none!important;gap:6px;
}
.top-dock nav .nav-group-list button:hover{background:rgba(22,36,30,.05)!important;color:var(--ink)!important}
.top-dock nav .nav-group-list button .nav-name{color:inherit!important}
.top-dock nav .nav-group-list button .nav-count{background:transparent!important;color:var(--ink-soft)!important;font-weight:800;opacity:.75}
/* 收合中的分類：只留分類文字，戰法鈕整排收起（層級要高於上面的 display:flex!important） */
.nav-group.is-collapsed .nav-group-list{display:none!important}
.nav-empty{border:1px dashed var(--line-soft);color:var(--ink-soft);background:transparent;font-size:12px;border-radius:999px;padding:4px 12px}

/* 狀態列（右側）：純文字，不要一顆一顆的底；靠 order 排到最右邊 */
.pill,.top-dock header .pill{
  order:3;
  background:transparent!important;border:0!important;color:var(--ink-soft)!important;
  font-size:11.5px;font-weight:700;padding:0 1px!important;
}
.pill b{color:var(--ink)!important}
#connPill,#futPill,#monPill{font-weight:800!important}
.brand~.pill,#reviewPill{margin-left:0}
#reviewPill{
  background:transparent!important;border:1.5px solid var(--ink)!important;color:var(--ink)!important;
  border-radius:999px;padding:5px 14px!important;font-weight:900;font-size:11.5px;
}
#reviewPill:hover{background:var(--ink)!important;color:#fff!important}

/* 搜尋：參考圖那種圓形描邊搜尋框 */
#reviewPill{order:4}
.stock-search{order:5;margin-left:0;display:inline-flex;align-items:center;gap:0}
.stock-search input{
  background:#fff;border:1.5px solid var(--ink);border-right:0;border-radius:999px 0 0 999px;
  height:32px;width:128px;padding:0 14px;font-size:12.5px;color:var(--ink);
}
.stock-search input::placeholder{color:var(--ink-soft)}
.stock-search input:focus{box-shadow:none;outline:none}
.stock-search button{
  background:var(--ink);color:#fff;border:1.5px solid var(--ink);border-radius:0 999px 999px 0;
  height:32px;padding:0 16px;font-size:12.5px;font-weight:900;white-space:nowrap;
}
.stock-search button:hover{background:#2C4438}

/* ---------- 4. 跑馬燈：安靜的一條細線 ---------- */
.ticker-zone{margin-top:2px}
.ticker-board{gap:4px;margin:0 0 2px}
.ticker-line{
  background:transparent;border:0;border-bottom:1px solid var(--line-hair);border-radius:0;
  min-height:30px;padding:4px 2px;font-size:12.5px;color:var(--ink-soft);
}
.ticker-line b{color:var(--ink);font-weight:900}
.ticker-line.market b,.ticker-line.news b,.ticker-line.alert b{color:var(--ink)}
.ticker-toggle{border:1px solid var(--line-soft);background:transparent;color:var(--ink-soft);font-weight:800}
.ticker-toggle:hover{background:rgba(22,36,30,.05);color:var(--ink)}

/* ---------- 5. 分區卡片：白卡、細邊、大留白 ---------- */
.sections{gap:22px;max-width:1720px;margin:8px auto 0}
.sec{
  background:var(--card);border:1px solid var(--line-hair);border-radius:20px;
  box-shadow:0 1px 2px rgba(22,36,30,.03);overflow:hidden;
}
.sec-head{background:transparent;border-bottom:1px solid var(--line-hair);padding:18px 26px}
.sec-head:hover{background:rgba(22,36,30,.015)}
.sec-head .ti{font-size:16px;font-weight:900;letter-spacing:.02em}
.sec-head .date,.sec-head .cnt{color:var(--ink-soft);font-weight:700}
.sec-head .cpy{
  background:transparent;border:1.5px solid var(--ink);color:var(--ink);
  border-radius:999px;padding:4px 14px;font-weight:900;
}
.sec-head .cpy:hover{background:var(--ink);color:#fff}
.sec-head .cpy.ok{background:transparent;border-color:#1E9E63;color:#1E7B4D}
.sec-head .cpy.bad{background:transparent;border-color:#D64545;color:#B33B3B}

/* 表格：只留極細橫線，表頭小而淡 */
table{background:transparent}
thead th{
  color:var(--ink-soft);font-weight:800;font-size:11.5px;letter-spacing:.04em;
  border-bottom:1px solid var(--line-soft);padding:12px 8px;
}
tbody tr{border-bottom:1px solid var(--line-hair);animation:none}
tbody tr:hover{background:rgba(22,36,30,.022)}
td{padding:11px 8px;font-size:13px}
td.p{font-weight:900}
th.leg-h,th.hl-h,th.time-h{color:var(--ink-soft)}

/* 均線與標籤：改成極輕描邊，不用色塊 */
.mav,.mas{
  background:transparent!important;border:1px solid rgba(22,36,30,.22);color:var(--ink-soft)!important;
  border-radius:999px;padding:1px 7px;font-weight:800;
}
.mav.maW,.mas.maW{border-color:rgba(106,79,182,.42);color:#6A4FB6!important}
.mav.maM,.mas.maM{border-color:rgba(176,124,10,.45);color:#9A6E08!important}
.mas.maLow{border-color:rgba(11,122,107,.45);color:#0B7A6B!important}
.sigc{border-radius:999px;padding:1px 8px;font-weight:700}
.subtag{background:transparent;border:1px solid var(--line-soft);border-radius:999px;color:var(--ink-soft)}
.mkt{border-radius:999px;border-color:var(--line-soft);color:var(--ink-soft)}
.excl-chip{background:transparent;border:1px solid var(--line-soft);color:var(--ink-soft);border-radius:999px}
tr.dayhead td{background:rgba(22,36,30,.03);color:var(--ink-soft);border-top:1px solid var(--line-hair)}
tr.dayhead:hover td{background:rgba(22,36,30,.05)}
.float-head{background:#fff;border-color:var(--line-hair);box-shadow:0 10px 24px rgba(22,36,30,.10)}
.empty,footer{color:var(--ink-soft)}
footer{padding:26px 8px 0;font-size:12.5px}

/* ---------- 6. 預覽工具列（同提案版，改成極簡描邊） ---------- */
#pvBar{background:#fff;border:1px solid var(--line-soft);color:var(--ink-soft);
  box-shadow:0 10px 26px rgba(22,36,30,.14);border-radius:999px}
#pvBar b{color:var(--ink)}
#pvBar button{border:1.5px solid var(--ink);background:transparent;color:var(--ink);font-weight:900}
#pvBar button:hover{background:rgba(22,36,30,.06)}
#pvBar button.on{background:var(--ink);color:#fff;border-color:var(--ink)}

/* ---------- 7. 手機 ---------- */
@media(max-width:900px){
  body{padding:16px 16px 56px}
  .top-dock header,header{padding:4px 0 12px;gap:10px}
  .brand h1{font-size:16px}
  .brand-logo{width:26px;height:26px}
  .top-dock header nav,nav{gap:8px 18px;order:6;flex-basis:100%;margin:6px 0 0}
  .stock-search{margin-left:auto}
  .sec{border-radius:16px}
  .sec-head{padding:14px 16px}
}
/* ---------- 8. 分類只留文字在頂列；戰法鈕移到 header 下方的置中托盤 ---------- */
#minChips{display:flex;flex-wrap:wrap;justify-content:center;align-items:center;gap:6px;padding:10px 4px 0}
#minChips .nav-group-list{display:flex!important;flex-wrap:wrap!important;justify-content:center;gap:6px;min-width:0;zoom:1!important}
#minChips .nav-group-list button{
  background:transparent!important;border:1px solid var(--line-soft)!important;color:var(--ink-soft)!important;
  border-radius:999px;padding:4px 12px!important;min-height:0!important;height:auto!important;
  font-size:12px;font-weight:700;box-shadow:none!important;transform:none!important;gap:6px;
}
#minChips .nav-group-list button:hover{background:rgba(22,36,30,.05)!important;color:var(--ink)!important}
#minChips .nav-group-list button .nav-name{color:inherit!important}
#minChips .nav-group-list button .nav-count{background:transparent!important;color:var(--ink-soft)!important;font-weight:800;opacity:.75}
.top-dock header nav{gap:36px}
@media(max-width:900px){#minChips{padding:8px 0 0}}
/* 收合中的分類，其戰法鈕列隱藏（權重必須高於上面的 display:flex!important） */
#minChips .nav-group-list.is-hidden{display:none!important}
/* ============================================================================
   第二輪（2026-09-26 用戶指示）：「不要有一堆圖案、文字也好看」
   做法：① 裝飾圖案一律隱藏／移除（週轉率火苗 🔥 是鐵律規定，保留）
        ② 分類選中＝白色膠囊（照用戶提供的參考圖）
        ③ 戰法鈕＝白底細框膠囊
        ④ 字體改用微軟正黑體 UI、加強字距與字重層次
   ============================================================================ */
body{
  font-family:"Microsoft JhengHei UI","Microsoft JhengHei","Noto Sans TC",system-ui,-apple-system,"Segoe UI",sans-serif;
  -webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;letter-spacing:.012em;
}
.top-dock{background:linear-gradient(180deg,#E9F2EB 0%,#F2F7F2 62%,rgba(250,252,249,.94) 100%)}
.brand h1{font-size:18px;font-weight:800;letter-spacing:.16em}

/* 分類鈕的圖示全部隱藏 */
.nav-icon{display:none!important}

/* 目前展開的分類＝白色膠囊（參考圖的選中效果） */
.nav-group-label{padding:7px 18px!important;border-radius:999px!important;transition:background .15s,box-shadow .15s}
.nav-group:not(.is-collapsed) .nav-group-label{
  background:#FFFFFF!important;box-shadow:0 2px 10px rgba(22,36,30,.10);color:var(--ink)!important;
}
.nav-group.is-collapsed .nav-group-label{opacity:.72}
.nav-group.is-collapsed .nav-group-label:hover{opacity:1}

/* 戰法鈕＝白底細框膠囊（照第二張參考圖） */
#minChips .nav-group-list button{
  background:#FFFFFF!important;border-color:rgba(22,36,30,.10)!important;color:#3F5348!important;
  padding:5px 14px!important;font-weight:700;
}
#minChips .nav-group-list button:hover{background:#F3F8F4!important;border-color:rgba(22,36,30,.22)!important;color:var(--ink)!important}

/* 表格文字層次：標題重、表頭輕、數字等寬 */
.sec-head .ti{font-size:15px;font-weight:800;letter-spacing:.06em}
thead th{font-size:11px;font-weight:700;letter-spacing:.10em;color:#8B9A91}
td{letter-spacing:.012em}
footer{letter-spacing:.03em}

/* ============================================================================
   第三輪（2026-09-26）DEEPSEEK 建議：極簡質感升級六刀（減法）
   目標：安靜、大量留白、有呼吸感（商業網站質感；參考 E7WAY）
   範圍：只加樣式覆蓋；不動 HTML 結構、不動資料流、不動任何資料邏輯
   ⚠️ 三處刻意偏離原建議（守住既有鐵律與用戶提供的參考圖）：
     ① 頂部底色維持「淡霧綠漸層」——那是用戶參考圖 1 的指定特徵
     ② 展開中的分類維持「白色膠囊」——同上（參考圖 1 的選中效果）
     ③ 成交價／漲跌幅「不」套深灰藍 !important——否則會蓋掉 R3 漲紅跌綠，
        以及漲跌停紅綠底白字（board.css 的 td.p.limbg-up／limbg-down）
   ============================================================================ */

/* ---------- 第 1 刀：頂部區域減法（狀態燈只剩小圓點＋短文字） ---------- */
.top-dock{
  padding:18px 0 20px;
  box-shadow:none;
  border-bottom:1px solid rgba(22,36,30,.06);
}
.top-dock header,header{
  display:flex;align-items:center;gap:24px;padding:0 4px 14px;
  background:transparent!important;border:0!important;box-shadow:none!important;
}
.brand{gap:12px}
.brand h1{font-size:20px;font-weight:800;letter-spacing:.18em;color:#16241E}
.pill,.top-dock header .pill{
  background:transparent!important;border:0!important;padding:0 2px!important;
  font-size:11.5px;font-weight:600;letter-spacing:.02em;color:#7D8A82!important;
}
.pill b{color:#16241E!important;font-weight:800}
#connPill,#futPill,#monPill{font-weight:700;font-size:11px;letter-spacing:.04em}
.stock-search{gap:0}
.stock-search input{
  height:30px;width:140px;padding:0 14px;font-size:12px;color:#16241E;
  border:1px solid rgba(22,36,30,.14)!important;border-right:0!important;
  border-radius:999px 0 0 999px!important;background:#FFFFFF!important;
}
.stock-search input::placeholder{color:#A8B2AB}
.stock-search input:focus{border-color:rgba(22,36,30,.35)!important;box-shadow:none!important;outline:none}
.stock-search button{
  height:30px;padding:0 16px;font-size:12px;font-weight:700;
  border:1px solid rgba(22,36,30,.14)!important;border-left:0!important;
  border-radius:0 999px 999px 0!important;background:#FFFFFF!important;color:#3F5348!important;
}
.stock-search button:hover{background:#F3F8F4!important}
#reviewPill{
  background:transparent!important;border:1.5px solid #16241E!important;color:#16241E!important;
  border-radius:999px;padding:6px 16px!important;font-size:11.5px;font-weight:800;letter-spacing:.04em;
}
#reviewPill:hover{background:#16241E!important;color:#FFFFFF!important}

/* ---------- 第 2 刀：跑馬燈安靜化（收成安靜的一行、移除切換動畫） ---------- */
.ticker-board{gap:0;margin:4px 0 0}
.ticker-line{
  background:transparent!important;
  border:0!important;
  border-bottom:1px solid rgba(22,36,30,.05)!important;
  border-radius:0!important;
  min-height:32px;padding:6px 4px!important;
  font-size:12.5px;color:#7D8A82;letter-spacing:.015em;
}
.ticker-line b{color:#16241E;font-weight:800;letter-spacing:.08em;font-size:11.5px}
.ticker-line.market b,.ticker-line.news b,.ticker-line.alert b{color:#16241E!important}
.ticker-line .ticker-copy{animation:none!important}
.ticker-toggle{
  border:1px solid rgba(22,36,30,.12)!important;background:transparent!important;
  color:#7D8A82!important;font-weight:700;font-size:11px;padding:2px 10px;border-radius:999px;
}
.ticker-toggle:hover{background:rgba(22,36,30,.04)!important;color:#16241E!important}

/* ---------- 第 3 刀：戰法鈕＝安靜的白色膠囊選單 ---------- */
#minChips{padding:14px 4px 0;gap:8px}
#minChips .nav-group-list{gap:8px;justify-content:center}
/* 未選中：透明底、細框、灰字 */
#minChips .nav-group-list button{
  background:transparent!important;
  border:1px solid rgba(22,36,30,.10)!important;
  color:#7D8A82!important;
  border-radius:999px!important;
  padding:7px 16px!important;
  min-height:0!important;height:auto!important;
  font-size:12.5px;font-weight:600;letter-spacing:.02em;
  box-shadow:none!important;transform:none!important;
  transition:background .18s ease,border-color .18s ease,color .18s ease;
}
#minChips .nav-group-list button:hover{
  background:rgba(22,36,30,.04)!important;
  border-color:rgba(22,36,30,.20)!important;
  color:#16241E!important;
}
/* 選中（該戰法分區已展開）：白底＋柔和陰影＋深字 */
#minChips .nav-group-list button.on,
#minChips .nav-group-list button[aria-expanded="true"]{
  background:#FFFFFF!important;border-color:transparent!important;color:#16241E!important;
  font-weight:800!important;box-shadow:0 2px 10px rgba(22,36,30,.10)!important;
}
/* 戰法名稱：色碼唯一來源仍是 strategy_colors.json（R7），CSS 不寫死戰法色 */
#minChips .nav-group-list button .nav-name{color:inherit!important}
#minChips .nav-group-list button.on .nav-name{color:#16241E!important}
#minChips .nav-group-list button .nav-count{
  background:transparent!important;color:#A8B2AB!important;font-weight:700;font-size:11px;opacity:1;
}
#minChips .nav-group-list button.on .nav-count{color:#7D8A82!important}
/* 分類標籤（盤前資訊／盤中動態／盤後策略）：只剩文字，不加底色
   ⚠️ 展開中的那一個仍保留白色膠囊（用戶參考圖 1） */
.nav-group-label,.top-dock nav .nav-group-label{
  border:0!important;
  border-radius:999px!important;
  background:transparent!important;
  box-shadow:none!important;
  color:#7D8A82!important;
  font-size:13px;font-weight:800;letter-spacing:.22em;
  padding:7px 18px!important;min-height:0!important;height:auto!important;
  transition:background .18s ease,color .18s ease,box-shadow .18s ease;
}
.nav-group:not(.is-collapsed) .nav-group-label{
  background:#FFFFFF!important;
  box-shadow:0 2px 10px rgba(22,36,30,.10)!important;
  color:#16241E!important;
}
.nav-group.is-collapsed .nav-group-label{background:transparent!important;box-shadow:none!important;color:#7D8A82!important}
.nav-group .nav-group-label:hover{color:#16241E!important}
.nav-group:not(.is-collapsed) .nav-group-label:hover{color:#16241E!important}
.nav-group-label::after{content:'▾'!important;font-size:9px;opacity:.45;margin-left:6px}
.nav-group.is-collapsed .nav-group-label::after{content:'▸'!important}

/* ---------- 第 4 刀：卡片與留白──節奏感（去陰影、極淡邊框） ---------- */
.sections{
  gap:28px;
  max-width:1680px;
  margin:20px auto 0;
  padding:0 8px;
}
.sec{
  background:#FFFFFF;
  border:1px solid rgba(22,36,30,.055)!important;
  border-radius:18px;
  box-shadow:none!important;
  overflow:hidden;
  animation:none!important;
}
.sec-head{
  background:transparent!important;
  border-bottom:1px solid rgba(22,36,30,.055)!important;
  padding:22px 32px!important;
}
.sec-head:hover{background:rgba(22,36,30,.012)!important}
.sec-head .ti{font-size:16px;font-weight:800;letter-spacing:.04em;color:#16241E}
.sec-head .date,.sec-head .cnt{color:#A8B2AB!important;font-weight:600;font-size:11.5px;letter-spacing:.02em}
.sec-head .cpy{
  background:transparent!important;
  border:1.5px solid rgba(22,36,30,.18)!important;
  color:#7D8A82!important;
  border-radius:999px;padding:4px 14px!important;
  font-weight:800;font-size:11px;letter-spacing:.04em;
  transition:all .18s ease;
}
.sec-head .cpy:hover{background:#16241E!important;border-color:#16241E!important;color:#FFFFFF!important}

/* ---------- 第 5 刀：表格安靜化（列高加大、裝飾淡化） ---------- */
thead th{
  color:#A8B2AB!important;
  font-weight:700;font-size:10.5px;letter-spacing:.10em;
  border-bottom:1px solid rgba(22,36,30,.055)!important;
  padding:14px 8px!important;
  text-transform:none;
}
tbody tr{border-bottom:1px solid rgba(22,36,30,.035)!important;animation:none!important}
tbody tr:hover{background:rgba(22,36,30,.018)!important}
td{
  padding:14px 8px!important;
  font-size:13px;color:#3A4A55;
  letter-spacing:.015em;line-height:1.5;
}
/* ⚠️ 成交價／漲跌幅只調字重，不設 color!important（否則 R3 漲紅跌綠會失效） */
td.p,td.chg{font-weight:700}
/* 代號：從深綠改成灰、縮小（比原建議的 #A8B2AB 稍深一級，維持可讀） */
td.n.cn .code,td .code{color:#8B9A91!important;font-weight:600!important;font-size:11px!important;letter-spacing:.04em}
td.n.cn .nm{color:#16241E!important;font-weight:700!important;letter-spacing:.015em}
/* 均線標籤：極淡描邊膠囊，不用色塊 */
.mav,.mas{
  background:transparent!important;
  border:1px solid rgba(22,36,30,.14)!important;
  color:#7D8A82!important;
  border-radius:999px!important;
  padding:1px 8px!important;font-size:10px!important;font-weight:700!important;letter-spacing:.03em;
}
.mav.maW,.mas.maW{border-color:rgba(106,79,182,.35)!important;color:#6A4FB6!important}
.mav.maM,.mas.maM{border-color:rgba(176,124,10,.35)!important;color:#9A6E08!important}
.mas.maLow{border-color:rgba(11,122,107,.35)!important;color:#0B7A6B!important}
/* 技術分析／產業動態標籤：縮小、淡化 */
/* 🆕 2026-10-02 用戶指示：膠囊縮小、一行最多 3 個可折行
   ⇒ 字級 10px→8px、內距 7px→4px；並讓 td 允許折行（轉成垃圾等級最後一層）。 */
.sigc{
  font-size:8px!important;font-weight:600!important;
  padding:1px 4px!important;border-radius:999px!important;
  border:1px solid currentColor;opacity:.75;letter-spacing:.02em;
}
td.sig,td.ind{white-space:normal!important;vertical-align:top}
td.sig{max-width:190px}
td.ind{max-width:210px}
/* 市場標記（市／櫃／創／興／特）與子標籤：淡化 */
.mkt{
  background:transparent!important;border:1px solid rgba(22,36,30,.12)!important;
  color:#A8B2AB!important;border-radius:999px!important;font-size:10px!important;
  padding:0 6px!important;font-weight:700;
}
.subtag{
  background:transparent!important;border:1px solid rgba(22,36,30,.12)!important;
  /* 🔒 2026-09-27 用戶指示：「投信四區不要膠囊 用不一樣的顏色區隔就好」
     ⚠️ 這裡**絕對不能留 color**：CSS 的 `color:…!important` 會蓋掉 05-post.js 寫的行內 style，
        四種顏色就會全部變回同一個灰（實測踩到）。顏色一律由 JS 的 IT_SUB_COLOR 決定。 */
  border-radius:999px!important;font-size:10px!important;padding:0 7px!important;
}
/* 日期橫帶：安靜的淺底 */
tr.dayhead td{
  background:rgba(22,36,30,.025)!important;color:#7D8A82!important;
  border-top:1px solid rgba(22,36,30,.055)!important;
  border-bottom:1px solid rgba(22,36,30,.055)!important;
  font-weight:700;font-size:11.5px;letter-spacing:.06em;padding:10px 16px!important;
}
tr.dayhead:hover td{background:rgba(22,36,30,.04)!important}
tr.dayhead .dcnt{color:#A8B2AB!important;font-weight:600}
/* 剔除區：極淡 */
.excl{border-top:1px dashed rgba(22,36,30,.08)!important;padding:14px 32px!important}
.excl-bar{color:#A8B2AB!important;font-weight:700;font-size:11.5px;letter-spacing:.04em}
.excl-chip{
  background:transparent!important;border:1px solid rgba(22,36,30,.10)!important;
  color:#7D8A82!important;border-radius:999px!important;font-size:11px!important;padding:2px 10px!important;
}

/* ---------- 第 6 刀：整體字體節奏（讓文字呼吸） ---------- */
body{
  font-family:"Noto Sans TC","Microsoft JhengHei UI","Microsoft JhengHei",system-ui,-apple-system,"Segoe UI",sans-serif;
  -webkit-font-smoothing:antialiased;
  -moz-osx-font-smoothing:grayscale;
  letter-spacing:.015em;
  line-height:1.65;
  color:#3A4A55;
  padding:24px 32px 72px;
}
footer{color:#A8B2AB!important;font-size:11.5px;letter-spacing:.06em;padding:32px 8px 0;text-align:center}
.empty{
  color:#A8B2AB!important;
  border-top:1px dashed rgba(22,36,30,.08)!important;
  padding:24px;font-size:12.5px;letter-spacing:.04em;
}
/* 手機：保留原本的內距與較緊的列高（原建議沒涵蓋手機，這裡補上） */
@media(max-width:900px){
  body{padding:16px 14px 56px}
  .top-dock{padding:12px 0 14px}
  .top-dock header,header{gap:14px;padding:0 0 12px}
  .brand h1{font-size:16px}
  .sections{gap:20px;padding:0}
  .sec-head{padding:16px 16px!important}
  #minChips{padding:10px 0 0}
  thead th{padding:10px 6px!important}
  td{padding:11px 6px!important}
}

/* ============================================================================
   第四輪（2026-09-26）用戶指示：頂部固定列＝左品牌／中三分類／右搜尋（參考 WACA）
   ── 關鍵發現與做法（與原建議不同，但更安全）──
   · 現況：整個 .top-dock（品牌＋分類＋戰法鈕＋跑馬燈，實測 210px）本來就已經是
     position:sticky，等於「黏了一大塊」。所以問題不是「沒固定」，而是「固定太大塊」。
   · 做法：只留 64px 的導覽列在固定列裡；把「戰法鈕托盤」「狀態列」「跑馬燈」移出
     .top-dock（index.html 搬狀態列與跑馬燈、93-minimal-nav.js 一行改托盤位置）。
   · 為什麼不用 position:fixed：sticky 不會把元素抽離版面，不必補 padding-top，
     也永遠不會蓋住第一張卡片；而且「固定列真實下緣」自動變成 64px，
     浮動表頭（07-render.js）與「點分類跳區塊」定位會自動跟著修正，不必改那支 JS。
   · 手機（≤900px）維持原本「不黏」的排版，避免品牌＋三分類＋搜尋擠成一大塊黏在頂端。
   ============================================================================ */

@media(min-width:901px){
  /* ---------- 固定列本體：只有 64px ---------- */
  .top-dock{
    position:sticky;top:0;z-index:100;
    height:auto;padding:0;margin:-24px -32px 0;
    background:linear-gradient(180deg,#E9F2EB 0%,#F2F7F2 72%,rgba(247,250,248,.98) 100%);
    border-bottom:1px solid rgba(22,36,30,.07);
    box-shadow:none;
  }
  /* ---------- 三段式：左品牌／中分類／右（戰報＋搜尋） ---------- */
  .top-dock header,header{
    position:relative;top:auto;
    display:flex;align-items:center;
    /* 注意：board.css 有 .top-dock header{position:sticky;top:8px}，只覆蓋 position 不夠，殘留的 top:8px 會把整列往下推 8px */
    height:64px;gap:24px;
    padding:0 max(40px,calc((100% - 1680px)/2 + 8px));
    margin:0;
    background:transparent!important;border:0!important;box-shadow:none!important;
  }
  .brand{order:1;flex:0 0 auto;gap:10px;min-width:0}
  .brand h1{font-size:18px;font-weight:800;letter-spacing:.16em;white-space:nowrap}
  .brand-logo{width:26px;height:26px}
  /* 中間：三個分類（在「品牌右緣到右側群組左緣」之間置中） */
  .top-dock header nav,nav{
    order:2;flex:0 1 auto;
    display:flex;flex-direction:row;flex-wrap:nowrap;align-items:center;
    gap:0 30px;padding:0;margin-left:auto;margin-right:auto;
    background:transparent;border:0;box-shadow:none;
  }
  .nav-group{gap:0}
  /* 右邊：戰報＋搜尋 */
  #reviewPill{order:3;flex:0 0 auto;padding:6px 16px!important}
  .stock-search{order:4;flex:0 0 auto}
  .stock-search input{height:34px;width:160px}
  .stock-search button{height:34px}
}

/* 寬螢幕（≥1201px）：分類「真正置中」於整條固定列。
   這一段刻意只在大螢幕生效——absolute 會離開 flex 排版，窄一點時可能與搜尋框重疊，
   所以 901 到 1200px 走上面的「在剩餘空間置中」（永遠不重疊）。 */
@media(min-width:1500px){
  .top-dock header nav,nav{
    position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);
    margin:0;
  }
  /* 分類一旦離開 flex 排版，右側群組就沒有東西把它推到最右邊，
     所以這裡補一個 margin-left:auto（只在這個寬度區間，才不會搶走中間分類的 auto 邊距）。
     ⚠️ 2026-09-26：右側群組已包成 .header-right，要推的是外框（推 #reviewPill 沒用，
     它在 wrapper 裡面，會變成 wrapper 自己留在左邊、跟中間分類重疊）。 */
  .header-right{margin-left:auto}
}

/* ---------- 狀態列（即時／時間／連線／期貨）：在固定列外面，跟著頁面捲動 ---------- */
.status-row{
  display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;
  gap:4px 18px;padding:10px 4px 0;
}
.status-row .pill{
  background:transparent!important;border:0!important;
  padding:0!important;font-size:11.5px;font-weight:600;
  letter-spacing:.02em;color:#7D8A82!important;white-space:nowrap;
}
.status-row .pill b{color:#16241E!important;font-weight:800}
.status-row #livePill{display:inline-flex;align-items:center;gap:6px}

/* ---------- 戰法鈕托盤：固定列下方第一排（捲動時跟著走） ---------- */
#minChips{padding:12px 4px 2px}

/* ---------- 手機（≤900px）：維持原本不黏的排版 ---------- */
@media(max-width:900px){
  .top-dock{position:static;top:auto;height:auto;padding:12px 0 10px}
  .top-dock header,header{position:static;height:auto;padding:0 0 10px}
  .status-row{justify-content:flex-start;gap:4px 12px;padding:8px 2px 0}
  #minChips{padding:10px 0 0}
}

/* Logo artwork occupies only 36% of its transparent canvas. */
.brand .brand-logo{
  width:108px;height:108px;flex:0 0 108px;margin:-32px;
  object-fit:contain;mix-blend-mode:normal;filter:none;pointer-events:none;
}
@media(max-width:760px){
  .brand .brand-logo{width:88px;height:88px;flex-basis:88px;margin:-27px}
}

/* ============================================================================
   2026-09-26（用戶選定）：選中的分類改用「底線」，不再用白色膠囊
   ⚠️ 原建議用 ::after 畫底線，但既有的 ::after 是「▾／▸ 展開箭頭」
      （board.css `.nav-group-label::after{content:'▾'}`），兩個會打架
      （箭頭會被塞進 2px 高的底線盒子裡，文字上疊出一個黑塊）。
      所以這裡改用「沒人用的 ::before」畫底線，並把標籤內距收緊成文字選單的比例。
   ============================================================================ */
.nav-group-label,.top-dock nav .nav-group-label{
  position:relative;                 /* 底線用絕對定位，不佔高度、不會推走版面 */
  padding:6px 12px!important;
  border-radius:2px!important;
}
/* 未選中：透明底、灰字（沿用前一輪） */
.nav-group.is-collapsed .nav-group-label{
  background:transparent!important;box-shadow:none!important;color:#7D8A82!important;
}
/* 選中：透明底、深字＋2px 底線（底線寬度＝文字寬度，兩邊各讓開 12px 內距） */
.nav-group:not(.is-collapsed) .nav-group-label{
  background:transparent!important;
  box-shadow:none!important;
  color:#16241E!important;
}
.nav-group:not(.is-collapsed) .nav-group-label::before{
  content:'';
  position:absolute;left:12px;right:12px;bottom:2px;height:2px;
  background:#16241E;border-radius:1px;
}

/* ============================================================================
   2026-09-26（用戶指示）：跑馬燈不再顯示「📈 大盤動態 發行量加權股價指數 …」
   ── 整條收掉；收合成一行時改看「新聞標題」那一條（內容＝新聞＋心波精選摘要，
      由 06-sort-ticker.js 的 tickerSetCollapsedLine() 寫入）。
   ============================================================================ */
.ticker-line.market{display:none!important}
#tickerBoard.is-collapsed .ticker-line.news{display:flex!important}
#tickerBoard.is-collapsed .ticker-line.alert{display:none!important}

/* ============================================================================
   2026-09-26（用戶指示）：狀態列（⏱時間／心波AI收盤中／心波期貨連線中）
   搬到 LOGO「心波AI選股」的正下方 —— 品牌區變成兩行：
     第一行＝愛心 LOGO ＋ 心波AI選股
     第二行＝狀態列（左緣與 LOGO 對齊）
   作法是讓 .brand 可以換行，狀態列佔滿一行（flex-basis:100%）自然掉到第二行，
   固定列高度不變（64px）；狀態列現在在固定列裡面，捲到哪裡都看得到。
   ============================================================================ */
.brand{flex-wrap:wrap;row-gap:2px;column-gap:10px}
.brand .status-row{
  flex:0 0 100%;
  justify-content:flex-start;
  align-items:center;
  gap:2px 14px;
  padding:0;margin:0;
}
.brand .status-row .pill{font-size:11px;font-weight:600;letter-spacing:.01em}
.brand .status-row #livePill{display:inline-flex;align-items:center;gap:5px}

/* 手機保護（2026-09-26 實測踩到）：
   .brand 是可換行的 flex 容器（上面第一行＝LOGO＋名稱、第二行＝狀態列）。
   可換行 flex 容器的「最大內容寬」會把兩行「加總」——實測 519px，
   在 390px 手機上就把整頁撐出橫向捲軸（docScrollWidth 390 → 507）。
   用 max-width:100% 讓它照容器寬換行；桌機（1516px 可用）完全不受影響。 */
.brand{max-width:100%;min-width:0}

/* ============================================================================
   2026-09-26（用戶指示）：跑馬燈固定「一行」——左邊新聞、右邊心波精選
   · 左「新聞標題」：一次只播一則，每 8 秒換一則（滑鼠移上去暫停）
   · 右「心波精選」：一次三則
   · 大盤動態整條不顯示；「跑馬燈 ▸」展開鈕收掉（固定一行，不需要它了）
   ============================================================================ */
#tickerBoard{
  display:flex!important;flex-direction:row;align-items:stretch;gap:0;
  margin:4px 0 0;
  border-bottom:1px solid rgba(22,36,30,.05);   /* 底線交給整條，兩條線並排時才不會高低不一 */
}
#tickerBoard .ticker-line{border-bottom:0!important;min-height:32px}
#tickerBoard .ticker-line.market{display:none!important}
#tickerBoard .ticker-line.news{flex:1 1 auto;min-width:0}
/* ⚠️ 權重必須壓過前幾輪的 `#tickerBoard.is-collapsed .ticker-line.alert{display:none!important}`
   （那條選擇器是 1,2,0，會贏過單純的 1,1,0），所以這裡把 is-collapsed 版本一起寫進來。 */
#tickerBoard .ticker-line.alert,
#tickerBoard.is-collapsed .ticker-line.alert{flex:0 0 auto;max-width:52%;display:flex!important}
/* 新聞那一則必須能「縮短＋刪節號」，不能像原本用 max-content 把右邊擠出去 */
#tickerBoard .ticker-line.news .ticker-copy{
  display:block;flex:1 1 auto;min-width:0;width:auto;max-width:100%;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
}
/* 精選三則：不要被 board.css 的 max-width:20% 夾住 */
#tickerBoard .ticker-line.alert .ticker-link.stock-item{flex:0 0 auto;width:auto;max-width:none}
#tickerBoard .ticker-line.alert .ticker-sep{margin:0 7px}
/* 展開／收合鈕收掉 */
#tickerToggle,.ticker-zone.is-collapsed #tickerToggle{display:none!important}
@media(max-width:900px){
  #tickerBoard .ticker-line.alert{max-width:62%}
}

/* 精選三則必須「橫向並排」而非各自獨佔一行（board.css 對 .ticker-line span 有 display:block） */
#tickerBoard .ticker-line.alert>span{display:block;white-space:nowrap;overflow:hidden;min-width:0;flex:1 1 auto}
#tickerBoard .ticker-line.alert .ticker-link.stock-item{
  display:inline;width:auto;max-width:none;flex:none;padding:0;border:0;background:transparent;
  font:inherit;cursor:pointer;vertical-align:baseline;
}
#tickerBoard .ticker-line.alert .ticker-sep{display:inline;margin:0 7px}

/* ============================================================================
   2026-09-26（用戶指示）：「每一區的框減少 貼合文字／每個戰法彼此中間的空間縮一半」
   ── 實測前：收合卡片高 76px（標題列內距 22px 32px）、卡片間距 28px。
   ── 實測後：收合卡片高 50px（標題列內距 12px 18px）、卡片間距 14px。
   ============================================================================ */
.sections{gap:14px}                       /* 22 → 28 → 14（用戶要求減半） */
.sec{border-radius:14px}                  /* 卡片變矮，圓角跟著收，比例才對 */
.sec-head{padding:12px 18px!important}    /* 22px 32px → 12px 18px，貼合文字 */
.sec-head:hover{background:rgba(22,36,30,.012)!important}
.excl{padding:10px 18px!important}        /* 剔除區左右也跟標題列對齊 */

/* ============================================================================
   2026-09-26（用戶指示）：右上角改成「兩顆膠囊 ＋ 搜尋」，時間移到搜尋下面
   · 「心波期貨戰報」按鈕與期貨狀態合併 ⇒ 文字＝期貨即時狀態（連線中／下單中／斷線），
     點一下一樣開 /review（同一個連結）。
   · 「心波AI收盤中」搬到那顆膠囊的左邊，同樣做成膠囊。
   · 時間（quoteTime）移到搜尋框下面、靠右。
   ⚠️ 兩顆膠囊的選擇器一定要帶 id：`.top-dock header .pill` 是 0,2,1，
      只寫 .header-right .capsule（0,2,0）會被它蓋掉（實測：透明、padding 0、高度只剩 11px）。
   ============================================================================ */
.header-right{
  order:3;flex:0 0 auto;
  display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;
  gap:6px 12px;
}
/* 🔒 2026-09-27 用戶指示：兩顆狀態膠囊（心波AI／心波期貨）改成「上下」排列；
   原本貼在搜尋框下面的「時間」已整顆移除，所以不再有 order:4 那一行。 */
.header-right .status-stack{
  order:1;flex:0 0 auto;
  display:flex;flex-direction:column;align-items:stretch;gap:5px;
}
.header-right .status-stack #connPill{order:1;justify-content:center}
.header-right .status-stack #reviewPill{order:2;justify-content:center}
.header-right .stock-search{order:3}

/* 兩顆膠囊（形狀一致；戰報那顆是連結，框再深一點、有 hover） */
.header-right .capsule,.header-right #connPill{
  background:#FFFFFF!important;
  border:1px solid rgba(22,36,30,.14)!important;
  border-radius:999px!important;
  padding:5px 14px!important;
  display:inline-flex;align-items:center;gap:6px;
  font-size:11.5px!important;font-weight:800!important;letter-spacing:.02em;
  color:#3F5348!important;white-space:nowrap;
}
.header-right #reviewPill{
  background:#FFFFFF!important;border:1.5px solid #16241E!important;color:#16241E!important;
  padding:5px 16px!important;cursor:pointer;
}
.header-right #reviewPill:hover{background:#16241E!important;color:#FFFFFF!important}
/* 狀態色放最後，才壓得住上面的膠囊底色 */
.header-right #connPill.conn-online{color:#1E7B4D!important;border-color:rgba(30,158,99,.40)!important}
.header-right #connPill.conn-offline{color:#B33B3B!important;border-color:rgba(214,69,69,.40)!important}
.header-right #reviewPill.fut-on{color:#1E7B4D!important;border-color:rgba(30,158,99,.45)!important}
.header-right #reviewPill.fut-stale{color:#9A6E08!important;border-color:rgba(176,124,10,.45)!important}
.header-right #reviewPill.fut-off{color:#B33B3B!important;border-color:rgba(214,69,69,.45)!important}

/* 🔒 2026-09-27 用戶指示：網頁上的時間整顆移除（index.html 已無 #quoteTimePill）。
   這裡保留一道保險：萬一舊快取還帶著那一顆，也一律不顯示。 */
.header-right .time-line,.header-right #quoteTimePill{display:none!important}

/* 901 到 1200px：分類在流內用 auto 邊距置中，這時右側群組不能再搶 auto 邊距，
   否則中間分類會被推歪（≥1201 由第 4 輪的 .header-right{margin-left:auto} 接手）。 */
/* 🔒 2026-09-27：門檻由 1200 改成 1499 —— 兩顆狀態燈改成「左右並排」之後，右側群組變寬約 100px，
   在 1201 到 1400px 之間會壓到中間的分類列（實測 1262px 時「盤後策略」被「心波AI收盤中」蓋住）。
   這個區間改成讓分類留在流內、用 auto 邊距置中，永遠不會重疊。 */
@media(min-width:901px) and (max-width:1499px){
  .header-right{margin-left:0}
}
@media(max-width:900px){
  .header-right{justify-content:flex-start}
  .header-right .time-line,.header-right #quoteTimePill{text-align:left}
}


/* ============================================================================
   🔒 2026-09-27（用戶指示）：盤中分「做多／做空」兩區 ＋ 「點到甚麼就顯示甚麼」
   · .sections > .sec-grouphead ＝ 卡片列表裡的大分區標題（做多／做空）
   · #minChips .nav-sub        ＝ 上方戰法按鈕區（托盤）裡的做多／做空小標題
   · .nav-hidden               ＝ 不屬於目前選中頁籤的卡片／標題，整塊收起來
   · #navEmpty                 ＝ 該頁籤目前沒有任何卡片時的提示
   ============================================================================ */
.sections>.sec-grouphead{
  display:flex;align-items:center;gap:8px;
  margin:2px 2px -2px;
  font-size:13.5px;font-weight:900;letter-spacing:.14em;
  color:var(--ink);
}
.sections>.sec-grouphead::before{
  content:'';width:4px;height:15px;border-radius:2px;background:var(--ink);flex:none;
}
/* 台股慣例：做多＝紅、做空＝綠（只上色左側色條，文字維持墨色） */
.sections>.sec-grouphead[data-group-id="long"]::before{background:#D64545}
.sections>.sec-grouphead[data-group-id="short"]::before{background:#1E9E63}
.sections>.nav-hidden{display:none!important}
#navEmpty{margin:14px auto 0;max-width:1720px}

#minChips .nav-group-list .nav-sub{
  display:inline-flex;align-items:center;gap:5px;flex:0 0 auto;
  padding:2px 1px;white-space:nowrap;
  font-size:11px;font-weight:900;letter-spacing:.1em;color:var(--ink-soft);
}
#minChips .nav-group-list .nav-sub::before{
  content:'';width:3px;height:12px;border-radius:2px;background:currentColor;opacity:.85;
}
#minChips .nav-group-list .nav-sub.nav-sub-long{color:#D64545}
#minChips .nav-group-list .nav-sub.nav-sub-short{color:#1E9E63}

/* ============================================================================
   🔒 2026-09-27（用戶指示）：
   ① 新聞標題先隱藏  ② 心波精選搬進「各自的戰法卡片」  ③ 跑馬燈整條收掉
   · .ticker-zone 整條不顯示（大盤動態本來就隱藏、新聞標題要隱藏、心波精選已搬走）
   · .sec-picks ＝ 卡片標題列正下方那一條「心波精選」，只顯示這一支戰法自己的標的；
     沒有精選的卡片會由 JS 把整條收成 display:none，所以不會留一條空的。
   ============================================================================ */
.ticker-zone{display:none!important}
.ticker-line.news{display:none!important}

/* 🔒 2026-09-27 第二輪修正（用戶指正）：「心波精選」要接在戰法名稱的「後面」同一行，
   不是自己另起一條。所以它改成 .sec-head 的子項，排在 .ti（戰法名稱）與 .cnt（檔數）之間；
   精選多的卡片（例如鳳雛 21 則）會在這一格裡自己換行，戰法名稱與檔數仍維持在同一列。 */
/* ⚠️ 2026-09-27 實測踩到：.sec-head 是 flex 容器，flex 子項的 min-width:auto 對中文而言
   是「一個字」寬 ⇒ 戰法名稱會被精選擠成一行一個字（鳳雛戰法、金針戰法實測）。
   所以標題列裡除了精選以外的每一項都必須「不准壓縮」。 */
.sec-head>.arr,
.sec-head>.ti,
.sec-head>.date,
.sec-head>.cnt,
.sec-head>.cpy{flex:0 0 auto;white-space:nowrap}
.sec-head>.ti{overflow:hidden;text-overflow:ellipsis}
.sec-head>.sec-picks{
  flex:1 1 auto;min-width:0;
  display:flex;flex-wrap:wrap;align-items:center;gap:5px;
  margin-left:6px;
}
.sec-head>.sec-picks .picks-label{
  flex:none;
  font-size:10.5px;font-weight:900;letter-spacing:.12em;
  color:var(--ink-soft);
}
.sec-head>.sec-picks .picks-label::before{
  content:'';display:inline-block;width:3px;height:11px;border-radius:2px;
  background:currentColor;opacity:.8;margin-right:5px;vertical-align:-1px;
}
.sec-head>.sec-picks .pick-chip{
  font-size:11.5px;font-weight:700;line-height:1.5;
  color:var(--ink);background:#FFFFFF;
  border:1px solid var(--line-soft);border-radius:999px;
  padding:2px 10px;cursor:pointer;white-space:nowrap;
}
.sec-head>.sec-picks .pick-chip:hover{background:var(--ink);border-color:var(--ink);color:#FFFFFF}
@media(max-width:900px){
  .sec-head>.sec-picks{gap:4px;margin-left:4px}
  .sec-head>.sec-picks .pick-chip{font-size:11px;padding:2px 8px}
}
@media(max-width:620px){
  /* 手機：標題列改成可以換行，整條心波精選自己掉到第二行（order:9），
     否則戰法名稱會被精選擠到只剩幾個字。 */
  .sec-head{flex-wrap:wrap!important}
  .sec-head>.sec-picks{flex:1 1 100%;margin-left:0;order:9}
}

/* ============================================================================
   🔒 2026-09-27（用戶指示）
   ① 「圖3 的膠囊 高度在縮 跟字貼合即可 全部以此類推」
      ⇒ 全站所有小膠囊（精選晶片／複製鈕／上方戰法鈕／右上狀態燈／分類鈕／剔除籤）
        的上下內距一律收到 2px、行高 1.2 ⇒ 高度＝文字行高＋細框，不再有多餘留白。
   ② 「凍結視窗包含戰法區」
      ⇒ #minChips 已由 93-minimal-nav.js 搬進 .top-dock 內部（≥901px 的 sticky 固定列），
        這裡補固定列內的上下間距；手機（≤900px）固定列本來就不黏，維持原排版。
   ============================================================================ */
/* ---------- ① 小膠囊一律貼字 ---------- */
.sec-head>.sec-picks .pick-chip,
.sec-head .cpy,
#minChips .nav-group-list button,
.nav-group-label,
.header-right .capsule,
.header-right #connPill,
.header-right #reviewPill,
.nav-empty,
.excl-chip,
.nav-sub{
  padding-top:2px!important;padding-bottom:2px!important;
  line-height:1.2!important;
}
.sec-head>.sec-picks .pick-chip{padding-left:9px!important;padding-right:9px!important}
.sec-head .cpy{padding-left:9px!important;padding-right:9px!important}
#minChips .nav-group-list button{padding-left:12px!important;padding-right:12px!important}
.header-right .capsule,.header-right #connPill{padding-left:12px!important;padding-right:12px!important}
.header-right #reviewPill{padding-left:14px!important;padding-right:14px!important}
/* 分類鈕（盤前資訊／盤中動態／盤後策略）是主導覽，比其他膠囊再留一點高度（4px） */
.nav-group-label,.top-dock nav .nav-group-label{
  padding-top:4px!important;padding-bottom:4px!important;
  padding-left:14px!important;padding-right:14px!important;
}

/* ---------- ② 凍結視窗：戰法按鈕區黏在固定列最下面 ---------- */
/* 🔒 2026-09-27 用戶指示：「上下空間沒有平均 請優化」
   實測（1600px）：戰法按鈕列上緣到第一顆鈕 5px、鈕下緣到列底 11px ⇒ 上下差一倍。
   成因＝原本 padding 是 4px 上 / 10px 下（加上 1px 上下框線剛好變 5 / 11）。
   改成上下同一個值，並把「框線也算進去」才真的視覺置中。 */
@media(min-width:901px){
  #minChips{padding:8px 4px 8px!important}
}
@media(max-width:900px){
  #minChips{padding:8px 0 8px!important}
}

/* ============================================================================
   🔒 2026-09-27（用戶指示）：「圖中這兩個把字跟膠囊縮小 變成左右」
   右上兩顆狀態燈（心波AI收盤中／心波期貨收盤中）由「上下」改成「左右」並排，
   字級與膠囊再縮一級（字 11.5 → 10.5px、上下內距 2 → 1px、狀態圓點 8 → 6px）。
   ⚠️ `.header-right .status-stack #connPill` 是 0,3,1，才壓得過前面的
      `.header-right .capsule,.header-right #connPill{font-size:11.5px!important}`（0,2,1）。
   ============================================================================ */
.header-right .status-stack{
  flex-direction:row!important;
  align-items:center!important;
  gap:6px!important;
  flex:0 0 auto;
}
.header-right .status-stack #connPill,
.header-right .status-stack #reviewPill{
  padding:1px 10px!important;
  font-size:10.5px!important;
  font-weight:800!important;
  letter-spacing:.02em!important;
  line-height:1.35!important;
}
.header-right #connPill::before{width:6px!important;height:6px!important}
.header-right #connPill.conn-online::before{box-shadow:0 0 0 2px rgba(30,158,99,.18)!important}
.header-right #connPill.conn-offline::before{box-shadow:0 0 0 2px rgba(214,69,69,.18)!important}
@media(max-width:900px){
  .header-right .status-stack{gap:5px!important}
  .header-right .status-stack #connPill,
  .header-right .status-stack #reviewPill{font-size:10px!important;padding:1px 9px!important}
}

/* 🔒 2026-09-27（實測踩到的坑）：兩顆狀態燈改成「左右並排」之後，
   .header-right 的「不換行最大內容寬」變成約 422px（原本上下堆疊時約 370px）。
   偏偏 .header-right 是 flex:0 0 auto（不能壓縮）⇒ 手機 390px 時整頁被撐開，
   量到 window.innerWidth 由 390 變成 422。修法：手機把右側群組改成可以壓縮、
   寬度以容器為準，並讓搜尋框自己跟著縮。 */
@media(max-width:900px){
  .header-right{flex:1 1 100%!important;min-width:0!important}
  .header-right .status-stack{flex-wrap:wrap!important}
  .header-right .stock-search{flex:0 1 auto;min-width:0}
  .header-right .stock-search input{width:auto!important;min-width:88px;flex:1 1 auto}
}

/* ============================================================================
   🔒 2026-09-27（用戶指示）：「做成一頁一頁 而不是上下滑看全部」
   點上方戰法鈕＝換到那一頁：卡片列表只留那一張，其餘整張收起來（.solo-off）。
   ⚠️ 一定要用 .sections> 子選擇器，否則會蓋到別的區塊。
   ============================================================================ */
.sections>.sec.solo-off{display:none!important}

/* ============================================================================
   🔒 2026-09-27（用戶指示）：品牌名稱「心波AI選股」後面放一顆「心波AI」指示燈（#connDot）。
   · 綠＝連線正常（盤中顯示連線中、收盤顯示收盤中，文字放 title 提示）
   · 紅（閃爍）＝與看板後端的即時連線斷了、正在自動重連
   · 灰＝還沒連上（剛開頁）
   ⚠️ 期貨狀態（#reviewPill）維持在右上角原本的位置，這一顆只代表「看板自己的即時連線」。
   ============================================================================ */
.brand .ai-dot{
  order:6;flex:0 0 auto;
  width:9px;height:9px;border-radius:50%;
  background:#9AA9B8;box-shadow:0 0 0 3px rgba(154,169,184,.18);
  margin-left:2px;
}
.brand .ai-dot.dot-online{background:#1E9E63;box-shadow:0 0 0 3px rgba(30,158,99,.18)}
.brand .ai-dot.dot-offline{background:#D64545;box-shadow:0 0 0 3px rgba(214,69,69,.18);animation:connRedBlink .7s ease-in-out infinite}
.brand .ai-dot.dot-unknown{background:#9AA9B8;box-shadow:0 0 0 3px rgba(154,169,184,.18)}
@media(max-width:900px){
  .brand .ai-dot{width:8px;height:8px;box-shadow:0 0 0 2px rgba(154,169,184,.18)}
  .brand .ai-dot.dot-online{box-shadow:0 0 0 2px rgba(30,158,99,.18)}
  .brand .ai-dot.dot-offline{box-shadow:0 0 0 2px rgba(214,69,69,.18)}
}

/* ============================================================================
   🔒 2026-09-27（用戶指示）：「凍結的部分 我想要你切割成上下兩區 用不同的顏色區分」
   固定列（≥901px 的 .top-dock，捲動時黏在頂端）實際上有兩列：
     · 上區＝品牌列（愛心＋心波AI選股＋指示燈 ／ 盤前-盤中-盤後分類 ／ 搜尋框）
     · 下區＝戰法按鈕列（做多／做空 ＋ 各支戰法鈕）
   這裡把兩區用不同色階切開，中間補一條細分隔線，讓「功能列」與「選戰法」一眼分得出來。
   ⚠️ 這一條寫在檔案最後，才會壓過前面（含 @media(min-width:901px)）的 .top-dock 底色設定。
   ============================================================================ */
.top-dock{
  /* 上區：幾乎白的霧綠（品牌／分類／搜尋） */
  background:linear-gradient(180deg,#F6FAF7 0%,#F1F7F3 100%)!important;
  border-bottom:0!important;
}
#minChips{
  /* 下區：明顯深一階的霧綠（戰法按鈕），並用上下兩條細線把這一條「框」出來 */
  background:#DCEAE0!important;
  border-top:1px solid rgba(22,36,30,.13)!important;
  border-bottom:1px solid rgba(22,36,30,.09)!important;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.75)!important;
}

/* ============================================================================
   🔒 2026-09-27（用戶指示）：「投信四區不要膠囊 用不一樣的顏色區隔就好」
   ⇒ 投信戰法第一欄的四種命中條件「拿掉膠囊」（透明底、無外框、無圓角、無內距留白），
      變成純文字，只用**四種不同的字色**區隔；顏色由 05-post.js 的 IT_SUB_COLOR 以行內 style 指定
      （整數買超＝金棕、連續整數買超＝紫、86天首買＝藍、零庫存建倉＝綠）。
   ⚠️ 行內 style 會贏過這裡的 class 規則，所以這裡**不設 color**，只負責把膠囊拆掉。
      演進備查：深底白字（很醜）→ 淡霧綠底（被否決）→ 粗體/細體（被改掉）→ 現在的純字色。
   ============================================================================ */
.subtag{
  background:transparent!important;
  border:0!important;
  border-radius:0!important;
  padding:0 2px!important;
  font-size:10.5px!important;
  font-weight:800!important;
  letter-spacing:.02em;
}

/* ============================================================================
   🔒 2026-09-27（用戶指示）：
     「整數買超這四區的字體是不是太小 請優化放大跟其他一樣」
     「全區戰法的字體大小 粗細 都以泰山腳為榜樣修改」
     「尤其是 雙線共振 改成正常」
   實測（CDP，1600px，每張表第一欄「戰法名稱」的實際字級／字重）：
     · 泰山腳                      13px / 400   ← 用戶指定的榜樣
     · 避雷針、天空十字星、臥龍、鳳雛   13px / 400   ← 本來就一致
     · 天使低點、25最低（盤中四支）    12.5px / 800  ← 不一致
     · 雙線共振                    12.5px / 900 ＋粉紅光暈  ← 最不一致
     · 投信四區（整數買超…）         10.5px / 800  ← 太小
   ⇒ 全部統一成「13px / 400」，雙線共振另外把光暈（text-shadow）拿掉。
   ⚠️ 只鎖「表格內」的第一欄（.sec tbody …）：卡片標題列裡的 .conf-title
      （雙線共振卡片標題，15px）與導覽列都不能被影響。
   ⚠️ 雙線共振的 <td> 有行內 style="font-weight:700"，行內樣式會被這裡的
      `!important` 蓋掉，所以不需要去改 JS。
   ============================================================================ */
.sec tbody td.strat,
.sec tbody td.strat>span,
.sec tbody td.stx,
.sec tbody td.stx>span{
  font-size:13px!important;
  font-weight:400!important;
}
.sec tbody td.strat>span.conf-title{
  text-shadow:none!important;   /* 雙線共振的粉紅光暈拿掉，跟其他戰法一樣「正常」 */
}

/* ============================================================================
   🔒 2026-09-27（用戶指示）：「（雙線共振托盤鈕）修改成正常」
   根因＝`board.css:377` 有一條專為雙線共振托盤鈕寫的特效規則：
     `.top-dock .nav-item[data-target="confwatch"] .nav-name{
         color:var(--strat-color,#ff72c6); text-shadow:0 0 8px rgba(255,114,198,.42); font-weight:900 }`
   它的字色被 logo-minimal 的 `#minChips … .nav-name{color:inherit!important}` 蓋掉了，
   但 **text-shadow（粉紅光暈）與 font-weight:900 沒有人蓋** ⇒ 那一顆按鈕看起來像浮起來／糊掉，
   跟其他戰法鈕不一致（實測截圖確認）。
   ⇒ 這裡把它一起歸零：顏色沿用其他按鈕的 inherit、光暈關掉、字重交還按鈕本身（選中 800／未選中 600）。
   （選擇器帶 id 與屬性，權重高於 board.css 那一條。）
   ============================================================================ */
#minChips .nav-group-list button[data-target="confwatch"] .nav-name{
  color:inherit!important;
  text-shadow:none!important;
  font-weight:inherit!important;
}
/* ============================================================================
   🔒 2026-09-27（用戶指示）：「看圖 就是當我移到盤中動態的時候 戰法就會這樣泡泡框浮動出來
   左邊是多單區 右邊是空單區」（參考 WACA 網站的選單泡泡框）
   · 盤中（live）那一份戰法鈕清單改放進 #navBubble，滑鼠移到「盤中動態」才浮出來；
     框內左欄＝做多區、右欄＝做空區（欄位與順序由 01-core.js 的 LIVE_GROUPS 決定）。
   · 泡泡框位置由 93-minimal-nav.js 量測「盤中動態」標籤後以 position:fixed 指定，
     所以不會被固定列（.top-dock）裁掉、也不會把下面的卡片推走。
   · 手機（≤900px）沒有滑鼠 ⇒ 改成 position:static，直接排在綠色那一條下面，不會破版。
   ============================================================================ */
#navBubble{
  position:fixed;left:0;top:0;z-index:300;
  display:none;
  background:#FFFFFF;
  border:1px solid rgba(22,36,30,.09);
  border-radius:16px;
  box-shadow:0 16px 40px rgba(22,36,30,.16),0 2px 6px rgba(22,36,30,.06);
  padding:16px 20px 18px;
  max-width:calc(100vw - 24px);
}
#navBubble.is-open{display:block}
#navBubble .nav-group-list{
  display:flex!important;flex-wrap:nowrap!important;
  align-items:flex-start!important;justify-content:flex-start!important;
  gap:0!important;
}
#navBubble .nav-group-list.is-hidden{display:none!important}
#navBubble .nav-col{
  display:flex;flex-direction:column;align-items:stretch;
  gap:4px;min-width:160px;
}
#navBubble .nav-col + .nav-col{
  margin-left:22px;padding-left:22px;
  border-left:1px solid rgba(22,36,30,.10);
}
#navBubble .nav-sub{
  display:block;margin:0 0 6px;padding:2px 8px!important;
  font-size:11px;font-weight:900;letter-spacing:.16em;line-height:1.2!important;
}
#navBubble .nav-sub.nav-sub-long{color:#D64545}
#navBubble .nav-sub.nav-sub-short{color:#1E9E63}
#navBubble .nav-sub::before{
  content:'';display:inline-block;width:3px;height:11px;border-radius:2px;
  background:currentColor;margin-right:7px;vertical-align:-1px;
}
#navBubble .nav-item{
  display:flex;align-items:center;gap:8px;
  background:transparent!important;border:1px solid transparent!important;
  border-radius:10px;color:#7D8A82!important;
  padding:6px 8px!important;min-height:0!important;height:auto!important;
  font-size:12.5px;font-weight:600;letter-spacing:.02em;
  text-align:left;justify-content:flex-start;
  box-shadow:none!important;transform:none!important;
  transition:background .16s ease,color .16s ease;
}
#navBubble .nav-item:hover{background:rgba(22,36,30,.05)!important;color:#16241E!important}
#navBubble .nav-item .nav-name{color:inherit!important}
#navBubble .nav-item .nav-icon{flex:0 0 auto;width:1.1em;text-align:center}
#navBubble .nav-item .nav-count{
  margin-left:auto;background:transparent!important;color:#A8B2AB!important;
  font-weight:700;font-size:11px;opacity:1;
}
#navBubble .nav-item.on,
#navBubble .nav-item[aria-expanded="true"]{
  background:#F1F7F3!important;color:#16241E!important;font-weight:800!important;
}
#navBubble .nav-item.on .nav-count{color:#7D8A82!important}
/* 雙線共振那一顆在 board.css 有一條專屬特效（粉紅光暈＋900 字重），泡泡框裡一併歸零 */
#navBubble .nav-item[data-target="confwatch"] .nav-name{
  color:inherit!important;text-shadow:none!important;font-weight:inherit!important;
}
@media(max-width:900px){
  #navBubble{
    position:static;left:auto;top:auto;
    margin:10px auto 0;max-width:100%;
    border-radius:14px;padding:12px 14px 14px;
  }
  #navBubble .nav-group-list{flex-wrap:wrap!important;justify-content:center!important}
  #navBubble .nav-col{min-width:134px}
  #navBubble .nav-col + .nav-col{margin-left:14px;padding-left:14px}
}

/* ============================================================================
   🆕 2026-09-27（用戶指示）：「綠色區先保留 我想要你放羊皮卷的祝福 每10秒更新一句」（🗑️【歷史】秒數後續改為 8 秒、現行 11 秒）
   · 盤中動態時，綠色那一條（#minChips）改放羊皮卷祝福；盤前／盤後時仍然放它們自己的戰法鈕。
   · 句子來自 js/00d-scroll-blessings.js（唯一來源 scrolls.json ＋ gratitude.json，
     由 sync_scroll_blessings.py 產生，與 templates.get_random_blessing() 同一組）。
   · 換句時先淡出、換字、再淡入（.is-fading），每 11 秒一次（計時器在 93-minimal-nav.js 的 SCROLL_EVERY）。
   ============================================================================ */
#minChips .dock-scroll{
  display:none;align-items:center;justify-content:center;gap:9px;
  width:100%;max-width:100%;padding:2px 6px;
  font-size:12.5px;color:#3F5348;letter-spacing:.02em;
  opacity:1;transition:opacity .4s ease;
}
#minChips .dock-scroll.is-on{display:flex}
#minChips .dock-scroll.is-fading{opacity:0}
#minChips .dock-scroll .dock-scroll-tag{
  flex:0 0 auto;font-weight:900;font-size:11px;letter-spacing:.14em;color:#2F6B54;
}
#minChips .dock-scroll .dock-scroll-text{
  min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:700;
}
@media(max-width:900px){
  #minChips .dock-scroll{font-size:12px;gap:6px}
  #minChips .dock-scroll .dock-scroll-text{white-space:normal;text-align:left}
}
/* ============================================================================
   🔒 2026-09-27（用戶指示）：「盤前資訊我想像這個圖一樣 當我點擊盤前資訊
   我要的資訊 會像卡片一樣 直接呈現」「照我的圖 我要並排四張」
   · 點「盤前資訊」→ 一張 .sec，裡面**四張並排白卡**（每張＝大標題 ＋ 底下幾條）。
   · 內容資料來自 js/00e-premarket.js（sync_premarket_cards.py 讀真實檔案產生，不編造數字）。
   · 只有第 1 張卡會隨時間變動（今天是不是交易日／現在時段／下一個推播倒數），
     它在瀏覽器端每秒自己算 ⇒ 不必重跑產生器也不會過期。
   · 平板（≤1200px）2 欄、手機（≤620px）1 欄，不破版。
   ============================================================================ */
.pm-sec .sec-body{padding:12px 16px 16px}
.pm-sec.collapsed .sec-body{display:none!important}
.pm-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:10px}
.pm-card{
  background:#FFFFFF;border:1px solid rgba(22,36,30,.08);border-radius:14px;
  padding:10px 12px;display:flex;flex-direction:column;gap:6px;min-width:0;height:auto;
}
.pm-head{display:flex;align-items:center;gap:8px}
.pm-head h4{margin:0;font-size:14px;font-weight:900;color:#16241E;letter-spacing:.02em}
.pm-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:4px}
.pm-list li{display:flex;gap:8px;align-items:flex-start;font-size:12.5px;line-height:1.5;color:#3F5348}
.pm-list li::before{content:'✓';flex:0 0 auto;color:#1E9E63;font-weight:900;font-size:12px;line-height:1.5}
.pm-k{flex:0 0 auto;color:#7D8A82;font-weight:800;min-width:0}
.pm-v{min-width:0;word-break:break-word}
.pm-card[data-pm="status"] .pm-k{color:#2F6B54}
.pm-card[data-pm="status"]{grid-column:-2 / -1}
@media(max-width:1200px){.pm-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:620px){
  .pm-grid{grid-template-columns:1fr}
  .pm-sec .sec-body{padding:10px}
}

/* 2026-10-03：盤前七張獨立卡片；事件條列、當日標的紅字。 */
.pm-grid{align-items:stretch}
.pm-head{justify-content:space-between;align-items:flex-start}
.pm-head h4{line-height:1.6}
.pm-time{flex:none;border-radius:6px;padding:2px 7px;background:#EDF4EF;color:#2F6B54;font-size:12px;font-weight:800}
.pm-list li{position:relative;display:block;padding-left:13px;overflow-wrap:anywhere}
.pm-list li::before{content:'•';position:absolute;left:0;top:0;color:#719580}
.pm-line{display:flex;flex-wrap:wrap;gap:3px 8px;align-items:baseline}
.pm-k{flex:initial;color:#3F5348}
.pm-k a{color:inherit;text-decoration:none}
.pm-k a:hover{text-decoration:underline}
.pm-v{flex:initial}
.pm-note{display:block;margin-top:1px;font-size:11.5px;color:#7D8A82;line-height:1.5}
.pm-list .pm-group{padding-top:5px;margin-top:2px;border-top:1px solid #EDF1EE;font-weight:900}
.pm-list .pm-group::before{content:''}
.pm-list .pm-group .pm-k{color:#2F6B54}
.pm-card[data-pm="status"] .pm-group:first-child,.pm-card[data-pm="futures"] .pm-group:first-child{padding-top:0;margin-top:0;border-top:0}
.pm-list .pm-active .pm-k,.pm-list .pm-active .pm-v,.pm-list .pm-active .pm-note,.pm-list .pm-active::before{color:#C62828!important}
.pm-list .pm-warning .pm-note,.pm-list .pm-warning .pm-v,.pm-refresh-error{color:#956324}
.pm-list .pm-muted .pm-k,.pm-list .pm-muted .pm-v{font-size:11.5px;color:#7D8A82}
.pm-change{margin-left:auto;font-weight:800;white-space:nowrap}
.pm-change.pm-up{color:var(--up,#C62828)!important}
.pm-change.pm-down{color:var(--down,#218548)!important}
.pm-change.pm-flat{color:#7D8A82}
@media(max-width:620px){.pm-card{padding:10px 12px}.pm-line{gap:2px 6px}}

/* 週資訊日期不加粗；申購日期與標的先列，價格另起一行。 */
.pm-head h4 .pm-week-date{font-size:11.5px;font-weight:400;color:#7D8A82}
.pm-ipo-first{display:flex;flex-wrap:wrap;align-items:baseline;gap:2px 8px}
.pm-ipo-date{font-weight:400;white-space:nowrap}
.pm-ipo-status{font-size:10.5px;color:#7D8A82}
.pm-ipo-pricing{margin-top:3px;font-size:10.5px;line-height:1.7;font-weight:400;letter-spacing:-.1px}
.pm-list .pm-ipo-row .pm-ipo-date{color:#000!important}
.pm-list .pm-ipo-row,.pm-list .pm-ipo-row .pm-k,.pm-list .pm-ipo-row .pm-ipo-pricing,.pm-list .pm-ipo-row .pm-ipo-status,.pm-list .pm-ipo-row::before{color:#000!important}
.pm-list .pm-ipo-row .pm-ipo-gap{color:#000!important}
.pm-list .pm-ipo-row,.pm-list .pm-ipo-row *{font-weight:400!important}
.pm-list .pm-ipo-row.pm-active .pm-ipo-gap{color:#C62828!important;font-weight:700!important}
.pm-list .pm-ipo-row + .pm-ipo-row{border-top:1px solid #DCE5DF;margin-top:5px;padding-top:8px}
.pm-list .pm-ipo-row + .pm-ipo-row::before{top:8px}
.pm-list .pm-settlement-date .pm-line,.pm-list .pm-settlement-countdown .pm-line,.pm-list .pm-settlement-week .pm-line{display:grid;grid-template-columns:5em minmax(0,1fr);column-gap:8px;align-items:baseline}
.pm-list .pm-settlement-date .pm-k,.pm-list .pm-settlement-countdown .pm-k,.pm-list .pm-settlement-week .pm-k{white-space:nowrap}
.pm-list .pm-settlement-week .pm-v{color:#C62828!important;font-weight:800}
.pm-list .pm-settlement-week .pm-v,.pm-list .pm-settlement-countdown .pm-v{font-variant-numeric:tabular-nums;white-space:nowrap}

/* 美國事件兩行：日期時間及名稱同列，前期／預期／公布各佔一欄。 */
.pm-list .pm-economy-row{padding-left:0;min-width:0}
.pm-list .pm-economy-row::before{content:none}
.pm-card[data-pm="economy"]{container-type:inline-size}
.pm-card[data-pm="economy"] .pm-head h4{min-width:0;white-space:normal}
.pm-card[data-pm="economy"] .pm-head h4 .pm-week-date{font-size:.82em;white-space:normal}
.pm-economy-first{font-size:11.5px;line-height:1.7;min-width:0}
/* 2026-10-11 用戶指示（附金十畫面）：第一列時間＋星號靠右，第二列名稱＋膠囊靠右。 */
.pm-economy-top{display:flex;align-items:center;gap:6px;min-width:0}
.pm-economy-when{flex:1 1 auto;min-width:0;white-space:nowrap;overflow-x:auto;color:inherit;text-decoration:none}
.pm-economy-title{display:flex;align-items:baseline;gap:6px;min-width:0;margin-top:1px}
.pm-economy-namewrap{flex:1 1 auto;min-width:0}
.pm-economy-name{color:inherit;text-decoration:none;overflow-wrap:anywhere}
.pm-economy-stars{flex:0 0 auto}
.pm-economy-unit{margin-left:3px;font-weight:400;color:#7D8A82}
.pm-economy-stars{letter-spacing:1px;font-size:11px;line-height:1}
.pm-economy-star{color:#DCE5DF}
.pm-economy-star.on{color:#DE4B36}
.pm-economy-badge{font-size:9.5px;line-height:1.55;padding:0 5px;border:1px solid #C9D4CD;border-radius:9px;color:#7D8A82;font-weight:400;white-space:nowrap}
.pm-economy-badge.pm-economy-released{border-color:#E7B7B2;color:#C62828}
.pm-economy-metric.is-missing .pm-economy-value{color:#9AA7A0;font-weight:400}
.pm-economy-value.pm-economy-filled{color:#C62828}
@container(max-width:240px){
  .pm-economy-first{font-size:clamp(9px,5.2cqi,11.5px)}
  .pm-card[data-pm="economy"] .pm-head h4{font-size:clamp(10px,5.6cqi,14px)}
}
.pm-economy-first a{color:inherit;text-decoration:none}
.pm-economy-first a:hover{text-decoration:underline}
.pm-economy-first a:focus-visible{outline:2px solid #2F6B54;outline-offset:-2px}
.pm-economy-date{font-weight:400}
.pm-economy-name{font-weight:700}
.pm-economy-metrics{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:4px;margin-top:4px;font-size:10.5px;line-height:1.7}
.pm-economy-metric{white-space:nowrap;overflow-x:auto}
.pm-economy-metric:nth-child(2){text-align:center}
.pm-economy-metric:last-child{text-align:right}
.pm-economy-label{color:#7D8A82;font-weight:400}
.pm-economy-value{font-weight:700}
.pm-list .pm-economy-row + .pm-economy-row{border-top:1px solid #DCE5DF;margin-top:5px;padding-top:8px}
.pm-list .pm-economy-row.pm-active .pm-economy-first,.pm-list .pm-economy-row.pm-active .pm-economy-value{color:#C62828!important}

/* 除權息五欄表格，保留配股數字，依用戶指示只顯示「股」。 */
.pm-list .pm-dividend-table{padding-left:0;overflow-x:auto}
.pm-list .pm-dividend-table::before{content:none}
.pm-dividend-quotes{width:100%;min-width:236px;border-collapse:collapse;font-size:11.5px;table-layout:auto}
.pm-dividend-quotes th,.pm-dividend-quotes td{padding:5px 3px!important;white-space:nowrap;text-align:left;border:0;border-bottom:1px solid #EDF1EE;background:transparent;color:#3F5348;font-size:inherit;letter-spacing:0;font-weight:400}
.pm-dividend-quotes thead th{font-size:10.5px;color:#7D8A82;font-weight:700}
.pm-dividend-quotes th:nth-child(n+4),.pm-dividend-quotes td:nth-child(n+4){text-align:right}
.pm-dividend-quotes .pm-dividend-date{font-weight:400}
.pm-dividend-quotes a{color:inherit;text-decoration:none}
.pm-dividend-quotes a:hover{text-decoration:underline}
.pm-dividend-quotes .pm-dividend-action{font:inherit;letter-spacing:inherit;color:inherit;background:transparent;border:0;border-radius:0;padding:0;margin:0;cursor:pointer;white-space:nowrap;text-align:inherit}
.pm-dividend-quotes .pm-dividend-action:hover{text-decoration:underline}
.pm-dividend-quotes .pm-dividend-action:focus-visible{outline:2px solid #2F6B54;outline-offset:2px}
#pmDividendDialog{margin:auto;box-sizing:border-box;width:min(780px,calc(100vw - 24px));max-height:calc(100dvh - 32px);padding:18px;border:1px solid #D9E4DC;border-radius:14px;background:#FFF;color:#3F5348;overflow:auto}
#pmDividendDialog::backdrop{background:rgba(25,45,35,.3)}
.pm-dividend-head{display:flex;gap:12px;align-items:center;justify-content:space-between}
.pm-dividend-head h2{margin:0;font-size:17px}
.pm-dividend-head button{flex:none;font-size:24px;color:#3F5348;background:transparent;border:0;cursor:pointer;padding:0 6px}
.pm-dividend-hint,.pm-dividend-message,.pm-dividend-source{font-size:12px;line-height:1.6;margin:10px 0;overflow-wrap:anywhere}
.pm-dividend-source a{color:inherit}
.pm-dividend-history-table{overflow-x:auto}
#pmDividendDialog table{width:100%;min-width:620px;border-collapse:collapse;font-size:13px;table-layout:fixed}
#pmDividendDialog th,#pmDividendDialog td{padding:8px 3px!important;text-align:right;white-space:normal;overflow-wrap:anywhere;border-bottom:1px solid #E5ECE7;color:#3F5348;background:transparent;font-size:inherit;letter-spacing:0}
#pmDividendDialog th:first-child,#pmDividendDialog td:first-child{text-align:left;width:12%}
#pmDividendDialog th[title]{cursor:help}
#pmDividendDialog td:nth-child(2){color:#097CA0}
#pmDividendDialog td:nth-child(3){color:#B64A26}
#pmDividendDialog td:nth-child(4){color:#667C0E}
@media(max-width:420px){#pmDividendDialog{padding:12px}#pmDividendDialog table{font-size:11.5px}}
.pm-dividend-quotes .pm-active td{color:#C62828!important}

/* 台指三商品夜盤收盤：僅卡片內的緊湊四欄，漲跌依官方公告。 */
.pm-list .pm-futures-table{padding-left:0;overflow-x:auto}
.pm-list .pm-futures-table::before{content:none}
.pm-futures-quotes{width:100%;min-width:236px;border-collapse:collapse;font-size:11.5px;table-layout:auto}
.pm-futures-quotes th,.pm-futures-quotes td{padding:5px 2px!important;white-space:nowrap;text-align:right;border:0;border-bottom:1px solid #EDF1EE;background:transparent;color:#3F5348;font-size:inherit;letter-spacing:0}
.pm-futures-quotes th:first-child{text-align:left;font-weight:800}
.pm-futures-quotes thead th{font-size:10.5px;color:#7D8A82;font-weight:700}
.pm-futures-quotes a{color:inherit;text-decoration:none}
.pm-futures-quotes a:hover{text-decoration:underline}
.pm-futures-quotes .pm-up{color:var(--up,#C62828)!important;font-weight:800}
.pm-futures-quotes .pm-down{color:var(--down,#218548)!important;font-weight:800}
.pm-futures-quotes .pm-flat{color:#7D8A82!important}
.pm-futures-quotes .pm-futures-warning td{white-space:normal;text-align:left;font-size:10.5px;color:#956324}

/* 法人與融資同卡，台指期未平倉放速報；各區保留自己的日期與單位。 */
.pm-list .pm-institution-table{padding-left:0;overflow-x:auto}
.pm-list .pm-institution-table::before{content:none}
.pm-institution-quotes{width:100%;min-width:236px;border-collapse:collapse;font-size:11px;table-layout:auto}
.pm-institution-quotes th,.pm-institution-quotes td{padding:5px 2px!important;white-space:nowrap;text-align:right;border:0;border-bottom:1px solid #EDF1EE;background:transparent;color:#3F5348;font-size:inherit;letter-spacing:0;font-weight:400;font-variant-numeric:tabular-nums}
.pm-institution-quotes thead th{font-size:10.5px;color:#7D8A82;font-weight:700}
.pm-institution-quotes th[scope="row"]{text-align:left;font-weight:700;white-space:normal}
.pm-institution-quotes .pm-up{color:var(--up,#C62828)!important;font-weight:700}
.pm-institution-quotes .pm-down{color:var(--down,#218548)!important;font-weight:700}
.pm-institution-quotes .pm-flat{color:#7D8A82!important}
.pm-institution-quotes .pm-institution-total th,.pm-institution-quotes .pm-institution-total td{font-weight:700;border-top:1px solid #DCE5DF}
.pm-card[data-pm="institutions"] .pm-group{padding-left:0}
.pm-card[data-pm="institutions"] .pm-note{font-size:10.5px}
.pm-list .pm-margin-summary{padding-left:0;white-space:nowrap;font-size:11px;letter-spacing:-.15px}
.pm-list .pm-margin-summary::before{content:none}
.pm-margin-summary a{color:inherit;text-decoration:none}
.pm-margin-summary a:hover{text-decoration:underline}
.pm-margin-summary .pm-up{color:var(--up,#C62828)}
.pm-margin-summary .pm-down{color:var(--down,#218548)}
.pm-card[data-pm="futures"] .pm-futures-quotes{min-width:0}
.pm-card[data-pm="institutions"] .pm-institution-quotes{min-width:0;font-size:10.5px}
.pm-card[data-pm="institutions"] .pm-institution-quotes th[scope="row"]{width:3em;min-width:3em;max-width:3em;overflow-wrap:anywhere}
.pm-card[data-pm="futures"] .pm-group{padding-left:0}
.pm-card[data-pm="futures"] .pm-note{font-size:10.5px}
.pm-card[data-pm="futures"] .pm-futures-institution{min-width:0;font-size:10px;letter-spacing:-.15px}
.pm-card[data-pm="futures"] .pm-futures-institution th,.pm-card[data-pm="futures"] .pm-futures-institution td{padding:5px 1px!important}
.pm-card[data-pm="futures"] .pm-futures-institution thead th{font-size:10px}

/* 國際行情統一四欄，名稱置左，現價與漲跌數字置右。 */
.pm-list .pm-market-table{padding-left:0;overflow-x:auto}
.pm-list .pm-market-table::before{content:none}
.pm-market-quotes{width:100%;min-width:236px;border-collapse:collapse;font-size:11.5px;table-layout:auto}
.pm-market-quotes th,.pm-market-quotes td{padding:5px 3px!important;white-space:nowrap;text-align:right;border:0;border-bottom:1px solid #EDF1EE;background:transparent;color:#3F5348;font-size:inherit;letter-spacing:0;font-weight:400}
.pm-market-quotes th:first-child{text-align:left}
.pm-market-quotes tbody th[scope="row"]{font-weight:700;white-space:normal;overflow-wrap:anywhere}
.pm-market-quotes thead th{font-size:10.5px;color:#7D8A82;font-weight:700}
.pm-market-quotes a{color:inherit;text-decoration:none}
.pm-market-quotes a:hover{text-decoration:underline}
.pm-market-quotes .pm-market-group th{padding-top:8px!important;text-align:left;font-weight:700;color:#2F6B54;background:#F6F9F7}
.pm-market-quotes .pm-up{color:var(--up,#C62828)!important}
.pm-market-quotes .pm-down{color:var(--down,#218548)!important}
.pm-market-quotes .pm-flat{color:#7D8A82!important}
.pm-market-quotes .pm-market-note td{white-space:normal;text-align:left;font-size:10.5px;color:#956324}

/* 臥龍／鳳雛：上榜次數置於均線右側，明細在桌面與手機都可閱讀。 */
td.appearance-count{text-align:center;white-space:nowrap}
.appearance-button{font:inherit;color:var(--strat-color,#2F6B54);border:0;background:transparent;padding:2px 8px;cursor:pointer;text-decoration:underline;text-underline-offset:3px}
.appearance-button:disabled{color:#7D8A82;text-decoration:none;cursor:default}
.appearance-button:focus-visible{outline:2px solid #2F6B54;outline-offset:2px}
#appearanceDialog{margin:auto;box-sizing:border-box;width:min(520px,calc(100vw - 24px));max-height:calc(100dvh - 32px);padding:18px;border:1px solid #D9E4DC;border-radius:14px;background:#FFF;color:#3F5348;overflow:auto}
#appearanceDialog::backdrop{background:rgba(25,45,35,.3)}
.appearance-head{display:flex;gap:12px;align-items:center;justify-content:space-between}
.appearance-head h2{margin:0;font-size:17px}
.appearance-head button{flex:none;font-size:24px;color:#3F5348;background:transparent;border:0;cursor:pointer;padding:0 6px}
.appearance-range,.appearance-note{font-size:12px;line-height:1.6;margin:10px 0;overflow-wrap:anywhere}
.appearance-table{overflow-x:auto}
#appearanceDialog table{width:100%;border-collapse:collapse;font-size:13px}
#appearanceDialog th,#appearanceDialog td{padding:8px 5px;text-align:left;white-space:normal;border-bottom:1px solid #E5ECE7}
#appearanceDialog th:last-child,#appearanceDialog td:last-child{text-align:right;white-space:nowrap}
#appearanceDialog td:last-child{color:var(--gold,#B8770A)}
/* 臥龍雙分類只改戰法名稱文字色，保留既有大小、粗細與其他欄位。 */
td.stx span.dragon-label.fast { color: #C25B3A !important; }
td.stx span.dragon-label.compressed { color: #2F6C9E !important; }
.dragon-original-button { margin-left:10px; border:1px solid #ccd2d8; border-radius:5px; background:#fff; color:#4d5967; padding:3px 8px; font:inherit; cursor:pointer; }
#dragonOriginalDialog { width:min(1450px,96vw); max-width:96vw; max-height:88vh; box-sizing:border-box; padding:16px; border:1px solid #d3d9df; border-radius:10px; color:#333; background:#fff; }
#dragonOriginalDialog::backdrop { background:rgba(0,0,0,.35); }
.dragon-original-head { display:flex; align-items:center; justify-content:space-between; gap:12px; }
.dragon-original-head h2 { font-size:16px; margin:0; }
.dragon-original-head button { font-size:24px; border:0; background:transparent; cursor:pointer; }
#dragonOriginalDialog p { font-size:13px; color:#697583; }
.dragon-original-table { overflow:auto; max-height:65vh; }
.dragon-original-table table { white-space:nowrap; }
@media(max-width:600px) { .dragon-counts { display:block; margin:4px 0; } #dragonOriginalDialog { padding:10px; } }

/* ============================================================================
   🆕 2026-10-11（用戶指示，附手機實機截圖）手機版排版三項修正 ＋ 全站卡片邊框加深
   用戶原話：
     「圖2 我想要請你把邊框做明顯 方便我在手機做區分」
     「圖1 這是手機板 請置中整齊 盤前 盤中 盤後 設計成在同一行」
     「羊皮卷祝福這句話在框內的最上置中 下面是金句」
     「做多 做空可以在左右嗎」
   依鐵律第 30 條先問再做（附改前改後對照圖，用戶逐項挑選）：
     ① 分類列＝字距與左右留白收緊（字級維持 13px），三個分類同一行並整排置中
     ② 羊皮卷＝只改手機（標籤在最上面置中、金句在下面置中）；桌機綠色那一條維持一行
     ③ 卡片邊框＝A 案（1px 深灰綠 rgba(22,36,30,.24) ＋ 極淡陰影）
     ④ 邊框適用範圍＝全站卡片（盤前 8 張 .pm-card ＋ 盤中／盤後白色卡片 .sec）
     ⑤ 做多／做空＝手機上一律左右並排（不再因為字體放大而折成上下）
   ⚠️ 這一整段寫在檔案最後面，才壓得過前面所有（含 !important）的設定；
      桌機（≥901px）除了卡片邊框以外，排版一個字都沒有動。
   改前備份：備份\bak_20261011_mobile_ui\board_web__logo-minimal.css
   ============================================================================ */

/* ---------- ① 全站卡片：邊框加深（用戶選定 A 案） ---------- */
/* 盤中／盤後／盤前的大卡片：原本 1px rgba(22,36,30,.055)＋無陰影 ⇒ 手機上幾乎看不見 */
.sec{
  border-color:rgba(22,36,30,.24)!important;
  box-shadow:0 2px 6px rgba(22,36,30,.07)!important;
}
/* 盤前資訊的 8 張小卡片：原本 1px rgba(22,36,30,.08)＋無陰影 */
.pm-card{
  border:1px solid rgba(22,36,30,.24);
  box-shadow:0 2px 6px rgba(22,36,30,.07);
}

@media(max-width:900px){
  /* ---------- ② 分類列：盤前資訊／盤中動態／盤後策略 同一行、整排置中 ----------
     實測（390px 手機）：原本每顆標籤寬 117px（字距 2.86px、左右內距 14px），
     三個標籤要 423px，但導覽列只有 362px ⇒ 盤後策略被擠到第二行。
     收成字距 1px、左右內距 8px 之後每顆 87px、三個合計 281px ⇒ 一行放得下。 */
  .top-dock header nav,nav{gap:0 10px}
  .nav-group-label,.top-dock nav .nav-group-label{
    letter-spacing:1px!important;
    padding-left:8px!important;padding-right:8px!important;
  }
  .nav-group-label::after{margin-left:3px}
  /* 選中分類的底線寬度＝文字寬度，內距改成 8px 之後底線要跟著對齊 */
  .nav-group:not(.is-collapsed) .nav-group-label::before{left:8px;right:8px}

  /* ---------- ③ 羊皮卷：標籤在最上面置中、金句在下面置中 ---------- */
  #minChips .dock-scroll{flex-direction:column;align-items:center;gap:4px}
  #minChips .dock-scroll .dock-scroll-text{text-align:center}

  /* ---------- ④ 做多／做空：一律左右並排 ----------
     原本 #navBubble .nav-col 是 min-width:134px 且清單可以換行，
     手機字體被放大時兩欄的內容寬會超過容器 ⇒ 折成上下。
     改成兩欄各佔一半（flex:1 1 0）且不准換行 ⇒ 任何手機寬度都保持左右。 */
  #navBubble .nav-group-list{flex-wrap:nowrap!important}
  #navBubble .nav-col{flex:1 1 0;min-width:0}
  #navBubble .nav-col + .nav-col{margin-left:10px;padding-left:10px}
  #navBubble .nav-item{min-width:0}
}

/* 2026-10-11 追加：超窄機（≤360px，例如 320px 寬）也要三個分類同一行。
   實測 320px：字距 1px＋內距 8px 時三個標籤 279px 加間距 20px ＝ 299px，仍大於可用的 292px ⇒ 折行。
   這一級再把字距收成 0、內距收到 6px（字級一樣維持 13px）⇒ 三個 228px＋間距 12px ＝ 240px，一行放得下。 */
@media(max-width:360px){
  .top-dock header nav,nav{gap:0 6px}
  .nav-group-label,.top-dock nav .nav-group-label{
    letter-spacing:0!important;
    padding-left:6px!important;padding-right:6px!important;
  }
  .nav-group:not(.is-collapsed) .nav-group-label::before{left:6px;right:6px}
}

/* ============================================================================
   🆕 2026-10-11（第二批・用戶指示）
   用戶原話：「心波AI選股 心波期貨 搜尋 都要置中」「今日剔除 手機板 全都隱藏起來」
   依鐵律第 30 條先問再做；用戶選定：三樣都置中、搜尋框維持現在寬度（不加寬）。
   ⚠️ 只在手機（≤900px）生效；桌機（≥901px）排版完全不受影響。
   ============================================================================ */
@media(max-width:900px){
  /* ① 品牌列（愛心 LOGO ＋「心波AI選股」＋綠點）自己佔一整行並整排置中。
        ⚠️ 一定要 flex-basis 100%，否則 .brand 是「貼齊內容寬」的 flex 項目，
           置中只會在自己那一小塊裡置中，看起來還是靠左。 */
  .brand{
    flex:1 1 100%!important;
    justify-content:center!important;
    text-align:center;
  }
  .brand h1{text-align:center}
  .brand .status-row{justify-content:center}

  /* ② 心波期貨膠囊 ＋ ③ 搜尋框：右側群組改成上下兩列、各自水平置中 */
  .header-right{
    flex:1 1 100%!important;
    flex-direction:column;
    align-items:center;
    justify-content:center!important;
  }
  .header-right .status-stack{
    align-items:center;
    justify-content:center;
  }
  .header-right .stock-search{margin-left:auto;margin-right:auto}

  /* ④ 今日剔除（盤中六表與盤後各戰法底部的掉榜清單）手機全部隱藏。
        ⚠️ JS 會用行內 style 把 .excl 打開（01-core.js 的 renderExclFooters／renderPostExcl），
           所以一定要 !important 才蓋得掉；桌機照舊顯示。 */
  .excl{display:none!important}
}

/* ============================================================================
   🆕 2026-10-11（第三批・用戶指示，附手機 K 棒視窗截圖）
   用戶原話：「把三個K膠囊移到左邊」「把X跟高低的指標移到三K 同一行的右邊」
             「K棒左邊空白太大 請優化」「黑底的框太大 資料無法完整讀取 請優化」
   依鐵律第 30 條先問再做；用戶選定：
     ① 只改手機（桌機 K 棒視窗頭部維持原樣）
     ② 量尺欄兩種都優化（日K 62→8；分K 90→78，刻度文字距離同步 88→76）
     ③ 提示框縮小（字級 12→11、內距與行高收緊）＋ confine 不准跑出畫面
   實測（390px，中美晶 5483 日K，改前）：K 膠囊被 margin-left:auto 推到 x=74；
     📐 與 ✕ 被擠到下一行（x=175／217，同一行最右邊只到 249）；
     圖表左邊純空白 62px；提示框 342×166 且 x=-76（左邊被切掉 76px，所以資料看不完整）。
   這裡只動「K 棒視窗頭部」的排列；量尺欄與提示框在 08-kline.js（同一批一起改）。
   改前備份：備份\bak_20261011_km_mobile\
   ============================================================================ */
@media(max-width:900px){
  /* K 膠囊（日K／1分K／5分K）靠左；📐（高低線）與 ✕ 移到同一行的最右邊。
     ⚠️ 用 flex order 重排：標題(0) → K膠囊(2) → 📐(3) → ✕(4) → 小台大台微台(5) → 均線布林VWAP(6)；
        📐 的 margin-left:auto 會把它跟 ✕ 一起推到那一行的最右邊。 */
  #kmTabs{order:2;margin-left:0!important}
  #kmHLBtn{order:3;margin-left:auto}
  #kmClose{order:4}
  #kmFut{order:5}
  #kmIndicators{order:6}
}

/* 2026-10-11 追加：手機版 K 棒視窗頭部，#kmSub 空的時候不要佔一格。
   實測（390px）：空 span 仍佔一個 flex 位置，加上 10px 間距 ⇒ K 膠囊起點 37px，
   比上面「產業面」那排（27px）多縮 10px，看起來就沒有真的靠左。 */
@media(max-width:900px){
  #kmSub:empty{display:none}
}

/* ============================================================================
   🆕 2026-10-11（第五批・用戶指示，附手機 K 棒 1分K 截圖）
   「圖1 綠框內的資料隱藏」「黃框的資訊縮小 1/3」
   依鐵律第 30 條先問再做，用戶選定：綠框（參考線摘要條）只隱藏手機、桌機保留；
   黃框（左邊量尺欄的參考線標籤）縮到 1/3，標籤只留名稱（價格不顯示，黑框提示裡仍有昨收與漲跌停）。
   實測（390px 改前）：摘要條一條佔 40 像素高；量尺欄 78 像素。
   這裡只處理摘要條；量尺欄與標籤內容在 08-kline.js（同一批一起改）。
   ============================================================================ */
@media(max-width:900px){
  /* JS 會把這一條設成 display:''（等於打開），所以一定要 !important 才蓋得掉 */
  #kmRefSummary{display:none!important}
}

/* ============================================================================
   🆕 2026-10-11（用戶指示，附台指期速報／三大法人今日買賣兩張截圖）
   「三大法人今日買賣旁＋一個膠囊／大盤融資餘額旁＋一個膠囊／大法人未平倉旁＋一個膠囊，
    膠囊寫『評估建議』」。依鐵律第 30 條先問再做，用戶選定：三顆各自顯示自己那一段的
    說明，最後都接「綜合總結＋今天結論」，結論依 AI 判斷自動產生。
   膠囊掛在卡片標題（三大法人今日買賣）與兩個區塊標題（大盤融資餘額／台指期三大法人
   未平倉）後面；點開用 <dialog>，內容由 board_web/js/05b-premarket.js 的 showAssess()
   依當天官方真實數字產生（鐵律 #7／#25，不寫死）。桌機與手機都適用。
   ============================================================================ */
.pm-assess{
  flex:none;margin-left:6px;padding:1px 8px;
  font:inherit;font-size:10.5px;font-weight:800;letter-spacing:0;line-height:1.6;
  border:1px solid #2F6C9E;border-radius:999px;background:#EAF2FA;color:#1F4E73;
  cursor:pointer;white-space:nowrap;vertical-align:middle;
}
.pm-assess:hover{background:#DCEAF7}
.pm-assess:focus-visible{outline:2px solid #2F6C9E;outline-offset:2px}

#pmAssessDialog{
  margin:auto;box-sizing:border-box;width:min(760px,calc(100vw - 24px));
  max-height:calc(100dvh - 32px);padding:18px;overflow:auto;
  border:1px solid #D9E4DC;border-radius:14px;background:#FFF;color:#3F5348;
}
#pmAssessDialog::backdrop{background:rgba(25,45,35,.3)}
.pm-assess-head{display:flex;gap:12px;align-items:center;justify-content:space-between;position:sticky;top:-18px;background:#FFF;padding:2px 0 8px;z-index:1}
.pm-assess-head h2{margin:0;font-size:17px;color:#16241E}
.pm-assess-close{flex:none;font-size:24px;line-height:1;color:#3F5348;background:transparent;border:0;cursor:pointer;padding:0 6px}
.pm-assess-content{font-size:13px;line-height:1.7}
.pm-assess-content h3{margin:16px 0 6px;font-size:13.5px;font-weight:900;color:#2F6B54}
.pm-assess-content h3:first-child{margin-top:0}
.pm-assess-content p{margin:6px 0}
.pm-assess-content ul{margin:6px 0;padding-left:18px}
.pm-assess-content li{margin:4px 0}
.pm-assess-content small{color:#7D8A82}
.pm-assess-content .pm-assess-up{color:var(--up,#C62828)}
.pm-assess-content .pm-assess-down{color:var(--down,#218548)}
.pm-assess-content .pm-assess-flat{color:#7D8A82}
.pm-assess-date{font-size:11.5px;color:#7D8A82}
.pm-assess-wait{font-size:12px;color:#956324;background:#FFF8EC;border-left:3px solid #E0B457;padding:6px 9px;border-radius:0 6px 6px 0}
.pm-assess-verdict{margin:6px 0 8px;padding:7px 11px;border-radius:8px;font-size:14px;font-weight:900;background:#F2F5F3;color:#3F5348}
.pm-assess-tone-up{background:#FDECEC;color:#C62828}
.pm-assess-tone-down{background:#E9F6EC;color:#1B7A3E}
.pm-assess-note{font-size:12.5px;background:#F6F9F7;border-radius:8px;padding:8px 10px}
.pm-assess-advice{font-size:13px;font-weight:700;color:#16241E;background:#F6F9F7;border-radius:8px;padding:9px 11px}
@media(max-width:900px){
  #pmAssessDialog{width:calc(100vw - 16px);padding:13px;max-height:calc(100dvh - 16px)}
  .pm-assess-head{top:-13px}
  .pm-assess-content{font-size:12.5px}
}

/* ============================================================================
   🆕 2026-10-11（用戶定案，附手機「25倍數最低」截圖）
   用戶原話：「有甚麼方法可以讓手機看到的標的是清楚的」。
   改前實測（Chrome 無頭 CDP 實開 8686，390px，25倍數最低）：13 欄原始寬 1,265px、
   容器只有 360px ⇒ 舊做法把整張表等比例縮到 0.294，儲存格字級從 13px 被壓成 3.81px。
   用戶選定：① 手機不縮小（維持 13px）② 左右滑 ＋「名稱」欄固定在左邊
   （明確同意鬆綁 2026-09-08「任何尺寸絕不左右拉動」，比照 2026-10-11 同業評比表做法）
   ③ 手機只顯示每個戰法自己的關鍵欄位（欄位白名單在 07-render.js 的 MOBILE_KEEP_*，
      這裡只負責外觀：黏住的名稱欄與可左右滑的容器）。
   只影響手機（≤900px）：桌機的等比縮放與全部欄位完全不動。
   ============================================================================ */
@media(max-width:900px){
  .sec .tblwrap{-webkit-overflow-scrolling:touch}
  /* 「名稱／股票名稱」欄固定：滑到右邊還知道是哪一檔。
     ⚠️ 底色一定要不透明，否則捲過去的內容會從下面透出來。 */
  .sec .tblwrap table th.mt-sticky,
  .sec .tblwrap table td.mt-sticky{
    position:sticky;left:0;z-index:2;background:#FFFFFF;
    box-shadow:1px 0 0 rgba(22,36,30,.08);
  }
  .sec .tblwrap table thead th.mt-sticky{z-index:3}
  .sec .tblwrap table tbody tr:hover td.mt-sticky{background:#F7F9F8}
  /* 心波精選聚焦列（金底）也要一起變色，否則固定的名稱欄會跟那一列不同色 */
  .sec .tblwrap table tbody tr.ticker-focus td.mt-sticky{background:#FBF6E9}
  /* 浮動表頭（複製出來的 thead）也跟著固定，捲動時才不會跟內容錯位 */
  .float-head table th.mt-sticky{position:sticky;left:0;z-index:3;background:#FFFFFF}
}