/* ============================================================
   LifeOS 共用外皮 — Command Deck（設計規範 v2，2026-09-12）
   一次改這裡，全站頁面同步換皮
   ⚠ 這支不可以出現色碼，一律 var(--token)；色票在 lifeos-tokens.css（深淺兩套）
     2026-09-12 全站深淺可切換後，寫死色碼＝那個元素在淺色模式會壞掉
     唯三例外：操盤中心 PDF 白紙 #report-stage、待辦標籤上的 ×、BTC 頭像深字
   套用方式：各頁 </head> 前加
     <link rel="stylesheet" href="/webhook/lifeos-tokens.css">
     <link rel="stylesheet" href="/webhook/lifeos-theme.css?v=N">
     <script src="/webhook/lifeos-theme.js"></script>
   ============================================================ */
@import url('https://fonts.googleapis.com/css2?family=Archivo:wght@400;500;600;700;800&family=JetBrains+Mono:wght@400;500;600;700&family=Noto+Sans+TC:wght@300;400;500;700;900&display=swap');

:root{
  /* —— 各頁自己取的變數名 → 對應到色票（lifeos-tokens.css）—— */
  /* 底色 / 面板 */
  --bg2:var(--bg) !important;
  --bg-primary:var(--bg) !important;
  --bg-secondary:var(--panel) !important;
  --bg-tertiary:var(--raise) !important;
  --bg-card:var(--panel) !important;
  --bg-input:var(--sunk) !important;
  --panel2:var(--raise) !important;
  --panel3:var(--sunk) !important;
  --card:var(--raise) !important;
  --surface:var(--panel) !important;
  --surface2:var(--raise) !important;
  --header-bg:var(--raise) !important;
  --row-hover:var(--raise) !important;
  --tag-bg:var(--raise) !important;
  --editable-bg:var(--sunk) !important;
  --sidebar-bg:var(--sunk) !important;

  /* —— 框線 —— */
  --border:var(--rl) !important;
  --border2:var(--rl2) !important;
  --border-solid:var(--rl) !important;
  --border-bright:var(--rl2) !important;
  --accent-border:var(--cy-d) !important;
  --editable-border:var(--rl2) !important;
  --grid-line:color-mix(in srgb,var(--tx) 2.2%,transparent) !important;

  /* —— 文字 —— */
  --text:var(--tx) !important;
  --text2:var(--md) !important;
  --text3:var(--ft) !important;
  --text-primary:var(--tx) !important;
  --text-secondary:var(--md) !important;
  --text-muted:var(--ft) !important;
  --subtext:var(--md) !important;
  --sub:var(--md) !important;
  --muted:var(--ft) !important;
  --dim:var(--ft) !important;
  --navy:var(--tx) !important;
  --navy-m:var(--md) !important;
  --sidebar-text:var(--md) !important;

  /* —— 強調色（青）—— */
  --accent:var(--cy) !important;
  --accent2:var(--vi) !important;
  --accent-dim:var(--cy-d) !important;
  --accent-glow:color-mix(in srgb,var(--cy) 22%,transparent) !important;
  --accent-blue:var(--cy) !important;
  --accent-cyan:var(--cy) !important;
  --blue:var(--cy) !important;
  --cyan:var(--cy) !important;
  --cyan-glow:color-mix(in srgb,var(--cy) 22%,transparent) !important;
  --neon-cyan:var(--cy) !important;
  --sky:var(--cy) !important;
  --sky-l:var(--cy-h) !important;
  --sky-ll:var(--cy-h) !important;
  --sky-d:var(--cy-d) !important;
  --sidebar-active:var(--cy) !important;
  --sidebar-hover:var(--raise) !important;

  /* —— 語意色：紅漲綠跌 —— */
  --red:var(--up) !important;
  --danger:var(--up) !important;
  --accent-red:var(--up) !important;
  --neon-red:var(--up) !important;
  --green:var(--dn) !important;
  --success:var(--dn) !important;
  --accent-green:var(--dn) !important;
  --neon-green:var(--dn) !important;
  --orange:var(--wn) !important;
  --yellow:var(--wn) !important;
  --gold:var(--wn) !important;
  --warning:var(--wn) !important;
  --accent-orange:var(--wn) !important;
  --accent-yellow:var(--wn) !important;
  --neon-orange:var(--wn) !important;
  --purple:var(--vi) !important;
  --pink:var(--vi) !important;
  --accent-purple:var(--vi) !important;
  --neon-purple:var(--vi) !important;


  /* —— 其餘各頁別名 —— */
  --line:var(--rl) !important;
  --line2:var(--rl2) !important;
  --inset:var(--sunk) !important;
  --faint:var(--ft) !important;
  --mut:var(--md) !important;
  --acc:var(--wn) !important;
  --amber:var(--wn) !important;
  --brand:var(--cy) !important;
  --brand-d:var(--cy) !important;
  --brand-soft:color-mix(in srgb,var(--cy) 14%,transparent) !important;
  --good:var(--dn) !important;
  --bad:var(--up) !important;
  --shadow:none !important;

  --mono:'JetBrains Mono',ui-monospace,monospace !important;
  --font-mono:'JetBrains Mono',ui-monospace,monospace !important;
}

/* ── 底 ── */
html,body{
  background-color:var(--bg) !important;
  background-image:none !important;
  color:var(--tx) !important;
  font-family:'Archivo','Noto Sans TC',-apple-system,BlinkMacSystemFont,'PingFang TC',sans-serif;
  -webkit-font-smoothing:antialiased;
}

/* ── 捲軸統一細線 ── */
*::-webkit-scrollbar{width:6px;height:6px;}
*::-webkit-scrollbar-track{background:transparent;}
*::-webkit-scrollbar-thumb{background:var(--rl2);border-radius:3px;}
*::-webkit-scrollbar-thumb:hover{background:var(--rl3);}
*{scrollbar-width:thin;scrollbar-color:var(--rl2) transparent;}

/* ── 數字一律等寬 + JetBrains Mono（指揮艙的招牌）── */
table td,table th{font-variant-numeric:tabular-nums;}
[class*="num"],[class*="val"],[class*="price"],[class*="pct"],[class*="metric"],
[class*="stat"],[class*="figure"],[class*="big"],[class*="amount"],[class*="ratio"],
[class*="score"],[class*="count"],[class*="time"],[class*="date"],[class*="code"]{
  font-family:'JetBrains Mono',ui-monospace,SFMono-Regular,monospace !important;
  font-variant-numeric:tabular-nums;
}

