/* Shared presentation layer. Market colours keep Taiwan's red-up / green-down convention. */
:root{--bg:#f3f6f8;--panel:#fff;--ink:#182f3b;--muted:#607480;--line:#dfe7ec;
 --brand:#087f83;--brand2:#07656b;--bg2:#edf3f5;--up:#c83743;--down:#188257;
 --sh:0 2px 5px rgba(24,47,59,.025),0 10px 30px rgba(24,47,59,.035)}
body{font-size:14px;line-height:1.7;-webkit-font-smoothing:antialiased}
a,button,summary,input,select,textarea{-webkit-tap-highlight-color:transparent}
a:focus-visible,button:focus-visible,summary:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{
 outline:3px solid #14a9ac;outline-offset:4px}
.skip-link{position:fixed;top:8px;left:16px;z-index:100;transform:translateY(-180%);
 background:#fff;color:var(--ink);padding:10px 18px;border-radius:8px}
.skip-link:focus{transform:none}
.topbar{background:#142e3b;border-bottom:0;box-shadow:0 2px 10px #152e3b14}
.topwrap{max-width:1320px;display:grid;grid-template-columns:1fr auto;gap:0;
 padding:0 32px;min-height:0}
.brand{min-height:68px;color:#fff;font-size:19px;letter-spacing:.04em;gap:12px;align-items:center}
.brand:hover{color:#fff}
.brand .brand-mark{width:32px;height:32px;flex:none;color:#75ded3}
.brand span{font-size:10px;color:#a8bdc9;letter-spacing:.15em;border-left:1px solid #54707e;
 padding-left:14px;margin-left:3px}
.topnav{grid-column:1 / -1;grid-row:2;gap:5px;min-height:48px;align-items:center;
 border-top:1px solid #ffffff16;padding:5px 0;flex-wrap:wrap}
.topacct{grid-column:2;grid-row:1;margin-left:16px}
.ng>summary,.ng1{font-size:13px;color:#c6d4dc;padding:7px 12px;border-radius:6px;font-weight:550}
.ng>summary:hover,.ng[open]>summary,.ng1:hover{background:#294653;color:#fff}
.ng.on>summary,.ng1.on{background:#254c56;color:#a3f0e4}
.ngm{margin-top:5px;padding:8px;border-radius:10px;box-shadow:0 12px 32px #122e3b26;min-width:208px}
.ngm a{padding:9px 12px;font-size:13px}
.ngm a.active{background:#e6f4f2;color:#07656b;font-weight:700}
.topacct .ngm{left:auto;right:0}
.nav-toggle{display:none}
.main{max-width:1320px;min-width:0;padding:30px 32px 52px;scroll-margin-top:128px}
.page-heading{margin-bottom:23px}
.page-eyebrow{margin:0 0 5px;font-size:10px;font-weight:700;letter-spacing:.18em;color:var(--brand2)}
.page-title{font-size:30px;letter-spacing:.025em;font-weight:750;line-height:1.35;margin:0 0 7px}
.page-sub{font-size:13px;margin:0;color:var(--muted)}
.banner{font-size:12.5px;padding:10px 14px;border-radius:8px;margin-bottom:10px;border-left-width:3px}
.banner-fold{margin:2px 0 16px}.banner-fold>summary{font-size:12px}
.card{padding:22px 24px;border-radius:12px;margin-bottom:20px;box-shadow:var(--sh)}
.card h2{font-size:16px;font-weight:700;letter-spacing:.01em;margin-bottom:18px;line-height:1.7}
.card h2 small{font-size:11.5px;line-height:1.6;letter-spacing:0;display:inline-block}
.card p:last-child{margin-bottom:0}
.grid{gap:18px}.grid>*{min-width:0}.grid .card{height:100%}
.grid.c2{grid-template-columns:repeat(2,minmax(0,1fr))}
.grid.c3{grid-template-columns:repeat(3,minmax(0,1fr))}
.grid.c4{grid-template-columns:repeat(4,minmax(0,1fr))}
.kpi{gap:5px;min-width:0}.kpi .l{font-size:12px;letter-spacing:.015em}
.kpi>b{font-size:26px;line-height:1.3;letter-spacing:-.035em;font-weight:700}
.kpi .s{font-size:11.5px;line-height:1.65;letter-spacing:0}
.pill{font-size:11px;padding:3px 10px;font-weight:600}
.btn{background:var(--brand);border:1px solid transparent;border-radius:8px;padding:10px 20px;
 font-size:13px;line-height:1.5;min-height:42px;transition:background .15s}
.btn:hover{background:var(--brand2);color:#fff}.btn.danger:hover{background:#8f1f1f}
input:not([type=checkbox]):not([type=radio]):not([type=range]):not([type=hidden]),select,textarea{
 font:inherit;color:var(--ink);border:1px solid #cbd7de;border-radius:8px;background:#fff;
 padding:9px 12px;max-width:100%}
input::placeholder,textarea::placeholder{color:#718590}
.bc-search{display:flex;gap:10px;align-items:center;max-width:620px;width:100%;margin:0 0 20px}
.bc-search input{flex:1;min-width:0;width:100%;height:46px}.bc-search .btn{flex:none;height:46px}
.market-tools{display:flex;align-items:center;justify-content:space-between;gap:20px;margin:18px 0 20px}
.market-tools .bc-search{margin:0;max-width:560px}
.desk-shortcuts{display:flex;gap:8px;flex-wrap:wrap}
.desk-shortcuts a{display:flex;align-items:center;gap:18px;padding:9px 13px;background:#fff;
 border:1px solid var(--line);border-radius:8px;color:var(--ink);font-size:12px;white-space:nowrap}
.desk-shortcuts a::after{content:'↗';color:var(--brand)}
.desk-shortcuts a:hover{border-color:var(--brand);background:#f5fbfa}
.market-overview>.card{border-top:3px solid var(--brand);padding-top:20px}
.market-overview .grid.c4{gap:0}
.market-overview .kpi{padding:0 22px;border-right:1px solid var(--line)}
.market-overview .kpi:first-child{padding-left:0}.market-overview .kpi:last-child{border-right:0;padding-right:0}
.market-overview .kpi>b{font-size:29px}
.market-overview .kpi:nth-child(3)>b{font-size:24px;letter-spacing:-.04em}
.market-overview .muted{font-size:11.5px;border-top:1px solid var(--line);padding-top:12px;margin-top:18px}
/* These classes are shared by home/stock pages, not only the broker stylesheet. */
td.bc-up,span.bc-up{color:var(--up);font-weight:650}
td.bc-down,span.bc-down{color:var(--down);font-weight:650}
.market-analysis{display:grid;grid-template-columns:minmax(0,1.7fr) minmax(0,1fr);gap:20px;margin-bottom:20px}
.market-analysis>.card{margin:0;min-width:0}
.market-analysis h2 small{display:block;margin:4px 0 0}
.market-analysis .grid.c3{gap:10px}.market-analysis .kpi>b{font-size:23px}
.market-analysis svg.chart{margin-top:20px}
.market-ranks{margin-bottom:20px}.market-ranks .card{padding:20px 18px}
.market-ranks+.muted{font-size:12px}
.system-status{padding:17px 22px;background:#fafdfe}
.status-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px}
.system-status .status-heading h2{margin:0;font-size:13px}
.status-mode{font-size:11px;color:var(--muted)}
.status-grid{display:grid;grid-template-columns:1fr 1fr 2fr;gap:20px}
.status-item{display:flex;flex-direction:column;gap:2px;font-size:12px;color:var(--muted)}
.status-item strong{color:var(--ink);font-size:14px;font-weight:650;font-variant-numeric:tabular-nums}
.status-state strong{color:var(--warn-ink)}
.status-blockers{padding:8px 10px;background:var(--bad-bg);color:var(--bad-ink);border-radius:6px;font-size:12px}
.status-note{display:flex;justify-content:space-between;gap:10px 24px;flex-wrap:wrap;
 border-top:1px solid var(--line);padding-top:10px;margin:12px 0 0;font-size:11.5px;color:var(--muted)}
.status-links{display:flex;gap:16px;flex:none}.status-links a{font-weight:600}
table{font-size:13px}th{padding:10px 12px;background:#f5f8fa;font-size:11.5px;letter-spacing:.02em}
td{padding:10px 12px}tbody tr:hover{background:#f6fafb}
.fd-t th{padding:10px 12px}.fd-t td{padding:9px 12px}.fd-t{font-size:13px}
.fd-two{grid-template-columns:repeat(2,minmax(0,1fr));gap:20px}
.fd-two>*{min-width:0}.fd-disc,.fd-read{padding:12px 15px;border-radius:0 8px 8px 0;font-size:12px;line-height:1.8}
.fd-disc{background:#eaf3f4;border-left-color:var(--brand)}
.fd-stamp{padding:6px 0;line-height:1.9;font-size:11.5px}
.desk-sections{display:flex;gap:6px;flex-wrap:wrap;padding:5px;margin:0 0 18px;
 border:1px solid var(--line);border-radius:10px;background:#fff;width:fit-content}
.desk-sections a{padding:7px 15px;color:var(--muted);font-size:12px;border-radius:6px}
.desk-sections a:hover{background:#e6f4f2;color:var(--brand2)}
section[id]{scroll-margin-top:140px}
#futures-quote .grid.c4{padding:2px 0 22px;border-bottom:1px solid var(--line);margin-bottom:18px}
.heat{gap:8px;grid-template-columns:repeat(auto-fill,minmax(126px,1fr))}
.heat-c{min-height:73px;padding:12px;border-radius:7px;transition:box-shadow .15s}
.heat-c:hover{box-shadow:inset 0 0 0 2px currentColor}.heat-c span{font-size:15px;font-weight:600}
.chart-legend{font-size:11px}.tf a{padding:5px 14px;border-radius:6px}
.sitefoot{font-size:11px;background:#eaf0f3;padding:22px 24px;color:#647b88}
.provenance{font-size:10.5px;line-height:1.9}
@media(max-width:1100px){
 .topwrap{padding:0 24px}.main{padding-left:24px;padding-right:24px}
 .ng>summary,.ng1{padding:7px 9px}.topnav{gap:3px}
 .brand span{display:none}.market-tools{align-items:stretch}.desk-shortcuts{gap:6px}
 .desk-shortcuts a{gap:10px}.market-overview .kpi{padding:0 14px}
 .market-overview .kpi>b{font-size:25px}.market-overview .kpi:nth-child(3)>b{font-size:21px}
 .market-analysis{grid-template-columns:minmax(0,1fr)}
 .market-analysis .grid.c3{grid-template-columns:repeat(3,minmax(0,1fr))}
}
@media(max-width:980px){
 .grid.c3,.grid.c2{grid-template-columns:minmax(0,1fr)}
 .grid.c4{grid-template-columns:repeat(2,minmax(0,1fr))}
 .market-overview .grid.c4{gap:22px 0}.market-overview .kpi:nth-child(2){border-right:0}
 .market-overview .kpi:nth-child(3){padding-left:0}.market-overview .kpi>b{font-size:28px}
 .market-tools{flex-wrap:wrap}.market-tools .bc-search{max-width:none;flex:1 1 100%}
 .market-ranks .card{height:auto;margin:0}.market-ranks{gap:16px}
 .status-grid{grid-template-columns:1fr 1fr}.status-state{grid-column:1 / -1}
}
@media(max-width:820px){
 .topwrap{display:flex;flex-wrap:wrap;padding:0 18px;gap:0;align-items:center}
 .brand{min-height:64px;font-size:17px;flex:1}.brand .brand-mark{width:27px;height:27px}
 .topacct{margin:0}.topacct .ng>summary{font-size:12px;padding:8px}
 .nav-ready .nav-toggle{display:inline-flex;align-items:center;gap:6px;border:1px solid #55717e;
  border-radius:6px;background:transparent;color:#e8f2f6;padding:7px 10px;min-height:38px;
  font:inherit;font-size:12px;margin-left:10px;cursor:pointer}
 .nav-ready .topnav{display:none}.nav-ready .topbar.menu-expanded .topnav{display:grid}
 .topnav{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));flex:1 0 100%;width:100%;order:1;
  padding:10px 0 14px;gap:4px;align-items:start}
 .ng>summary,.ng1{display:block;padding:9px 10px}
 .ngm{margin-top:0;background:#203e4b;border-radius:6px;padding:4px;max-width:100%;max-height:40dvh}
 .ngm a{white-space:normal;color:#e2edf2;padding:9px 10px}.ngm a:hover{background:#31525f}
 .ngm a.active{background:#dff4ee;color:#075e64}
 .topacct .ngm{position:absolute;left:auto;right:0;min-width:190px;max-width:calc(100vw - 36px);border:1px solid #46616c}
 .topwrap:has(.ng[open]){align-items:center}
 .topbar.menu-expanded,.topbar:has(.topnav .ng[open]){max-height:85vh;max-height:85dvh;overflow-y:auto}
 .main{padding:24px 18px 38px;scroll-margin-top:76px}.page-title{font-size:27px}.page-heading{margin-bottom:19px}
 .card{padding:20px;margin-bottom:16px}.card h2 small{display:block;margin:3px 0 0}
 .fd-two{grid-template-columns:minmax(0,1fr)}
 .desk-sections a{padding:7px 11px}section[id]{scroll-margin-top:86px}
 .system-status{padding:16px 20px}.status-grid{gap:12px}.status-note{font-size:11px}
 .status-heading{align-items:baseline}.status-mode{font-size:10px}
}
@media(max-width:480px){
 .topwrap{padding:0 14px}.brand{gap:8px;font-size:16px}.topacct .ng>summary{font-size:11px;padding:7px}
 .nav-ready .nav-toggle{margin-left:5px;padding:7px 9px}.main{padding:22px 14px 32px}
 .page-eyebrow{font-size:9px}.page-sub{font-size:12px}.page-title{font-size:26px}
 .card{padding:18px 16px}.card h2{font-size:15px}.market-tools{gap:12px}
 .bc-search{gap:8px}.bc-search input{font-size:14px;padding:10px;min-width:0}
 .bc-search .btn{padding:10px 15px}.desk-shortcuts{width:100%}.desk-shortcuts a{flex:1;justify-content:space-between;padding:8px 10px}
 .market-overview .kpi{padding:0 12px}.market-overview .kpi>b{font-size:26px}
 .market-overview .kpi:nth-child(3)>b{font-size:20px}.market-overview .kpi .s{font-size:10.5px}
 .status-heading{flex-wrap:wrap;gap:4px}.status-state strong{font-size:13px}
 .status-links{gap:18px}.market-analysis .kpi>b{font-size:21px}.market-analysis .kpi .l{font-size:11px}
 .heat{grid-template-columns:repeat(3,minmax(0,1fr));gap:6px}.heat-c{padding:9px;min-height:72px}
 .heat-c b{font-size:11px}.heat-c span{font-size:14px}.kpi>b{font-size:24px}
 .desk-sections{width:100%;justify-content:space-between;gap:2px}.desk-sections a{padding:7px 8px;font-size:11px}
}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{scroll-behavior:auto!important;transition:none!important}}
