/* 🛰 戰情室樣式（B 石墨極簡·2026-11-01）
   字級三階：結論 1.5rem（24px）／內文 1rem（16px）／註 .8125rem（13px）；A−/A＋ 改的是根字級，三階等比放大縮小。
   --t-* 為共用 K 線元件（chart_widget）讀的色票，對應到 B 配色，讓彈窗與戰情室同一套顏色。 */

:root{
  /* B 石墨極簡·淺色 */
  --bg:#f6f7f9; --sf:#ffffff; --sf2:#f0f1f4; --ln:#e2e4e8; --tx:#16181c; --tx2:#454a52; --dm:#6b727c;
  --ac:#2563eb; --up:#d92d2d; --dn:#138a55; --hd:#ffffff; --hdtx:#16181c;
  --lr:#d92d2d; --ly:#c98a00; --lo:#e2620f; --lg:#138a55; --lu:#8a9099;
  --t-bg:var(--bg); --t-surface:var(--sf); --t-surface2:var(--sf2); --t-surface3:#e7e9ed; --t-line:var(--ln);
  --t-txt:var(--tx); --t-txt2:var(--tx2); --t-dim:var(--dm); --t-dim2:#9aa0a8; --t-up:var(--up); --t-down:var(--dn);
  --t-accent:var(--ac); --t-gold:#b7791f; --t-purple:#7c3aed; --t-chart-bg:#ffffff; --t-grid:#eceef1; --t-axis:#6b727c;
  --t-zigzag:#16181c; --t-crosshair:#9aa0a8; --t-target:#fff6dd;
  color-scheme:light;
}
:root[data-theme="dark"]{
  /* B 石墨極簡·深色 */
  --bg:#121316; --sf:#1b1d21; --sf2:#24272c; --ln:#2e3238; --tx:#f2f3f5; --tx2:#c4c8ce; --dm:#8f959e;
  --ac:#5b9dff; --up:#ff5c5c; --dn:#3ccf8e; --hd:#121316; --hdtx:#f2f3f5;
  --lr:#ff5c5c; --ly:#f5b83d; --lo:#ff8a3d; --lg:#3ccf8e; --lu:#8f959e;
  --t-surface3:#2b2f35; --t-dim2:#6b727c; --t-gold:#f5b83d; --t-purple:#b18cff; --t-chart-bg:#16181b;
  --t-grid:#2a2d33; --t-axis:#8f959e; --t-zigzag:#f2f3f5; --t-crosshair:#6b727c; --t-target:#2d2a1c;
  color-scheme:dark;
}

*{box-sizing:border-box}
html{font-size:16px;-webkit-text-size-adjust:100%}
body{margin:0;background:var(--bg);color:var(--tx);font-family:"Noto Sans TC","Microsoft JhengHei","PingFang TC",sans-serif;
  line-height:1.5;font-variant-numeric:tabular-nums}
a{color:var(--ac);text-decoration:none}
button{font-family:inherit}

/* 共用彈窗（K 線、AI 看法）保底：沒開時一律隱藏（正式樣式在 chart_widget.css·這裡防樣式檔晚到時露出） */
.modal-bg:not(.show){display:none}

/* 頂列 */
.wr-hd{position:sticky;top:0;z-index:50;display:flex;align-items:center;gap:8px;padding:10px 16px;background:var(--hd);color:var(--hdtx);
  border-bottom:1px solid var(--ln)}
.wr-brand{font-weight:800;font-size:1.0625rem;letter-spacing:.3px}
.wr-user{color:var(--dm);font-size:.8125rem}
.wr-sp{flex:1}
.wr-upd{color:var(--dm);font-size:.8125rem;white-space:nowrap}
.wr-tool{display:inline-flex;align-items:center;justify-content:center;min-height:36px;min-width:36px;padding:0 10px;border-radius:10px;
  border:1px solid var(--ln);background:var(--sf);color:var(--tx);font-size:.875rem;cursor:pointer;white-space:nowrap}
.wr-tool:hover{background:var(--sf2)}
.wr-zoom{display:inline-flex;gap:4px}