/* ── 小標籤：等寬大寫，跟首頁面板抬頭同語彙 ── */
[class*="label"],[class*="caption"],[class*="sub-title"],[class*="subtitle"]{
  letter-spacing:.06em;
}

/* ── 表格 ── */
table{border-collapse:collapse;}
table th{
  font-family:'JetBrains Mono',ui-monospace,monospace;
  font-size:10px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;
  color:var(--md) !important;background:var(--panel) !important;
  border-bottom:1px solid var(--rl) !important;
}
table td{border-bottom:1px solid var(--rl) !important;}
table tbody tr:hover td{background:var(--raise) !important;}

/* ── 表單元件 ── */
input,select,textarea{
  font-family:inherit;
  background:var(--sunk) !important;color:var(--tx) !important;
  border:1px solid var(--rl2) !important;border-radius:4px !important;
}
input::placeholder,textarea::placeholder{color:var(--ft) !important;}
input:focus,select:focus,textarea:focus{
  outline:none !important;border-color:var(--cy) !important;
  box-shadow:0 0 0 2px color-mix(in srgb,var(--cy) 16%,transparent) !important;
}
input[type=checkbox],input[type=radio]{accent-color:var(--cy);}
button{font-family:inherit;border-radius:4px;}
button:focus-visible,a:focus-visible{outline:2px solid var(--cy);outline-offset:1px;}


/* ── 漸層彩虹標題 → 指揮艙的實色標題 ── */
h1,h2,h3,h4,
[class*="title"],[class*="Title"]{
  background-image:none !important;
  -webkit-background-clip:border-box !important;
  background-clip:border-box !important;
  -webkit-text-fill-color:currentColor !important;
  letter-spacing:.01em !important;
}
h1{color:var(--tx) !important;font-weight:800 !important;}
h2,h3{color:var(--tx) !important;font-weight:700 !important;}

/* ── 頁首橫幅：一律壓成沉底方框 ── */
header,.header,[class*="page-head"],[class*="pageHead"],[class*="topbar"],[class*="top-bar"]{
  background:var(--sunk) !important;background-image:none !important;
  border:1px solid var(--rl2) !important;border-radius:4px !important;
  box-shadow:none !important;
}

/* ── 面板／卡片：方正、無光暈 ── */
[class*="card"],[class*="panel"],[class*="section"],[class*="box"],
[class*="tile"],[class*="module"],[class*="widget"],[class*="block"]{
  border-radius:4px !important;
  box-shadow:none !important;
}


/* ── 容器一律去漸層：指揮艙是平面的 ── */
[class*="card"],[class*="panel"],[class*="section"],[class*="box"],
[class*="tile"],[class*="module"],[class*="widget"],[class*="block"],
[class*="head"],[class*="wrap"],[class*="row"],[class*="item"],
button,[class*="btn"],[class*="tab"],
[class*="badge"],[class*="chip"],[class*="tag"],[class*="pill"]{
  background-image:none !important;
  text-shadow:none !important;
}


/* ── 通用卡片底色（舊頁面多半就叫 .card / .panel / .box）── */
.card,.panel,.box,.tile,.widget,.module{
  background-color:var(--panel) !important;
  border-color:var(--rl) !important;
}
.row,.item,.list-item,.hist-item{border-color:var(--rl) !important;}

/* ── 小標籤／膠囊：3px 直角感 ── */
[class*="badge"],[class*="chip"],[class*="tag"],[class*="pill"],[class*="label"]{
  border-radius:3px !important;box-shadow:none !important;
}

/* ── 分頁 / 按鈕 ── */
[class*="tab"]{border-radius:4px !important;box-shadow:none !important;}
[class*="tab"].active,[class*="tab"].on,[class*="tab"][aria-selected="true"]{
  background:var(--raise) !important;background-image:none !important;
  border-color:var(--cy-d) !important;color:var(--cy) !important;
}
button,[class*="btn"]{
  border-radius:4px !important;box-shadow:none !important;
}

/* ── 圓角收斂 ── */

/* ── 拿掉各頁殘留的彩色光暈／濾鏡（跟指揮艙的乾淨底不搭）── */
[style*="backdrop-filter"]{backdrop-filter:none !important;}

@media (prefers-reduced-motion:reduce){
  *{transition:none !important;animation:none !important;}
}

/* ############################################################
   AUTO-START — 由 gen_overrides.py 產生，請勿手改
   （掃各頁 CSS，把殘留的淺色底／淺色框／深色字自動翻成深色）
   重新產生：python3 rebuild_theme.py
   ############################################################ */
