:root{color-scheme:dark;--bg:#091224;--side:#0c172d;--panel:#101f37;--panel2:#142640;--border:#243753;--text:#eff5ff;--muted:#8eabc8;--accent:#38bcfa;--mint:#40d4b5;--gold:#e8b76d;--red:#f18193;--track:#243753;--shadow:0 18px 45px rgba(0,0,0,.12)}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;font:14px/1.6 Inter,"Noto Sans TC","Microsoft JhengHei",system-ui,sans-serif;background:var(--bg);color:var(--text)}button,input,select{font:inherit}button{cursor:pointer}a{color:inherit;text-decoration:none}.shell{display:flex;min-height:100vh}.sidebar{width:240px;flex:none;background:var(--side);border-right:1px solid var(--border);display:flex;flex-direction:column;padding:30px 18px;position:sticky;top:0;height:100vh}.identity{padding:0 12px 45px;display:flex;flex-direction:column;line-height:1.1}.identity-mark{font-size:31px;font-weight:900;letter-spacing:-2px}.identity-dot{color:var(--accent)}.identity-sub{font-size:10px;letter-spacing:3.5px;color:var(--muted);margin-top:9px}.side-label,.overline{color:#5da6d2;font-size:10px;letter-spacing:2px;font-weight:800}.side-label{margin:0 12px 14px}.nav{display:grid;gap:7px}.nav-item{display:flex;gap:12px;align-items:center;border:1px solid transparent;color:var(--muted);padding:11px 15px;border-radius:10px;font-size:14px;font-weight:600}.nav-item:hover,.nav-item.active{color:var(--text);background:#182b48;border-color:#304966}.side-bottom{margin-top:auto;border-top:1px solid var(--border);padding:20px 10px 0;color:var(--muted)}.signal{color:var(--text);font-weight:700;font-size:12px}.pulse,.status-dot{display:inline-block;width:9px;height:9px;border-radius:50%;background:var(--mint);margin-right:6px;box-shadow:0 0 0 4px rgba(64,212,181,.1)}.status-dot.pending{background:var(--gold)}.status-dot.offline{background:var(--red)}.small{font-size:11px;margin:7px 0 15px}.sheet-link{font-size:12px;color:var(--accent)}.workspace{min-width:0;flex:1}.topbar{height:64px;border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;padding:0 40px;color:var(--muted);font-size:12px}.crumb span{padding:0 12px;color:#4e718f}.top-actions{display:flex;align-items:center;gap:22px}.theme-btn{background:var(--panel);border:1px solid var(--border);border-radius:8px;color:var(--text);padding:5px 12px}main{max-width:1600px;padding:38px 40px 70px;margin:auto}.hero{display:flex;justify-content:space-between;align-items:flex-end;gap:20px;margin-bottom:39px}.eyebrow{font-size:10px;letter-spacing:3px;font-weight:700;color:var(--mint)}.eyebrow .line{display:inline-block;width:22px;border-top:2px solid var(--mint);vertical-align:middle;margin-right:8px}h1{font-size:clamp(26px,3vw,42px);letter-spacing:-1.4px;line-height:1.3;margin:14px 0 8px}.heading-accent{color:var(--accent)}.hero-sub{color:var(--muted);margin:0;font-size:14px}.hero-meta{text-align:right;flex:none}.connection{font-size:12px;font-weight:700}.refresh-line{color:var(--muted);font-size:11px;margin:7px 0 12px}.refresh-btn{border-radius:9px;border:1px solid #2f87b8;color:#8fdcff;background:#123250;padding:8px 18px;font-weight:700}.refresh-btn:hover{filter:brightness(1.15)}.refresh-btn:disabled{opacity:.5;cursor:wait}.error{padding:12px 18px;color:#ffb7c1;border:1px solid #853d53;background:#401e31;border-radius:10px;margin-bottom:20px}.section-heading{display:flex;justify-content:space-between;align-items:flex-end;margin-bottom:16px}.section-heading h2{margin:2px 0 0;font-size:20px}.section-heading.smaller{margin-top:33px}.scope{color:var(--muted);font-size:11px}.scope strong{color:var(--text)}.kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:15px}.kpi,.signal-card,.panel{background:linear-gradient(135deg,var(--panel),var(--panel2));border:1px solid var(--border);border-radius:13px;box-shadow:var(--shadow)}.kpi{padding:22px 20px;position:relative;overflow:hidden;min-height:145px}.kpi:before{content:"";position:absolute;inset:0 auto 0 0;width:3px;background:var(--accent)}.kpi.warning:before{background:var(--red)}.kpi-label{display:block;font-size:12px;color:var(--muted);font-weight:600}.kpi-num{display:block;font-size:clamp(22px,2.2vw,31px);letter-spacing:-.8px;margin:12px 0 6px;white-space:nowrap}.kpi-foot,.signal-note{font-size:11px;color:var(--muted)}.kpi-icon{position:absolute;top:16px;right:19px;font-size:20px;color:#557698}.signals{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:15px}.signal-card{padding:20px 22px;min-height:155px}.signal-title{font-size:12px;color:var(--muted);font-weight:700;display:flex;justify-content:space-between}.signal-picto{color:var(--accent)}.signal-card strong{display:block;margin:12px 0 10px;font-size:30px}.progress-track{height:7px;background:var(--track);overflow:hidden;border-radius:10px;margin-bottom:10px}.progress-fill{height:100%;border-radius:10px;transition:width .5s}.progress-fill.blue{background:var(--accent)}.chart-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;margin:20px 0}.panel{padding:23px;min-width:0}.panel-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px;gap:12px}.panel-head h3{margin:5px 0 0;font-size:17px}.panel-tag{font-size:11px;color:var(--muted);background:#21344f;border-radius:7px;padding:4px 9px;white-space:nowrap}.bar-list{display:grid;gap:17px}.bar-row-top{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:6px;font-size:12px}.bar-name{font-weight:700}.bar-metric{color:var(--muted);font-variant-numeric:tabular-nums}.bar-rail{height:9px;background:var(--track);border-radius:20px;overflow:hidden}.bar-core{height:100%;border-radius:20px;min-width:2px;background:linear-gradient(90deg,#1e8fd0,#4dd6e6)}.bar-row:nth-child(2n) .bar-core{background:linear-gradient(90deg,#247ba7,#3caeb1)}.donut-layout{display:flex;gap:30px;align-items:center;justify-content:center;min-height:215px}.donut{width:174px;height:174px;min-width:174px;border-radius:50%;display:grid;place-items:center;background:var(--track)}.donut-center{border-radius:50%;width:120px;height:120px;background:var(--panel);display:flex;flex-direction:column;align-items:center;justify-content:center}.donut-center span{font-size:24px;font-weight:850}.donut-center small{font-size:11px;color:var(--muted)}.legend{display:grid;gap:12px;min-width:120px;width:100%}.legend-row{display:grid;grid-template-columns:12px minmax(0,1fr) auto;gap:8px;align-items:center;font-size:12px}.legend-dot{width:9px;height:9px;border-radius:3px}.legend-value{color:var(--muted);font-variant-numeric:tabular-nums}.wide{margin-top:18px}.table-wrap{overflow:auto}table{width:100%;border-collapse:collapse;text-align:left;white-space:nowrap;font-size:12px}th{color:var(--muted);font-size:11px;font-weight:600;letter-spacing:.3px;background:rgba(96,139,182,.08)}th,td{padding:12px 15px;border-bottom:1px solid var(--border)}tbody tr:last-child td{border-bottom:0}tbody tr:hover{background:rgba(88,148,202,.07)}td{font-variant-numeric:tabular-nums}.client-name{font-weight:700}.sub-id{color:var(--muted);font-size:10px}.risk-chip,.tier-chip{padding:3px 8px;border-radius:6px;font-size:11px;display:inline-block;font-weight:700}.risk-high{background:rgba(241,129,147,.13);color:#fb9eaf}.risk-mid{background:rgba(232,183,109,.13);color:#ebc18d}.risk-low{background:rgba(64,212,181,.13);color:#66dec7}.tier-chip{background:rgba(56,188,250,.13);color:#88d7ff}.muted-heading{font-size:12px;font-weight:500;color:var(--muted)}.filters{display:flex;gap:8px;flex-wrap:wrap}.filters input,.filters select{background:var(--side);border:1px solid var(--border);color:var(--text);border-radius:8px;padding:8px 11px;outline:0;min-width:115px}.filters input{min-width:210px}.filters input:focus,.filters select:focus{border-color:var(--accent)}.pager{display:flex;justify-content:space-between;align-items:center;gap:10px;padding-top:18px;font-size:12px;color:var(--muted)}.pager button{background:var(--side);color:var(--text);border:1px solid var(--border);padding:6px 12px;border-radius:7px;margin-left:7px}.pager button:disabled{opacity:.35;cursor:default}.empty{color:var(--muted);font-size:12px;text-align:center;padding:30px}footer{font-size:10px;letter-spacing:.3px;text-align:center;border-top:1px solid var(--border);color:var(--muted);padding:26px 15px}footer span{padding:0 6px}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap}
body.light{color-scheme:light;--bg:#f1f5fa;--side:#fff;--panel:#fff;--panel2:#f8fbff;--border:#dae4ef;--text:#172b44;--muted:#607993;--track:#e4edf5;--shadow:0 10px 30px rgba(41,71,100,.05)}body.light .nav-item:hover,body.light .nav-item.active{background:#edf6fe;border-color:#d6eafb}body.light .panel-tag{background:#edf3fa}body.light .kpi{background:linear-gradient(135deg,#fff,#f9fcff)}body.light .donut-center{background:#fff}body.light th{background:#f4f8fc}body.light .refresh-btn{background:#e7f4ff;color:#166794}body.light .error{background:#fff0f2;color:#a42c45;border-color:#f8b4c0}
@media(max-width:1300px){.sidebar{width:200px}main{padding:32px 26px}.topbar{padding:0 26px}.donut-layout{gap:15px}.donut{width:145px;height:145px;min-width:145px}.donut-center{width:100px;height:100px}}@media(max-width:950px){.sidebar{width:70px;padding:22px 10px}.identity{padding:0 2px 25px}.identity-mark{font-size:24px}.identity-sub,.side-label,.nav-item span,.side-bottom{display:none}.nav-item{justify-content:center;padding:10px}.kpis{grid-template-columns:repeat(2,minmax(0,1fr))}.accounts-head{align-items:flex-start;flex-direction:column}.filters{width:100%}.filters input{flex:1}}@media(max-width:650px){.sidebar{display:none}.topbar{height:55px;padding:0 18px}.clock{display:none}main{padding:24px 15px 45px}.hero{display:block;margin-bottom:28px}.hero-meta{margin-top:21px;display:flex;text-align:left;flex-wrap:wrap;gap:10px;align-items:center}.refresh-line{margin:0}.kpis{gap:10px}.kpi{padding:18px 14px;min-height:125px}.kpi-num{font-size:21px}.signals,.chart-grid{grid-template-columns:1fr}.panel{padding:18px}.section-heading{align-items:flex-start;gap:8px}.scope{max-width:140px;text-align:right}.donut-layout{justify-content:flex-start}.filters input{min-width:100%}.filters select{flex:1}.top-actions{gap:10px}}
