.toast-stack[data-v-c33bf91e]{position:fixed;top:20px;right:20px;z-index:10000;display:flex;flex-direction:column;gap:10px;width:min(380px,calc(100vw - 40px));pointer-events:none}.toast-item[data-v-c33bf91e]{pointer-events:auto;cursor:pointer;display:flex;align-items:flex-start;gap:10px;padding:12px 14px;border-radius:var(--r-md);background:var(--c-surface);color:var(--c-text);border:1px solid var(--c-border-strong);border-left-width:4px;box-shadow:var(--sh-pop);font-size:var(--fs-md);line-height:1.35}.toast-item svg[data-v-c33bf91e]{flex-shrink:0;margin-top:1px}.toast-msg[data-v-c33bf91e]{word-break:break-word}.toast-item.success[data-v-c33bf91e]{border-left-color:var(--c-success)}.toast-item.success svg[data-v-c33bf91e]{color:var(--c-success)}.toast-item.error[data-v-c33bf91e]{border-left-color:var(--c-danger)}.toast-item.error svg[data-v-c33bf91e]{color:var(--c-danger)}.toast-item.warning[data-v-c33bf91e]{border-left-color:var(--c-warn)}.toast-item.warning svg[data-v-c33bf91e]{color:var(--c-warn)}.toast-item.info[data-v-c33bf91e]{border-left-color:var(--c-info)}.toast-item.info svg[data-v-c33bf91e]{color:var(--c-info)}.toast-slide-enter-active[data-v-c33bf91e],.toast-slide-leave-active[data-v-c33bf91e]{transition:all .25s ease}.toast-slide-enter-from[data-v-c33bf91e],.toast-slide-leave-to[data-v-c33bf91e]{opacity:0;transform:translate(24px)}.fb-overlay[data-v-c33bf91e]{position:fixed;top:0;right:0;bottom:0;left:0;z-index:10001;background:#0d111973;display:flex;align-items:center;justify-content:center;padding:16px}.fb-dialog[data-v-c33bf91e]{background:var(--c-surface);color:var(--c-text);border:1px solid var(--c-border);border-radius:var(--r-lg);box-shadow:var(--sh-pop);padding:22px;width:min(420px,100%)}.fb-message[data-v-c33bf91e]{margin:0 0 16px;font-size:var(--fs-lg);line-height:1.4;white-space:pre-line}.fb-input[data-v-c33bf91e]{width:100%;box-sizing:border-box;margin-bottom:16px;padding:9px 12px;font:inherit;border:1px solid var(--c-border-strong);border-radius:var(--r-sm);background:var(--c-surface);color:var(--c-text)}.fb-input[data-v-c33bf91e]:focus{outline:2px solid var(--c-accent);outline-offset:-1px}.fb-actions[data-v-c33bf91e]{display:flex;justify-content:flex-end;gap:8px}.fb-btn[data-v-c33bf91e]{padding:8px 16px;border-radius:var(--r-sm);font:inherit;font-weight:600;cursor:pointer;border:1px solid var(--c-border-strong);background:var(--c-surface);color:var(--c-text)}.fb-btn.primary[data-v-c33bf91e]{background:var(--c-accent);border-color:var(--c-accent);color:#fff}.fb-btn.primary[data-v-c33bf91e]:hover{background:var(--c-accent-hover)}.route-progress[data-v-7efb83fa]{position:fixed;top:0;left:0;right:0;height:2.5px;background:linear-gradient(90deg,var(--c-accent),var(--c-accent-hover));box-shadow:0 0 8px color-mix(in srgb,var(--c-accent) 60%,transparent);transform-origin:left center;opacity:0;pointer-events:none;z-index:1000;transition:transform .2s ease,opacity .3s ease}.route-progress.active[data-v-7efb83fa]{opacity:1}.route-progress.done[data-v-7efb83fa]{opacity:0;transition:transform .15s ease,opacity .3s ease .15s}.session-overlay[data-v-16e8a9e5]{z-index:10000}.session-text[data-v-16e8a9e5]{margin:0;color:var(--c-text-2);font-size:var(--fs-sm)}.session-countdown[data-v-16e8a9e5]{font-size:2rem;font-weight:650;font-variant-numeric:tabular-nums;text-align:center;color:var(--c-text)}.page-enter-active{transition:opacity .28s ease}.page-leave-active{transition:opacity .16s ease}.page-enter-from,.page-leave-to{opacity:0}@media (prefers-reduced-motion: reduce){.page-enter-active,.page-leave-active{transition:none}}:root{--c-bg: #FAFAFA;--c-shell: #F1F2F5;--c-surface: #FFFFFF;--c-surface-2: #F4F5F7;--c-surface-3: #EEF0F3;--c-border: #EAEBEE;--c-border-strong: #DCDEE3;--c-text: #1A2540;--c-text-2: #59606E;--c-text-3: #99A0AC;--c-navy: #1A2540;--c-navy-2: #22304F;--c-navy-hover: #283a5f;--c-accent: #FF7918;--c-accent-hover: #E86A0C;--c-accent-soft: #FFF3EA;--c-accent-border:#FFD9BC;--c-success: #1F9D6B;--c-success-soft: #E9F6F0;--c-warn: #B87503;--c-warn-soft: #FBF1E1;--c-danger: #D8484A;--c-danger-soft: #FBEBEB;--c-danger-hover: #C23E40;--c-info: #3E6FD6;--c-info-soft: #ECF1FC;--sw-indigo: #4F46E5;--sw-indigo-soft: #EEF2FF;--sw-cyan: #0891B2;--sw-cyan-soft: #ECFEFF;--sw-violet: #7C3AED;--sw-violet-soft: #F5F3FF;--sw-violet-hover: #6D28D9;--sw-pink: #EC4899;--sw-pink-soft: #FDF2F8;--r-xs: 6px;--r-sm: 8px;--r-md: 10px;--r-lg: 14px;--r-xl: 18px;--r-pill: 999px;--sh-xs: 0 1px 2px rgba(20, 25, 40, .04);--sh-sm: 0 1px 3px rgba(20, 25, 40, .06), 0 1px 2px rgba(20, 25, 40, .04);--sh-md: 0 6px 20px rgba(20, 25, 40, .08);--sh-pop: 0 12px 32px rgba(20, 25, 40, .12);--sp-1: 4px;--sp-2: 8px;--sp-3: 12px;--sp-4: 16px;--sp-5: 20px;--sp-6: 24px;--sp-7: 28px;--sp-8: 32px;--sp-10: 40px;--sp-12: 48px;--font: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--font-mono: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, monospace;--fs-xs: .72rem;--fs-sm: .8rem;--fs-md: .875rem;--fs-lg: 1rem;--fs-xl: 1.125rem;--fs-2xl: 1.375rem;--fs-3xl: 1.75rem;--topbar-h: 60px;--sidebar-w: 252px;--sidebar-w-collapsed: 72px;--page-pad: 28px;--ease: .15s ease;--color-navy: var(--c-navy);--color-orange: var(--c-accent);--color-white: #FFFFFF;--color-gray-light: var(--c-bg);--color-gray-medium: var(--c-border-strong);--color-text-dark: var(--c-text);--color-text-light: var(--c-text-2);color-scheme:light}:root[data-theme=dark]{--c-bg: #0D1119;--c-shell: #090C12;--c-surface: #141924;--c-surface-2: #1B2130;--c-surface-3: #232A3D;--c-border: #262E42;--c-border-strong: #37415A;--c-text: #EDEFF5;--c-text-2: #9CA3B5;--c-text-3: #6B7387;--c-navy: #2C3B5E;--c-navy-2: #354770;--c-navy-hover: #3F5280;--c-accent: #FF8A3D;--c-accent-hover: #FF9D5C;--c-accent-soft: #3A2417;--c-accent-border:#5A3820;--c-success: #34C08C;--c-success-soft: #12291F;--c-warn: #E0A23A;--c-warn-soft: #2E2412;--c-danger: #F0696B;--c-danger-soft: #2E1719;--c-danger-hover: #FF8688;--c-info: #6D93E8;--c-info-soft: #17223A;--sw-indigo: #8B93F5;--sw-indigo-soft: #22254A;--sw-cyan: #3FD0EA;--sw-cyan-soft: #10313A;--sw-violet: #B08AFC;--sw-violet-soft: #271F42;--sw-violet-hover: #C7A6FF;--sw-pink: #F472B6;--sw-pink-soft: #3A1C2E;--sh-xs: 0 1px 2px rgba(0, 0, 0, .3);--sh-sm: 0 1px 3px rgba(0, 0, 0, .4), 0 1px 2px rgba(0, 0, 0, .3);--sh-md: 0 6px 20px rgba(0, 0, 0, .45);--sh-pop: 0 12px 32px rgba(0, 0, 0, .55);color-scheme:dark}*{margin:0;padding:0;box-sizing:border-box}html{-webkit-text-size-adjust:100%;overflow-x:clip}body{font-family:var(--font);font-size:16px;line-height:1.5;background-color:var(--c-bg);color:var(--c-text);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;overflow-x:clip}#app{min-height:100vh}button,input,select,textarea{font:inherit;color:inherit}button{background:none;border:none;cursor:pointer}a{color:inherit;text-decoration:none}h1,h2,h3,h4{font-weight:650;letter-spacing:-.01em;color:var(--c-text)}::selection{background:var(--c-accent-soft)}*{scrollbar-width:thin;scrollbar-color:var(--c-border-strong) transparent}*::-webkit-scrollbar{width:8px;height:8px}*::-webkit-scrollbar-thumb{background:var(--c-border-strong);border-radius:var(--r-pill)}*::-webkit-scrollbar-track{background:transparent}.ui-page{min-height:calc(100vh - var(--topbar-h));display:flex;flex-direction:column;background:var(--c-bg)}.ui-page-header{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--sp-4);padding:var(--sp-6) var(--page-pad);border-bottom:1px solid var(--c-border);background:var(--c-surface)}.ui-page-title{font-size:var(--fs-2xl);font-weight:650;margin:0}.ui-page-sub{font-size:var(--fs-sm);color:var(--c-text-3);margin:4px 0 0}.ui-page-actions{display:flex;align-items:center;gap:var(--sp-2);flex-shrink:0}.ui-page-body{flex:1;padding:var(--sp-6) var(--page-pad);display:flex;flex-direction:column;gap:var(--sp-5)}.ui-page-body--narrow{max-width:880px;width:100%}.ui-card{background:var(--c-surface);border:1px solid var(--c-border);border-radius:var(--r-lg)}.ui-card--pad{padding:var(--sp-5)}.ui-card--hover{transition:border-color var(--ease),box-shadow var(--ease)}.ui-card--hover:hover{border-color:var(--c-border-strong);box-shadow:var(--sh-sm)}.ui-card-head{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-3);padding:var(--sp-4) var(--sp-5);border-bottom:1px solid var(--c-border)}.ui-card-title{font-size:var(--fs-md);font-weight:600;color:var(--c-text)}.ui-card-sub{font-size:var(--fs-xs);color:var(--c-text-3)}.ui-btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--sp-2);height:36px;padding:0 var(--sp-4);border-radius:var(--r-sm);border:1px solid transparent;font-size:var(--fs-sm);font-weight:600;white-space:nowrap;transition:background var(--ease),border-color var(--ease),color var(--ease),opacity var(--ease)}.ui-btn:disabled{opacity:.5;cursor:default;pointer-events:none}.ui-btn svg{width:15px;height:15px}.ui-btn--primary{background:var(--c-accent);color:#fff}.ui-btn--primary:hover{background:var(--c-accent-hover)}.ui-btn--dark{background:var(--c-navy);color:#fff}.ui-btn--dark:hover{background:var(--c-navy-hover)}.ui-btn--ghost{background:var(--c-surface);border-color:var(--c-border-strong);color:var(--c-text-2)}.ui-btn--ghost:hover{background:var(--c-surface-2);color:var(--c-text)}.ui-btn--subtle{background:transparent;color:var(--c-text-2)}.ui-btn--subtle:hover{background:var(--c-surface-2);color:var(--c-text)}.ui-btn--danger{background:var(--c-surface);border-color:var(--c-danger-soft);color:var(--c-danger)}.ui-btn--danger:hover{background:var(--c-danger-soft)}.ui-btn--sm{height:30px;padding:0 var(--sp-3);font-size:var(--fs-xs)}.ui-btn--icon{width:36px;padding:0}.ui-btn--icon.ui-btn--sm{width:30px}.ui-link{color:var(--c-accent);font-size:var(--fs-sm);font-weight:600;transition:color var(--ease)}.ui-link:hover{color:var(--c-accent-hover)}.ui-link:disabled{color:var(--c-text-3);cursor:default;pointer-events:none}.ui-field{display:flex;flex-direction:column;gap:6px}.ui-label{font-size:var(--fs-xs);font-weight:600;color:var(--c-text-2)}.ui-label-opt{font-weight:400;color:var(--c-text-3)}.ui-input,.ui-select,.ui-textarea{width:100%;height:38px;padding:0 var(--sp-3);border:1px solid var(--c-border-strong);border-radius:var(--r-sm);background:var(--c-surface);font-size:var(--fs-md);color:var(--c-text);outline:none;transition:border-color var(--ease),box-shadow var(--ease)}.ui-textarea{height:auto;padding:var(--sp-2) var(--sp-3);resize:vertical;line-height:1.5}.ui-input::placeholder,.ui-textarea::placeholder{color:var(--c-text-3)}.ui-input:focus,.ui-select:focus,.ui-textarea:focus{border-color:var(--c-accent);box-shadow:0 0 0 3px #ff79181a}.ui-input--search{padding-left:34px}.ui-search{position:relative}.ui-search>svg{position:absolute;left:11px;top:50%;transform:translateY(-50%);width:15px;height:15px;color:var(--c-text-3)}.ui-badge{display:inline-flex;align-items:center;gap:5px;padding:2px 9px;border-radius:var(--r-pill);font-size:var(--fs-xs);font-weight:600;line-height:1.6;background:var(--c-surface-2);color:var(--c-text-2)}.ui-badge--dot:before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor}.ui-badge--success{background:var(--c-success-soft);color:var(--c-success)}.ui-badge--warn{background:var(--c-warn-soft);color:var(--c-warn)}.ui-badge--danger{background:var(--c-danger-soft);color:var(--c-danger)}.ui-badge--info{background:var(--c-info-soft);color:var(--c-info)}.ui-badge--accent{background:var(--c-accent-soft);color:var(--c-accent)}.ui-count{display:inline-flex;align-items:center;justify-content:center;min-width:18px;height:18px;padding:0 5px;border-radius:var(--r-pill);background:var(--c-accent);color:#fff;font-size:var(--fs-xs);font-weight:700}.ui-tabs{display:inline-flex;gap:2px;padding:3px;background:var(--c-surface-2);border-radius:var(--r-md)}.ui-tab{display:inline-flex;align-items:center;gap:6px;padding:6px 14px;border-radius:var(--r-xs);font-size:var(--fs-sm);font-weight:500;color:var(--c-text-3);transition:background var(--ease),color var(--ease)}.ui-tab:hover{color:var(--c-text)}.ui-tab--active{background:var(--c-surface);color:var(--c-text);font-weight:600;box-shadow:var(--sh-xs)}.ui-toolbar{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-3);flex-wrap:wrap}.ui-table-wrap{overflow-x:auto;border:1px solid var(--c-border);border-radius:var(--r-lg);background:var(--c-surface)}.ui-table{width:100%;border-collapse:collapse}.ui-table th{text-align:left;padding:var(--sp-3) var(--sp-4);font-size:var(--fs-xs);font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--c-text-3);background:var(--c-surface-2);border-bottom:1px solid var(--c-border);white-space:nowrap}.ui-table td{padding:var(--sp-3) var(--sp-4);font-size:var(--fs-md);border-bottom:1px solid var(--c-border)}.ui-table tr:last-child td{border-bottom:none}.ui-table tbody tr{transition:background var(--ease)}.ui-table tbody tr:hover{background:var(--c-surface-2)}.ui-state{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--sp-3);padding:var(--sp-12) var(--sp-6);text-align:center;color:var(--c-text-3);font-size:var(--fs-md);background:var(--c-surface);border:1px solid var(--c-border);border-radius:var(--r-lg)}.ui-state--danger{color:var(--c-danger)}.ui-state svg{opacity:.5}.ui-spinner{width:26px;height:26px;border:2.5px solid var(--c-border-strong);border-top-color:var(--c-accent);border-radius:50%;animation:ui-spin .7s linear infinite}.ui-spinner--sm{width:15px;height:15px;border-width:2px}.ui-spinner--on-dark{border-color:#ffffff4d;border-top-color:#fff}@keyframes ui-spin{to{transform:rotate(360deg)}}.ui-skeleton{background:linear-gradient(90deg,var(--c-surface-2) 25%,var(--c-surface-3) 37%,var(--c-surface-2) 63%);background-size:400% 100%;animation:ui-shimmer 1.4s ease infinite;border-radius:var(--r-xs)}@keyframes ui-shimmer{0%{background-position:100% 50%}to{background-position:0 50%}}.ui-stat{background:var(--c-surface);border:1px solid var(--c-border);border-radius:var(--r-lg);padding:var(--sp-5);display:flex;flex-direction:column;gap:6px}.ui-stat-label{font-size:var(--fs-xs);font-weight:600;letter-spacing:.03em;text-transform:uppercase;color:var(--c-text-3)}.ui-stat-value{font-size:var(--fs-3xl);font-weight:650;line-height:1;letter-spacing:-.02em}.ui-stat-foot{font-size:var(--fs-xs);color:var(--c-text-3);display:flex;align-items:center;gap:4px}.ui-delta--up{color:var(--c-success)}.ui-delta--down{color:var(--c-danger)}.ui-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#14192866;-webkit-backdrop-filter:blur(1px);backdrop-filter:blur(1px);display:flex;align-items:center;justify-content:center;padding:var(--sp-5);z-index:100}.ui-modal{width:100%;max-width:480px;max-height:90vh;display:flex;flex-direction:column;background:var(--c-surface);border-radius:var(--r-xl);box-shadow:var(--sh-pop);overflow:hidden}.ui-modal--sm{max-width:420px}.ui-modal--md{max-width:520px}.ui-modal--lg{max-width:760px}.ui-modal--xl{max-width:860px}.ui-modal-head{display:flex;align-items:center;justify-content:space-between;padding:var(--sp-4) var(--sp-5);border-bottom:1px solid var(--c-border)}.ui-modal-title{font-size:var(--fs-lg);font-weight:650}.ui-modal-body{padding:var(--sp-5);overflow-y:auto;display:flex;flex-direction:column;gap:var(--sp-4)}.ui-modal-foot{display:flex;justify-content:flex-end;gap:var(--sp-2);padding:var(--sp-4) var(--sp-5);border-top:1px solid var(--c-border)}.ui-fb-ok{font-size:var(--fs-xs);color:var(--c-success);font-weight:600}.ui-fb-err{font-size:var(--fs-xs);color:var(--c-danger)}.ui-muted{color:var(--c-text-3)}.ui-mono{font-family:var(--font-mono)}.ui-truncate{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}@media (max-width: 1024px){:root{--page-pad: 20px}}@media (max-width: 640px){:root{--page-pad: 16px}.ui-page-header{flex-direction:column;align-items:stretch;padding:var(--sp-4) var(--page-pad)}.ui-page-actions{width:100%;flex-wrap:wrap}.ui-page-actions .ui-btn{flex:1 1 auto}.ui-page-body{padding:var(--sp-4) var(--page-pad);gap:var(--sp-4)}.ui-page-title{font-size:var(--fs-xl)}.ui-card-head{flex-wrap:wrap}.ui-toolbar{flex-direction:column;align-items:stretch}.ui-overlay{padding:var(--sp-3);align-items:flex-end}.ui-modal{max-width:100%;max-height:85vh;border-radius:var(--r-xl) var(--r-xl) 0 0}.ui-stat-value{font-size:var(--fs-2xl)}}