/* ==== 自動產生：dashboard-v2 淺色殘留翻深色（gen_overrides.py）  底15 框16 字4 ==== */
html[data-los="dashboard-v2"] .section{border-color:var(--rl2) !important;}
html[data-los="dashboard-v2"] h2{border-color:var(--rl2) !important;}
html[data-los="dashboard-v2"] .card{border-color:var(--rl2) !important;}
html[data-los="dashboard-v2"] .card:hover{background:var(--hov) !important;}
html[data-los="dashboard-v2"] th{background:var(--hov) !important;border-color:var(--rl2) !important;}
html[data-los="dashboard-v2"] td{border-color:var(--rl2) !important;}
html[data-los="dashboard-v2"] tbody tr:hover td{background:var(--hov) !important;}
html[data-los="dashboard-v2"] tbody tr:nth-child(even) td{background:var(--hov) !important;}
html[data-los="dashboard-v2"] input,
html[data-los="dashboard-v2"] select,
html[data-los="dashboard-v2"] textarea{border-color:var(--rl) !important;}
html[data-los="dashboard-v2"] input:focus,
html[data-los="dashboard-v2"] select:focus{background:var(--hov) !important;}
html[data-los="dashboard-v2"] .btn{border-color:var(--rl) !important;}
html[data-los="dashboard-v2"] .btn:hover{background:var(--hov) !important;}
html[data-los="dashboard-v2"] .pnl-month-header:hover td{background:var(--raise) !important;}
html[data-los="dashboard-v2"] .btn-danger{background:var(--hov) !important;border-color:var(--rl) !important;}
html[data-los="dashboard-v2"] .btn-danger:hover{background:var(--raise) !important;}
html[data-los="dashboard-v2"] .btn-sort{border-color:var(--rl2) !important;}
html[data-los="dashboard-v2"] .task-card{background:var(--hov) !important;border-color:var(--rl2) !important;}
html[data-los="dashboard-v2"] .task-input-box{background:var(--hov) !important;border-color:var(--rl2) !important;}
html[data-los="dashboard-v2"] .memo-card{background:var(--hov) !important;border-color:var(--rl) !important;}
html[data-los="dashboard-v2"] .memo-content-display{color:var(--md) !important;}
html[data-los="dashboard-v2"] .memo-input-wrap{border-color:var(--rl2) !important;}
html[data-los="dashboard-v2"] ::-webkit-scrollbar-thumb{background:var(--raise) !important;}
html[data-los="dashboard-v2"] select option{background:var(--hov) !important;}
html[data-los="dashboard-v2"] .tab-content .tabs{border-color:var(--rl2) !important;}
html[data-los="dashboard-v2"] .tab-content .tabs .tab-btn{border-color:var(--rl2) !important;background:var(--hov) !important;}
html[data-los="dashboard-v2"] .w-modal-title{border-color:var(--rl2) !important;}
/* ==== 自動產生：diary 淺色殘留翻深色（gen_overrides.py）  底0 框0 字0 ==== */
/* ==== 自動產生：watchlist-dashboard_v2 淺色殘留翻深色（gen_overrides.py）  底0 框0 字1 ==== */
html[data-los="watchlist-dashboard_v2"] .tab-del:hover{color:var(--md) !important;}
/* ==== 自動產生：wish-and-donate 淺色殘留翻深色（gen_overrides.py）  底0 框0 字0 ==== */
/* ==== 自動產生：todo 淺色殘留翻深色（gen_overrides.py）  底0 框0 字8 ==== */
html[data-los="todo"] .q1 .q-name{color:var(--up) !important;}
html[data-los="todo"] .q1 .q-sub{color:color-mix(in srgb,var(--up) 58%,var(--ft)) !important;}
html[data-los="todo"] .q2 .q-name{color:var(--cy) !important;}
html[data-los="todo"] .q2 .q-sub{color:color-mix(in srgb,var(--cy) 58%,var(--ft)) !important;}
html[data-los="todo"] .q3 .q-name{color:var(--wn) !important;}
html[data-los="todo"] .q3 .q-sub{color:color-mix(in srgb,var(--wn) 58%,var(--ft)) !important;}
html[data-los="todo"] .q4 .q-name{color:var(--md) !important;}
html[data-los="todo"] .q4 .q-sub{color:var(--ft) !important;}
/* ==== 自動產生：diet-plan 淺色殘留翻深色（gen_overrides.py）  底2 框3 字13 ==== */
html[data-los="diet-plan"] h1{color:var(--tx) !important;}
html[data-los="diet-plan"] b{color:var(--tx) !important;}
html[data-los="diet-plan"] .tab-btn{color:var(--md) !important;}
html[data-los="diet-plan"] .card-label{color:var(--tx) !important;}
html[data-los="diet-plan"] .stat .v{color:var(--tx) !important;}
html[data-los="diet-plan"] input:focus{background:var(--hov) !important;}
html[data-los="diet-plan"] .alert.ex{border-color:var(--rl) !important;}
html[data-los="diet-plan"] .alert.sup{border-color:var(--rl) !important;}
html[data-los="diet-plan"] .alert.warnbox{border-color:var(--rl) !important;}
html[data-los="diet-plan"] .alert h4{color:var(--tx) !important;}
html[data-los="diet-plan"] .alert .body{color:var(--tx) !important;}
html[data-los="diet-plan"] .df-auto{color:var(--tx) !important;}
html[data-los="diet-plan"] .tb-v{color:var(--tx) !important;}
html[data-los="diet-plan"] .pro-text{color:var(--tx) !important;}
html[data-los="diet-plan"] table.cos tr:hover td{background:var(--hov) !important;}
html[data-los="diet-plan"] table.cos .nm{color:var(--tx) !important;}
html[data-los="diet-plan"] table.cos .tip{color:var(--tx) !important;}
html[data-los="diet-plan"] .combo .cb{color:var(--tx) !important;}
/* ==== 自動產生：stock-review-dashboard 淺色殘留翻深色（gen_overrides.py）  底22 框10 字29 ==== */
html[data-los="stock-review-dashboard"] .rating-strong{color:var(--tx) !important;}
html[data-los="stock-review-dashboard"] .rating-neutral{color:var(--tx) !important;}
html[data-los="stock-review-dashboard"] .rating-weak{color:var(--tx) !important;}
html[data-los="stock-review-dashboard"] .tag{border-color:var(--rl) !important;}
html[data-los="stock-review-dashboard"] .price-strip .ps-item.hl{border-color:var(--rl) !important;}
html[data-los="stock-review-dashboard"] .verdict{background:var(--hov) !important;color:var(--tx) !important;}
html[data-los="stock-review-dashboard"] .verdict.warn{background:var(--hov) !important;color:var(--tx) !important;}
html[data-los="stock-review-dashboard"] .verdict.danger{background:var(--hov) !important;color:var(--tx) !important;}
html[data-los="stock-review-dashboard"] ::-webkit-scrollbar-thumb{background:var(--rl) !important;}
html[data-los="stock-review-dashboard"] .vt-emerge{background:var(--hov) !important;color:var(--tx) !important;}
html[data-los="stock-review-dashboard"] .val-table tbody tr.emerge-row{background:var(--hov) !important;}
html[data-los="stock-review-dashboard"] .val-table tbody tr.emerge-row:hover{background:var(--hov) !important;}
html[data-los="stock-review-dashboard"] .val-group-title.watch{color:var(--md) !important;}
html[data-los="stock-review-dashboard"] .pick-btn.on{color:var(--md) !important;background:var(--hov) !important;}
html[data-los="stock-review-dashboard"] .crash-bar input{background:var(--hov) !important;}
html[data-los="stock-review-dashboard"] .crash-bar.on{background:var(--hov) !important;border-bottom-color:var(--rl) !important;}
html[data-los="stock-review-dashboard"] .crash-bar.on .cb-hint{color:var(--md) !important;}
html[data-los="stock-review-dashboard"] body.crash-on .vt-price,
html[data-los="stock-review-dashboard"] body.crash-on .ps-val.cur{color:var(--md) !important;}
html[data-los="stock-review-dashboard"] ',
html[data-los="stock-review-dashboard"] 'body{background:var(--raise) !important;color:var(--tx) !important;}
html[data-los="stock-review-dashboard"] ',
html[data-los="stock-review-dashboard"] '.page{background:var(--hov) !important;}
html[data-los="stock-review-dashboard"] ',
html[data-los="stock-review-dashboard"] '.rh-ticker{color:var(--md) !important;}
html[data-los="stock-review-dashboard"] ',
html[data-los="stock-review-dashboard"] '.rh-name{color:var(--tx) !important;}
html[data-los="stock-review-dashboard"] ',
html[data-los="stock-review-dashboard"] '.rh-sector{color:var(--md) !important;}
html[data-los="stock-review-dashboard"] ',
html[data-los="stock-review-dashboard"] '.rh-box{border-color:var(--rl) !important;}
html[data-los="stock-review-dashboard"] ',
html[data-los="stock-review-dashboard"] '.rhb-row{border-color:var(--rl2) !important;}
html[data-los="stock-review-dashboard"] ',
html[data-los="stock-review-dashboard"] '.rhb-row span{color:var(--md) !important;}
html[data-los="stock-review-dashboard"] .rhb-row b{color:var(--tx) !important;}
html[data-los="stock-review-dashboard"] ',
html[data-los="stock-review-dashboard"] '.rhb-row.cur{background:var(--hov) !important;}
html[data-los="stock-review-dashboard"] .rhb-row.cur b{color:var(--tx) !important;}
html[data-los="stock-review-dashboard"] ',
html[data-los="stock-review-dashboard"] '.rhb-row.hl{background:var(--hov) !important;}
html[data-los="stock-review-dashboard"] .rhb-row.hl span{color:var(--tx) !important;}
html[data-los="stock-review-dashboard"] .rhb-row.hl b{color:var(--tx) !important;}
html[data-los="stock-review-dashboard"] ',
html[data-los="stock-review-dashboard"] '.rhb-row .up{color:var(--md) !important;}
html[data-los="stock-review-dashboard"] .rhb-row .down{color:var(--md) !important;}
html[data-los="stock-review-dashboard"] ',
html[data-los="stock-review-dashboard"] '.rhb-range{background:var(--hov) !important;}
html[data-los="stock-review-dashboard"] .rhb-range .up{color:var(--md) !important;}
html[data-los="stock-review-dashboard"] .rhb-range .down{color:var(--md) !important;}
html[data-los="stock-review-dashboard"] ',
html[data-los="stock-review-dashboard"] '.summary{background:var(--hov) !important;border-color:var(--rl2) !important;}
html[data-los="stock-review-dashboard"] ',
html[data-los="stock-review-dashboard"] '.summary h2,
html[data-los="stock-review-dashboard"] .sec h2,
html[data-los="stock-review-dashboard"] .verdict-box h2{color:var(--tx) !important;}
html[data-los="stock-review-dashboard"] ',
html[data-los="stock-review-dashboard"] '.summary-list li{color:var(--tx) !important;}
html[data-los="stock-review-dashboard"] ',
html[data-los="stock-review-dashboard"] '.summary-list li:before{color:var(--md) !important;}
html[data-los="stock-review-dashboard"] ',
html[data-los="stock-review-dashboard"] '.sec h2{border-color:var(--rl) !important;}
html[data-los="stock-review-dashboard"] ',
html[data-los="stock-review-dashboard"] '.sec-body p.subhead{color:var(--tx) !important;}
html[data-los="stock-review-dashboard"] ',
html[data-los="stock-review-dashboard"] 'pre.mono{background:var(--hov) !important;border-color:var(--rl2) !important;}
html[data-los="stock-review-dashboard"] ',
html[data-los="stock-review-dashboard"] 'table.wl td{border-color:var(--rl) !important;color:var(--tx) !important;}
html[data-los="stock-review-dashboard"] ',
html[data-los="stock-review-dashboard"] 'table.wl tr:nth-child(even) td{background:var(--hov) !important;}
html[data-los="stock-review-dashboard"] ',
html[data-los="stock-review-dashboard"] '.verdict-box.good{background:var(--hov) !important;}
html[data-los="stock-review-dashboard"] ',
html[data-los="stock-review-dashboard"] '.verdict-box.warn{background:var(--hov) !important;}
html[data-los="stock-review-dashboard"] ',
html[data-los="stock-review-dashboard"] '.verdict-box.danger{background:var(--hov) !important;}
html[data-los="stock-review-dashboard"] ',
html[data-los="stock-review-dashboard"] '.disclaimer{border-color:var(--rl) !important;}
html[data-los="stock-review-dashboard"] body{background:var(--hov) !important;}