.wr-main{max-width:1120px;margin:0 auto;padding:16px 16px 40px}
.wr-card{background:var(--sf);border:1px solid var(--ln);border-radius:16px;padding:16px 18px;margin-bottom:14px}
.wr-h{margin:0 0 10px;font-size:1.0625rem;display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.wr-grid2{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.wr-grid2 .wr-card{margin-bottom:14px}
.wr-muted{color:var(--dm);font-size:.8125rem}
.up{color:var(--up)} .dn{color:var(--dn)} .flat{color:var(--tx2)}

/* 膠囊 */
.wr-chip{display:inline-flex;align-items:center;gap:4px;padding:1px 9px;border-radius:999px;font-size:.8125rem;font-weight:600;
  border:1px solid var(--ln);background:var(--sf2);color:var(--tx2);white-space:nowrap}
.wr-chip.r{border-color:var(--lr);color:var(--lr);background:transparent}
.wr-chip.y{border-color:var(--ly);color:var(--ly);background:transparent}
.wr-chip.o{border-color:var(--lo);color:var(--lo);background:transparent}
.wr-chip.g{border-color:var(--lg);color:var(--lg);background:transparent}
.wr-chip.b{border-color:var(--ac);color:var(--ac);background:transparent}
.wr-chip.stale{border-style:dashed;color:var(--dm)}
.stale-v{color:var(--dm)!important}

/* ① 結論列 */
.wr-verdict{border-left:8px solid var(--lu)}
.wr-verdict[data-l="紅"]{border-left-color:var(--lr)} .wr-verdict[data-l="黃"]{border-left-color:var(--ly)}
.wr-verdict[data-l="🟠"]{border-left-color:var(--lo)} .wr-verdict[data-l="綠"]{border-left-color:var(--lg)}
.wr-v-top{display:flex;gap:16px;align-items:flex-start}
.wr-v-main{flex:1;min-width:0}
.wr-v-big{font-size:1.5rem;font-weight:800;line-height:1.3}
.wr-v-big .dot{display:inline-block;width:.8em;height:.8em;border-radius:50%;vertical-align:-.05em;margin-right:.35em;background:var(--lu)}
.wr-v-sub{color:var(--tx2);margin-top:4px}
.wr-v-when{color:var(--dm);font-size:.8125rem;text-align:right;white-space:nowrap}
.wr-v-idx{display:flex;gap:14px;flex-wrap:wrap;margin-top:10px;font-size:.9375rem}
.wr-v-idx b{font-weight:700}
.wr-reasons{display:grid;grid-template-columns:1fr 1fr;gap:8px 24px;margin-top:12px;padding-top:12px;border-top:1px dashed var(--ln)}
.wr-reasons .r{min-width:0}
.wr-reasons .r .k{color:var(--dm);font-size:.8125rem;display:block}
.wr-reasons .r .so{color:var(--ac)}
.wr-v-sop{margin-top:10px;color:var(--dm);font-size:.8125rem}
.wr-v-warn{margin-top:6px;font-size:.8125rem;color:var(--ly)}
.wr-v-warn:empty{display:none}
.wr-legend{margin-top:8px;color:var(--dm);font-size:.75rem}

/* ② 持倉 */
.wr-hold.alarm{border:2px solid var(--lr)}
.wr-hold.alarm .wr-h{color:var(--lr)}
.hp{padding:10px 0;border-top:1px solid var(--ln);cursor:pointer}
.hp:first-child{border-top:0;padding-top:0}
.hp-row{display:flex;gap:12px;align-items:baseline;flex-wrap:wrap}
.hp-nm{font-weight:800;font-size:1.0625rem}
.hp-bar{position:relative;height:8px;background:var(--sf2);border-radius:6px;margin:14px 0 4px}
.hp-bar .z{position:absolute;top:0;bottom:0;border-radius:6px}
.hp-bar .mk{position:absolute;top:-5px;width:2px;height:18px;background:var(--tx2);border-radius:1px}
.hp-bar .cur{position:absolute;top:-10px;width:0;height:0;border:7px solid transparent;border-top-color:var(--tx);transform:translateX(-7px)}
.hp-ticks{position:relative;height:2.6em;font-size:.75rem;color:var(--dm)}
.hp-ticks span{position:absolute;top:0;transform:translateX(-50%);white-space:nowrap}
.hp-ticks span:first-child{transform:none}
.hp-ticks span:last-child{transform:translateX(-100%)}
.hp-ok{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-top:10px;color:var(--lg);font-weight:700}
.hp-ok .n{color:var(--tx2);font-weight:400;font-size:.875rem}
.hp-mini{display:flex;gap:10px;align-items:center;padding:8px 0;border-top:1px solid var(--ln);cursor:pointer}
.hp-mini .c{font-weight:700;min-width:4.6em}
.hp-mini .p{margin-left:auto}

/* ⚙ 管理持倉（經典版 holdings.js 的外框；樣式照經典版 style.css 同名規則、改用戰情室色票） */
.wr-holdmgr{margin-top:12px;border:1px solid var(--ln);border-radius:12px;background:var(--sf2);overflow:hidden}
.wr-holdmgr .wbar{display:flex;align-items:center;gap:10px;padding:8px 12px;flex-wrap:wrap;cursor:pointer;min-height:44px}
.wr-holdmgr .wtitle{font-weight:700;color:var(--tx2);font-size:.9375rem;white-space:nowrap}
.wr-holdmgr .wsum{font-size:.8125rem;color:var(--dm)}
.wr-holdmgr .wtools{margin-left:auto;display:flex;gap:6px;flex-wrap:wrap}
.wr-holdmgr .btn-mini{font-size:.8125rem;padding:4px 10px;border:1px solid var(--ln);background:var(--sf);border-radius:8px;cursor:pointer;color:var(--tx);min-height:36px;font-family:inherit}
.wr-holdmgr .btn-mini:hover{border-color:var(--ac)}
.wr-holdmgr #holdAdd{border-color:var(--ac);color:var(--ac);font-weight:700}
.wr-holdmgr .wlist{padding:6px 12px 10px;border-top:1px dashed var(--ln)}
/* 經典版持倉卡位置條：兩端刻度字靠邊，不被裁掉 */
.wr-holdmgr .hd-rlab span:first-child{transform:none}
.wr-holdmgr .hd-rlab span:last-child{transform:translateX(-100%)}

/* ③ 清單列 */
.li{display:flex;gap:10px;align-items:center;padding:9px 0;border-top:1px solid var(--ln);cursor:pointer;min-height:44px;flex-wrap:wrap}
.li:first-of-type{border-top:0}
.li .c{font-weight:800;min-width:3.4em}
.li .n{font-weight:600}
.li .why{color:var(--dm);font-size:.8125rem;flex-basis:100%;margin-top:-2px}
.li:hover .n{color:var(--ac)}
.wr-note{margin-top:8px;font-size:.875rem;color:var(--ly)}
.wr-note.r{color:var(--lr)}
.wr-more{margin-top:6px;color:var(--dm);font-size:.8125rem}

/* 🎯 策略看板 */
.st-gate{font-size:.875rem;margin:-2px 0 10px}
.st-gate:empty{display:none}
.st-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:8px}
.st-tile{border:1px solid var(--ln);border-radius:10px;padding:7px 10px 8px;background:var(--sf2);cursor:pointer;min-height:44px;text-align:left;
  color:var(--tx);font:inherit;display:flex;flex-direction:column;gap:0;border-top:3px solid var(--lg);min-width:0}
.st-tile:hover{border-color:var(--ac)}
.st-tile.on{outline:2px solid var(--ac);outline-offset:-1px}
.st-tile.zero{border-top-color:var(--ln);opacity:.72}
.st-tile.off{border-top-color:var(--lu);opacity:.6}
.st-hd{display:flex;align-items:baseline;gap:6px;min-width:0}
.st-id{font-size:.6875rem;font-weight:800;color:var(--dm);letter-spacing:.3px;flex:none}
.st-nm{font-size:.8125rem;font-weight:700;line-height:1.3;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.st-n{font-size:1.375rem;font-weight:800;line-height:1.2}
.st-n small{font-size:.75rem;font-weight:600;color:var(--dm);margin-left:2px}
.st-st,.st-top{font-size:.75rem;line-height:1.35;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.st-st{color:var(--dm)}
.st-top{color:var(--tx2)}
.st-overlap{margin-top:10px;font-size:.875rem}
.st-overlap:empty{display:none}
.st-detail{margin-top:10px}
.st-detail:empty{display:none}
.st-dh{display:flex;gap:8px;align-items:baseline;flex-wrap:wrap;font-weight:700;margin-bottom:4px}
.st-dh .wr-muted{font-weight:400}
@media (max-width:767px){.st-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}

/* ④ 新聞 */
.nw{display:flex;gap:10px;padding:8px 0;border-top:1px solid var(--ln);align-items:baseline}
.nw:first-of-type{border-top:0}
.nw .t{color:var(--dm);font-size:.8125rem;min-width:3.2em}
.nw a{color:var(--tx)}
.nw a:hover{color:var(--ac)}
.nw .src{color:var(--dm);font-size:.75rem;white-space:nowrap}
.nw .tag{color:var(--ac);font-size:.8125rem;font-weight:700;white-space:nowrap}

/* 📰 跑馬燈 */
.wr-ticker{display:flex;align-items:center;gap:10px;background:var(--sf);border-bottom:1px solid var(--ln);padding:0 16px;height:40px;overflow:hidden}
.wr-tk-lab{flex:none;font-size:.8125rem;font-weight:700;color:var(--ac);white-space:nowrap}
.wr-tk-vp{flex:1;overflow:hidden;position:relative;height:100%;
  -webkit-mask-image:linear-gradient(90deg,transparent,#000 3%,#000 97%,transparent);mask-image:linear-gradient(90deg,transparent,#000 3%,#000 97%,transparent)}
.wr-tk-track{position:absolute;left:0;top:0;height:100%;display:flex;align-items:center;white-space:nowrap;will-change:transform}
.wr-tk-track.run{animation:wrtk var(--tk-dur,120s) linear infinite}
.wr-ticker:hover .wr-tk-track{animation-play-state:paused}
.wr-tk-it{display:inline-flex;align-items:baseline;gap:6px;padding:0 22px 0 0;font-size:.875rem;color:var(--tx)}
.wr-tk-it:hover{color:var(--ac)}
.wr-tk-it .t{color:var(--dm);font-size:.75rem}
.wr-tk-it .s{color:var(--dm);font-size:.75rem}
.wr-tk-it::after{content:"•";color:var(--dm);margin-left:16px}
@keyframes wrtk{from{transform:translateX(0)}to{transform:translateX(-50%)}}
@media (prefers-reduced-motion:reduce){.wr-tk-track.run{animation-duration:400s}}

/* 頁尾 */
.wr-foot{color:var(--dm);font-size:.75rem;text-align:center;margin-top:18px;line-height:1.8}
.wr-links{display:flex;gap:8px;justify-content:center;flex-wrap:wrap;margin-top:8px}
.wr-links a{font-size:.8125rem;border:1px solid var(--ln);border-radius:999px;padding:6px 14px;color:var(--tx2);background:var(--sf)}

/* 骨架 */
.wr-skel{display:block;height:.9em;border-radius:6px;background:linear-gradient(90deg,var(--sf2),var(--ln),var(--sf2));
  background-size:200% 100%;animation:sk 1.2s infinite;margin:6px 0}
.w60{width:60%}.w70{width:70%}.w80{width:80%}.w90{width:90%}
@keyframes sk{0%{background-position:200% 0}100%{background-position:-200% 0}}
.wr-err{color:var(--dm);font-size:.875rem}

/* 🖥 寬螢幕（24 吋 1920×1080 為準）：左欄＝大盤＋持倉；右欄＝策略看板＋買點/守望；下方全寬＝今日主流、新聞 */
@media (min-width:1400px){
  .wr-main{max-width:1860px;padding:16px 24px 32px;display:grid;grid-template-columns:minmax(0,5fr) minmax(0,6fr);
    grid-template-areas:"v s" "h s" "f f" "n n" "ft ft";grid-template-rows:auto 1fr;gap:16px 20px;align-items:start}
  .wr-main > *{margin:0}
  #secVerdict{grid-area:v} #secHold{grid-area:h} #secStrat{grid-area:s} .wr-grid2{grid-area:p} #secFlow{grid-area:f} #secNews{grid-area:n} .wr-foot{grid-area:ft}
  .wr-grid2{gap:16px} .wr-grid2 .wr-card{margin:0}
  /* 大盤字放大 */
  .wr-v-big{font-size:1.875rem}
  .wr-v-sub{font-size:1.1875rem}
  .wr-v-idx{font-size:1.25rem;gap:22px}
  .wr-reasons{font-size:1.0625rem;gap:12px 28px}
  .wr-reasons .r .k{font-size:.875rem}
  .wr-v-sop,.wr-v-warn{font-size:.875rem}
  .wr-h{font-size:1.1875rem}
  .st-n{font-size:1.5rem}
  .wr-ticker{padding:0 24px}
}

/* 手機分頁列：桌機隱藏 */
.wr-tabs{display:none}

html,body{overflow-x:clip}                     /* 任何元素都不准把整頁撐寬（手機不出現左右捲） */
.wr-main > *{min-width:0}
@media (max-width:767px){
  .wr-hd{padding:8px 10px;gap:5px}
  .wr-brand{font-size:1rem;white-space:nowrap}
  .wr-upd,.wr-user,.wr-lbl{display:none}
  .wr-tool{min-height:40px;min-width:40px;padding:0 8px;font-size:.875rem}
  .wr-zoom{gap:3px}
  .wr-tool{min-height:38px;min-width:38px;padding:0 6px;font-size:.8125rem}
  /* 經典版持倉卡（holdings.js）手機排法：燈＋股名＋現價一排，位置條、按鈕、說明各佔整排 */
  .wr-holdmgr .wbar{gap:6px}
  .wr-holdmgr .wtools{margin-left:0;width:100%}
  .wr-holdmgr .hd-card{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:6px 10px;align-items:center;padding:10px}
  .wr-holdmgr .hd-card > *{min-width:0}
  .wr-holdmgr .hd-lamp{min-width:0;padding:4px 9px}
  .wr-holdmgr .hd-id{min-width:0}
  .wr-holdmgr .hd-px{min-width:0}
  .wr-holdmgr .hd-ruler,.wr-holdmgr .hd-btns,.wr-holdmgr .hd-detail{grid-column:1 / -1;min-width:0}
  .wr-holdmgr .hd-ruler{padding:0 2px}
  .wr-ticker{padding:0 12px;height:38px}
  .wr-v-idx{gap:6px 14px}
  .wr-reasons .r{overflow-wrap:anywhere}
  .hp-row{gap:6px 12px}
  .wr-main{padding:12px 16px calc(84px + env(safe-area-inset-bottom))}
  .wr-card{border-radius:14px;padding:14px}
  .wr-grid2{grid-template-columns:1fr;gap:0}
  .wr-v-top{flex-direction:column;gap:4px}
  .wr-v-when{text-align:left}
  .wr-reasons{grid-template-columns:1fr}
  .wr-v-big{font-size:1.5rem}
  /* 分頁：只顯示目前分頁的區塊 */
  body[data-tab] [data-tab]{display:none}
  body[data-tab="mkt"] [data-tab="mkt"], body[data-tab="hold"] [data-tab="hold"], body[data-tab="pick"] [data-tab="pick"]{display:block}
  .wr-tabs{display:flex;position:fixed;left:0;right:0;bottom:0;z-index:60;background:var(--sf);border-top:1px solid var(--ln);
    padding-bottom:env(safe-area-inset-bottom)}
  .wr-tabs button{flex:1;min-height:58px;border:0;background:transparent;color:var(--dm);font-size:1.125rem;display:flex;flex-direction:column;
    align-items:center;justify-content:center;gap:1px;position:relative;cursor:pointer;border-top:2px solid transparent}
  .wr-tabs button span{font-size:.8125rem;font-weight:600}
  .wr-tabs button.on{color:var(--ac);border-top-color:var(--ac)}
  .wr-tabs button.alarm span{color:var(--lr)}
  .wr-tabs i{position:absolute;top:6px;left:calc(50% + 10px);font-style:normal;font-size:.6875rem;font-weight:700;background:var(--lr);color:#fff;
    border-radius:999px;padding:0 6px;line-height:1.5}
  .wr-tabs i:empty{display:none}
}
