/* Semantic surfaces and accent tokens, following the shadcn/ui theme model. */
:root{--background:#eef2f7;--card:#fff;--foreground:#162438;--primary:#0f172a;--primary-foreground:#fff;--accent:#e8eef7;--accent-foreground:#243650;--ring:#64748b;--sidebar:#e8edf5;--panel:#f4f7fb;--table-header:#eaf0f7;--chart-1:#2563eb;--chart-2:#0d9488;--chart-3:#8b5cf6;--chart-4:#f59e0b;--primary-hover:#25354b}
body{--ink:var(--foreground);--surface:var(--card);--soft:var(--panel);--bg:var(--background);background:var(--background);color:var(--foreground)}
body[data-accent=blue]{--primary:#1d4ed8;--primary-hover:#1e40af;--accent:#dbeafe;--accent-foreground:#1e40af;--ring:#3b82f6}
body[data-theme=dark]{--background:#080f1d;--card:#152136;--foreground:#e6edf8;--muted:#a2b3cb;--line:#30415a;--sidebar:#101b2e;--panel:#1c2b42;--table-header:#22334c;--accent:#283950;--accent-foreground:#e6edf8;--primary:#e2e8f0;--primary-foreground:#0f172a;--primary-hover:#fff;--ring:#94a3b8;--ink:var(--foreground);--surface:var(--card);--soft:var(--panel);--bg:var(--background);--chart-1:#60a5fa;--chart-2:#2dd4bf;--chart-3:#a78bfa;--chart-4:#fbbf24}
body[data-theme=dark][data-accent=blue]{--primary:#3b82f6;--primary-foreground:#fff;--primary-hover:#2563eb;--accent:#183968;--accent-foreground:#bfdbfe;--ring:#60a5fa}
.sidebar{background:var(--sidebar);border-right:1px solid var(--line)}.brand,.profile,.sidebar-foot{background:transparent}.brand strong,.profile strong{color:var(--foreground)}.nav-item.active{background:var(--accent);color:var(--accent-foreground);box-shadow:inset 3px 0 var(--primary);font-weight:600}.nav-item:hover{background:var(--panel);color:var(--foreground)}.nav-item .count{background:var(--primary);color:var(--primary-foreground)}
.main,.content{background:var(--background)}.topbar{background:var(--card);border-bottom:1px solid var(--line)}.top-search,.top-avatar,.avatar{background:var(--panel);color:var(--muted)}.page-head{padding:2px 0 5px}.page-head h1{color:var(--foreground)}.card,.table-card{background:var(--card);box-shadow:0 2px 5px #0f172a06}.card-title{background:var(--panel);border-bottom:1px solid var(--line);padding:14px 20px;border-radius:11px 11px 0 0}
.btn.primary,.btn.dark,body[data-theme=dark] .btn.primary,.step.active .num,.step.done .num,body[data-theme=dark] .step.active .num{background:var(--primary);border-color:var(--primary);color:var(--primary-foreground)}.btn.primary:hover,.btn.dark:hover{background:var(--primary-hover);border-color:var(--primary-hover)}.btn:not(.primary):not(.danger):not(.ghost):hover{background:var(--accent);color:var(--accent-foreground)}.btn.ghost{color:var(--ink)}input[type=checkbox]:checked{background:var(--primary);border-color:var(--primary)}input[type=checkbox]:checked:after{border-color:var(--primary-foreground)}
.tabs,body[data-theme=dark] .tabs{background:var(--table-header);border:1px solid var(--line);padding:3px;gap:3px}.tab.active,body[data-theme=dark] .tab.active{color:var(--accent-foreground);background:var(--card);box-shadow:0 1px 3px #0f172a16;border:0}.tab{border:0}.input:focus,.select:focus,.textarea:focus{border-color:var(--ring);box-shadow:0 0 0 3px color-mix(in srgb,var(--ring) 18%,transparent)}button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline-color:var(--ring)}
.table th,.table th:last-child,body[data-theme=dark] .table th{background:var(--table-header)}.table td:last-child{background:var(--card)}.table tbody tr:nth-child(even){background:color-mix(in srgb,var(--panel) 50%,var(--card))}.table tbody tr:hover,.table tbody tr:hover td:last-child{background:var(--accent)}.table tr.selected{background:var(--accent)}.policy-filter-row,.snapshot-controls,.mapping-guide,.tree-directory,.directory-panel{background:var(--panel)}
.metric{border-top:3px solid var(--chart-1);padding-top:19px}.grid>.card:nth-child(2) .metric{border-top-color:var(--chart-2)}.grid>.card:nth-child(3) .metric{border-top-color:var(--chart-3)}.grid>.card:nth-child(4) .metric{border-top-color:var(--chart-4)}.metric .metric-icon{color:var(--primary);background:transparent;border:0}.bar-unit{background:var(--primary)}
.drawer,.modal{background:var(--card)}.drawer-body{background:var(--background)}.drawer-head,.modal-head,.drawer-foot,.modal-foot{background:var(--card)}.drawer .form-grid,.drawer .detail-list,.policy-city-scope,.rule-summary,.member-config,.settings-content{background:var(--card);border:1px solid var(--line);border-radius:9px;padding:16px}.drawer .form-grid .field{margin-bottom:0}.drawer .table-wrap,.drawer .check-set{background:var(--card)}.rule-flow-condition,.rule-flow-group,.formula-condition{background:var(--card);color:var(--ink)}.rule-flow-caption,.formula-toolbar,.formula-workspace>.metric-directory,.formula-test{background:var(--panel)}.settings-layout{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:20px}.settings-nav{background:transparent}.settings-nav .active{background:var(--accent);color:var(--accent-foreground)}
.login-template,.login-panel{background:var(--card)}.login-template .login-art{background:var(--sidebar)}.login-preview,.preview-main{background:var(--card);color:var(--ink)}.preview-side{background:var(--panel)}.login-box h2,.login-logo,.preview-main h3{color:var(--ink)}
.theme-options{display:grid;grid-template-columns:1fr 1fr;gap:12px}.theme-option{display:flex;align-items:center;gap:12px;flex-wrap:wrap;text-align:left;padding:18px;border:1px solid var(--line);border-radius:10px;background:var(--card);color:var(--ink)}.theme-option.chosen{border-color:var(--primary);box-shadow:0 0 0 1px var(--primary);background:var(--accent)}.theme-option small{width:100%;padding-left:32px;color:var(--muted)}.theme-swatch{width:20px;height:20px;border-radius:6px;background:#0f172a;box-shadow:0 0 0 1px #ffffff50}.theme-swatch.blue{background:#1d4ed8}.theme-preview{padding:18px;background:var(--card);border:1px solid var(--line);border-radius:10px;display:flex;gap:10px;align-items:center;flex-wrap:wrap}.theme-preview>div{flex:1;min-width:160px}.theme-preview small{display:block;color:var(--muted);margin-top:5px;font-size:12px}
#prototype-watermark{position:fixed;inset:0;z-index:2147483647;pointer-events:none;user-select:none;background-repeat:repeat;background-size:260px 180px;opacity:.13}body[data-theme=dark] #prototype-watermark{opacity:.15}
@media print{#prototype-watermark{position:fixed;display:block!important;opacity:.18;print-color-adjust:exact;-webkit-print-color-adjust:exact}}