/* ############################################################
   AUTO-END
   ############################################################ */

/* ============================================================
   逐頁微調（依 <html data-los="…"> 命中）
   ============================================================ */

/* 市場戰況 */
html[data-los="key-metrics"] body{padding:14px !important;}
html[data-los="key-metrics"] body::before{display:none !important;}
html[data-los="key-metrics"] .section{background:var(--panel) !important;border:1px solid var(--rl) !important;}
html[data-los="key-metrics"] .section.us{border-top:2px solid var(--cy) !important;}
html[data-los="key-metrics"] .section.tw{border-top:2px solid var(--up) !important;}
html[data-los="key-metrics"] .section.tw .bar{background:var(--up) !important;}
html[data-los="key-metrics"] .section.us .bar{background:var(--cy) !important;}
html[data-los="key-metrics"] .card{background:var(--raise) !important;border:1px solid var(--rl) !important;}
html[data-los="key-metrics"] .card.sig-red{border-color:color-mix(in srgb,var(--up) 45%,transparent) !important;}
html[data-los="key-metrics"] .card.sig-orange,
html[data-los="key-metrics"] .card.sig-yellow{border-color:color-mix(in srgb,var(--wn) 40%,transparent) !important;}
html[data-los="key-metrics"] .btn-live{background:var(--raise) !important;border-color:var(--cy-d) !important;color:var(--cy) !important;}

/* 個股狀態 */
html[data-los="stock-status"] body{padding:14px !important;}

/* 小助理當日日報（原本是淺色底）*/
html[data-los="watchlist-dashboard_v2"] body{background:var(--bg) !important;}

/* 策略研究（原本有網格背景，保留但壓暗）*/
html[data-los="strategy-research"] body{
  background-image:
    linear-gradient(color-mix(in srgb,var(--tx) 2.2%,transparent) 1px,transparent 1px),
    linear-gradient(90deg,color-mix(in srgb,var(--tx) 2.2%,transparent) 1px,transparent 1px) !important;
  background-size:40px 40px !important;
  font-family:'Archivo','Noto Sans TC',sans-serif !important;
}

