:root{--font: "Inter", "IBM Plex Sans", system-ui, -apple-system, "Segoe UI", sans-serif;--mono: "IBM Plex Mono", ui-monospace, "Cascadia Mono", monospace;--bg: #f3f5f9;--surface: #ffffff;--surface-2: #f7f9fc;--line: #e2e7ef;--line-strong: #ccd4e0;--ink: #0b1220;--ink-2: #44506a;--ink-3: #7a869a;--side: #0B1220;--side-2: #16213a;--side-line: #1c2a45;--side-ink: #c8d1dc;--side-ink-dim: #7b8798;--side-ink-strong: #ffffff;--accent: #2563EB;--accent-ink: #ffffff;--accent-soft: #e8efff;--accent-line: #b7cbfa;--brand-2: #10B981;--brand-cyan: #06B6D4;--good: #137a3e;--good-soft: #e3f4e8;--warn: #9a6100;--warn-soft: #fff3d6;--bad: #b42318;--bad-soft: #fde8e6;--info: #3b5bcc;--info-soft: #e8edfc;--series-1: #2563EB;--series-2: #10B981;--radius: 8px;--shadow: 0 1px 2px rgba(16,20,24,.06), 0 4px 16px rgba(16,20,24,.06);color-scheme:light}@media(prefers-color-scheme:dark){:root:not([data-theme=light]){--bg: #0a101c;--surface: #111a2b;--surface-2: #152033;--line: #22304a;--line-strong: #2f3f5e;--ink: #e7ecf4;--ink-2: #aeb9ca;--ink-3: #7f8ca1;--side: #070c16;--side-2: #121c30;--accent: #3B82F6;--accent-soft: #15243d;--accent-line: #24406e;--good: #4cc47e;--good-soft: #12301e;--warn: #e0a83a;--warn-soft: #332608;--bad: #ff7b6e;--bad-soft: #3a1714;--info: #8aa4ff;--info-soft: #1a2348;--series-1: #3B82F6;--series-2: #10B981;color-scheme:dark}}:root[data-theme=dark]{--bg: #0a101c;--surface: #111a2b;--surface-2: #152033;--line: #22304a;--line-strong: #2f3f5e;--ink: #e7ecf4;--ink-2: #aeb9ca;--ink-3: #7f8ca1;--side: #070c16;--side-2: #121c30;--accent: #3B82F6;--accent-soft: #15243d;--accent-line: #24406e;--good: #4cc47e;--good-soft: #12301e;--warn: #e0a83a;--warn-soft: #332608;--bad: #ff7b6e;--bad-soft: #3a1714;--info: #8aa4ff;--info-soft: #1a2348;--series-1: #3B82F6;--series-2: #10B981;color-scheme:dark}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;font:14px/1.45 var(--font);color:var(--ink);background:var(--bg);-webkit-font-smoothing:antialiased}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}h1,h2,h3,h4{margin:0;font-weight:600;letter-spacing:-.01em}h1{font-size:20px}h2{font-size:16px}h3{font-size:14px}.mono{font-family:var(--mono);font-size:12.5px}.muted{color:var(--ink-3)}.small{font-size:12px}.right{text-align:right}.nowrap{white-space:nowrap}.row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.grow{flex:1}.col{display:flex;flex-direction:column;gap:12px}.spread{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap}.shell{display:grid;grid-template-columns:236px 1fr;min-height:100%}.side{background:var(--side);color:var(--side-ink);display:flex;flex-direction:column;position:sticky;top:0;height:100vh;overflow-y:auto}.brand{padding:16px 16px 12px;display:flex;gap:10px;align-items:center;border-bottom:1px solid var(--side-line)}.brand-logo{width:40px;height:40px;border-radius:9px;background:#fff;display:grid;place-items:center;padding:4px;flex:none}.brand-logo img{max-width:100%;max-height:100%;object-fit:contain}.brand-mark{width:30px;height:30px;border-radius:7px;background:var(--accent);display:grid;place-items:center;color:#fff;font-weight:700;font-family:var(--mono);font-size:13px}.brand-name{font-weight:600;color:var(--side-ink-strong);font-size:14px;line-height:1.15}.brand-sub{font-size:11px;color:var(--side-ink-dim)}.nav{padding:8px 8px 24px}.nav-group{margin-top:14px;padding:0 10px 4px;font-size:10.5px;text-transform:uppercase;letter-spacing:.08em;color:var(--side-ink-dim);font-weight:600}.nav a{display:flex;align-items:center;gap:10px;padding:7px 10px;border-radius:6px;color:var(--side-ink);font-size:13.5px;text-decoration:none}.nav a:hover{background:var(--side-2);color:var(--side-ink-strong)}.nav a.active{background:var(--side-2);color:var(--side-ink-strong);box-shadow:inset 3px 0 0 var(--accent)}.nav svg{flex:none;opacity:.85}.main{min-width:0;display:flex;flex-direction:column}.topbar{height:54px;background:var(--surface);border-bottom:1px solid var(--line);display:flex;align-items:center;padding:0 20px;gap:12px;position:sticky;top:0;z-index:20}.topbar .crumb{font-weight:600}.content{padding:20px;max-width:1400px;width:100%}.support-bar{background:var(--warn-soft);color:var(--warn);padding:6px 20px;font-size:12.5px;border-bottom:1px solid var(--line)}.menu-btn{display:none}@media(max-width:900px){.shell{grid-template-columns:1fr}.side{position:fixed;inset:0 auto 0 0;width:260px;z-index:50;transform:translate(-100%);transition:transform .18s}.side.open{transform:none;box-shadow:0 0 0 100vmax #0006}.menu-btn{display:inline-flex}.content{padding:14px 16px}}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius)}.card-h{padding:12px 16px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;gap:8px}.card-b{padding:16px}.page-h{display:flex;align-items:flex-end;justify-content:space-between;gap:12px;margin-bottom:16px;flex-wrap:wrap}.page-h .sub{color:var(--ink-3);font-size:13px;margin-top:2px}.btn{display:inline-flex;align-items:center;gap:6px;height:34px;padding:0 12px;border-radius:6px;border:1px solid var(--line-strong);background:var(--surface);color:var(--ink);font:500 13px var(--font);cursor:pointer;white-space:nowrap;text-decoration:none}.btn:hover{background:var(--surface-2);text-decoration:none}.btn:disabled{opacity:.5;cursor:not-allowed}.btn.primary{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}.btn.primary:hover{filter:brightness(1.06)}.btn.danger{color:var(--bad);border-color:color-mix(in srgb,var(--bad) 40%,var(--line))}.btn.danger:hover{background:var(--bad-soft)}.btn.ghost{border-color:transparent;background:transparent}.btn.ghost:hover{background:var(--surface-2)}.btn.sm{height:28px;padding:0 9px;font-size:12.5px}.btn.icon{width:34px;padding:0;justify-content:center}.field{display:flex;flex-direction:column;gap:4px;min-width:0}.field label{font-size:12px;font-weight:500;color:var(--ink-2)}.field .help{font-size:11.5px;color:var(--ink-3)}.req:after{content:" *";color:var(--bad)}.input,select.input,textarea.input{height:34px;padding:0 10px;border:1px solid var(--line-strong);border-radius:6px;background:var(--surface);color:var(--ink);font:13.5px var(--font);width:100%;outline:none}textarea.input{height:auto;min-height:84px;padding:8px 10px;resize:vertical}.input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.check{display:inline-flex;align-items:center;gap:8px;cursor:pointer;font-size:13.5px;user-select:none}.check input{width:16px;height:16px;accent-color:var(--accent)}.form-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px 14px}.form-grid .c2{grid-column:span 2}.form-grid .c3{grid-column:1 / -1}@media(max-width:720px){.form-grid{grid-template-columns:1fr}.form-grid .c2,.form-grid .c3{grid-column:auto}}.table-wrap{overflow-x:auto}table.t{width:100%;border-collapse:collapse;font-size:13px}.t th{text-align:left;font-weight:600;font-size:11.5px;text-transform:uppercase;letter-spacing:.04em;color:var(--ink-3);padding:9px 12px;border-bottom:1px solid var(--line);background:var(--surface-2);white-space:nowrap}.t td{padding:9px 12px;border-bottom:1px solid var(--line);vertical-align:middle}.t tr.click{cursor:pointer}.t tr.click:hover td{background:var(--surface-2)}.t td.num,.t th.num{text-align:right;font-variant-numeric:tabular-nums}.t tr:last-child td{border-bottom:0}.badge{display:inline-flex;align-items:center;gap:5px;height:22px;padding:0 8px;border-radius:999px;font-size:11.5px;font-weight:500;background:var(--surface-2);color:var(--ink-2);border:1px solid var(--line);white-space:nowrap}.badge:before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor;opacity:.8}.badge.plain:before{display:none}.badge.good{background:var(--good-soft);color:var(--good);border-color:transparent}.badge.warn{background:var(--warn-soft);color:var(--warn);border-color:transparent}.badge.bad{background:var(--bad-soft);color:var(--bad);border-color:transparent}.badge.info{background:var(--info-soft);color:var(--info);border-color:transparent}.badge.accent{background:var(--accent-soft);color:var(--accent);border-color:transparent}.toolbar{display:flex;gap:8px;align-items:center;flex-wrap:wrap;padding:12px 16px;border-bottom:1px solid var(--line)}.search{position:relative}.search input{padding-left:32px;width:260px}.search svg{position:absolute;left:10px;top:9px;color:var(--ink-3)}@media(max-width:600px){.search input{width:100%}.search{flex:1}}.pager{display:flex;align-items:center;justify-content:space-between;padding:10px 16px;border-top:1px solid var(--line);font-size:12.5px;color:var(--ink-3)}.empty{padding:40px 16px;text-align:center;color:var(--ink-3)}.grid{display:grid;gap:14px}.g2{grid-template-columns:repeat(2,minmax(0,1fr))}.g3{grid-template-columns:repeat(3,minmax(0,1fr))}.g4{grid-template-columns:repeat(4,minmax(0,1fr))}@media(max-width:1100px){.g4,.g3{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:700px){.g2,.g3,.g4{grid-template-columns:1fr}}.stat{padding:14px 16px}.stat .k{font-size:12px;color:var(--ink-3);font-weight:500}.stat .v{font-size:24px;font-weight:600;margin-top:4px;font-variant-numeric:tabular-nums;letter-spacing:-.02em}.stat .d{font-size:12px;color:var(--ink-3);margin-top:2px}.stat.is-alert .v{color:var(--bad)}.kv{display:grid;grid-template-columns:160px 1fr;gap:8px 14px;font-size:13.5px}.kv dt{color:var(--ink-3)}.kv dd{margin:0;min-width:0;overflow-wrap:anywhere}@media(max-width:600px){.kv{grid-template-columns:1fr}.kv dd{margin-bottom:6px}}.tabs{display:flex;gap:2px;border-bottom:1px solid var(--line);margin-bottom:14px;overflow-x:auto}.tabs button{border:0;background:none;padding:9px 12px;font:500 13.5px var(--font);color:var(--ink-3);cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-1px;white-space:nowrap}.tabs button.on{color:var(--ink);border-bottom-color:var(--accent)}.overlay{position:fixed;inset:0;background:#0a0c0e73;z-index:100;display:flex;justify-content:flex-end}.drawer{background:var(--surface);width:min(860px,100%);height:100%;display:flex;flex-direction:column;box-shadow:-8px 0 30px #00000026;animation:slide .16s ease-out}@keyframes slide{0%{transform:translate(30px);opacity:.6}}.drawer-h{padding:14px 20px;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;align-items:center}.drawer-b{padding:20px;overflow-y:auto;flex:1}.drawer-f{padding:12px 20px;border-top:1px solid var(--line);display:flex;justify-content:flex-end;gap:8px}.modal-wrap{position:fixed;inset:0;background:#0a0c0e73;z-index:110;display:grid;place-items:center;padding:16px}.modal{background:var(--surface);border-radius:10px;width:min(520px,100%);box-shadow:var(--shadow);max-height:90vh;display:flex;flex-direction:column}.modal.wide{width:min(760px,100%)}.modal-h{padding:14px 18px;border-bottom:1px solid var(--line);font-weight:600}.modal-b{padding:18px;overflow-y:auto}.modal-f{padding:12px 18px;border-top:1px solid var(--line);display:flex;justify-content:flex-end;gap:8px}.toasts{position:fixed;bottom:16px;right:16px;z-index:200;display:flex;flex-direction:column;gap:8px}.toast{background:var(--ink);color:var(--surface);padding:10px 14px;border-radius:8px;font-size:13px;box-shadow:var(--shadow);max-width:380px}.toast.err{background:var(--bad);color:#fff}.alert{padding:10px 12px;border-radius:6px;font-size:13px;border:1px solid}.alert.err{background:var(--bad-soft);color:var(--bad);border-color:transparent}.alert.info{background:var(--info-soft);color:var(--info);border-color:transparent}.alert.warn{background:var(--warn-soft);color:var(--warn);border-color:transparent}.refsel{position:relative}.refsel .opts{position:absolute;top:100%;left:0;right:0;z-index:30;background:var(--surface);border:1px solid var(--line-strong);border-radius:6px;margin-top:2px;max-height:240px;overflow-y:auto;box-shadow:var(--shadow)}.refsel .opt{padding:7px 10px;cursor:pointer;font-size:13px}.refsel .opt:hover,.refsel .opt.hl{background:var(--accent-soft)}.refsel .clear{position:absolute;right:6px;top:6px}.timeline{display:flex;flex-direction:column;gap:10px}.tl-item{border:1px solid var(--line);border-radius:8px;padding:10px 12px;background:var(--surface)}.tl-item.internal{background:var(--warn-soft);border-color:transparent}.tl-item.system{background:var(--surface-2)}.tl-meta{font-size:12px;color:var(--ink-3);margin-bottom:4px;display:flex;gap:8px;flex-wrap:wrap}.pre{white-space:pre-wrap}.perm-table td,.perm-table th{text-align:center}.perm-table td:first-child,.perm-table th:first-child{text-align:left}.module-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:10px}.module-card{border:1px solid var(--line);border-radius:8px;padding:12px;display:flex;gap:10px;cursor:pointer;background:var(--surface)}.module-card.on{border-color:var(--accent-line);background:var(--accent-soft)}.module-card input{margin-top:2px;accent-color:var(--accent);width:16px;height:16px}.module-card .t1{font-weight:600;font-size:13.5px}.module-card .t2{font-size:12px;color:var(--ink-3)}.login-wrap{min-height:100%;display:grid;grid-template-columns:1fr 1fr}.login-art{background:#0b1220;color:#fff;padding:48px;display:flex;flex-direction:column;justify-content:space-between;position:relative;overflow:hidden}.login-art .grid-bg{position:absolute;inset:0;background-image:linear-gradient(rgba(255,255,255,.04) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.04) 1px,transparent 1px);background-size:32px 32px}.login-art h2{font-size:30px;line-height:1.15;max-width:440px;position:relative;letter-spacing:-.02em}.login-art .glow{position:absolute;inset:auto -20% -30% auto;width:70%;height:70%;background:radial-gradient(closest-side,rgba(6,182,212,.22),rgba(37,99,235,.12) 55%,transparent);pointer-events:none}.login-art p{color:#94a3b8;max-width:420px;position:relative}.login-form{display:grid;place-items:center;padding:32px 16px;background:var(--surface)}.login-form form{width:min(360px,100%);display:flex;flex-direction:column;gap:14px}@media(max-width:860px){.login-wrap{grid-template-columns:1fr}.login-art{display:none}}.chart{width:100%}.chart .bar1{fill:var(--series-1)}.chart .bar2{fill:var(--series-2)}.chart .axis{fill:var(--ink-3);font-size:10.5px;font-family:var(--font)}.chart .gridl{stroke:var(--line)}.legend{display:flex;gap:14px;font-size:12px;color:var(--ink-2)}.legend i{display:inline-block;width:10px;height:10px;border-radius:2px;margin-right:5px;vertical-align:-1px}.tip{position:fixed;pointer-events:none;background:var(--ink);color:var(--surface);font-size:12px;padding:6px 9px;border-radius:6px;z-index:300;white-space:nowrap}.hbar{height:8px;border-radius:4px;background:var(--surface-2);overflow:hidden}.hbar>div{height:100%;background:var(--series-1);border-radius:4px}.sla-line{font-size:12px}.code-box{font-family:var(--mono);font-size:12px;background:var(--surface-2);border:1px solid var(--line);border-radius:6px;padding:8px 10px;overflow-wrap:anywhere}.section-title{font-size:12px;text-transform:uppercase;letter-spacing:.06em;color:var(--ink-3);font-weight:600;margin:18px 0 8px}.btn.menu-btn{display:none}@media(max-width:900px){.btn.menu-btn{display:inline-flex}}.kv.narrow{grid-template-columns:104px 1fr;font-size:13px}@media(max-width:700px){.g4{grid-template-columns:repeat(2,minmax(0,1fr))}.stat .v{font-size:19px}.stat{padding:12px}.topbar .small{display:none}}.form-section{margin-top:10px;padding-top:10px;border-top:1px solid var(--line);font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--ink-2)}.form-section:first-child{margin-top:0;padding-top:0;border-top:0}.fiscal-tot{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:8px 16px}.fiscal-tot div{display:flex;flex-direction:column}.fiscal-tot span{font-size:11.5px;color:var(--ink-3)}.fiscal-tot b{font-variant-numeric:tabular-nums}.cert-box{display:flex;gap:12px;align-items:flex-start;flex-wrap:wrap}.login-tenant-logo{background:#fff;border-radius:12px;padding:8px;height:64px;min-width:64px;display:grid;place-items:center}.login-tenant-logo img{max-height:48px;max-width:200px;object-fit:contain}.login-brand-top{display:none}@media(max-width:860px){.login-brand-top{display:flex;justify-content:center;margin-bottom:4px}}.addr-input{display:flex;align-items:stretch;border:1px solid var(--line-strong);border-radius:6px;overflow:hidden;background:var(--surface)}.addr-input .input{border:0;box-shadow:none!important;border-radius:0}.addr-input span{display:flex;align-items:center;padding:0 10px;background:var(--surface-2);color:var(--ink-3);font-size:13px;border-left:1px solid var(--line);white-space:nowrap}.addr-input:focus-within{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.brand-preview{display:flex;gap:16px;flex-wrap:wrap;align-items:center}.brand-swatch{display:flex;align-items:center;gap:8px}.brand-swatch input[type=color]{width:44px;height:34px;border:1px solid var(--line-strong);border-radius:6px;padding:2px;background:var(--surface);cursor:pointer}.logo-drop{width:160px;height:96px;border:1px dashed var(--line-strong);border-radius:8px;display:grid;place-items:center;background:#fff;overflow:hidden}.logo-drop img{max-width:90%;max-height:80%;object-fit:contain}.mini-side{width:220px;border-radius:8px;overflow:hidden;border:1px solid var(--line)}.mini-side .top{background:var(--side);color:var(--side-ink-strong);padding:10px;display:flex;gap:8px;align-items:center;font-weight:600;font-size:13px}.mini-side .it{background:var(--side);color:var(--side-ink);padding:6px 10px;font-size:12px}.mini-side .it.on{background:var(--side-2);box-shadow:inset 3px 0 0 var(--accent);color:var(--side-ink-strong)}
.btn.ghost.primary { background: var(--accent-soft); color: var(--accent); font-weight: 600; }
