@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-cyrillic-ext-wght-normal-DjL33-gN.woff2) format("woff2-variations");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-cyrillic-wght-normal-BEAKL7Jp.woff2) format("woff2-variations");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-vietnamese-wght-normal-6IgcOCM7.woff2) format("woff2-variations");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-latin-ext-wght-normal-DC-KSUi6.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-latin-wght-normal-BgDaEnEv.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--vic: #4b4fd6;--vic-dark: #3e42b8;--vic-veil: #ecedfb;--page: #fafafa;--surface: #ffffff;--rail: #f4f4f5;--ink: #09090b;--ink-soft: #3f3f46;--ink-muted: #71717a;--ink-muted-rail: #63636b;--hairline: #e4e4e7;--hover-row: #f7f7f8;--ok: #2e7d32;--ok-veil: #e8f5e9;--info: #1565c0;--info-veil: #e3f2fd;--warn: #b45309;--warn-veil: #fef3c7;--danger: #c62828;--danger-dark: #a52020;--danger-veil: #fdecea;--neutral-veil: #f4f4f5;--shadow-card: 0 1px 2px rgba(24, 12, 32, .04), 0 8px 24px -12px rgba(24, 12, 32, .1);--shadow-lift: 0 2px 4px rgba(24, 12, 32, .05), 0 16px 40px -16px rgba(24, 12, 32, .16);--r-control: 12px;--r-panel: 16px;--r-full: 9999px;--sp-1: 4px;--sp-2: 8px;--sp-3: 12px;--sp-4: 16px;--sp-5: 20px;--sp-6: 24px;--sp-8: 32px;--sp-12: 48px;--font: "Geist Variable", "Segoe UI", system-ui, sans-serif;--z-sticky: 20;--z-backdrop: 40;--z-modal: 50;--z-toast: 60;--transition: .18s cubic-bezier(.22, 1, .36, 1)}*{box-sizing:border-box}body{margin:0;font-family:var(--font);font-size:.9375rem;line-height:1.6;background:var(--page);color:var(--ink);font-kerning:normal;-webkit-font-smoothing:antialiased}a{color:inherit;text-decoration:none}h1,h2,h3{margin:0;font-weight:600}button{font-family:inherit}:focus-visible{outline:2px solid var(--vic);outline-offset:2px}::placeholder{color:var(--ink-muted);opacity:1}.app-shell{display:grid;grid-template-columns:248px 1fr;min-height:100vh}.sidebar{background:var(--rail);border-right:1px solid var(--hairline);padding:var(--sp-5) var(--sp-3);display:flex;flex-direction:column;gap:var(--sp-5);position:sticky;top:0;height:100vh;overflow-y:auto;min-width:0}.brand{display:flex;align-items:center;gap:var(--sp-2);padding:0 var(--sp-3)}.brand-mark{color:var(--vic);flex-shrink:0}.brand-name{font-size:1.125rem;font-weight:600;letter-spacing:-.02em}.brand-tag{font-size:.75rem;color:var(--ink-muted)}.sidebar nav{display:flex;flex-direction:column;gap:var(--sp-5);flex:1}.nav-group{display:flex;flex-direction:column;gap:2px}.nav-group-label{font-size:.75rem;font-weight:500;color:var(--ink-muted-rail);padding:0 var(--sp-3);margin-bottom:var(--sp-1)}.nav-item{padding:var(--sp-2) var(--sp-3);border-radius:var(--r-control);color:var(--ink-soft);font-size:.875rem;font-weight:500;line-height:1.4;transition:background var(--transition),color var(--transition)}.nav-item:hover{background:#09090b0d;color:var(--ink)}.nav-item.active{color:var(--vic-dark);background:var(--vic-veil)}.sidebar-footer{border-top:1px solid var(--hairline);padding:var(--sp-3) var(--sp-3) 0;display:grid;gap:var(--sp-2)}.sidebar-user{font-size:.8125rem;color:var(--ink-muted-rail);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.skip-link{position:absolute;top:-100px;left:var(--sp-4);z-index:var(--z-toast);background:var(--ink);color:#fafafa;padding:var(--sp-2) var(--sp-4);border-radius:var(--r-control);font-size:.875rem;font-weight:500;transition:top .15s ease-out}.skip-link:focus-visible{top:var(--sp-3)}.visually-hidden{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}.main-col{min-width:0}.page{padding:var(--sp-8) var(--sp-8) var(--sp-12);max-width:1200px}.page-header{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--sp-4);margin-bottom:var(--sp-6);flex-wrap:wrap}.page-header h1{font-size:1.375rem;letter-spacing:-.02em;line-height:1.2}.page-header .page-desc{margin:var(--sp-1) 0 0;color:var(--ink-muted);font-size:.875rem;max-width:56ch;text-wrap:pretty}.page-header-actions{display:flex;gap:var(--sp-2);flex-shrink:0}.card{background:var(--surface);border:1px solid var(--hairline);border-radius:var(--r-panel);box-shadow:var(--shadow-card);padding:var(--sp-5) var(--sp-6)}.card-header{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-4);margin-bottom:var(--sp-4)}.card-header h2{font-size:1rem;line-height:1.4}.card-header .card-hint{font-size:.8125rem;color:var(--ink-muted)}.stack{display:grid;gap:var(--sp-4)}.stack-lg{display:grid;gap:var(--sp-6)}.stack>*,.stack-lg>*{min-width:0}.stat-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));border:1px solid var(--hairline);border-radius:var(--r-panel);background:var(--surface);box-shadow:var(--shadow-card);overflow:hidden}.stat-cell{padding:var(--sp-4) var(--sp-5);border-left:1px solid var(--hairline);min-width:0}.stat-cell:first-child{border-left:none}.stat-label{font-size:.8125rem;color:var(--ink-muted);margin-bottom:2px}.stat-value{font-size:1.25rem;font-weight:600;letter-spacing:-.01em;font-variant-numeric:tabular-nums;line-height:1.3}.stat-note{font-size:.75rem;color:var(--ink-muted);margin-top:2px}.stat-note.alert{color:var(--danger);font-weight:500}.table-scroll{overflow-x:auto;margin:0 calc(-1 * var(--sp-6));padding:0 var(--sp-6);background:linear-gradient(90deg,var(--surface) 33%,rgba(255,255,255,0)) left / 48px 100%,linear-gradient(270deg,var(--surface) 33%,rgba(255,255,255,0)) right / 48px 100%,radial-gradient(farthest-side at 0 50%,rgba(24,12,32,.14),transparent) left / 16px 100%,radial-gradient(farthest-side at 100% 50%,rgba(24,12,32,.14),transparent) right / 16px 100%;background-repeat:no-repeat;background-attachment:local,local,scroll,scroll}.table{width:100%;border-collapse:collapse;font-size:.875rem;line-height:1.45}.table th{text-align:left;font-size:.8125rem;font-weight:500;color:var(--ink-muted);padding:var(--sp-2);border-bottom:1px solid var(--hairline);white-space:nowrap}.table td{padding:10px var(--sp-2);border-bottom:1px solid var(--hairline);vertical-align:middle}.table tbody tr:last-child td{border-bottom:none}.table tbody tr{transition:background .12s ease-out}.table tbody tr:hover{background:var(--hover-row)}.table .num,.table td.num,.table th.num{text-align:right;font-variant-numeric:tabular-nums}.table .row-link{font-weight:500;color:var(--ink)}.link-button{background:none;border:none;padding:0;font:inherit;cursor:pointer;text-align:left}.table .row-link:hover{text-decoration:underline;text-underline-offset:3px}.cell-sub{display:block;font-size:.75rem;color:var(--ink-muted)}.mono{font-variant-numeric:tabular-nums;font-size:.8125rem;color:var(--ink-soft);word-break:break-all}.badge{display:inline-flex;align-items:center;padding:2px 10px;border-radius:var(--r-full);font-size:.75rem;font-weight:600;line-height:1.6;white-space:nowrap}.badge.ok{background:var(--ok-veil);color:var(--ok)}.badge.info{background:var(--info-veil);color:var(--info)}.badge.warn{background:var(--warn-veil);color:var(--warn)}.badge.danger{background:var(--danger-veil);color:var(--danger)}.badge.neutral{background:var(--neutral-veil);color:var(--ink-soft)}.field{display:grid;gap:6px}.field-label{font-size:.875rem;font-weight:500;color:var(--ink-soft);line-height:1.25}.field-hint{font-size:.75rem;color:var(--ink-muted)}.input,.select{width:100%;height:40px;padding:0 var(--sp-3);border-radius:var(--r-control);border:1px solid var(--hairline);font-size:.875rem;font-family:inherit;color:var(--ink);background:var(--surface);transition:border-color var(--transition)}.input:hover,.select:hover{border-color:#d4d4d8}.input:focus,.select:focus{outline:2px solid var(--vic);outline-offset:2px;border-color:var(--hairline)}.input:disabled,.select:disabled{opacity:.5;cursor:not-allowed}.form-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:var(--sp-4)}.checkbox-field{display:flex;align-items:center;gap:var(--sp-2);font-size:.875rem;color:var(--ink-soft)}.checkbox-field input{width:16px;height:16px;accent-color:var(--ink-soft)}.button{display:inline-flex;align-items:center;justify-content:center;gap:var(--sp-2);height:40px;padding:0 var(--sp-4);border-radius:var(--r-control);border:none;background:var(--vic);color:#fff;font-size:.875rem;font-weight:500;cursor:pointer;white-space:nowrap;transition:background var(--transition),transform .12s ease-out,box-shadow var(--transition);box-shadow:var(--shadow-card)}.button:hover{background:var(--vic-dark)}.button:active{transform:scale(.98)}.button:disabled{opacity:.5;cursor:not-allowed;transform:none}.button.danger{background:var(--danger)}.button.danger:hover{background:var(--danger-dark)}.button.outline{background:var(--surface);color:var(--ink);border:1px solid var(--hairline);box-shadow:none}.button.outline:hover{background:var(--rail)}.button.ghost{background:transparent;color:var(--ink-soft);box-shadow:none}.button.ghost:hover{background:var(--rail);color:var(--ink)}.button.small{height:32px;padding:0 var(--sp-3);font-size:.8125rem}.toolbar{display:flex;gap:var(--sp-3);align-items:flex-end;flex-wrap:wrap;margin-bottom:var(--sp-4)}.toolbar .field{min-width:180px}.dl{display:grid;grid-template-columns:minmax(140px,max-content) 1fr;gap:var(--sp-2) var(--sp-6);margin:0;font-size:.875rem}.dl dt{color:var(--ink-muted)}.dl dd{margin:0;color:var(--ink);min-width:0;overflow-wrap:break-word}.empty-state{text-align:center;padding:var(--sp-8) var(--sp-6);color:var(--ink-muted)}.empty-state h3{color:var(--ink);font-size:1rem;margin-bottom:var(--sp-1)}.empty-state p{margin:0 auto;font-size:.875rem;max-width:48ch}.error-state{padding:var(--sp-4) var(--sp-5);border:1px solid var(--danger-veil);background:var(--danger-veil);border-radius:var(--r-control);color:var(--danger);font-size:.875rem;display:flex;align-items:center;justify-content:space-between;gap:var(--sp-4);flex-wrap:wrap}.skeleton{display:grid;gap:10px}.skeleton-line{height:14px;border-radius:6px;background:linear-gradient(90deg,#eeeef0 25%,#f6f6f7,#eeeef0 75%);background-size:200% 100%;animation:shimmer 1.4s ease-in-out infinite}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.json-view{background:#18181b;color:#e4e4e7;border-radius:var(--r-control);padding:var(--sp-4) var(--sp-5);font-family:ui-monospace,SF Mono,SFMono-Regular,Menlo,Consolas,monospace;font-size:.8125rem;line-height:1.6;overflow-x:auto;margin:0;max-height:480px;overflow-y:auto}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#09090b66;display:flex;align-items:center;justify-content:center;padding:var(--sp-5);z-index:var(--z-backdrop);animation:fade-in .15s ease-out}.modal{background:var(--surface);border-radius:var(--r-panel);padding:var(--sp-6);width:min(560px,100%);max-height:min(85vh,720px);overflow-y:auto;box-shadow:var(--shadow-lift);z-index:var(--z-modal);animation:modal-in .2s cubic-bezier(.22,1,.36,1)}.modal h2{font-size:1rem;margin-bottom:var(--sp-4)}.modal-footer{display:flex;justify-content:flex-end;gap:var(--sp-2);margin-top:var(--sp-6)}@keyframes fade-in{0%{opacity:0}}@keyframes modal-in{0%{opacity:0;transform:translateY(8px) scale(.98)}}.toast-wrap{position:fixed;bottom:var(--sp-5);right:var(--sp-5);display:grid;gap:var(--sp-2);z-index:var(--z-toast)}.toast{display:flex;align-items:flex-start;gap:var(--sp-3);background:var(--ink);color:#fafafa;padding:var(--sp-3) var(--sp-3) var(--sp-3) var(--sp-4);border-radius:var(--r-control);font-size:.8125rem;box-shadow:var(--shadow-lift);max-width:380px;animation:toast-in .2s cubic-bezier(.22,1,.36,1)}.toast-close{background:transparent;border:none;color:inherit;opacity:.7;cursor:pointer;font-size:1rem;line-height:1;padding:2px 6px;border-radius:6px;flex-shrink:0}.toast-close:hover{opacity:1;background:#ffffff1f}.toast.error{background:var(--danger)}@keyframes toast-in{0%{opacity:0;transform:translateY(6px)}}.login-shell{min-height:100vh;display:grid;place-items:center;padding:var(--sp-5);background:var(--page)}.login-card{width:min(400px,100%);background:var(--surface);border:1px solid var(--hairline);border-radius:var(--r-panel);box-shadow:var(--shadow-card);padding:var(--sp-8)}.login-brand{display:flex;align-items:center;gap:var(--sp-2);margin-bottom:var(--sp-1)}.login-brand .brand-name{font-size:1.375rem}.login-sub{color:var(--ink-muted);font-size:.875rem;margin:0 0 var(--sp-6)}.muted{color:var(--ink-muted)}.text-sm{font-size:.8125rem}.divider{border:none;border-top:1px solid var(--hairline);margin:var(--sp-4) 0}.copy-button{background:transparent;border:1px solid var(--hairline);border-radius:8px;color:var(--ink-soft);font-size:.6875rem;font-weight:500;font-family:inherit;padding:1px 8px;cursor:pointer;vertical-align:middle;margin-left:var(--sp-2);transition:background var(--transition),color var(--transition)}.copy-button:hover{background:var(--rail);color:var(--ink)}.pagination{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-4);margin-top:var(--sp-4);flex-wrap:wrap}.pagination-controls{display:flex;align-items:center;gap:var(--sp-3)}.audit-item{display:grid;gap:2px;padding:var(--sp-3) 0;border-top:1px solid var(--hairline);font-size:.875rem}.audit-item:first-child{border-top:none;padding-top:0}.audit-item .audit-meta{font-size:.75rem;color:var(--ink-muted)}@media (max-width: 960px){.app-shell{grid-template-columns:1fr}.sidebar{position:sticky;top:0;height:auto;flex-direction:column;gap:var(--sp-3);padding:var(--sp-3) var(--sp-4);z-index:var(--z-sticky);border-right:none;border-bottom:1px solid var(--hairline);overflow:visible}.sidebar nav{flex-direction:row;gap:var(--sp-1);overflow-x:auto;padding-bottom:var(--sp-1)}.nav-group{flex-direction:row;gap:var(--sp-1)}.nav-group-label{display:none}.nav-item{white-space:nowrap}.sidebar-footer{display:none}.page{padding:var(--sp-5) var(--sp-4) var(--sp-8)}.table-scroll{margin:0 calc(-1 * var(--sp-4));padding:0 var(--sp-4)}.dl{grid-template-columns:1fr;gap:2px}.dl dt{margin-top:var(--sp-2)}.dl dt:first-child{margin-top:0}}@media (max-width: 720px){.stat-row{grid-template-columns:1fr}.stat-cell{border-left:none;border-top:1px solid var(--hairline)}.stat-cell:first-child{border-top:none}}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}.skeleton-line{animation:none;background:#eeeef0}}