/* 明日操盤筆記 ＋ 換股計算器（老 slate 配色，沒用 CSS 變數）*/
html[data-los="trade-notes"] .row,
html[data-los="trade-notes"] .grp .cnt,
html[data-los="swap-calculator"] .row,
html[data-los="swap-calculator"] .hist-item{background:var(--raise) !important;border-color:var(--rl) !important;}
html[data-los="trade-notes"] .marquee{background:var(--sunk) !important;border-color:var(--rl2) !important;}
html[data-los="trade-notes"] .marquee-tag{background:var(--wn) !important;color:var(--on-cy) !important;}
html[data-los="trade-notes"] .save-btn,
html[data-los="trade-notes"] .tab-btn.active,
html[data-los="trade-notes"] .fchip.on,
html[data-los="trade-notes"] .stg-item.on,
html[data-los="trade-notes"] .cal-cell.selected,
html[data-los="swap-calculator"] button.calc-btn,
html[data-los="swap-calculator"] .swap-btn.done{
  background:var(--cy) !important;border-color:var(--cy) !important;color:var(--on-cy) !important;}
html[data-los="trade-notes"] .save-btn:hover,
html[data-los="swap-calculator"] button.calc-btn:hover{background:var(--cy-h) !important;}
html[data-los="trade-notes"] .tab-btn,
html[data-los="trade-notes"] .mini-btn,
html[data-los="trade-notes"] .add-row-btn,
html[data-los="trade-notes"] .cal-nav button,
html[data-los="trade-notes"] .today-btn,
html[data-los="trade-notes"] .fchip,
html[data-los="swap-calculator"] .clear-all{background:var(--sunk) !important;border-color:var(--rl2) !important;color:var(--md) !important;}
html[data-los="trade-notes"] .tab-btn:hover,
html[data-los="trade-notes"] .mini-btn:hover,
html[data-los="trade-notes"] .add-row-btn:hover,
html[data-los="trade-notes"] .fchip:hover{border-color:var(--cy-d) !important;color:var(--cy) !important;}
html[data-los="trade-notes"] .cal-cell.has-note::after{background:var(--wn) !important;}
html[data-los="trade-notes"] .sbadge.l,html[data-los="trade-notes"] .side-tag.l{background:color-mix(in srgb,var(--cy) 14%,transparent) !important;color:var(--cy-t) !important;border-color:var(--cy-d) !important;}
html[data-los="trade-notes"] .sbadge.r,html[data-los="trade-notes"] .side-tag.r{background:color-mix(in srgb,var(--vi) 16%,transparent) !important;color:var(--vi-t) !important;border-color:var(--vi-ln) !important;}
html[data-los="trade-notes"] .sbadge.b{background:color-mix(in srgb,var(--dn) 16%,transparent) !important;color:var(--dn-t) !important;border-color:var(--dn-ln) !important;}
html[data-los="trade-notes"] .ruler .fill{background:var(--dn) !important;}
html[data-los="trade-notes"] .stg-item .dot.buy{background:var(--dn) !important;box-shadow:none !important;}
html[data-los="trade-notes"] .stg-item .dot.stop{background:var(--up) !important;box-shadow:none !important;}
html[data-los="swap-calculator"] .v-no{background:color-mix(in srgb,var(--wn) 14%,transparent) !important;color:var(--wn) !important;border-color:color-mix(in srgb,var(--wn) 40%,transparent) !important;}
html[data-los="swap-calculator"] .v-yes{background:color-mix(in srgb,var(--dn) 14%,transparent) !important;color:var(--dn) !important;border-color:color-mix(in srgb,var(--dn) 40%,transparent) !important;}
html[data-los="swap-calculator"] .v-now{background:color-mix(in srgb,var(--up) 16%,transparent) !important;color:var(--up) !important;border-color:color-mix(in srgb,var(--up) 45%,transparent) !important;}
html[data-los="swap-calculator"] .swap-btn{background:color-mix(in srgb,var(--cy) 12%,transparent) !important;border-color:var(--cy-d) !important;color:var(--cy) !important;}
html[data-los="swap-calculator"] .hist-item.done{border-left-color:var(--dn) !important;}

/* 投資操盤日誌：--navy 同時當文字色又當底色，底色的地方單獨壓回深色 */
html[data-los="diary"] .cal-weekdays{background:var(--sunk) !important;color:var(--md) !important;border-bottom:1px solid var(--rl) !important;}
html[data-los="diary"] .cal-weekdays span:last-child,
html[data-los="diary"] .cal-weekdays span:nth-child(7){color:var(--up-t) !important;}
html[data-los="diary"] .h-btn-report{background:color-mix(in srgb,var(--wn) 16%,transparent) !important;border:1px solid color-mix(in srgb,var(--wn) 40%,transparent) !important;color:var(--wn) !important;}
html[data-los="diary"] .btn-save,
html[data-los="diary"] .btn-copy,
html[data-los="diary"] .plan-add-btn,
html[data-los="diary"] .nav-today{background:var(--cy) !important;border-color:var(--cy) !important;color:var(--on-cy) !important;}

/* 小助理當日日報：toast 同樣的問題 */
html[data-los="watchlist-dashboard_v2"] .toast{background:var(--sunk) !important;border:1px solid var(--cy-d) !important;color:var(--tx) !important;}

/* 減肥計劃：原本是米白淺色頁，內文寫死了 #2b1a0f 深咖啡字，翻深色後看不見 */
html[data-los="diet-plan"] h1,
html[data-los="diet-plan"] b,
html[data-los="diet-plan"] .stat .v,
html[data-los="diet-plan"] .tb-v,
html[data-los="diet-plan"] table.cos .nm{color:var(--tx) !important;}
html[data-los="diet-plan"] .prog-fill,
html[data-los="diet-plan"] .pro-fill{background:var(--cy) !important;}
html[data-los="diet-plan"] .cal-head button,
html[data-los="diet-plan"] .addbtn{background:color-mix(in srgb,var(--cy) 12%,transparent) !important;border-color:var(--cy-d) !important;}

