:root{--fox-palette-fox-50:#edf4ff;--fox-palette-fox-100:#dae9ff;--fox-palette-fox-200:#bcd6fe;--fox-palette-fox-300:#8fbbfd;--fox-palette-fox-400:#5b9cfc;--fox-palette-fox-500:#2379f9;--fox-palette-fox-600:#0f66e8;--fox-palette-fox-700:#1456b8;--fox-palette-fox-800:#17478f;--fox-palette-fox-900:#183a6c;--fox-palette-fox-950:#112544;--fox-palette-neutral-0:#ffffff;--fox-palette-neutral-50:#faf9f8;--fox-palette-neutral-100:#f4f2f0;--fox-palette-neutral-200:#e8e5e1;--fox-palette-neutral-300:#d7d2cc;--fox-palette-neutral-400:#a9a29a;--fox-palette-neutral-450:#9a938b;--fox-palette-neutral-500:#7b746c;--fox-palette-neutral-600:#5b544d;--fox-palette-neutral-700:#44403b;--fox-palette-neutral-800:#2a2724;--fox-palette-neutral-900:#1b1917;--fox-palette-neutral-950:#100e0d;--fox-palette-blue-50:#eff6ff;--fox-palette-blue-100:#dbeafe;--fox-palette-blue-300:#93c5fd;--fox-palette-blue-400:#60a5fa;--fox-palette-blue-500:#3b82f6;--fox-palette-blue-600:#2563eb;--fox-palette-blue-700:#1d4ed8;--fox-palette-green-50:#f0fdf4;--fox-palette-green-100:#dcfce7;--fox-palette-green-300:#86efac;--fox-palette-green-400:#4ade80;--fox-palette-green-500:#22c55e;--fox-palette-green-600:#16a34a;--fox-palette-green-700:#15803d;--fox-palette-amber-50:#fffbeb;--fox-palette-amber-100:#fef3c7;--fox-palette-amber-300:#fcd34d;--fox-palette-amber-400:#fbbf24;--fox-palette-amber-500:#f59e0b;--fox-palette-amber-600:#d97706;--fox-palette-amber-700:#b45309;--fox-palette-red-50:#fef2f2;--fox-palette-red-100:#fee2e2;--fox-palette-red-300:#fca5a5;--fox-palette-red-400:#f87171;--fox-palette-red-500:#ef4444;--fox-palette-red-600:#dc2626;--fox-palette-red-700:#b91c1c;--fox-palette-violet-50:#f5f3ff;--fox-palette-violet-100:#ede9fe;--fox-palette-violet-300:#c4b5fd;--fox-palette-violet-400:#a78bfa;--fox-palette-violet-500:#8b5cf6;--fox-palette-violet-600:#7c3aed;--fox-palette-violet-700:#6d28d9;--fox-font-sans:"Pretendard Variable",Pretendard,-apple-system,BlinkMacSystemFont,"Segoe UI","Apple SD Gothic Neo","Malgun Gothic",Roboto,"Helvetica Neue",Arial,sans-serif;--fox-font-mono:"JetBrains Mono","SFMono-Regular",Menlo,Consolas,"D2Coding",monospace;--fox-text-2xs:11px;--fox-text-xs:12px;--fox-text-sm:13px;--fox-text-base:15px;--fox-text-lg:18px;--fox-text-xl:22px;--fox-text-2xl:28px;--fox-text-3xl:34px;--fox-text-4xl:44px;--fox-text-5xl:56px;--fox-leading-none:1;--fox-leading-tight:1.2;--fox-leading-snug:1.35;--fox-leading-normal:1.55;--fox-leading-relaxed:1.7;--fox-weight-regular:400;--fox-weight-medium:500;--fox-weight-semibold:600;--fox-weight-bold:700;--fox-tracking-tight:-0.02em;--fox-tracking-snug:-0.01em;--fox-tracking-normal:0;--fox-tracking-wide:0.02em;--fox-tracking-wider:0.06em;--fox-space-0:0px;--fox-space-1:4px;--fox-space-2:8px;--fox-space-3:12px;--fox-space-4:16px;--fox-space-5:20px;--fox-space-6:24px;--fox-space-7:28px;--fox-space-8:32px;--fox-space-10:40px;--fox-space-12:48px;--fox-space-16:64px;--fox-space-20:80px;--fox-space-24:96px;--fox-space-32:128px;--fox-space-px:1px;--fox-space-0-5:2px;--fox-space-1-5:6px;--fox-radius-none:0px;--fox-radius-xs:4px;--fox-radius-sm:6px;--fox-radius-md:10px;--fox-radius-lg:14px;--fox-radius-xl:20px;--fox-radius-2xl:28px;--fox-radius-full:9999px;--fox-size-control-sm:30px;--fox-size-control-md:36px;--fox-size-control-lg:44px;--fox-size-icon-sm:16px;--fox-size-icon-md:20px;--fox-size-icon-lg:24px;--fox-size-avatar-xs:20px;--fox-size-avatar-sm:28px;--fox-size-avatar-md:36px;--fox-size-avatar-lg:48px;--fox-size-avatar-xl:64px;--fox-size-panel-sm:280px;--fox-size-panel-md:360px;--fox-size-panel-lg:440px;--fox-size-thumb-min:220px;--fox-duration-instant:80ms;--fox-duration-fast:120ms;--fox-duration-base:180ms;--fox-duration-slow:260ms;--fox-duration-slower:400ms;--fox-ease-standard:cubic-bezier(0.2,0,0,1);--fox-ease-entrance:cubic-bezier(0.05,0.7,0.1,1);--fox-ease-exit:cubic-bezier(0.3,0,0.8,0.15);--fox-ease-spring:cubic-bezier(0.34,1.42,0.64,1);--fox-layer-base:0;--fox-layer-sticky:100;--fox-layer-dropdown:200;--fox-layer-radial:300;--fox-layer-overlay:400;--fox-layer-modal:500;--fox-layer-toast:600;--fox-layer-tooltip:700;--fox-blur-sm:8px;--fox-blur-md:16px;--fox-blur-lg:28px;--fox-color-bg:#faf9f8;--fox-color-bg-subtle:#f4f2f0;--fox-color-surface:#ffffff;--fox-color-surface-subtle:#faf9f8;--fox-color-surface-raised:#ffffff;--fox-color-surface-sunken:#f4f2f0;--fox-color-surface-hover:#f4f2f0;--fox-color-surface-active:#e8e5e1;--fox-color-surface-inverse:#1b1917;--fox-color-overlay:rgba(16,14,13,0.45);--fox-color-border:#e8e5e1;--fox-color-border-strong:#9a938b;--fox-color-border-subtle:#f4f2f0;--fox-color-text:#1b1917;--fox-color-text-muted:#5b544d;--fox-color-text-subtle:#7b746c;--fox-color-text-inverse:#ffffff;--fox-color-text-disabled:#a9a29a;--fox-color-primary:#2379f9;--fox-color-primary-hover:#0f66e8;--fox-color-primary-solid:#0f66e8;--fox-color-primary-solid-hover:#1456b8;--fox-color-primary-solid-active:#17478f;--fox-color-on-primary:#ffffff;--fox-color-primary-subtle:#edf4ff;--fox-color-primary-subtle-hover:#dae9ff;--fox-color-primary-border:#bcd6fe;--fox-color-primary-text:#1456b8;--fox-color-focus-ring:#2379f9;--fox-color-focus-glow:rgba(35,121,249,0.28);--fox-color-selection:rgba(35,121,249,0.22);--fox-color-success:#16a34a;--fox-color-success-subtle:#f0fdf4;--fox-color-success-border:#dcfce7;--fox-color-success-text:#15803d;--fox-color-warning:#f59e0b;--fox-color-warning-subtle:#fffbeb;--fox-color-warning-border:#fef3c7;--fox-color-warning-text:#b45309;--fox-color-danger:#dc2626;--fox-color-danger-solid:#dc2626;--fox-color-on-danger:#ffffff;--fox-color-danger-subtle:#fef2f2;--fox-color-danger-border:#fee2e2;--fox-color-danger-text:#b91c1c;--fox-color-info:#2563eb;--fox-color-info-subtle:#eff6ff;--fox-color-info-border:#dbeafe;--fox-color-info-text:#1d4ed8;--fox-color-role-instructor:#0f66e8;--fox-color-role-student:#2563eb;--fox-color-role-admin:#7c3aed;--fox-color-status-live:#22c55e;--fox-color-status-idle:#f59e0b;--fox-color-status-alert:#ef4444;--fox-color-status-offline:#7b746c;--fox-ink-red:#ff3b30;--fox-ink-orange:#ff9500;--fox-ink-yellow:#ffd60a;--fox-ink-green:#30d158;--fox-ink-blue:#0a84ff;--fox-ink-violet:#bf5af2;--fox-ink-black:#121212;--fox-ink-white:#ffffff;--fox-shadow-xs:0 1px 2px rgba(16,14,13,0.05);--fox-shadow-sm:0 1px 2px rgba(16,14,13,0.06),0 2px 6px rgba(16,14,13,0.05);--fox-shadow-md:0 2px 4px rgba(16,14,13,0.05),0 6px 16px rgba(16,14,13,0.08);--fox-shadow-lg:0 4px 8px rgba(16,14,13,0.05),0 12px 28px rgba(16,14,13,0.10);--fox-shadow-xl:0 8px 16px rgba(16,14,13,0.06),0 24px 56px rgba(16,14,13,0.14);--fox-shadow-radial:0 4px 14px rgba(16,14,13,0.16);--fox-shadow-inset:inset 0 1px 2px rgba(16,14,13,0.06)}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--fox-color-bg:#100e0d;--fox-color-bg-subtle:#1b1917;--fox-color-surface:#1b1917;--fox-color-surface-subtle:#100e0d;--fox-color-surface-raised:#2a2724;--fox-color-surface-sunken:#100e0d;--fox-color-surface-hover:#2a2724;--fox-color-surface-active:#44403b;--fox-color-surface-inverse:#faf9f8;--fox-color-overlay:rgba(16,14,13,0.70);--fox-color-border:#2a2724;--fox-color-border-strong:#7b746c;--fox-color-border-subtle:#1b1917;--fox-color-text:#faf9f8;--fox-color-text-muted:#d7d2cc;--fox-color-text-subtle:#a9a29a;--fox-color-text-inverse:#1b1917;--fox-color-text-disabled:#5b544d;--fox-color-primary:#5b9cfc;--fox-color-primary-hover:#8fbbfd;--fox-color-primary-solid:#2379f9;--fox-color-primary-solid-hover:#5b9cfc;--fox-color-primary-solid-active:#8fbbfd;--fox-color-on-primary:#100e0d;--fox-color-primary-subtle:rgba(35,121,249,0.16);--fox-color-primary-subtle-hover:rgba(35,121,249,0.26);--fox-color-primary-border:rgba(35,121,249,0.40);--fox-color-primary-text:#8fbbfd;--fox-color-focus-ring:#5b9cfc;--fox-color-focus-glow:rgba(91,156,252,0.30);--fox-color-selection:rgba(91,156,252,0.28);--fox-color-success:#4ade80;--fox-color-success-subtle:rgba(34,197,94,0.16);--fox-color-success-border:rgba(34,197,94,0.35);--fox-color-success-text:#86efac;--fox-color-warning:#fbbf24;--fox-color-warning-subtle:rgba(245,158,11,0.16);--fox-color-warning-border:rgba(245,158,11,0.35);--fox-color-warning-text:#fcd34d;--fox-color-danger:#f87171;--fox-color-danger-solid:#ef4444;--fox-color-on-danger:#100e0d;--fox-color-danger-subtle:rgba(239,68,68,0.16);--fox-color-danger-border:rgba(239,68,68,0.35);--fox-color-danger-text:#fca5a5;--fox-color-info:#60a5fa;--fox-color-info-subtle:rgba(59,130,246,0.16);--fox-color-info-border:rgba(59,130,246,0.35);--fox-color-info-text:#93c5fd;--fox-color-role-instructor:#5b9cfc;--fox-color-role-student:#60a5fa;--fox-color-role-admin:#a78bfa;--fox-color-status-live:#4ade80;--fox-color-status-idle:#fbbf24;--fox-color-status-alert:#f87171;--fox-color-status-offline:#7b746c;--fox-ink-red:#ff3b30;--fox-ink-orange:#ff9500;--fox-ink-yellow:#ffd60a;--fox-ink-green:#30d158;--fox-ink-blue:#0a84ff;--fox-ink-violet:#bf5af2;--fox-ink-black:#121212;--fox-ink-white:#ffffff;--fox-shadow-xs:0 1px 2px rgba(0,0,0,0.4);--fox-shadow-sm:0 1px 2px rgba(0,0,0,0.5),0 2px 6px rgba(0,0,0,0.35);--fox-shadow-md:0 2px 4px rgba(0,0,0,0.45),0 6px 16px rgba(0,0,0,0.45);--fox-shadow-lg:0 4px 8px rgba(0,0,0,0.45),0 12px 28px rgba(0,0,0,0.55);--fox-shadow-xl:0 8px 16px rgba(0,0,0,0.5),0 24px 56px rgba(0,0,0,0.6);--fox-shadow-radial:0 4px 14px rgba(0,0,0,0.6);--fox-shadow-inset:inset 0 1px 2px rgba(0,0,0,0.5)}}:root[data-theme=dark]{--fox-color-bg:#100e0d;--fox-color-bg-subtle:#1b1917;--fox-color-surface:#1b1917;--fox-color-surface-subtle:#100e0d;--fox-color-surface-raised:#2a2724;--fox-color-surface-sunken:#100e0d;--fox-color-surface-hover:#2a2724;--fox-color-surface-active:#44403b;--fox-color-surface-inverse:#faf9f8;--fox-color-overlay:rgba(16,14,13,0.70);--fox-color-border:#2a2724;--fox-color-border-strong:#7b746c;--fox-color-border-subtle:#1b1917;--fox-color-text:#faf9f8;--fox-color-text-muted:#d7d2cc;--fox-color-text-subtle:#a9a29a;--fox-color-text-inverse:#1b1917;--fox-color-text-disabled:#5b544d;--fox-color-primary:#5b9cfc;--fox-color-primary-hover:#8fbbfd;--fox-color-primary-solid:#2379f9;--fox-color-primary-solid-hover:#5b9cfc;--fox-color-primary-solid-active:#8fbbfd;--fox-color-on-primary:#100e0d;--fox-color-primary-subtle:rgba(35,121,249,0.16);--fox-color-primary-subtle-hover:rgba(35,121,249,0.26);--fox-color-primary-border:rgba(35,121,249,0.40);--fox-color-primary-text:#8fbbfd;--fox-color-focus-ring:#5b9cfc;--fox-color-focus-glow:rgba(91,156,252,0.30);--fox-color-selection:rgba(91,156,252,0.28);--fox-color-success:#4ade80;--fox-color-success-subtle:rgba(34,197,94,0.16);--fox-color-success-border:rgba(34,197,94,0.35);--fox-color-success-text:#86efac;--fox-color-warning:#fbbf24;--fox-color-warning-subtle:rgba(245,158,11,0.16);--fox-color-warning-border:rgba(245,158,11,0.35);--fox-color-warning-text:#fcd34d;--fox-color-danger:#f87171;--fox-color-danger-solid:#ef4444;--fox-color-on-danger:#100e0d;--fox-color-danger-subtle:rgba(239,68,68,0.16);--fox-color-danger-border:rgba(239,68,68,0.35);--fox-color-danger-text:#fca5a5;--fox-color-info:#60a5fa;--fox-color-info-subtle:rgba(59,130,246,0.16);--fox-color-info-border:rgba(59,130,246,0.35);--fox-color-info-text:#93c5fd;--fox-color-role-instructor:#5b9cfc;--fox-color-role-student:#60a5fa;--fox-color-role-admin:#a78bfa;--fox-color-status-live:#4ade80;--fox-color-status-idle:#fbbf24;--fox-color-status-alert:#f87171;--fox-color-status-offline:#7b746c;--fox-ink-red:#ff3b30;--fox-ink-orange:#ff9500;--fox-ink-yellow:#ffd60a;--fox-ink-green:#30d158;--fox-ink-blue:#0a84ff;--fox-ink-violet:#bf5af2;--fox-ink-black:#121212;--fox-ink-white:#ffffff;--fox-shadow-xs:0 1px 2px rgba(0,0,0,0.4);--fox-shadow-sm:0 1px 2px rgba(0,0,0,0.5),0 2px 6px rgba(0,0,0,0.35);--fox-shadow-md:0 2px 4px rgba(0,0,0,0.45),0 6px 16px rgba(0,0,0,0.45);--fox-shadow-lg:0 4px 8px rgba(0,0,0,0.45),0 12px 28px rgba(0,0,0,0.55);--fox-shadow-xl:0 8px 16px rgba(0,0,0,0.5),0 24px 56px rgba(0,0,0,0.6);--fox-shadow-radial:0 4px 14px rgba(0,0,0,0.6);--fox-shadow-inset:inset 0 1px 2px rgba(0,0,0,0.5)}*,:after,:before{box-sizing:border-box}html{-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%}body{margin:0;font-family:var(--fox-font-sans);line-height:var(--fox-leading-normal);font-weight:var(--fox-weight-regular);letter-spacing:var(--fox-tracking-snug);color:var(--fox-color-text);background:var(--fox-color-bg);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}::-moz-selection{background:var(--fox-color-selection)}::selection{background:var(--fox-color-selection)}h1,h2,h3,h4,h5,h6{margin:0;font-weight:var(--fox-weight-semibold);line-height:var(--fox-leading-tight);letter-spacing:var(--fox-tracking-tight)}p{margin:0}a{color:var(--fox-color-primary-text);text-decoration:none}a:hover{text-decoration:underline}button,input,select,textarea{font:inherit;letter-spacing:inherit;color:inherit}canvas,img,svg,video{display:block;max-width:100%}code,kbd,pre{font-family:var(--fox-font-mono);font-size:.92em}.fox-divider,hr{border:0;border-top:1px solid var(--fox-color-border);margin:0}:where(.fox-root) :focus-visible{outline:2px solid var(--fox-color-focus-ring);outline-offset:2px}.fox-visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}.fox-scroll{scrollbar-width:thin;scrollbar-color:var(--fox-color-border-strong) transparent}.fox-scroll::-webkit-scrollbar{width:10px;height:10px}.fox-scroll::-webkit-scrollbar-thumb{background:var(--fox-color-border-strong);border:3px solid transparent;background-clip:content-box;border-radius:var(--fox-radius-full)}.fox-scroll::-webkit-scrollbar-thumb:hover{background:var(--fox-color-text-subtle);border:3px solid transparent;background-clip:content-box}.fox-scroll::-webkit-scrollbar-track{background:transparent}@media (prefers-reduced-motion:reduce){*,:after,:before{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important;scroll-behavior:auto!important}}@keyframes fox-fade-in{0%{opacity:0}to{opacity:1}}@keyframes fox-pop-in{0%{opacity:0;transform:translateY(6px) scale(.97)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes fox-slide-in-right{0%{opacity:0;transform:translateX(16px)}to{opacity:1;transform:translateX(0)}}@keyframes fox-spin{to{transform:rotate(1turn)}}@keyframes fox-typing{0%,60%,to{opacity:.25;transform:translateY(0)}30%{opacity:1;transform:translateY(-2px)}}.fox-btn{--fox-btn-bg:transparent;--fox-btn-fg:var(--fox-color-text);--fox-btn-border:transparent;--fox-btn-bg-hover:var(--fox-color-surface-hover);--fox-btn-bg-active:var(--fox-color-surface-active);display:inline-flex;align-items:center;justify-content:center;gap:var(--fox-space-2);height:var(--fox-size-control-md);padding-inline:var(--fox-space-4);border:1px solid var(--fox-btn-border);border-radius:var(--fox-radius-md);background:var(--fox-btn-bg);color:var(--fox-btn-fg);font-size:var(--fox-text-sm);font-weight:var(--fox-weight-semibold);line-height:1;white-space:nowrap;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;transition:background-color var(--fox-duration-fast) var(--fox-ease-standard),border-color var(--fox-duration-fast) var(--fox-ease-standard),color var(--fox-duration-fast) var(--fox-ease-standard),transform var(--fox-duration-fast) var(--fox-ease-standard)}.fox-btn:hover:not(:disabled){background:var(--fox-btn-bg-hover)}.fox-btn:active:not(:disabled){background:var(--fox-btn-bg-active);transform:translateY(.5px)}.fox-btn:disabled{cursor:not-allowed;opacity:.55}.fox-btn--primary{--fox-btn-bg:var(--fox-color-primary-solid);--fox-btn-fg:var(--fox-color-on-primary);--fox-btn-bg-hover:var(--fox-color-primary-solid-hover);--fox-btn-bg-active:var(--fox-color-primary-solid-active)}.fox-btn--secondary{--fox-btn-bg:var(--fox-color-surface);--fox-btn-border:var(--fox-color-border-strong);--fox-btn-bg-hover:var(--fox-color-surface-hover);--fox-btn-bg-active:var(--fox-color-surface-active);box-shadow:var(--fox-shadow-xs)}.fox-btn--subtle{--fox-btn-bg:var(--fox-color-primary-subtle);--fox-btn-fg:var(--fox-color-primary-text);--fox-btn-bg-hover:var(--fox-color-primary-subtle-hover);--fox-btn-bg-active:var(--fox-color-primary-subtle-hover)}.fox-btn--ghost{--fox-btn-bg:transparent;--fox-btn-fg:var(--fox-color-text-muted)}.fox-btn--ghost:hover:not(:disabled){color:var(--fox-color-text)}.fox-btn--danger{--fox-btn-bg:var(--fox-color-danger-solid);--fox-btn-fg:var(--fox-color-on-danger);--fox-btn-bg-hover:var(--fox-color-danger-text);--fox-btn-bg-active:var(--fox-color-danger-text)}.fox-btn--sm{height:var(--fox-size-control-sm);padding-inline:var(--fox-space-3);font-size:var(--fox-text-xs);border-radius:var(--fox-radius-sm)}.fox-btn--lg{height:var(--fox-size-control-lg);padding-inline:var(--fox-space-6);font-size:var(--fox-text-base);border-radius:var(--fox-radius-lg)}.fox-btn--block{display:flex;width:100%}.fox-btn--icon{width:var(--fox-size-control-md);padding-inline:0}.fox-btn--icon.fox-btn--sm{width:var(--fox-size-control-sm)}.fox-btn--icon.fox-btn--lg{width:var(--fox-size-control-lg)}.fox-btn--round{border-radius:var(--fox-radius-full)}.fox-btn__icon{display:inline-flex;align-items:center;justify-content:center}.fox-btn__icon,.fox-spinner{flex:none;width:var(--fox-size-icon-md);height:var(--fox-size-icon-md)}.fox-spinner{display:inline-block;border:2px solid;border-top:2px solid transparent;border-radius:var(--fox-radius-full);opacity:.75;animation:fox-spin var(--fox-duration-slower) linear infinite}.fox-spinner--sm{width:var(--fox-size-icon-sm);height:var(--fox-size-icon-sm)}.fox-spinner--lg{width:var(--fox-size-icon-lg);height:var(--fox-size-icon-lg);border-width:3px}.fox-field{display:flex;flex-direction:column;gap:var(--fox-space-1-5)}.fox-field__label{font-size:var(--fox-text-sm);font-weight:var(--fox-weight-medium);color:var(--fox-color-text)}.fox-field__required{margin-inline-start:var(--fox-space-1);color:var(--fox-color-danger)}.fox-field__hint{font-size:var(--fox-text-xs);color:var(--fox-color-text-muted)}.fox-field__error{font-size:var(--fox-text-xs);color:var(--fox-color-danger-text)}.fox-input,.fox-textarea{width:100%;height:var(--fox-size-control-md);padding:0 var(--fox-space-3);border:1px solid var(--fox-color-border-strong);border-radius:var(--fox-radius-md);background:var(--fox-color-surface);color:var(--fox-color-text);font-size:var(--fox-text-sm);transition:border-color var(--fox-duration-fast) var(--fox-ease-standard),box-shadow var(--fox-duration-fast) var(--fox-ease-standard),background-color var(--fox-duration-fast) var(--fox-ease-standard)}.fox-textarea{height:auto;min-height:calc(var(--fox-size-control-lg) * 1.6);padding:var(--fox-space-2) var(--fox-space-3);line-height:var(--fox-leading-normal);resize:vertical}.fox-input::-moz-placeholder,.fox-textarea::-moz-placeholder{color:var(--fox-color-text-subtle)}.fox-input::placeholder,.fox-textarea::placeholder{color:var(--fox-color-text-subtle)}.fox-input:hover:not(:disabled),.fox-textarea:hover:not(:disabled){border-color:var(--fox-color-text-subtle)}.fox-input:focus,.fox-textarea:focus{outline:none;border-color:var(--fox-color-primary);box-shadow:0 0 0 3px var(--fox-color-focus-glow)}.fox-input:disabled,.fox-textarea:disabled{background:var(--fox-color-surface-sunken);color:var(--fox-color-text-disabled);cursor:not-allowed}.fox-input--invalid,.fox-textarea--invalid{border-color:var(--fox-color-danger)}.fox-input--invalid:focus,.fox-textarea--invalid:focus{border-color:var(--fox-color-danger);box-shadow:0 0 0 3px var(--fox-color-danger-border)}.fox-input--sm{height:var(--fox-size-control-sm);font-size:var(--fox-text-xs)}.fox-input--lg{height:var(--fox-size-control-lg);font-size:var(--fox-text-base)}.fox-input-group{position:relative;display:flex;align-items:center}.fox-input-group__affix{position:absolute;display:inline-flex;align-items:center;justify-content:center;width:var(--fox-size-control-md);color:var(--fox-color-text-subtle);pointer-events:none}.fox-input-group__affix--start{inset-inline-start:0}.fox-input-group__affix--end{inset-inline-end:0}.fox-input--with-start{padding-inline-start:var(--fox-size-control-md)}.fox-input--with-end{padding-inline-end:var(--fox-size-control-md)}.fox-card{display:flex;flex-direction:column;background:var(--fox-color-surface);border:1px solid var(--fox-color-border);border-radius:var(--fox-radius-lg);box-shadow:var(--fox-shadow-xs);overflow:hidden;transition:box-shadow var(--fox-duration-base) var(--fox-ease-standard),border-color var(--fox-duration-base) var(--fox-ease-standard),transform var(--fox-duration-base) var(--fox-ease-standard)}.fox-card--flat{box-shadow:none}.fox-card--raised{box-shadow:var(--fox-shadow-md);border-color:transparent}.fox-card--interactive{cursor:pointer;text-align:start}.fox-card--interactive:hover{box-shadow:var(--fox-shadow-lg);transform:translateY(-2px)}.fox-card--selected{border-color:var(--fox-color-primary);box-shadow:0 0 0 2px var(--fox-color-primary-border)}.fox-card__body,.fox-card__footer,.fox-card__header{padding:var(--fox-space-5) var(--fox-space-6)}.fox-card__header{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--fox-space-3);padding-block-end:var(--fox-space-3)}.fox-card__title{font-size:var(--fox-text-lg);font-weight:var(--fox-weight-semibold)}.fox-card__subtitle{margin-block-start:var(--fox-space-1);font-size:var(--fox-text-sm);color:var(--fox-color-text-muted)}.fox-card__body{padding-block:var(--fox-space-2)}.fox-card__footer{display:flex;align-items:center;justify-content:flex-end;gap:var(--fox-space-2);padding-block-start:var(--fox-space-3);border-block-start:1px solid var(--fox-color-border-subtle)}.fox-card--pad-none .fox-card__body,.fox-card--pad-none .fox-card__footer,.fox-card--pad-none .fox-card__header{padding:0}.fox-badge{display:inline-flex;align-items:center;gap:var(--fox-space-1);height:20px;padding-inline:var(--fox-space-2);border-radius:var(--fox-radius-full);background:var(--fox-color-surface-hover);color:var(--fox-color-text-muted);font-size:var(--fox-text-2xs);font-weight:var(--fox-weight-semibold);letter-spacing:var(--fox-tracking-wide);white-space:nowrap}.fox-badge--primary{background:var(--fox-color-primary-subtle);color:var(--fox-color-primary-text)}.fox-badge--success{background:var(--fox-color-success-subtle);color:var(--fox-color-success-text)}.fox-badge--warning{background:var(--fox-color-warning-subtle);color:var(--fox-color-warning-text)}.fox-badge--danger{background:var(--fox-color-danger-subtle);color:var(--fox-color-danger-text)}.fox-badge--info{background:var(--fox-color-info-subtle);color:var(--fox-color-info-text)}.fox-badge__dot{width:6px;height:6px;background:currentColor}.fox-badge__dot,.fox-presence{border-radius:var(--fox-radius-full)}.fox-presence{display:inline-block;flex:none;width:var(--fox-space-2);height:var(--fox-space-2);background:var(--fox-color-text-muted)}.fox-presence--ok{background:var(--fox-color-success)}.fox-presence--warn{background:var(--fox-color-warning)}.fox-presence--danger{background:var(--fox-color-danger)}.fox-presence--muted{background:var(--fox-color-text-muted)}.fox-presence--pulse{animation:fox-presence-pulse var(--fox-duration-slower) var(--fox-ease-standard) infinite alternate}@keyframes fox-presence-pulse{0%{opacity:1}to{opacity:.35}}.fox-avatar{position:relative;display:inline-flex;flex:none;align-items:center;justify-content:center;width:var(--fox-size-avatar-md);height:var(--fox-size-avatar-md);border-radius:var(--fox-radius-full);background:var(--fox-color-surface-hover);color:var(--fox-color-text-muted);font-size:var(--fox-text-sm);font-weight:var(--fox-weight-semibold);-webkit-user-select:none;-moz-user-select:none;user-select:none}.fox-avatar--xs{width:var(--fox-size-avatar-xs);height:var(--fox-size-avatar-xs);font-size:var(--fox-text-2xs)}.fox-avatar--sm{width:var(--fox-size-avatar-sm);height:var(--fox-size-avatar-sm);font-size:var(--fox-text-xs)}.fox-avatar--lg{width:var(--fox-size-avatar-lg);height:var(--fox-size-avatar-lg);font-size:var(--fox-text-lg)}.fox-avatar--xl{width:var(--fox-size-avatar-xl);height:var(--fox-size-avatar-xl);font-size:var(--fox-text-xl)}.fox-avatar--square{border-radius:var(--fox-radius-md)}.fox-avatar--instructor{background:var(--fox-color-primary-subtle);color:var(--fox-color-role-instructor)}.fox-avatar--student{background:var(--fox-color-info-subtle);color:var(--fox-color-role-student)}.fox-avatar--admin{background:var(--fox-color-surface-hover);color:var(--fox-color-role-admin)}.fox-avatar__img{width:100%;height:100%;border-radius:inherit;-o-object-fit:cover;object-fit:cover}.fox-avatar__status{position:absolute;inset-block-end:0;inset-inline-end:0;width:30%;height:30%;min-width:8px;min-height:8px;border-radius:var(--fox-radius-full);border:2px solid var(--fox-color-surface);background:var(--fox-color-status-offline)}.fox-avatar__status--live{background:var(--fox-color-status-live)}.fox-avatar__status--idle{background:var(--fox-color-status-idle)}.fox-avatar__status--alert{background:var(--fox-color-status-alert)}.fox-avatar-group{display:inline-flex;align-items:center}.fox-avatar-group>.fox-avatar{box-shadow:0 0 0 2px var(--fox-color-surface)}.fox-avatar-group>.fox-avatar+.fox-avatar{margin-inline-start:calc(var(--fox-space-2) * -1)}.fox-modal{position:fixed;inset:0;z-index:var(--fox-layer-modal);display:flex;align-items:center;justify-content:center;padding:var(--fox-space-6)}.fox-modal__overlay{position:absolute;inset:0;background:var(--fox-color-overlay);backdrop-filter:blur(var(--fox-blur-sm));animation:fox-fade-in var(--fox-duration-base) var(--fox-ease-standard)}.fox-modal__dialog{position:relative;display:flex;flex-direction:column;width:100%;max-width:520px;max-height:min(85vh,720px);background:var(--fox-color-surface);border-radius:var(--fox-radius-xl);box-shadow:var(--fox-shadow-xl);animation:fox-pop-in var(--fox-duration-slow) var(--fox-ease-spring);overflow:hidden}.fox-modal__dialog--sm{max-width:400px}.fox-modal__dialog--lg{max-width:720px}.fox-modal__dialog--xl{max-width:960px}.fox-modal__header{display:flex;align-items:flex-start;gap:var(--fox-space-3);padding:var(--fox-space-6) var(--fox-space-6) var(--fox-space-4)}.fox-modal__heading{flex:1}.fox-modal__title{font-size:var(--fox-text-xl);font-weight:var(--fox-weight-semibold)}.fox-modal__description{margin-block-start:var(--fox-space-1);font-size:var(--fox-text-sm);color:var(--fox-color-text-muted)}.fox-modal__body{flex:1;min-height:0;overflow-y:auto;padding:0 var(--fox-space-6) var(--fox-space-6)}.fox-modal__footer{display:flex;align-items:center;justify-content:flex-end;gap:var(--fox-space-2);padding:var(--fox-space-4) var(--fox-space-6);border-block-start:1px solid var(--fox-color-border-subtle);background:var(--fox-color-surface-subtle)}.fox-toast-viewport{position:fixed;inset-block-end:var(--fox-space-6);inset-inline-end:var(--fox-space-6);z-index:var(--fox-layer-toast);display:flex;flex-direction:column;gap:var(--fox-space-2);width:min(380px,calc(100vw - var(--fox-space-8)));pointer-events:none}.fox-toast{display:flex;align-items:flex-start;gap:var(--fox-space-3);padding:var(--fox-space-3) var(--fox-space-4);border:1px solid var(--fox-color-border);border-inline-start:3px solid var(--fox-color-border-strong);border-radius:var(--fox-radius-md);background:var(--fox-color-surface-raised);box-shadow:var(--fox-shadow-lg);pointer-events:auto;animation:fox-slide-in-right var(--fox-duration-slow) var(--fox-ease-entrance)}.fox-toast--success{border-inline-start-color:var(--fox-color-success)}.fox-toast--warning{border-inline-start-color:var(--fox-color-warning)}.fox-toast--danger{border-inline-start-color:var(--fox-color-danger)}.fox-toast--info{border-inline-start-color:var(--fox-color-info)}.fox-toast__content{flex:1;min-width:0}.fox-toast__title{font-size:var(--fox-text-sm);font-weight:var(--fox-weight-semibold)}.fox-toast__description{margin-block-start:var(--fox-space-0-5);font-size:var(--fox-text-xs);color:var(--fox-color-text-muted);overflow-wrap:anywhere}.fox-toast__close{flex:none;margin-block-start:calc(var(--fox-space-0-5) * -1)}.fox-tooltip{position:relative;display:inline-flex}.fox-tooltip__bubble{position:absolute;z-index:var(--fox-layer-tooltip);padding:var(--fox-space-1) var(--fox-space-2);border-radius:var(--fox-radius-sm);background:var(--fox-color-surface-inverse);color:var(--fox-color-text-inverse);font-size:var(--fox-text-xs);font-weight:var(--fox-weight-medium);line-height:var(--fox-leading-snug);white-space:nowrap;box-shadow:var(--fox-shadow-md);animation:fox-fade-in var(--fox-duration-fast) var(--fox-ease-standard);pointer-events:none}.fox-tooltip__bubble--top{inset-block-end:calc(100% + var(--fox-space-2));inset-inline-start:50%;transform:translateX(-50%)}.fox-tooltip__bubble--bottom{inset-block-start:calc(100% + var(--fox-space-2));inset-inline-start:50%;transform:translateX(-50%)}.fox-tooltip__bubble--start{inset-inline-end:calc(100% + var(--fox-space-2));inset-block-start:50%;transform:translateY(-50%)}.fox-tooltip__bubble--end{inset-inline-start:calc(100% + var(--fox-space-2));inset-block-start:50%;transform:translateY(-50%)}.fox-empty{display:flex;flex-direction:column;gap:var(--fox-space-3);padding:var(--fox-space-12) var(--fox-space-6);text-align:center;color:var(--fox-color-text-muted)}.fox-empty,.fox-empty__icon{align-items:center;justify-content:center}.fox-empty__icon{display:inline-flex;width:var(--fox-size-avatar-xl);height:var(--fox-size-avatar-xl);border-radius:var(--fox-radius-full);background:var(--fox-color-surface-hover);color:var(--fox-color-text-subtle)}.fox-empty__title{font-size:var(--fox-text-base);font-weight:var(--fox-weight-semibold);color:var(--fox-color-text)}.fox-empty__description{max-width:40ch;font-size:var(--fox-text-sm)}.fox-thumb-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(var(--fox-thumb-grid-min,var(--fox-size-thumb-min)),1fr));gap:var(--fox-space-4);align-content:start}.fox-thumb-grid--dense{gap:var(--fox-space-3)}.fox-thumb{position:relative;display:flex;flex-direction:column;padding:0;border:1px solid var(--fox-color-border);border-radius:var(--fox-radius-lg);background:var(--fox-color-surface);box-shadow:var(--fox-shadow-xs);cursor:pointer;text-align:start;overflow:hidden;transition:box-shadow var(--fox-duration-base) var(--fox-ease-standard),border-color var(--fox-duration-base) var(--fox-ease-standard),transform var(--fox-duration-base) var(--fox-ease-standard)}.fox-thumb:hover{box-shadow:var(--fox-shadow-md);transform:translateY(-2px)}.fox-thumb--selected{border-color:var(--fox-color-primary);box-shadow:0 0 0 2px var(--fox-color-primary-border)}.fox-thumb--selected:hover{box-shadow:0 0 0 2px var(--fox-color-primary-border),var(--fox-shadow-md)}.fox-thumb--alert{border-color:var(--fox-color-danger);box-shadow:0 0 0 2px var(--fox-color-danger-border)}.fox-thumb--alert:hover{box-shadow:0 0 0 2px var(--fox-color-danger-border),var(--fox-shadow-md)}.fox-thumb__frame{position:relative;aspect-ratio:var(--fox-thumb-aspect,16/10);background:var(--fox-color-surface-sunken);overflow:hidden}.fox-thumb__image{width:100%;height:100%;-o-object-fit:cover;object-fit:cover;animation:fox-fade-in var(--fox-duration-fast) var(--fox-ease-standard)}.fox-thumb__placeholder{display:flex;align-items:center;justify-content:center;width:100%;height:100%;color:var(--fox-color-text-subtle);font-size:var(--fox-text-xs)}.fox-thumb__overlay{position:absolute;inset-block-start:var(--fox-space-2);inset-inline-end:var(--fox-space-2);display:flex;gap:var(--fox-space-1)}.fox-thumb__meta{display:flex;align-items:center;gap:var(--fox-space-2);padding:var(--fox-space-2) var(--fox-space-3);min-height:var(--fox-size-control-md)}.fox-thumb__name{flex:1;min-width:0;font-size:var(--fox-text-sm);font-weight:var(--fox-weight-medium);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fox-thumb__caption{font-size:var(--fox-text-2xs);color:var(--fox-color-text-subtle);white-space:nowrap}.fox-thumb--caption-hover .fox-thumb__caption{opacity:0;transition:opacity var(--fox-duration-fast) var(--fox-ease-standard)}.fox-thumb--caption-hover:focus-visible .fox-thumb__caption,.fox-thumb--caption-hover:hover .fox-thumb__caption{opacity:1}.fox-thumb__status{flex:none;width:8px;height:8px;border-radius:var(--fox-radius-full);background:var(--fox-color-status-offline)}.fox-thumb__status--live{background:var(--fox-color-status-live)}.fox-thumb__status--idle{background:var(--fox-color-status-idle)}.fox-thumb__status--alert{background:var(--fox-color-status-alert)}.fox-radial{position:relative;display:inline-flex;align-items:center;justify-content:center;width:var(--fox-radial-trigger,44px);height:var(--fox-radial-trigger,44px);z-index:var(--fox-layer-radial)}.fox-radial__field{position:absolute;inset-block-start:50%;inset-inline-start:50%;width:calc(var(--fox-radial-radius, 104px) * 2 + var(--fox-radial-item, 44px));height:calc(var(--fox-radial-radius, 104px) * 2 + var(--fox-radial-item, 44px));transform:translate(-50%,-50%);border-radius:var(--fox-radius-full);pointer-events:none}.fox-radial--open .fox-radial__field{pointer-events:auto}.fox-radial__trigger{position:relative;display:inline-flex;align-items:center;justify-content:center;width:100%;height:100%;padding:0;border:1px solid var(--fox-color-border);border-radius:var(--fox-radius-full);background:var(--fox-color-surface-raised);color:var(--fox-color-text-muted);box-shadow:var(--fox-shadow-radial);cursor:pointer;transition:background-color var(--fox-duration-base) var(--fox-ease-standard),color var(--fox-duration-base) var(--fox-ease-standard),transform var(--fox-duration-base) var(--fox-ease-spring),border-color var(--fox-duration-base) var(--fox-ease-standard)}.fox-radial__trigger:hover{color:var(--fox-color-primary-text);border-color:var(--fox-color-primary-border)}.fox-radial--open .fox-radial__trigger{background:var(--fox-color-primary-solid);border-color:transparent;color:var(--fox-color-on-primary);transform:scale(1.06) rotate(45deg)}.fox-radial__menu{position:absolute;inset-block-start:50%;inset-inline-start:50%;width:0;height:0}.fox-radial__item{position:absolute;inset-block-start:0;inset-inline-start:0;display:inline-flex;align-items:center;justify-content:center;width:var(--fox-radial-item,44px);height:var(--fox-radial-item,44px);margin-block-start:calc(var(--fox-radial-item, 44px) / -2);margin-inline-start:calc(var(--fox-radial-item, 44px) / -2);padding:0;border:1px solid var(--fox-color-border);border-radius:var(--fox-radius-full);background:var(--fox-color-surface-raised);color:var(--fox-color-text);box-shadow:var(--fox-shadow-radial);cursor:pointer;opacity:0;pointer-events:none;transform:translate(0) scale(.35);transition:transform var(--fox-duration-slow) var(--fox-ease-spring),opacity var(--fox-duration-fast) var(--fox-ease-standard),background-color var(--fox-duration-fast) var(--fox-ease-standard),color var(--fox-duration-fast) var(--fox-ease-standard),border-color var(--fox-duration-fast) var(--fox-ease-standard)}.fox-radial--open .fox-radial__item{opacity:1;pointer-events:auto;transform:translate(var(--fox-radial-x,0),var(--fox-radial-y,0)) scale(1)}.fox-radial__item:focus-visible,.fox-radial__item:hover:not(:disabled){z-index:1;background:var(--fox-color-primary-subtle);border-color:var(--fox-color-primary-border);color:var(--fox-color-primary-text)}.fox-radial--open .fox-radial__item:hover:not(:disabled){transform:translate(var(--fox-radial-x,0),var(--fox-radial-y,0)) scale(1.12)}.fox-radial__item:disabled{cursor:not-allowed;color:var(--fox-color-text-disabled)}.fox-radial__item--primary{background:var(--fox-color-primary-solid);border-color:transparent;color:var(--fox-color-on-primary)}.fox-radial__item--danger{color:var(--fox-color-danger-text)}.fox-radial__label{position:absolute;inset-inline-end:calc(100% + var(--fox-space-1-5));inset-block-start:50%;transform:translateY(-50%);padding:2px var(--fox-space-1-5);border-radius:var(--fox-radius-xs);background:var(--fox-color-surface-inverse);color:var(--fox-color-text-inverse);font-size:var(--fox-text-2xs);font-weight:var(--fox-weight-medium);white-space:nowrap;opacity:0;transition:opacity var(--fox-duration-fast) var(--fox-ease-standard);pointer-events:none}.fox-radial--labels .fox-radial__item .fox-radial__label,.fox-radial__item:focus-visible .fox-radial__label,.fox-radial__item:hover .fox-radial__label{opacity:1}.fox-radial-anchor{position:absolute;inset-block-start:50%;inset-inline-end:var(--fox-space-6);transform:translateY(-50%);z-index:var(--fox-layer-radial)}.fox-panel{display:flex;flex-direction:column;width:var(--fox-panel-width,var(--fox-size-panel-md));height:100%;min-height:0;background:var(--fox-color-surface);border-inline-start:1px solid var(--fox-color-border);animation:fox-slide-in-right var(--fox-duration-slow) var(--fox-ease-entrance)}.fox-panel--start{border-inline-start:0;border-inline-end:1px solid var(--fox-color-border)}.fox-panel--floating{border:1px solid var(--fox-color-border);border-radius:var(--fox-radius-lg);box-shadow:var(--fox-shadow-lg);overflow:hidden}.fox-panel__header{display:flex;align-items:center;gap:var(--fox-space-2);padding:var(--fox-space-3) var(--fox-space-4);border-block-end:1px solid var(--fox-color-border-subtle);background:var(--fox-color-surface-subtle)}.fox-panel__title{flex:1;min-width:0;font-size:var(--fox-text-sm);font-weight:var(--fox-weight-semibold);letter-spacing:var(--fox-tracking-normal);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fox-panel__body{flex:1;min-height:0;overflow-y:auto;padding:var(--fox-space-4)}.fox-panel__body--flush{padding:0}.fox-panel__footer{padding:var(--fox-space-3) var(--fox-space-4);border-block-start:1px solid var(--fox-color-border-subtle);background:var(--fox-color-surface-subtle)}.fox-msg{display:flex;gap:var(--fox-space-2);padding-block:var(--fox-space-2)}.fox-msg--own{flex-direction:row-reverse}.fox-msg__content{display:flex;flex-direction:column;gap:var(--fox-space-1);min-width:0;max-width:88%}.fox-msg--own .fox-msg__content{align-items:flex-end}.fox-msg__head{display:flex;align-items:baseline;gap:var(--fox-space-2);font-size:var(--fox-text-2xs);color:var(--fox-color-text-subtle)}.fox-msg__author{font-weight:var(--fox-weight-semibold);color:var(--fox-color-text-muted)}.fox-msg__bubble{padding:var(--fox-space-2) var(--fox-space-3);border-radius:var(--fox-radius-lg);background:var(--fox-color-surface-hover);color:var(--fox-color-text);font-size:var(--fox-text-sm);line-height:var(--fox-leading-normal);overflow-wrap:anywhere}.fox-msg--own .fox-msg__bubble{background:var(--fox-color-primary-solid);color:var(--fox-color-on-primary)}.fox-msg--agent .fox-msg__bubble{background:var(--fox-color-surface);border:1px solid var(--fox-color-border)}.fox-msg--system{justify-content:center}.fox-msg--system .fox-msg__bubble{background:transparent;color:var(--fox-color-text-subtle);font-size:var(--fox-text-xs);text-align:center}.fox-msg__typing{display:inline-flex;gap:3px;align-items:center;height:var(--fox-text-sm)}.fox-msg__typing span{width:5px;height:5px;border-radius:var(--fox-radius-full);background:currentColor;animation:fox-typing 1.2s var(--fox-ease-standard) infinite}.fox-msg__typing span:nth-child(2){animation-delay:.15s}.fox-msg__typing span:nth-child(3){animation-delay:.3s}.fox-composer{display:flex;align-items:flex-end;gap:var(--fox-space-2);padding:var(--fox-space-2);border:1px solid var(--fox-color-border-strong);border-radius:var(--fox-radius-lg);background:var(--fox-color-surface);transition:border-color var(--fox-duration-fast) var(--fox-ease-standard),box-shadow var(--fox-duration-fast) var(--fox-ease-standard)}.fox-composer:focus-within{border-color:var(--fox-color-primary);box-shadow:0 0 0 3px var(--fox-color-focus-glow)}.fox-composer__input{flex:1;min-width:0;min-height:var(--fox-size-control-sm);max-height:160px;padding:var(--fox-space-1) var(--fox-space-2);border:0;background:transparent;color:var(--fox-color-text);font-size:var(--fox-text-sm);line-height:var(--fox-leading-normal);resize:none}.fox-composer__input:focus{outline:none}.fox-composer__input::-moz-placeholder{color:var(--fox-color-text-subtle)}.fox-composer__input::placeholder{color:var(--fox-color-text-subtle)}.fox-composer__actions{display:flex;align-items:center;gap:var(--fox-space-1)}*,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgb(147 197 253/0.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgb(147 197 253/0.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:after,:before{border-width:0;border-style:solid;border-color:var(--fox-color-border)}:root{color-scheme:light dark}ol,ul{padding:0;list-style:none}dd,dl,ol,ul{margin:0}fieldset{margin:0;border:0;min-width:0}fieldset,legend{padding:0}body{font-size:var(--fox-text-base)}.\!container{width:100%!important}.container{width:100%}@media (min-width:640px){.\!container{max-width:640px!important}.container{max-width:640px}}@media (min-width:768px){.\!container{max-width:768px!important}.container{max-width:768px}}@media (min-width:1024px){.\!container{max-width:1024px!important}.container{max-width:1024px}}@media (min-width:1280px){.\!container{max-width:1280px!important}.container{max-width:1280px}}@media (min-width:1536px){.\!container{max-width:1536px!important}.container{max-width:1536px}}.site-container{width:100%;max-width:1120px;margin-inline:auto;padding-inline:var(--fox-space-6)}.site-section{padding-block:var(--fox-space-24)}@media (max-width:720px){.site-section{padding-block:var(--fox-space-16)}}.site-eyebrow{display:inline-flex;align-items:center;gap:var(--fox-space-2);padding:var(--fox-space-1-5) var(--fox-space-3);border-radius:var(--fox-radius-full);background:var(--fox-color-primary-subtle);border:1px solid var(--fox-color-primary-border);color:var(--fox-color-primary-text);font-size:var(--fox-text-xs);font-weight:var(--fox-weight-medium);letter-spacing:var(--fox-tracking-wide)}.site-display{font-size:clamp(var(--fox-text-3xl),6vw,var(--fox-text-5xl));font-weight:var(--fox-weight-bold)}.site-display,.site-title{line-height:var(--fox-leading-tight);letter-spacing:var(--fox-tracking-tight)}.site-title{font-size:clamp(var(--fox-text-2xl),4vw,var(--fox-text-4xl));font-weight:var(--fox-weight-semibold)}.site-lead{font-size:var(--fox-text-lg);line-height:var(--fox-leading-relaxed);color:var(--fox-color-text-muted)}.site-header{position:sticky;top:0;z-index:var(--fox-layer-sticky);background:color-mix(in srgb,var(--fox-color-bg) 84%,transparent);backdrop-filter:blur(var(--fox-blur-md));border-bottom:1px solid var(--fox-color-border-subtle)}.site-header__inner{justify-content:space-between;height:64px}.site-header__inner,.site-nav{display:flex;align-items:center;gap:var(--fox-space-6)}.site-nav a{color:var(--fox-color-text-muted);font-size:var(--fox-text-sm);font-weight:var(--fox-weight-medium);transition:color var(--fox-duration-fast) var(--fox-ease-standard)}.site-nav a:hover{color:var(--fox-color-text);text-decoration:none}.site-masonry{-moz-columns:3;column-count:3;-moz-column-gap:var(--fox-space-4);column-gap:var(--fox-space-4)}.site-masonry>*{-moz-column-break-inside:avoid;break-inside:avoid;margin-bottom:var(--fox-space-4)}@media (max-width:960px){.site-masonry{-moz-columns:2;column-count:2}}@media (max-width:620px){.site-masonry{-moz-columns:1;column-count:1}}.mock-window{border-radius:var(--fox-radius-xl);border:1px solid var(--fox-color-border);background:var(--fox-color-surface);box-shadow:var(--fox-shadow-xl);overflow:hidden}.mock-window__bar{display:flex;align-items:center;gap:var(--fox-space-2);height:40px;padding-inline:var(--fox-space-4);background:var(--fox-color-surface-subtle);border-bottom:1px solid var(--fox-color-border-subtle);font-size:var(--fox-text-2xs);color:var(--fox-color-text-subtle)}.mock-dot{width:9px;height:9px;border-radius:var(--fox-radius-full);background:var(--fox-color-border-strong)}.mock-canvas{display:grid;gap:var(--fox-space-3);padding:var(--fox-space-4);background:var(--fox-color-surface-sunken)}.mock-stage{position:relative;aspect-ratio:16/7;border-radius:var(--fox-radius-lg);border:1px solid var(--fox-color-border-subtle);background:radial-gradient(120% 120% at 12% 0,var(--fox-color-primary-subtle) 0,transparent 60%),var(--fox-color-surface);overflow:hidden}.mock-grid{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:var(--fox-space-2)}.mock-thumb{aspect-ratio:4/3;border-radius:var(--fox-radius-sm);border:1px solid var(--fox-color-border-subtle);background:var(--fox-color-surface);position:relative;overflow:hidden}.mock-thumb:after{content:"";position:absolute;inset:auto 0 0 0;height:42%;background:var(--fox-color-surface-sunken)}.mock-thumb--alert{border-color:var(--fox-color-status-alert)}.mock-status{top:4px;left:4px;width:6px;height:6px;z-index:1}.mock-radial,.mock-status{position:absolute;border-radius:var(--fox-radius-full)}.mock-radial{right:var(--fox-space-4);top:50%;translate:0 -50%;width:36px;height:36px;background:var(--fox-color-primary-solid);box-shadow:var(--fox-shadow-radial)}.mock-radial:after,.mock-radial:before{content:"";position:absolute;width:24px;height:24px;border-radius:var(--fox-radius-full);background:var(--fox-color-surface-raised);border:1px solid var(--fox-color-border-subtle)}.mock-radial:before{left:-34px;top:-20px}.mock-radial:after{left:-34px;top:32px}.mock-ink{position:absolute;inset:0;pointer-events:none}.step-index{display:inline-flex;align-items:center;justify-content:center;width:var(--fox-size-avatar-sm);height:var(--fox-size-avatar-sm);border-radius:var(--fox-radius-full);background:var(--fox-color-primary-subtle);font-size:var(--fox-text-sm)}.join-code,.step-index{color:var(--fox-color-primary-text);font-weight:var(--fox-weight-semibold)}.join-code{font-family:var(--fox-font-mono);font-size:var(--fox-text-xl);letter-spacing:var(--fox-tracking-wider)}.auth-card{width:100%;max-width:420px;margin-inline:auto}.form-stack{display:grid;gap:var(--fox-space-4)}.form-error{border-radius:var(--fox-radius-md);background:var(--fox-color-danger-subtle);border:1px solid var(--fox-color-danger-border);color:var(--fox-color-danger-text)}.form-error,.form-success{padding:var(--fox-space-3) var(--fox-space-4);font-size:var(--fox-text-sm)}.form-success{border-radius:var(--fox-radius-md);background:var(--fox-color-success-subtle);border:1px solid var(--fox-color-success-border);color:var(--fox-color-success-text)}.role-choice{display:grid;grid-template-columns:1fr 1fr;gap:var(--fox-space-3)}.role-choice input{position:absolute;opacity:0;pointer-events:none}.role-choice label{display:grid;gap:var(--fox-space-1);padding:var(--fox-space-3) var(--fox-space-4);border-radius:var(--fox-radius-md);border:1px solid var(--fox-color-border-strong);background:var(--fox-color-surface);cursor:pointer;transition:border-color var(--fox-duration-fast) var(--fox-ease-standard),background var(--fox-duration-fast) var(--fox-ease-standard)}.role-choice label:hover{background:var(--fox-color-surface-hover)}.role-choice input:checked+label{border-color:var(--fox-color-primary);background:var(--fox-color-primary-subtle);color:var(--fox-color-primary-text)}.role-choice input:focus-visible+label{outline:2px solid var(--fox-color-focus-ring);outline-offset:2px}.role-choice__title{font-size:var(--fox-text-base);font-weight:var(--fox-weight-semibold)}.role-choice__desc{font-size:var(--fox-text-xs);color:var(--fox-color-text-muted)}.data-table{width:100%;border-collapse:collapse;font-size:var(--fox-text-sm)}.data-table th{text-align:left;font-weight:var(--fox-weight-medium);color:var(--fox-color-text-subtle);font-size:var(--fox-text-xs);padding-bottom:var(--fox-space-2)}.data-table td,.data-table th{border-bottom:1px solid var(--fox-color-border-subtle)}.data-table td{padding-block:var(--fox-space-3);vertical-align:middle}.data-table tr:last-child td{border-bottom:0}.visible{visibility:visible}.absolute{position:absolute}.relative{position:relative}.bottom-4{bottom:var(--fox-space-4)}.right-6{right:var(--fox-space-6)}.right-\[68px\]{right:68px}.right-\[84px\]{right:84px}.top-1\/2{top:50%}.top-4{top:var(--fox-space-4)}.mx-auto{margin-left:auto;margin-right:auto}.mb-3{margin-bottom:var(--fox-space-3)}.mb-4{margin-bottom:var(--fox-space-4)}.mb-5{margin-bottom:var(--fox-space-5)}.ml-3{margin-left:var(--fox-space-3)}.mt-1{margin-top:var(--fox-space-1)}.mt-10{margin-top:var(--fox-space-10)}.mt-12{margin-top:var(--fox-space-12)}.mt-16{margin-top:var(--fox-space-16)}.mt-2{margin-top:var(--fox-space-2)}.mt-3{margin-top:var(--fox-space-3)}.mt-4{margin-top:var(--fox-space-4)}.mt-5{margin-top:var(--fox-space-5)}.mt-6{margin-top:var(--fox-space-6)}.mt-8{margin-top:var(--fox-space-8)}.block{display:block}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.hidden{display:none}.aspect-\[4\/3\]{aspect-ratio:4/3}.h-2{height:var(--fox-space-2)}.h-28{height:7rem}.h-7{height:var(--fox-space-7)}.h-9{height:2.25rem}.h-full{height:100%}.min-h-screen{min-height:100vh}.w-2{width:var(--fox-space-2)}.w-7{width:var(--fox-space-7)}.w-9{width:2.25rem}.w-full{width:100%}.max-w-2xl{max-width:42rem}.max-w-lg{max-width:32rem}.max-w-xl{max-width:36rem}.max-w-xs{max-width:20rem}.flex-1{flex:1 1 0%}.-translate-y-1\/2{--tw-translate-y:-50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.break-inside-avoid{-moz-column-break-inside:avoid;break-inside:avoid}.grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.content-start{align-content:flex-start}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.items-baseline{align-items:baseline}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-1{gap:var(--fox-space-1)}.gap-12{gap:var(--fox-space-12)}.gap-16{gap:var(--fox-space-16)}.gap-2{gap:var(--fox-space-2)}.gap-3{gap:var(--fox-space-3)}.gap-4{gap:var(--fox-space-4)}.gap-6{gap:var(--fox-space-6)}.gap-8{gap:var(--fox-space-8)}.gap-px{gap:var(--fox-space-px)}.overflow-hidden{overflow:hidden}.rounded-2xl{border-radius:var(--fox-radius-2xl)}.rounded-full{border-radius:var(--fox-radius-full)}.rounded-lg{border-radius:var(--fox-radius-lg)}.rounded-md{border-radius:var(--fox-radius-md)}.rounded-sm{border-radius:var(--fox-radius-sm)}.rounded-xl{border-radius:var(--fox-radius-xl)}.border{border-width:1px}.border-0{border-width:0}.border-b{border-bottom-width:1px}.border-t{border-top-width:1px}.border-border-subtle{border-color:var(--fox-color-border-subtle)}.border-primary-border{border-color:var(--fox-color-primary-border)}.bg-bg{background-color:var(--fox-color-bg)}.bg-border-subtle{background-color:var(--fox-color-border-subtle)}.bg-primary{background-color:var(--fox-color-primary)}.bg-primary-solid{background-color:var(--fox-color-primary-solid)}.bg-primary-subtle{background-color:var(--fox-color-primary-subtle)}.bg-status-alert{background-color:var(--fox-color-status-alert)}.bg-status-idle{background-color:var(--fox-color-status-idle)}.bg-status-live{background-color:var(--fox-color-status-live)}.bg-status-offline{background-color:var(--fox-color-status-offline)}.bg-surface{background-color:var(--fox-color-surface)}.bg-surface-subtle{background-color:var(--fox-color-surface-subtle)}.bg-surface-sunken{background-color:var(--fox-color-surface-sunken)}.p-0{padding:var(--fox-space-0)}.p-4{padding:var(--fox-space-4)}.px-3{padding-left:var(--fox-space-3);padding-right:var(--fox-space-3)}.px-6{padding-left:var(--fox-space-6);padding-right:var(--fox-space-6)}.px-8{padding-left:var(--fox-space-8);padding-right:var(--fox-space-8)}.py-12{padding-top:var(--fox-space-12);padding-bottom:var(--fox-space-12)}.py-2{padding-top:var(--fox-space-2);padding-bottom:var(--fox-space-2)}.py-20{padding-top:var(--fox-space-20);padding-bottom:var(--fox-space-20)}.py-24{padding-top:var(--fox-space-24);padding-bottom:var(--fox-space-24)}.py-6{padding-top:var(--fox-space-6);padding-bottom:var(--fox-space-6)}.py-8{padding-top:var(--fox-space-8);padding-bottom:var(--fox-space-8)}.pb-16{padding-bottom:var(--fox-space-16)}.pb-4{padding-bottom:var(--fox-space-4)}.pt-20{padding-top:var(--fox-space-20)}.text-center{text-align:center}.text-right{text-align:right}.text-2xs{font-size:var(--fox-text-2xs)}.text-3xl{font-size:var(--fox-text-3xl)}.text-base{font-size:var(--fox-text-base)}.text-lg{font-size:var(--fox-text-lg)}.text-sm{font-size:var(--fox-text-sm)}.text-xl{font-size:var(--fox-text-xl)}.text-xs{font-size:var(--fox-text-xs)}.font-medium{font-weight:var(--fox-weight-medium)}.font-semibold{font-weight:var(--fox-weight-semibold)}.uppercase{text-transform:uppercase}.leading-relaxed{line-height:var(--fox-leading-relaxed)}.leading-tight{line-height:var(--fox-leading-tight)}.tracking-tight{letter-spacing:var(--fox-tracking-tight)}.text-text{color:var(--fox-color-text)}.text-text-muted{color:var(--fox-color-text-muted)}.text-text-subtle{color:var(--fox-color-text-subtle)}.shadow{--tw-shadow:0 1px 3px 0 rgb(0 0 0/0.1),0 1px 2px -1px rgb(0 0 0/0.1);--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.blur{--tw-blur:blur(8px)}.blur,.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}@media not all and (min-width:768px){.max-md\:hidden{display:none}}@media not all and (min-width:640px){.max-sm\:hidden{display:none}.max-sm\:gap-8{gap:var(--fox-space-8)}}@media (min-width:640px){.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}}@media (min-width:768px){.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}}@media (min-width:1024px){.lg\:grid-cols-\[minmax\(0\2c 1fr\)_minmax\(0\2c 1\.1fr\)\]{grid-template-columns:minmax(0,1fr) minmax(0,1.1fr)}.lg\:grid-cols-\[minmax\(0\2c 1fr\)_minmax\(0\2c 380px\)\]{grid-template-columns:minmax(0,1fr) minmax(0,380px)}}@media (min-width:1280px){.xl\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}}