@font-face{font-family:Fraunces;font-style:normal;font-weight:600;font-display:swap;src:url(../fonts/fraunces-600.woff2)format("woff2")}:root{--bg:#f5f3ef;--surface:#fff;--surface-2:#eeebe5;--surface-3:#e3dfd7;--surface-tint:#f9f7f3;--text:#1b1f24;--muted:#565c64;--border:#dcd7ce;--border-soft:#e9e5de;--border-strong:#b5ada0;--accent:#1b5e9b;--accent-hover:#154c80;--accent-soft:#e2ecf7;--accent-text:#164f84;--on-accent:#fff;--ok:#157a3f;--ok-soft:#dcf1e3;--warn:#b14a00;--warn-soft:#fde8d6;--danger:#c0262d;--danger-soft:#fbe1df;--lock:#5b3cc4;--lock-soft:#ebe5fb;--companion:#0a6f7a;--companion-soft:#d3eef1;--brand-seat:#d38f12;--select:#c98508;--select-soft:#fbefd5;--select-text:#7a4d00;--scrim:#14120e73;--focus:#1b5e9b;--font-sans:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Noto Sans", Ubuntu, Cantarell, "Helvetica Neue", "Liberation Sans", Arial, system-ui, sans-serif;--font-display:"Fraunces", Georgia, "Times New Roman", serif;--font-mono:ui-monospace, SFMono-Regular, Menlo, Consolas, "Liberation Mono", monospace;--fw-regular:400;--fw-medium:500;--fw-strong:600;--fs-xs:12px;--fs-sm:13px;--fs-base:15px;--fs-md:17px;--fs-lg:20px;--fs-xl:28px;--fs-2xl:32px;--sp-1:4px;--sp-2:8px;--sp-3:12px;--sp-4:16px;--sp-5:24px;--sp-6:32px;--sp-7:48px;--radius:8px;--radius-sm:6px;--radius-lg:12px;--radius-pill:999px;--shadow:0 1px 2px #2820140d;--shadow-lg:0 10px 30px #28201429, 0 2px 6px #28201414;--sidebar-w:248px;--rail-w:68px;--topbar-h:48px;--control-h:36px;--control-h-sm:30px;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;font-family:var(--font-sans);font-size:var(--fs-base);font-weight:var(--fw-regular);-webkit-text-size-adjust:100%;line-height:1.5}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--bg:#111315;--surface:#1a1d21;--surface-2:#23272c;--surface-3:#2e3339;--surface-tint:#1e2125;--text:#ebe8e2;--muted:#a3a7ad;--border:#33383f;--border-soft:#262a2f;--border-strong:#4d545d;--accent:#7fb3e6;--accent-hover:#a0c7ee;--accent-soft:#1b2e42;--accent-text:#9cc6f0;--on-accent:#0a1826;--ok:#5fd08f;--ok-soft:#15301f;--warn:#ff9f5a;--warn-soft:#3a2414;--danger:#ff7a70;--danger-soft:#3f1b19;--lock:#b9a4ff;--lock-soft:#2a2244;--companion:#4fd1db;--companion-soft:#10363a;--brand-seat:#eab24a;--select:#eab24a;--select-soft:#3a2d12;--select-text:#f4ca7a;--scrim:#0009;--focus:#a0c7ee;--shadow:0 1px 2px #00000059;--shadow-lg:0 12px 32px #0000008c;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}:root[data-theme=dark]{--bg:#111315;--surface:#1a1d21;--surface-2:#23272c;--surface-3:#2e3339;--surface-tint:#1e2125;--text:#ebe8e2;--muted:#a3a7ad;--border:#33383f;--border-soft:#262a2f;--border-strong:#4d545d;--accent:#7fb3e6;--accent-hover:#a0c7ee;--accent-soft:#1b2e42;--accent-text:#9cc6f0;--on-accent:#0a1826;--ok:#5fd08f;--ok-soft:#15301f;--warn:#ff9f5a;--warn-soft:#3a2414;--danger:#ff7a70;--danger-soft:#3f1b19;--lock:#b9a4ff;--lock-soft:#2a2244;--companion:#4fd1db;--companion-soft:#10363a;--brand-seat:#eab24a;--select:#eab24a;--select-soft:#3a2d12;--select-text:#f4ca7a;--scrim:#0009;--focus:#a0c7ee;--shadow:0 1px 2px #00000059;--shadow-lg:0 12px 32px #0000008c;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*,:before,:after{box-sizing:border-box}html,body{margin:0}body{background:var(--bg);color:var(--text);min-height:100dvh;overflow-x:hidden}#root{min-height:100dvh}h1,h2,h3{margin:0 0 var(--sp-2);letter-spacing:-.01em;line-height:1.25}h1{font-family:var(--font-display);font-size:var(--fs-xl);font-weight:var(--fw-strong);letter-spacing:-.005em}h2{font-size:var(--fs-lg);font-weight:var(--fw-strong)}h3{font-size:var(--fs-md);font-weight:var(--fw-strong)}strong,b{font-weight:var(--fw-strong)}p{margin:0 0 var(--sp-2)}p:last-child{margin-bottom:0}a{color:var(--accent-text);text-underline-offset:2px}a:hover{color:var(--accent-hover)}:focus-visible{outline:2px solid var(--focus);outline-offset:2px}[tabindex="-1"]:focus{outline:none}::selection{background:var(--select-soft)}button,input,select,textarea{font:inherit;color:inherit}button,.button{min-height:var(--control-h);border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);color:var(--text);font-weight:var(--fw-medium);cursor:pointer;justify-content:center;align-items:center;gap:6px;padding:6px 14px;line-height:1.2;text-decoration:none;transition:background-color .12s,border-color .12s,color .12s;display:inline-flex}button:hover,.button:hover{background:var(--surface-2);border-color:var(--border-strong);color:var(--text)}button:active:not(:disabled),.button:active{background:var(--surface-3)}button:disabled{opacity:.5;cursor:not-allowed}button:disabled:hover{background:var(--surface);border-color:var(--border)}button>svg,.button>svg{flex:none}button.primary,.button.primary{background:var(--accent);border-color:var(--accent);color:var(--on-accent)}button.primary:hover,.button.primary:hover{background:var(--accent-hover);border-color:var(--accent-hover);color:var(--on-accent)}button.primary:disabled:hover{background:var(--accent);border-color:var(--accent)}button.ghost,.button.ghost{background:0 0;border-color:#0000}button.ghost:hover,.button.ghost:hover{background:var(--surface-2);border-color:#0000}button.ghost:disabled:hover{background:0 0}button.danger{background:var(--danger-soft);border-color:var(--danger);color:var(--danger);font-weight:var(--fw-strong)}button.danger:hover{background:var(--danger-soft);border-color:var(--danger);color:var(--danger)}.danger-text,button.danger-text{color:var(--danger)}button.danger-text:hover{color:var(--danger);border-color:var(--danger);background:var(--danger-soft)}button.small,.button.small{min-height:var(--control-h-sm);font-size:var(--fs-sm);gap:5px;padding:3px 10px}button.active,.button.active{background:var(--accent-soft);border-color:var(--accent);color:var(--accent-text)}.icon-btn,button.icon-btn{width:var(--control-h);min-width:var(--control-h);padding:0}.icon-only{min-width:var(--control-h-sm);padding:0 6px}.count{border-radius:var(--radius-pill);background:var(--surface-2);min-width:22px;height:20px;color:var(--muted);font-size:var(--fs-xs);font-weight:var(--fw-strong);justify-content:center;align-items:center;padding:0 6px;display:inline-flex}input[type=text],input[type=number],input[type=date],input[type=search],select,textarea{background:var(--surface);border:1px solid var(--border-strong);border-radius:var(--radius);min-height:var(--control-h);max-width:100%;padding:5px 10px}input[type=text]:hover,input[type=number]:hover,input[type=date]:hover,input[type=search]:hover,select:hover,textarea:hover{border-color:var(--muted)}input:focus-visible,select:focus-visible,textarea:focus-visible{outline:2px solid var(--focus);outline-offset:0;border-color:var(--focus)}input:disabled,select:disabled{opacity:.55;cursor:not-allowed}select{appearance:none;cursor:pointer;border-color:var(--border);font-weight:var(--fw-medium);background-image:linear-gradient(45deg, transparent 50%, var(--muted) 50%), linear-gradient(135deg, var(--muted) 50%, transparent 50%);background-position:right 15px center,right 10px center;background-repeat:no-repeat;background-size:5px 5px,5px 5px;padding-right:32px;line-height:1.2}select:hover{background-color:var(--surface-2);border-color:var(--border-strong)}select[multiple]{background-image:none;padding-right:10px}select option{background:var(--surface);color:var(--text);font-weight:var(--fw-regular)}input[type=number]{width:5.5em}input[type=checkbox],input[type=radio]{accent-color:var(--accent);cursor:pointer;width:18px;height:18px;margin:0}input[type=range]{accent-color:var(--accent);max-width:100%}textarea{width:100%;min-height:140px;font-family:var(--font-mono);font-size:.9em}::placeholder{color:var(--muted);opacity:.8}.field{flex-direction:column;gap:4px;min-width:0;font-size:.93em;display:flex}.field>span{color:var(--muted);font-weight:var(--fw-medium)}.check-row{gap:var(--sp-2);cursor:pointer;margin:var(--sp-2) 0}.choice-group{margin:0 0 var(--sp-2);border:none;min-width:0;padding:0}.choice-group legend{color:var(--muted);font-size:var(--fs-sm);font-weight:var(--fw-medium);margin-bottom:6px;padding:0}.choice-note{margin:6px 0 0}.card{background:var(--surface);border:1px solid var(--border-soft);border-radius:var(--radius-lg);padding:var(--sp-5);box-shadow:var(--shadow);min-width:0}.card .card{background:var(--surface-tint);box-shadow:none;border-color:#0000}.tinted{background:var(--surface-tint);border-radius:var(--radius);padding:var(--sp-3) var(--sp-4)}.card+.card{margin-top:var(--sp-4)}.card h2,.card h3{align-items:center;gap:var(--sp-2);flex-wrap:wrap;display:flex}.card-title,.card h2.card-title{font-size:var(--fs-md);font-weight:var(--fw-strong);margin-bottom:var(--sp-3)}.card-title>svg{color:var(--muted)}.card-head{justify-content:space-between;align-items:center;gap:var(--sp-2);margin-bottom:var(--sp-2);display:flex}.card-head .card-title{margin:0}.title-meta{font-size:var(--fs-sm);font-weight:var(--fw-regular)}.card-grid,.companion-grid{gap:var(--sp-4);grid-template-columns:repeat(auto-fill,minmax(min(340px,100%),1fr));align-items:start;display:grid}.card-grid>.card,.companion-grid>.card,.dash-grid>.card{margin:0}.list{margin:0;padding:0;list-style:none}.list li{align-items:center;gap:var(--sp-2);border-radius:var(--radius-sm);cursor:pointer;padding:6px 8px;display:flex}.list li:hover{background:var(--surface-2)}.list li.selected{background:var(--select-soft);box-shadow:inset 3px 0 0 var(--select)}.list li .grow,.list li input[type=text]{flex:1;min-width:0}.list li .small.muted{white-space:nowrap}.plain-list{margin:0;padding-left:1.1em}.plain-list li+li{margin-top:6px}.chips-list{margin:0 0 var(--sp-2);flex-wrap:wrap;gap:6px;padding:0;list-style:none;display:flex}.kv-list{margin:0;padding:0;list-style:none}.kv-list li{justify-content:space-between;gap:var(--sp-3);border-bottom:1px solid var(--border);padding:6px 0;display:flex}.kv-list li:last-child{border-bottom:none}.kv-list li>span:last-child{text-align:right;font-weight:var(--fw-medium)}.facts{grid-template-columns:minmax(110px,auto) 1fr;gap:8px 16px;margin:0;display:grid}.facts dt{color:var(--muted);font-weight:var(--fw-medium)}.facts dd{min-width:0;margin:0}.row{align-items:center;gap:var(--sp-2);flex-wrap:wrap;display:flex}.row.between{justify-content:space-between}.row.end{justify-content:flex-end}.row.center{justify-content:center}.row.nowrap{flex-wrap:nowrap}.row.tight{gap:var(--sp-1)}.stack{gap:var(--sp-3);flex-direction:column;display:flex}.spacer{flex:1}.muted{color:var(--muted)}.faint{opacity:.5}.small{font-size:var(--fs-sm)}.mono{font-family:var(--font-mono)}.table-scroll{position:relative;overflow-x:auto}table.grid{border-collapse:collapse;width:100%;font-size:.95em}table.grid th,table.grid td{text-align:left;border-bottom:1px solid var(--border);vertical-align:middle;padding:5px 8px}table.grid th{color:var(--muted);font-weight:var(--fw-medium);font-size:var(--fs-sm);white-space:nowrap}table.grid tbody tr:hover td{background:color-mix(in srgb, var(--surface-2) 55%, transparent)}table.grid input[type=text]{width:100%;min-height:30px;padding:2px 6px}table.grid tr.absent td{opacity:.5}.chip{background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius-pill);font-size:var(--fs-sm);align-items:center;gap:4px;max-width:100%;padding:1px 10px;line-height:1.6;display:inline-flex}.chip.level-hard,.chip.danger{background:var(--danger-soft);border:1.5px solid var(--danger)}.chip.level-strong,.chip.warn{background:var(--warn-soft);border:1.5px solid var(--warn)}.chip.level-soft{background:var(--accent-soft);border-color:var(--accent);border-style:dashed}.chip.ok{background:var(--ok-soft);border:1.5px solid var(--ok)}.chip.lock{background:var(--lock-soft);border:1.5px solid var(--lock)}.chip.companion{background:var(--companion-soft);border:1.5px solid var(--companion)}.status-pill{border-radius:var(--radius-pill);font-size:var(--fs-sm);font-weight:var(--fw-medium);white-space:nowrap;border:1.5px solid;align-items:center;gap:5px;max-width:100%;padding:2px 10px 2px 7px;line-height:1.4;display:inline-flex}.status-pill>svg{flex:none}.status-pill.ok{color:var(--ok);background:var(--ok-soft)}.status-pill.warn{color:var(--warn);background:var(--warn-soft)}.status-pill.danger{color:var(--danger);background:var(--danger-soft)}.status-pill.info{color:var(--accent-text);background:var(--accent-soft)}.status-pill.neutral{color:var(--muted);background:var(--surface-2);border-color:#0000}a.status-pill{text-decoration:none}a.status-pill:hover{filter:brightness(.97)}.toggle-chip{border-radius:var(--radius-pill);min-height:32px;font-weight:var(--fw-medium);border-color:var(--border);padding:3px 12px}.toggle-chip.on{background:var(--warn-soft);border-color:var(--warn);text-decoration:line-through;-webkit-text-decoration-color:var(--warn);text-decoration-color:var(--warn)}.toggle-chip.on:hover{background:var(--warn-soft);border-color:var(--warn)}.banner{border-radius:var(--radius);border:none;border-left:4px solid var(--border-strong);margin-bottom:var(--sp-3);background:var(--surface-tint);padding:10px 14px}.banner.ok{background:var(--ok-soft);border-color:var(--ok)}.banner.warn{background:var(--warn-soft);border-color:var(--warn)}.banner.danger{background:var(--danger-soft);border-color:var(--danger)}.banner.info{background:var(--accent-soft);border-color:var(--accent)}.banner ul{margin:6px 0 0 18px;padding:0}.banner p{margin:6px 0 0}.banner-details>summary{cursor:pointer;font-size:var(--fs-sm);width:fit-content;margin-top:4px}.segmented{flex-wrap:wrap;display:inline-flex}.segmented>button,.segmented>label{border-radius:0}.segmented>:first-child{border-radius:var(--radius) 0 0 var(--radius)}.segmented>:last-child{border-radius:0 var(--radius) var(--radius) 0}.segmented>*+*{margin-left:-1px}.radio-segmented>label{min-height:var(--control-h);border:1px solid var(--border);background:var(--surface);font-weight:var(--fw-medium);cursor:pointer;align-items:center;gap:6px;padding:6px 14px;display:inline-flex;position:relative}.radio-segmented>label:hover{background:var(--surface-2)}.radio-segmented>label.active{background:var(--accent-soft);border-color:var(--accent);color:var(--accent-text);z-index:1}.radio-segmented>label:has(input:focus-visible){outline:2px solid var(--focus);outline-offset:2px;z-index:2}dialog.modal{border:1px solid var(--border-soft);border-radius:var(--radius-lg);background:var(--surface);color:var(--text);box-shadow:var(--shadow-lg);max-height:calc(100dvh - 32px);padding:0}dialog.modal::backdrop{background:var(--scrim)}.modal-body{padding:var(--sp-5)}.modal-head{justify-content:space-between;align-items:center;gap:var(--sp-2);margin:-6px -8px var(--sp-3) 0;display:flex}.modal-head h2{margin:0}.menu{z-index:30;background:var(--surface);border:1px solid var(--border-soft);border-radius:var(--radius);min-width:200px;box-shadow:var(--shadow-lg);flex-direction:column;gap:2px;padding:6px;display:flex;position:absolute}.menu>button{background:0 0;border-color:#0000;justify-content:flex-start}.empty{padding:var(--sp-5);text-align:center}.empty-state{border-radius:var(--radius-lg);background:var(--surface-tint);padding:var(--sp-6) var(--sp-5);text-align:center;border:none;align-self:start;max-width:680px;margin:0 auto}.empty-art{margin:0 auto var(--sp-3);color:var(--border-strong);display:block}.empty-state h2{font-family:var(--font-display);font-weight:var(--fw-strong);margin-bottom:var(--sp-2)}.empty-state p{max-width:54ch;margin:0 auto}.empty-state .empty-action{margin-top:var(--sp-4);justify-content:center;display:flex}.empty-state .empty-action form{justify-content:center;width:100%;max-width:480px}.empty-state.compact{padding:var(--sp-4);max-width:none}.loading{padding:var(--sp-7);text-align:center}.skip-link{z-index:200;background:var(--surface);border:2px solid var(--focus);border-radius:var(--radius);padding:8px 14px;position:absolute;top:8px;left:-9999px}.skip-link:focus{left:8px}.app-shell{grid-template-columns:var(--sidebar-w) minmax(0, 1fr);min-height:100dvh;display:grid}.app-shell.is-rail{grid-template-columns:var(--rail-w) minmax(0, 1fr)}.app-shell.is-mobile{grid-template-columns:minmax(0,1fr)}.sidebar{background:var(--surface);border-right:1px solid var(--border-soft);overscroll-behavior:contain;scrollbar-width:thin;flex-direction:column;height:100dvh;display:flex;position:sticky;top:0;overflow:hidden auto}.sidebar-head{justify-content:space-between;align-items:center;gap:var(--sp-2);padding:var(--sp-3) var(--sp-3) var(--sp-2) var(--sp-4);min-height:64px;display:flex}.sidebar-brand{color:inherit;border-radius:var(--radius);min-width:0;text-decoration:none}.sidebar-brand:hover{color:inherit}.brand{align-items:center;gap:10px;min-width:0;display:inline-flex}.brand-logo{color:var(--accent);flex:none}.brand-text{flex-direction:column;min-width:0;display:flex}.brand-name{font-family:var(--font-display);font-size:21px;font-weight:var(--fw-strong);letter-spacing:-.015em;line-height:1.1}.class-line{align-items:center;gap:var(--sp-2);margin:0 var(--sp-3) var(--sp-2);min-width:0;display:flex}.class-line.rail{margin:0 10px var(--sp-2);justify-content:center}.class-line-empty{font-size:var(--fs-sm);flex:1;padding-left:10px}.class-line .new-class{color:var(--accent-text)}.class-trigger{justify-content:flex-start;gap:var(--sp-2);background:var(--surface-tint);border:1px solid var(--border-soft);min-width:0;font-weight:var(--fw-strong);color:var(--text);flex:1;padding:6px 8px 6px 10px}.class-trigger:hover,.class-trigger[aria-expanded=true]{border-color:var(--border-strong);background:var(--surface-2)}.class-trigger-name{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.class-trigger-level{font-size:var(--fs-sm);font-weight:var(--fw-regular);color:var(--muted);flex:none}.class-trigger-icon{color:var(--muted);flex:none;margin-left:auto}.class-badge{border-radius:var(--radius);background:var(--accent-soft);border-color:var(--accent);width:44px;height:44px;color:var(--accent-text);font-weight:var(--fw-strong);font-size:var(--fs-sm);padding:0}.menu.class-menu{z-index:70;position:fixed;overflow-y:auto}.class-menu>button{gap:var(--sp-2);white-space:nowrap;min-height:36px}.class-menu>button:hover,.class-menu>button:focus-visible{background:var(--surface-2)}.class-menu .menu-text{text-overflow:ellipsis;min-width:0;overflow:hidden}.menu-label{font-size:var(--fs-xs);font-weight:var(--fw-medium);color:var(--muted);padding:4px 8px 2px}.menu-sep{background:var(--border);height:1px;margin:4px 2px}.invisible{visibility:hidden}.sidebar-nav{padding:0 var(--sp-3);flex:1}.sidebar-nav ul,.sidebar-foot ul{margin:0;padding:0;list-style:none}.nav-group+.nav-group{margin-top:var(--sp-1)}.nav-heading{padding:var(--sp-3) 10px 4px;font-size:var(--fs-xs);font-weight:var(--fw-medium);color:var(--muted);letter-spacing:.06em;text-transform:uppercase}.nav-item{align-items:center;gap:var(--sp-3);border-radius:var(--radius);min-height:38px;color:var(--text);font-weight:var(--fw-regular);padding:6px 10px;text-decoration:none;display:flex;position:relative}.nav-item>svg{color:var(--muted);flex:none}.nav-item:hover{background:var(--surface-2);color:var(--text)}.nav-item.active{background:var(--accent-soft);color:var(--accent-text);font-weight:var(--fw-medium)}.nav-item.active>svg{color:var(--accent-text)}.nav-item.active:before{content:"";background:var(--accent);border-radius:0 4px 4px 0;width:4px;position:absolute;top:8px;bottom:8px;left:-12px}.nav-item.nav-classroom{font-weight:var(--fw-medium);margin-bottom:var(--sp-1)}.nav-item.nav-classroom>svg{color:var(--select)}.nav-item.nav-classroom.active{background:var(--select-soft);color:var(--select-text)}.nav-item.nav-classroom.active>svg{color:var(--select)}.nav-item.nav-classroom.active:before{background:var(--select)}.nav-label{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.sidebar-foot{padding:var(--sp-2) var(--sp-3) var(--sp-3);margin-top:var(--sp-3);border-top:1px solid var(--border-soft)}.sidebar-foot .nav-item{min-height:36px;font-size:14px}button.nav-item{width:100%;color:var(--muted);font-weight:var(--fw-regular);background:0 0;border:none;justify-content:flex-start;margin-top:4px}button.nav-item:hover{background:var(--surface-2);border:none}.sidebar.rail .sidebar-head{padding:var(--sp-3) 10px var(--sp-2);gap:var(--sp-2);flex-direction:column}.sidebar.rail .sidebar-nav,.sidebar.rail .sidebar-foot{padding-left:10px;padding-right:10px}.sidebar.rail .nav-item{justify-content:center;padding:8px}.sidebar.rail .nav-label{clip:rect(0, 0, 0, 0);width:1px;height:1px;position:absolute;overflow:hidden}.sidebar.rail .nav-heading{height:1px;margin:var(--sp-2) 6px;background:var(--border-soft);color:#0000;padding:0;overflow:hidden}.sidebar.rail .nav-item.active:before{left:-10px}.sidebar.drawer{z-index:60;visibility:hidden;width:min(300px,86vw);box-shadow:var(--shadow-lg);transition:transform .2s,visibility 0s linear .2s;position:fixed;inset:0 auto 0 0;transform:translate(-105%)}.sidebar.drawer.open{visibility:visible;transition:transform .2s;transform:none}.scrim{z-index:55;background:var(--scrim);position:fixed;inset:0}@media (prefers-reduced-motion:reduce){.sidebar.drawer,.sidebar.drawer.open{transition:none}}.main-col{flex-direction:column;min-width:0;display:flex}.topbar{z-index:20;align-items:center;gap:var(--sp-2);min-height:var(--topbar-h);padding:0 var(--sp-5);background:color-mix(in srgb, var(--bg) 92%, transparent);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);border-bottom:1px solid var(--border-soft);display:flex;position:sticky;top:0}.topbar-logo{color:var(--accent);display:inline-flex}.is-classroom .topbar{box-shadow:inset 0 -2px 0 var(--select)}.crumbs{min-width:0}.crumbs ol{align-items:center;min-width:0;margin:0;padding:0;list-style:none;display:flex}.crumb-section{color:var(--muted);font-size:var(--fs-sm);white-space:nowrap}.topbar-actions{gap:2px;display:flex}.save-indicator{border-radius:var(--radius-pill);color:var(--muted);font-size:var(--fs-sm);white-space:nowrap;align-items:center;gap:6px;padding:4px 8px;text-decoration:none;display:inline-flex}.save-indicator:hover{background:var(--surface-2);color:var(--text)}.save-indicator.ok svg{color:var(--ok)}.save-indicator.danger{color:var(--danger);background:var(--danger-soft);box-shadow:inset 0 0 0 1.5px var(--danger)}.export-reminder{border-radius:var(--radius-pill);background:var(--warn-soft);color:var(--warn);box-shadow:inset 0 0 0 1.5px var(--warn);font-size:var(--fs-sm);font-weight:var(--fw-medium);white-space:nowrap;align-items:center;gap:5px;padding:3px 10px 3px 8px;text-decoration:none;display:inline-flex}.export-reminder:hover{color:var(--warn);background:color-mix(in srgb, var(--warn-soft) 70%, var(--warn) 12%)}.spin{animation:.9s linear infinite spin}.global-banner{align-items:center;gap:var(--sp-2) var(--sp-3);margin:var(--sp-3) var(--sp-5) 0;flex-wrap:wrap;display:flex}.global-banner>span:first-child{flex:320px}.content{width:100%;min-width:0;max-width:1680px;padding:var(--sp-5) var(--sp-5) var(--sp-7);flex:1;position:relative}.page-header{justify-content:space-between;align-items:flex-end;gap:var(--sp-3) var(--sp-5);margin-bottom:var(--sp-5);flex-wrap:wrap;display:flex}.page-header-text{flex:360px;min-width:0}.page-header h1{margin:0}.page-desc{color:var(--muted);max-width:80ch;margin:4px 0 0}.page-actions{gap:var(--sp-2);flex-wrap:wrap;display:flex}.page-note{margin-top:var(--sp-4)}.subbar{align-items:center;gap:var(--sp-2) var(--sp-3);margin-bottom:var(--sp-4);background:0 0;border:none;flex-wrap:wrap;padding:0;display:flex}.subbar>label{min-width:0}.subbar select{min-width:0;max-width:min(320px,100%)}.subbar-label{color:var(--muted);font-size:var(--fs-sm);font-weight:var(--fw-medium)}.subbar-form{flex:260px;justify-content:flex-end;min-width:0}.layout{gap:var(--sp-4);grid-template-columns:260px minmax(0,1fr);display:grid}.layout.wide-side{grid-template-columns:minmax(0,1fr) 340px}.layout>*{min-width:0}.side-col>.card+.card{margin-top:var(--sp-4)}@media (width<=1199px){.layout.wide-side{grid-template-columns:minmax(0,1fr)}}@media (width<=900px){.layout{grid-template-columns:minmax(0,1fr)}}.dash-grid{gap:var(--sp-4);grid-template-columns:repeat(auto-fit,minmax(min(320px,100%),1fr));align-items:start;display:grid}@media (width>=1200px){.dash-grid{grid-template-columns:minmax(0,1.35fr) minmax(0,1fr)}.dash-plan{grid-area:1/1/span 3}.dash-grid>:not(.dash-plan){grid-column:2}}.dash-line{align-items:center;gap:var(--sp-2);padding:0 var(--sp-2);min-width:0;margin:0;display:flex}.dash-line>svg{color:var(--muted);flex:none}.dash-reminder{margin-top:var(--sp-4)}.plan-thumb{padding:var(--sp-2);background:var(--surface-tint);border:1px solid var(--border-soft);border-radius:var(--radius);display:block}.plan-thumb:hover{border-color:var(--accent)}.plan-thumb svg{width:100%;height:auto;max-height:420px;display:block}.plan-thumb-meta{justify-content:space-between;align-items:flex-start;gap:var(--sp-3);margin-top:var(--sp-3);display:flex}.absent-picker{margin:var(--sp-2) 0 0;flex-wrap:wrap;gap:6px;padding:0;list-style:none;display:flex}.onboarding{max-width:860px}.onboarding-hero{align-items:center;gap:var(--sp-5);margin-bottom:var(--sp-6);display:flex}.onboarding-hero svg{color:var(--accent);flex:none}.onboarding-hero h1{font-size:var(--fs-2xl);margin:0}.steps{gap:var(--sp-3);margin:0;padding:0;list-style:none;display:grid}.step{gap:var(--sp-4);padding:var(--sp-4) var(--sp-5);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);display:flex}.step.current{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}.step-num{background:var(--surface-2);width:36px;height:36px;font-weight:var(--fw-strong);border-radius:50%;flex:none;justify-content:center;align-items:center;display:inline-flex}.step.current .step-num{background:var(--accent);color:var(--on-accent)}.step.done .step-num{background:var(--ok-soft);color:var(--ok)}.step-body{min-width:0}.step-body h2{font-size:var(--fs-md);margin-bottom:4px}.step-body p{margin-bottom:var(--sp-3)}.class-card{justify-content:space-between;align-items:flex-end;gap:var(--sp-3);flex-wrap:wrap;display:flex}.class-card-fields{align-items:flex-end;gap:var(--sp-3) var(--sp-4);flex-wrap:wrap;min-width:0;display:flex}.class-card-fields .field input{font-weight:var(--fw-medium)}.field.narrow input{width:7em}.class-card-stats{align-items:center;gap:var(--sp-3);min-height:var(--control-h);color:var(--muted);flex-wrap:wrap;display:flex}.class-card-stats strong{color:var(--text);font-size:var(--fs-md)}.search-field{flex:240px;align-items:center;min-width:0;max-width:380px;display:inline-flex;position:relative}.search-field>svg{color:var(--muted);pointer-events:none;position:absolute;left:10px}.search-field .filter-input{width:100%;max-width:none;padding-left:32px}.companion-card .title-input{font-weight:var(--fw-medium);flex:1;min-width:0}.danger-zone{border-color:color-mix(in srgb, var(--danger) 30%, var(--border-soft))}.data-status{align-items:flex-start;gap:var(--sp-2);margin:0 0 var(--sp-3);display:flex}.data-status>svg{color:var(--ok);flex:none;margin-top:3px}.data-status.danger,.data-status.danger>svg{color:var(--danger)}.action-list{margin:0;padding:0;list-style:none}.action-list>li{align-items:center;gap:4px var(--sp-3);border-top:1px solid var(--border-soft);flex-wrap:wrap;min-height:52px;padding:6px 0;display:flex}.action-list>li>button{min-width:112px}.action-name{align-items:center;gap:var(--sp-2);font-weight:var(--fw-medium);flex:0 0 340px;display:inline-flex}.action-name>svg{color:var(--muted)}.action-meta{min-width:0;color:var(--muted);font-size:var(--fs-sm);flex:200px}@media (width<=640px){.action-name{flex-basis:100%}.action-meta{flex-basis:0}}.fold{margin-top:var(--sp-3)}.fold>summary{cursor:pointer;width:fit-content;font-weight:var(--fw-medium);color:var(--accent-text);padding:4px 0}.fold-body{margin-top:var(--sp-2)}div.fold-body{gap:var(--sp-2);padding-left:var(--sp-3);border-left:2px solid var(--border-soft);flex-direction:column;display:flex}div.fold-body p{margin:-4px 0 0}.settings .choice-group{margin-bottom:0}.settings>*+.choice-group,.settings>.fold+*{margin-top:var(--sp-4)}.settings>.check-row,.settings>.row{margin-top:var(--sp-3)}.prose h3{font-size:var(--fs-base);margin:var(--sp-4) 0 var(--sp-2)}.about-card{align-items:center;gap:var(--sp-5);margin-bottom:var(--sp-4);display:flex}.about-logo{color:var(--accent);flex:none}.about-name{font-family:var(--font-display);font-size:var(--fs-xl);font-weight:var(--fw-strong);margin:0}.prose>*{max-width:78ch}.prose h2{font-size:var(--fs-md);margin-top:var(--sp-5)}.prose h2:first-child{margin-top:0}.prose ul{margin:0 0 var(--sp-2);padding-left:1.2em}.prose li+li{margin-top:6px}.rule-item{align-items:flex-start;gap:var(--sp-2);padding:var(--sp-2) 10px;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);margin-bottom:6px;display:flex}.rule-item.inactive{opacity:.55}.rule-item .text{flex:1;min-width:0}.canvas-wrap{background:var(--surface-tint);border:1px solid var(--border-soft);border-radius:var(--radius);outline:none;position:relative;overflow:auto}.canvas-wrap:focus-visible{box-shadow:0 0 0 2px var(--focus)}.canvas-wrap svg{touch-action:none;-webkit-user-select:none;user-select:none;display:block}.toolbar{margin-bottom:var(--sp-2);flex-wrap:wrap;align-items:center;gap:6px;display:flex}.palette{grid-template-columns:1fr 1fr;gap:6px;display:grid}.explain{font-size:.92em}.explain li{margin-bottom:2px}.seat-drag-ghost{pointer-events:none;background:var(--accent);color:var(--on-accent);border-radius:var(--radius-pill);font-size:.9em;font-weight:var(--fw-medium);z-index:100;box-shadow:var(--shadow-lg);padding:4px 12px;position:fixed;transform:translate(-50%,-140%)}.plan-toolbar{gap:var(--sp-2);margin-bottom:var(--sp-3);flex-wrap:wrap;align-items:stretch;display:flex}.tool-group{border-radius:var(--radius);background:0 0;border:none;flex-wrap:wrap;align-items:center;gap:6px;min-width:0;padding:0;display:flex}.tool-group+.tool-group{padding-left:var(--sp-2)}.tool-group.decision{background:var(--accent-soft);padding:4px 8px}.toolbar-plain{align-items:center;gap:var(--sp-2);margin-bottom:var(--sp-3);box-shadow:none;background:0 0;border:none;flex-wrap:wrap;padding:0;display:flex}.tool-group-label{font-size:var(--fs-sm);color:var(--muted);font-weight:var(--fw-medium);margin-right:2px}.tool-group:last-child{margin-left:auto}.busy{font-size:var(--fs-sm);color:var(--muted)}.busy:before{content:"";border:2px solid var(--accent);vertical-align:-1px;border-right-color:#0000;border-radius:50%;width:10px;height:10px;margin-right:6px;animation:.8s linear infinite spin;display:inline-block}@keyframes spin{to{transform:rotate(360deg)}}@media (prefers-reduced-motion:reduce){.busy:before,.spin{animation:none}}.plan-seat:focus-visible{outline:none}.plan-seat .seat-body{transform-box:fill-box;transform-origin:50%;transition:transform .12s,filter .12s}.plan-seat.draggable:hover .seat-body{filter:drop-shadow(0 2px 3px #00000059);transform:scale(1.12)}.plan-seat .seat-focus{visibility:hidden}@media (prefers-reduced-motion:reduce){.plan-seat .seat-body{transition:none}}.student-chip{cursor:grab;padding:4px 12px;transition:box-shadow .12s,transform .12s}.student-chip:hover,.list li.lift:hover{transform:translateY(-1px);box-shadow:0 2px 6px #0000002e}.list li.lift{cursor:grab}.lock-icon{vertical-align:-.12em}.preview{margin:var(--sp-2) 0;border-radius:var(--radius-sm);background:var(--surface);border:1px solid var(--border);padding:6px 10px;font-size:.95em}.filter-input{flex:220px;min-width:0;max-width:360px}.th-sort{min-height:0;font:inherit;color:inherit;font-weight:var(--fw-medium);white-space:nowrap;background:0 0;border:none;align-items:center;gap:4px;padding:0;display:inline-flex}.th-sort:hover{color:var(--accent-text);background:0 0}table.grid select.wide-select{min-width:120px;min-height:30px;padding:2px 4px}.tag-cell{flex-wrap:wrap;align-items:center;gap:4px;min-width:160px;display:flex}table.grid .tag-cell input[type=text]{flex:80px;width:auto;min-width:80px}.chip-x,button.chip-x{border-radius:50%;width:22px;height:22px;min-height:0;margin-right:-6px;padding:0;line-height:1}.groups-grid{grid-template-columns:repeat(auto-fill,minmax(min(210px,100%),1fr));gap:10px;display:grid}.groups-grid .group-card{min-height:120px;margin:0}.group-card .list li{flex-wrap:wrap;row-gap:2px}.group-card .list li .grow{min-width:min(9em,100%)}.group-card .list li .chip{max-width:100%}.group-card.drop-over{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent)}table.grid.students td:first-child input[type=text],table.grid.students td:nth-child(2) input[type=text]{min-width:96px}.projection{background:var(--bg);color:var(--text);z-index:70;flex-direction:column;display:flex;position:fixed;inset:0}.projection .proj-bar{gap:var(--sp-2);padding:var(--sp-2);background:var(--surface);border-bottom:1px solid var(--border);flex-wrap:wrap;align-items:center;display:flex}.projection .proj-canvas{min-height:0;padding:var(--sp-3);background:var(--surface);flex:1;justify-content:center;align-items:center;display:flex}.projection .proj-canvas svg{max-width:100%;max-height:100%}.force-light{--on-accent:#fff;--bg:#f5f3ef;--surface:#fff;--surface-2:#eeebe5;--surface-3:#e3dfd7;--surface-tint:#f9f7f3;--text:#1b1f24;--muted:#565c64;--border:#dcd7ce;--border-soft:#e9e5de;--border-strong:#b5ada0;--accent:#1b5e9b;--accent-hover:#154c80;--accent-soft:#e2ecf7;--accent-text:#164f84;--ok:#157a3f;--ok-soft:#dcf1e3;--warn:#b14a00;--warn-soft:#fde8d6;--danger:#c0262d;--danger-soft:#fbe1df;--lock:#5b3cc4;--lock-soft:#ebe5fb;--companion:#0a6f7a;--companion-soft:#d3eef1;--brand-seat:#d38f12;--select:#c98508;--select-soft:#fbefd5;--select-text:#7a4d00;--focus:#1b5e9b;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.print-only{display:none}.draggable{touch-action:none;-webkit-user-select:none;user-select:none}@media (width<=1023px){.topbar{padding:0 var(--sp-3) 0 var(--sp-2);gap:6px}.content{padding:var(--sp-4) var(--sp-4) var(--sp-6)}.global-banner{margin:var(--sp-3) var(--sp-4) 0}}@media (width<=640px){:root{--fs-xl:23px;--fs-2xl:27px}.crumb-section,.save-text,.export-text{display:none}.export-reminder{padding:6px}.card{padding:var(--sp-4)}.page-header{margin-bottom:var(--sp-4)}.page-actions{width:100%}.onboarding-hero{align-items:flex-start;gap:var(--sp-3);flex-direction:column}.step{padding:var(--sp-4);gap:var(--sp-3)}.facts{grid-template-columns:minmax(0,1fr);gap:2px 0}.facts dd{margin-bottom:var(--sp-2)}.tool-group:last-child{margin-left:0}.about-card{gap:var(--sp-3)}}@media (pointer:coarse),(width<=640px){:root{--control-h:42px;--control-h-sm:40px}table.grid select,table.grid input[type=text],table.grid select.wide-select{min-height:40px!important}input[type=checkbox],input[type=radio]{width:22px;height:22px}.chip-x,button.chip-x{width:32px;height:32px}.toggle-chip{min-height:40px}.nav-item,.sidebar-foot .nav-item{min-height:44px}}@page{size:landscape;margin:10mm}@media print{:root,:root[data-theme=dark],:root:not([data-theme=light]){--bg:#fff;--surface:#fff;--surface-2:#eaeef3;--surface-3:#dfe5ec;--text:#000;--muted:#46505e;--border:#c4cad4;--border-strong:#a8b2be;--accent:#1b5e9b;--accent-soft:#e1ecf8;--accent-text:#164f84;--ok:#157a3f;--ok-soft:#dcf1e3;--warn:#b14a00;--warn-soft:#fde8d6;--danger:#c0262d;--danger-soft:#fbe1df;--lock:#5b3cc4;--lock-soft:#ebe5fb;--select:#c98508;--select-soft:#fbefd5;--select-text:#7a4d00;--surface-tint:#fff;--border-soft:#e2ded6;--companion:#0a6f7a;--companion-soft:#d3eef1;--brand-seat:#d38f12;--on-accent:#fff;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}html,body,#root{height:auto;min-height:0}body{color:#000;background:#fff}.app-shell{min-height:0;display:block}.sidebar,.topbar,.scrim,.skip-link,.page-header,.subbar,.global-banner,.no-print,.hint{display:none!important}.print-only{display:block}.content{max-width:none;padding:0}.layout,.layout.wide-side{display:block}.card{box-shadow:none;border:none}.plan-canvas{break-inside:avoid;break-after:page;border:none;overflow:visible;background:#fff!important}.plan-canvas svg{max-height:170mm;width:100%!important;height:auto!important}}.more-menu{display:inline-flex;position:relative}.more-menu-list{top:calc(100% + 4px)}.more-menu-list.align-end{right:0}.more-menu-list.align-start{left:0}.more-menu-list>button{gap:var(--sp-2);white-space:nowrap;min-height:36px}.more-menu-list>button:hover,.more-menu-list>button:focus-visible{background:var(--surface-2)}.side-panel{border:none;border-left:1px solid var(--border);background:var(--surface);width:min(440px,100vw);height:100dvh;max-height:100dvh;color:var(--text);box-shadow:var(--shadow-lg);margin:0 0 0 auto;padding:0}.side-panel::backdrop{background:#00000059}.side-panel-inner{flex-direction:column;height:100%;display:flex}.side-panel-head{justify-content:space-between;align-items:center;gap:var(--sp-2);padding:var(--sp-3) var(--sp-4);border-bottom:1px solid var(--border);display:flex}.side-panel-head h2{margin:0}.side-panel-body{padding:var(--sp-4);gap:var(--sp-3);flex-direction:column;flex:1;display:flex;overflow-y:auto}.side-panel-foot{gap:var(--sp-2);padding:var(--sp-3) var(--sp-4);border-top:1px solid var(--border);justify-content:space-between;display:flex}.hint{width:fit-content;max-width:100%;min-height:0;margin:0 0 var(--sp-2);border-radius:var(--radius-pill);background:var(--select-soft);color:var(--select-text);font-size:var(--fs-sm);border:none;align-items:center;gap:6px;padding:2px 2px 2px 10px;line-height:1.35;display:flex}.hint>svg{color:var(--select);flex:none}.hint>.hint-text{min-width:0;max-width:72ch;padding:3px 0}.hint .icon-btn{border-radius:var(--radius-pill);width:26px;min-width:26px;min-height:26px;color:inherit}.hint .icon-btn:hover{background:color-mix(in srgb, var(--select) 18%, transparent)}span.hint,.hint.inline{vertical-align:middle;margin:0;display:inline-flex}@media (width<=640px){.hint{border-radius:var(--radius)}}.sources-table{border-collapse:collapse;width:100%;font-size:var(--fs-sm)}.sources-table th,.sources-table td{padding:var(--sp-2);border-bottom:1px solid var(--border-soft);text-align:left;vertical-align:top}.sources-table thead th{color:var(--muted);font-weight:var(--fw-medium)}.sources-table tbody th{font-weight:var(--fw-medium);min-width:11rem}.signaler-form{max-width:44rem}.signaler-form textarea{width:100%;font-family:inherit;font-size:inherit}.card[id]{scroll-margin-top:64px}.signaler-form .check-field{align-items:flex-start;gap:var(--sp-2);font-weight:var(--fw-regular);display:inline-flex}.plan-page .page-header{margin-bottom:var(--sp-2)}.plan-page .page-header-text{align-items:center;gap:var(--sp-2) var(--sp-3);flex-wrap:wrap;display:flex}.plan-page .page-header-text h1{margin:0}.plan-tabs{gap:var(--sp-1);margin:0 0 var(--sp-3);border-bottom:1px solid var(--border);scrollbar-width:none;display:flex;overflow-x:auto}.plan-tab{border-radius:var(--radius) var(--radius) 0 0;min-height:40px;color:var(--muted);font-weight:var(--fw-medium,500);white-space:nowrap;background:0 0;border:none;align-items:center;gap:6px;padding:6px 14px;display:inline-flex;position:relative}.plan-tab:hover{color:var(--text);background:var(--surface-2)}.plan-tab.active{color:var(--text);font-weight:var(--fw-strong,600)}.plan-tab.active:after{content:"";background:var(--accent);border-radius:3px 3px 0 0;height:3px;position:absolute;bottom:-1px;left:8px;right:8px}.plan-tab-count{border-radius:var(--radius-pill);background:var(--surface-2);min-width:20px;color:var(--muted);font-size:var(--fs-xs);font-weight:var(--fw-medium,500);text-align:center;padding:0 6px;line-height:18px}.plan-status{border:1.5px solid var(--border-strong);border-radius:var(--radius-pill);background:var(--surface);min-height:30px;color:var(--text);font-size:var(--fs-sm);font-weight:var(--fw-medium,500);cursor:pointer;align-items:center;gap:6px;padding:2px 12px 2px 10px;display:inline-flex}.plan-status.ok{border-color:var(--ok);background:var(--ok-soft)}.plan-status.ok>svg{color:var(--ok)}.plan-status.warn{border-color:var(--warn);background:var(--warn-soft)}.plan-status.warn>svg{color:var(--warn)}.plan-status.danger{border-color:var(--danger);background:var(--danger-soft)}.plan-status.danger>svg{color:var(--danger)}.plan-status:hover{filter:brightness(.97)}.plan-bar{align-items:center;gap:var(--sp-2);margin-bottom:var(--sp-3);flex-wrap:wrap;display:flex}.plan-bar.decision{border-radius:var(--radius);background:var(--accent-soft);padding:6px 8px}.plan-bar-select{flex-wrap:wrap;flex:0 auto;gap:6px;min-width:0;display:flex}.plan-bar-select select{min-width:0;max-width:240px}.plan-bar-end{justify-content:flex-end;align-items:center;gap:var(--sp-2);flex-wrap:wrap;margin-left:auto;display:flex}.plan-busy{align-items:center;gap:var(--sp-2);display:inline-flex}.plan-stage{gap:var(--sp-4);grid-template-columns:minmax(0,1fr);align-items:start;display:grid}.plan-stage.with-panel{grid-template-columns:minmax(0,1fr) 320px}.plan-main{min-width:0;position:relative}@media (width<=1099px){.plan-stage.with-panel{grid-template-columns:minmax(0,1fr)}}.plan-canvas{background:var(--surface);border-color:var(--border)}.plan-canvas svg{width:100%;height:auto;max-height:calc(100dvh - 170px)}.plan-canvas-empty{border:1px solid var(--border);border-radius:var(--radius);width:100%;max-height:calc(100dvh - 220px);overflow:hidden}.plan-hint{margin-bottom:var(--sp-2)}.plan-hint .hint{margin:0}.plan-keyhelp{margin:4px 0 0}.plan-foot{justify-content:space-between;align-items:center;gap:4px var(--sp-4);flex-wrap:wrap;margin-top:6px;display:flex}.plan-legend{gap:2px var(--sp-3);flex-wrap:wrap;display:flex}.legend-item{align-items:center;gap:5px;display:inline-flex}.legend-swatch{flex:none;overflow:visible}.plan-unplaced{margin-top:var(--sp-3)}.plan-unplaced h3{align-items:center;gap:var(--sp-2);margin:0 0 var(--sp-2);font-size:var(--fs-base);display:flex}.student-chip-static{padding:4px 12px}.seat-card{fill:var(--surface);stroke:var(--border-strong);stroke-width:1.5px;vector-effect:non-scaling-stroke;pointer-events:all}.seat-card.is-empty{fill:none;stroke:var(--border-strong);stroke-width:1.2px;stroke-dasharray:4 3}.seat-card.is-disabled{stroke:none;opacity:.5}.seat-card.is-companion{fill:var(--companion-soft);stroke:var(--companion)}.seat-card.is-absent{fill:var(--surface-2);stroke:var(--border);stroke-dasharray:3 2}.seat-card.is-changed{stroke:var(--accent);stroke-width:2.5px;stroke-dasharray:6 3}.seat-card.is-locked{stroke:var(--lock);stroke-width:3.5px;stroke-dasharray:none}.seat-card.is-violating{fill:var(--danger-soft);stroke:var(--danger);stroke-width:3.5px;stroke-dasharray:none}.seat-card.is-selected{fill:var(--accent-soft);stroke:var(--select,var(--accent));stroke-width:4px;stroke-dasharray:none}.seat-card.is-drop{fill:var(--accent-soft);stroke:var(--accent);stroke-width:3px;stroke-dasharray:none}.seat-card.is-drop-ok{stroke:var(--ok);stroke-width:2.5px;stroke-dasharray:none}.seat-card.is-drop-bad{stroke:var(--danger);stroke-width:2.5px;stroke-dasharray:5 3}.seat-card.is-drop.is-drop-ok{fill:var(--ok-soft);stroke-width:4.5px}.seat-card.is-drop.is-drop-bad{fill:var(--danger-soft);stroke-width:4.5px}.seat-drop-mark circle{stroke:none}.seat-drop-mark path{fill:none;stroke:var(--surface);stroke-width:2.2px;stroke-linecap:round;stroke-linejoin:round}.seat-drop-mark.is-ok circle{fill:var(--ok)}.seat-drop-mark.is-bad circle{fill:var(--danger)}.seat-drag-ghost{text-align:center;flex-direction:column;align-items:center;gap:2px;max-width:min(420px,90vw);display:flex}.seat-drag-verdict{font-size:.88em;font-weight:var(--fw-medium,500);white-space:normal;align-items:center;gap:4px;display:inline-flex}.seat-drag-verdict>svg{flex:none}.seat-drag-ghost.is-ok{background:var(--ok);color:var(--on-accent)}.seat-drag-ghost.is-bad{background:var(--danger);color:var(--on-accent);border-radius:var(--radius)}.seat-name{fill:var(--text);font-weight:var(--fw-strong,600)}.seat-initial{fill:var(--muted);font-weight:var(--fw-medium,500)}.seat-name.is-absent,.seat-initial.is-absent{fill:var(--muted)}.seat-name.is-companion{fill:var(--companion);font-weight:var(--fw-medium,500)}.seat-alert-dot{fill:var(--danger)}.seat-alert-mark{fill:#fff;font-weight:700}.plan-seat{cursor:pointer;outline:none}.plan-seat.draggable{cursor:grab}.plan-seat .seat-focus{visibility:hidden;fill:none;stroke:var(--focus,var(--accent));stroke-width:2.5px;stroke-dasharray:5 3;vector-effect:non-scaling-stroke}.plan-seat:focus-visible .seat-focus{visibility:visible}.plan-seat.draggable:hover .seat-card{filter:drop-shadow(0 2px 3px #0000004d)}.plan-rows{gap:var(--sp-3);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.plan-row{flex-direction:column;gap:6px;display:flex}.plan-row-title{font-size:var(--fs-sm);font-weight:var(--fw-strong,600)}.plan-row-seats{flex-wrap:wrap;gap:6px;display:flex}.plan-row-seat{border:1.5px solid var(--border-strong);border-radius:var(--radius);background:var(--surface);min-height:36px;color:var(--text);font-weight:var(--fw-strong,600);align-items:center;gap:4px;padding:4px 10px;display:inline-flex}.plan-row-seat.is-empty{color:var(--muted);font-weight:var(--fw-regular,400);background:0 0;border-style:dashed}.plan-row-seat.is-companion{border-color:var(--companion);background:var(--companion-soft);font-weight:var(--fw-medium,500)}.plan-row-seat.is-absent{background:var(--surface-2);color:var(--muted);border-style:dashed}.plan-row-seat.is-changed{border-color:var(--accent);border-style:dashed}.plan-row-seat.is-locked{border-color:var(--lock);border-style:solid;border-width:3px}.plan-row-seat.is-locked .lock-icon{color:var(--lock)}.plan-row-seat.is-violating{border-color:var(--danger);background:var(--danger-soft);border-style:solid;border-width:3px}.plan-row-seat.is-violating>svg{color:var(--danger)}.plan-row-seat.is-selected{border-color:var(--select,var(--accent));background:var(--accent-soft);border-style:solid;border-width:3px}.plan-panel{top:var(--sp-3);gap:var(--sp-3);max-height:calc(100dvh - 2 * var(--sp-3));padding:var(--sp-3) var(--sp-4) var(--sp-4);border-radius:var(--radius-lg);background:var(--surface);border:1px solid var(--border);flex-direction:column;display:flex;position:sticky;overflow-y:auto}.plan-panel-head{justify-content:space-between;align-items:center;gap:var(--sp-2);display:flex}.plan-panel-head h2{font-size:var(--fs-md);margin:0}.plan-panel h3{font-size:var(--fs-base);margin:0 0 4px}.plan-panel p{margin:0}.plan-panel-seat{padding-bottom:var(--sp-3);border-bottom:1px solid var(--border);flex-direction:column;gap:6px;display:flex}.plan-panel-name{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.plan-chip-lock{border-color:var(--lock)}.plan-chip-companion{border-color:var(--companion);background:var(--companion-soft)}.plan-panel .explain{margin:0 0 0 18px;padding:0}.plan-panel-actions{gap:6px}.plan-panel-status{padding:var(--sp-2) var(--sp-3);border-radius:var(--radius);border-left:4px solid var(--border-strong);background:var(--surface-2);flex-direction:column;gap:6px;display:flex}.plan-panel-status.ok{border-left-color:var(--ok)}.plan-panel-status.warn{border-left-color:var(--warn)}.plan-panel-status.danger{border-left-color:var(--danger);background:var(--danger-soft)}.plan-panel-status ul{margin:0 0 0 18px;padding:0}.plan-panel-status p{margin:0}.plan-status-rules li+li{margin-top:2px}.plan-status-who{color:var(--muted)}.plan-stale{align-items:center;gap:var(--sp-2);flex-wrap:wrap;display:flex}.plan-panel-warnings{padding:var(--sp-2) var(--sp-3) var(--sp-2) calc(var(--sp-3) + 16px);border-radius:var(--radius);background:var(--warn-soft);margin:0}.plan-report details>summary{cursor:pointer;width:fit-content;margin-top:6px}.plan-report-summary{font-weight:var(--fw-medium,500)}.plan-report-list{margin:4px 0 6px 18px;padding:0}.plan-report-hint{margin-top:8px!important}.plan-report details p{margin:4px 0 0}.plan-board{width:100%;min-width:0;height:100%;min-height:0}.plan-board svg{width:100%;height:100%;display:block}.plan-proj-canvas{display:block}.plan-proj-canvas .plan-board{height:100%}.plan-choices{margin-bottom:var(--sp-3)}.plan-choices-title{margin:0 0 var(--sp-2);font-size:var(--fs-base)}.plan-choices-list{gap:var(--sp-2);grid-template-columns:repeat(auto-fit,minmax(220px,1fr));margin:0;padding:0;list-style:none;display:grid}.plan-choice{border:1.5px solid var(--border);border-radius:var(--radius);background:var(--surface);width:100%;height:100%;min-height:0;color:var(--text);text-align:left;font-weight:var(--fw-regular,400);white-space:normal;cursor:pointer;flex-direction:column;justify-content:flex-start;align-items:stretch;gap:4px;padding:8px 10px;display:flex}.plan-choice:hover{border-color:var(--border-strong)}.plan-choice.is-shown,.plan-choice.is-shown:hover{border-color:var(--accent);box-shadow:0 0 0 1.5px var(--accent) inset;background:var(--accent-soft)}.plan-choice-head{justify-content:space-between;align-items:center;gap:var(--sp-2);display:flex}.plan-choice-chip{font-size:var(--fs-xs)}.plan-choice-board{pointer-events:none;height:150px;display:block}.plan-choice-status{font-size:var(--fs-sm);font-weight:var(--fw-medium,500);align-items:center;gap:5px;margin:0;display:inline-flex}.plan-choice-status.ok>svg{color:var(--ok)}.plan-choice-status.warn>svg{color:var(--warn)}.plan-choice-status.danger>svg{color:var(--danger)}.plan-choice-rules{flex-direction:column;gap:1px;display:flex}.plan-compare{gap:var(--sp-3);flex-direction:column;display:flex}.plan-compare-head{align-items:center;gap:var(--sp-2) var(--sp-3);flex-wrap:wrap;display:flex}.plan-compare-head h2{font-size:var(--fs-lg);margin:0}.plan-compare-head h2:focus{outline:none}.plan-compare-pick{align-items:center;gap:var(--sp-2);display:inline-flex}.plan-compare-head>:last-child{margin-left:auto}.plan-compare-sides{gap:var(--sp-3);grid-template-columns:repeat(2,minmax(0,1fr));display:grid}.plan-compare-side{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);min-width:0;padding:8px 10px}.plan-compare-side h3{font-size:var(--fs-base);margin:0 0 6px}.plan-compare-board{height:min(46dvh,420px)}.plan-compare-rules ul,.plan-compare-moves ul{margin:4px 0 0;padding-left:1.2em}.plan-compare-rules p{margin-top:6px}.plan-compare-moves h3{font-size:var(--fs-base);margin:0}.plan-compare-moves ul{columns:2 260px}@media (width<=699px){.plan-bar-select{flex:100%}.plan-bar-select select{flex:1 1 0;max-width:none}.plan-bar-end{flex:100%;margin-left:0}.plan-bar-end>button.primary{flex:auto}.plan-bar.decision .segmented{flex:100%}.plan-bar.decision .segmented>button{flex:1 1 0}.plan-hint-kbd{display:none}.plan-panel{max-height:none;position:static}.plan-choices-list,.plan-compare-sides{grid-template-columns:minmax(0,1fr)}.plan-choice-board{height:110px}.plan-compare-board{height:220px}}@media print{.plan-page{break-inside:avoid}.plan-stage,.plan-stage.with-panel{display:block}.plan-print-title{white-space:nowrap;text-overflow:ellipsis;margin:0 0 3mm;font-size:13pt;line-height:1.2;overflow:hidden}.plan-print{break-inside:avoid;break-after:avoid}.plan-board-print{margin:0 auto;overflow:hidden}.plan-board-print svg{display:block}}.table-compact{fill:var(--surface-3);stroke:var(--border-strong);stroke-width:1px;vector-effect:non-scaling-stroke}.table-compact.is-outline{fill:none}.groups-page .page-header,.roles-page .page-header{margin-bottom:var(--sp-3)}.groups-page .page-header-text,.roles-page .page-header-text{align-items:center;gap:4px var(--sp-3);flex-wrap:wrap;display:flex}.groups-page .banner{margin-bottom:var(--sp-2);padding:6px 12px}.groups-page .hint{margin-bottom:var(--sp-2)}.groups-bar{align-items:center;gap:6px var(--sp-2);margin-bottom:var(--sp-2);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);flex-wrap:wrap;padding:6px 8px;display:flex}.groups-bar.decision{border-color:var(--accent);background:var(--accent-soft)}.groups-bar button{align-items:center;gap:6px;display:inline-flex}.groups-bar-end{flex-wrap:wrap;align-items:center;gap:6px;margin-left:auto;display:flex}.groups-bar-select{flex:0 auto;gap:6px;min-width:0;display:flex}.groups-select{min-width:0;max-width:280px}.groups-teacher-toggle{font-size:var(--fs-sm);color:var(--muted);cursor:pointer;white-space:nowrap;align-items:center;gap:6px;display:inline-flex}.groups-teacher-toggle input{margin:0}button.status-pill{border-radius:var(--radius-pill);border:1px solid var(--border);background:var(--surface);min-height:28px;font-size:var(--fs-sm);font-weight:var(--fw-medium,500);color:var(--text);align-items:center;gap:6px;padding:2px 10px;display:inline-flex}button.status-pill:before{content:"";background:var(--muted);border-radius:50%;width:8px;height:8px}button.status-pill.ok{border-color:var(--ok);background:var(--ok-soft)}button.status-pill.ok:before{background:var(--ok)}button.status-pill.warn{border-color:var(--warn);background:var(--warn-soft)}button.status-pill.warn:before{background:var(--warn)}button.status-pill.danger{border-color:var(--danger);background:var(--danger-soft)}button.status-pill.danger:before{background:var(--danger)}.groups-report{margin-bottom:var(--sp-2)}.groups-report h2{font-size:var(--fs-md);margin:0 0 4px}.groups-report-list{margin:4px 0 6px 18px;padding:0}.groups-report p{margin:4px 0 0}.groups-report details>summary{cursor:pointer;width:fit-content;margin-top:6px}.groups-selected{align-items:center;gap:6px var(--sp-3);margin-bottom:var(--sp-2);flex-wrap:wrap;display:flex}.groups-selected h3{margin:0}.groups-selected .explain{flex:100%;margin:0 0 0 18px;padding:0}.card.groups-settings{margin-bottom:var(--sp-2);padding:0}.groups-settings>summary{align-items:baseline;gap:4px var(--sp-3);cursor:pointer;flex-wrap:wrap;padding:8px 12px;list-style:none;display:flex}.groups-settings>summary::-webkit-details-marker{display:none}.groups-settings>summary:before{content:"";border-right:2px solid var(--muted);border-bottom:2px solid var(--muted);align-self:center;width:7px;height:7px;transition:transform .12s;transform:rotate(-45deg)}.groups-settings[open]>summary:before{transform:rotate(45deg)}.groups-settings-title{font-weight:var(--fw-strong,600)}.groups-settings-body{padding:0 12px 12px}.groups-settings-body h3{margin:var(--sp-4) 0 var(--sp-2)}.groups-size-note{align-self:flex-end;padding-bottom:6px}.groups-crit-form{margin-top:8px}.groups-crit-form .preview{margin:8px 0}.groups-crit-empty{margin:0 0 6px}.groups-examples{flex-wrap:wrap;gap:6px;margin-bottom:8px;display:flex}.groups-examples button{border-style:dashed;align-items:center;gap:4px;display:inline-flex}.groups-roles-title{align-items:center;gap:6px;display:flex}@media (prefers-reduced-motion:reduce){.groups-settings>summary:before{transition:none}}.groups-grid{gap:var(--sp-2);grid-template-columns:repeat(auto-fill,minmax(min(100%,230px),1fr));display:grid}.group-card{border-top:4px solid var(--g,var(--accent));margin:0}.group-card.drop-over{outline:2px dashed var(--accent);outline-offset:2px}.group-card-head{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:2px 8px;display:flex}.group-card-head strong{font-weight:var(--fw-strong,600)}.group-card .list{margin-top:6px}.group-card .list li{border:1px solid #0000;padding:3px 6px}.group-card .list li.is-selected{border-color:var(--accent)}.group-card .list li.is-violating{border-color:var(--danger)}.group-card .list li.is-absent{opacity:.5}.group-member-name{font-weight:var(--fw-medium,500)}.group-member-meta{font-size:var(--fs-xs);color:var(--muted);display:block}.group-card .chip{white-space:nowrap}.group-lock{color:var(--lock)}.groups-unassigned{margin-top:10px}.name-modal{gap:var(--sp-3);flex-direction:column;display:flex}.name-modal .field input{width:100%}.name-modal-actions{justify-content:flex-end}.gboard{font-size:var(--fs-base);grid-template-columns:repeat(auto-fill,minmax(min(100%,12em),1fr));gap:.6em;display:grid}.gboard.is-proj{font-size:var(--board-fs,clamp(18px, 2.2cqi, 40px));gap:.7em}.gboard-card{background:var(--surface);border:1px solid var(--border);border-top:.3em solid var(--g,var(--accent));border-radius:var(--radius);min-width:0;padding:.55em .75em .65em}.gboard-title{font-size:1em;font-weight:var(--fw-strong,600);color:var(--muted);align-items:center;gap:.45em;margin:0 0 .35em;display:flex}.gboard-num{border-radius:var(--radius-pill);background:var(--g,var(--accent));color:#fff;place-items:center;min-width:1.6em;height:1.6em;padding:0 .3em;font-size:.9em;display:inline-grid}.gboard-list{margin:0;padding:0;list-style:none}.gboard-list li{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:0 .6em;padding:.15em 0;line-height:1.3;display:flex}.gboard-name{font-size:1.15em;font-weight:var(--fw-strong,600);overflow-wrap:anywhere}.gboard-role{color:var(--muted);font-size:.8em}.board-proj{--bg:#f3f5f8;--surface:#fff;--surface-2:#eaeef3;--text:#16202b;--muted:#536174;--border:#d3dae2;--accent:#1b5e9b;--accent-soft:#e1ecf8;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;z-index:70;background:var(--bg);color:var(--text);flex-direction:column;display:flex;position:fixed;inset:0}.board-proj-bar{align-items:center;gap:var(--sp-2);padding:var(--sp-2);background:var(--surface);border-bottom:1px solid var(--border);flex-wrap:wrap;display:flex}.board-proj-bar button{align-items:center;gap:6px;display:inline-flex}.board-proj-title{font-weight:var(--fw-strong,600);font-size:var(--fs-md);text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.board-proj-bar .spacer{flex:1}.board-proj-zoom{align-items:center;gap:4px;display:inline-flex}.board-proj-pct{text-align:center;min-width:48px}.board-proj-canvas{min-height:0;padding:var(--sp-4);flex:1;overflow:auto}.info-tip{font-weight:var(--fw-regular,400);display:inline-flex;position:relative}.info-tip-btn,button.info-tip-btn{width:26px;height:26px;min-height:0;color:var(--muted);background:0 0;border-color:#0000;border-radius:50%;padding:0}.info-tip-btn:hover{color:var(--text)}.info-tip-bubble{z-index:40;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);width:max-content;max-width:min(320px,100vw - 32px);color:var(--text);box-shadow:var(--shadow-lg);font-size:var(--fs-sm);padding:8px 10px;line-height:1.4;display:none;position:absolute;top:calc(100% + 6px);left:50%;transform:translate(-50%)}.info-tip:hover .info-tip-bubble,.info-tip:focus-within .info-tip-bubble,.info-tip.open .info-tip-bubble{display:block}@media (width<=640px){.groups-bar{padding:4px 6px}.groups-bar-text{display:none}.groups-bar-select{flex:100%;order:3}.groups-select{flex:1 1 0;max-width:none}.info-tip-bubble{left:auto;right:-8px;transform:none}.board-proj-canvas{padding:var(--sp-2)}}.roles-head{justify-content:space-between;align-items:center;gap:var(--sp-2);margin-bottom:var(--sp-2);flex-wrap:wrap;display:flex}.roles-head h2{overflow-wrap:anywhere;align-items:center;gap:6px;min-width:0;margin:0;display:flex}.roles-actions{flex-wrap:wrap;align-items:center;gap:6px;margin-left:auto;display:flex}.roles-actions button{align-items:center;gap:6px;display:inline-flex}.roles-current.decision{border-color:var(--accent);background:var(--accent-soft)}.roles-keep{margin-bottom:var(--sp-2);flex-wrap:wrap;align-items:flex-end;gap:8px;display:flex}.roles-keep .field{flex:220px;min-width:0}.roles-keep .field input{width:100%}.roles-keep-actions{flex-wrap:wrap;gap:6px;display:flex}.roles-list{margin:0;padding:0;list-style:none}.roles-list li{align-items:center;gap:4px var(--sp-3);border-top:1px solid var(--border);grid-template-columns:minmax(0,1fr) minmax(0,1.2fr);padding:6px 0;display:grid}.roles-list li:first-child{border-top:0}.roles-list .role-name{overflow-wrap:anywhere;min-width:0}.roles-list select{width:100%;min-width:0}.roles-list .role-student{font-weight:var(--fw-strong,600)}.roles-list .role-why{grid-column:2;margin-top:-2px}.roles-list.editing li{grid-template-columns:minmax(0,1fr) auto}.roles-list.editing .inline-text,.roles-list.editing input[type=text]{width:100%;min-width:0}.roles-add{gap:6px;margin-top:8px;display:flex}.roles-add input{flex:1;min-width:0}.roles-fixed{flex-wrap:wrap;align-items:center;gap:6px;margin-top:8px;display:flex}.roles-fixed-form{flex-wrap:wrap;align-items:flex-end;gap:8px;margin-top:8px;display:flex}.roles-fixed-form .field{flex:160px;min-width:0}.roles-fixed-form select{width:100%}.roles-note{margin:8px 0 0}.roles-students h2{font-size:var(--fs-md);margin:0 0 4px}.roles-students-list{margin:0;padding:0;list-style:none}.roles-page .layout>*{align-self:start}.roles-students-list li{border-top:1px solid var(--border);grid-template-columns:minmax(0,1fr) auto;align-items:baseline;gap:0 8px;padding:4px 0;display:grid}.roles-students-list li:first-child{border-top:0}.roles-students-list .who{font-weight:var(--fw-medium,500)}.roles-students-list .last{grid-column:1/-1;line-height:1.3}.roles-students-list .never{color:var(--accent-text,var(--accent));font-weight:var(--fw-medium,500)}.roles-history{margin-top:var(--sp-3)}.roles-history>summary{cursor:pointer;width:fit-content}.roles-period{border-top:1px solid var(--border);padding:6px 0}.roles-period-head{justify-content:space-between;align-items:center;gap:8px;display:flex}.roles-period-head strong{font-weight:var(--fw-strong,600)}.roles-period p{margin:0}.board-wrap{width:100%;container-type:inline-size}.board-empty{color:var(--muted);margin:0}.rboard{font-size:var(--fs-base)}.rboard.is-proj{font-size:var(--board-fs,clamp(18px, 2.2cqi, 40px))}.rboard-period{color:var(--muted);font-size:.9em;font-weight:var(--fw-medium,500);margin:0 0 .5em}.rboard-list{grid-template-columns:repeat(auto-fill,minmax(min(100%,13em),1fr));gap:.5em;margin:0;padding:0;list-style:none;display:grid}.rboard-item{background:var(--surface);border:1px solid var(--border);border-left:.3em solid var(--brand-seat,#d38f12);border-radius:var(--radius);flex-direction:column;gap:.1em;min-width:0;padding:.5em .75em;display:flex}.rboard-role{color:var(--muted);overflow-wrap:anywhere;font-size:.85em}.rboard-name{font-size:1.2em;font-weight:var(--fw-strong,600);overflow-wrap:anywhere;line-height:1.25}.rboard-name.none{color:var(--muted);font-weight:var(--fw-regular,400)}.rboard-name.absent{color:var(--muted)}.rboard-absent{font-size:.7em;font-weight:var(--fw-regular,400)}.roles-current.decision .roles-list li{align-items:start;row-gap:0}.roles-current.decision .roles-list .role-name{grid-row:span 2}.roles-current.decision .roles-list .role-why{margin-top:0}.cr-page{min-width:0}.cr-grid{gap:var(--sp-4);grid-template-columns:minmax(0,1fr);align-items:start;display:grid}@media (width>=1100px){.cr-grid{grid-template-columns:minmax(0,2fr) minmax(280px,1fr)}}.cr-card{min-width:0;padding:var(--sp-4);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg)}.cr-card-head{justify-content:space-between;align-items:baseline;gap:var(--sp-2) var(--sp-3);margin-bottom:var(--sp-3);flex-wrap:wrap;display:flex}.cr-card-title{align-items:center;gap:4px var(--sp-2);font-size:var(--fs-md);font-weight:var(--fw-strong,600);flex-wrap:wrap;min-width:0;margin:0;display:flex}.cr-card-title>svg{color:var(--muted);flex:none}.cr-card-meta{color:var(--muted);font-size:var(--fs-sm);font-weight:var(--fw-regular,400)}.cr-card-link{font-size:var(--fs-sm);font-weight:var(--fw-medium,500)}.cr-empty{justify-content:space-between;align-items:center;gap:var(--sp-2) var(--sp-3);flex-wrap:wrap;display:flex}.cr-empty p{margin:0}.cr-board,.cr-plan-board{min-width:0;overflow-x:auto}.cr-plan-board svg{width:100%;height:auto;max-height:min(68vh,720px);display:block}.cr-attendance-status{margin:0 0 var(--sp-3)}.cr-absent-count{color:var(--danger);font-weight:var(--fw-strong,600)}.cr-attendance-toggle{justify-content:space-between;align-items:center;gap:var(--sp-2);text-align:left;width:100%;min-height:44px;font-weight:var(--fw-regular,400);display:flex}.cr-attendance-chevron{flex:none;transition:transform .15s}.cr-attendance-toggle[aria-expanded=true] .cr-attendance-chevron{transform:rotate(180deg)}.cr-attendance-toggle[aria-expanded=true]{margin-bottom:var(--sp-3)}.cr-attendance-clear{margin-bottom:var(--sp-2)}.cr-roll{flex-wrap:wrap;gap:6px;margin:0;padding:0;list-style:none;display:flex}.cr-roll-chip{border-radius:var(--radius-pill);border:1px solid var(--border);background:var(--surface);min-height:34px;color:var(--text);font-weight:var(--fw-regular,400);align-items:center;gap:4px;padding:3px 12px;display:inline-flex}.cr-roll-chip:hover{background:var(--surface-2)}.cr-roll-chip.is-absent{background:var(--danger-soft);border-color:var(--danger);color:var(--danger)}.cr-roll-chip.is-absent:hover{background:var(--danger-soft)}.cr-roll-chip.is-absent .cr-roll-name{text-decoration:line-through;text-decoration-thickness:2px}@media (pointer:coarse),(width<=640px){.cr-roll-chip{min-height:40px}}@media (prefers-reduced-motion:reduce){.cr-attendance-chevron{transition:none}}.hp{max-width:920px}.hp-hero{align-items:flex-start;gap:var(--sp-5);padding:var(--sp-4) 0 var(--sp-6);display:flex}.hp-hero svg{flex:none}.hp-hero h1{font-size:var(--fs-2xl);margin:0 0 var(--sp-2)}.hp-lead{margin:0 0 var(--sp-4);font-size:var(--fs-md);max-width:40em;line-height:1.5}.hp-actions{gap:var(--sp-2);flex-wrap:wrap;display:flex}.hp-section{margin-bottom:var(--sp-6)}.hp-section h2{font-size:var(--fs-lg);margin:0 0 var(--sp-3)}.hp-icon{color:var(--select-text,var(--accent));flex:none}.hp-features{gap:var(--sp-3);grid-template-columns:repeat(auto-fill,minmax(260px,1fr));margin:0;padding:0;list-style:none;display:grid}.hp-feature{gap:var(--sp-2);height:100%;padding:var(--sp-4);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);color:var(--text);flex-direction:column;text-decoration:none;display:flex}.hp-feature:hover{border-color:var(--border-strong)}.hp-feature-title{font-weight:var(--fw-strong)}.hp-feature-text{color:var(--muted);font-size:var(--fs-sm);line-height:1.5}.hp-principles{gap:var(--sp-4);grid-template-columns:repeat(auto-fit,minmax(240px,1fr));margin:0;padding:0;list-style:none;display:grid}.hp-principles li{gap:var(--sp-3);display:flex}.hp-principles p{color:var(--muted);font-size:var(--fs-sm);margin:4px 0 0;line-height:1.5}.hp-note{margin:var(--sp-3) 0 0;color:var(--muted);font-size:var(--fs-sm)}.cr-steps{gap:var(--sp-3);margin:0;padding:0;list-style:none;display:grid}.cr-step{gap:var(--sp-4);padding:var(--sp-4) var(--sp-5);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);display:flex}.cr-step.is-current{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}.cr-step-num{background:var(--surface-2);width:36px;height:36px;font-weight:var(--fw-strong,600);border-radius:50%;flex:none;justify-content:center;align-items:center;display:inline-flex}.cr-step.is-current .cr-step-num{background:var(--accent);color:var(--on-accent)}.cr-step.is-done .cr-step-num{background:var(--ok-soft);color:var(--ok)}.cr-step-body{min-width:0}.cr-step-body h3{font-size:var(--fs-md);margin:0 0 4px}.cr-step-body p{margin:0 0 var(--sp-3)}@media (width<=640px){.hp-hero{gap:var(--sp-3);flex-direction:column}.cr-step{padding:var(--sp-4);gap:var(--sp-3)}}.cr-projection{--on-accent:#fff;--bg:#f3f5f8;--surface:#fff;--surface-2:#eaeef3;--surface-3:#dfe5ec;--text:#16202b;--muted:#536174;--border:#d3dae2;--border-strong:#b3bfcc;--accent:#1b5e9b;--accent-hover:#154c80;--accent-soft:#e1ecf8;--accent-text:#164f84;--ok:#1e7b46;--ok-soft:#dbf0e3;--warn:#a35d00;--warn-soft:#fcedd3;--danger:#b5322a;--danger-soft:#fbe2df;--lock:#6a4cb8;--companion:#0b7480;--companion-soft:#d3eef1;--brand-seat:#d38f12;--focus:#1b5e9b;--select:#d38f12;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;z-index:80;background:var(--surface);color:var(--text);flex-direction:column;display:flex;position:fixed;inset:0}.cr-projection.is-idle,.cr-projection.is-idle *{cursor:none}.cr-proj-bar{align-items:center;gap:var(--sp-2);padding:var(--sp-2) var(--sp-3);background:var(--bg);border-bottom:1px solid var(--border);flex-wrap:wrap;display:flex}.cr-proj-tabs{gap:4px;display:flex}.cr-proj-tab{align-items:center;gap:var(--sp-2);border-radius:var(--radius);min-height:40px;color:var(--text);font-weight:var(--fw-medium,500);background:0 0;border:1px solid #0000;padding:4px 14px;display:inline-flex}.cr-proj-tab:hover{background:var(--surface-2)}.cr-proj-tab[aria-selected=true]{background:var(--surface);border-color:var(--accent);color:var(--accent-text);box-shadow:inset 0 -3px 0 var(--accent)}.cr-proj-key{border:1px solid var(--border-strong);min-width:20px;height:20px;color:var(--muted);font-size:var(--fs-xs);border-radius:4px;justify-content:center;align-items:center;padding:0 4px;display:inline-flex}.cr-proj-spacer{flex:1}.cr-proj-size{align-items:center;gap:4px;display:flex}.cr-proj-scale{text-align:center;min-width:48px;color:var(--muted);font-size:var(--fs-sm)}.cr-proj-close{align-items:center;gap:6px;display:inline-flex}.cr-proj-canvas{min-height:0;padding:var(--sp-4);font-size:calc(20px * var(--name-scale,1));flex:1;justify-content:center;align-items:center;display:flex;overflow:auto}.cr-proj-canvas>*{max-width:100%;max-height:100%}.cr-proj-canvas.cr-proj-plan>*{flex:1;align-self:stretch;min-width:0;min-height:0}.cr-proj-canvas.cr-proj-plan svg{width:100%;height:100%;display:block}.cr-proj-canvas.cr-proj-groups>*,.cr-proj-canvas.cr-proj-roles>*{align-self:flex-start;width:100%}.cr-proj-empty{color:var(--muted);font-size:var(--fs-lg)}@media (width<=640px){.cr-proj-tab{padding:4px 10px}.cr-proj-key{display:none}}.students-status:empty{display:none}.students-status{margin:0 0 var(--sp-2);color:var(--ok,var(--text))}.students-toolbar{align-items:center;gap:var(--sp-2) var(--sp-3);margin-bottom:var(--sp-2);flex-wrap:wrap;display:flex}table.students-read{table-layout:auto}table.students-read td{padding-top:7px;padding-bottom:7px}table.students-read .student-row{cursor:pointer}table.students-read .student-row:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}table.students-read .student-row:focus-visible td{background:var(--accent-soft)}table.students-read tr.absent td{opacity:1;color:var(--muted)}table.students-read tr.absent td .chip:not(.st-absent){opacity:.6}.st-first{font-weight:600}.st-first,.st-last{white-space:nowrap}.st-tags{width:100%}.students-read .chip{margin:1px 4px 1px 0;padding:0 8px;line-height:1.5}.chip.st-pill{font-variant-numeric:tabular-nums;justify-content:center;min-width:1.8em;font-weight:600}.chip.st-pill.level-1{background:var(--warn-soft);border-color:var(--warn)}.chip.st-pill.level-3{background:var(--ok-soft);border-color:var(--ok)}.chip.st-companion-chip,.chip.companion-chip{background:var(--companion-soft,var(--accent-soft));border-color:var(--companion,var(--accent));white-space:nowrap}.chip.st-absent{background:var(--surface-3);border-color:var(--border-strong);color:var(--text);margin-left:6px;font-weight:500}.student-form{gap:var(--sp-3);flex-direction:column;display:flex}.student-form-names{gap:var(--sp-3);grid-template-columns:repeat(2,minmax(0,1fr));display:grid}.student-form .field{min-width:0}.student-form .field input[type=text],.student-form .field select{width:100%;min-width:0}.student-tags{border:1px solid var(--border-strong);border-radius:var(--radius-sm);background:var(--surface);flex-wrap:wrap;align-items:center;gap:6px;padding:4px;display:flex}.student-tags:focus-within{border-color:var(--accent)}.student-tags input[type=text]{background:0 0;border:none;flex:8em;min-width:6em;min-height:30px;padding:2px 4px}.student-tags input[type=text]:focus-visible{outline:none}.student-counter{white-space:nowrap;font-variant-numeric:tabular-nums}.check-field{align-items:center;gap:var(--sp-2);cursor:pointer;font-weight:500;display:inline-flex}.check-field input{width:18px;height:18px}.companions-section .card-title{margin:0 0 var(--sp-1)}.companion-list{margin:var(--sp-2) 0 var(--sp-3);border-top:1px solid var(--border);padding:0;list-style:none}.companion-list .companion-card{align-items:center;gap:var(--sp-2) var(--sp-3);padding:var(--sp-2) 0;border-bottom:1px solid var(--border);flex-wrap:wrap;display:flex}.companion-head{flex:0 14em;min-width:0}.companion-head .title-input{width:100%;font-weight:650}.companion-members{flex-wrap:wrap;flex:16em;align-items:center;gap:6px;min-width:0;display:flex}.chip.companion-chip{min-height:28px;color:var(--text)}select.companion-add{width:auto;max-width:100%;min-height:var(--control-h-sm);font-size:var(--fs-sm)}.companion-remove{margin-left:auto}.companion-new{gap:var(--sp-2);flex-wrap:wrap;align-items:center;display:flex}.companion-new input[type=text]{flex:0 16em;min-width:0}@media (width<=640px){.companion-head{flex:1 1 0}.companion-members{flex-basis:100%;order:1}table.students-read,table.students-read tbody{display:block}table.students-read thead{display:none}table.students-read tr.student-row{border-bottom:1px solid var(--border);flex-wrap:wrap;align-items:center;gap:2px 6px;padding:8px 4px;display:flex}table.students-read tr.student-row td{background:0 0;border:none;padding:0;display:block}table.students-read td:empty{display:none}table.students-read .st-last{text-overflow:ellipsis;flex:auto;min-width:0;overflow:hidden}table.students-read .st-tags{width:auto}table.students-read .st-tags,table.students-read .st-companion{order:1}table.students-read .st-gender,table.students-read .st-level{order:2}}.students-aide{flex:100%}.students-edit td{padding:2px 3px}.students-edit input[type=text],.students-edit select{background-color:#0000;border-color:#0000;width:100%;min-width:0;min-height:32px;padding:2px 6px}.students-edit select{background-position:right 12px center,right 7px center;padding-right:22px}.students-edit tr:hover input[type=text],.students-edit tr:hover select{border-color:var(--border)}.students-edit input[type=text]:focus,.students-edit select:focus{border-color:var(--accent);background-color:var(--surface,var(--bg))}.students-edit tr.student-row:focus-within td{background:var(--accent-soft)}.students-edit td[data-col=prenom] input[type=text]{font-weight:600}.students-edit td[data-col=genre] select{min-width:4.6em}.students-edit td[data-col=niveau] select{min-width:5.6em}.students-edit td[data-col=accompagnant] select{min-width:9.5em}.students-edit td[data-col=profils] input::placeholder{color:#0000}.students-edit td[data-col=profils] input:focus::placeholder{color:var(--muted)}.students-edit td[data-col=prenom],.students-edit td[data-col=nom]{min-width:8em}.students-edit td[data-col=profils]{width:100%;min-width:10em}.students-edit tr.absent input[type=text],.students-edit tr.absent select{color:var(--muted)}.students-edit .st-absent-cell{text-align:center}.quick-add-row td{border-bottom:none;padding:6px 4px}.quick-add-input{border-style:dashed;width:100%}.rules-page{max-width:960px}.rules-head{justify-content:space-between;align-items:center;gap:var(--sp-2) var(--sp-3);flex-wrap:wrap;display:flex}.rules-head .card-title{margin:0}.rules-count{font-weight:400}.rules-empty{margin:var(--sp-3) 0 0}.rules-empty>p{margin:0 0 var(--sp-2)}.rules-examples{gap:var(--sp-2);grid-template-columns:repeat(auto-fit,minmax(min(100%,200px),1fr));display:grid}.rules-example{justify-content:flex-start;align-items:center;gap:var(--sp-2);min-height:48px;padding:var(--sp-2) var(--sp-3);border:1px dashed var(--border-strong);border-radius:var(--radius);background:var(--surface);color:var(--text);font-weight:var(--fw-medium,500);text-align:left;display:flex}.rules-example:hover{border-style:solid;border-color:var(--accent);background:var(--accent-soft)}.rules-example>svg{color:var(--accent);flex:none}.rule-form{margin-top:var(--sp-3);padding:var(--sp-3);border:1px solid var(--border-strong);border-radius:var(--radius);background:var(--surface-2)}.rule-form-grid{gap:var(--sp-3);grid-template-columns:repeat(auto-fill,minmax(min(190px,100%),1fr));align-items:start;display:grid}.rule-form .field select,.rule-form .field input{width:100%;min-width:0}.rule-form .field small{line-height:1.35}.rule-form-note{margin:var(--sp-2) 0 0}.rule-form-more{margin-top:var(--sp-2)}.rule-form-more>summary{cursor:pointer;color:var(--muted);padding:4px 0}.rule-form-more[open]>summary{margin-bottom:var(--sp-2)}.rule-note{grid-column:span 2}.rule-problem{color:var(--danger)}.rule-form .row.end{justify-content:flex-end}.rules-list{margin:var(--sp-3) 0 0;padding:0;list-style:none}.rules-list .rule-item{align-items:center}.rules-list .rule-item.editing{border-color:var(--accent)}.rules-list .rule-item>input[type=checkbox]{flex:none;width:18px;height:18px}.rule-flag{margin-left:6px}.rule-actions{flex:none;align-items:center;gap:2px;display:flex}select.level-select{min-height:30px;font-size:var(--fs-sm);border-radius:var(--radius-pill,999px);padding:2px 6px}select.level-select.level-hard{background-color:var(--danger-soft);border-color:var(--danger)}select.level-select.level-strong{background-color:var(--warn-soft);border-color:var(--warn)}select.level-select.level-soft{background-color:var(--accent-soft);border-color:var(--accent)}@media (width<=640px){.rule-note{grid-column:auto}.rules-list .rule-item{flex-wrap:wrap}.rules-list .rule-item .text{flex:calc(100% - 40px)}.rule-actions{margin-left:auto}}.room-picker{align-items:center;gap:4px;min-width:0;display:inline-flex}.room-toolbar-sep{background:var(--border);align-self:stretch;width:1px;margin:2px 4px}.room-toolbar-phone .room-picker{flex:auto}.room-toolbar-phone .room-picker-select{flex:auto;max-width:none}.room-picker-select{min-width:0;max-width:min(220px,100%)}.room-layout{gap:var(--sp-4);grid-template-columns:minmax(0,1fr);align-items:start;display:grid}.room-layout.with-side{grid-template-columns:minmax(0,1fr) 280px}.room-main{min-width:0}@media (width<=1099px){.room-layout.with-side{grid-template-columns:minmax(0,1fr)}}.room-toolbar{margin-bottom:var(--sp-2);flex-wrap:wrap;align-items:center;gap:6px;display:flex}.room-warn{align-items:center;gap:var(--sp-2);margin:0 0 var(--sp-2);padding:4px var(--sp-3);border-radius:var(--radius);background:var(--warn-soft);color:var(--text);font-size:var(--fs-sm);display:flex}.room-warn>svg{color:var(--warn);flex:none}.room-canvas{height:calc(100dvh - 250px);min-height:420px;overflow:hidden}.room-canvas svg{width:100%;height:100%}@media (width<=699px){.room-canvas{height:auto;min-height:0}.room-canvas svg{height:auto}}.room-board{color:var(--muted);gap:6px}.room-board select{width:auto}.room-canvas.seat-mode{box-shadow:inset 0 0 0 2px var(--accent)}.room-status{align-items:center;gap:4px var(--sp-3);flex-wrap:wrap;margin-top:6px;display:flex}.room-disabled{align-items:center;gap:4px;display:inline-flex}.room-keys{cursor:help;text-underline-offset:3px;align-items:center;gap:4px;-webkit-text-decoration:underline dotted;text-decoration:underline dotted;display:inline-flex}.room-side{top:var(--sp-3);gap:var(--sp-3);padding:var(--sp-3);flex-direction:column;display:flex;position:sticky}.room-side-head{justify-content:space-between;align-items:center;gap:var(--sp-2);display:flex}.room-side-head h3{font-size:var(--fs-base);margin:0}.room-side-actions{flex-wrap:wrap;gap:6px;display:flex}.room-side-group{flex-direction:column;gap:6px;display:flex}.room-side-label{font-size:var(--fs-sm);font-weight:var(--fw-medium,500);color:var(--muted)}.room-side-grid{grid-template-columns:1fr 1fr;gap:6px;display:grid}.room-phone-actions{margin-top:var(--sp-2)}.room-toolbar button{font-weight:var(--fw-medium,500)}.room-side-grid>button{white-space:normal;min-width:0;padding-inline:6px}.room-gen-grid{gap:var(--sp-3);margin-block:var(--sp-2);grid-template-columns:repeat(auto-fit,minmax(min(100%,120px),1fr));display:grid}.room-gen-aisle{gap:var(--sp-2);margin-bottom:var(--sp-2)}.room-gen-aisle input{width:auto}
