:root{color-scheme:light dark;--color-bg: #fbfaf8;--color-surface: #ffffff;--color-surface-sunken: #f4f2ee;--color-border: #e4e0d9;--color-border-subtle: #efece6;--color-text: #14181f;--color-text-muted: #5d6470;--color-text-faint: #8b919b;--color-accent: #2e3a6e;--color-accent-hover: #3b4a89;--color-accent-text: #ffffff;--color-accent-wash: #eceefa;--color-live: #b8762a;--color-live-wash: #fdf3e5;--color-pending: #8a6d1f;--color-pending-wash: #fbf5e0;--color-verified: #1f7a52;--color-verified-wash: #e8f5ef;--color-recording: #b3261e;--color-recording-wash: #fdecea;--color-danger: #b3261e;--color-danger-bg: #fdecea;--color-ok: var(--color-verified);--color-warn: var(--color-pending);--color-warn-bg: var(--color-pending-wash);--color-stage: #0f1116;--color-stage-tile: #1a1d25;--space-1: .25rem;--space-2: .5rem;--space-3: .75rem;--space-4: 1rem;--space-5: 1.25rem;--space-6: 1.5rem;--space-8: 2rem;--space-10: 2.5rem;--space-12: 3rem;--radius-sm: 6px;--radius-md: 10px;--radius-lg: 14px;--radius-pill: 999px;--shadow-sm: 0 1px 2px rgb(20 24 31 / 6%), 0 1px 1px rgb(20 24 31 / 4%);--shadow-md: 0 2px 4px rgb(20 24 31 / 6%), 0 8px 16px -6px rgb(20 24 31 / 10%);--shadow-lg: 0 4px 8px rgb(20 24 31 / 7%), 0 20px 40px -12px rgb(20 24 31 / 16%);--font-serif: ui-serif, "Iowan Old Style", "Palatino Linotype", Palatino, Georgia, serif;--font-sans: ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--font-mono: ui-monospace, SFMono-Regular, "SF Mono", Menlo, monospace;--text-xs: .75rem;--text-sm: .875rem;--text-md: 1rem;--text-lg: 1.125rem;--text-xl: 1.375rem;--text-2xl: 1.75rem;--text-3xl: 2.125rem;--leading-tight: 1.2;--leading-normal: 1.55;--tracking-label: .08em;--game-red: #b8402f;--game-red-wash: #fbe9e5;--game-blue: #2f5fb8;--game-blue-wash: #e6eefb;--game-neutral: #b9ad94;--game-neutral-wash: #f3efe6;--game-assassin: #1d1f24;--game-ink: #ffffff;--game-assassin-ink: #ffffff;--duration-fast: .12s;--duration-normal: .2s;--ease-out: cubic-bezier(.2, 0, 0, 1)}@media(prefers-color-scheme:dark){:root{--color-bg: #101219;--color-surface: #181b23;--color-surface-sunken: #1f232c;--color-border: #2b303b;--color-border-subtle: #232833;--color-text: #eceef2;--color-text-muted: #9aa4b2;--color-text-faint: #737d8b;--color-accent: #8ea2f0;--color-accent-hover: #a6b6f5;--color-accent-text: #0d1017;--color-accent-wash: #1c2138;--color-live: #e0a05a;--color-live-wash: #2e2317;--color-pending: #d9b44f;--color-pending-wash: #2b2515;--color-verified: #4cc38a;--color-verified-wash: #14291f;--color-recording: #ff8a80;--color-recording-wash: #331917;--color-danger: #ff8a80;--color-danger-bg: #331917;--game-red: #f08a78;--game-red-wash: #3a1f1a;--game-blue: #86a8f0;--game-blue-wash: #1a2640;--game-neutral: #8f8672;--game-neutral-wash: #29261f;--game-assassin: #000000;--game-ink: #14161a;--shadow-sm: 0 1px 2px rgb(0 0 0 / 30%);--shadow-md: 0 2px 4px rgb(0 0 0 / 30%), 0 8px 16px -6px rgb(0 0 0 / 40%);--shadow-lg: 0 4px 8px rgb(0 0 0 / 32%), 0 20px 40px -12px rgb(0 0 0 / 50%)}}*{box-sizing:border-box}body{margin:0;background:var(--color-bg);color:var(--color-text);font-family:var(--font-sans);font-size:var(--text-md);line-height:var(--leading-normal);-webkit-font-smoothing:antialiased}h1,h2,h3{font-family:var(--font-serif);font-weight:600;line-height:var(--leading-tight);letter-spacing:-.01em;margin:0}h1{font-size:var(--text-3xl)}h2{font-size:var(--text-xl)}h3{font-size:var(--text-lg)}p{margin:0}code{overflow-wrap:anywhere}a{color:var(--color-accent);text-decoration-color:color-mix(in srgb,var(--color-accent) 35%,transparent);text-underline-offset:.2em}a:hover{text-decoration-color:currentcolor}:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px;border-radius:var(--radius-sm)}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important}}.app-shell{--app-bar-height: 3.25rem;--app-nav-height: 3.5rem;min-height:100dvh;display:grid;grid-template-columns:minmax(0,1fr);grid-template-rows:auto auto minmax(0,1fr);grid-template-areas:"bar" "nav" "main"}.app-bar{grid-area:bar;display:flex;align-items:center;gap:var(--space-3);min-height:var(--app-bar-height);padding:0 var(--space-4);border-bottom:1px solid var(--color-border);background:color-mix(in srgb,var(--color-surface) 88%,transparent);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);position:sticky;top:0;z-index:20}.app-bar__brand{font-family:var(--font-serif);font-size:var(--text-lg);font-weight:600;color:var(--color-text);text-decoration:none;letter-spacing:-.01em;flex-shrink:0}.app-bar__org-name,.app-bar__org{min-width:0;font-size:var(--text-sm);color:var(--color-text-muted)}.app-bar__org-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding-left:var(--space-3);border-left:1px solid var(--color-border)}.app-bar__org-select{font:inherit;font-size:var(--text-sm);color:var(--color-text);background:var(--color-surface-sunken);border:1px solid var(--color-border);border-radius:var(--radius-sm);padding:var(--space-1) var(--space-2);max-width:12rem}.app-bar__build{margin-left:auto;font-family:var(--font-mono);font-size:var(--text-xs);color:var(--color-text-faint);flex-shrink:0}.app-nav{grid-area:nav;z-index:15;position:sticky;top:var(--app-bar-height);display:flex;gap:var(--space-1);padding:var(--space-2) var(--space-4);border-bottom:1px solid var(--color-border);background:color-mix(in srgb,var(--color-surface) 92%,transparent);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);overflow-x:auto;scrollbar-width:none}.app-nav::-webkit-scrollbar{display:none}.app-nav__list{display:flex;align-items:center;gap:var(--space-1);list-style:none;margin:0;padding:0}.app-nav__link{display:flex;align-items:center;gap:var(--space-2);min-height:2.25rem;padding:var(--space-2) var(--space-3);border:0;border-radius:var(--radius-sm);background:none;color:var(--color-text-muted);font:inherit;font-size:var(--text-sm);font-weight:500;text-decoration:none;white-space:nowrap;cursor:pointer}.app-nav__link:hover:not(:disabled){background:var(--color-surface-sunken);color:var(--color-text)}.app-nav__link:disabled{opacity:.6;cursor:default}.app-nav__link[aria-current=page]{background:var(--color-accent-wash);color:var(--color-accent)}.app-nav__signout{color:var(--color-text-faint)}.app-nav__more-tab{display:none}.app-main{grid-area:main;min-width:0;padding:var(--space-5) clamp(var(--space-4),2.5vw,var(--space-8)) var(--space-10)}.app-main>*{max-width:92rem;margin-inline:auto}.app-main:has(.classroom){padding:var(--space-3) clamp(var(--space-2),1.5vw,var(--space-4))}.app-main:has(.classroom)>*{max-width:none}.page-cols{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,21rem),1fr));gap:var(--space-4);align-items:start}.page-split{display:grid;grid-template-columns:minmax(0,1fr);gap:var(--space-5);align-items:start}@media(min-width:68rem){.page-split{grid-template-columns:minmax(0,2fr) minmax(18rem,1fr)}}.page-narrow{max-width:46rem}@media(max-width:46rem){.app-shell{grid-template-rows:auto minmax(0,1fr) auto;grid-template-areas:"bar" "main" "nav"}.app-bar{padding:0 var(--space-3);gap:var(--space-2)}.app-nav{position:fixed;inset-inline:0;bottom:0;top:auto;display:block;overflow:visible;border-top:1px solid var(--color-border);border-bottom:0;background:color-mix(in srgb,var(--color-surface) 96%,transparent);padding:var(--space-1) var(--space-1) calc(var(--space-1) + env(safe-area-inset-bottom))}.app-nav__primary{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(0,1fr);gap:0}.app-nav__primary .app-nav__link,.app-nav__more-button{flex-direction:column;justify-content:center;gap:1px;min-height:2.875rem;padding:var(--space-1) 2px;font-size:var(--text-xs);text-align:center}.app-nav__primary .app-nav__label{overflow:hidden;text-overflow:ellipsis;max-width:100%}.app-nav__badge{margin:0}.app-nav__more-tab{display:block}.app-nav__rest{display:none;position:absolute;bottom:calc(100% + var(--space-1));inset-inline:var(--space-2);flex-direction:column;align-items:stretch;gap:1px;padding:var(--space-2);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg)}.app-nav[data-more-open=true] .app-nav__rest{display:flex}.app-nav__rest .app-nav__link{min-height:2.75rem}.app-main{padding:var(--space-4) var(--space-3) calc(var(--app-nav-height) + var(--space-6) + env(safe-area-inset-bottom))}}@media(min-width:64rem){.app-shell[data-signed-in=true]:has(.app-nav){grid-template-columns:14.5rem minmax(0,1fr);grid-template-rows:auto minmax(0,1fr);grid-template-areas:"bar main" "nav main"}.app-shell[data-signed-in=true] .app-bar{border-right:1px solid var(--color-border)}.app-shell[data-signed-in=true] .app-nav{flex-direction:column;align-items:stretch;gap:var(--space-4);height:calc(100dvh - var(--app-bar-height));padding:var(--space-3) var(--space-3) var(--space-4);border-right:1px solid var(--color-border);border-bottom:0;overflow-x:visible;overflow-y:auto}.app-shell[data-signed-in=true] .app-nav__list{flex-direction:column;align-items:stretch;gap:2px}.app-shell[data-signed-in=true] .app-nav__badge{margin-left:auto}.app-shell[data-signed-in=true] .app-nav__rest{margin-top:auto}}.auth-shell{display:grid;place-items:center;min-height:calc(100vh - 8rem);padding:var(--space-4) 0}.auth-card{width:100%;max-width:23rem;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--space-8);box-shadow:var(--shadow-md)}.auth-card h1{font-size:var(--text-2xl)}.stack{display:flex;flex-direction:column;gap:var(--space-4)}.stack-tight{gap:var(--space-2)}.stack-loose{gap:var(--space-8)}.row{display:flex;align-items:center;gap:var(--space-2)}.row-wrap{flex-wrap:wrap}.row-between{justify-content:space-between}.spacer{margin-left:auto}.card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--space-6);box-shadow:var(--shadow-sm)}.card-quiet{box-shadow:none;background:var(--color-surface-sunken);border-color:transparent}.card-interactive{transition:box-shadow var(--duration-normal) var(--ease-out),transform var(--duration-normal) var(--ease-out),border-color var(--duration-normal) var(--ease-out)}.card-interactive:hover{box-shadow:var(--shadow-md);border-color:color-mix(in srgb,var(--color-accent) 30%,var(--color-border))}.card__divider{height:1px;background:var(--color-border-subtle);border:0;margin:var(--space-2) 0}.page-header{display:flex;align-items:flex-end;gap:var(--space-4);padding-bottom:var(--space-5);border-bottom:1px solid var(--color-border)}.page-header__text{display:flex;flex-direction:column;gap:var(--space-1);min-width:0}.page-header__actions{margin-left:auto;display:flex;align-items:center;gap:var(--space-2);flex-shrink:0}.eyebrow{font-size:var(--text-xs);font-weight:600;letter-spacing:var(--tracking-label);text-transform:uppercase;color:var(--color-text-faint)}.muted{color:var(--color-text-muted);font-size:var(--text-sm)}.lead{color:var(--color-text-muted);font-size:var(--text-md);max-width:60ch}.mono{font-family:var(--font-mono);font-size:var(--text-sm)}button{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);padding:var(--space-2) var(--space-4);border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface);color:var(--color-text);font:inherit;font-size:var(--text-sm);font-weight:500;line-height:1.4;cursor:pointer;transition:background var(--duration-fast) var(--ease-out),border-color var(--duration-fast) var(--ease-out)}button:hover:not(:disabled){background:var(--color-surface-sunken)}a.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);padding:var(--space-2) var(--space-4);border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface);color:var(--color-text);font-size:var(--text-sm);font-weight:500;line-height:1.4;text-decoration:none;transition:background var(--duration-fast) var(--ease-out),border-color var(--duration-fast) var(--ease-out)}a.btn:hover{background:var(--color-surface-sunken)}button[type=submit],.btn-primary{background:var(--color-accent);border-color:var(--color-accent);color:var(--color-accent-text)}button[type=submit]:hover:not(:disabled),.btn-primary:hover:not(:disabled){background:var(--color-accent-hover);border-color:var(--color-accent-hover)}.btn-danger,button[type=submit].btn-danger{background:var(--color-surface);color:var(--color-danger);border-color:color-mix(in srgb,var(--color-danger) 40%,var(--color-border))}.btn-danger:hover:not(:disabled),button[type=submit].btn-danger:hover:not(:disabled){background:var(--color-danger-bg);border-color:color-mix(in srgb,var(--color-danger) 40%,var(--color-border))}.btn-quiet{background:transparent;border-color:transparent;color:var(--color-text-muted);padding:var(--space-1) var(--space-2)}.btn-quiet:hover:not(:disabled){background:var(--color-surface-sunken);color:var(--color-text)}.btn-sm{padding:var(--space-1) var(--space-3);font-size:var(--text-xs)}button:disabled{opacity:.55;cursor:not-allowed}button[aria-busy=true]{cursor:progress}.field{display:flex;flex-direction:column;gap:var(--space-1);font-size:var(--text-sm);font-weight:500;color:var(--color-text)}.field>label{font-weight:500}.field>input,.field>select,.field>textarea{padding:var(--space-2) var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-bg);color:var(--color-text);font:inherit;font-size:var(--text-sm);font-weight:400;transition:border-color var(--duration-fast) var(--ease-out)}.field>input:focus,.field>select:focus,.field>textarea:focus{border-color:var(--color-accent)}.field>input[type=checkbox],.field>input[type=radio]{align-self:flex-start;padding:0;border:0}:where(input:not([type=checkbox],[type=radio],[type=range],[type=color],[type=file]),select,textarea){padding:var(--space-2) var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-bg);color:var(--color-text);font:inherit;font-size:var(--text-sm)}:where(input:not([type=checkbox],[type=radio],[type=range],[type=color],[type=file]),select,textarea):focus{border-color:var(--color-accent)}.field__hint{font-weight:400;font-size:var(--text-xs);color:var(--color-text-muted)}.field-row{display:flex;gap:var(--space-3);flex-wrap:wrap}.field-row>.field{flex:1 1 10rem}.badge{display:inline-flex;align-items:center;gap:var(--space-1);padding:.15rem var(--space-2);border-radius:var(--radius-pill);background:var(--color-surface-sunken);color:var(--color-text-muted);font-size:var(--text-xs);font-weight:600;letter-spacing:.01em;white-space:nowrap}.badge-live{background:var(--color-live-wash);color:var(--color-live)}.badge-live:before{content:"";width:.4rem;height:.4rem;border-radius:50%;background:currentcolor;animation:badge-pulse 2s var(--ease-out) infinite}@keyframes badge-pulse{0%,to{opacity:1}50%{opacity:.35}}.badge-pending{background:var(--color-pending-wash);color:var(--color-pending)}.badge-verified,.badge-ok{background:var(--color-verified-wash);color:var(--color-verified)}.badge-recording{background:var(--color-recording-wash);color:var(--color-recording)}.badge-accent{background:var(--color-accent-wash);color:var(--color-accent)}.badge-warn{background:var(--color-pending-wash);color:var(--color-pending)}.note{display:flex;flex-direction:column;gap:var(--space-2);padding:var(--space-3) var(--space-4);border:1px solid color-mix(in srgb,var(--color-verified) 35%,transparent);border-left:3px solid var(--color-verified);border-radius:var(--radius-md);background:var(--color-verified-wash);font-size:var(--text-sm)}.note code{font-family:var(--font-mono);font-size:var(--text-xs);overflow-wrap:anywhere;background:var(--color-surface);border:1px solid var(--color-border-subtle);border-radius:var(--radius-sm);padding:var(--space-1) var(--space-2);display:inline-block}.notice{margin:0;padding:var(--space-3) var(--space-4);border:1px solid color-mix(in srgb,var(--color-pending) 35%,transparent);border-left:3px solid var(--color-pending);border-radius:var(--radius-md);background:var(--color-pending-wash);color:var(--color-text);font-size:var(--text-sm)}.question-checklist p{margin:0 0 var(--space-1)}.question-checklist ul{margin:0;padding-left:var(--space-5)}.problem{border:1px solid color-mix(in srgb,var(--color-danger) 35%,transparent);border-left:3px solid var(--color-danger);border-radius:var(--radius-md);background:var(--color-danger-bg);color:var(--color-text);padding:var(--space-4)}.problem>h2{margin:0 0 var(--space-2);font-size:var(--text-lg);color:var(--color-danger)}.problem code{font-family:var(--font-mono);font-size:var(--text-sm)}.problem-trace{min-width:0}.problem-trace>code{min-width:0;overflow-wrap:anywhere}.empty-state{display:flex;flex-direction:column;align-items:center;gap:var(--space-3);padding:var(--space-10) var(--space-6);text-align:center;border:1px dashed var(--color-border);border-radius:var(--radius-lg);background:var(--color-surface-sunken)}.empty-state__title{font-family:var(--font-serif);font-size:var(--text-lg);font-weight:600}.empty-state__body{color:var(--color-text-muted);font-size:var(--text-sm);max-width:44ch}.skeleton{background:linear-gradient(90deg,var(--color-surface-sunken) 25%,color-mix(in srgb,var(--color-surface-sunken) 60%,var(--color-border)) 37%,var(--color-surface-sunken) 63%);background-size:400% 100%;animation:skeleton-sweep 1.4s var(--ease-out) infinite;border-radius:var(--radius-sm)}@keyframes skeleton-sweep{0%{background-position:100% 50%}to{background-position:0 50%}}@media(prefers-reduced-motion:reduce){.skeleton{animation:none}}.skeleton-list{display:flex;flex-direction:column;gap:var(--space-3)}.skeleton-row{height:4.5rem}.skeleton-card{height:11rem}.spinner{display:inline-block;width:1rem;height:1rem;border:2px solid color-mix(in srgb,currentcolor 25%,transparent);border-top-color:currentcolor;border-radius:50%;animation:spinner-turn .7s linear infinite}@keyframes spinner-turn{to{transform:rotate(360deg)}}.loading-row{display:flex;align-items:center;gap:var(--space-2);color:var(--color-text-muted);font-size:var(--text-sm);padding:var(--space-4) 0}.list-plain{list-style:none;margin:0;padding:0}.list-row{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-3) 0;border-bottom:1px solid var(--color-border-subtle)}.list-row:last-child{border-bottom:0}.org-card{display:flex;flex-direction:column;align-items:flex-start;gap:var(--space-2);width:100%;height:100%;padding:var(--space-5);text-align:left;border-radius:var(--radius-md);border:1px solid var(--color-border);background:var(--color-surface);box-shadow:var(--shadow-sm);transition:box-shadow var(--duration-normal) var(--ease-out),border-color var(--duration-normal) var(--ease-out)}.org-card:hover:not(:disabled){background:var(--color-surface);box-shadow:var(--shadow-md);border-color:color-mix(in srgb,var(--color-accent) 30%,var(--color-border))}.org-card[aria-current=true]{border-color:var(--color-accent);background:var(--color-accent-wash)}.org-card__name{font-family:var(--font-serif);font-size:var(--text-lg);font-weight:600;line-height:var(--leading-tight)}.group-row{display:flex;flex-direction:column;gap:var(--space-3);padding:var(--space-5) 0;border-bottom:1px solid var(--color-border-subtle)}.group-row:first-child{padding-top:var(--space-2)}.group-row:last-child{border-bottom:0;padding-bottom:0}.group-row__head{display:flex;align-items:baseline;flex-wrap:wrap;gap:var(--space-2) var(--space-3)}.group-row__name{font-size:var(--text-lg);margin:0}.group-row__name a{text-decoration:none;color:var(--color-text)}.group-row__name a:hover{color:var(--color-accent)}.group-row__actions{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-1)}.quick-invite{display:contents}.quick-invite>.note,.quick-invite>.problem{flex-basis:100%}.group-row__actions button[aria-pressed=true]{background:var(--color-accent-wash);color:var(--color-accent)}@media(max-width:40rem){.group-row__actions>.spacer{flex-basis:100%;margin-left:0}}.schedule-day{display:flex;flex-direction:column;gap:var(--space-3)}.schedule-day__label{position:sticky;top:3.5rem;z-index:1;padding:var(--space-2) 0;background:linear-gradient(var(--color-bg) 70%,transparent)}.lesson-card{display:flex;gap:var(--space-4);align-items:flex-start;padding:var(--space-4) var(--space-5);background:var(--color-surface);border:1px solid var(--color-border);border-left:3px solid var(--color-border);border-radius:var(--radius-md);box-shadow:var(--shadow-sm);transition:box-shadow var(--duration-normal) var(--ease-out),border-color var(--duration-normal) var(--ease-out)}.lesson-card:hover{box-shadow:var(--shadow-md)}.lesson-card[data-status=live]{border-left-color:var(--color-live);background:linear-gradient(to right,var(--color-live-wash),var(--color-surface) 18rem)}.lesson-card[data-status=scheduled]{border-left-color:var(--color-accent)}.lesson-card[data-status=ended]{border-left-color:var(--color-border);background:var(--color-surface-sunken);box-shadow:none}.lesson-card[data-status=cancelled]{border-left-color:var(--color-danger);background:var(--color-surface-sunken);box-shadow:none}.lesson-card[data-status=cancelled] .lesson-card__title{text-decoration:line-through;color:var(--color-text-muted)}.lesson-card__time{display:flex;flex-direction:column;gap:var(--space-1);min-width:7rem;flex-shrink:0}.lesson-card__clock{font-family:var(--font-mono);font-size:var(--text-md);font-variant-numeric:tabular-nums;font-weight:500}.lesson-card__body{display:flex;flex-direction:column;gap:var(--space-1);min-width:0;flex:1}.lesson-card__title{font-family:var(--font-serif);font-size:var(--text-lg);font-weight:600;line-height:var(--leading-tight)}.lesson-card__meta{display:flex;align-items:center;gap:var(--space-2);flex-wrap:wrap;color:var(--color-text-muted);font-size:var(--text-sm)}.lesson-card__actions{display:flex;align-items:center;gap:var(--space-2);flex-shrink:0}.card-grid,.canvas-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(13rem,1fr));gap:var(--space-4);list-style:none;margin:0;padding:0}.canvas-tile{display:flex;flex-direction:column;gap:var(--space-2);padding:var(--space-3);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);box-shadow:var(--shadow-sm)}.canvas-tile__thumb{aspect-ratio:4 / 3;border-radius:var(--radius-sm);border:1px solid var(--color-border-subtle);background:var(--color-surface-sunken);overflow:hidden;display:grid;place-items:center}.canvas-tile__thumb>img{width:100%;height:100%;object-fit:contain}.canvas-tile__title{font-family:var(--font-serif);font-size:var(--text-md);font-weight:600;line-height:var(--leading-tight)}.canvas-tile__actions{display:flex;flex-wrap:wrap;gap:var(--space-1);margin-top:auto;padding-top:var(--space-1)}.chat{display:flex;flex-direction:column;min-height:0;gap:var(--space-2)}.chat__log{list-style:none;margin:0;padding:0 var(--space-1);display:flex;flex-direction:column;gap:var(--space-3);overflow-y:auto;flex:1 1 auto;min-height:0;justify-content:flex-end}.chat-message{display:flex;flex-direction:column;gap:.1rem}.chat-message__head{display:flex;align-items:baseline;gap:var(--space-2)}.chat-message__author{font-weight:600;font-size:var(--text-sm)}.chat-message__time{font-size:var(--text-xs);color:var(--color-text-faint);font-variant-numeric:tabular-nums}.chat-message__text{font-size:var(--text-sm);white-space:pre-wrap;overflow-wrap:anywhere}.chat-message[data-pending=true]{opacity:.55}.chat-message[data-deleted=true] .chat-message__text{color:var(--color-text-faint);font-style:italic}.chat-message__quote{border-left:2px solid var(--color-border);padding-left:var(--space-2);font-size:var(--text-xs);color:var(--color-text-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chat-composer{display:flex;gap:var(--space-2);align-items:flex-end;padding-top:var(--space-2);border-top:1px solid var(--color-border-subtle)}.chat-composer textarea{flex:1;resize:none;padding:var(--space-2) var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-bg);color:var(--color-text);font:inherit;font-size:var(--text-sm);max-height:8rem}.classroom .chat{background:var(--color-stage-tile);border-radius:var(--radius-md);padding:var(--space-3);color:#eceef2;max-height:62vh}.classroom .chat .chat-message__time,.classroom .chat .muted{color:#9aa4b2}.classroom .chat textarea{background:var(--color-stage);border-color:#2b303b;color:#eceef2}.prejoin-preview{display:grid;place-items:center;aspect-ratio:16 / 9;border-radius:var(--radius-md);background:var(--color-stage);overflow:hidden}.prejoin-preview>video{width:100%;height:100%;object-fit:cover;transform:scaleX(-1)}.classroom{display:block}.classroom-bar{justify-content:space-between;flex-wrap:wrap;gap:var(--space-2) var(--space-3)}.classroom-bar .quick-invite>.note{flex-basis:100%}.classroom-bar>h1{margin:0;font-size:var(--text-xl)}.screen-share-unsupported{display:inline-flex;align-items:center;gap:var(--space-2)}.screen-share-unsupported>.muted{font-size:var(--text-sm)}.lobby-queue{padding:var(--space-3) var(--space-4);border:1px solid color-mix(in srgb,var(--color-pending) 35%,transparent);border-left:3px solid var(--color-pending);border-radius:var(--radius-md);background:var(--color-pending-wash)}.lobby-queue>h2{margin:0;font-size:var(--text-lg)}.lobby-queue ul{list-style:none;margin:0;padding:0}.lobby-request{align-items:center;gap:var(--space-3)}.lobby-name{font-weight:600}.classroom-grid{display:grid;gap:var(--space-2);grid-template-columns:repeat(auto-fit,minmax(15rem,1fr));align-content:start;height:62vh;min-height:16rem;overflow:hidden}.classroom-grid[data-board=open]{height:11rem;min-height:0;grid-template-columns:repeat(auto-fit,minmax(9rem,1fr))}.classroom-grid[data-board=open][data-layout=screen]{height:42vh;grid-template-columns:repeat(auto-fit,minmax(9rem,1fr))}.classroom-grid[data-layout=speaker]{grid-template-columns:repeat(auto-fit,minmax(9rem,1fr))}.classroom-grid[data-layout=speaker] .classroom-tile[data-focused=true]{grid-column:1 / -1;order:-1}.classroom-grid[data-layout=screen]{grid-template-columns:minmax(24rem,1fr);grid-template-rows:repeat(3,minmax(0,1fr));grid-auto-flow:column;grid-auto-columns:var(--rail-width);height:var(--stage-height);align-content:stretch}.classroom-grid[data-layout=screen] .classroom-tile[data-focused=true]{grid-column:1;grid-row:1 / -1;display:flex;align-items:center;justify-content:center;min-width:0}.classroom-grid[data-layout=screen] .classroom-tile[data-self=true]:not([data-focused=true]){order:-1}.classroom-grid[data-layout=screen]{--stage-height: 62vh;--rail-width: 11rem}.classroom-grid[data-layout=screen][data-board=open]{--stage-height: 42vh}.classroom-grid[data-layout=screen] .classroom-tile[data-screen=true] .lk-participant-tile{aspect-ratio:var(--share-aspect, 16 / 9);height:100%;width:auto;max-width:100%;min-height:0}@media(max-width:60rem){.classroom-grid[data-layout=screen]{grid-template-columns:repeat(auto-fit,minmax(7rem,1fr));grid-template-rows:auto;grid-auto-flow:row;grid-auto-columns:auto;height:auto;max-height:var(--stage-height)}.classroom-grid[data-layout=screen] .classroom-tile[data-focused=true]{grid-column:1 / -1;grid-row:auto}.classroom-grid[data-layout=screen] .classroom-tile[data-screen=true] .lk-participant-tile{height:auto;width:100%;max-height:calc(var(--stage-height) - 6rem)}}.classroom-grid[data-layout=screen] .classroom-tile[data-screen=true] video{object-fit:contain}.classroom-tile{position:relative;min-width:0}.classroom-tile .lk-participant-tile{aspect-ratio:16 / 9;border-radius:var(--radius-md);background:var(--color-stage-tile);overflow:hidden}.classroom-tile .lk-connection-quality{display:none}.tile-quality{position:absolute;top:var(--space-1);right:var(--space-1);padding:0 var(--space-1);border-radius:var(--radius-sm);font-size:var(--text-sm);line-height:1.6;background:var(--color-surface);color:var(--color-text-muted);max-width:1.25rem;overflow:hidden;white-space:nowrap}.tile-quality[data-quality=excellent]{color:var(--color-verified)}.tile-quality[data-quality=good]{color:var(--color-text)}.tile-quality[data-quality=poor],.tile-quality[data-quality=lost]{color:var(--color-pending)}.classroom-pager{justify-content:space-between;align-items:center;flex-wrap:wrap;gap:var(--space-2) var(--space-4)}.classroom-pager__count{font-variant-numeric:tabular-nums;min-width:14rem;text-align:center}.classroom-pager__views button[aria-pressed=true]{background:var(--color-accent-wash);border-color:var(--color-accent);color:var(--color-accent)}@media(max-width:46rem){.classroom-pager{justify-content:center}.classroom-pager__count{min-width:0}}.classroom-controls{justify-content:center;padding-top:var(--space-2)}.screen-share-confirm{display:inline-flex;align-items:center;gap:var(--space-2)}.whiteboard{display:flex;flex-direction:column;gap:var(--space-2);flex:1 1 auto;height:100%;min-height:0}.whiteboard>.canvas-surface{min-height:18rem}.canvas-toolbar{display:flex;flex-wrap:wrap;gap:var(--space-3);align-items:center;padding:var(--space-2);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md)}.canvas-toolbar__group{display:flex;gap:var(--space-1);align-items:center}.canvas-toolbar__group+.canvas-toolbar__group{padding-left:var(--space-3);border-left:1px solid var(--color-border-subtle)}.canvas-toolbar__swatch{width:1.5rem;height:1.5rem;border-radius:50%;padding:0}.canvas-toolbar__swatch[aria-pressed=true]{outline:2px solid var(--color-text);outline-offset:2px}.canvas-toolbar button[aria-pressed=true]{background:var(--color-accent-wash);border-color:var(--color-accent);color:var(--color-accent)}.canvas-surface{position:relative;flex:1 1 auto;min-height:0;overflow:hidden;touch-action:none;user-select:none;-webkit-user-select:none;overscroll-behavior:contain;cursor:crosshair;border-radius:var(--radius-md)}.canvas-surface__board,.canvas-surface__overlay{position:absolute;top:0;right:0;bottom:0;left:0}.canvas-surface__overlay{pointer-events:none}.canvas-surface__composer{position:absolute;z-index:1;min-width:8rem;resize:none}.canvas-notices{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--space-1)}.canvas-notices__item{display:flex;align-items:center;justify-content:space-between;gap:var(--space-2);padding:var(--space-1) var(--space-2);border-left:3px solid var(--color-pending);background:var(--color-surface);font-size:var(--text-sm)}.annotation-surface{position:absolute}.annotation-surface .canvas-surface{background:transparent;cursor:crosshair;height:100%}.annotation-notice{position:absolute;bottom:var(--space-2);left:var(--space-2);z-index:2;margin:0;padding:var(--space-1) var(--space-2);border-radius:var(--radius-sm);background:#000000a8;color:#eceef2;font-size:var(--text-sm)}.annotation-toolbar{position:absolute;top:var(--space-2);left:50%;transform:translate(-50%);z-index:2;display:flex;gap:var(--space-2);align-items:center;padding:var(--space-1) var(--space-2);border-radius:var(--radius-pill);background:color-mix(in srgb,var(--color-stage) 85%,transparent);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);box-shadow:var(--shadow-md)}.annotation-toolbar button{background:transparent;border-color:transparent;color:#eceef2}.annotation-toolbar button:hover:not(:disabled){background:#ffffff1f}.annotation-toolbar button[aria-pressed=true]{background:#fff3}.classroom .lesson-board{height:min(52vh,40rem)}.lesson-board{display:flex;flex-direction:column;flex:1 1 auto;min-height:24rem}.admin-nav{display:flex;flex-wrap:wrap;gap:var(--space-4);padding-bottom:var(--space-3);border-bottom:1px solid var(--color-border-subtle)}.admin-nav a{color:var(--color-text-muted);text-decoration:none}.admin-nav a:hover,.admin-nav a[aria-current=page]{color:var(--color-text)}.admin-row{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--space-4);padding:var(--space-4) 0;border-bottom:1px solid var(--color-border-subtle)}.admin-row:last-child{border-bottom:0}.admin-audit-row{padding:var(--space-3) 0;border-bottom:1px solid var(--color-border-subtle)}.admin-audit-row:last-child{border-bottom:0}.reason-prompt{border-color:var(--color-accent)}.question,.question-editor{display:flex;flex-direction:column;gap:var(--space-3);max-width:46rem;border:0;margin:0;padding:0}.question__prompt{display:block;font-size:var(--text-md);font-weight:600;line-height:1.5;margin:0;padding:0}.question__hint{color:var(--color-text-muted);font-size:var(--text-sm);margin:0}.question__choice{display:flex;align-items:baseline;gap:var(--space-3);padding:var(--space-2) var(--space-3);border:1px solid var(--color-border-subtle);border-radius:var(--radius-md);cursor:pointer}.question__choice:hover{background:var(--color-surface-sunken)}.question__pairs,.question__items{display:flex;flex-direction:column;gap:var(--space-2);list-style:none;margin:0;padding:0}.question__pair,.question__item{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-2) var(--space-3);border:1px solid var(--color-border-subtle);border-radius:var(--radius-md)}.question__pair>span:first-child,.question__item>span:first-child{flex:1}.question__item-controls{display:flex;gap:var(--space-1)}.question--cloze{line-height:2.2}.question__blank{display:inline-block;width:9rem;margin:0 var(--space-1);padding:0 var(--space-2);border:0;border-bottom:2px solid var(--color-accent);border-radius:0;background:transparent}.question__blank-preview{border-bottom:2px solid var(--color-border);color:var(--color-text-muted);padding:0 var(--space-2)}.question-editor__list{display:flex;flex-direction:column;gap:var(--space-2);list-style:none;margin:0;padding:0}.question-editor__option{display:flex;align-items:center;gap:var(--space-2)}.question-editor__option input[type=text]{flex:1}.question-editor__side{display:flex;flex-direction:column;gap:var(--space-2);border:1px solid var(--color-border-subtle);border-radius:var(--radius-md);padding:var(--space-3)}.question-editor__note,.question-editor__preview{color:var(--color-text-muted);font-size:var(--text-sm);margin:0}.question-editor__preview{color:var(--color-text);line-height:2}.question-editor__accept{display:flex;flex-direction:column;gap:var(--space-2)}.question-notice{border:1px solid var(--color-border);border-left:3px solid var(--color-pending);border-radius:var(--radius-md);background:var(--color-surface-sunken);padding:var(--space-3)}.question-notice p{margin:var(--space-2) 0 0}.question-notice__type{color:var(--color-text-faint);font-family:var(--font-mono);font-size:var(--text-sm)}@media(max-width:46rem){.page-header{flex-direction:column;align-items:stretch}.page-header__actions{margin-left:0}.lesson-card{flex-direction:column;gap:var(--space-2)}.lesson-card__actions{width:100%}}@media(max-width:46rem){.admin-row{flex-direction:column;align-items:stretch}}.visually-hidden{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}.taking{max-width:48rem;margin:0 auto;padding:var(--space-4)}.taking__header{position:sticky;top:0;z-index:1;display:flex;flex-wrap:wrap;align-items:baseline;gap:var(--space-3);padding:var(--space-3) 0;background:var(--color-surface);border-bottom:1px solid var(--color-border)}.taking__header h1{flex:1 1 100%;margin:0}.taking__progress,.taking__saved,.taking__timer{margin:0;font-size:var(--text-sm);color:var(--color-text-muted)}.taking__timer time{font-variant-numeric:tabular-nums;font-weight:600;color:var(--color-text)}.taking__timer--expired time,.taking__saved--error,.taking__saved--expired{color:var(--color-danger)}.taking__questions{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--space-5)}.taking__question{padding-top:var(--space-4);border-top:1px solid var(--color-border)}.taking__question-number{margin:0 0 var(--space-2);font-size:var(--text-sm);color:var(--color-text-muted)}.taking__footer{margin-top:var(--space-5);padding-top:var(--space-4);border-top:1px solid var(--color-border)}.taking__confirm{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2)}.taking__confirm p{flex:1 1 100%;margin:0}.taking__error{color:var(--color-danger)}.quiz-progress__counts{display:flex;flex-wrap:wrap;gap:var(--space-4);list-style:none;margin:0 0 var(--space-3);padding:0;color:var(--color-text-muted)}.quiz-progress__counts strong{font-size:var(--text-lg);font-variant-numeric:tabular-nums;color:var(--color-text)}.quiz-progress__stale{margin:0 0 var(--space-3);font-size:var(--text-sm);color:var(--color-text-muted)}.quiz-progress__table{width:100%;border-collapse:collapse}.quiz-progress__table th,.quiz-progress__table td{padding:var(--space-2);text-align:left;border-bottom:1px solid var(--color-border)}.quiz-progress__state--error{color:var(--color-danger)}.grading-page{max-width:60rem;margin:0 auto;padding:var(--space-4)}.queue{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--space-2)}.queue__row{display:flex;flex-wrap:wrap;align-items:baseline;gap:var(--space-3)}.queue__who{flex:1 1 16rem}.queue__what{margin:var(--space-1) 0 0;font-size:var(--text-sm);color:var(--color-text-muted)}.queue__marks{display:flex;gap:var(--space-2)}.queue__waited{margin:0;min-width:6rem;text-align:right;font-variant-numeric:tabular-nums;color:var(--color-text-muted)}.grading-list__filters{display:flex;flex-wrap:wrap;gap:var(--space-2);margin-bottom:var(--space-4)}.grading-list__filters button[aria-pressed=true]{background:var(--color-accent-wash);border-color:var(--color-accent);color:var(--color-accent)}.grading-list__table{width:100%;border-collapse:collapse}.grading-list__table th,.grading-list__table td{text-align:left;padding:var(--space-2) var(--space-3);border-bottom:1px solid var(--color-border-subtle)}.grading-list__attempt,.grading-list__state{color:var(--color-text-muted);font-size:var(--text-sm)}.grading-list__state--error{color:var(--color-danger)}.grading{max-width:52rem;margin:0 auto;padding:var(--space-4)}.grading__header{position:sticky;top:0;z-index:1;display:flex;flex-wrap:wrap;align-items:baseline;gap:var(--space-3);padding:var(--space-3) 0;background:var(--color-surface);border-bottom:1px solid var(--color-border)}.grading__header h1{flex:1 1 100%;margin:0}.grading__who,.grading__saved,.grading__remaining,.grading__score-origin,.grading__explanation{margin:0;font-size:var(--text-sm);color:var(--color-text-muted)}.grading__total strong{font-variant-numeric:tabular-nums;font-size:var(--text-lg);color:var(--color-text)}.grading__late,.grading__saved--error,.grading__error{color:var(--color-danger)}.grading__rail ol{display:flex;flex-wrap:wrap;gap:var(--space-1);list-style:none;margin:var(--space-4) 0;padding:0}.grading__rail-item{min-width:2rem;padding:var(--space-1) var(--space-2);font-variant-numeric:tabular-nums;border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface)}.grading__rail-item--needs{border-color:var(--color-warn);background:var(--color-warn-bg);font-weight:600}.grading__rail-item--current{outline:2px solid var(--color-accent);outline-offset:1px}.grading__badges{display:flex;gap:var(--space-2)}.grading__hint{margin:0 0 var(--space-3);font-size:var(--text-sm);color:var(--color-text-muted)}.grading__hint kbd{padding:0 var(--space-1);border:1px solid var(--color-border);border-bottom-width:2px;border-radius:var(--radius-sm);background:var(--color-surface);font-size:.9em}.grading__question{padding-top:var(--space-4);border-top:1px solid var(--color-border)}.grading__score{display:flex;flex-wrap:wrap;align-items:baseline;gap:var(--space-3);margin:var(--space-4) 0}.grading__score input{width:5rem;margin-left:var(--space-2);font-variant-numeric:tabular-nums}.grading__out-of{color:var(--color-text-muted)}.grading-answer__text{padding:var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface-sunken);white-space:pre-wrap}.grading-answer__marked{background:var(--color-pending-wash);box-shadow:inset 0 -2px 0 var(--color-pending);color:inherit}.grading-answer__composer{display:flex;flex-wrap:wrap;align-items:flex-start;gap:var(--space-2);margin-top:var(--space-2);padding:var(--space-3);border:1px solid var(--color-accent);border-radius:var(--radius-md);background:var(--color-accent-wash)}.grading-answer__composer textarea{width:100%;min-width:16rem}.grading-answer__quote,.grading-answer__note{margin:0;font-size:var(--text-sm);color:var(--color-text-muted)}.grading-answer__comments{list-style:none;margin:var(--space-3) 0 0;padding:0;display:flex;flex-direction:column;gap:var(--space-2)}.grading-answer__comments li{padding:var(--space-2) var(--space-3);border-left:3px solid var(--color-pending);background:var(--color-surface-sunken);border-radius:0 var(--radius-sm) var(--radius-sm) 0}.grading-answer__comments p{margin:var(--space-1) 0 0}.grading__footer{margin-top:var(--space-6);padding-top:var(--space-4);border-top:1px solid var(--color-border)}.grading__summary{display:block;margin-bottom:var(--space-4)}.grading__summary textarea{display:block;width:100%;margin-top:var(--space-2)}.grading__confirm{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-3);padding:var(--space-3);border:1px solid var(--color-warn);border-radius:var(--radius-md);background:var(--color-warn-bg)}.egress{width:100vw;height:100vh;margin:0;background:#000;overflow:hidden}.egress-frame{position:relative;width:100%;height:100%;background:#000;color:#fff}.egress-stage{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;background:#000}.egress-inset{position:absolute;right:2.5%;bottom:2.5%;width:17%;aspect-ratio:16 / 9;overflow:hidden;border-radius:6px;background:#111;box-shadow:0 2px 12px #0009}.egress-overlay{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none}.egress-name{font-size:2.2vw;font-weight:600;color:#e8e8e8;text-align:center;padding:0 4%}.egress-inset .egress-name{font-size:.9rem}.egress,.egress *{cursor:none!important;-webkit-user-select:none!important;user-select:none!important}.on-air{display:flex;gap:.75rem;align-items:flex-start;padding:.75rem 1rem;border:1px solid var(--color-recording, #c0392b);border-radius:var(--radius-md, 8px);background:color-mix(in srgb,var(--color-recording, #c0392b) 10%,transparent)}.on-air-text{display:flex;flex-direction:column;gap:.15rem}.on-air-dot{flex:none;width:.7rem;height:.7rem;margin-top:.3rem;border-radius:50%;background:var(--color-recording, #c0392b)}.on-air[data-running=true] .on-air-dot{animation:on-air-pulse 2s ease-in-out infinite}@keyframes on-air-pulse{0%,to{opacity:1}50%{opacity:.35}}@media(prefers-reduced-motion:reduce){.on-air[data-running=true] .on-air-dot{animation:none}}.recordings{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.5rem}.recording-row{display:flex;gap:1rem;align-items:center;justify-content:space-between;padding:.6rem .8rem;border:1px solid var(--color-border, #ddd);border-radius:var(--radius-md, 8px)}.recording-row[data-status=deleted]{opacity:.6}[data-urgency=soon]{color:var(--color-warn);font-weight:600}[data-urgency=gone]{color:var(--color-recording, #c0392b);font-weight:600}.class-sheet{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(18rem,1fr));gap:.5rem}.class-sheet__card{display:flex;flex-direction:column;gap:.35rem;padding:.75rem;border:1px dashed var(--color-border, #bbb);border-radius:var(--radius-md, 8px);break-inside:avoid}.class-sheet__name{font-size:1.05rem}.class-sheet__link{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.8rem;word-break:break-all}@media print{.app-bar,.app-nav,.sheet-controls{display:none!important}.app-main{padding:0}.class-sheet{grid-template-columns:repeat(2,1fr)}.class-sheet__card{border-color:#000}}.calendar{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:1px;background:var(--color-border, #ddd);border:1px solid var(--color-border, #ddd);border-radius:var(--radius-md, 8px);overflow:hidden}.calendar-weekday{padding:.35rem .5rem;background:var(--color-surface-sunken);font-size:.8rem;font-weight:600;text-align:center}.calendar-cell{display:flex;flex-direction:column;gap:.25rem;padding:.35rem;background:var(--color-surface, #fff);min-height:6rem}.calendar[data-scale=week] .calendar-cell{min-height:12rem}.calendar-cell[data-in-month=false]{background:var(--color-surface-sunken)}.calendar-cell[data-in-month=false] .calendar-date{opacity:.5}.calendar-cell[data-today=true]{box-shadow:inset 0 0 0 2px var(--color-accent, #2f6fb4)}.calendar-date{font-size:.8rem;font-weight:600;opacity:.75}.calendar-entry{display:flex;flex-direction:column;padding:.2rem .35rem;border-radius:4px;background:color-mix(in srgb,var(--color-accent, #2f6fb4) 12%,transparent);font-size:.78rem;line-height:1.25}.calendar-entry[draggable=true]{cursor:grab}.calendar-entry[data-phase=live]{background:color-mix(in srgb,var(--color-live, #2e7d32) 20%,transparent);font-weight:600}.calendar-entry[data-phase=cancelled]{background:transparent;text-decoration:line-through;opacity:.6}.calendar-entry[data-phase=past]{opacity:.55}.calendar-entry__time{font-variant-numeric:tabular-nums;font-weight:600}.calendar-entry__title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}@media(max-width:720px){.calendar{grid-template-columns:1fr}.calendar-weekday{display:none}.calendar-cell{min-height:3rem}}.library__controls{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-3)}.library__tag input,.library__new input{font:inherit;font-size:var(--text-sm);padding:var(--space-2) var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface);color:var(--color-text);min-width:10rem}.library__new{display:flex;gap:var(--space-2);margin-left:auto}.library__new input{min-width:14rem}.library__card h3{font-size:var(--text-lg)}.library__card h3 a{color:inherit;text-decoration:none}.library__card h3 a:hover{text-decoration:underline}.segmented{display:inline-flex;padding:2px;border:1px solid var(--color-border);border-radius:var(--radius-pill);background:var(--color-surface-sunken)}.segmented__option{border:0;background:none;font:inherit;font-size:var(--text-sm);font-weight:500;color:var(--color-text-muted);padding:var(--space-1) var(--space-3);border-radius:var(--radius-pill);cursor:pointer;white-space:nowrap}.segmented__option[aria-pressed=true]{background:var(--color-surface);color:var(--color-text);box-shadow:var(--shadow-sm)}.tag{font-size:var(--text-xs);font-weight:500;color:var(--color-text-muted);background:var(--color-surface-sunken);border:1px solid var(--color-border-subtle);border-radius:var(--radius-pill);padding:1px var(--space-2)}.form-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,15rem),1fr));gap:var(--space-3) var(--space-4);align-items:start}.assign-form .field>select,.assign-form .field>input{width:100%}.question-row__points{display:inline-flex;align-items:center;gap:var(--space-2)}.question-row__points input{width:4.5rem;font:inherit;font-size:var(--text-sm);padding:var(--space-1) var(--space-2);border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface);color:var(--color-text)}.switch-row__label{display:flex;align-items:flex-start;gap:var(--space-3);cursor:pointer}.switch-row__label input[type=checkbox]{width:1.15rem;height:1.15rem;margin-top:2px;accent-color:var(--color-accent);flex-shrink:0}.notice-ok{border-color:color-mix(in srgb,var(--color-verified) 35%,transparent);border-left-color:var(--color-verified);background:var(--color-verified-wash)}@media(max-width:46rem){.library__new{margin-left:0;width:100%}.library__new input{min-width:0;flex:1}}.table-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch}.data-table{width:100%;border-collapse:collapse;font-size:var(--text-sm)}.data-table th,.data-table td{text-align:left;padding:var(--space-2) var(--space-3);border-bottom:1px solid var(--color-border-subtle);white-space:nowrap}.data-table thead th{font-size:var(--text-xs);font-weight:600;letter-spacing:var(--tracking-label);text-transform:uppercase;color:var(--color-text-faint)}.data-table tbody th{font-weight:500;white-space:normal}.data-table tbody tr:last-child th,.data-table tbody tr:last-child td{border-bottom:0}.recording-row__report{margin-top:var(--space-3);padding-top:var(--space-3);border-top:1px solid var(--color-border-subtle)}.weekday-picker{border:0;margin:0;padding:0}.weekday-picker__day{min-width:2.75rem;min-height:2.5rem;border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface);color:var(--color-text-muted);font:inherit;font-size:var(--text-sm);font-weight:600;cursor:pointer}.weekday-picker__day[aria-pressed=true]{background:var(--color-accent-wash);border-color:color-mix(in srgb,var(--color-accent) 40%,var(--color-border));color:var(--color-accent)}.stat-list{display:grid;gap:var(--space-2)}.stat-list li{display:flex;align-items:baseline;gap:var(--space-2)}.stat-list a{font-family:var(--font-serif);font-size:var(--text-2xl);font-weight:600;line-height:1;text-decoration:none;min-width:1.5ch}.stat-list a:hover{text-decoration:underline}.empty-state{padding:var(--space-8) var(--space-5)}.page-header{padding-bottom:var(--space-4)}.stack-loose{gap:var(--space-6)}@media(max-width:46rem){.card{padding:var(--space-4)}.empty-state{padding:var(--space-6) var(--space-4)}h1{font-size:var(--text-2xl)}.page-header__actions,.page-header__actions>*{width:100%}.page-header__actions{flex-wrap:wrap}}@media(max-width:46rem){.classroom-grid{grid-template-columns:repeat(auto-fit,minmax(8.5rem,1fr));height:44vh;min-height:12rem}.classroom-grid[data-board=open]{height:7.5rem;grid-template-columns:repeat(auto-fit,minmax(6rem,1fr))}.classroom-grid[data-layout=screen]{--stage-height: 46vh;--rail-width: 0}.classroom-controls{flex-wrap:wrap;gap:var(--space-2)}.classroom-controls .btn,.classroom-controls button{min-height:2.75rem;flex:1 1 8rem}}@media(min-width:46.01rem)and (max-width:60rem){.classroom-grid{height:52vh}}.games-panel{padding:var(--space-4, 1rem);border:1px solid var(--color-border);border-radius:var(--radius-md, 8px);background:var(--color-surface)}.games-panel__head h2{margin:0;font-size:var(--text-lg, 1.125rem)}.games-panel__host{padding-top:var(--space-3, .75rem);border-top:1px solid var(--color-border-subtle)}.game-kinds{display:grid;grid-template-columns:repeat(auto-fit,minmax(12rem,1fr));gap:var(--space-2, .5rem);border:0;padding:0;margin:0}.game-kind{display:grid;gap:.25rem;padding:var(--space-3, .75rem);border:1px solid var(--color-border);border-radius:var(--radius-md, 8px);cursor:pointer}.game-kind[data-selected=true]{border-color:var(--color-accent);background:var(--color-accent-wash)}.game-kind input{position:absolute;opacity:0;pointer-events:none}.game-players{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:var(--space-2, .5rem)}.game-player{display:inline-flex;align-items:center;gap:.5rem;padding:.25rem .625rem;border:1px solid var(--color-border);border-radius:999px}.game-player[data-team=red]{border-color:var(--game-red)}.game-player[data-team=blue]{border-color:var(--game-blue)}.game-player[data-alive=false]{opacity:.55;text-decoration:line-through}.game-outcome{display:grid;gap:.25rem;padding:var(--space-3, .75rem);border-radius:var(--radius-md, 8px);background:var(--color-accent-wash)}.game-refusal{margin:0;color:var(--color-danger)}.codenames-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:var(--space-2, .5rem)}.codenames-card{min-height:3.5rem;padding:.5rem;border:2px solid var(--color-border);border-radius:var(--radius-md, 8px);background:var(--color-surface-sunken);color:var(--color-text);font-weight:600;text-transform:uppercase;letter-spacing:.02em;overflow-wrap:anywhere}.codenames-card:not(:disabled){cursor:pointer}.codenames-card:not(:disabled):hover{border-color:var(--color-accent)}.codenames-card[data-color=red]{border-color:var(--game-red)}.codenames-card[data-color=blue]{border-color:var(--game-blue)}.codenames-card[data-color=neutral]{border-color:var(--game-neutral)}.codenames-card[data-color=assassin]{border-color:var(--color-danger);border-style:dashed;background:var(--game-assassin);color:var(--game-assassin-ink)}.codenames-card[data-color=assassin]:before{content:"☠︎ "}.codenames-card[data-revealed=true][data-color=red]{background:var(--game-red);color:var(--game-ink)}.codenames-card[data-revealed=true][data-color=blue]{background:var(--game-blue);color:var(--game-ink)}.codenames-card[data-revealed=true][data-color=neutral]{background:var(--game-neutral-wash);color:var(--color-text-muted)}.codenames-card[data-revealed=true][data-color=assassin]{background:var(--game-assassin);color:var(--game-assassin-ink)}.codenames-team[data-team=red]{color:var(--game-red);font-weight:600}.codenames-team[data-team=blue]{color:var(--game-blue);font-weight:600}.codenames-history li[data-team=red]{color:var(--game-red)}.codenames-history li[data-team=blue]{color:var(--game-blue)}.spyfall-card,.mafia-role{display:grid;gap:.25rem;justify-items:start;padding:var(--space-4, 1rem);border:2px solid var(--color-accent);border-radius:var(--radius-md, 8px)}.spyfall-card strong,.mafia-role strong{font-size:var(--text-xl, 1.25rem)}.spyfall-card[data-role=spy],.mafia-role[data-role=mafia]{border-color:var(--game-red)}.spyfall-locations{columns:2}.spyfall-locations li[data-current=true]{font-weight:700}.mafia-log{margin:0;padding-left:1.25rem}@media(max-width:40rem){.codenames-card{min-height:2.75rem;font-size:.75rem}}
