@font-face{font-family:Geist;src:url(/assets/Geist-Variable-CrgPqtmy.woff2)format("woff2");font-style:normal;font-weight:100 900;font-display:swap}@font-face{font-family:Geist;src:url(/assets/Geist-Italic-Variable-vKc54d3Z.woff2)format("woff2");font-style:italic;font-weight:100 900;font-display:swap}@font-face{font-family:Geist Mono;src:url(/assets/GeistMono-Variable-BNLlm6Cd.woff2)format("woff2");font-style:normal;font-weight:100 900;font-display:swap}@font-face{font-family:Geist Mono;src:url(/assets/GeistMono-Italic-Variable-MBthCoE1.woff2)format("woff2");font-style:italic;font-weight:100 900;font-display:swap}:root{--ds-background:#fff;--ds-background-100:#fafafa;--ds-background-200:#f5f5f5;--ds-text:#171717;--ds-gray-700:#333;--ds-gray-600:#4d4d4d;--ds-gray-500:#666;--ds-gray-400:gray;--ds-gray-300:#a3a3a3;--ds-gray-200:#d4d4d4;--ds-gray-100:#ebebeb;--ds-gray-50:#f5f5f5;--ds-blue:#0a72ef;--ds-blue-soft:#ebf5ff;--ds-blue-text:#0068d6;--ds-green:#0cce6b;--ds-green-soft:#e6f9ee;--ds-green-text:#008a4b;--ds-pink:#de1d8d;--ds-amber:#f5a623;--ds-amber-soft:#fff5e0;--ds-amber-text:#ad6c0a;--ds-red:#e5484d;--ds-red-soft:#fdecec;--ds-red-text:#c8312f;--ds-link:#0072f5;--ds-focus:#0072f5;--ds-radius-sm:6px;--ds-radius-md:8px;--ds-radius-lg:12px;--ds-shadow-border:#00000014 0px 0px 0px 1px;--ds-shadow-card:#00000014 0px 0px 0px 1px, #0000000a 0px 2px 2px, #0000000a 0px 8px 8px -8px, #fafafa 0px 0px 0px 1px;--ds-shadow-card-soft:#00000014 0px 0px 0px 1px, #0000000a 0px 2px 2px, #fafafa 0px 0px 0px 1px;--ds-shadow-overlay:#00000029 0px 16px 32px -8px, #00000014 0px 0px 0px 1px;--font-sans:"Geist", Arial, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", sans-serif;--font-mono:"Geist Mono", ui-monospace, "SFMono-Regular", "Roboto Mono", Menlo, Monaco, "Liberation Mono", "DejaVu Sans Mono", "Courier New", monospace}*,:before,:after{box-sizing:border-box;margin:0}html{scroll-behavior:smooth}body{min-height:100vh;color:var(--ds-text);background:var(--ds-background-100);line-height:1.5;font-family:var(--font-sans);font-feature-settings:"liga" 1;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-size:14px;font-weight:400}::selection{color:#f2f2f2;background:var(--ds-text)}a{color:inherit;text-decoration:none}a:focus-visible,button:focus-visible,summary:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible{outline:2px solid var(--ds-focus);outline-offset:2px}button{cursor:pointer;background:0 0;border:none}button:disabled{cursor:not-allowed;opacity:.55}button,input,textarea,select{font:inherit;color:inherit}input,textarea,select{background:var(--ds-background)}input::placeholder,textarea::placeholder{color:var(--ds-gray-400)}img,svg{max-width:100%;display:block}code{font-family:var(--font-mono);font-feature-settings:"liga" 1, "tnum" 1}#app{min-height:100vh}.app-shell{background:var(--ds-background-100);min-height:100vh;display:flex}.app-shell--auth{background:radial-gradient(circle at 50% -20%, #0a72ef1a, transparent 40%), var(--ds-background-100);justify-content:center;align-items:center;min-height:100vh;padding:24px;display:flex}.sidebar{background:var(--ds-background);width:244px;height:100vh;box-shadow:inset -1px 0 0 var(--ds-gray-100);flex-direction:column;flex-shrink:0;padding:20px 14px;display:flex;position:sticky;top:0}.sidebar__brand{letter-spacing:-.32px;align-items:center;gap:10px;padding:4px 8px 18px;font-size:14px;font-weight:600;display:flex}.sidebar__brand-dot{background:var(--ds-text);border-radius:999px;width:10px;height:10px}.sidebar__brand-meta{flex-direction:column;line-height:1.2;display:flex}.sidebar__brand-caption{color:var(--ds-gray-500);font-size:11px;font-weight:500}.sidebar__group{flex-direction:column;gap:2px;padding:14px 0 6px;display:flex}.sidebar__group-title{letter-spacing:.04em;text-transform:uppercase;color:var(--ds-gray-400);padding:0 8px 6px;font-size:11px;font-weight:500}.sidebar__link{border-radius:var(--ds-radius-sm);color:var(--ds-gray-600);align-items:center;gap:10px;padding:7px 10px;font-size:13.5px;font-weight:500;transition:color .16s,background-color .16s;display:flex}.sidebar__link:hover{background:var(--ds-background-100);color:var(--ds-text)}.sidebar__link.router-link-exact-active,.sidebar__link.router-link-active{background:var(--ds-background-100);color:var(--ds-text);box-shadow:var(--ds-shadow-border)}.sidebar__link-icon{color:currentColor;opacity:.85;justify-content:center;align-items:center;width:18px;height:18px;font-size:14px;display:inline-flex}.sidebar__footer{border-top:1px solid var(--ds-gray-100);margin-top:auto;padding:14px 6px 0}.sidebar__user{border-radius:var(--ds-radius-sm);align-items:center;gap:10px;padding:6px;display:flex}.sidebar__avatar{background:var(--ds-text);color:#fff;border-radius:999px;justify-content:center;align-items:center;width:28px;height:28px;font-size:12px;font-weight:600;display:inline-flex}.sidebar__user-meta{flex-direction:column;flex:1;min-width:0;display:flex}.sidebar__user-name{white-space:nowrap;text-overflow:ellipsis;font-size:13px;font-weight:500;overflow:hidden}.sidebar__user-email{color:var(--ds-gray-500);white-space:nowrap;text-overflow:ellipsis;font-size:11.5px;overflow:hidden}.sidebar__logout{border-radius:var(--ds-radius-sm);width:28px;height:28px;color:var(--ds-gray-500);justify-content:center;align-items:center;font-size:14px;display:inline-flex}.sidebar__logout:hover{background:var(--ds-background-100);color:var(--ds-text)}.app-main{flex:1;min-width:0}.page-shell{max-width:1240px;margin:0 auto;padding:32px clamp(20px,4vw,48px) 64px}.page-shell__head{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:16px;margin-bottom:24px;display:flex}.page-shell__title{letter-spacing:-.96px;font-size:28px;font-weight:600}.page-shell__sub{color:var(--ds-gray-500);margin-top:6px;font-size:14px}.page-shell__actions{flex-wrap:wrap;gap:10px;display:flex}.button{border-radius:var(--ds-radius-sm);justify-content:center;align-items:center;gap:6px;min-height:32px;padding:6px 14px;font-size:13.5px;font-weight:500;transition:background-color .16s,color .16s,box-shadow .16s,transform .16s;display:inline-flex}.button--dark{color:#fff;background:var(--ds-text);box-shadow:inset 0 0 0 1px #0000000a}.button--dark:hover{background:#2a2a2a}.button--ghost{color:var(--ds-text);background:var(--ds-background);box-shadow:var(--ds-shadow-border)}.button--ghost:hover{background:var(--ds-background-100)}.button--danger{color:var(--ds-red-text);background:var(--ds-background);box-shadow:0 0 0 1px #e5484d52}.button--danger:hover{background:var(--ds-red-soft)}.button--small{min-height:28px;padding:4px 10px;font-size:12.5px}.button--block{width:100%}.input,.select,.textarea{border-radius:var(--ds-radius-sm);background:var(--ds-background);width:100%;min-height:36px;box-shadow:var(--ds-shadow-border);border:none;padding:8px 12px;font-size:13.5px;transition:box-shadow .16s}.textarea{resize:vertical;min-height:96px;padding:10px 12px;line-height:1.55}.input:focus,.select:focus,.textarea:focus{outline:none;box-shadow:0 0 0 1px #00000014,0 0 0 3px #0a72ef52}.field{flex-direction:column;gap:6px;display:flex}.field__label{color:var(--ds-gray-600);font-size:12.5px;font-weight:500}.field__hint{color:var(--ds-gray-500);font-size:12px}.field__error{color:var(--ds-red-text);font-size:12px}.card{background:var(--ds-background);border-radius:var(--ds-radius-md);box-shadow:var(--ds-shadow-card-soft);padding:22px}.card__head{justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:16px;display:flex}.card__title{letter-spacing:-.32px;font-size:16px;font-weight:600}.card__sub{color:var(--ds-gray-500);margin-top:4px;font-size:13px}.card-grid{gap:16px;display:grid}.card-grid--2{grid-template-columns:repeat(2,minmax(0,1fr))}.card-grid--3{grid-template-columns:repeat(3,minmax(0,1fr))}.card-grid--4{grid-template-columns:repeat(4,minmax(0,1fr))}.metric-card{border-radius:var(--ds-radius-md);background:var(--ds-background);box-shadow:var(--ds-shadow-card-soft);flex-direction:column;gap:8px;padding:18px 20px;display:flex}.metric-card__label{color:var(--ds-gray-500);align-items:center;gap:8px;font-size:12.5px;font-weight:500;display:flex}.metric-card__value{letter-spacing:-1px;font-size:26px;font-weight:600}.metric-card__hint{color:var(--ds-gray-500);font-size:12px}.badge{letter-spacing:.01em;background:var(--ds-gray-50);min-height:20px;color:var(--ds-gray-700);box-shadow:var(--ds-shadow-border);border-radius:999px;align-items:center;gap:4px;padding:0 8px;font-size:11.5px;font-weight:500;display:inline-flex}.badge:before{content:"";background:currentColor;border-radius:999px;width:6px;height:6px}.badge--success{color:var(--ds-green-text);background:var(--ds-green-soft)}.badge--warn{color:var(--ds-amber-text);background:var(--ds-amber-soft)}.badge--danger{color:var(--ds-red-text);background:var(--ds-red-soft)}.badge--info{color:var(--ds-blue-text);background:var(--ds-blue-soft)}.badge--muted{color:var(--ds-gray-500);background:var(--ds-gray-50)}.switch{flex-shrink:0;width:36px;height:20px;display:inline-block;position:relative}.switch input{opacity:0;cursor:pointer;z-index:1;width:100%;height:100%;margin:0;position:absolute;inset:0}.switch__track{background:var(--ds-gray-200);border-radius:999px;transition:background-color .16s;position:absolute;inset:0}.switch__thumb{background:#fff;border-radius:999px;width:16px;height:16px;transition:transform .16s;position:absolute;top:2px;left:2px;box-shadow:0 1px 2px #0003}.switch input:checked~.switch__track{background:var(--ds-text)}.switch input:checked~.switch__thumb{transform:translate(16px)}.switch input:disabled~.switch__track{opacity:.5}.table{border-collapse:separate;border-spacing:0;width:100%;font-size:13px}.table th,.table td{text-align:left;vertical-align:middle;padding:12px 14px}.table thead th{color:var(--ds-gray-500);letter-spacing:.02em;text-transform:uppercase;background:var(--ds-background-100);border-bottom:1px solid var(--ds-gray-100);font-size:12px;font-weight:500}.table tbody tr{transition:background-color .12s}.table tbody tr:hover{background:var(--ds-background-100)}.table tbody td{border-bottom:1px solid var(--ds-gray-100)}.table tbody tr:last-child td{border-bottom:0}.table-wrap{border-radius:var(--ds-radius-md);box-shadow:var(--ds-shadow-card-soft);background:var(--ds-background);overflow-x:auto}.empty{color:var(--ds-gray-500);text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:8px;padding:48px 20px;display:flex}.empty__title{color:var(--ds-text);font-size:15px;font-weight:600}.auth-card{background:var(--ds-background);border-radius:var(--ds-radius-lg);width:100%;max-width:420px;box-shadow:var(--ds-shadow-card);padding:32px}.auth-card__brand{align-items:center;gap:10px;margin-bottom:6px;font-weight:600;display:flex}.auth-card__brand-dot{background:var(--ds-text);border-radius:999px;width:10px;height:10px}.auth-card__title{letter-spacing:-.6px;margin-top:14px;font-size:22px;font-weight:600}.auth-card__sub{color:var(--ds-gray-500);margin-top:6px;font-size:13.5px}.auth-card__form{flex-direction:column;gap:14px;margin-top:22px;display:flex}.auth-card__footer{text-align:center;color:var(--ds-gray-500);margin-top:16px;font-size:13px}.auth-card__footer a{color:var(--ds-blue-text);font-weight:500}.code-block{border-radius:var(--ds-radius-md);background:var(--ds-background-100);box-shadow:var(--ds-shadow-border);font-family:var(--font-mono);word-break:break-all;justify-content:space-between;align-items:center;gap:12px;padding:12px 14px;font-size:13px;display:flex}.code-block code{flex:1;min-width:0}.meta-list{gap:0;display:grid}.meta-list__row{border-bottom:1px solid var(--ds-gray-100);grid-template-columns:160px 1fr;gap:16px;padding:10px 0;font-size:13px;display:grid}.meta-list__row:last-child{border-bottom:0}.meta-list__label{color:var(--ds-gray-500)}.modal-mask{z-index:50;background:#00000052;justify-content:center;align-items:center;padding:24px;animation:.16s fade-in;display:flex;position:fixed;inset:0}.modal{background:var(--ds-background);border-radius:var(--ds-radius-lg);width:100%;max-width:520px;box-shadow:var(--ds-shadow-overlay);padding:24px;animation:.2s cubic-bezier(.22,1,.36,1) pop-in}.modal--lg{max-width:720px}.modal__title{letter-spacing:-.32px;font-size:17px;font-weight:600}.modal__sub{color:var(--ds-gray-500);margin-top:6px;font-size:13px}.modal__body{flex-direction:column;gap:12px;margin-top:18px;display:flex}.modal__footer{justify-content:flex-end;gap:10px;margin-top:22px;display:flex}.toast-stack{z-index:60;pointer-events:none;flex-direction:column;gap:10px;display:flex;position:fixed;bottom:24px;right:24px}.toast{border-radius:var(--ds-radius-md);background:var(--ds-text);color:#fff;min-width:240px;max-width:360px;box-shadow:var(--ds-shadow-overlay);pointer-events:auto;padding:12px 14px;font-size:13px;animation:.16s pop-in}.toast--success{background:var(--ds-text)}.toast--error{background:var(--ds-red-text)}.row{align-items:center;gap:10px;display:flex}.row--between{justify-content:space-between}.row--wrap{flex-wrap:wrap}.muted{color:var(--ds-gray-500)}.divider{background:var(--ds-gray-100);height:1px;margin:18px 0}.section-title{margin-bottom:12px;font-size:14px;font-weight:600}.tag-row{flex-wrap:wrap;gap:6px;display:flex}.dot{background:currentColor;border-radius:999px;width:6px;height:6px;display:inline-block}.scope-pill{font-family:var(--font-mono);background:var(--ds-background-100);box-shadow:var(--ds-shadow-border);color:var(--ds-gray-700);border-radius:999px;align-items:center;padding:2px 8px;font-size:11.5px;display:inline-flex}.progress{background:var(--ds-gray-100);border-radius:999px;width:100%;height:6px;position:relative;overflow:hidden}.progress__bar{width:var(--p,0%);background:var(--ds-text);transition:width .24s;position:absolute;inset:0 auto 0 0}.progress__bar--warn{background:var(--ds-amber)}.progress__bar--danger{background:var(--ds-red)}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@keyframes pop-in{0%{opacity:0;transform:translateY(4px)scale(.98)}to{opacity:1;transform:translateY(0)scale(1)}}@media (width<=1080px){.card-grid--3,.card-grid--4{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width<=760px){.sidebar{flex-direction:row;align-items:center;gap:8px;width:100%;height:auto;padding:12px 14px;position:relative;overflow-x:auto}.sidebar__brand{border-right:1px solid var(--ds-gray-100);padding:0 8px 0 0}.sidebar__group{flex-direction:row;gap:4px;padding:0}.sidebar__group-title,.sidebar__footer{display:none}.app-shell{flex-direction:column}.card-grid--2,.card-grid--3,.card-grid--4{grid-template-columns:1fr}.meta-list__row{grid-template-columns:1fr;gap:4px}}
