.sidebar[data-v-3ca0f052]{display:flex;flex-direction:column;width:var(--sidebar-w);flex-shrink:0;height:100dvh;position:sticky;top:0;background:var(--sidebar-bg);color:var(--sidebar-text);border-right:1px solid var(--sidebar-border);z-index:var(--z-sidebar)}.sidebar-brand[data-v-3ca0f052]{display:flex;align-items:center;gap:var(--sp-3);height:var(--topbar-h);padding:0 var(--sp-5);flex-shrink:0;border-bottom:1px solid var(--sidebar-border)}.brand-mark[data-v-3ca0f052]{display:grid;place-items:center;width:30px;height:30px;flex-shrink:0;border-radius:var(--r);background:var(--brand);color:#fff}.brand-text[data-v-3ca0f052]{display:flex;flex-direction:column;line-height:1.15;min-width:0}.brand-text strong[data-v-3ca0f052]{font-size:var(--fs-body-lg);font-weight:var(--fw-bold);color:var(--text-heading);letter-spacing:var(--tracking-tight)}.brand-text small[data-v-3ca0f052]{font-size:var(--fs-micro);font-weight:var(--fw-semibold);letter-spacing:var(--tracking-wide);text-transform:uppercase;color:var(--sidebar-section)}.sidebar-close[data-v-3ca0f052]{display:none;margin-left:auto;padding:var(--sp-2);border-radius:var(--r-sm);color:var(--sidebar-text);transition:background var(--dur) var(--ease),color var(--dur) var(--ease)}.sidebar-close[data-v-3ca0f052]:hover{background:var(--bg-hover);color:var(--text-heading)}.sidebar-nav[data-v-3ca0f052]{flex:1;padding:var(--sp-6) var(--sp-4) var(--sp-4);min-height:0}.nav-label[data-v-3ca0f052]{padding:0 var(--sp-3);margin-bottom:var(--sp-3);font-size:var(--fs-micro);font-weight:var(--fw-semibold);letter-spacing:var(--tracking-wide);text-transform:uppercase;color:var(--sidebar-section)}.nav-group[data-v-3ca0f052]{display:flex;flex-direction:column;gap:var(--sp-1)}.nav-item[data-v-3ca0f052]{display:flex;align-items:center;gap:var(--sp-3);width:100%;min-height:var(--h-control);padding:0 var(--sp-3);border-radius:var(--r);font-size:var(--fs-body);font-weight:var(--fw-medium);color:var(--sidebar-text);transition:background var(--dur) var(--ease),color var(--dur) var(--ease)}.nav-item[data-v-3ca0f052]:hover{background:var(--bg-hover);color:var(--text-heading)}.nav-item.active[data-v-3ca0f052]{background:var(--brand-soft);color:var(--sidebar-text-active);font-weight:var(--fw-medium)}.nav-item[data-v-3ca0f052] svg{flex-shrink:0}.sidebar-footer[data-v-3ca0f052]{padding:var(--sp-4);flex-shrink:0;border-top:1px solid var(--sidebar-border)}.nav-item-danger[data-v-3ca0f052]:hover{background:var(--err-soft);color:var(--err)}.sidebar-overlay[data-v-3ca0f052]{display:none}@media(max-width:1023px){.sidebar[data-v-3ca0f052]{position:fixed;inset:0 auto 0 0;transform:translate(-100%);transition:transform var(--dur) var(--ease);box-shadow:var(--sh-pop)}.sidebar.is-open[data-v-3ca0f052]{transform:translate(0)}.sidebar-close[data-v-3ca0f052]{display:block}.sidebar-overlay[data-v-3ca0f052]{display:block;position:fixed;top:0;right:0;bottom:0;left:0;background:var(--bg-overlay);z-index:calc(var(--z-sidebar) - 1);animation:fade-in var(--dur) var(--ease)}}.notif[data-v-98a2e89c]{position:relative}.notif-trigger[data-v-98a2e89c]{position:relative;display:grid;place-items:center;width:var(--h-control);height:var(--h-control);border-radius:var(--r);color:var(--text-body);background:var(--bg-subtle);transition:background var(--dur) var(--ease),color var(--dur) var(--ease)}.notif-trigger[data-v-98a2e89c]:hover{background:var(--brand-soft);color:var(--brand)}.notif-count[data-v-98a2e89c]{position:absolute;top:-3px;right:-3px;min-width:18px;height:18px;padding:0 0 1px;display:grid;place-items:center;border-radius:var(--r-pill);background:var(--err);color:#fff;font-size:var(--fs-micro);line-height:1;font-weight:var(--fw-bold);font-variant-numeric:tabular-nums;border:2px solid var(--bg-surface)}.notif-count.is-wide[data-v-98a2e89c]{padding:0 4px 1px}.notif-panel[data-v-98a2e89c]{position:absolute;top:calc(100% + 10px);right:0;width:min(360px,calc(100vw - 32px));background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--r);box-shadow:var(--sh-pop);z-index:var(--z-dropdown);overflow:hidden}.notif-head[data-v-98a2e89c]{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(--border)}.notif-head h3[data-v-98a2e89c]{font-size:var(--fs-h3)}.notif-mark[data-v-98a2e89c]{display:inline-flex;align-items:center;gap:var(--sp-1);font-size:var(--fs-caption);font-weight:var(--fw-semibold);color:var(--brand)}.notif-mark[data-v-98a2e89c]:hover{color:var(--brand-hover)}.notif-list[data-v-98a2e89c]{max-height:min(420px,60vh)}.notif-state[data-v-98a2e89c]{padding:var(--sp-6);text-align:center;font-size:var(--fs-caption);color:var(--text-muted)}.notif-empty[data-v-98a2e89c]{display:flex;flex-direction:column;align-items:center;gap:var(--sp-2);padding:var(--sp-8) var(--sp-6);text-align:center}.notif-item[data-v-98a2e89c]{display:flex;align-items:flex-start;gap:var(--sp-3);width:100%;padding:var(--sp-3) var(--sp-5);text-align:left;border-bottom:1px solid var(--border);transition:background var(--dur-fast) var(--ease)}.notif-item[data-v-98a2e89c]:last-child{border-bottom:none}.notif-item[data-v-98a2e89c]:hover{background:var(--bg-hover)}.notif-item.unread .notif-title[data-v-98a2e89c]{color:var(--text-heading)}.notif-body[data-v-98a2e89c]{display:flex;flex-direction:column;gap:2px;min-width:0;flex:1}.notif-title[data-v-98a2e89c]{font-size:var(--fs-label);font-weight:var(--fw-semibold);color:var(--text-heading)}.notif-msg[data-v-98a2e89c]{font-size:var(--fs-caption);color:var(--text-body);line-height:var(--lh-snug);display:-webkit-box;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.notif-time[data-v-98a2e89c]{margin-top:2px;font-size:var(--fs-micro);color:var(--text-muted)}.notif-dot[data-v-98a2e89c]{width:6px;height:6px;margin-top:6px;border-radius:var(--r-pill);background:var(--brand);flex-shrink:0}.pop-enter-active[data-v-98a2e89c],.pop-leave-active[data-v-98a2e89c]{transition:opacity var(--dur) var(--ease),transform var(--dur) var(--ease)}.pop-enter-from[data-v-98a2e89c],.pop-leave-to[data-v-98a2e89c]{opacity:0;transform:translateY(-6px) scale(.98)}@media(max-width:640px){.notif-panel[data-v-98a2e89c]{position:fixed;top:calc(var(--topbar-h) + var(--sp-2));left:var(--sp-3);right:var(--sp-3);width:auto;max-width:380px;margin-left:auto;max-height:calc(100dvh - var(--topbar-h) - var(--sp-6));display:flex;flex-direction:column}.notif-head[data-v-98a2e89c]{flex-shrink:0;padding:var(--sp-3) var(--sp-4)}.notif-mark[data-v-98a2e89c]{flex-shrink:0;white-space:nowrap}.notif-list[data-v-98a2e89c]{max-height:none;flex:1;min-height:0}.notif-item[data-v-98a2e89c]{padding:var(--sp-3) var(--sp-4)}.notif-empty[data-v-98a2e89c]{padding:var(--sp-7) var(--sp-4)}}.face[data-v-1f0360ac]{width:100%;height:100%;display:block}.topbar[data-v-80698945]{position:sticky;top:0;z-index:calc(var(--z-sidebar) - 10);display:flex;align-items:center;gap:var(--sp-4);height:var(--topbar-h);padding:0 var(--sp-6);background:#ffffffd9;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-bottom:1px solid var(--border)}.topbar-burger[data-v-80698945]{display:none;place-items:center;width:40px;height:40px;border-radius:var(--r);background:var(--bg-subtle);color:var(--text-heading);transition:background var(--dur) var(--ease)}.topbar-burger[data-v-80698945]:hover{background:var(--brand-soft);color:var(--brand)}.topbar-actions[data-v-80698945]{display:flex;align-items:center;gap:var(--sp-3);margin-left:auto}.user-menu[data-v-80698945]{position:relative}.user-trigger[data-v-80698945]{display:flex;align-items:center;gap:var(--sp-3);padding:var(--sp-1) var(--sp-2) var(--sp-1) var(--sp-1);border-radius:var(--r-pill);transition:background var(--dur) var(--ease)}.user-trigger[data-v-80698945]:hover{background:var(--bg-hover)}.user-meta[data-v-80698945]{display:flex;flex-direction:column;align-items:flex-start;line-height:1.25;min-width:0}.user-name[data-v-80698945]{font-size:var(--fs-label);font-weight:var(--fw-semibold);color:var(--text-heading);max-width:140px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.user-role[data-v-80698945]{font-size:var(--fs-micro);color:var(--text-muted)}.user-caret[data-v-80698945]{color:var(--text-muted);transition:transform var(--dur) var(--ease)}.user-caret.flipped[data-v-80698945]{transform:rotate(180deg)}.user-panel[data-v-80698945]{position:absolute;top:calc(100% + 10px);right:0;width:250px;padding:var(--sp-2);background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--r);box-shadow:var(--sh-pop);z-index:var(--z-dropdown)}.user-panel-head[data-v-80698945]{display:flex;align-items:center;gap:var(--sp-3);padding:var(--sp-3)}.user-panel-id[data-v-80698945]{display:flex;flex-direction:column;min-width:0;line-height:1.35}.user-panel-id strong[data-v-80698945]{font-size:var(--fs-label);color:var(--text-heading);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.user-panel-id small[data-v-80698945]{font-size:var(--fs-caption);color:var(--text-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.divider[data-v-80698945]{margin:var(--sp-2) 0}.user-action[data-v-80698945]{display:flex;align-items:center;gap:var(--sp-3);width:100%;padding:var(--sp-3);border-radius:var(--r);font-size:var(--fs-body);font-weight:var(--fw-medium);color:var(--text-body);transition:background var(--dur) var(--ease),color var(--dur) var(--ease)}.user-action[data-v-80698945]:hover{background:var(--bg-hover);color:var(--text-heading)}.user-action.danger[data-v-80698945]:hover{background:var(--err-soft);color:var(--err)}.pop-enter-active[data-v-80698945],.pop-leave-active[data-v-80698945]{transition:opacity var(--dur) var(--ease),transform var(--dur) var(--ease)}.pop-enter-from[data-v-80698945],.pop-leave-to[data-v-80698945]{opacity:0;transform:translateY(-6px) scale(.98)}@media(max-width:1023px){.topbar-burger[data-v-80698945]{display:grid}}@media(max-width:640px){.topbar[data-v-80698945]{padding:0 var(--sp-4);gap:var(--sp-3)}.user-meta[data-v-80698945],.user-caret[data-v-80698945]{display:none}}.footer[data-v-7b154d3b]{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-4);flex-wrap:wrap;padding:var(--sp-5) 0 0;margin-top:var(--sp-6);border-top:1px solid var(--border)}.footer-copy[data-v-7b154d3b],.footer-meta[data-v-7b154d3b]{font-size:var(--fs-caption);color:var(--text-muted)}@media(max-width:640px){.footer[data-v-7b154d3b]{justify-content:center;text-align:center}}.shell[data-v-5c484908]{display:flex;min-height:100dvh;background:var(--bg-page)}.shell-main[data-v-5c484908]{flex:1;display:flex;flex-direction:column;min-width:0}.shell-scroll[data-v-5c484908]{flex:1;display:flex;flex-direction:column;width:100%;max-width:var(--content-max);margin:0 auto;padding:var(--sp-6)}.shell-content[data-v-5c484908]{flex:1;min-width:0}.shell-footer[data-v-5c484908]{flex-shrink:0}@media(max-width:640px){.shell-scroll[data-v-5c484908]{padding:var(--sp-4)}}.toast-host[data-v-ccc1590b]{position:fixed;top:var(--sp-5);right:var(--sp-5);z-index:var(--z-toast);display:flex;flex-direction:column;gap:var(--sp-3);width:min(380px,calc(100vw - 32px));pointer-events:none}.toast[data-v-ccc1590b]{display:flex;align-items:center;gap:var(--sp-3);padding:var(--sp-3) var(--sp-4);background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--r);box-shadow:var(--sh-pop);pointer-events:auto}.toast-icon[data-v-ccc1590b]{color:var(--tone-fg);flex-shrink:0}.toast-msg[data-v-ccc1590b]{flex:1;font-size:var(--fs-label);font-weight:var(--fw-medium);color:var(--text-heading);line-height:var(--lh-snug)}.toast-close[data-v-ccc1590b]{color:var(--text-muted);flex-shrink:0;padding:2px;border-radius:var(--r-sm)}.toast-close[data-v-ccc1590b]:hover{color:var(--text-heading);background:var(--bg-hover)}.toast-enter-active[data-v-ccc1590b],.toast-leave-active[data-v-ccc1590b]{transition:all var(--dur) var(--ease)}.toast-enter-from[data-v-ccc1590b],.toast-leave-to[data-v-ccc1590b]{opacity:0;transform:translate(24px)}.toast-leave-active[data-v-ccc1590b]{position:absolute}@media(max-width:640px){.toast-host[data-v-ccc1590b]{top:auto;bottom:var(--sp-4);left:var(--sp-4);right:var(--sp-4);width:auto}}.boot[data-v-f851cd99]{display:grid;place-items:center;min-height:100dvh;background:var(--bg-page)}.boot-spinner[data-v-f851cd99]{width:32px;height:32px;border:3px solid var(--brand-border);border-top-color:var(--brand);border-radius:50%;animation:spin .7s linear infinite}:root{--n-0: #ffffff;--n-25: #fcfcfd;--n-50: #f9fafb;--n-100: #f2f4f7;--n-200: #e4e7ec;--n-300: #d0d5dd;--n-400: #98a2b3;--n-500: #667085;--n-600: #475467;--n-700: #344054;--n-800: #1d2939;--n-900: #101828;--brand: #2563eb;--brand-hover: #1d4ed8;--brand-active: #1e40af;--brand-soft: #eff4ff;--brand-border: #b9d0fd;--brand-ink: #1e40af;--ok: var(--brand);--ok-soft: var(--brand-soft);--ok-border: var(--brand-border);--warn: #b54708;--warn-soft: #fffaeb;--warn-border: #fedf89;--err: #b42318;--err-soft: #fef3f2;--err-border: #fecdca;--info: #175cd3;--info-soft: #eff8ff;--info-border: #b2ddff;--bg-page: var(--n-50);--bg-surface: var(--n-0);--bg-subtle: var(--n-50);--bg-hover: var(--n-100);--bg-overlay: rgba(16, 24, 40, .5);--border: #eceff4;--border-strong: #dde2ea;--sidebar-bg: var(--n-0);--sidebar-text: var(--n-600);--sidebar-text-active: var(--brand-ink);--sidebar-section: var(--n-400);--sidebar-border: var(--n-200);--text-heading: var(--n-900);--text-body: var(--n-700);--text-muted: var(--n-500);--text-faint: var(--n-400);--text-inverse: var(--n-0);--font-sans: "Ubuntu", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--font-mono: "Ubuntu Mono", ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;--fs-display: 1.625rem;--fs-h1: 1.375rem;--fs-h2: 1.125rem;--fs-h3: 1rem;--fs-body-lg: 1rem;--fs-body: .9375rem;--fs-label: .875rem;--fs-caption: .8125rem;--fs-micro: .75rem;--lh-tight: 1.25;--lh-snug: 1.45;--lh-normal: 1.6;--fw-regular: 400;--fw-medium: 500;--fw-semibold: 500;--fw-bold: 700;--tracking-tight: -.011em;--tracking-normal: 0;--tracking-wide: .04em;--sp-1: .25rem;--sp-2: .5rem;--sp-3: .75rem;--sp-4: 1rem;--sp-5: 1.25rem;--sp-6: 1.5rem;--sp-7: 1.75rem;--sp-8: 2rem;--sp-10: 2.5rem;--sp-12: 3rem;--r: 10px;--r-sm: 8px;--r-pill: 999px;--h-control: 40px;--h-control-sm: 34px;--h-control-lg: 46px;--icon: 16px;--icon-sm: 14px;--sh-card: 0 1px 3px rgba(16, 24, 40, .022);--sh-raise: 0 1px 3px rgba(16, 24, 40, .025), 0 2px 6px rgba(16, 24, 40, .03);--sh-pop: 0 4px 14px rgba(16, 24, 40, .06), 0 1px 3px rgba(16, 24, 40, .025);--sidebar-w: 248px;--topbar-h: 60px;--rail-w: 312px;--content-max: 1440px;--ease: cubic-bezier(.4, 0, .2, 1);--dur-fast: .1s;--dur: .16s;--z-dropdown: 100;--z-sidebar: 200;--z-overlay: 300;--z-modal: 400;--z-toast: 500}.tone-neutral{--tone-fg: var(--n-600);--tone-bg: var(--n-100);--tone-border: var(--n-200)}.tone-brand{--tone-fg: var(--brand-ink);--tone-bg: var(--brand-soft);--tone-border: var(--brand-border)}.tone-ok{--tone-fg: var(--ok);--tone-bg: var(--ok-soft);--tone-border: var(--ok-border)}.tone-warn{--tone-fg: var(--warn);--tone-bg: var(--warn-soft);--tone-border: var(--warn-border)}.tone-err{--tone-fg: var(--err);--tone-bg: var(--err-soft);--tone-border: var(--err-border)}.tone-info{--tone-fg: var(--info);--tone-bg: var(--info-soft);--tone-border: var(--info-border)}.tone-peach{--tone-fg: #b85c22;--tone-bg: #fdf8f4;--tone-border: #f4e6da}.tone-sky{--tone-fg: #2f6ac4;--tone-bg: #f5f8fd;--tone-border: #dfe8f6}.tone-lilac{--tone-fg: #6a53b8;--tone-bg: #f8f6fd;--tone-border: #e6e0f5}*,*:before,*:after{box-sizing:border-box}*{margin:0}html{-webkit-text-size-adjust:100%}body{font-family:var(--font-sans);font-size:var(--fs-body);line-height:var(--lh-normal);color:var(--text-body);background:var(--bg-page);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-variant-numeric:tabular-nums}img,svg,video{display:block;max-width:100%}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer;background:none;border:none;padding:0}a{color:inherit;text-decoration:none}ul,ol{list-style:none;padding:0}table{border-collapse:collapse;width:100%}:focus-visible{outline:2px solid var(--brand);outline-offset:1px;border-radius:var(--r)}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}h1,h2,h3,h4{color:var(--text-heading);font-weight:var(--fw-semibold);line-height:var(--lh-tight);letter-spacing:var(--tracking-tight)}h1{font-size:var(--fs-h1)}h2{font-size:var(--fs-h2)}h3{font-size:var(--fs-h3)}.text-muted{color:var(--text-muted)}.text-caption{font-size:var(--fs-caption);color:var(--text-muted);line-height:var(--lh-snug)}.text-label{font-size:var(--fs-label);font-weight:var(--fw-medium);color:var(--text-heading)}.text-overline{font-size:var(--fs-micro);font-weight:var(--fw-semibold);letter-spacing:var(--tracking-wide);text-transform:uppercase;color:var(--text-muted)}.text-mono{font-family:var(--font-mono);font-size:var(--fs-label)}.card{background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--r);box-shadow:var(--sh-card)}.card .card{box-shadow:none}.card-header{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-4);min-height:58px;padding:var(--sp-4) var(--sp-5);border-bottom:1px solid var(--border)}.card-header h2,.card-header h3{display:flex;align-items:center;gap:var(--sp-2)}.card-body{padding:var(--sp-5)}.icon-chip{display:grid;place-items:center;flex-shrink:0;width:32px;height:32px;border-radius:var(--r);background:var(--tone-bg, var(--n-100));color:var(--tone-fg, var(--n-600))}.icon-chip-sm{width:28px;height:28px;border-radius:var(--r-sm)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--sp-2);height:var(--h-control);padding:0 var(--sp-4);border:1px solid transparent;border-radius:var(--r);font-size:var(--fs-body);font-weight:var(--fw-medium);white-space:nowrap;transition:background var(--dur) var(--ease),border-color var(--dur) var(--ease),color var(--dur) var(--ease)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:var(--brand);border-color:var(--brand);color:var(--text-inverse)}.btn-primary:hover:not(:disabled){background:var(--brand-hover);border-color:var(--brand-hover)}.btn-primary:active:not(:disabled){background:var(--brand-active);border-color:var(--brand-active)}.btn-secondary{background:var(--bg-surface);border-color:var(--border-strong);color:var(--text-body);box-shadow:var(--sh-card)}.btn-secondary:hover:not(:disabled){background:var(--bg-subtle);border-color:var(--n-300);color:var(--text-heading)}.btn-secondary:active:not(:disabled){background:var(--bg-hover);border-color:var(--n-300);box-shadow:none}.btn-ghost{background:transparent;color:var(--text-muted)}.btn-ghost:hover:not(:disabled){background:var(--bg-hover);color:var(--text-heading)}.btn-danger{background:var(--err);border-color:var(--err);color:var(--text-inverse)}.btn-danger:hover:not(:disabled){background:#912018;border-color:#912018}.btn-sm{height:var(--h-control-sm);padding:0 var(--sp-3);font-size:var(--fs-label)}.btn-lg{height:var(--h-control-lg);padding:0 var(--sp-5);font-size:var(--fs-body-lg)}.btn-icon{width:var(--h-control);padding:0;flex-shrink:0}.btn-icon.btn-sm{width:var(--h-control-sm)}.btn-block{width:100%}.field{display:flex;flex-direction:column;gap:var(--sp-2)}.field-label{font-size:var(--fs-label);font-weight:var(--fw-medium);color:var(--text-heading)}.field-hint{font-size:var(--fs-caption);color:var(--text-muted)}.field-error{font-size:var(--fs-caption);color:var(--err)}.input,.select{width:100%;height:var(--h-control);padding:0 var(--sp-3);background:var(--bg-surface);border:1px solid var(--border-strong);border-radius:var(--r);font-size:var(--fs-body);color:var(--text-heading);box-shadow:none;transition:border-color var(--dur) var(--ease)}.textarea{width:100%;min-height:88px;padding:var(--sp-3);background:var(--bg-surface);border:1px solid var(--border-strong);border-radius:var(--r);font-size:var(--fs-body);line-height:var(--lh-normal);color:var(--text-heading);box-shadow:none;resize:vertical;transition:border-color var(--dur) var(--ease)}.input::placeholder,.textarea::placeholder{color:var(--text-faint)}.input:hover:not(:disabled),.select:hover:not(:disabled),.textarea:hover:not(:disabled){border-color:var(--n-300)}.input:focus:not(:disabled),.select:focus:not(:disabled),.textarea:focus:not(:disabled){outline:none;border-color:var(--brand);box-shadow:none}.input:disabled,.select:disabled,.textarea:disabled{background:var(--bg-subtle);color:var(--text-muted);cursor:not-allowed}.input.has-error,.select.has-error,.textarea.has-error{border-color:var(--err)}.select{-webkit-appearance:none;-moz-appearance:none;appearance:none;padding-right:var(--sp-8);background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%23667085' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right var(--sp-3) center;cursor:pointer}.input-group{position:relative;display:flex;align-items:center}.input-group .input{padding-left:var(--sp-8)}.input-group .input-icon{position:absolute;top:50%;left:var(--sp-3);transform:translateY(-50%);color:var(--text-faint);pointer-events:none}.segmented{display:inline-flex;align-items:center;height:var(--h-control);padding:3px;background:var(--bg-subtle);border:1px solid var(--border);border-radius:var(--r)}.segmented-item{display:inline-flex;align-items:center;justify-content:center;gap:var(--sp-2);height:100%;min-width:30px;padding:0 var(--sp-2);white-space:nowrap;border-radius:var(--r-sm);color:var(--text-muted);transition:background var(--dur) var(--ease),color var(--dur) var(--ease)}.segmented-item:hover{color:var(--text-heading)}.segmented-item.active{background:var(--bg-surface);color:var(--text-heading);box-shadow:var(--sh-card)}.badge{display:inline-flex;align-items:center;gap:var(--sp-1);height:22px;padding:0 var(--sp-2);border-radius:var(--r-sm);font-size:var(--fs-caption);font-weight:var(--fw-medium);white-space:nowrap;background:var(--tone-bg, var(--n-100));color:var(--tone-fg, var(--n-600));border:1px solid var(--tone-border, var(--n-200))}.badge-dot:before{content:"";width:6px;height:6px;border-radius:var(--r-pill);background:currentColor;flex-shrink:0}.table-wrap{width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table{min-width:620px;font-size:var(--fs-body)}.table thead th{height:40px;padding:0 var(--sp-4);background:var(--bg-subtle);font-size:var(--fs-caption);font-weight:var(--fw-medium);color:var(--text-muted);text-align:left;white-space:nowrap;border-bottom:1px solid var(--border)}.table thead th:first-child,.table tbody td:first-child{padding-left:var(--sp-5)}.table thead th:last-child,.table tbody td:last-child{padding-right:var(--sp-5)}.table tbody td{padding:var(--sp-3) var(--sp-4);border-bottom:1px solid var(--border);color:var(--text-body);vertical-align:middle}.table tbody tr{transition:background var(--dur-fast) var(--ease)}.table tbody tr:hover{background:var(--bg-subtle)}.table tbody tr:last-child td{border-bottom:none}.table .cell-strong{font-weight:var(--fw-medium);color:var(--text-heading)}.table .cell-actions{display:flex;align-items:center;gap:var(--sp-2);justify-content:flex-end}.avatar{display:grid;place-items:center;flex-shrink:0;width:32px;height:32px;border-radius:var(--r-pill);background:var(--n-100);color:var(--n-600);font-size:var(--fs-caption);font-weight:var(--fw-semibold);text-transform:uppercase;overflow:hidden}.avatar-sm{width:28px;height:28px;font-size:var(--fs-micro)}.avatar-lg{width:52px;height:52px;font-size:var(--fs-h3)}.status-dot{width:8px;height:8px;border-radius:var(--r-pill);flex-shrink:0;background:var(--n-400)}.status-dot.is-on{background:var(--ok)}.page{display:flex;flex-direction:column;gap:var(--sp-5)}.page-head{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-4);flex-wrap:wrap;min-height:var(--h-control)}.page-head h1{margin-bottom:2px}.grid{display:grid;gap:var(--sp-4)}.stack{display:flex;flex-direction:column;gap:var(--sp-4)}.row{display:flex;align-items:center;gap:var(--sp-3)}.row-between{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-3)}.control-row{display:flex;align-items:center;gap:var(--sp-3);flex-wrap:wrap}.divider{height:1px;background:var(--border);border:none}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.scroll-area{overflow-y:auto;scrollbar-width:thin;scrollbar-color:var(--n-300) transparent}.scroll-area::-webkit-scrollbar{width:6px;height:6px}.scroll-area::-webkit-scrollbar-track{background:transparent}.scroll-area::-webkit-scrollbar-thumb{background:var(--n-300);border-radius:var(--r-pill)}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@keyframes spin{to{transform:rotate(360deg)}}@keyframes shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}@keyframes pulse-soft{0%,to{opacity:1}50%{opacity:.5}}.route-enter-active{transition:opacity var(--dur) var(--ease)}.route-leave-active{transition:opacity var(--dur-fast) var(--ease)}.route-enter-from,.route-leave-to{opacity:0}.auth-head{margin-bottom:var(--sp-7)}.auth-head h1{font-size:var(--fs-h1);margin-bottom:var(--sp-2)}.auth-form{display:flex;flex-direction:column;gap:var(--sp-5);--h-control: var(--h-control-lg)}@media(min-width:641px)and (max-width:1024px){.auth-form{--h-control-lg: 48px}}.auth-error{padding:var(--sp-3) var(--sp-4);background:var(--err-soft);border:1px solid var(--err-border);border-radius:var(--r);font-size:var(--fs-label);font-weight:var(--fw-medium);color:var(--err)}.auth-note{padding:var(--sp-3) var(--sp-4);background:var(--brand-soft);border:1px solid var(--brand-border);border-radius:var(--r);font-size:var(--fs-caption);color:var(--text-body)}.input.has-toggle{padding-right:var(--sp-10)}.input-toggle{position:absolute;top:50%;right:var(--sp-3);transform:translateY(-50%);display:grid;place-items:center;padding:var(--sp-1);border-radius:var(--r-sm);color:var(--text-faint);transition:color var(--dur) var(--ease)}.input-toggle:hover{color:var(--text-body)}.auth-alt{margin-top:var(--sp-6);text-align:center;font-size:var(--fs-body);color:var(--text-muted)}.auth-alt a{font-weight:var(--fw-semibold);color:var(--brand)}.auth-alt a:hover{color:var(--brand-hover)}.auth-row{display:grid;gap:var(--sp-5)}@media(min-width:480px){.auth-row{grid-template-columns:1fr 1fr}}
