.toasts[data-v-a07cb97a]{position:fixed;right:var(--sp-5);bottom:var(--sp-5);z-index:var(--z-toast);display:flex;flex-direction:column;gap:var(--sp-2);width:360px;max-width:calc(100vw - 40px)}.toast[data-v-a07cb97a]{--t-color: var(--info);display:flex;align-items:flex-start;gap:var(--sp-3);padding:var(--sp-3) var(--sp-3) var(--sp-3) var(--sp-4);background:var(--bg-elev);border:1px solid var(--border);border-left:3px solid var(--t-color);border-radius:var(--r-md);box-shadow:var(--shadow-md)}.toast--success[data-v-a07cb97a]{--t-color: var(--success)}.toast--warning[data-v-a07cb97a]{--t-color: var(--warning)}.toast--danger[data-v-a07cb97a]{--t-color: var(--danger)}.toast__icon[data-v-a07cb97a]{width:16px;height:16px;margin-top:1px;color:var(--t-color);flex:0 0 auto}.toast__text[data-v-a07cb97a]{flex:1;min-width:0}.toast__title[data-v-a07cb97a]{font-size:var(--text-sm);font-weight:var(--weight-medium)}.toast__msg[data-v-a07cb97a]{margin-top:2px;font-size:var(--text-xs);color:var(--fg-muted);word-break:break-word}.toast__close[data-v-a07cb97a]{color:var(--fg-faint);display:inline-flex;padding:2px;border-radius:var(--r-xs)}.toast__close[data-v-a07cb97a]:hover{color:var(--fg);background:var(--bg-hover)}.toast__close[data-v-a07cb97a] svg{width:14px;height:14px}.toast-enter-active[data-v-a07cb97a],.toast-leave-active[data-v-a07cb97a]{transition:opacity var(--dur-slow) var(--ease),transform var(--dur-slow) var(--ease)}.toast-enter-from[data-v-a07cb97a],.toast-leave-to[data-v-a07cb97a]{opacity:0;transform:translateY(8px)}:root{--font-sans: "Inter", ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--font-mono: "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, Consolas, "Liberation Mono", monospace;--text-2xs: 11px;--text-xs: 12px;--text-sm: 13px;--text-md: 14px;--text-lg: 16px;--text-xl: 20px;--text-2xl: 24px;--text-3xl: 30px;--leading-tight: 1.25;--leading-normal: 1.5;--weight-normal: 400;--weight-medium: 500;--weight-semibold: 600;--weight-bold: 700;--sp-0: 0;--sp-1: 4px;--sp-2: 8px;--sp-3: 12px;--sp-4: 16px;--sp-5: 20px;--sp-6: 24px;--sp-8: 32px;--sp-10: 40px;--sp-12: 48px;--sp-16: 64px;--r-xs: 4px;--r-sm: 6px;--r-md: 8px;--r-lg: 12px;--r-xl: 16px;--r-full: 999px;--dur-fast: .12s;--dur: .16s;--dur-slow: .22s;--ease: cubic-bezier(.2, 0, 0, 1);--sidebar-w: 232px;--sidebar-w-collapsed: 60px;--topbar-h: 52px;--content-max: 1360px;--z-sticky: 10;--z-drawer: 40;--z-modal: 50;--z-toast: 60;color-scheme:light;--bg: #fafafa;--bg-elev: #ffffff;--bg-subtle: #f4f4f5;--bg-muted: #ececef;--bg-hover: rgba(24, 24, 27, .04);--bg-active: rgba(24, 24, 27, .07);--bg-overlay: rgba(24, 24, 27, .4);--border: #e4e4e7;--border-strong: #d4d4d8;--border-subtle: #ededf0;--fg: #18181b;--fg-secondary: #3f3f46;--fg-muted: #71717a;--fg-faint: #a1a1aa;--fg-inverse: #ffffff;--accent: #5b5bd6;--accent-hover: #4f4fc9;--accent-active: #4646b5;--accent-fg: #ffffff;--accent-soft: rgba(91, 91, 214, .1);--accent-soft-strong: rgba(91, 91, 214, .18);--accent-ring: rgba(91, 91, 214, .35);--success: #16a34a;--success-soft: rgba(22, 163, 74, .12);--success-fg: #15803d;--warning: #d97706;--warning-soft: rgba(217, 119, 6, .13);--warning-fg: #b45309;--danger: #dc2626;--danger-soft: rgba(220, 38, 38, .1);--danger-fg: #b91c1c;--info: #2563eb;--info-soft: rgba(37, 99, 235, .1);--info-fg: #1d4ed8;--neutral: #71717a;--neutral-soft: rgba(113, 113, 122, .12);--neutral-fg: #52525b;--violet: #7c3aed;--violet-soft: rgba(124, 58, 237, .1);--violet-fg: #6d28d9;--diff-add-bg: rgba(22, 163, 74, .1);--diff-add-fg: #15803d;--diff-del-bg: rgba(220, 38, 38, .09);--diff-del-fg: #b91c1c;--diff-hunk-bg: rgba(37, 99, 235, .07);--shadow-xs: 0 1px 2px rgba(24, 24, 27, .04);--shadow-sm: 0 1px 3px rgba(24, 24, 27, .06), 0 1px 2px rgba(24, 24, 27, .04);--shadow-md: 0 4px 12px rgba(24, 24, 27, .08), 0 1px 3px rgba(24, 24, 27, .05);--shadow-lg: 0 16px 40px rgba(24, 24, 27, .14), 0 2px 8px rgba(24, 24, 27, .06);--skeleton-a: #ececef;--skeleton-b: #f6f6f7}[data-theme=dark]{color-scheme:dark;--bg: #0f0f11;--bg-elev: #17171a;--bg-subtle: #1c1c20;--bg-muted: #232328;--bg-hover: rgba(255, 255, 255, .05);--bg-active: rgba(255, 255, 255, .09);--bg-overlay: rgba(0, 0, 0, .6);--border: #26262b;--border-strong: #35353c;--border-subtle: #1f1f24;--fg: #f4f4f5;--fg-secondary: #d4d4d8;--fg-muted: #8b8b95;--fg-faint: #5c5c66;--fg-inverse: #18181b;--accent: #7c7cf0;--accent-hover: #8d8df3;--accent-active: #6b6be0;--accent-fg: #ffffff;--accent-soft: rgba(124, 124, 240, .14);--accent-soft-strong: rgba(124, 124, 240, .24);--accent-ring: rgba(124, 124, 240, .45);--success: #4ade80;--success-soft: rgba(74, 222, 128, .13);--success-fg: #4ade80;--warning: #fbbf24;--warning-soft: rgba(251, 191, 36, .14);--warning-fg: #fbbf24;--danger: #f87171;--danger-soft: rgba(248, 113, 113, .13);--danger-fg: #f87171;--info: #60a5fa;--info-soft: rgba(96, 165, 250, .13);--info-fg: #60a5fa;--neutral: #8b8b95;--neutral-soft: rgba(139, 139, 149, .16);--neutral-fg: #a1a1aa;--violet: #a78bfa;--violet-soft: rgba(167, 139, 250, .14);--violet-fg: #a78bfa;--diff-add-bg: rgba(74, 222, 128, .1);--diff-add-fg: #4ade80;--diff-del-bg: rgba(248, 113, 113, .1);--diff-del-fg: #f87171;--diff-hunk-bg: rgba(96, 165, 250, .09);--shadow-xs: 0 1px 2px rgba(0, 0, 0, .3);--shadow-sm: 0 1px 3px rgba(0, 0, 0, .4), 0 1px 2px rgba(0, 0, 0, .3);--shadow-md: 0 4px 12px rgba(0, 0, 0, .45), 0 1px 3px rgba(0, 0, 0, .3);--shadow-lg: 0 16px 40px rgba(0, 0, 0, .6), 0 2px 8px rgba(0, 0, 0, .4);--skeleton-a: #1f1f24;--skeleton-b: #2a2a30}*,*:before,*:after{box-sizing:border-box}html,body,#app{height:100%}html{-webkit-text-size-adjust:100%;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{margin:0;font-family:var(--font-sans);font-size:var(--text-md);line-height:var(--leading-normal);color:var(--fg);background:var(--bg);font-feature-settings:"cv11","ss01","tnum";transition:background-color var(--dur) var(--ease),color var(--dur) var(--ease)}h1,h2,h3,h4{margin:0;font-weight:var(--weight-semibold);line-height:var(--leading-tight);letter-spacing:-.01em}p{margin:0}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline;text-underline-offset:2px}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer;background:none;border:0;padding:0}code,kbd,pre,.mono{font-family:var(--font-mono);font-size:12.5px}kbd{display:inline-block;padding:0 5px;border-radius:var(--r-xs);border:1px solid var(--border-strong);background:var(--bg-subtle);font-size:var(--text-2xs);line-height:18px;color:var(--fg-muted)}:focus-visible{outline:2px solid var(--accent-ring);outline-offset:2px;border-radius:var(--r-xs)}::selection{background:var(--accent-soft-strong)}*{scrollbar-width:thin;scrollbar-color:var(--border-strong) transparent}.num{font-variant-numeric:tabular-nums}.muted{color:var(--fg-muted)}.faint{color:var(--fg-faint)}.truncate{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.page{max-width:var(--content-max);margin:0 auto;padding:var(--sp-6) var(--sp-8) var(--sp-12)}.page-head{display:flex;align-items:flex-end;justify-content:space-between;flex-wrap:wrap;gap:var(--sp-3) var(--sp-4);margin-bottom:var(--sp-6)}.page--sections{display:flex;flex-direction:column;gap:var(--sp-4)}.page--sections>.page-head{margin-bottom:var(--sp-2)}.page-title{font-size:var(--text-xl);font-weight:var(--weight-semibold);letter-spacing:-.02em}.page-sub{margin-top:var(--sp-1);color:var(--fg-muted);font-size:var(--text-sm)}.page-actions{display:flex;align-items:center;flex-wrap:wrap;gap:var(--sp-2)}.stack{display:flex;flex-direction:column;gap:var(--sp-4)}.row{display:flex;align-items:center;gap:var(--sp-2)}.grid-2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--sp-4)}@media(max-width:1100px){.grid-2{grid-template-columns:minmax(0,1fr)}.page{padding:var(--sp-5) var(--sp-5) var(--sp-10)}}@media(max-width:640px){.page{padding:var(--sp-4) var(--sp-3) var(--sp-10)}.page-title{font-size:var(--text-lg)}}.fade-enter-active,.fade-leave-active{transition:opacity var(--dur) var(--ease)}.fade-enter-from,.fade-leave-to{opacity:0}.slide-up-enter-active,.slide-up-leave-active{transition:opacity var(--dur-slow) var(--ease),transform var(--dur-slow) var(--ease)}.slide-up-enter-from,.slide-up-leave-to{opacity:0;transform:translateY(6px)}@media(prefers-reduced-motion:reduce){*,*:before,*:after{transition-duration:.01ms!important;animation-duration:.01ms!important}}