/* 個股覆盤儀表板：原本是米白頁，幾處淺底深字要翻過來 */
html[data-los="stock-review-dashboard"] .verdict{background:color-mix(in srgb,var(--dn) 12%,transparent) !important;border-left-color:var(--dn) !important;color:var(--dn-t) !important;}
html[data-los="stock-review-dashboard"] .verdict.warn{background:color-mix(in srgb,var(--wn) 12%,transparent) !important;border-color:var(--wn) !important;color:var(--wn-t) !important;}
html[data-los="stock-review-dashboard"] .verdict.danger{background:color-mix(in srgb,var(--up) 12%,transparent) !important;border-color:var(--up) !important;color:var(--up-t) !important;}
html[data-los="stock-review-dashboard"] .verdict-box.good{background:color-mix(in srgb,var(--dn) 10%,transparent) !important;border-color:var(--dn-ln) !important;}
html[data-los="stock-review-dashboard"] .verdict-box.danger{background:color-mix(in srgb,var(--up) 10%,transparent) !important;border-color:var(--up-ln) !important;}
html[data-los="stock-review-dashboard"] .vt-emerge{background:color-mix(in srgb,var(--dn) 16%,transparent) !important;color:var(--dn-t) !important;border-color:var(--dn-ln) !important;}
html[data-los="stock-review-dashboard"] .val-table tbody tr.emerge-row{background:color-mix(in srgb,var(--dn) 7%,transparent) !important;}
html[data-los="stock-review-dashboard"] .val-table tbody tr.emerge-row:hover{background:color-mix(in srgb,var(--dn) 13%,transparent) !important;}
html[data-los="stock-review-dashboard"] .crash-bar.on{background:color-mix(in srgb,var(--wn) 10%,transparent) !important;border-bottom-color:var(--wn-ln) !important;}
html[data-los="stock-review-dashboard"] .crash-bar.on .cb-hint,
html[data-los="stock-review-dashboard"] body.crash-on .vt-price,
html[data-los="stock-review-dashboard"] body.crash-on .ps-val.cur{color:var(--wn) !important;}
html[data-los="stock-review-dashboard"] .rating-strong{background:color-mix(in srgb,var(--dn) 18%,transparent) !important;color:var(--dn-t) !important;}
html[data-los="stock-review-dashboard"] .rating-neutral{background:color-mix(in srgb,var(--wn) 18%,transparent) !important;color:var(--wn-t) !important;}
html[data-los="stock-review-dashboard"] .rating-weak{background:color-mix(in srgb,var(--up) 18%,transparent) !important;color:var(--up-t) !important;}
html[data-los="stock-review-dashboard"] .nav-btn.active{background:var(--raise) !important;box-shadow:inset 2px 0 0 var(--cy) !important;color:var(--tx) !important;}

/* ============================================================
   投資戰略操盤中心（dashboard-v2）
   原本是淺藍白底，硬寫了 #ffffff / #dbeafe 這些淺色，逐條翻成深色
   ============================================================ */
html[data-los="dashboard-v2"] .tabs{background:var(--sunk) !important;border-bottom:1px solid var(--rl2) !important;}
html[data-los="dashboard-v2"] .tab-content .tabs{background:var(--panel) !important;border-bottom:1px solid var(--rl) !important;}
html[data-los="dashboard-v2"] .tab-content .tabs .tab-btn{background:var(--sunk) !important;border-color:var(--rl2) !important;color:var(--md) !important;}
html[data-los="dashboard-v2"] .tab-content .tabs .tab-btn:hover{border-color:var(--cy-d) !important;color:var(--cy) !important;}
html[data-los="dashboard-v2"] .tab-content .tabs .tab-btn.active{background:var(--raise) !important;border-color:var(--cy-d) !important;color:var(--cy) !important;}
html[data-los="dashboard-v2"] .tab-btn.active{background:color-mix(in srgb,var(--cy) 16%,transparent) !important;color:var(--tx) !important;}
html[data-los="dashboard-v2"] .tab-group-btn.has-active{background:color-mix(in srgb,var(--cy) 10%,transparent) !important;color:var(--tx) !important;}

html[data-los="dashboard-v2"] .card,
html[data-los="dashboard-v2"] .btn-sort,
html[data-los="dashboard-v2"] .task-input-box,
html[data-los="dashboard-v2"] .memo-input-wrap,
html[data-los="dashboard-v2"] .w-modal-title,
html[data-los="dashboard-v2"] h2,
html[data-los="dashboard-v2"] th,
html[data-los="dashboard-v2"] td{border-color:var(--rl) !important;}
html[data-los="dashboard-v2"] .card:hover,
html[data-los="dashboard-v2"] tbody tr:hover td,
html[data-los="dashboard-v2"] .btn:hover{background:var(--raise) !important;}
html[data-los="dashboard-v2"] .task-input-box,
html[data-los="dashboard-v2"] .memo-card,
html[data-los="dashboard-v2"] select option{background:var(--sunk) !important;}
html[data-los="dashboard-v2"] input:focus,
html[data-los="dashboard-v2"] select:focus{background:var(--sunk) !important;}
html[data-los="dashboard-v2"] .card-val,
html[data-los="dashboard-v2"] .card-input,
html[data-los="dashboard-v2"] .task-text,
html[data-los="dashboard-v2"] .pnl-month-header td{color:var(--tx) !important;}
html[data-los="dashboard-v2"] .section td{color:var(--md) !important;}
/* 操盤中心：按鈕改成指揮艙的線框風（原本是實心亮藍＋近白底紅字）*/
html[data-los="dashboard-v2"] .btn{background:var(--sunk) !important;border:1px solid var(--rl2) !important;color:var(--md) !important;}
html[data-los="dashboard-v2"] .btn:hover{background:var(--raise) !important;border-color:var(--cy-d) !important;color:var(--cy) !important;box-shadow:none !important;transform:none !important;}
html[data-los="dashboard-v2"] .btn-primary{background:color-mix(in srgb,var(--cy) 14%,transparent) !important;border-color:var(--cy-d) !important;color:var(--cy) !important;}
html[data-los="dashboard-v2"] .btn-primary:hover{background:color-mix(in srgb,var(--cy) 24%,transparent) !important;border-color:var(--cy) !important;color:var(--cy-t) !important;box-shadow:none !important;transform:none !important;}
html[data-los="dashboard-v2"] .btn-danger{background:color-mix(in srgb,var(--up) 12%,transparent) !important;border-color:color-mix(in srgb,var(--up) 40%,transparent) !important;color:var(--up) !important;}
html[data-los="dashboard-v2"] .btn-danger:hover{background:color-mix(in srgb,var(--up) 22%,transparent) !important;border-color:var(--up) !important;box-shadow:none !important;transform:none !important;}
html[data-los="dashboard-v2"] .btn-sort.active{background:var(--raise) !important;border-color:var(--cy-d) !important;color:var(--cy) !important;box-shadow:none !important;}
html[data-los="dashboard-v2"] .pnl-year-btn.active{background:color-mix(in srgb,var(--vi) 18%,transparent) !important;border-color:var(--vi-ln) !important;color:var(--vi-t) !important;box-shadow:none !important;}
html[data-los="dashboard-v2"] .tab-group-dropdown{background:var(--sunk) !important;border-color:var(--rl2) !important;}
html[data-los="dashboard-v2"] .tab-group-dropdown .tab-btn:hover{background:var(--raise) !important;color:var(--cy) !important;}
html[data-los="dashboard-v2"] .tab-group-dropdown .tab-btn.active{background:var(--raise) !important;color:var(--cy) !important;}

