html{background:var(--bg)}body{margin:0}[hidden]{display:none!important}img{max-width:100%}
:root{padding-top:env(safe-area-inset-top,0px);padding-bottom:env(safe-area-inset-bottom,0px)}
/* Layout: 券商 App 盤面。手機＝上方行情列＋單一分頁＋下方五鍵導覽；電腦（≥1024）＝觀察清單｜K 線＋持倉｜五檔下單＋帳戶，新聞在左下。單一深色看盤主題；台股慣例紅漲綠跌。 */
:root{
  color-scheme: dark;
  --bg:#0E1218; --panel:#151A22; --raise:#1C222C; --line:#29313E; --fg:#E7EBF1; --muted:#8C96A8; --dim:#5F697B;
  --up:#F4485C; --up-bg:rgba(244,72,92,.16); --down:#22C08A; --down-bg:rgba(34,192,138,.16);
  --accent:#F2AA3C; --on-accent:#1C1306; --warn:#FF8A3D; --danger:#FF3B4E; --scrim:rgba(6,8,12,.76); --info:#6FA8FF;
  --f-ui:"Noto Sans TC","PingFang TC","Microsoft JhengHei",system-ui,sans-serif;
  --f-num:"IBM Plex Mono",ui-monospace,SFMono-Regular,Menlo,monospace;
  --f-disp:"Barlow Condensed","Noto Sans TC",system-ui,sans-serif;
  --r:12px; --tabh:62px;
}
*{box-sizing:border-box}
html,body{background:var(--bg);color:var(--fg)}
body{font-family:var(--f-ui);font-size:14px;line-height:1.45;-webkit-font-smoothing:antialiased}
button,input,select{font:inherit;color:inherit}
button{cursor:pointer}
button:disabled{cursor:not-allowed;opacity:.45}
:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.num{font-family:var(--f-num);font-variant-numeric:tabular-nums}
.up{color:var(--up)} .down{color:var(--down)} .flat{color:var(--fg)} .muted{color:var(--muted)}
.app{max-width:1760px;margin:0 auto;padding-left:max(16px,env(safe-area-inset-left,0px));padding-right:max(16px,env(safe-area-inset-right,0px));padding-block:12px 32px}
.card{background:var(--panel);border:1px solid var(--line);border-radius:var(--r)}
.card-h{display:flex;justify-content:space-between;align-items:center;gap:8px;padding:10px 12px 0;font-size:12px;color:var(--muted);letter-spacing:.04em}
.card-h b{color:var(--fg);font-weight:700;letter-spacing:.04em;font-size:13px}
.pill{font-size:11px;padding:2px 8px;border-radius:999px;border:1px solid var(--line);color:var(--muted);white-space:nowrap}
.pill.hot{border-color:var(--warn);color:var(--warn)}
.pill.up{border-color:var(--up);color:var(--up)} .pill.down{border-color:var(--down);color:var(--down)}
.btn-main{background:var(--accent);color:var(--on-accent);font-weight:700;border:0;border-radius:8px;padding:8px 14px}
.ghost{border:1px solid var(--line);background:transparent;border-radius:8px;padding:7px 10px;font-size:12.5px;color:var(--fg)}
.ghost:hover:not(:disabled){background:var(--raise)}
.chips{display:flex;gap:2px;background:var(--raise);border-radius:8px;padding:2px}
.chip{border:0;background:transparent;color:var(--muted);font-family:var(--f-num);font-size:12px;padding:6px 8px;border-radius:6px}
.chip[aria-pressed="true"]{background:var(--line);color:var(--fg)}

