:root{--bg:#f6f5fb;--surface:#fff;--surface-2:#efedf8;--text:#1b1838;--muted:#565275;--border:#dcd8ee;--brand:#5b4bdb;--brand-strong:#4535c4;--brand-soft:#ebe8fd;--on-brand:#fff;--accent:#0f9b8e;--accent-soft:#dcf5f1;--ai-bubble:#ebe8fd;--me-bubble:#dcf5f1;--peer-bubble:#fff;--teacher-bubble:#fff3d6;--warn:#9a5b00;--warn-soft:#fff1d6;--danger:#b42318;--danger-soft:#fde7e4;--good:#136c3a;--good-soft:#dff5e7;--shadow:0 1px 2px #1b18380f, 0 4px 16px #1b18380f;--radius:14px;--font:ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--mono:ui-monospace, "SF Mono", Menlo, Consolas, monospace;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--bg:#121124;--surface:#1b1a33;--surface-2:#24223f;--text:#eceaf8;--muted:#aaa6c8;--border:#34315a;--brand:#8f83ff;--brand-strong:#a79eff;--brand-soft:#2a2654;--on-brand:#120f2e;--accent:#3fd3c2;--accent-soft:#143a37;--ai-bubble:#2a2654;--me-bubble:#143a37;--peer-bubble:#24223f;--teacher-bubble:#3a2f12;--warn:#f3b44d;--warn-soft:#3a2f12;--danger:#ff8a7a;--danger-soft:#3d1a17;--good:#6ee39b;--good-soft:#17351f;--shadow:0 1px 2px #0000004d, 0 4px 16px #00000040;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}:root[data-theme=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}html,body{background:var(--bg);color:var(--text);font-family:var(--font);margin:0;font-size:16px;line-height:1.45}#root{min-height:100vh}a{color:var(--brand-strong)}h1,h2,h3{margin:0 0 .5em;line-height:1.2}h1{font-size:1.6rem}h2{font-size:1.2rem}h3{font-size:1.05rem}:focus-visible{outline:3px solid var(--brand);outline-offset:2px;border-radius:6px}.sr-only{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.muted-text{color:var(--muted)}.small{font-size:.85rem}.mono{font-family:var(--mono);letter-spacing:.06em;font-weight:700}.page,.home,.student{max-width:1080px;margin:0 auto;padding:0 16px 48px}.page.wide{max-width:1400px}.topbar{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;padding:14px 0;display:flex}.topbar-right{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.logo{color:var(--text);letter-spacing:-.01em;align-items:center;gap:8px;font-size:1.15rem;font-weight:800;text-decoration:none;display:inline-flex}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);margin-bottom:16px;padding:20px}.card.narrow{max-width:460px;margin:32px auto}.row{flex-wrap:wrap;align-items:center;gap:16px;display:flex}.row.end{justify-content:space-between;margin-top:12px}.field{flex-direction:column;gap:4px;display:flex}.grow{flex:1}label{font-size:.95rem;font-weight:600}input,select,textarea{font:inherit;color:var(--text);background:var(--surface);border:1.5px solid var(--border);border-radius:10px;width:100%;padding:10px 12px}input[type=checkbox],input[type=radio]{width:auto}input[type=range]{accent-color:var(--brand);padding:0}input:focus,select:focus,textarea:focus{border-color:var(--brand);box-shadow:0 0 0 3px var(--brand-soft);outline:none}.card label+input,.card label+select{margin:4px 0}.help{color:var(--muted);margin:2px 0 12px;font-size:.88rem}.code-input{font-family:var(--mono);letter-spacing:.25em;text-transform:uppercase;text-align:center;font-size:1.6rem;font-weight:700}fieldset{border:0;margin:0 0 16px;padding:0}legend{margin-bottom:8px;font-weight:700}.check{align-items:center;gap:8px;font-weight:500;display:flex}.error{color:var(--danger);background:var(--danger-soft);border-radius:8px;padding:8px 12px;font-weight:600}.warn-note{color:var(--warn);background:var(--warn-soft);border-radius:8px;padding:8px 12px}form.inline{align-items:center;gap:6px;display:flex}.btn{font:inherit;border:1.5px solid var(--border);background:var(--surface);color:var(--text);cursor:pointer;white-space:nowrap;border-radius:10px;align-items:center;gap:6px;padding:10px 16px;font-weight:700;text-decoration:none;display:inline-flex}.btn:hover:not(:disabled){border-color:var(--brand)}.btn:disabled{opacity:.55;cursor:not-allowed}.btn.primary{background:var(--brand);border-color:var(--brand);color:var(--on-brand)}.btn.primary:hover:not(:disabled){background:var(--brand-strong)}.btn.danger{color:var(--danger);border-color:var(--danger)}.btn.ghost{background:0 0}.btn.small{padding:6px 10px;font-size:.88rem}.icon-btn{color:var(--muted);cursor:pointer;background:0 0;border:0;border-radius:6px;padding:2px 6px;font-size:.85rem}.icon-btn:hover{color:var(--danger);background:var(--danger-soft)}.hero{text-align:center;padding:32px 0}.hero h1{letter-spacing:-.02em;font-size:clamp(2rem,5vw,3.2rem)}.hl{color:var(--brand)}.lede{max-width:620px;color:var(--muted);margin:0 auto 28px;font-size:1.12rem}.cards{text-align:left;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:16px;max-width:760px;margin:0 auto;display:grid}.cards .card{flex-direction:column;gap:6px;display:flex}.cards .card .btn{align-self:flex-start;margin-top:auto}.principles{flex-wrap:wrap;justify-content:center;gap:10px;margin:28px auto 0;padding:0;list-style:none;display:flex}.principles li{background:var(--surface);border:1px solid var(--border);border-radius:999px;padding:6px 14px;font-size:.92rem}.packs{grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:12px;display:grid}.pack{border:2px solid var(--border);cursor:pointer;border-radius:12px;flex-direction:column;gap:4px;padding:14px;font-weight:400;display:flex;position:relative}.pack input{opacity:0;position:absolute}.pack.selected{border-color:var(--brand);background:var(--brand-soft)}.pack:focus-within{outline:3px solid var(--brand);outline-offset:2px}.pack-strand{color:var(--muted);text-transform:uppercase;letter-spacing:.04em;font-size:.8rem;font-weight:600}.pack-title{font-size:1.05rem;font-weight:800}.pack-goal{color:var(--muted);font-size:.88rem}.session-list{margin:0;padding:0;list-style:none}.session-list li{border-top:1px solid var(--border);align-items:center;gap:12px;padding:8px 0;display:flex}.session-list a{flex:1}.pill{background:var(--surface-2);color:var(--muted);text-transform:capitalize;border-radius:999px;padding:2px 10px;font-size:.78rem;font-weight:700;display:inline-block}.pill.running{background:var(--good-soft);color:var(--good)}.pill.waiting{background:var(--brand-soft);color:var(--brand-strong)}.pill.warn{background:var(--warn-soft);color:var(--warn)}.pill.urgent{background:var(--danger);color:#fff}.live-head{grid-template-columns:auto 1fr auto;align-items:center;gap:24px;display:grid}.code-block{border-right:1px solid var(--border);flex-direction:column;align-items:center;gap:4px;padding-right:24px;display:flex}.big-code{font-family:var(--mono);letter-spacing:.18em;color:var(--brand);font-size:2.6rem;font-weight:800}.live-info h1{margin-bottom:2px}.live-actions{flex-direction:column;align-items:stretch;gap:8px;display:flex}.countdown{font-family:var(--mono);font-weight:700}.countdown.low{color:var(--danger)}.alerts{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);margin-bottom:16px;padding:14px 16px}.alerts .count{background:var(--danger);color:#fff;border-radius:999px;padding:0 8px;font-size:.85rem}.alerts ul{flex-direction:column;gap:8px;margin:0;padding:0;list-style:none;display:flex}.alert{border-left:5px solid var(--muted);background:var(--surface-2);border-radius:10px;justify-content:space-between;gap:12px;padding:10px 12px;display:flex}.alert.warning{border-color:var(--warn);background:var(--warn-soft)}.alert.urgent{border-color:var(--danger);background:var(--danger-soft)}.alert blockquote{color:var(--muted);margin:4px 0;font-style:italic}.chips{flex-wrap:wrap;gap:8px;padding:0;list-style:none;display:flex}.chips li{background:var(--brand-soft);border-radius:999px;padding:6px 12px;font-weight:600}.sim{background:var(--surface-2);color:var(--muted);vertical-align:middle;border-radius:6px;margin-left:6px;padding:0 6px;font-size:.68rem;font-weight:700}.tabs{gap:4px;margin:8px 0 12px;display:flex}.tabs button{font:inherit;color:var(--muted);cursor:pointer;background:0 0;border:0;border-radius:10px;padding:8px 14px;font-weight:700}.tabs button.active{background:var(--surface);color:var(--text);box-shadow:var(--shadow)}.group-grid{grid-template-columns:repeat(auto-fill,minmax(400px,1fr));gap:16px;display:grid}.group-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);flex-direction:column;gap:8px;min-width:0;padding:14px;display:flex}.group-card.paused,.group-card.stalled{border-color:var(--warn)}.group-card header{align-items:center;gap:8px;display:flex}.group-card header h3{flex:1;margin:0}.score{color:var(--brand);font-weight:800}.members{flex-direction:column;gap:2px;margin:0;padding:0;list-style:none;display:flex}.members li{grid-template-columns:1fr auto 2.5em 4em auto;align-items:center;gap:8px;padding:2px 0;font-size:.9rem;display:grid}.members li.left{opacity:.55}.members .pts{text-align:right;font-weight:700}.state{background:var(--surface-2);color:var(--muted);border-radius:999px;padding:1px 8px;font-size:.74rem;font-weight:700}.state.confused,.state.disengaged{background:var(--warn-soft);color:var(--warn)}.state.frustrated{background:var(--danger-soft);color:var(--danger)}.state.ahead,.state.engaged{background:var(--good-soft);color:var(--good)}.state.dominating{background:var(--brand-soft);color:var(--brand-strong)}.group-actions{align-items:center;gap:8px;display:flex}.score-events{margin:0;padding:0;list-style:none}.score-events li{border-top:1px solid var(--border);flex-wrap:wrap;align-items:center;gap:10px;padding:6px 0;display:flex}.score-events .who{min-width:8em;font-weight:700}.score-events .pts{color:var(--good);min-width:2.5em;font-weight:800}.score-events .reason{flex:1}.score-events input[type=number]{width:4.5em}.tag{background:var(--surface-2);color:var(--muted);text-transform:uppercase;letter-spacing:.03em;border-radius:6px;padding:1px 6px;font-size:.7rem;font-weight:700}.tag.flag{background:var(--warn-soft);color:var(--warn)}.tag.flag.hidden{background:var(--danger-soft);color:var(--danger)}.cost{text-align:center;margin-top:24px}.stepper{flex-wrap:wrap;gap:4px;margin:0;padding:0;list-style:none;display:flex}.stepper li{color:var(--muted);align-items:center;gap:6px;padding-right:8px;font-size:.85rem;display:flex}.stepper .dot{background:var(--surface-2);border:2px solid var(--border);border-radius:50%;place-items:center;width:24px;height:24px;font-size:.75rem;font-weight:800;display:inline-grid}.stepper li.done .dot{background:var(--accent);border-color:var(--accent);color:var(--on-brand)}.stepper li.current{color:var(--text);font-weight:700}.stepper li.current .dot{background:var(--brand);border-color:var(--brand);color:var(--on-brand)}.stepper.compact .dot{width:20px;height:20px;font-size:.68rem}.chat{background:var(--surface-2);border-radius:12px;flex-direction:column;gap:10px;min-height:160px;padding:12px;display:flex;overflow-y:auto}.student .chat{height:calc(100vh - 330px);min-height:260px}.msg{flex-direction:column;align-self:flex-start;gap:2px;max-width:85%;display:flex}.msg.mine{align-self:flex-end;align-items:flex-end}.msg .meta{color:var(--muted);align-items:center;gap:6px;font-size:.78rem;display:flex}.msg .who{font-weight:700}.msg .bubble{background:var(--peer-bubble);border:1px solid var(--border);white-space:pre-wrap;overflow-wrap:anywhere;border-radius:14px;padding:8px 12px}.msg.ai .bubble{background:var(--ai-bubble);border-color:#0000}.msg.ai .who{color:var(--brand-strong)}.msg.mine .bubble{background:var(--me-bubble);border-color:#0000}.msg.teacher .bubble{background:var(--teacher-bubble);border-color:#0000}.msg.teacher .who{color:var(--warn)}.msg.muted .bubble{opacity:.6;text-decoration:line-through}.msg.private .bubble{border:2px dashed var(--brand)}.msg .note{color:var(--muted);font-size:.75rem}.msg .note.why{font-style:italic}.msg.system{color:var(--muted);background:var(--surface);text-align:center;border-radius:999px;align-self:center;max-width:100%;padding:3px 12px;font-size:.82rem}.dots{gap:3px;display:inline-flex}.dots i{background:var(--brand);border-radius:50%;width:6px;height:6px;animation:1.2s infinite blink}.dots i:nth-child(2){animation-delay:.2s}.dots i:nth-child(3){animation-delay:.4s}@keyframes blink{0%,80%,to{opacity:.25}40%{opacity:1}}.team-name{font-weight:800}.points{background:var(--surface);border:1px solid var(--border);border-radius:999px;padding:4px 10px;font-weight:800}.room{flex-direction:column;gap:10px;display:flex}.room-head{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:12px;display:flex}.room-head p{margin:0 0 6px}.mates{flex-wrap:wrap;gap:6px;margin:0;padding:0;list-style:none;display:flex}.mates li{background:var(--surface);border:1px solid var(--border);border-radius:999px;padding:2px 10px;font-size:.85rem}.mates li.me{background:var(--me-bubble);font-weight:700}.mates li.left{opacity:.5}.banner{background:var(--warn-soft);color:var(--warn);border-radius:10px;padding:10px 14px;font-weight:700}.banner.soft{background:var(--brand-soft);color:var(--brand-strong)}.banner.good{background:var(--good-soft);color:var(--good)}.composer{align-items:stretch;gap:8px;display:flex}.composer textarea{resize:none}.waiting{text-align:center}.pulse{border:6px solid var(--brand);border-radius:50%;width:56px;height:56px;margin:8px auto 16px;animation:1.6s ease-in-out infinite pulse}@keyframes pulse{50%{opacity:.6;transform:scale(.82)}}.toasts{z-index:10;flex-direction:column;gap:8px;max-width:min(360px,100vw - 32px);display:flex;position:fixed;bottom:16px;right:16px}.toast{background:var(--surface);border:1px solid var(--border);border-left:5px solid var(--good);box-shadow:var(--shadow);border-radius:10px;padding:10px 14px;animation:.25s ease-out slide}.toast b{color:var(--good);margin-right:4px;font-size:1.1rem}.toast.notice{border-left-color:var(--warn)}@keyframes slide{0%{opacity:0;transform:translateY(12px)}}@media (prefers-reduced-motion:reduce){*{animation:none!important}}.scoreboard .teams{grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:14px;margin:0;padding:0;list-style:none;display:grid}.team{border:2px solid var(--border);border-radius:var(--radius);background:var(--surface);padding:14px}.team.rank-1{border-color:var(--brand)}.team-head{align-items:center;gap:10px;display:flex}.team-head h3{flex:1;margin:0}.team-head .rank{font-size:1.3rem;font-weight:800}.badges{margin:10px 0;padding:0;list-style:none}.badges li{border-top:1px dashed var(--border);justify-content:space-between;gap:8px;padding:4px 0;display:flex}.badges li.me .nick{font-weight:800}.badge{color:var(--accent);font-size:.82rem;font-weight:700}.summary{white-space:pre-wrap;background:var(--surface-2);border-radius:10px;margin:0;padding:10px;font-size:.92rem}.individual ol{columns:2;padding:0;list-style:none}@media (width<=860px){.live-head{grid-template-columns:1fr}.code-block{border-right:0;border-bottom:1px solid var(--border);padding-bottom:12px;padding-right:0}.group-grid{grid-template-columns:1fr}}@media (width<=520px){.members li{grid-template-columns:1fr auto 2.5em auto}.members li .muted-text{display:none}.composer{flex-direction:column}}@media print{.topbar,.live-actions,.group-actions,.tabs,.alerts,.toasts{display:none!important}.chat{overflow:visible;height:auto!important}}.demo-note{background:var(--brand-soft);color:var(--text);border-radius:10px;margin:0;padding:10px 14px;font-size:.92rem}.eyebrow{color:var(--accent);text-transform:uppercase;letter-spacing:.08em;margin:0 0 8px;font-size:.85rem;font-weight:700}.cta-row{flex-direction:column;align-items:center;gap:8px;display:flex}.btn.big{border-radius:14px;padding:14px 26px;font-size:1.15rem}.how{margin:8px 0 24px}.how h2,.parents h2{font-size:1.4rem}.how-steps{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:14px;margin:0;padding:0;list-style:none;display:grid}.how-steps .card{margin:0}.how-steps p{color:var(--muted);margin:0}.step-icon{margin-bottom:6px;font-size:1.8rem;display:block}.checklist{flex-direction:column;gap:8px;margin:0 0 12px;padding:0;list-style:none;display:flex}.checklist li{padding-left:30px;position:relative}.checklist li:before{content:"✓";background:var(--good-soft);width:22px;height:22px;color:var(--good);border-radius:50%;place-items:center;font-size:.8rem;font-weight:800;display:grid;position:absolute;top:0;left:0}.cards.classroom{max-width:none}.demo-intro{max-width:760px;margin:16px auto}.demo-steps{flex-direction:column;gap:6px;margin:0 0 18px;padding-left:20px;display:flex}.pack-emoji{font-size:1.8rem}.demo-intro .btn.big{justify-content:center;width:100%;margin-top:8px}.demo{max-width:1600px;margin:0 auto;padding:0 16px 24px}.demo-bar{justify-content:flex-start}.demo-bar .topbar-right{margin-left:auto}.demo-tabs{gap:6px;margin-bottom:10px;display:none}.demo-tabs button{font:inherit;border:1.5px solid var(--border);background:var(--surface);color:var(--text);cursor:pointer;border-radius:12px;flex:1;padding:10px;font-weight:700}.demo-tabs button.active{background:var(--brand);border-color:var(--brand);color:var(--on-brand)}.demo-grid{grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:start;gap:16px;display:grid}.pane{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);min-width:0;padding:12px 14px}.teacher-pane{background:var(--surface-2);max-height:calc(100vh - 90px);position:sticky;top:8px;overflow-y:auto}.pane-title{margin:0 0 4px;font-size:1rem}.pane-note{color:var(--muted);margin:0 0 8px;font-size:.88rem}.student.embedded,.page.embedded{max-width:none;padding:0}.student.embedded .topbar{justify-content:flex-end;padding:4px 0 8px}.student.embedded .chat{height:calc(100vh - 430px);min-height:300px}.page.embedded .group-grid{grid-template-columns:1fr}.stage-hint{color:var(--brand-strong);margin:6px 0 0;font-size:.9rem;font-weight:600}.coach{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.coach-label{color:var(--muted);font-size:.85rem;font-weight:700}.chip{font:inherit;border:1.5px solid var(--border);background:var(--surface);color:var(--text);cursor:pointer;border-radius:999px;padding:5px 12px;font-size:.85rem;font-weight:600}.chip:hover{border-color:var(--brand);background:var(--brand-soft)}@media (width<=1100px){.demo-tabs{display:flex}.demo-grid{grid-template-columns:1fr}.demo-grid.show-student .teacher-pane,.demo-grid.show-teacher .student-pane{display:none}.teacher-pane{max-height:none;position:static}.pane{padding:10px}.student.embedded .chat{height:calc(100vh - 470px);min-height:260px}}@media (width<=520px){.home .topbar nav .btn{padding:4px 6px;font-size:.8rem}.demo-bar .btn{padding:5px 8px;font-size:.8rem}.coach-label{width:100%}}@media (width<=640px){.student .stepper li:not(.current) .label{display:none}.student .stepper li{padding-right:2px}.coach,.mates{scrollbar-width:none;flex-wrap:nowrap;padding-bottom:2px;overflow-x:auto}.coach .chip,.mates li{flex:none}.coach-label{flex:none;width:auto!important}.student .composer{flex-direction:row}.student .composer textarea{font-size:16px}.student.embedded .chat,.student .chat{height:calc(100vh - 360px);min-height:240px}.room-head{gap:6px}.student .help.small{display:none}}.points{align-items:center;gap:4px;line-height:1.2;display:inline-flex}.student.embedded .ended{box-shadow:none;border:0;padding:0}.contact{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;margin-top:16px;display:flex}.contact p{margin:0 0 8px}.contact-who{font-size:1.02rem}.contact-who a{overflow-wrap:anywhere;font-weight:700}.site-footer{text-align:center;color:var(--muted);border-top:1px solid var(--border);margin-top:24px;padding:20px 0 8px;font-size:.88rem}.site-footer a{overflow-wrap:anywhere}@media (width<=520px){.contact .btn{justify-content:center;width:100%}}