/* ------------------------------------------------------------
   ⚠ 操盤中心的 PDF 產生區（#report-stage）
   那塊是 html2canvas 直接截圖成 PDF 的「白紙」，
   外皮的深色表頭／深色框線會被一起拍進 PDF，所以這裡要豁免。
   用 #id 提高權重蓋回淺色；color 一律不強制，
   讓報表自己 inline 的紅綠數字保留。
   ------------------------------------------------------------ */
html[data-los="dashboard-v2"] #report-stage th{
  background:transparent !important;color:inherit !important;
  border-color:#e8edf3 !important;border-bottom-color:#e8edf3 !important;
  font-family:'Inter','Noto Sans TC','PingFang TC',sans-serif !important;
  font-size:11.5px !important;font-weight:700 !important;
  letter-spacing:normal !important;text-transform:none !important;}
html[data-los="dashboard-v2"] #report-stage td,
html[data-los="dashboard-v2"] #report-stage tbody tr:nth-child(even) td,
html[data-los="dashboard-v2"] #report-stage tbody tr:hover td{
  background:transparent !important;
  border-color:#e8edf3 !important;border-bottom-color:#e8edf3 !important;}
html[data-los="dashboard-v2"] #report-stage table{background:transparent !important;}

/* 權證年度鈕：實心青底配白字看不清，改深字 */
html[data-los="dashboard-v2"] .w-year-btn.active,
html[data-los="dashboard-v2"] .btn-sort.active{color:var(--on-cy) !important;}
html[data-los="dashboard-v2"] .pnl-year-btn.active{color:var(--vi-t) !important;}
html[data-los="dashboard-v2"] .btn-sort.active{background:var(--cy) !important;border-color:var(--cy) !important;}
html[data-los="dashboard-v2"] .w-year-btn.active{background:var(--cy) !important;border-color:var(--cy) !important;}

/* 作戰memo 的獲利長條：字是 inline 寫死 #0f172a + luminosity 混色，
   在深底上等於消失。沒有 class，用 style 內容選中它。 */
html[data-los="dashboard-v2"] [style*="mix-blend-mode:luminosity"]{
  color:#e6ebed !important;mix-blend-mode:normal !important;
  text-shadow:0 1px 2px rgba(0,0,0,.55) !important;}

/* ------------------------------------------------------------
   稽核掃出來的零星「字被吃掉」— 兩種型態
   A. 白字壓在中彩度底（青／紫）→ 改深字
   B. 深彩色字壓在深底（原本是給白底用的）→ 換同色系亮版
   ------------------------------------------------------------ */

/* A：白字 → 深字 */
html[data-los="watchlist-dashboard_v2"] .eps-badge{color:var(--on-cy) !important;}
html[data-los="stock-review-dashboard"] .sync-btn{color:var(--on-cy) !important;}
/* 標籤上的 × ：標籤顏色是你自己在 App 裡挑的（含很淺的灰），
   白字在淺標籤上一定不夠，加一層暗描邊讓它在任何顏色上都看得見 */
html[data-los="todo"] .tag-pill-del{
  color:#fff !important;opacity:1 !important;
  text-shadow:0 0 3px rgba(0,0,0,.85),0 0 1px rgba(0,0,0,.9) !important;}

/* B：太暗／太淡的字 → 提亮 */
html[data-los="swap-calculator"] .hist-empty{color:var(--ft) !important;}
html[data-los="ai-etf"] .auto-tag{color:color-mix(in srgb,var(--cy) 80%,transparent) !important;}

/* 加密作戰地圖的版本徽章：底是漸層，被全域拿掉後只剩深字配深底 → 給實色底 */
html[data-los="crypto-strategy"] .version-badge{
  background:var(--cy) !important;color:var(--on-cy) !important;}

/* ============================================================
   內容字一律白色（2026-08-26 依鄭榮佑回饋）
   原則：表格數字／股名／備註＝內容，用主色；
        灰色只留給欄位標題、單位、註解。
   深底 + 白字才拉得開對比；把網底調亮反而會讓白字更糊。
   ============================================================ */