/* ---------- setup ---------- */
.setup{display:flex;flex-direction:column;gap:18px;padding-block:8px 12px}
.home-link{display:inline-block;margin-bottom:10px;font-size:13px;color:var(--muted);text-decoration:none}
.home-link:hover{color:var(--fg)}
.su-head h1{margin:0;font-family:var(--f-disp);font-size:40px;font-weight:600;letter-spacing:.04em;line-height:1.05}
.su-head p{margin:6px 0 0;color:var(--muted);max-width:62ch;text-wrap:pretty}
.su-grid{display:grid;gap:16px}
@media(min-width:960px){.su-grid{grid-template-columns:minmax(0,1fr) 380px;align-items:start}.su-sum{position:sticky;top:calc(env(safe-area-inset-top,0px) + 16px)}}
.su-steps{display:flex;flex-direction:column;gap:18px;min-width:0}
.su-step{display:flex;flex-direction:column;gap:10px}
.su-lbl{display:flex;align-items:center;gap:10px;font-weight:700;letter-spacing:.06em}
.su-n{width:24px;height:24px;border-radius:50%;background:var(--raise);border:1px solid var(--line);display:grid;place-items:center;font-family:var(--f-num);font-size:12px;color:var(--accent)}
.su-mkts{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}
@media(max-width:600px){.su-mkts{grid-template-columns:1fr}}
.opt{border:1px solid var(--line);background:var(--panel);border-radius:var(--r);padding:12px 14px;text-align:left;display:flex;flex-direction:column;gap:3px;color:var(--fg);min-width:0}
.opt:hover{border-color:var(--dim)}
.opt[aria-pressed="true"]{border-color:var(--accent);background:var(--raise);box-shadow:inset 0 0 0 1px var(--accent)}
.opt b{font-size:16px;letter-spacing:.04em}
.opt small{color:var(--muted);font-size:12px}
.opt .lev{font-family:var(--f-num);font-size:12px;color:var(--warn);margin-top:4px}
.pick{display:flex;flex-wrap:wrap;gap:6px}
.pick button{border:1px solid var(--line);background:transparent;border-radius:999px;padding:7px 14px;color:var(--muted);font-family:var(--f-num);font-size:13px}
.pick button:hover{color:var(--fg);border-color:var(--dim)}
.pick button[aria-pressed="true"]{border-color:var(--accent);color:var(--fg);background:var(--raise)}
.pick.text button{font-family:var(--f-ui)}
.su-field{display:flex;flex-direction:column;gap:4px;font-size:12px;color:var(--muted);min-width:0}
.su-field input,.su-field select{background:var(--raise);border:1px solid var(--line);border-radius:8px;padding:9px 10px;font-family:var(--f-num);color:var(--fg);width:100%}
.su-cond{display:flex;flex-direction:column;gap:12px}
.su-cond .row{display:flex;flex-wrap:wrap;gap:12px}
.su-cond .row>*{flex:1 1 180px;max-width:320px}
.su-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:8px}
.su-sub{font-size:12px;color:var(--muted)}
.su-sum{padding:16px;display:flex;flex-direction:column;gap:12px}
.su-sum-h{font-size:12px;color:var(--muted);letter-spacing:.08em}
.su-dl{display:grid;grid-template-columns:auto minmax(0,1fr);gap:7px 12px;margin:0;font-size:13px}
.su-dl dt{color:var(--muted)} .su-dl dd{margin:0;text-align:right;font-family:var(--f-num);font-variant-numeric:tabular-nums}
.su-dl dd.hot{color:var(--warn);font-weight:600}
.su-chk{display:flex;gap:8px;align-items:flex-start;font-size:13px}
.su-chk input{margin-top:3px}
.su-go{padding:13px;font-size:16px;width:100%}
.su-hist{font-size:12px;color:var(--dim);display:flex;flex-wrap:wrap;gap:6px 10px;align-items:center}
.su-hist .ghost{font-size:12px;padding:4px 10px}

