:root{--text:#5f5868;--text-h:#08060d;--bg:#fff;--bg-soft:#f6f5f1;--border:#e3e2e6;--accent:#8a2be2;--accent-fg:#fff;--accent-bg:#8a2be21a;--accent-border:#8a2be280;--success:#15803d;--warning:#a35a00;--danger:#c0262b;--danger-fg:#fff;--info:#1d4ed8;--shadow:#0000001a 0 10px 15px -3px, #0000000d 0 4px 6px -2px;--radius:10px;--sans:system-ui, "Segoe UI", Roboto, sans-serif;--mono:ui-monospace, Consolas, monospace;font:15px/1.5 var(--sans);--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark;color:var(--text);background:var(--bg);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial;--text:#a4a8b3;--text-h:#f3f4f6;--bg:#16171d;--bg-soft:#1e1f27;--border:#2e303a;--accent:#c084fc;--accent-fg:#1e0a33;--accent-bg:#c084fc26;--accent-border:#c084fc80;--success:#4ade80;--warning:#fbbf24;--danger:#f87171;--danger-fg:#1c0a0a;--info:#60a5fa;--shadow:#0006 0 10px 15px -3px, #00000040 0 4px 6px -2px}}*,:before,:after{box-sizing:border-box}body{background:var(--bg);color:var(--text);margin:0}#root{min-height:100svh}h1,h2,h3{color:var(--text-h);letter-spacing:-.01em;margin:0;font-weight:600}p{margin:0}a{color:var(--accent)}code{font-family:var(--mono);background:var(--bg-soft);color:var(--text-h);border-radius:4px;padding:2px 6px;font-size:.9em}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}.skip-link{z-index:200;background:var(--accent);color:var(--accent-fg);border-radius:8px;padding:8px 14px;font-size:14px;text-decoration:none;transition:top .15s;position:absolute;top:-48px;left:12px}.skip-link:focus{top:12px}.btn{min-height:38px;font:inherit;border:1px solid var(--border);background:var(--bg);color:var(--text-h);cursor:pointer;white-space:nowrap;border-radius:8px;justify-content:center;align-items:center;gap:6px;padding:7px 14px;font-size:14px;font-weight:500;transition:background .15s,border-color .15s,filter .15s;display:inline-flex}.btn:hover{background:var(--bg-soft)}.btn:active{filter:brightness(.95)}.btn:disabled{opacity:.55;cursor:not-allowed}.btn-primary{background:var(--accent);border-color:var(--accent);color:var(--accent-fg)}.btn-primary:hover{background:var(--accent);filter:brightness(.93)}.btn-danger{background:var(--danger);border-color:var(--danger);color:var(--danger-fg)}.btn-danger:hover{background:var(--danger);filter:brightness(.93)}.btn-sm{min-height:32px;padding:4px 10px;font-size:13px}.btn-icon{width:32px;min-width:32px;padding:0}.btn .icon{flex:none}.icon{vertical-align:middle;width:18px;height:18px;display:inline-block}.input,.select{font:inherit;border:1px solid var(--border);background:var(--bg);min-height:38px;color:var(--text-h);border-radius:8px;width:100%;padding:7px 10px;font-size:14px;transition:border-color .15s,box-shadow .15s}.input::placeholder{color:var(--text);opacity:.8}.input:focus,.select:focus{border-color:var(--accent-border);box-shadow:0 0 0 3px var(--accent-bg);outline:none}.input:disabled,.select:disabled{background:var(--bg-soft);cursor:not-allowed}.field{text-align:left;flex-direction:column;gap:6px;margin-bottom:14px;display:flex}.field>label{color:var(--text-h);font-size:13px;font-weight:500}.field .hint{color:var(--text);font-size:12.5px;line-height:1.45}.check{color:var(--text-h);cursor:pointer;align-items:center;gap:8px;font-size:14px;display:flex}.check input{width:16px;height:16px;accent-color:var(--accent);margin:0}.form-row{grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:0 14px;display:grid}.input.is-invalid,.select.is-invalid{border-color:var(--danger);box-shadow:0 0 0 1px color-mix(in srgb, var(--danger) 35%, transparent)}.field-error{color:var(--danger);font-size:12.5px}.login-wrap{background:radial-gradient(60% 55% at 18% 12%, var(--accent-bg), transparent 70%), radial-gradient(50% 50% at 88% 88%, var(--accent-bg), transparent 70%), var(--bg-soft);place-items:center;min-height:100svh;padding:24px;display:grid;position:relative;overflow:hidden}.login-card{z-index:1;border:1px solid var(--border);width:384px;max-width:100%;box-shadow:var(--shadow);background:var(--bg);text-align:left;border-radius:18px;padding:36px 34px 30px;position:relative}.login-brand{align-items:center;gap:10px;margin-bottom:22px;display:flex}.login-logo,.brand-logo{color:#fff;width:40px;height:40px;box-shadow:0 4px 12px var(--accent-bg);background:linear-gradient(140deg,#a855f7,#6d28d9);border-radius:11px;flex:none;place-items:center;display:grid}.login-brand-name{color:var(--text-h);font-size:16px;font-weight:600}.login-card h1{margin:0 0 6px;font-size:25px}.login-card .sub{margin:0 0 26px;font-size:14px}.login-submit{width:100%;min-height:42px;margin-top:6px;font-size:15px}.login-foot{text-align:center;margin-top:18px;font-size:12.5px}.shell{grid-template-columns:236px minmax(0,1fr);min-height:100svh;display:grid}.sidebar{border-right:1px solid var(--border);background:var(--bg);flex-direction:column;gap:2px;height:100svh;padding:18px 12px;display:flex;position:sticky;top:0;overflow-y:auto}.sidebar .brand{color:var(--text-h);align-items:center;gap:10px;padding:4px 8px 16px;font-size:16px;font-weight:600;display:flex}.sidebar .brand-logo{border-radius:9px;width:32px;height:32px}.sidebar nav{flex-direction:column;gap:2px;display:flex}.nav-item{min-height:40px;color:var(--text);font:inherit;cursor:pointer;text-align:left;white-space:nowrap;background:0 0;border:none;border-radius:8px;align-items:center;gap:10px;width:100%;padding:8px 12px;font-size:14px;font-weight:500;text-decoration:none;transition:background .15s,color .15s;display:flex}.nav-item .icon{opacity:.85}.nav-item:hover{background:var(--bg-soft);color:var(--text-h)}.nav-item.active{background:var(--accent-bg);color:var(--accent)}.nav-item.active .icon{opacity:1}.sidebar .spacer{flex:1}.sidebar .who{color:var(--text);border-top:1px solid var(--border);margin-top:8px;padding:10px 12px 6px;font-size:12.5px;overflow:hidden}.sidebar .who strong{color:var(--text-h);text-overflow:ellipsis;white-space:nowrap;font-weight:500;display:block;overflow:hidden}.main{min-width:0;padding:28px 32px 48px}.page-head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px 16px;margin-bottom:20px;display:flex}.page-head h1{font-size:26px}.page-actions{flex-wrap:wrap;gap:8px;display:flex}.grid{gap:16px;display:grid}.stat-grid{grid-template-columns:repeat(auto-fill,minmax(190px,1fr));margin-bottom:22px}.card{border:1px solid var(--border);background:var(--bg);border-radius:12px;min-width:0;padding:18px}.stat .label{color:var(--text);margin-bottom:8px;font-size:13px}.stat .value{color:var(--text-h);font-variant-numeric:tabular-nums;font-size:30px;font-weight:600;line-height:1.1}.stat .delta{color:var(--accent);margin-top:6px;font-size:13px}.card h3{margin:0 0 14px;font-size:15px}.list{flex-direction:column;gap:10px;display:flex}.list-row{justify-content:space-between;align-items:center;gap:10px;display:flex}.table-wrap{border:1px solid var(--border);background:var(--bg);border-radius:12px;overflow-x:auto}table{border-collapse:collapse;width:100%;font-size:14px}th,td{text-align:left;vertical-align:middle;border-bottom:1px solid var(--border);padding:11px 14px}th{text-transform:uppercase;letter-spacing:.4px;color:var(--text);background:var(--bg-soft);white-space:nowrap;font-size:12px;font-weight:600}tbody tr:last-child td{border-bottom:none}tbody tr:hover{background:var(--bg-soft)}td.num{font-variant-numeric:tabular-nums}td.actions{white-space:nowrap;text-align:right}td.actions .btn+.btn{margin-left:6px}.cell-title{color:var(--text-h);font-weight:500}.cell-sub{color:var(--text);font-size:13px}.truncate{text-overflow:ellipsis;white-space:nowrap;max-width:280px;overflow:hidden}.badge{background:var(--bg-soft);color:var(--text-h);border:1px solid var(--border);white-space:nowrap;border-radius:999px;align-items:center;padding:2px 9px;font-size:12px;font-weight:500;line-height:1.4;display:inline-flex}.badge.green{background:color-mix(in srgb, var(--success) 14%, transparent);color:var(--success);border-color:#0000}.badge.red{background:color-mix(in srgb, var(--danger) 14%, transparent);color:var(--danger);border-color:#0000}.badge.amber{background:color-mix(in srgb, var(--warning) 16%, transparent);color:var(--warning);border-color:#0000}.badge.blue{background:color-mix(in srgb, var(--info) 14%, transparent);color:var(--info);border-color:#0000}.badge.violet{background:var(--accent-bg);color:var(--accent);border-color:#0000}.toolbar{flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:16px;display:flex}.toolbar .input,.toolbar .select{width:auto;min-width:160px}.toolbar .search-input{flex:240px}.pager{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:12px;margin-top:16px;font-size:14px;display:flex}.muted{color:var(--text);font-size:14px}.text-h{color:var(--text-h)}.text-danger{color:var(--danger)}.error-box{background:color-mix(in srgb, var(--danger) 10%, transparent);color:var(--danger);border:1px solid color-mix(in srgb, var(--danger) 30%, transparent);border-radius:8px;margin-bottom:14px;padding:10px 14px;font-size:14px}.center-state{text-align:center;color:var(--text);border:1px dashed var(--border);border-radius:12px;padding:56px 16px}.center-state.plain{border:none;padding:32px 16px}.modal-backdrop{z-index:50;background:#00000080;place-items:center;padding:24px;animation:.15s ease-out fade-in;display:grid;position:fixed;inset:0}.modal{background:var(--bg);border:1px solid var(--border);width:480px;max-width:100%;max-height:calc(100svh - 48px);box-shadow:var(--shadow);border-radius:14px;outline:none;padding:22px 24px 24px;animation:.18s ease-out pop-in;overflow-y:auto}.modal.wide{width:620px}.modal-head{justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:18px;display:flex}.modal h2{overflow-wrap:anywhere;font-size:18px;line-height:1.3}.modal-actions{flex-wrap:wrap;justify-content:flex-end;gap:10px;margin-top:8px;display:flex}.modal h3{margin:20px 0 10px;font-size:14px}.kv{grid-template-columns:130px 1fr;gap:8px 14px;margin:0;font-size:14px;display:grid}.kv dt{color:var(--text)}.kv dd{color:var(--text-h);overflow-wrap:anywhere;margin:0}.timeline{flex-direction:column;gap:10px;display:flex}.timeline-row{align-items:flex-start;gap:10px;font-size:13px;display:flex}.timeline-row .badge{flex:none}.prose{white-space:pre-wrap;color:var(--text-h);font-size:14px;line-height:1.6}.toast-wrap{z-index:100;flex-direction:column-reverse;gap:10px;max-width:min(380px,100vw - 40px);display:flex;position:fixed;bottom:20px;right:20px}.toast{border:1px solid var(--border);background:var(--bg);box-shadow:var(--shadow);color:var(--text-h);border-radius:10px;align-items:flex-start;gap:10px;padding:12px 14px;font-size:14px;animation:.18s ease-out toast-in;display:flex}.toast-body{flex-direction:column;flex:1;gap:10px;display:flex}.toast-msg{overflow-wrap:anywhere;line-height:1.4}.toast-actions{justify-content:flex-end;gap:8px;display:flex}.toast-close{color:var(--text);cursor:pointer;background:0 0;border:none;border-radius:6px;place-items:center;margin:-2px -4px 0 0;padding:2px;display:grid}.toast-close:hover{color:var(--text-h);background:var(--bg-soft)}.toast-error{border-left:3px solid var(--danger)}.toast-success{border-left:3px solid var(--success)}.toast-info{border-left:3px solid var(--accent)}@keyframes toast-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@keyframes pop-in{0%{opacity:0;transform:translateY(6px)scale(.98)}to{opacity:1;transform:none}}@media (width<=820px){.shell{grid-template-columns:minmax(0,1fr)}.sidebar{z-index:40;border-right:none;border-bottom:1px solid var(--border);scrollbar-width:none;flex-direction:row;align-items:center;gap:6px;height:auto;padding:8px 12px;position:sticky;top:0;overflow:auto hidden}.sidebar::-webkit-scrollbar{display:none}.sidebar .brand{padding:0 8px 0 0}.sidebar .brand-name{display:none}.sidebar nav{flex-direction:row;gap:2px}.nav-item{width:auto;min-height:36px;padding:6px 10px;font-size:13px}.nav-item .icon{width:16px;height:16px}.sidebar .spacer,.sidebar .who{display:none}.main{padding:20px 16px 40px}.page-head h1{font-size:22px}.toolbar .input,.toolbar .select{flex:140px;min-width:0}.modal-backdrop{align-items:end;padding:12px}.modal{max-height:calc(100svh - 24px);padding:18px 16px 20px}.kv{grid-template-columns:100px 1fr}.stat .value{font-size:26px}}