table td:not(#report-stage td){color:var(--tx) !important;}
table td[class*="sub"],table td[class*="muted"],table td[class*="dim"],
table td[class*="note"],table td[class*="label"]{color:var(--md) !important;}
table th{color:var(--ft) !important;}

/* ------------------------------------------------------------
   操盤中心：依回饋調整（2026-08-26）
   ------------------------------------------------------------ */

/* 1. 報酬率即時表的「質押金額／現金」原本是乾淨的底線輸入框，
      被全域的表單樣式改成黑框，跟旁邊的純數字不同調 → 還原成底線 */
html[data-los="dashboard-v2"] .card-input{
  background:transparent !important;border:none !important;border-radius:0 !important;
  border-bottom:2px solid var(--cy-d) !important;
  color:var(--tx) !important;text-align:center !important;
  box-shadow:none !important;padding:0 0 2px !important;}
html[data-los="dashboard-v2"] .card-input:focus{
  border-bottom-color:var(--cy) !important;box-shadow:none !important;}

/* 2. 卡片：標題灰、數字白，並拿掉頂端那條裝飾線的突兀感 */
html[data-los="dashboard-v2"] .card{background:var(--hov) !important;}
html[data-los="dashboard-v2"] .card > div:first-child{color:var(--ft) !important;}
html[data-los="dashboard-v2"] .card-val{color:var(--tx) !important;}
html[data-los="dashboard-v2"] .card::before{background:var(--cy-d) !important;opacity:.55 !important;}
html[data-los="dashboard-v2"] .card:hover::before{opacity:1 !important;}

/* 3. 持倉／質押管控／前十大重倉：列表文字一律白 */
html[data-los="dashboard-v2"] td:not(#report-stage td){color:var(--tx) !important;}
html[data-los="dashboard-v2"] th{color:var(--ft) !important;}

/* 4. 作戰memo：備註內文改白 */
html[data-los="dashboard-v2"] .memo-content-display{color:var(--tx) !important;}
html[data-los="dashboard-v2"] .memo-card{background:var(--hov) !important;}

/* PDF 產生區仍然豁免（放在最後才蓋得回去）*/
html[data-los="dashboard-v2"] #report-stage th{color:inherit !important;}
/* 報表的一般儲存格要回到深字（白紙上）；有 inline color 的（紅綠損益）不能碰，
   所以用 :not([style*="color"]) 把它們排除掉 */
html[data-los="dashboard-v2"] #report-stage td:not([style*="color"]){color:#0f172a !important;}


/* ============================================================
   設計規範 v2（2026-09-12）：共用元件 los-* 不被上面的通用規則吃掉
   元件本體寫在 /webhook/lifeos-tokens.css；這裡只補 !important 保護
   選擇器都加 html body，才蓋得過各頁的 html[data-los=x] .tab-btn.active 舊規則
   ============================================================ */
html body .los-top{background:transparent !important;border:0 !important;border-bottom:1px solid var(--rl) !important;
  border-radius:0 !important;box-shadow:none !important;background-image:none !important;}
html body>.los-top{background:var(--sunk) !important;}
html body .los-brand,html body .los-brand *{letter-spacing:.02em !important;}
html body .los-brand{color:var(--tx) !important;font-weight:400 !important;font-size:14px !important;}
html body .los-brand .los-pg{color:var(--md) !important;font-weight:500 !important;}
html body .los-tabs{border:0 !important;background:transparent !important;border-radius:0 !important;}
html body .los-tabs .los-tab{border-radius:0 !important;box-shadow:none !important;background:transparent !important;
  border:0 !important;border-bottom:2px solid transparent !important;color:var(--ft) !important;}
html body .los-tabs .los-tab:hover{color:var(--tx) !important;}
html body .los-tabs .los-tab.on,html body .los-tabs .los-tab.active{color:var(--tx) !important;border-bottom-color:var(--cy) !important;background:transparent !important;}
html body .los-btn{background:transparent !important;border:1px solid var(--rl2) !important;color:var(--md) !important;box-shadow:none !important;transform:none !important;}
html body .los-btn:hover{border-color:var(--cy) !important;color:var(--cy) !important;background:transparent !important;}
html body .los-btn.pri{background:var(--cy) !important;border-color:var(--cy) !important;color:var(--on-cy) !important;}
html body .los-btn.pri:hover{background:var(--cy-h) !important;border-color:var(--cy-h) !important;color:var(--on-cy) !important;}
html body .los-btn:disabled{opacity:.45 !important;}
html body .los-note{color:var(--ft) !important;}
html body .los-asof{color:var(--ft) !important;font-family:'JetBrains Mono',ui-monospace,monospace !important;}
html body .los-btn .los-dot{display:inline-block !important;width:6px !important;height:6px !important;border-radius:50% !important;}
/* 加密資產簡介：BTC 頭像是橘底，白字只有 1.9 對比 → 深字（2026-09-12 稽核）*/
html[data-los="crypto-intro"] .avatar-btc{color:#1a1206 !important;}

/* 深淺切換鈕：不要被各頁的 button / [class*="btn"] 規則吃掉 */
html body .los-theme{width:30px !important;padding:0 !important;flex:none !important;color:var(--ft) !important;background:transparent !important;}
html body .los-theme:hover{color:var(--cy) !important;border-color:var(--cy) !important;}
html body .los-theme svg{display:block !important;}
html body .los-theme-float{background:var(--panel) !important;box-shadow:var(--ov) !important;}

/* ============================================================
   全站深淺可切換（2026-09-12）— 淺色稽核掃出來的殘留
   共通毛病：外皮把漸層／底色統一掉之後，字還留著「為深底挑的白色」，
   深色時剛好看得見，淺色一翻就消失。
   ============================================================ */

/* 漸層實心按鈕：外皮的「容器一律去漸層」把底拿掉，只剩透明底配白字 → 補回實色底 */
html body .btn-sky,
html body .btn-primary,
html body .btn.pri{background-color:var(--cy) !important;border-color:var(--cy) !important;color:var(--on-cy) !important;}
html body .btn-sky:hover,
html body .btn-primary:hover,
html body .btn.pri:hover{background-color:var(--cy-h) !important;border-color:var(--cy-h) !important;color:var(--on-cy) !important;}
html body .btn-pink{background-color:var(--vi) !important;border-color:var(--vi) !important;color:var(--on-cy) !important;}

/* 待辦：節日卡的底被外皮統一成面板色，字卻還是白的 */
html[data-los="todo"] .hol-name,
html[data-los="todo"] .hol-days{color:var(--tx) !important;}
html[data-los="todo"] .hol-unit,
html[data-los="todo"] .hol-date{color:var(--md) !important;}

/* 籌碼分析：熱區格的底是半透明疊在面板上，淺色時整片變淡，白字就沒了 */
html[data-los="chip-analysis"] .k-ev.u.s2,
html[data-los="chip-analysis"] .k-ev.d.s2{color:var(--on-fill) !important;}

/* 籌碼分析：紅綠是寫成 RGB 三元組（給 rgb(var(--kR)) 用），淺色要換成色票的深版 */
html[data-theme="light"][data-los="chip-analysis"],
html[data-los="chip-analysis"] .force-light{--kR:200,55,45 !important;--kG:24,122,75 !important;}

/* 操盤中心：分頁群組鈕的字是半透明白（為深底挑的），淺色下等於消失 */
html[data-los="dashboard-v2"] .tab-group-btn{color:var(--ft) !important;}
html[data-los="dashboard-v2"] .tab-group-btn:hover{color:var(--tx) !important;}
html[data-los="dashboard-v2"] .tab-group-btn.has-active{color:var(--tx) !important;}
html[data-los="dashboard-v2"] .group-arrow{color:inherit !important;}

/* 個股覆盤：側欄的字是白色系（為深底挑的），淺色下整排消失 */
html[data-los="stock-review-dashboard"] .sidebar-section{color:var(--ft) !important;}
html[data-los="stock-review-dashboard"] .sname{color:var(--md) !important;}
html[data-los="stock-review-dashboard"] .ticker{color:var(--tx) !important;}

/* 小助理日報：EPS 區塊抬頭原本是深藍漸層配白字，外皮把漸層拿掉後白字沒了底 */
html[data-los="watchlist-dashboard_v2"] .eps-header{background-color:var(--sunk) !important;}
html[data-los="watchlist-dashboard_v2"] .eps-header-left{color:var(--tx) !important;}
html[data-los="watchlist-dashboard_v2"] .eps-refresh{background:transparent !important;border:1px solid var(--rl2) !important;color:var(--md) !important;}
html[data-los="watchlist-dashboard_v2"] .eps-refresh:hover{background:transparent !important;border-color:var(--cy) !important;color:var(--cy) !important;}