/* ---------- top bar ---------- */
body::before{content:"";position:fixed;inset:0 0 auto;height:env(safe-area-inset-top,0px);z-index:20;background:var(--bg)}
.bar{position:sticky;top:env(safe-area-inset-top,0px);z-index:15;background:var(--bg);display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px;padding-block:6px 10px}
.bar-l{display:flex;align-items:center;gap:10px;min-width:0}
.mkt-chip{border:1px solid var(--line);background:var(--panel);border-radius:999px;padding:5px 12px;font-weight:700;letter-spacing:.06em;white-space:nowrap}
.mkt-chip small{color:var(--muted);font-weight:500;margin-left:4px;letter-spacing:0}
.c-time{font-family:var(--f-disp);font-size:24px;font-weight:600;letter-spacing:.04em;line-height:1;font-variant-numeric:tabular-nums}
.c-prog{flex:1 1 120px;height:4px;background:var(--raise);border-radius:2px;position:relative;overflow:hidden;min-width:80px}
.c-prog i{position:absolute;inset:0 auto 0 0;background:var(--accent);width:0}
.c-prog s{position:absolute;top:0;bottom:0;background:var(--warn);opacity:.55}
.bar-r{display:flex;gap:8px;align-items:center;margin-left:auto}
#btnPlay{min-width:118px}
@media(max-width:560px){.bar-l .pill{display:none}#btnPlay{min-width:0;padding:8px 10px}.c-prog{order:5;flex-basis:100%}}

/* ---------- board ---------- */
.board{display:flex;flex-direction:column;gap:12px}
.pane{min-width:0}
.pane-trade{display:flex;flex-direction:column;gap:12px}
@media(max-width:1023.98px){
  .board .pane.off{display:none}
  .game{padding-bottom:calc(var(--tabh) + env(safe-area-inset-bottom,0px) + 8px)}
}
@media(min-width:1024px){
  .board{display:grid;grid-template-columns:270px minmax(0,1fr) 360px;grid-template-areas:"watch chart ticket" "news pos acct";align-items:start}
  .pane-trade{display:contents}
  .pane-watch{grid-area:watch;align-self:stretch;height:0;min-height:100%}
  .pane-watch .watch{flex:1;min-height:0}
  .trade-chart{grid-area:chart;align-self:stretch}
  .trade-ticket{grid-area:ticket}
  .pane-news{grid-area:news;align-self:stretch}
  .pane-pos{grid-area:pos;align-self:stretch}
  .pane-acct{grid-area:acct}
  .pos-mini,.tabbar{display:none!important}
}
@media(min-width:1280px){.board{grid-template-columns:280px minmax(0,1fr) 390px}}
@media(min-width:1440px){.board{grid-template-columns:300px minmax(0,1fr) 400px}}

/* watchlist */
.pane-watch{display:flex;flex-direction:column}
.watch{padding:6px 6px 8px;display:flex;flex-direction:column;overflow:auto}
.w-head,.w-row{display:grid;grid-template-columns:minmax(0,1fr) 78px 64px;gap:6px;align-items:center}
.w-tools{display:flex;flex-wrap:wrap;gap:6px;padding:4px 4px 6px;position:sticky;top:-6px;z-index:2;background:var(--panel)}
.w-tools input,.w-tools select{background:var(--raise);border:1px solid var(--line);border-radius:8px;padding:6px 9px;font-size:13px;color:var(--fg);min-width:0}
.w-tools input{flex:1 1 120px}
.w-filt{display:flex;gap:4px;overflow-x:auto;flex-basis:100%;padding-bottom:2px;scrollbar-width:thin}
.w-filt button{flex:none;border:1px solid var(--line);background:transparent;border-radius:999px;padding:3px 10px;font-size:12px;color:var(--muted);white-space:nowrap}
.w-filt button[aria-pressed="true"]{border-color:var(--accent);color:var(--fg);background:var(--raise)}
.w-list{display:flex;flex-direction:column}
.w-item{position:relative}
.w-star{position:absolute;left:2px;top:50%;transform:translateY(-50%);border:0;background:transparent;color:var(--dim);font-size:14px;padding:4px;line-height:1;z-index:1}
.w-star[aria-pressed="true"]{color:var(--accent)}
.w-star~.w-row,.w-item:has(.w-star) .w-row{padding-left:26px}
.w-head{font-size:11px;color:var(--dim);padding:6px 8px 4px;letter-spacing:.04em}
.w-head span:not(:first-child){text-align:right}
.w-grp{font-size:11px;color:var(--accent);padding:10px 8px 4px;letter-spacing:.08em;font-weight:700}
.w-row{border:0;background:transparent;border-radius:8px;padding:7px 8px;text-align:left;color:var(--fg);position:relative;width:100%}
.w-row:hover{background:var(--raise)}
.w-row[aria-current="true"]{background:var(--raise);box-shadow:inset 3px 0 0 var(--accent)}
.w-n{display:flex;flex-direction:column;min-width:0}
.w-n b{font-size:14px;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.w-n small{font-size:11px;color:var(--dim);font-family:var(--f-num);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.w-p,.w-c{text-align:right;font-size:13.5px}
.w-c{font-size:12.5px;border-radius:5px;padding:2px 4px}
.w-p.lu{background:var(--up);color:#fff;border-radius:4px;padding:1px 4px}
.w-p.ld{background:var(--down);color:#04150E;border-radius:4px;padding:1px 4px}
.w-pos{position:absolute;right:8px;top:4px;font-size:10px;font-weight:700;letter-spacing:.04em}
.w-row .w-n small .tag{color:var(--accent)}

/* chart & quote */
.trade-chart{display:flex;flex-direction:column;padding-bottom:6px;min-width:0}
.quote{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:2px 16px;align-items:end;padding:12px 12px 4px}
.q-name{font-size:19px;font-weight:700;letter-spacing:.03em;display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.q-name button{border:1px solid var(--line);background:transparent;border-radius:6px;font-size:11px;padding:2px 8px;color:var(--muted)}
.q-code{color:var(--muted);font-size:12px}
.q-px{text-align:right}
.q-last{font-family:var(--f-disp);font-weight:600;font-size:40px;line-height:.95;font-variant-numeric:tabular-nums}
.q-chg{font-family:var(--f-num);font-size:13px}
.q-stats{grid-column:1/-1;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:3px 14px;margin:8px 0 0;font-size:12px}
.q-stats div{display:flex;justify-content:space-between;gap:6px;min-width:0}
.q-stats dt{color:var(--muted);white-space:nowrap} .q-stats dd{margin:0;font-family:var(--f-num);font-variant-numeric:tabular-nums;text-align:right;overflow-wrap:anywhere}
@media(max-width:599.98px){.q-stats div{flex-direction:column;gap:0}.q-stats dd{text-align:left}}
@media(min-width:1600px){.q-stats{grid-template-columns:repeat(8,minmax(0,1fr))}}
@media(min-width:600px) and (max-width:1023.98px){.q-stats{grid-template-columns:repeat(8,minmax(0,1fr))}}
.chart-tools{display:flex;justify-content:space-between;align-items:center;gap:8px;padding:6px 12px 0;flex-wrap:wrap}
.tf-wrap{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.tf{display:inline-flex;background:var(--raise);border-radius:7px;padding:2px;gap:2px}
.tf button{border:0;background:transparent;color:var(--muted);font-size:12px;font-weight:700;padding:4px 9px;border-radius:5px;letter-spacing:.02em}
.tf button[aria-pressed="true"]{background:var(--line);color:var(--fg)}
.lock-tag{font-size:11px;font-weight:700;padding:2px 8px;border-radius:999px}
.lock-tag.u{background:var(--up-bg);color:var(--up)} .lock-tag.d{background:var(--down-bg);color:var(--down)} .lock-tag.w{background:rgba(255,138,61,.14);color:var(--warn)}
.chart-box{position:relative;height:260px;margin-top:4px}
.chart-box canvas{position:absolute;inset:0;width:100%;height:100%;display:block}
@media(min-width:1024px){.chart-box{flex:1;min-height:380px;height:auto}}

/* ticket */
.trade-ticket{display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr)}
.book{border-right:1px solid var(--line);padding:10px 8px;min-width:0}
.order{padding:10px;display:flex;flex-direction:column;gap:9px;min-width:0}
@media(max-width:359px){.trade-ticket{grid-template-columns:1fr}.book{border-right:0;border-bottom:1px solid var(--line)}}
.lad-h{display:flex;justify-content:space-between;font-size:11px;color:var(--dim);padding:0 6px 4px;letter-spacing:.06em}
.lad-row{display:flex;justify-content:space-between;align-items:center;height:25px;position:relative;font-family:var(--f-num);font-variant-numeric:tabular-nums;font-size:12.5px;padding:0 6px;border-radius:4px;border:0;background:transparent;width:100%;text-align:left}
.lad-row .bar{position:absolute;top:3px;bottom:3px;right:0;border-radius:3px}
.lad-ask .bar{background:var(--down-bg)} .lad-bid .bar{background:var(--up-bg)}
.lad-row span{position:relative}
.lad-row:hover:not(:disabled){background:var(--raise)}
.lad-row:disabled{opacity:1;cursor:default}
.lad-row .q{color:var(--muted)}
.lad-mid{display:flex;justify-content:space-between;align-items:center;gap:6px;margin:4px 0;padding:5px 6px;border-top:1px dashed var(--line);border-bottom:1px dashed var(--line);font-size:11px;color:var(--muted)}
.lad-mid .num{font-size:13px;font-weight:600}
.seg{display:grid;grid-auto-flow:column;grid-auto-columns:1fr;background:var(--raise);border-radius:8px;padding:3px;gap:3px}
.seg button{border:0;border-radius:6px;padding:6px 0;background:transparent;color:var(--muted);font-weight:700;font-size:13px}
.seg button.on{background:var(--line);color:var(--fg)}
.seg button.on-b{background:var(--up);color:#fff}
.seg button.on-s{background:var(--down);color:#04150E}
.seg.sm button{font-size:12px;padding:5px 0;font-weight:600;white-space:nowrap;letter-spacing:0}
@media(max-width:420px){.seg.sm button{font-size:11px}.submit{font-size:14px}}
.ord-row{display:flex;gap:6px;align-items:center}
.ord-row>.lbl-i{font-size:11px;color:var(--muted);white-space:nowrap;width:3.6em;flex:none}
.ord-row>.seg{flex:1}
.lbl{font-size:11px;color:var(--muted);letter-spacing:.04em;display:flex;justify-content:space-between;gap:6px}
.stepper{display:grid;grid-template-columns:34px minmax(0,1fr) 34px;background:var(--raise);border-radius:8px;overflow:hidden;height:36px}
.stepper button{border:0;background:transparent;font-size:18px;line-height:1}
.stepper button:hover:not(:disabled){background:var(--line)}
.stepper input{width:100%;min-width:0;background:transparent;border:0;text-align:center;font-family:var(--f-num);font-size:15px;font-variant-numeric:tabular-nums}
.stepper input:disabled{color:var(--dim)}
.qp{display:grid;grid-auto-flow:column;grid-auto-columns:1fr;gap:4px;margin-top:5px}
.qp button,.qchips button{border:1px solid var(--line);background:transparent;border-radius:6px;font-size:11.5px;padding:3px 0;color:var(--muted)}
.qp button:hover,.qchips button:hover{color:var(--fg);border-color:var(--dim)}
.qp .u{color:var(--up)} .qp .d{color:var(--down)}
.qchips{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:4px;margin-top:5px}
.qchips button{font-family:var(--f-num);font-size:12px}
.preview{display:grid;grid-template-columns:auto minmax(0,1fr);gap:2px 8px;font-size:12px;margin:0}
.preview dt{color:var(--muted)} .preview dd{margin:0;text-align:right;font-family:var(--f-num);font-variant-numeric:tabular-nums}
.submit{width:100%;border:0;border-radius:10px;padding:11px 8px;font-weight:700;font-size:15px}
.submit.b{background:var(--up);color:#fff}.submit.s{background:var(--down);color:#04150E}
.sub-actions{display:grid;grid-template-columns:1fr 1fr;gap:6px}
.kbd-hint{font-size:11px;color:var(--dim);display:none}
@media(hover:hover) and (min-width:1024px){.kbd-hint{display:block}}
.kbd-hint kbd{font-family:var(--f-num);border:1px solid var(--line);border-radius:4px;padding:0 4px}
.dt-chip{font-size:11px;font-weight:700;color:var(--accent);border:1px solid var(--accent);border-radius:6px;padding:4px 8px;white-space:nowrap}
.sltp{display:grid;grid-template-columns:1fr 1fr;gap:6px}
.sltp input{padding:7px 8px}
.sltp-hint{font-size:11px;color:var(--muted);min-height:1em}
.fx-btns{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);gap:5px;align-items:stretch}
.fx-btns button{border:0;border-radius:10px;padding:8px 6px;display:flex;flex-direction:column;align-items:center;gap:0}
.fx-btns small{font-size:11px;font-weight:700;letter-spacing:.06em}
.fx-btns b{font-family:var(--f-num);font-size:clamp(13px,1.15vw,17px);font-weight:600;max-width:100%;overflow:hidden;text-overflow:clip}
@media(max-width:1023.98px){.fx-btns b{font-size:13px}.fx-btns button{padding:8px 4px}}
.fx-sell{background:var(--down);color:#04150E}.fx-buy{background:var(--up);color:#fff}
.fx-spr{align-self:center;font-size:11px;color:var(--muted);text-align:center;min-width:2.2em}
.tut-btn{width:100%;border-color:var(--accent);color:var(--accent)}
.pos-mini{border-radius:10px;padding:10px 12px;display:flex;align-items:center;gap:10px;flex-wrap:wrap;font-size:13px}
.pos-mini .grow{flex:1;min-width:0}

/* positions / tables */
.tablist{display:flex;gap:2px;padding:6px 6px 0;border-bottom:1px solid var(--line);overflow-x:auto}
.tablist button{border:0;background:transparent;padding:8px 11px;color:var(--muted);border-bottom:2px solid transparent;margin-bottom:-1px;font-weight:500;white-space:nowrap}
.tablist button[aria-selected="true"]{color:var(--fg);border-bottom-color:var(--accent)}
.tablist .cnt{font-family:var(--f-num);font-size:11px;color:var(--dim);margin-left:4px}
.panel{padding:10px 12px 12px}
.tbl-wrap{overflow-x:auto}
table{border-collapse:collapse;width:100%;font-size:12.5px}
th{font-weight:500;color:var(--muted);text-align:right;padding:6px;font-size:11px;white-space:nowrap;border-bottom:1px solid var(--line)}
td{text-align:right;padding:6px;font-family:var(--f-num);font-variant-numeric:tabular-nums;white-space:nowrap;border-bottom:1px solid var(--line)}
th:first-child,td:first-child{text-align:left}
td.note{font-family:var(--f-ui);color:var(--muted);font-size:11.5px}
td.nm{font-family:var(--f-ui)}
.empty{color:var(--muted);font-size:13px;padding:10px 0 14px}
.lst-h{font-size:12px;font-weight:700;color:var(--accent);letter-spacing:.06em;margin:4px 0 2px}
.lst-h:not(:first-child){margin-top:14px}
.dlg-card{max-width:420px}
.dlg-card .su-field input{background:var(--raise)}
.dlg-row{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.x-btn{border:1px solid var(--line);background:transparent;border-radius:6px;font-size:11.5px;padding:3px 9px;font-family:var(--f-ui)}
.x-btn:hover{background:var(--raise)}
.pcards{display:grid;gap:8px}
@media(min-width:1024px){.pcards{grid-template-columns:repeat(auto-fill,minmax(300px,1fr))}}
.pcard{border:1px solid var(--line);border-radius:10px;padding:10px 12px;display:flex;flex-direction:column;gap:8px;background:var(--raise)}
.pc-h{display:flex;align-items:center;gap:8px}
.pc-h b{font-size:14px}
.pc-h .grow{flex:1}
.pc-g{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px 8px}
.kv{display:flex;flex-direction:column;gap:1px;min-width:0}
.kv span{font-size:11px;color:var(--muted)}
.kv b{font-family:var(--f-num);font-variant-numeric:tabular-nums;font-weight:500;font-size:14px;overflow-wrap:anywhere}
.kv.big b{font-family:var(--f-disp);font-size:28px;font-weight:600;line-height:1.05}
.kv-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:9px 8px}
.kv-grid>.kv.big{grid-column:1/-1}
.hist-sum{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin-bottom:10px}
@media(max-width:480px){.hist-sum{grid-template-columns:repeat(2,minmax(0,1fr))}}
#histChart{display:block;width:100%;height:120px;margin-bottom:8px}

/* account */
.acct-body{padding:10px 12px 12px;display:flex;flex-direction:column;gap:12px}
.meter{display:flex;flex-direction:column;gap:4px}
.meter-track{position:relative;height:8px;background:var(--raise);border-radius:4px;overflow:hidden}
.meter-track i{position:absolute;inset:0 auto 0 0;border-radius:4px;background:var(--muted);width:0;transition:width .2s}
.meter-scale{position:relative;height:14px;font-size:10px;color:var(--dim);font-family:var(--f-num)}
.meter-scale span{position:absolute;transform:translateX(-50%)}
.meter-scale span:first-child{transform:none}
.meter-scale span:last-child{transform:translateX(-100%)}
.risk{border-radius:8px;padding:8px 10px;font-size:13px;background:var(--raise);color:var(--muted);margin:0}
.risk.warn{background:rgba(255,138,61,.12);color:var(--warn)}
.risk.danger{background:rgba(255,59,78,.14);color:var(--danger);font-weight:700}
@media(prefers-reduced-motion:no-preference){.risk.danger{animation:pulse 1.2s ease-in-out infinite}}
@keyframes pulse{50%{background:rgba(255,59,78,.26)}}
.foot{font-size:11.5px;color:var(--dim);line-height:1.65;margin:0}

/* news */
.pane-news{display:flex;flex-direction:column}
.ind{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px;padding:10px 12px 4px}
@media(min-width:640px) and (max-width:1023.98px){.ind{grid-template-columns:repeat(4,minmax(0,1fr))}}
.ind-i{background:var(--raise);border-radius:8px;padding:6px 8px;display:flex;flex-direction:column;gap:1px;min-width:0}
.ind-i span{font-size:11px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ind-i b{font-family:var(--f-num);font-weight:500;font-size:14px}
.ind-i i{font-style:normal;font-family:var(--f-num);font-size:11px}
.ind-note{font-size:10.5px;color:var(--dim);padding:0 12px}
.feed{list-style:none;margin:0;padding:6px 12px 12px;display:flex;flex-direction:column;gap:8px;overflow:auto}
@media(min-width:1024px){.feed{max-height:460px}}
.feed li{border-left:2px solid var(--line);padding:2px 0 2px 10px;display:flex;flex-direction:column;gap:3px}
.feed li.new{border-left-color:var(--accent)}
.feed li.sched{opacity:.7;border-left-style:dashed}
.f-top{display:flex;gap:6px;align-items:center;font-size:11px;color:var(--muted)}
.cat{font-size:10.5px;font-weight:700;padding:1px 6px;border-radius:4px;background:var(--raise);color:var(--info)}
.cat.c-債券{color:#9BB8FF}.cat.c-利率{color:#E1A7FF}.cat.c-原物料{color:var(--accent)}.cat.c-總經{color:var(--warn)}.cat.c-突發{color:var(--danger)}
.f-title{font-size:13.5px;line-height:1.45}
.f-imp{display:flex;flex-wrap:wrap;gap:4px}
.f-imp span{font-size:11px;font-family:var(--f-num);padding:0 5px;border-radius:4px;background:var(--raise)}

/* tab bar */
.tabbar{position:fixed;left:0;right:0;bottom:0;z-index:25;background:var(--panel);border-top:1px solid var(--line);display:grid;grid-template-columns:repeat(5,1fr);padding:4px max(8px,env(safe-area-inset-right,0px)) calc(4px + env(safe-area-inset-bottom,0px)) max(8px,env(safe-area-inset-left,0px))}
.tabbar button{border:0;background:transparent;display:flex;flex-direction:column;align-items:center;gap:2px;padding:6px 0;color:var(--muted);font-size:11px;position:relative;height:calc(var(--tabh) - 8px);justify-content:center}
.tabbar svg{width:22px;height:22px;stroke:currentColor;fill:none;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}
.tabbar button[aria-selected="true"]{color:var(--accent)}
.tabbar .badge{position:absolute;top:4px;left:calc(50% + 6px);min-width:16px;height:16px;border-radius:8px;background:var(--danger);color:#fff;font-size:10px;font-family:var(--f-num);display:grid;place-items:center;padding:0 4px}

/* sheet & toast */
.sheet{position:fixed;inset:0;background:var(--scrim);display:flex;align-items:center;justify-content:center;z-index:30;padding:max(16px,env(safe-area-inset-top,0px)) max(16px,env(safe-area-inset-right,0px)) max(16px,env(safe-area-inset-bottom,0px)) max(16px,env(safe-area-inset-left,0px))}
.sheet-card{background:var(--panel);border:1px solid var(--line);border-radius:16px;max-width:560px;width:100%;max-height:100%;overflow:auto;padding:18px;display:flex;flex-direction:column;gap:14px}
.sheet-card h2{margin:0;font-size:15px;color:var(--muted);font-weight:500;letter-spacing:.04em}
.sheet-big{font-family:var(--f-disp);font-size:52px;font-weight:600;line-height:1}
.sheet-sub{font-size:13px;color:var(--muted)}
.sheet-stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}
#repChart{display:block;width:100%;height:110px}
.lessons{margin:0;padding-left:18px;display:flex;flex-direction:column;gap:6px;font-size:13.5px}
.lessons li.hot{color:var(--danger)}
.sheet-actions{display:flex;flex-wrap:wrap;gap:8px}
.sheet-actions .btn-main{flex:1 1 160px;padding:11px}
.toasts{position:fixed;top:calc(env(safe-area-inset-top,0px) + 10px);left:50%;transform:translateX(-50%);display:flex;flex-direction:column;gap:6px;z-index:40;width:min(440px,calc(100% - 32px));pointer-events:none}
.toast{background:var(--raise);border:1px solid var(--line);border-radius:10px;padding:8px 12px;font-size:13px;box-shadow:0 6px 24px rgba(0,0,0,.4)}
.toast.bad{border-color:var(--danger);color:var(--danger)}
.toast.b{border-left:3px solid var(--up)} .toast.s{border-left:3px solid var(--down)}
.toast.news{border-left:3px solid var(--accent)}
@media(max-width:1023.98px){.toasts{top:auto;bottom:calc(var(--tabh) + env(safe-area-inset-bottom,0px) + 10px);flex-direction:column-reverse}}

/* tutorial */
.tut-card{max-width:760px}
.tut-top{display:flex;justify-content:space-between;align-items:center;gap:12px}
.tut-top h2{color:var(--fg);font-size:17px;font-weight:700}
.tut-steps{margin:0;padding-left:22px;display:grid;gap:10px}
@media(min-width:720px){.tut-steps{grid-template-columns:1fr 1fr;column-gap:28px}}
.tut-steps li::marker{color:var(--accent);font-family:var(--f-num);font-weight:600}
.tut-steps b{font-size:14px}
.tut-steps p{margin:3px 0 0;font-size:13px;color:var(--muted);line-height:1.6}
.tut-steps em{font-style:normal;color:var(--fg)}
.tut-calc{padding:14px;display:flex;flex-direction:column;gap:12px;background:var(--raise)}
.tut-calc-h{font-weight:700;letter-spacing:.06em}
.tut-in{display:flex;flex-direction:column;gap:10px}
.tut-in .pick{margin-top:4px}
.tut-row{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
@media(max-width:480px){.tut-row{grid-template-columns:1fr 1fr}}
.tut-row .su-field input{background:var(--panel)}
.tut-out{display:grid;gap:8px}
.tc-line{display:grid;grid-template-columns:minmax(0,9em) minmax(0,1fr) auto;gap:4px 12px;align-items:baseline;font-size:13px;border-top:1px solid var(--line);padding-top:8px}
.tc-line span{color:var(--muted)}
.tc-line code{font-family:var(--f-num);font-size:12px;color:var(--dim);overflow-wrap:anywhere}
.tc-line b{font-family:var(--f-num);font-variant-numeric:tabular-nums;text-align:right;white-space:nowrap}
@media(max-width:520px){.tc-line{grid-template-columns:minmax(0,1fr) auto}.tc-line code{grid-column:1/-1;grid-row:2}}
