:root{--bg:#0b1020;--panel:rgba(255,255,255,0.06);--panelBorder:rgba(255,255,255,0.10);--text:rgba(255,255,255,0.92);--muted:rgba(255,255,255,0.68);--muted2:rgba(255,255,255,0.55);--accent:#7dd3fc;--accent2:#a7f3d0;--danger:#fb7185;--shadow:0 10px 30px rgba(0,0,0,0.35);--radius:14px}*{box-sizing:border-box}body,html{height:100%}body{margin:0;font-family:ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,Noto Sans TC,PingFang TC,Microsoft JhengHei,Helvetica Neue,Arial,Apple Color Emoji,Segoe UI Emoji;color:var(--text);background:radial-gradient(1200px 700px at 15% 10%,rgba(125,211,252,.18),transparent 55%),radial-gradient(900px 600px at 85% 30%,rgba(167,243,208,.12),transparent 60%),var(--bg)}a{color:inherit}code{padding:.1rem .35rem;border:1px solid var(--panelBorder);border-radius:10px;background:rgba(0,0,0,.22)}.appHeader{position:-webkit-sticky;position:sticky;top:0;z-index:10;display:flex;justify-content:space-between;align-items:center;padding:16px 18px;border-bottom:1px solid rgba(255,255,255,.08);background:rgba(11,16,32,.86);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}.titleBlock h1{margin:0;font-size:18px;letter-spacing:.2px}.subtitle{margin-top:4px;font-size:12px;color:var(--muted)}.headerActions{display:flex;gap:10px}.layout{display:grid;grid-template-columns:330px 1fr;grid-gap:14px;gap:14px;padding:14px}@media (max-width:980px){.layout{grid-template-columns:1fr}}.panel{border:1px solid var(--panelBorder);border-radius:var(--radius);background:var(--panel);box-shadow:var(--shadow);overflow:hidden}.panelHeader{padding:14px 14px 10px;border-bottom:1px solid rgba(255,255,255,.07)}.panelTitle{font-weight:650}.panelHint{margin-top:4px;color:var(--muted);font-size:12px}.panelBody{padding:12px 14px 14px}.field{display:grid;grid-gap:6px;gap:6px}.fieldHint{font-size:11px;color:var(--muted2)}.rangeGrid{display:grid;grid-template-columns:1fr;grid-gap:10px;gap:10px;margin-top:10px}.fieldLabel{font-size:12px;color:var(--muted)}.input{width:100%;padding:10px;border-radius:12px;border:1px solid rgba(255,255,255,.12);background:rgba(0,0,0,.25);color:var(--text);outline:none}.input:focus{border-color:rgba(125,211,252,.65);box-shadow:0 0 0 4px rgba(125,211,252,.16)}.buttonRow{display:flex;flex-wrap:wrap;gap:8px;margin:10px 0 12px}.btn{cursor:pointer;border:1px solid rgba(255,255,255,.14);background:rgba(0,0,0,.24);color:var(--text);border-radius:12px;padding:10px 12px;font-size:13px;text-decoration:none;display:inline-flex;align-items:center;justify-content:center;gap:8px}.btn:hover{border-color:rgba(125,211,252,.5)}.btnSmall{padding:8px 10px;border-radius:12px;font-size:12px}.btnSecondary{border-color:rgba(167,243,208,.35)}.statGrid{display:grid;grid-template-columns:repeat(3,1fr);grid-gap:8px;gap:8px;margin:10px 0 12px}.stat{padding:10px;border:1px solid rgba(255,255,255,.1);border-radius:12px;background:rgba(0,0,0,.18)}.statLabel{font-size:11px;color:var(--muted)}.statValue{margin-top:5px;font-size:16px;font-weight:700}.unitList{display:grid;grid-gap:6px;gap:6px;max-height:calc(100vh - 320px);overflow:auto;padding-right:4px}.unitItem{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px;border:1px solid rgba(255,255,255,.1);border-radius:12px;background:rgba(0,0,0,.14)}.unitItem:hover{border-color:rgba(125,211,252,.35)}.unitLeft{display:flex;align-items:center;gap:10px;min-width:0}.unitName{font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:210px}.unitMeta{font-size:11px;color:var(--muted2)}.toggle{display:inline-flex;align-items:center;gap:8px}.toggle input{width:16px;height:16px}.content{display:grid;grid-gap:14px;gap:14px}.card{border:1px solid var(--panelBorder);border-radius:var(--radius);background:rgba(255,255,255,.04);box-shadow:var(--shadow);overflow:hidden}.cardTable{overflow:visible}.cardHeader{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding:14px;border-bottom:1px solid rgba(255,255,255,.07)}.cardTitle{font-weight:700}.cardHint{margin-top:4px;font-size:12px;color:var(--muted)}.cardBody{padding:14px}.chipRow{display:flex;flex-wrap:wrap;gap:8px}.chip{display:inline-flex;align-items:center;gap:8px;padding:8px 10px;border-radius:999px;border:1px solid rgba(255,255,255,.12);background:rgba(0,0,0,.18);font-size:12px;color:var(--muted)}.chip input{width:14px;height:14px}.chartWrap{padding:10px 12px 14px;height:380px}@media (max-width:980px){.chartWrap{height:320px}}.tableWrap{padding:12px 14px 14px}.tableScroll{max-height:70vh;max-height:min(70vh,520px);overflow:auto;overscroll-behavior:contain;border:1px solid rgba(255,255,255,.1);border-radius:12px;background:rgba(0,0,0,.08)}.table{width:100%;border-collapse:separate;border-spacing:0;overflow:visible;border:none;border-radius:0}.table td,.table th{padding:10px;border-bottom:1px solid rgba(255,255,255,.08);vertical-align:top;text-align:right;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.table th{text-align:right;font-size:12px;color:var(--muted);background:rgba(0,0,0,.22);position:-webkit-sticky;position:sticky;top:0;z-index:2}.table th:first-child{z-index:3}.table thead th:first-child{z-index:4}.table td:first-child,.table th:first-child{position:-webkit-sticky;position:sticky;left:0;background:rgba(0,0,0,.26);border-right:1px solid rgba(255,255,255,.08)}.table td:first-child{z-index:1}.table th:first-child{background:rgba(0,0,0,.3)}.table td:first-child,.table th:first-child{text-align:left}.thBtn{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:none;background:transparent;color:inherit;font:inherit;width:100%;padding:0;margin:0;cursor:pointer;display:flex;align-items:center;justify-content:flex-end;gap:6px}.table th:first-child .thBtn{justify-content:flex-start}.thBtn:hover{color:var(--text)}.thBtn:focus-visible{outline:none;box-shadow:0 0 0 3px rgba(125,211,252,.22);border-radius:8px}.sortIcon{font-size:11px;color:var(--muted2)}.table tr:last-child td{border-bottom:none}.steps{margin:0;padding-left:18px;color:var(--muted)}.note{margin-top:10px;padding:10px 12px;border-radius:12px;border:1px solid rgba(125,211,252,.25);background:rgba(125,211,252,.08);color:var(--text)}.empty{padding:14px;border-radius:12px;border:1px dashed rgba(255,255,255,.2);color:var(--muted);background:rgba(0,0,0,.12)}