/* 共用元件樣式(面板、按鈕、表格、分頁…)，各研究模組皆可使用 */
  /* 色彩：台股慣例「紅漲綠跌」── --up 用於上漲/多頭/勝率高，--down 用於下跌/空頭 */
  :root{
    color-scheme:dark;
    --bg:#0A0D12;
    --panel:#12161F;
    --panel2:#171C27;
    --border:#232935;
    --border-strong:#3a4152;
    --grid:#1a1f2a;
    --text:#E7EAEE;
    --dim:#8B93A1;
    --mute:#5B6472;
    --up:#F0565B;
    --up-soft:rgba(240,86,91,.14);
    --down:#2ECC71;
    --down-soft:rgba(46,204,113,.14);
    --amber:#F0B94D;
    --amber-soft:rgba(240,185,77,.07);
    --on-amber:#1a1305;
    --blue:#5B8DEF;
    --candle-up:#E5484D;
    --candle-down:#2ECC71;
    --ma5:#E8C547;    /* 5MA 黃 */
    --ma10:#5B8DEF;   /* 10MA 藍 */
    --ma20:#B07CF0;   /* 20MA 紫 */
    --ma60:#9AA1AC;   /* 60MA 灰 */
    --ma120:#F06FB0;  /* 120MA 粉紅 */
    --ma240:#F5923B;  /* 240MA 橘 */
    --scroll:#2c3341;
    --scroll-hover:#424b5c;
    --shadow:rgba(0,0,0,.5);
  }
  :root[data-theme="light"]{
    color-scheme:light;
    --bg:#F4F5F7;
    --panel:#FFFFFF;
    --panel2:#F1F3F6;
    --border:#DEE2E8;
    --border-strong:#C3C9D2;
    --grid:#ECEEF2;
    --text:#1B1F27;
    --dim:#4E5663;
    --mute:#8A919C;
    --up:#D92D33;
    --up-soft:rgba(217,45,51,.10);
    --down:#14965A;
    --down-soft:rgba(20,150,90,.10);
    --amber:#B9780A;
    --amber-soft:rgba(185,120,10,.08);
    --on-amber:#FFFFFF;
    --blue:#2F66D0;
    --candle-up:#D92D33;
    --candle-down:#14965A;
    --ma5:#B8960B;
    --ma10:#2F66D0;
    --ma20:#8E4FD8;
    --ma60:#7A828E;
    --ma120:#D9468F;
    --ma240:#E07B10;
    --scroll:#CBD1D9;
    --scroll-hover:#AAB2BD;
    --shadow:rgba(20,25,35,.18);
  }

  /* 捲軸：細、圓角、跟隨主題 */
  *{scrollbar-width:thin;scrollbar-color:var(--scroll) transparent;}
  ::-webkit-scrollbar{width:8px;height:8px;}
  ::-webkit-scrollbar-track{background:transparent;}
  ::-webkit-scrollbar-thumb{background:var(--scroll);border-radius:8px;border:2px solid transparent;background-clip:padding-box;}
  ::-webkit-scrollbar-thumb:hover{background:var(--scroll-hover);background-clip:padding-box;}
  ::-webkit-scrollbar-corner{background:transparent;}
  *{box-sizing:border-box;}
  .mono{font-family:'IBM Plex Mono',monospace;}
  h1,h2,h3,.disp{font-family:'Space Grotesk',sans-serif;}

  header.top{display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:space-between;gap:10px;margin-bottom:18px;border-bottom:1px solid var(--border);padding-bottom:16px;}
  header.top h1{font-size:22px;font-weight:700;margin:0;letter-spacing:.2px;}
  header.top h1 span{color:var(--amber);}
  header.top p{margin:4px 0 0;color:var(--dim);font-size:13px;}


  .panel{background:var(--panel);border:1px solid var(--border);border-radius:12px;padding:16px 18px;margin-bottom:16px;}
  .panel h3{font-size:13px;text-transform:uppercase;letter-spacing:.6px;color:var(--dim);margin:0 0 12px;font-weight:600;}

  .empty{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:50px 20px;text-align:center;gap:14px;}
  .empty p{color:var(--dim);font-size:13.5px;max-width:480px;line-height:1.7;margin:0;}
  button{font-family:'Inter',sans-serif;font-size:13px;font-weight:600;cursor:pointer;border-radius:8px;border:1px solid var(--border);padding:9px 16px;background:var(--panel2);color:var(--text);transition:.15s;}
  button:hover{border-color:var(--border-strong);}

  .paramgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:16px 24px;}
  .paramitem label{display:flex;justify-content:space-between;font-size:12px;color:var(--dim);margin-bottom:6px;}
  .paramitem label b{color:var(--amber);font-family:'IBM Plex Mono',monospace;font-weight:600;}
  input[type=range]{width:100%;accent-color:var(--amber);}

  .chartwrap{position:relative;}
  .chartbar{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px;flex-wrap:wrap;gap:8px;}
  .zoomrow{display:flex;gap:6px;}
  .zoomrow button{padding:6px 12px;font-size:12px;}
  canvas{display:block;width:100%;}
  #priceCanvas{cursor:grab;}
  #priceCanvas:active{cursor:grabbing;}
  .legend{display:flex;gap:16px;flex-wrap:wrap;font-size:11.5px;color:var(--dim);margin-top:8px;}
  .legend span{display:inline-flex;align-items:center;gap:5px;}
  .dot{width:9px;height:9px;border-radius:2px;display:inline-block;}

  .statgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:12px;}
  .stat{background:var(--panel2);border:1px solid var(--border);border-radius:10px;padding:12px 14px;}
  .stat .v{font-family:'IBM Plex Mono',monospace;font-size:22px;font-weight:600;}
  .stat .l{color:var(--dim);font-size:11.5px;margin-top:3px;}
  .up{color:var(--up);} .down{color:var(--down);}

  .compare{display:grid;grid-template-columns:1fr 1fr;gap:14px;}
  .compare .col{background:var(--panel2);border:1px solid var(--border);border-radius:10px;padding:14px;}
  .compare .col h4{margin:0 0 10px;font-size:12.5px;color:var(--dim);font-weight:600;}
  .compare .row{display:flex;justify-content:space-between;padding:6px 0;border-bottom:1px dashed var(--border);font-size:12.5px;}
  .compare .row:last-child{border-bottom:none;}
  .compare .row b{font-family:'IBM Plex Mono',monospace;}

  .splitbar{height:8px;border-radius:4px;overflow:hidden;display:flex;background:var(--panel2);margin-top:8px;}
  .splitbar .d{background:var(--down);}
  .splitbar .u{background:var(--up);}

  table{width:100%;border-collapse:collapse;font-size:12px;}
  th{text-align:left;color:var(--mute);font-weight:600;text-transform:uppercase;letter-spacing:.4px;font-size:10px;padding:8px 8px;border-bottom:1px solid var(--border);white-space:nowrap;}
  td{padding:8px 8px;border-bottom:1px solid var(--grid);font-family:'IBM Plex Mono',monospace;white-space:nowrap;}
  tbody tr:hover{background:var(--panel2);cursor:pointer;}
  .tablewrap{overflow-x:auto;border-radius:8px;}
  .tag{padding:2px 7px;border-radius:5px;font-size:10.5px;font-family:'Inter',sans-serif;font-weight:600;}
  .tag.yes{background:var(--up-soft);color:var(--up);}
  .tag.no{background:var(--down-soft);color:var(--down);}
  .tag.na{background:var(--panel2);color:var(--mute);}
  .mini-split{width:60px;height:7px;border-radius:3px;overflow:hidden;display:inline-flex;vertical-align:middle;background:var(--panel2);}
  .mini-split div{height:100%;}

  .note{font-size:12px;color:var(--mute);line-height:1.7;margin-top:10px;}
  .banner{background:var(--up-soft);border:1px solid var(--border);color:var(--text);padding:9px 14px;border-radius:8px;font-size:12px;margin-bottom:14px;}
  .banner.info{background:rgba(91,141,239,.10);border-color:rgba(91,141,239,.35);color:var(--blue);}
  select{background:var(--panel2);color:var(--text);border:1px solid var(--border);border-radius:6px;padding:5px 8px;font-family:'Inter',sans-serif;font-size:12px;}
  .updated{font-size:11.5px;color:var(--mute);margin-top:6px;font-family:'IBM Plex Mono',monospace;}
  code{background:var(--panel2);border:1px solid var(--border);border-radius:4px;padding:1px 5px;font-family:'IBM Plex Mono',monospace;font-size:11px;}

  /* 指數下拉選單 */
  .pickrow{display:flex;align-items:center;gap:10px;}
  .pickrow label{color:var(--dim);font-size:12.5px;font-weight:600;}
  select.indexpick{font-size:14px;font-weight:600;padding:9px 34px 9px 12px;border-radius:9px;border-color:var(--border-strong);min-width:190px;cursor:pointer;
    appearance:none;-webkit-appearance:none;
    background:var(--panel2) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8'%3E%3Cpath d='M1 1l5 5 5-5' fill='none' stroke='%23F0B94D' stroke-width='2'/%3E%3C/svg%3E") no-repeat right 12px center;}
  select.indexpick:focus{outline:none;border-color:var(--amber);}

  /* K棒型態 */
  .mute{color:var(--mute);font-size:12px;}
  .kshape{display:block;flex:0 0 auto;}
  .pattable td{vertical-align:middle;}
  .pattable .kcell{width:1%;padding:4px 8px;}
  .pattable .grouprow td{background:var(--panel2);color:var(--amber);font-family:'Space Grotesk',sans-serif;font-weight:600;font-size:12px;letter-spacing:.5px;cursor:default;}
  .pat-explain{display:flex;gap:18px;align-items:center;flex-wrap:wrap;background:var(--panel2);border:1px solid var(--border);border-radius:10px;padding:12px 16px;margin-bottom:14px;}
  .pat-explain > div{flex:1;min-width:220px;}
  .pat-meaning{margin:0;font-size:13.5px;line-height:1.8;}

  /* 標題列選單、多空定義說明 */
  .pickers{display:flex;flex-direction:column;gap:8px;align-items:flex-end;}
  .pickers .pickrow label{min-width:56px;text-align:right;}
  .regime-note{font-size:12px;color:var(--dim);background:var(--panel);border:1px solid var(--border);border-left:3px solid var(--amber);border-radius:8px;padding:8px 12px;margin:-4px 0 16px;line-height:1.7;}
  .regime-note b{color:var(--amber);font-weight:600;}
  @media (max-width:640px){ .pickers{align-items:stretch;width:100%;} .pickers .pickrow label{text-align:left;} select.indexpick{flex:1;min-width:0;} }

  /* 型態總覽：點選展開 */
  .pattable tr.patrow{cursor:pointer;}
  .pattable tr.patrow.open{background:var(--panel2);}
  .pattable tr.patrow.open td{border-bottom-color:transparent;}
  .pattable .chev{color:var(--amber);text-align:right;width:1%;}
  .pattable tr.patdetail{cursor:default;}
  .pattable tr.patdetail:hover{background:transparent;}
  .pattable tr.patdetail > td{white-space:normal;padding:4px 8px 18px;background:var(--panel2);font-family:'Inter',sans-serif;}
  .patdetail-inner{display:flex;flex-direction:column;gap:12px;}
  .patdetail-inner .pat-explain{margin:0;background:var(--panel);}
  table.stattable{border:1px solid var(--border);border-radius:8px;}
  table.stattable th{text-align:center;background:var(--panel);}
  table.stattable td{text-align:center;}
  table.stattable td:first-child{text-align:left;font-family:'Inter',sans-serif;font-weight:600;}
  table.stattable td.na{color:var(--mute);}
  table.stattable tr.allrow td{background:var(--amber-soft);}
  table.stattable tbody tr{cursor:default;}
  @media (max-width:860px){ .patdetail-inner{position:sticky;left:8px;max-width:calc(100vw - 72px);} }

  /* 資料來源列連結、ETF 表格 */
  .updated a{color:var(--dim);text-decoration:underline;text-decoration-color:var(--border);text-underline-offset:2px;}
  .updated a:hover{color:var(--amber);}
  td.na, span.na{color:var(--mute);}
  table.etftable td{font-family:'Inter',sans-serif;font-size:13px;}
  table.etftable td.fund{font-weight:600;white-space:normal;min-width:240px;}
  table.etftable tbody tr{cursor:default;}

  /* 統計表分組列 */
  table.stattable tr.grouphead td{background:var(--panel2);color:var(--amber);font-family:'Space Grotesk',sans-serif;font-weight:600;font-size:11.5px;letter-spacing:.5px;text-align:left;}
  table.stattable .hint-s{display:block;color:var(--mute);font-weight:400;font-size:10.5px;margin-left:16px;}

  /* 說明頁 */
  .doc{font-size:13.5px;line-height:1.9;}
  .doc h3{margin-top:4px;}
  .doc p{margin:0 0 10px;}
  .doc ul{margin:0 0 10px;padding-left:20px;}
  .doc .formula{font-family:'IBM Plex Mono',monospace;background:var(--panel2);border:1px solid var(--border);border-radius:8px;padding:10px 14px;margin:6px 0 12px;color:var(--amber);}
  .linkcard{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 16px;background:var(--panel2);border:1px solid var(--border);border-radius:10px;color:var(--text);text-decoration:none;margin-bottom:10px;}
  .linkcard:hover{border-color:var(--amber);}
  .linkcard small{display:block;color:var(--mute);font-size:11.5px;margin-top:3px;word-break:break-all;}
  .linkcard .go{color:var(--amber);font-weight:600;white-space:nowrap;}

  /* 好用推薦 */
  .reco-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:14px;margin-bottom:12px;}
  .reco{display:flex;flex-direction:column;gap:10px;padding:16px 18px;background:var(--panel);border:1px solid var(--border);border-radius:12px;color:var(--text);text-decoration:none;transition:.15s;}
  .reco:hover{border-color:var(--amber);transform:translateY(-2px);}
  .reco-head{display:flex;justify-content:space-between;align-items:flex-start;gap:10px;}
  .reco-head b{font-family:'Space Grotesk',sans-serif;font-size:17px;}
  .reco-sub{display:block;color:var(--mute);font-size:11.5px;margin-top:2px;}
  .reco p{margin:0;flex:1;font-size:13px;line-height:1.75;color:var(--dim);}
  .reco-foot{display:flex;justify-content:space-between;font-size:11.5px;color:var(--mute);font-family:'IBM Plex Mono',monospace;}
  .reco-foot .go{color:var(--amber);font-family:'Inter',sans-serif;font-weight:600;}

  /* 首頁 */
  .hero{display:flex;align-items:center;gap:20px;padding:26px 24px;margin-bottom:18px;background:var(--panel);border:1px solid var(--border);border-radius:14px;}
  .hero-logo{width:84px;height:84px;flex:0 0 84px;}
  .hero h1{margin:0;font-size:30px;}
  .hero h1 span{color:var(--amber);}
  .hero p{margin:6px 0 0;color:var(--dim);font-size:14px;}
  .hero-intro{list-style:none;margin:8px 0 0;padding:0;color:var(--dim);font-size:14px;line-height:1.9;}
  .hero-intro a{color:var(--amber);word-break:break-all;}
  .home-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:14px;margin-bottom:2px;}
  .home-card h2{margin:0 0 4px;font-size:18px;}
  .home-card p{margin:0 0 12px;font-size:12.5px;}
  .home-links{display:flex;flex-direction:column;gap:6px;}
  .home-links a{color:var(--text);text-decoration:none;font-size:13.5px;padding:6px 10px;border-radius:7px;background:var(--panel2);border:1px solid var(--border);}
  .home-links a:hover{border-color:var(--amber);}
  .home-sub{font-size:11.5px;font-weight:600;color:var(--mute);margin-top:4px;}
  .home-sub:first-child{margin-top:0;}
  .home-links .soon-tag{font-size:10.5px;color:var(--mute);font-style:italic;}
  .home-data{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 12px;padding:6px 0;border-bottom:1px solid var(--grid);}
  .home-data:last-child{border-bottom:none;}
  .home-data b{min-width:90px;color:var(--text);font-size:13px;}
  @media (max-width:640px){ .hero{flex-direction:column;text-align:center;} }

  /* 大盤漲跌分析：模式分頁 */
  .mode-tabs{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:8px;margin-bottom:16px;}
  .mode-tab{display:flex;flex-direction:column;align-items:flex-start;gap:3px;padding:10px 14px;text-align:left;border-radius:10px;background:var(--panel);}
  .mode-tab b{font-family:'Space Grotesk',sans-serif;font-size:14.5px;}
  .mode-tab small{color:var(--mute);font-weight:400;font-size:11.5px;}
  .mode-tab.active{border-color:var(--amber);box-shadow:inset 0 -2px 0 var(--amber);background:var(--panel2);}

  /* K線圖：點選K棒的開高低收量 */
  .ohlc-info{display:flex;flex-wrap:wrap;align-items:center;gap:4px 14px;min-height:32px;padding:6px 10px;margin-bottom:8px;
    background:var(--panel2);border:1px solid var(--border);border-radius:8px;font-size:12.5px;font-family:'IBM Plex Mono',monospace;color:var(--dim);}
  .ohlc-info b{color:var(--text);}
  .ohlc-info em{font-style:normal;color:var(--text);font-weight:600;}
  .ohlc-info em.up, .ohlc-info .up{color:var(--up);} .ohlc-info em.down, .ohlc-info .down{color:var(--down);}
  #priceCanvas{touch-action:pan-y;outline:none;}

  /* 自動解讀 */
  ul.insight{margin:12px 0 0;padding-left:20px;font-size:13px;line-height:1.85;}
  ul.insight b{color:var(--amber);}

  /* 初級統計學 */
  .chap-list{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:14px;}
  .chap-list a{display:flex;align-items:center;gap:6px;padding:6px 11px;border-radius:8px;border:1px solid var(--border);background:var(--panel);color:var(--dim);text-decoration:none;font-size:12.5px;}
  .chap-list a span{font-family:'IBM Plex Mono',monospace;color:var(--mute);font-size:11px;}
  .chap-list a:hover{color:var(--text);border-color:var(--border-strong);}
  .chap-list a.active{color:var(--text);border-color:var(--amber);background:var(--panel2);}
  .chap-list a.active span{color:var(--amber);}
  .chapter h2{margin:0;font-size:21px;}
  .chap-head{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:8px;padding-bottom:12px;margin-bottom:14px;border-bottom:1px solid var(--border);}
  .chap-st a{color:var(--amber);font-size:12.5px;text-decoration:none;}
  .doc h3{margin:20px 0 8px;font-size:15px;color:var(--text);text-transform:none;letter-spacing:.2px;}
  .doc ol{margin:0 0 10px;padding-left:22px;}
  .doc table.stattable{margin:6px 0 12px;}
  .callout{border-left:3px solid var(--amber);background:var(--amber-soft);padding:10px 14px;border-radius:0 8px 8px 0;margin:12px 0;font-size:13px;line-height:1.85;}
  .demo-box, .live-box{margin-top:18px;padding:14px 16px;background:var(--panel2);border:1px solid var(--border);border-radius:10px;}
  .demo-box h3, .live-box h3{margin-top:0;}
  .btnrow-l{display:flex;flex-wrap:wrap;align-items:center;gap:8px;font-size:13px;}
  .btnrow-l button{padding:6px 12px;font-size:12.5px;}
  .chart-svg{display:block;width:100%;height:auto;margin-top:8px;}
  .split{display:flex;flex-wrap:wrap;gap:16px;align-items:center;}
  .split > svg{flex:1 1 300px;}
  .split > table{flex:0 1 260px;}
  /* Markdown 章節(content/stats/basic/*.md) */
  .doc h3.md-h2{font-size:17px;margin:28px 0 10px;padding-bottom:6px;border-bottom:1px solid var(--border);color:var(--amber);}
  .doc #chapBody > h3.md-h2:first-child{margin-top:4px;}
  .doc h4.md-h3{font-size:15px;margin:22px 0 8px;color:var(--text);}
  .doc h3.md-h2, .doc h4.md-h3{scroll-margin-top:16px;}
  /* 重點節(標題寫 [重點])：整節加框，標題旁標「重點」 */
  .doc .md-key{border:1.5px solid var(--amber);background:var(--amber-soft);border-radius:10px;padding:2px 16px 8px;margin:22px 0;}
  .doc .md-key > .md-key-h:first-child{margin-top:14px;}
  .doc .md-key-h::after{content:'重點';display:inline-block;margin-left:8px;padding:1px 8px;border-radius:999px;background:var(--amber);color:var(--on-amber);font-size:11.5px;font-weight:700;vertical-align:2px;}
  .doc .md-key .callout{background:var(--panel);}
  @media (max-width:600px){ .doc .md-key{padding:2px 10px 6px;} }
  .doc a.xref{color:var(--amber);text-decoration:none;border-bottom:1px dotted currentColor;}
  .doc a.xref:hover{border-bottom-style:solid;}
  .doc table.md-table{width:auto;max-width:100%;}
  .doc table.md-table td, .doc table.md-table th{text-align:left;white-space:normal;font-family:'Inter',sans-serif;text-transform:none;}
  .doc table.md-table td:first-child{white-space:nowrap;}
  .doc pre{background:var(--panel2);border:1px solid var(--border);border-radius:8px;padding:10px 14px;margin:6px 0 12px;overflow-x:auto;line-height:1.6;}
  .doc pre code{background:none;border:0;padding:0;font-size:12px;color:var(--text);}
  .doc .katex{font-size:1.08em;}
  .doc .katex-display{margin:8px 0 14px;padding:10px 12px;background:var(--panel2);border:1px solid var(--border);border-radius:8px;overflow-x:auto;overflow-y:hidden;}
  .md-fig{margin:6px 0 16px;text-align:center;}
  .md-fig img{max-width:100%;width:620px;height:auto;border-radius:8px;}
  /* 統計學的 R 圖(透明背景)有深色與淺色兩版，依網站主題顯示其中一張 */
  :root[data-theme="light"] .md-fig img.th-dark, :root:not([data-theme="light"]) .md-fig img.th-light{display:none;}
  .md-fig figcaption{font-size:12px;color:var(--dim);margin-top:4px;}
  .chap-foot{display:flex;justify-content:space-between;margin-top:22px;padding-top:14px;border-top:1px solid var(--border);}
  .chap-nav{color:var(--amber);text-decoration:none;font-weight:600;font-size:13.5px;}

  /* 常見迷思表格：均線、類型欄位置中對齊 */
  table.stattable.myth td.line, table.stattable.myth td.kind{text-align:center;font-family:'Inter',sans-serif;font-weight:600;}
  table.stattable.myth td.line small{display:block;margin-top:2px;color:var(--mute);font-weight:400;font-size:10.5px;font-family:'IBM Plex Mono',monospace;}
  table.stattable.myth td.line{border-right:1px solid var(--grid);}
  h4.subhead{margin:20px 0 8px;font-size:13.5px;color:var(--text);}

  /* 週期性分析：平均漲跌橫條、總統選舉 */
  table.stattable.cycle td.barcell{min-width:120px;}
  table.stattable.cycle th.barhead{min-width:120px;}
  .cbar{position:relative;display:block;height:10px;border-radius:3px;background:var(--panel2);}
  .cbar::after{content:'';position:absolute;left:50%;top:-2px;bottom:-2px;width:1px;background:var(--border-strong);}
  .cbar i{position:absolute;top:0;bottom:0;border-radius:2px;opacity:.75;}
  table.stattable.cycle td.kind{font-family:'Inter',sans-serif;}
  table.stattable.cycle tr.click{cursor:pointer;}
  table.stattable.cycle td.years{text-align:left;white-space:normal;font-size:11.5px;line-height:1.7;min-width:260px;}
  table.stattable.cycle td.years span{display:inline-block;margin-right:10px;}
  table.stattable.cycle td.years .up{color:var(--up);} table.stattable.cycle td.years .down{color:var(--down);}
  .panel.election{border-color:var(--amber);border-left-width:3px;}
  .tag.elec{background:var(--amber);color:var(--on-amber);border-color:var(--amber);}
  .btnrow-l button.active{border-color:var(--amber);color:var(--amber);}
  .venn-row{display:flex;flex-wrap:wrap;gap:10px;margin:6px 0 12px;}
  .venn{margin:0;width:170px;text-align:center;font-size:12.5px;line-height:1.5;color:var(--text);}
  .venn svg{width:100%;height:auto;display:block;}
  .venn small{color:var(--mute);}

  /* ---------- 共用 SVG 圖表(assets/js/chart.js) ---------- */
  .lt-chart{position:relative;width:100%;}
  .lt-chart svg{display:block;touch-action:pan-y;}
  .lt-tip{display:none;position:absolute;pointer-events:none;background:var(--panel);border:1px solid var(--border-strong);border-radius:8px;padding:7px 10px;font-size:11.5px;line-height:1.6;box-shadow:0 4px 14px var(--shadow);white-space:nowrap;z-index:2;}
  .lt-tip b{display:block;font-family:'IBM Plex Mono',monospace;font-size:11px;color:var(--dim);font-weight:500;}
  .lt-tip i{display:inline-block;width:8px;height:8px;border-radius:2px;margin-right:6px;vertical-align:middle;}

  /* ---------- 選擇權 ---------- */
  .opt-form input[type=number], .opt-form input[type=password], .opt-form select{width:100%;box-sizing:border-box;background:var(--panel2);color:var(--text);border:1px solid var(--border);border-radius:8px;padding:8px 10px;font-family:'IBM Plex Mono',monospace;font-size:13px;}
  .opt-form select{font-family:'Inter',sans-serif;}
  .opt-form input:focus, .opt-form select:focus, table.legs input:focus{outline:none;border-color:var(--amber);}
  table.legs input{width:96px;background:var(--panel2);color:var(--text);border:1px solid var(--border);border-radius:6px;padding:5px 8px;font-family:'IBM Plex Mono',monospace;font-size:12.5px;text-align:right;}
  .stat .v.up, td.up{color:var(--up);}
  .stat .v.down, td.down{color:var(--down);}
  table.tquote td{font-size:12px;}
  table.tquote td:first-child{font-family:'IBM Plex Mono',monospace;font-weight:400;text-align:center;}
  table.tquote th.tq-call{color:var(--up);} table.tquote th.tq-put{color:var(--down);}
  table.tquote td.tq-k{background:var(--panel2);color:var(--amber);font-weight:600;}
  table.tquote td.itm{background:var(--amber-soft);}
  table.tquote tr.atm td{border-top:1px solid var(--amber);border-bottom:1px solid var(--amber);}
  .heat-pair{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:16px;}
  .heat-pair h4, .greek-grid h4{margin:0 0 6px;font-size:13px;}
  .greek-grid h4 small{font-weight:400;font-size:11.5px;}
  table.heat td{font-size:11.5px;padding:5px 6px;}
  table.heat td:first-child{text-align:center;}
  .greek-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:18px 22px;margin-top:10px;}

  /* 統計學章節文末的台股市場實例：表格在手機上可左右捲動，不撐寬整頁 */
  .live-box{overflow-x:auto;}

  /* 統計學互動動畫：排容原理(modules/stats/demos.js) */
  .ie-ctrl button.active{border-color:var(--amber);color:var(--amber);}
  .ie-ctrl button:disabled{opacity:.4;cursor:default;}
  .ie-wrap{display:grid;grid-template-columns:minmax(240px,340px) 1fr;gap:18px;align-items:start;margin-top:12px;}
  @media (max-width:700px){ .ie-wrap{grid-template-columns:1fr;} }
  .ie-svg{width:100%;height:auto;display:block;}
  .ie-flash{fill-opacity:0;animation:ieFlash 1.2s ease-in-out 1;}
  @keyframes ieFlash{0%{fill-opacity:0}35%{fill-opacity:.45}100%{fill-opacity:0}}
  .ie-formula{line-height:2.2;font-size:13px;overflow-x:auto;}
  .ie-term{opacity:.3;transition:opacity .3s;padding:2px;border-radius:4px;}
  .ie-term.on{opacity:1;}
  .ie-term.cur{background:var(--amber-soft);outline:1px solid var(--amber);}
  .ie-text p{margin:10px 0 8px;}
  .ie-example{font-size:12.5px;background:var(--panel);border:1px solid var(--border);border-radius:8px;padding:8px 10px;margin-bottom:6px;line-height:1.8;}
  .ie-legend{display:flex;flex-wrap:wrap;gap:12px;font-size:11.5px;color:var(--dim);margin-top:8px;}
  .ie-legend span{display:inline-flex;align-items:center;gap:5px;}
  .ie-legend i{display:inline-block;width:12px;height:12px;border-radius:3px;opacity:.7;}
  .ie-legend i.ie-miss{background:var(--up);opacity:.25;}
  .md-demo{margin:14px 0 18px;}
  /* 機率樹、生日問題(modules/stats/demos.js) */
  .pt-ctrl button.active{border-color:var(--amber);color:var(--amber);}
  .pt-inputs{margin:12px 0 4px;}
  .pt-inputs .paramgrid{grid-template-columns:repeat(4,1fr);gap:10px 16px;}
  @media (max-width:700px){ .pt-inputs .paramgrid{grid-template-columns:repeat(2,1fr);} }
  .pt-inputs input{width:100%;box-sizing:border-box;background:var(--panel);color:var(--text);border:1px solid var(--border);border-radius:6px;padding:6px 8px;font-family:'IBM Plex Mono',monospace;font-size:12.5px;}
  .pt-inputs input:disabled{opacity:.6;}
  .pt-svg{width:100%;max-width:760px;height:auto;display:block;margin:6px 0;}
  .pt-calc p{margin:6px 0;font-size:13px;line-height:1.9;}
  .bd-slider{max-width:420px;}
  .part-svg{width:100%;max-width:560px;height:auto;display:block;margin:0 auto;}

  /* ---------- 美股財報(modules/stock/earnings.js) ---------- */
  .er-ctrl{display:flex;flex-wrap:wrap;gap:12px;align-items:center;justify-content:space-between;}
  .er-weeks{margin:0;flex:1 1 420px;grid-template-columns:repeat(3,1fr);}
  .er-filters{display:flex;gap:8px;flex-wrap:wrap;}
  .er-filters select, .er-filters input{background:var(--panel2);color:var(--text);border:1px solid var(--border);border-radius:8px;padding:8px 10px;font-family:'Inter',sans-serif;font-size:13px;}
  .er-filters input{min-width:180px;}
  .er-filters input:focus, .er-filters select:focus{outline:none;border-color:var(--amber);}
  .er-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:10px;align-items:start;}
  @media (max-width:1100px){ .er-grid{grid-template-columns:repeat(auto-fill,minmax(220px,1fr));} }
  .er-day{background:var(--panel2);border:1px solid var(--border);border-radius:10px;padding:8px;min-width:0;}
  .er-day.today{border-color:var(--amber);}
  .er-day-h{display:flex;justify-content:space-between;align-items:baseline;font-family:'Space Grotesk',sans-serif;font-weight:600;font-size:14px;padding:2px 4px 8px;}
  .er-day-h span{font-family:'Inter',sans-serif;font-weight:400;font-size:11.5px;color:var(--mute);}
  .er-slot{margin-bottom:8px;}
  .er-slot-h{font-size:12px;font-weight:600;color:var(--amber);padding:2px 4px 4px;display:flex;flex-direction:column;}
  .er-slot-h small{font-weight:400;font-size:10.5px;color:var(--mute);}
  .er-card{background:var(--panel);border:1px solid var(--border);border-radius:8px;padding:7px 8px;margin-bottom:5px;}
  .er-top-row{display:flex;align-items:baseline;gap:6px;}
  .er-top-row b{font-family:'IBM Plex Mono',monospace;font-size:13px;}
  .er-cap{font-size:11px;color:var(--dim);font-family:'IBM Plex Mono',monospace;}
  .er-links{margin-left:auto;display:flex;gap:4px;}
  .er-links a{font-size:10px;font-weight:700;color:var(--mute);text-decoration:none;border:1px solid var(--border);border-radius:4px;padding:0 4px;}
  .er-links a:hover{color:var(--amber);border-color:var(--amber);}
  .er-name{font-size:11.5px;color:var(--dim);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin:1px 0 3px;}
  .er-eps{font-size:11.5px;color:var(--dim);line-height:1.5;}
  .er-eps b{color:var(--text);font-family:'IBM Plex Mono',monospace;font-weight:600;}
  .er-eps b.up{color:var(--up);} .er-eps b.down{color:var(--down);}
  .er-empty{font-size:12px;padding:6px 4px;}
  table.er-top td a{color:var(--amber);text-decoration:none;font-weight:600;}
  /* 結算日曆、選擇權分頁 */
  table.settle-table tr.settle-month td{background:var(--amber-soft);}
  table.settle-table tr.settle-month td:nth-child(3){color:var(--amber);font-weight:600;}
  .mk-tabs{grid-template-columns:repeat(3,minmax(0,1fr));}
  @media (max-width:640px){ .mk-tabs{grid-template-columns:1fr;} }
  table.stattable tr.inaug td:first-child{color:var(--amber);}

  /* 美股策略(modules/stock/us-strategy.js)：優於 SPY 的數字加粗底線 */
  table.us-strat tr.click{cursor:pointer;}
  table.us-strat td.beat, .stat .v.beat, table.us-year td.beat{font-weight:700;text-decoration:underline;text-underline-offset:3px;}
  .us-tabs{grid-template-columns:repeat(auto-fit,minmax(160px,1fr));}
  .us-family{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));}
  .pk-tabs{grid-template-columns:repeat(3,minmax(0,1fr));}
  @media (max-width:640px){ .pk-tabs{grid-template-columns:1fr;} }
  .pk-range button.active{border-color:var(--amber);color:var(--amber);}

  /* ETF大禮包(modules/etf/pack.js) */
  .pk-picks{display:flex;flex-wrap:wrap;gap:8px;}
  .pk-picks label{display:inline-flex;align-items:center;gap:5px;padding:6px 10px;border:1px solid var(--border);border-radius:8px;background:var(--panel2);font-size:12.5px;cursor:pointer;}
  .pk-picks label small{color:var(--mute);font-size:11px;}
  .pk-picks input{accent-color:var(--amber);}
  details.pk-more{margin-top:10px;}
  details.pk-more summary{cursor:pointer;color:var(--amber);font-size:13px;font-weight:600;}
  table.pk-kind td:first-child{white-space:nowrap;}
  table.pk-kind td.pk-ex{text-align:left;white-space:normal;min-width:150px;}
  table.pk-kind td.pk-note{text-align:left;white-space:normal;min-width:280px;font-family:'Inter',sans-serif;line-height:1.6;}
  /* 機率模型關係圖(modules/stats/demos.js 的 dist-map) */
  .dm-wrap{overflow-x:auto;}
  .dm-svg{width:100%;min-width:720px;height:auto;display:block;}
  .dm-legend{display:flex;flex-wrap:wrap;gap:14px;font-size:11.5px;color:var(--dim);margin:6px 0;}
  .dm-legend span{display:inline-flex;align-items:center;gap:6px;}
  .dm-l{display:inline-block;width:22px;height:0;border-top:2px solid var(--blue);}
  .dm-l.lim{border-top:2px dotted var(--amber);} .dm-l.ana{border-top:2px dashed var(--dim);}
  .dm-n{display:inline-block;width:18px;height:12px;border:1.5px solid var(--border-strong);border-radius:2px;}
  .dm-n.c{border-color:var(--blue);border-radius:7px;}
  .dm-info{font-size:13px;line-height:1.8;background:var(--panel);border:1px solid var(--border);border-radius:8px;padding:8px 12px;}
  .dm-info ul{margin:4px 0 0;}
  /* 讓公式隱藏的 MathML(絕對定位)留在可捲動的表格裡，不撐寬頁面 */
  .tablewrap, .katex-display{position:relative;}

  /* 載入中(頁面、統計學章節) */
  .page-loading{display:flex;align-items:center;gap:10px;color:var(--mute);padding:40px 4px;font-size:14px;}
  .chap-loading{padding:24px 0;}
  .spinner{width:16px;height:16px;border-radius:50%;border:2px solid var(--border-strong);border-top-color:var(--amber);animation:lt-spin .8s linear infinite;flex:none;}
  @keyframes lt-spin{to{transform:rotate(360deg);}}
  @media (prefers-reduced-motion: reduce){ .spinner{animation:none;} }
  /* 統計學章節很長(數百個公式)：畫面外的段落先不排版，捲動到附近才排，切換章節更快 */
  .chapter #chapBody > *{content-visibility:auto;contain-intrinsic-size:auto 60px;}
  /* 週期性分析(modules/indices/indices.js)：月份效應的詳細數據 */
  .cy-detail{margin-top:12px;}
  .cy-detail summary{cursor:pointer;color:var(--mute);font-size:13px;margin-bottom:8px;}
  /* ETF 配息課稅：說明文字較長的表格允許換行 */
  table.tx-src td, table.tx-src th{white-space:normal;}
  table.tx-src td:first-child{white-space:nowrap;}
  /* ETF 分類表：管理方式(合併儲存格)與類型欄各自固定樣式，類型欄才會上下對齊 */
  table.pk-kind td.pk-mgmt{text-align:center;vertical-align:middle;}
  table.pk-kind td.pk-type{text-align:left;font-family:'Inter',sans-serif;font-weight:600;white-space:nowrap;}
  /* 台股其他研究：系列標記(同一系列同一個顏色) */
  .series-tag{display:inline-flex;align-items:center;gap:5px;font-size:11.5px;font-weight:500;color:var(--dim);vertical-align:middle;margin-right:4px;}
  .series-tag i{display:inline-block;width:9px;height:9px;border-radius:50%;}
