:root{--paper:#f6f5f0;--surface:#ffffff;--surface-2:#f0eee7;--surface-3:#e8e5dc;--line:#e4e0d6;--line-strong:#cbc5b7;--ink:#15191e;--ink-2:#3c424a;--muted:#6c727c;--muted-2:#9a9fa8;--brand:#0e6f63;--brand-ink:#0a5249;--brand-soft:#e2f1ed;--brand-line:#a9d6cd;--gold:#b8912a;--gold-soft:#f8f0d9;--ok:#1b7a49;--ok-soft:#e2f3e9;--warn:#a8640a;--warn-soft:#fbefdb;--danger:#b3261e;--danger-soft:#fbe7e5;--info:#2456a4;--info-soft:#e5edfa;--shadow-1:0 1px 2px rgba(20,25,30,0.06),0 1px 3px rgba(20,25,30,0.04);--shadow-2:0 4px 16px rgba(20,25,30,0.08),0 1px 3px rgba(20,25,30,0.05);--shadow-3:0 18px 48px rgba(20,25,30,0.16);--radius-s:6px;--radius:10px;--radius-l:14px;--sidebar:232px;--topbar:56px;--content-max:1360px;--bg:var(--paper);--bg-raised:var(--surface);--bg-overlay:var(--surface);--text:var(--ink);--accent:var(--brand);--logo-arm-top:#1d6a55;--logo-arm-bottom:#0a3d2f;--logo-ink:#0b3a2e}:root[data-theme=dark]{--logo-arm-top:#eef8f4;--logo-arm-bottom:#b9dccf;--logo-ink:#e9f3ef;--paper:#0f1216;--surface:#161a20;--surface-2:#1c2129;--surface-3:#232a33;--line:#252c35;--line-strong:#3a434e;--ink:#e9e8e3;--ink-2:#c3c7cc;--muted:#8a9099;--muted-2:#626973;--brand:#3db8a5;--brand-ink:#7fd6c8;--brand-soft:#143732;--brand-line:#1f5c53;--gold:#d6b04d;--gold-soft:#3a3015;--ok:#56c283;--ok-soft:#16352a;--warn:#e0a141;--warn-soft:#3a2c12;--danger:#ee7a71;--danger-soft:#3f1e1c;--info:#7aa6ec;--info-soft:#1a2a45;--shadow-1:0 1px 2px rgba(0,0,0,0.4);--shadow-2:0 4px 16px rgba(0,0,0,0.4);--shadow-3:0 18px 48px rgba(0,0,0,0.6)}*{box-sizing:border-box}body,html{margin:0;min-height:100%;background:var(--paper);color:var(--ink);font-family:var(--font-sans),system-ui,-apple-system,"Segoe UI",sans-serif;font-size:14px;line-height:1.5;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}body{font-feature-settings:"cv11","ss01","tnum"}a{color:inherit;text-decoration:none}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer}h1,h2,h3,h4{margin:0;font-weight:500}.display,h1,h2,h3,h4{letter-spacing:-.01em}.display{font-family:var(--font-display),Georgia,serif;font-weight:400;line-height:1.05}.mono,.num{font-family:var(--font-mono),ui-monospace,SFMono-Regular,Menlo,monospace;font-feature-settings:"tnum","zero"}.num{font-family:var(--font-sans),system-ui,sans-serif;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.eyebrow{font-size:11px;font-weight:500;letter-spacing:.08em;text-transform:uppercase}.eyebrow,.muted{color:var(--muted)}.small{font-size:12px}.shell{min-height:100vh;display:grid;grid-template-columns:var(--sidebar) 1fr}.shell.public{grid-template-columns:1fr}.sidebar{position:-webkit-sticky;position:sticky;top:0;height:100vh;border-right:1px solid var(--line);background:var(--surface);display:flex;flex-direction:column;padding:14px 12px;gap:4px}.sidebar .nav-group{margin-top:14px;padding:0 8px 6px}.nav-link{display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:var(--radius-s);color:var(--ink-2);font-size:13.5px;font-weight:500}.nav-link:hover{background:var(--surface-2);color:var(--ink)}.nav-link.active{background:var(--brand-soft);color:var(--brand-ink)}.nav-link svg{width:17px;height:17px;flex:none;opacity:.85}.topbar{position:-webkit-sticky;position:sticky;top:0;z-index:20;height:var(--topbar);display:flex;align-items:center;gap:14px;padding:0 24px;border-bottom:1px solid var(--line);background:color-mix(in srgb,var(--paper) 88%,transparent);-webkit-backdrop-filter:saturate(160%) blur(8px);backdrop-filter:saturate(160%) blur(8px)}.content{padding:28px 28px 72px;max-width:var(--content-max);width:100%}.content.wide{max-width:none}.page-header{display:flex;justify-content:space-between;align-items:flex-end;gap:24px;margin-bottom:22px}.page-title{font-size:30px}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow-1)}.card.pad{padding:16px 18px}.card.flat{box-shadow:none}.card-title{display:flex;justify-content:space-between;gap:12px;margin-bottom:12px}.btn,.card-title{align-items:center}.btn{display:inline-flex;justify-content:center;gap:8px;height:34px;padding:0 12px;border-radius:var(--radius-s);border:1px solid var(--line-strong);background:var(--surface);color:var(--ink);font-size:13px;font-weight:500;white-space:nowrap;transition:background .12s ease,border-color .12s ease,transform 60ms ease}.btn:hover{background:var(--surface-2)}.btn:active{transform:translateY(1px)}.btn:disabled{opacity:.55;cursor:default;transform:none}.btn svg{width:15px;height:15px}.btn.primary{background:var(--brand);border-color:var(--brand);color:#fff}.btn.primary:hover{background:var(--brand-ink);border-color:var(--brand-ink)}.btn.ghost{background:transparent;border-color:transparent;color:var(--ink-2)}.btn.ghost:hover{background:var(--surface-2);color:var(--ink)}.btn.danger{color:var(--danger);border-color:color-mix(in srgb,var(--danger) 40%,var(--line-strong))}.btn.sm{height:28px;padding:0 9px;font-size:12px}.btn.lg{height:42px;padding:0 18px;font-size:14px}.btn.icon{width:34px;padding:0}.input,.select,.textarea{width:100%;height:34px;padding:0 10px;border-radius:var(--radius-s);border:1px solid var(--line-strong);background:var(--surface);color:var(--ink);font-size:13px;outline:none;transition:border-color .12s ease,box-shadow .12s ease}.textarea{height:auto;padding:8px 10px;resize:vertical;line-height:1.45}.input:focus,.select:focus,.textarea:focus{border-color:var(--brand);box-shadow:0 0 0 3px var(--brand-soft)}.input.num{text-align:right}.field{display:flex;flex-direction:column;gap:5px}.field>span{font-size:12px;color:var(--muted)}.field .hint{font-size:11px;color:var(--muted-2)}.badge{display:inline-flex;align-items:center;gap:5px;height:20px;padding:0 7px;border-radius:999px;font-size:11px;font-weight:500;letter-spacing:.02em;background:var(--surface-2);color:var(--ink-2);border:1px solid transparent;white-space:nowrap}.badge.ok{background:var(--ok-soft);color:var(--ok)}.badge.warn{background:var(--warn-soft);color:var(--warn)}.badge.danger{background:var(--danger-soft);color:var(--danger)}.badge.info{background:var(--info-soft);color:var(--info)}.badge.brand{background:var(--brand-soft);color:var(--brand-ink)}.badge.gold{background:var(--gold-soft);color:var(--gold)}.badge.outline{background:transparent;border-color:var(--line-strong);color:var(--muted)}.kbd{display:inline-block;padding:1px 5px;border-radius:4px;border:solid var(--line-strong);border-width:1px 1px 2px;background:var(--surface);color:var(--muted);font-family:var(--font-mono),monospace;font-size:10.5px}.tabs{display:flex;gap:2px;border-bottom:1px solid var(--line);overflow-x:auto}.tab{background:transparent;border:none;border-bottom:2px solid transparent;margin-bottom:-1px;padding:10px 12px;color:var(--muted);font-size:13.5px;font-weight:500;white-space:nowrap}.tab.active,.tab:hover{color:var(--ink)}.tab.active{border-bottom-color:var(--brand)}.tab .count{margin-left:6px;color:var(--muted-2);font-size:11px}table.data{width:100%;border-collapse:collapse;font-size:13px}table.data th{position:-webkit-sticky;position:sticky;top:0;text-align:left;padding:8px 10px 8px 0;color:var(--muted);font-size:11px;font-weight:500;letter-spacing:.06em;text-transform:uppercase;background:var(--surface);white-space:nowrap}table.data td,table.data th{border-bottom:1px solid var(--line)}table.data td{padding:9px 10px 9px 0;vertical-align:top}table.data tr:last-child td{border-bottom:none}table.data tbody tr:hover td{background:color-mix(in srgb,var(--surface-2) 60%,transparent)}table.data td.r,table.data th.r{text-align:right}table.data td.mono,table.data td.num{font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.sub{color:var(--muted);font-size:11.5px;margin-top:2px}.stat{display:flex;flex-direction:column;gap:6px;padding:14px 16px;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);min-height:96px}.stat .value{font-size:24px;font-weight:500;letter-spacing:-.02em;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;line-height:1.1}.stat .value.sm{font-size:19px}.stat.brand{background:linear-gradient(160deg,var(--brand-soft),var(--surface) 70%);border-color:var(--brand-line)}.grid{display:grid;grid-gap:12px;gap:12px}.grid.cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid.cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid.cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.grid.cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.grid.cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.stack{flex-direction:column;gap:12px}.row,.stack{display:flex}.row{align-items:center;gap:8px}.row.between{justify-content:space-between}.row.wrap{flex-wrap:wrap}.divider{height:1px;background:var(--line);margin:4px 0}.empty{padding:36px 20px;text-align:center;color:var(--muted);border:1px dashed var(--line-strong);border-radius:var(--radius)}.empty strong{display:block;color:var(--ink);font-weight:500;margin-bottom:4px}.skeleton{border-radius:var(--radius-s);background:linear-gradient(90deg,var(--surface-2) 25%,var(--surface-3) 37%,var(--surface-2) 63%);background-size:400% 100%;animation:shimmer 1.3s ease-in-out infinite}@keyframes shimmer{0%{background-position:100% 0}to{background-position:0 0}}.notice{padding:10px 12px;border-radius:var(--radius-s);font-size:13px;border:1px solid var(--line);background:var(--surface-2)}.notice.danger{background:var(--danger-soft);border-color:color-mix(in srgb,var(--danger) 25%,transparent);color:var(--danger)}.notice.ok{background:var(--ok-soft);border-color:color-mix(in srgb,var(--ok) 25%,transparent);color:var(--ok)}.notice.warn{background:var(--warn-soft);border-color:color-mix(in srgb,var(--warn) 25%,transparent);color:var(--warn)}.notice.info{background:var(--info-soft);border-color:color-mix(in srgb,var(--info) 25%,transparent);color:var(--info)}.range{position:relative;height:6px;border-radius:999px;background:var(--surface-3)}.range .band{position:absolute;top:0;bottom:0;border-radius:999px;background:var(--brand-line)}.range .mark{position:absolute;top:-4px;width:14px;height:14px;margin-left:-7px;border-radius:50%;background:var(--brand);border:2px solid var(--surface);box-shadow:var(--shadow-1)}.drawer-backdrop{position:fixed;inset:0;z-index:40;background:rgba(15,18,22,.42);display:flex;justify-content:flex-end;animation:fade .12s ease}.drawer{width:480px;max-width:100%;height:100%;overflow:auto;background:var(--surface);border-left:1px solid var(--line);box-shadow:var(--shadow-3);padding:20px 22px;animation:slide .16s ease}@keyframes fade{0%{opacity:0}to{opacity:1}}@keyframes slide{0%{transform:translateX(24px);opacity:0}to{transform:none;opacity:1}}.cite{display:inline-block;vertical-align:middle;margin:0 3px;padding:0 6px;border-radius:999px;border:1px solid var(--brand-line);background:var(--brand-soft);color:var(--brand-ink);font-family:var(--font-mono),monospace;font-size:10px;line-height:16px;white-space:nowrap}.step{display:grid;grid-template-columns:18px 1fr;grid-gap:10px;gap:10px;align-items:start;padding:6px 0;font-size:13px}.step .dot{width:18px;height:18px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;font-size:11px;border:1px solid var(--line-strong);color:var(--muted);background:var(--surface)}.step .dot.ok{background:var(--ok-soft);border-color:var(--ok);color:var(--ok)}.step .dot.run{background:var(--brand-soft);border-color:var(--brand);color:var(--brand);animation:pulse 1.2s ease-in-out infinite}.step .dot.warn{background:var(--warn-soft);border-color:var(--warn);color:var(--warn)}.step .dot.bad{background:var(--danger-soft);border-color:var(--danger);color:var(--danger)}.step .dot.skip{color:var(--muted-2)}@keyframes pulse{0%,to{box-shadow:0 0 0 0 var(--brand-soft)}50%{box-shadow:0 0 0 5px var(--brand-soft)}}.map{width:100%;height:100%;border-radius:var(--radius);overflow:hidden;background:var(--surface-2)}.maplibregl-ctrl-attrib{font-size:10px}.command{display:flex;align-items:center;gap:10px;height:36px;padding:0 10px 0 12px;border-radius:8px;border:1px solid var(--line-strong);background:var(--surface);color:var(--ink);width:min(560px,100%);transition:border-color .12s ease,box-shadow .12s ease}.command:focus-within{border-color:var(--brand);box-shadow:0 0 0 3px var(--brand-soft)}.command input{flex:1 1;border:none;outline:none;background:transparent;font-size:13.5px}.command svg{width:16px;height:16px;color:var(--muted)}@media (max-width:960px){.shell{grid-template-columns:1fr}.sidebar{display:none}.content{padding:18px 16px 56px}.grid.cols-4,.grid.cols-5,.grid.cols-6{grid-template-columns:repeat(2,minmax(0,1fr))}.grid.cols-3{grid-template-columns:repeat(1,minmax(0,1fr))}}::selection{background:var(--brand-soft)}.auth{min-height:100vh;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr)}.auth-hero{display:flex;flex-direction:column;justify-content:space-between;padding:40px 56px;background:#15191e;color:#f3f1ea;--logo-arm-top:#eef8f4;--logo-arm-bottom:#b9dccf;--logo-ink:#f3f1ea}.auth-form{display:flex;align-items:center;justify-content:center;padding:40px}@media (max-width:900px){.auth{grid-template-columns:1fr}.auth-hero{padding:28px 24px;gap:24px}.auth-hero h1{font-size:34px!important}.auth-form{padding:28px 20px}.page-header{flex-direction:column;align-items:flex-start}}.command-panel{position:absolute;top:calc(100% + 6px);left:0;right:0;z-index:40;background:var(--surface);border:1px solid var(--line);border-radius:10px;box-shadow:var(--shadow-2);padding:6px;max-height:60vh;overflow:auto}.command-panel .notice{margin:4px}.command-panel ul{list-style:none;margin:0;padding:0}.command-panel li button{width:100%;text-align:left;background:transparent;border:none;border-radius:6px;padding:8px 12px;display:grid;grid-template-columns:1fr auto;grid-gap:12px;gap:12px;align-items:baseline;cursor:pointer;font:inherit;color:var(--ink)}.command-panel li button:focus-visible,.command-panel li button:hover{background:var(--surface-2)}