@import"https://fonts.googleapis.com/css2?family=IBM+Plex+Sans:wght@400;500;600;700&family=IBM+Plex+Mono:wght@400;500;600&family=Noto+Sans+TC:wght@400;500;700&display=swap";:root{--ind-300:#a5b4fc;--ind-400:#818cf8;--ind-500:#6366f1;--ind-600:#4f46e5;--ind-700:#4338ca;--vio-400:#c084fc;--vio-500:#a855f7;--d-bg: #0a0e18;--d-bg-2: #0d1220;--d-surface: #121829;--d-surface-2: #171f33;--d-surface-3: #1d2740;--d-line: rgba(255,255,255,.07);--d-line-2: rgba(255,255,255,.12);--d-text: #eef2fb;--d-text-2: #aeb9d0;--d-text-3: #6b7693;--ok:#34d399;--ok-bg:rgba(16,185,129,.14);--ok-line:rgba(16,185,129,.3);--warn:#fbbf24;--warn-bg:rgba(245,158,11,.14);--warn-line:rgba(245,158,11,.3);--bad:#fb7185;--bad-bg:rgba(244,63,94,.14);--bad-line:rgba(244,63,94,.32);--info:#60a5fa;--info-bg:rgba(59,130,246,.14);--info-line:rgba(59,130,246,.3);--accent-bg:rgba(99,102,241,.16);--accent-line:rgba(129,140,248,.34);--r-sm:6px;--r-md:9px;--r-lg:13px;--r-xl:18px;--r-full:999px;--sh-sm: 0 1px 2px rgba(0,0,0,.4);--sh-md: 0 8px 24px -6px rgba(0,0,0,.55);--sh-pop:0 18px 50px -12px rgba(0,0,0,.7), 0 0 0 1px rgba(255,255,255,.05);--font: "IBM Plex Sans","Noto Sans TC",-apple-system,system-ui,sans-serif;--mono: "IBM Plex Mono",ui-monospace,monospace}*{box-sizing:border-box}html,body{margin:0;height:100%}body{font-family:var(--font);background:var(--d-bg);color:var(--d-text);font-size:14px;line-height:1.5;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}#root{height:100%}::-moz-selection{background:#818cf859}::selection{background:#818cf859}h1,h2,h3,h4,p{margin:0}button{font-family:inherit;cursor:pointer}input,textarea,select{font-family:inherit}.tnum{font-variant-numeric:tabular-nums}.mono{font-family:var(--mono)}*{scrollbar-width:thin;scrollbar-color:#2a3550 transparent}*::-webkit-scrollbar{width:10px;height:10px}*::-webkit-scrollbar-thumb{background:#2a3550;border-radius:99px;border:3px solid transparent;background-clip:content-box}*::-webkit-scrollbar-thumb:hover{background:#374466;background-clip:content-box}.btn{display:inline-flex;align-items:center;gap:7px;height:36px;padding:0 14px;border-radius:var(--r-md);border:1px solid transparent;font-size:13.5px;font-weight:600;white-space:nowrap;-webkit-user-select:none;-moz-user-select:none;user-select:none;transition:background .14s,border-color .14s,box-shadow .14s,color .14s,transform .04s}.btn:active{transform:translateY(.5px)}.btn:focus-visible{outline:none;box-shadow:0 0 0 3px #6366f166}.btn svg{width:16px;height:16px}.btn-sm{height:30px;padding:0 11px;font-size:12.5px;border-radius:var(--r-sm)}.btn-sm svg{width:14px;height:14px}.btn-lg{height:42px;padding:0 18px;font-size:14.5px}.btn-primary{background:var(--ind-500);color:#fff;box-shadow:0 1px #ffffff1f inset,var(--sh-sm)}.btn-primary:hover{background:var(--ind-400)}.btn-default{background:var(--d-surface-2);color:var(--d-text);border-color:var(--d-line-2)}.btn-default:hover{background:var(--d-surface-3);border-color:#fff3}.btn-ghost{background:transparent;color:var(--d-text-2)}.btn-ghost:hover{background:#ffffff0f;color:var(--d-text)}.btn-danger{background:transparent;color:var(--bad);border-color:var(--bad-line)}.btn-danger:hover{background:var(--bad-bg)}.btn-danger-solid{background:#e11d48;color:#fff}.btn-danger-solid:hover{background:#be123c}.btn:disabled{opacity:.42;pointer-events:none}.field{display:flex;flex-direction:column;gap:6px}.field>label{font-size:12.5px;font-weight:600;color:var(--d-text-2)}.field .hint{font-size:12px;color:var(--d-text-3)}.input,.textarea,.select{width:100%;background:var(--d-surface-3);border:1px solid var(--d-line-2);border-radius:var(--r-md);padding:9px 12px;font-size:13.5px;color:var(--d-text);transition:border-color .14s,box-shadow .14s}.input::-moz-placeholder,.textarea::-moz-placeholder{color:var(--d-text-3)}.input::placeholder,.textarea::placeholder{color:var(--d-text-3)}.input:focus,.textarea:focus,.select:focus{outline:none;border-color:var(--ind-500);box-shadow:0 0 0 3px #6366f140}.input:disabled{opacity:.6;cursor:not-allowed}select.select option{background:#121829;color:var(--d-text)}.card{background:var(--d-surface);border:1px solid var(--d-line);border-radius:var(--r-lg);box-shadow:var(--sh-sm)}.card-grad{background:linear-gradient(160deg,var(--d-surface-2),var(--d-surface))}.badge{display:inline-flex;align-items:center;gap:5px;height:22px;padding:0 8px;border-radius:var(--r-full);font-size:11.5px;font-weight:600;border:1px solid transparent}.badge-dot{width:6px;height:6px;border-radius:99px}.b-ok{background:var(--ok-bg);color:var(--ok);border-color:var(--ok-line)}.b-warn{background:var(--warn-bg);color:var(--warn);border-color:var(--warn-line)}.b-bad{background:var(--bad-bg);color:var(--bad);border-color:var(--bad-line)}.b-info{background:var(--info-bg);color:var(--info);border-color:var(--info-line)}.b-accent{background:var(--accent-bg);color:var(--ind-300);border-color:var(--accent-line)}.b-slate{background:#ffffff0f;color:var(--d-text-2);border-color:var(--d-line-2)}.tbl-wrap{overflow-x:auto}.tbl{width:100%;border-collapse:separate;border-spacing:0;min-width:680px}.tbl thead th{text-align:left;font-size:11px;font-weight:600;color:var(--d-text-3);text-transform:uppercase;letter-spacing:.05em;padding:11px 16px;border-bottom:1px solid var(--d-line);background:var(--d-bg-2);position:sticky;top:0;z-index:1}.tbl tbody td{padding:13px 16px;border-bottom:1px solid var(--d-line);font-size:13.5px;vertical-align:middle}.tbl tbody tr:last-child td{border-bottom:none}.tbl tbody tr{transition:background .1s}.tbl tbody tr:hover{background:#ffffff06}.divider{height:1px;background:var(--d-line);border:none;margin:0}.kbd{font-family:var(--mono);font-size:11px;background:var(--d-surface-3);border:1px solid var(--d-line-2);border-radius:5px;padding:1px 5px;color:var(--d-text-2)}.chip-mono{font-family:var(--mono);font-size:12px;color:var(--ind-300);background:var(--accent-bg);border:1px solid var(--accent-line);padding:2px 7px;border-radius:5px}.fade-in{animation:fadeIn .28s ease both}@keyframes fadeIn{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}.pop-in{animation:popIn .2s cubic-bezier(.2,.9,.3,1.2) both}@keyframes popIn{0%{opacity:0;transform:scale(.97)}to{opacity:1;transform:none}}@keyframes pulse{0%,to{opacity:1}50%{opacity:.4}}.live-dot{width:7px;height:7px;border-radius:99px;background:var(--ok);box-shadow:0 0 0 0 var(--ok);animation:pulse 2s infinite}.scrim{position:fixed;top:0;right:0;bottom:0;left:0;background:#05080fa8;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);z-index:60;display:flex;align-items:center;justify-content:center;animation:fadeIn .16s ease both}.grid-kpi{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:16px}.grid-gov{display:grid;grid-template-columns:1fr 1fr;gap:12px 22px}@media (max-width:900px){.grid-kpi{grid-template-columns:1fr 1fr}}@media (max-width:760px){.grid-2,.grid-gov{grid-template-columns:1fr}}@media (max-width:480px){.grid-kpi{grid-template-columns:1fr}}@media (max-width:900px){.ov-cols{grid-template-columns:1fr!important}}
