:root{--font-body:"Segoe UI", "Helvetica Neue", system-ui, -apple-system, sans-serif;--font-scale:1;--letter-spacing:normal;--line-height:1.55;--bg:#f6f4ff;--bg-2:#efeaff;--surface:#fff;--surface-2:#f4f1fb;--text:#1e1533;--text-soft:#453d5e;--border:#e4defb;--chip-ink:#1c0f33;--brand:#6d28d9;--brand-2:#be185d;--accent:#7c3aed;--link:#6d28d9;--good:#08783b;--bad:#b91c1c;--on-brand:#fff;--warn-ink:#7c3a05;--warn-bg:#fef3c7;--shadow:0 10px 30px #5e3faf1f;--radius:18px}html[data-theme=dark]{--bg:#16121f;--bg-2:#1e1830;--surface:#241d38;--surface-2:#2c2444;--text:#f6f1ff;--text-soft:#c9c1e2;--border:#3a3157;--chip-ink:#fff;--brand:#a78bfa;--brand-2:#f472b6;--link:#c4b5fd;--good:#4ade80;--bad:#f87171;--on-brand:#16121f;--warn-ink:#fcd34d;--warn-bg:#3f2f16;--shadow:0 10px 30px #00000073}html[data-font=easy]{--font-body:"Trebuchet MS", "Verdana", "Tahoma", system-ui, sans-serif;--font-scale:1.12;--letter-spacing:.02em;--line-height:1.8}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{font-family:var(--font-body);letter-spacing:var(--letter-spacing);line-height:var(--line-height);background-color:var(--bg);background-image:linear-gradient(160deg, var(--bg), var(--bg-2));color:var(--text);font-size:calc(16px * var(--font-scale))}h1,h2,h3{margin:0 0 .4em;line-height:1.2}button{font-family:inherit;font-size:inherit;cursor:pointer}:where(a,button,input,select,textarea,[tabindex],[role=button],[role=switch]):focus-visible{outline:3px solid var(--accent);outline-offset:2px}.app{flex-direction:column;min-height:100%;display:flex}.banner{z-index:20;background:linear-gradient(120deg, var(--brand), var(--brand-2));color:var(--on-brand);box-shadow:var(--shadow);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;padding:10px 18px;display:flex;position:sticky;top:0}.brand{color:var(--on-brand);background:#ffffff29;border:none;border-radius:999px;align-items:center;gap:10px;padding:8px 14px;font-size:1.05em;font-weight:800;display:flex}.brand-emoji{font-size:1.3em}.nav{flex-wrap:wrap;gap:6px;display:flex}.nav button{min-height:44px;color:var(--on-brand);background:#ffffff29;border:none;border-radius:999px;justify-content:center;align-items:center;gap:6px;padding:8px 12px;font-weight:600;transition:background .15s,transform .1s;display:inline-flex}.nav-ico{font-size:1.05em;line-height:1}.nav button:hover{background:#ffffff4d}.nav button:active{transform:scale(.96)}.main{flex:1;width:min(1100px,100%);margin:0 auto;padding:22px 18px 48px}.cloud-status{z-index:35;flex-direction:column;align-items:flex-end;width:min(1100px,100%);margin:6px auto 0;padding:0 18px;display:flex;position:relative}.cloud-status-chip{border:2px solid color-mix(in srgb, var(--good) 55%, var(--border));background:var(--surface-2);min-height:44px;color:var(--text);font:inherit;border-radius:999px;align-items:center;gap:6px;padding:5px 12px;font-size:.85rem;font-weight:700;display:inline-flex}.cloud-status.bad .cloud-status-chip{border-color:var(--bad);background:color-mix(in srgb, var(--bad) 16%, var(--surface))}.cloud-status-caret{opacity:.6}.cloud-status-panel{border:2px solid var(--border);background:var(--surface);border-radius:12px;justify-items:start;gap:8px;width:min(360px,100vw - 36px);padding:12px;font-size:.9rem;display:grid;position:absolute;top:40px;right:18px;box-shadow:0 14px 34px #00000038}.cloud-status-close{color:var(--text-soft);background:0 0;border:0;padding:4px 6px;position:absolute;top:4px;right:6px}.cloud-status-problem,.cloud-status-meta{margin:0}.cloud-status-problem{color:var(--text);font-weight:700}.cloud-status-meta{color:var(--text-soft);font-size:.8rem}.cloud-status-warn{color:var(--bad)}.backend-alert{border:2px solid var(--bad);background:color-mix(in srgb, var(--bad) 14%, var(--surface));width:100%;color:var(--text);border-radius:12px;align-items:flex-start;gap:10px;margin-top:6px;padding:12px 16px;font-size:.95rem;line-height:1.5;display:flex}.backend-alert-ico{font-size:1.3rem;line-height:1.2}.backend-alert-body{flex:1}.backend-test-out{border:2px solid var(--border);background:var(--surface-2);border-radius:10px;gap:5px;margin-top:4px;padding:8px 10px;display:grid}.backend-test-out.ok{border-color:var(--good)}.backend-test-out.bad{border-color:var(--bad)}@media (width<=600px){.cloud-status{align-items:stretch}.cloud-status-chip{justify-content:center}.cloud-status-panel{right:18px}}.footer{text-align:center;color:var(--text-soft);padding:14px;font-size:.85em}.arcade-page{gap:14px;display:grid}.arcade-intro{justify-content:space-between;align-items:center;gap:20px;margin-bottom:0;display:flex}.arcade-intro p{max-width:720px;color:var(--text-soft);margin:0}.arcade-actions{flex-wrap:wrap;flex:none;gap:10px;display:flex}.arcade-new-window{justify-content:center;align-items:center;text-decoration:none;display:inline-flex}.arcade-frame-shell{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);width:100%;box-shadow:var(--shadow);overflow:hidden}.arcade-frame{background:#fdf3fa;border:0;width:100%;height:min(820px,78vh);min-height:680px;display:block}.arcade-frame:focus-visible{outline:4px solid var(--brand);outline-offset:-4px}.arcade-note{color:var(--text-soft);text-align:center;margin:0}@media (width<=700px){.arcade-intro{flex-direction:column;align-items:flex-start}.arcade-actions{width:100%}.arcade-actions .btn{text-align:center;flex:180px}.arcade-frame{height:76vh;min-height:620px}}.page-head{flex-wrap:wrap;align-items:center;gap:12px;margin-bottom:18px;display:flex}.back-btn{background:var(--surface);border:1px solid var(--border);min-height:44px;color:var(--text);border-radius:999px;padding:8px 14px;font-weight:600}.unsaved-backdrop{z-index:70;background:#00000080;justify-content:center;align-items:center;padding:18px;display:flex;position:fixed;inset:0}.unsaved-dialog{background:var(--surface);width:min(460px,100%);color:var(--text);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:22px}.unsaved-dialog h2{margin-top:0}.hero{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);margin-bottom:22px;padding:22px 24px;position:relative;overflow:hidden}.hero h1{font-size:clamp(1.5rem,4vw,2.2rem)}.hero p{color:var(--text-soft);margin:0}.bunting{gap:6px;margin-bottom:14px;display:flex}.bunting span{border-left:11px solid #0000;border-right:11px solid #0000;border-top:18px solid var(--brand);width:0;height:0}.bunting span:nth-child(2n){border-top-color:var(--brand-2)}.bunting span:nth-child(3n){border-top-color:#f59e0b}.bunting span:nth-child(4n){border-top-color:#14b8a6}.grid{grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:16px;display:grid}.section-title{margin:26px 0 12px;font-size:1.2rem}.ex-area-head{border-bottom:2px solid var(--border);align-items:baseline;margin:28px 0 4px;padding-bottom:8px}.ex-area-head .section-title{font-size:1.4rem}.ex-subhead{color:var(--text-soft);margin:16px 0 10px;font-size:1rem;font-weight:800}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);text-align:left;color:var(--text);flex-direction:column;gap:8px;padding:18px;transition:transform .12s,box-shadow .12s;display:flex}button.card{cursor:pointer;transition:transform .14s,box-shadow .14s,border-color .14s}button.card:hover{transform:translateY(-3px);box-shadow:0 16px 36px #5e3faf33}.topic-card{border-top:4px solid var(--accent)}.topic-card:hover{border-color:color-mix(in srgb, var(--accent) 55%, var(--border));border-top-color:var(--accent)}.card-emoji{font-size:2.2rem}.card h3{margin:0}.card p{color:var(--text-soft);margin:0;font-size:.92em}.more-topics{flex-direction:column;gap:6px;max-width:460px;margin-top:14px;display:flex}.more-topics label{color:var(--text-soft);font-size:.95rem;font-weight:700}.topic-select{appearance:none;border:2px solid var(--border);background:var(--surface) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%238b5cf6' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E") no-repeat right 14px center;width:100%;color:var(--text);cursor:pointer;border-radius:14px;padding:12px 40px 12px 14px;font-size:1.02rem;font-weight:600}.topic-select:focus{border-color:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb, var(--accent) 35%, transparent);outline:none}.game-grid{grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:12px;display:grid}.game-tile{border:1px solid var(--border);background:var(--surface);color:var(--text);box-shadow:var(--shadow);cursor:pointer;text-align:center;border-radius:18px;flex-direction:column;justify-content:center;align-items:center;gap:8px;padding:16px 10px;transition:transform .12s,box-shadow .12s,border-color .12s;display:flex}.game-tile:hover{border-color:var(--accent);transform:translateY(-3px);box-shadow:0 14px 30px #5e3faf38}.game-tile-emoji{font-size:2rem;line-height:1}.game-tile-title{font-size:.92rem;font-weight:700}.difficulty-bar{flex-direction:column;gap:12px;display:flex}.seg{background:var(--surface-2);border:1px solid var(--border);border-radius:999px;gap:0;padding:4px;display:flex}.seg-btn{min-height:44px;color:var(--text);cursor:pointer;background:0 0;border:none;border-radius:999px;flex:1;padding:10px 12px;font-size:1rem;font-weight:700;transition:background .12s,color .12s,box-shadow .12s}.seg-btn:hover{background:color-mix(in srgb, var(--accent) 14%, var(--surface))}.seg-btn.on{background:linear-gradient(120deg, var(--brand), var(--brand-2));color:var(--on-brand);box-shadow:0 6px 16px #5e3faf47}.fine-tune{flex-wrap:wrap;justify-content:center;align-items:center;gap:12px;display:flex}.fine-tune .pill{font-size:.9rem}.admin-toolbar{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.admin-status{background:color-mix(in srgb, var(--brand) 12%, var(--surface));border:1px solid var(--border);border-radius:12px;margin-top:10px;padding:8px 12px;font-weight:600}.admin-input,.admin-textarea{border:2px solid var(--border);background:var(--surface);width:100%;color:var(--text);border-radius:12px;padding:10px 12px;font-family:inherit;font-size:1rem}.admin-input:focus,.admin-textarea:focus{border-color:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb, var(--accent) 35%, transparent);outline:none}.admin-textarea{resize:vertical;min-height:80px}.admin-field{flex-direction:column;gap:6px;margin-bottom:12px;display:flex}.admin-field label,.admin-sublabel{color:var(--text-soft);font-size:.9rem;font-weight:700}.admin-grid{grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px;display:grid}.admin-list{flex-direction:column;gap:10px;margin-top:12px;display:flex}.admin-list-item{border:1px solid var(--border);background:var(--surface-2);border-radius:14px;align-items:center;gap:10px;padding:12px 14px;display:flex}.admin-list-item.active{border-color:var(--accent);box-shadow:0 0 0 2px color-mix(in srgb, var(--accent) 30%, transparent)}.admin-card{border:1px solid var(--border);background:var(--surface-2);border-radius:14px;margin:10px 0;padding:14px}.admin-editor h3{margin-bottom:8px}.pill{background:var(--surface-2);color:var(--text-soft);border:1px solid var(--border);border-radius:999px;padding:3px 10px;font-size:.78em;font-weight:700;display:inline-block}.pill.good{color:var(--good);border-color:color-mix(in srgb, var(--good) 40%, var(--border))}.pill.accent{color:color-mix(in srgb, var(--accent) 48%, var(--chip-ink));background:color-mix(in srgb, var(--accent) 15%, var(--surface));border-color:color-mix(in srgb, var(--accent) 34%, var(--border))}.row{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.spacer{flex:1}.scene{--wall:color-mix(in srgb, var(--accent) 13%, var(--surface));--floor:color-mix(in srgb, var(--accent) 9%, #e6c79a);border-radius:var(--radius);border:1px solid var(--border);box-shadow:var(--shadow);background:radial-gradient(130% 82% at 50% -8%, color-mix(in srgb, var(--accent) 12%, var(--surface)) 0%, transparent 62%), var(--wall);aspect-ratio:16/7;min-height:260px;margin-bottom:8px;position:relative;overflow:hidden}.scene .floor{background:linear-gradient(180deg, color-mix(in srgb, var(--floor) 70%, #000) 0 3px, transparent 3px), linear-gradient(180deg, color-mix(in srgb, var(--floor) 96%, #fff), color-mix(in srgb, var(--floor) 86%, #000));z-index:0;height:26%;position:absolute;bottom:0;left:0;right:0}.scene .rug{background:radial-gradient(closest-side, color-mix(in srgb, var(--accent) 26%, var(--surface)) 0 60%, color-mix(in srgb, var(--accent) 44%, var(--surface)) 61% 80%, transparent 82%);opacity:.85;z-index:1;border-radius:50%;width:44%;height:21%;position:absolute;bottom:2.5%;left:50%;transform:translate(-50%)}.scene .name-banner{background:linear-gradient(120deg, var(--brand), var(--brand-2));color:var(--on-brand);box-shadow:var(--shadow);white-space:nowrap;z-index:3;border-radius:999px;padding:8px 20px;font-weight:800;position:absolute;top:12px;left:50%;transform:translate(-50%)}.scene .bunting{justify-content:center;padding-top:2px;position:absolute;top:0;left:0;right:0}.station{background:var(--surface);color:var(--text);z-index:2;border:none;border-radius:14px;flex-direction:column;align-items:center;gap:4px;min-width:92px;padding:10px 12px;transition:transform .12s,box-shadow .12s;display:flex;position:absolute;box-shadow:0 8px 18px #0000002e}.station:hover{transform:translateY(-3px)scale(1.03);box-shadow:0 14px 26px #00000042}.station .st-emoji{font-size:1.8rem}.station .st-label{font-size:.82rem;font-weight:700}.station .st-sub{color:var(--text-soft);font-size:.7rem}.station.whiteboard{min-width:150px;top:30%;left:50%;transform:translate(-50%)}.station.whiteboard:hover{transform:translate(-50%)translateY(-3px)scale(1.03)}.station.bookshelf{top:34%;left:6%}.station.computer{top:34%;right:6%}.station.table{bottom:6%;left:50%;transform:translate(-50%)}.station.table:hover{transform:translate(-50%)translateY(-3px)scale(1.03)}.scene-hint{text-align:center;color:var(--text-soft);min-height:1.2em;margin:6px 0 18px;font-size:.9em}.panel{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);margin-bottom:18px;padding:22px}.lesson-chunk{align-items:flex-start;gap:16px;display:flex}.lesson-emoji{background:var(--surface-2);border:1px solid var(--border);border-radius:16px;padding:10px 14px;font-size:3rem}.lesson-visual{background:var(--surface-2);border:1px solid var(--border);border-radius:16px;flex:none;width:260px;max-width:100%;padding:12px}.lesson-visual svg{width:100%;height:auto;display:block}.progress-dots{justify-content:center;gap:6px;margin:16px 0;display:flex}.progress-dots i{background:var(--border);border-radius:50%;width:10px;height:10px;display:inline-block}.progress-dots i.on{background:var(--accent)}.btn{background:var(--surface-2);min-height:44px;color:var(--text);border:none;border:1px solid var(--border);border-radius:999px;padding:11px 20px;font-weight:700}.btn.primary{background:linear-gradient(120deg, var(--brand), var(--brand-2));color:var(--on-brand);border:none}.btn.primary:hover{filter:brightness(1.05)}.btn.danger{background:var(--bad);color:#fff;border:none}.btn:disabled{opacity:.5;cursor:not-allowed}.btn.confirming{color:#fff;background:linear-gradient(120deg,#f59e0b,#f97316);border:none;animation:1.1s ease-in-out infinite confirm-pulse}.btn.confirming:hover{filter:brightness(1.05)}@keyframes confirm-pulse{0%,to{box-shadow:0 0 #f59e0b8c}50%{box-shadow:0 0 0 5px #0000}}.speak-btn{border:1px solid var(--border);background:var(--surface-2);min-height:44px;color:var(--text);cursor:pointer;border-radius:999px;padding:6px 12px;font-size:.85em;font-weight:600}.read-aloud{flex-wrap:wrap;align-items:center;gap:8px;margin-top:4px;display:flex}.read-aloud .speak-btn:not(.ghost){background:color-mix(in srgb, var(--accent) 22%, #fff);border-color:color-mix(in srgb, var(--accent) 48%, var(--border));color:color-mix(in srgb, var(--accent) 72%, #16121f);font-weight:800;box-shadow:0 2px 8px #0000001a}.speak-btn.ghost{background:var(--surface-2);color:var(--text-soft)}.speak-btn:hover{border-color:color-mix(in srgb, var(--accent) 55%, var(--border));filter:brightness(1.03)}.back-to-top{z-index:50;cursor:pointer;color:var(--on-brand);background:linear-gradient(120deg, var(--brand), var(--brand-2));border:none;border-radius:999px;align-items:center;gap:6px;padding:10px 16px;font-size:.95rem;font-weight:800;transition:transform .12s,box-shadow .12s;display:inline-flex;position:fixed;bottom:20px;right:20px;box-shadow:0 10px 24px #00000047}.back-to-top:hover{transform:translateY(-2px);box-shadow:0 16px 30px #00000057}.back-to-top span[aria-hidden=true]{font-size:1.1rem;line-height:1}@media (width<=640px){.back-to-top{padding:12px;bottom:14px;right:14px}.back-to-top .btt-label{display:none}}.question{border:1px solid var(--border);background:var(--surface);border-radius:14px;margin-bottom:14px;padding:16px}.q-prompt{margin-bottom:12px;font-weight:700}.q-passage{background:var(--surface-2);border-left:4px solid var(--accent);color:var(--text);white-space:pre-line;border-radius:10px;margin-bottom:12px;padding:12px 14px;font-weight:500;line-height:1.6}.passage-block{border-left:5px solid var(--accent)}.passage-head{align-items:center;margin-bottom:8px}.passage-text{background:color-mix(in srgb, var(--accent) 8%, var(--surface-2));color:var(--text);border-radius:12px;margin:0 0 14px;padding:16px 18px;font-size:1.05rem;line-height:1.75}.passage-nav{padding-top:12px;padding-bottom:12px}.passage-select{appearance:none;border:2px solid var(--border);background:var(--surface-2);color:var(--text);cursor:pointer;border-radius:12px;min-width:150px;padding:8px 14px;font-size:.95rem;font-weight:700}.passage-select:focus-visible{outline:3px solid color-mix(in srgb, var(--accent) 45%, transparent);outline-offset:1px}.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}.options{gap:10px;display:grid}.option{text-align:left;border:2px solid var(--border);background:var(--surface-2);color:var(--text);border-radius:12px;padding:12px 14px;font-weight:600}.option:hover,.option.selected{border-color:var(--accent)}.option.correct{border-color:var(--good);background:color-mix(in srgb, var(--good) 16%, var(--surface))}.option.wrong{border-color:var(--bad);background:color-mix(in srgb, var(--bad) 16%, var(--surface))}.speedsums-q{text-align:center;letter-spacing:.02em;color:var(--accent);margin:8px auto 4px;font-size:clamp(2.2rem,8vw,3.4rem);font-weight:800;transition:color .15s}.speedsums-q.good{color:var(--good)}.speedsums-q.bad{color:var(--bad)}.speedsums-q .ss-blank{min-width:1.1em;color:var(--brand);display:inline-block}.speedsums-feedback{text-align:center;min-height:1.8em;margin-bottom:10px;font-weight:700}.speedsums-feedback .feedback{display:inline-block}.option.opt-correct{border-color:var(--good);background:color-mix(in srgb, var(--good) 20%, var(--surface));font-weight:800}.option.opt-wrong{border-color:var(--bad);background:color-mix(in srgb, var(--bad) 20%, var(--surface));font-weight:800}.fill-input{border:2px solid var(--border);background:var(--surface-2);color:var(--text);border-radius:12px;min-width:160px;padding:10px 14px;font-size:1em}.fill-input:focus{border-color:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb, var(--accent) 35%, transparent);outline:none}.feedback{margin-top:10px;font-weight:700}.feedback.good{color:var(--good)}.feedback.bad{color:var(--bad)}.match-grid{grid-template-columns:1fr 1fr;gap:12px;display:grid}.match-col-title{color:var(--text-soft);margin-bottom:6px;font-size:.85em;font-weight:700}.match-slot{border:2px dashed var(--border);background:var(--surface-2);border-radius:12px;justify-content:space-between;align-items:center;gap:8px;min-height:48px;margin-bottom:10px;padding:10px 12px;display:flex}.match-slot.over{border-color:var(--accent);background:color-mix(in srgb, var(--accent) 12%, var(--surface))}.match-slot.selectable{cursor:pointer;border-color:color-mix(in srgb, var(--accent) 65%, var(--border))}.match-slot.selectable:hover{background:color-mix(in srgb, var(--accent) 10%, var(--surface))}.match-slot.correct{border-style:solid;border-color:var(--good)}.match-slot.wrong{border-style:solid;border-color:var(--bad)}.chip{background:linear-gradient(120deg, var(--brand), var(--brand-2));min-height:44px;color:var(--on-brand);cursor:grab;border:none;border-radius:999px;padding:8px 14px;font-weight:700;box-shadow:0 4px 10px #00000026}.chip.placed{cursor:default}.chip.selected{outline:3px solid color-mix(in srgb, var(--accent) 45%, #fff);outline-offset:2px;filter:brightness(1.08)}.chip-tray{flex-wrap:wrap;gap:8px;min-height:44px;margin-top:12px;display:flex}.chip-tray.over{outline:2px dashed var(--accent);border-radius:12px}.result{text-align:center}.result .score{color:var(--accent);font-size:3rem;font-weight:900}.stars{letter-spacing:6px;font-size:2rem}.setting-row{border-bottom:1px solid var(--border);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;padding:12px 0;display:flex}.setting-row:last-child{border-bottom:none}select{border:1px solid var(--border);background:var(--surface-2);min-height:44px;color:var(--text);border-radius:10px;padding:8px 12px;font-family:inherit;font-size:1em}.switch{border:1px solid var(--border);background-clip:content-box;background:var(--surface-2);border-radius:999px;width:52px;height:30px;min-height:44px;padding:7px 0;transition:background .15s;position:relative}.switch.on{background:var(--accent);border-color:#0000}.switch:after{content:"";background:#fff;border-radius:50%;width:22px;height:22px;transition:transform .15s;position:absolute;top:3px;left:3px}.switch.on:after{transform:translate(22px)}.timer-wrap{text-align:center}.timer-display{color:var(--accent);font-variant-numeric:tabular-nums;font-size:4.5rem;font-weight:900}.time-buttons{flex-wrap:wrap;justify-content:center;gap:10px;display:flex}.toast{z-index:48;background:var(--surface);max-width:360px;color:var(--text);border:2px solid var(--brand);box-shadow:var(--shadow);border-radius:16px;align-items:center;gap:14px;padding:14px 16px;animation:.3s toast-in;display:flex;position:fixed;bottom:88px;right:20px}.toast-body{align-items:center;gap:12px;display:flex}.toast-emoji{font-size:1.9rem;line-height:1}.toast-title{font-weight:800}.toast-text{color:var(--text-soft);font-size:.92em}.toast-actions{align-items:center;gap:8px;margin-left:auto;display:flex}.toast-view{padding:6px 12px}.toast-close{color:var(--text-soft);cursor:pointer;background:0 0;border:none;border-radius:8px;padding:4px 6px;font-size:1.1rem;line-height:1}.toast-close:hover{background:var(--surface-2);color:var(--text)}@keyframes toast-in{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@media (width<=560px){.toast{flex-wrap:wrap;max-width:none;margin:0 0 14px;animation:none;position:static;bottom:auto;left:auto;right:auto}.toast-body{flex:220px}.toast-actions{flex:none}}.break-over-backdrop{z-index:55}.break-over-modal{text-align:center;border:2px solid var(--accent);max-width:420px;animation:.28s break-pop}.break-over-emoji{margin-bottom:6px;font-size:4rem;line-height:1;animation:.9s ease-in-out infinite break-wiggle;display:inline-block}@keyframes break-pop{0%{opacity:0;transform:scale(.85)}to{opacity:1;transform:scale(1)}}@keyframes break-wiggle{0%,to{transform:rotate(-9deg)}50%{transform:rotate(9deg)}}.schedule-item{border:1px solid var(--border);background:var(--surface);border-radius:14px;grid-template-columns:58px minmax(235px,.8fr) minmax(430px,1.8fr) auto;align-items:center;gap:16px;min-height:92px;margin-bottom:10px;padding:15px 18px;display:grid}.schedule-item.now{border-color:var(--accent);box-shadow:0 0 0 2px color-mix(in srgb, var(--accent) 40%, transparent)}.schedule-emoji{font-size:2rem;line-height:1}.schedule-time{white-space:nowrap;min-width:0;font-size:1.224rem;font-weight:800}.sched-when{grid-template-columns:40px minmax(160px,1fr) 52px;grid-template-areas:"emoji time now"".name name";align-items:center;gap:4px 9px;min-width:0;display:grid}.sched-when .schedule-emoji{grid-area:emoji}.sched-when .schedule-time{grid-area:time}.sched-when .sched-now-slot{grid-area:now}.schedule-activity{min-width:0;color:var(--text);overflow-wrap:anywhere;grid-area:name;font-size:1.05rem;font-weight:700;line-height:1.35}.sched-now-slot{justify-content:flex-start;width:52px;display:flex}.sched-controls{grid-template-columns:minmax(110px,.75fr) minmax(110px,.75fr) minmax(180px,1.35fr);align-items:flex-end;gap:12px;min-width:0;display:grid}.sched-ctl{min-width:0;color:var(--text-soft);gap:5px;font-size:1.08rem;font-weight:700;display:grid}.sched-ctl select{width:100%;min-width:0;min-height:44px;font-size:1.2rem;font-weight:650}.sched-custom{width:100%;min-width:0;min-height:44px;font-size:1.2rem}.sched-custom.needs-name{border-color:var(--warn,var(--bad))}.sched-custom-wrap{flex-wrap:wrap;grid-column:1/-1;align-items:center;gap:10px;width:100%;min-width:0;display:flex}.sched-custom-wrap .sched-custom{flex:260px;min-width:0}.sched-custom-ok{white-space:nowrap;flex:none;min-height:44px;padding:8px 18px;font-weight:800}.sched-custom-note{color:var(--text-soft);flex:100%;font-size:.92rem;line-height:1.45}.sched-custom-done{gap:8px}.sched-custom-edit{white-space:nowrap;min-height:40px}.sched-custom-done .sched-custom-note{flex:0 auto}.sched-ctl-activity{position:relative}.sched-activity-btn{border:2px solid var(--border);background:var(--surface-2);width:100%;min-width:0;min-height:44px;color:var(--text);font:inherit;text-align:left;cursor:pointer;border-radius:12px;align-items:center;gap:8px;padding:9px 12px;font-size:1.2rem;font-weight:650;display:flex}.sched-activity-btn:hover{border-color:var(--accent)}.sched-activity-btn-text{white-space:normal;overflow-wrap:anywhere;flex:1;min-width:0;line-height:1.3}.sched-activity-caret{opacity:.65;flex:none}.sched-activity-menu{z-index:30;border:2px solid var(--accent);background:var(--surface);border-radius:12px;gap:2px;width:max(260px,100%);max-height:320px;padding:8px;display:grid;position:absolute;top:100%;right:0;overflow-y:auto;box-shadow:0 12px 30px #0000002e}.sched-activity-group{gap:2px;display:grid}.sched-activity-group-label{text-transform:uppercase;letter-spacing:.04em;color:var(--text-soft);padding:6px 8px 2px;font-size:.85rem;font-weight:800}.sched-activity-opt{width:100%;color:var(--text);font:inherit;text-align:left;white-space:normal;overflow-wrap:anywhere;cursor:pointer;background:0 0;border:2px solid #0000;border-radius:10px;padding:10px 12px;font-size:1.06rem;font-weight:650;line-height:1.35}.sched-activity-opt:hover{background:var(--surface-2);border-color:var(--accent)}.sched-activity-opt.on{border-color:var(--brand);background:color-mix(in srgb, var(--brand) 14%, var(--surface))}.sched-del{border:1px solid var(--border);background:var(--surface-2);color:var(--text);border-radius:10px;padding:8px 11px;font-size:1.2rem}.sched-del:hover{border-color:var(--bad)}.sched-del.confirming{color:#fff;background:linear-gradient(120deg,#f59e0b,#f97316);border-color:#0000;font-weight:800;animation:1.1s ease-in-out infinite confirm-pulse}.sched-check-wrap{flex-direction:column;flex:none;align-items:center;gap:5px;display:flex}.sched-check-label{color:var(--text-soft);font-size:1.056rem;font-weight:700;line-height:1}.schedule-item.done .sched-check-label{color:var(--good)}.sched-check{border:2px solid var(--border);background:var(--surface);width:44px;height:44px;color:var(--good);cursor:pointer;border-radius:50%;flex:none;justify-content:center;align-items:center;font-size:1.5rem;font-weight:900;line-height:1;transition:background .15s,border-color .15s,transform .1s;display:flex}.sched-check:hover{border-color:var(--good)}.sched-check:active{transform:scale(.92)}.sched-check.on{background:var(--good);border-color:var(--good);color:#fff}.schedule-item.done{background:color-mix(in srgb, var(--good) 9%, var(--surface));border-color:color-mix(in srgb, var(--good) 30%, var(--border))}.schedule-item.done .sched-when,.schedule-item.done .sched-controls{opacity:.58}.schedule-item.done .schedule-time,.schedule-item.done .schedule-activity{text-decoration:line-through}.cal-done-bar{border-bottom:1px solid var(--border);align-items:center;gap:10px;margin-bottom:12px;padding-bottom:10px;display:flex}.cal-done-count{color:var(--text-soft);font-size:1.176rem;font-weight:750}@media (width<=900px){.schedule-item{grid-template-columns:58px minmax(0,1fr) auto}.sched-when{grid-column:2}.sched-controls{grid-column:2/-1;grid-template-columns:minmax(110px,.8fr) minmax(110px,.8fr) minmax(180px,1.4fr)}.sched-del{grid-area:1/3}}@media (width<=600px){.schedule-item{grid-template-columns:44px minmax(0,1fr);gap:12px 6px;min-height:92px;padding:16px 14px}.sched-check-wrap{grid-area:1/1}.sched-when{grid-area:1/2;grid-template-columns:24px minmax(0,1fr);grid-template-areas:"emoji time""name name""now now";gap:4px}.schedule-activity{padding-left:28px}.schedule-emoji{font-size:1.5rem}.sched-now-slot{width:auto;padding-left:28px}.schedule-time{white-space:normal}.sched-controls{grid-column:1/-1;grid-template-columns:minmax(0,1fr) minmax(0,1fr)}.sched-ctl-activity{grid-column:1/-1}.sched-del{grid-area:auto/1/auto/-1;width:100%}.cal-done-bar{flex-wrap:wrap;align-items:flex-start}.cal-done-bar .spacer{display:none}}.game-frame{z-index:60;background:var(--bg);flex-direction:column;display:flex;position:fixed;inset:0}.game-frame-bar{background:linear-gradient(120deg, var(--brand), var(--brand-2));color:var(--on-brand);flex-wrap:wrap;align-items:center;gap:12px;padding:10px 14px;display:flex}.game-frame-bar strong{color:#fff}.game-frame-iframe{background:#fff;border:0;flex:1;width:100%}.modal-backdrop{z-index:65;background:#00000080;justify-content:center;align-items:center;padding:18px;display:flex;position:fixed;inset:0}.modal{background:var(--surface);color:var(--text);border-radius:var(--radius);width:100%;max-width:640px;max-height:85vh;box-shadow:var(--shadow);padding:24px;overflow:auto}.modal h2{margin-top:0}.modal ul{padding-left:20px}.modal li{margin-bottom:6px}@media (width<=560px){.lesson-chunk{flex-direction:column}.match-grid{grid-template-columns:1fr}.banner{gap:8px;padding:8px 12px}.brand{min-height:44px;padding:7px 12px;font-size:1em}.nav{gap:5px}.nav button{justify-content:center;min-width:44px;min-height:44px;padding:8px 9px}.nav-ico{font-size:1.3em}.nav-label{display:none}.scene{aspect-ratio:5/4.4;max-width:100%;min-height:300px}.station{gap:2px;min-width:60px;padding:8px 6px}.station .st-emoji{font-size:1.4rem}.station .st-label{font-size:.74rem}.station .st-sub{display:none}.station.whiteboard{min-width:108px}.station.bookshelf{left:3%}.station.computer{right:3%}}@media (width<=360px){.station{min-width:52px;padding:6px 4px}.station .st-emoji{font-size:1.2rem}.station .st-label{font-size:.66rem}.station.whiteboard{min-width:92px}.station.bookshelf{left:1%}.station.computer{right:1%}}.login-screen{background:linear-gradient(160deg, var(--bg), var(--bg-2));justify-content:center;align-items:center;min-height:100dvh;padding:24px;display:flex}.login-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);width:100%;max-width:420px;box-shadow:var(--shadow);border-top:6px solid var(--brand);text-align:center;padding:30px 28px 22px}.login-emoji{margin-bottom:6px;font-size:3rem;line-height:1}.login-title{margin:4px 0 2px;font-size:1.7rem}.login-sub{color:var(--text-soft);margin:0 0 18px}.login-label{text-align:left;margin-bottom:6px;font-weight:700;display:block}.login-input{border:2px solid var(--border);background:var(--surface-2);width:100%;color:var(--text);border-radius:12px;padding:12px 14px;font-size:1.15rem}.login-input:focus{border-color:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb, var(--accent) 30%, transparent);outline:none}.login-btn{width:100%;margin-top:14px;padding:12px 14px;font-size:1.1rem}.login-error{margin-top:12px}.login-hint{color:var(--text-soft);margin:18px 0 0;font-size:.9em}.login-version{color:var(--text-soft);opacity:.85;margin-top:14px;font-size:.8em}.passcode-form{margin:6px 0 4px}.passcode-fields{flex-wrap:wrap;gap:12px;margin-bottom:12px;display:flex}.passcode-field{flex-direction:column;flex:180px;gap:4px;display:flex}.passcode-field span{font-size:.9em;font-weight:700}.passcode-field input{border:2px solid var(--border);background:var(--surface-2);color:var(--text);border-radius:10px;padding:10px 12px;font-size:1rem}.passcode-field input:focus{border-color:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb, var(--accent) 30%, transparent);outline:none}.auth-seg{margin:4px 0 16px}.auth-form{text-align:left}.auth-form .login-label{margin-top:14px}.auth-form .login-label:first-child{margin-top:0}.auth-code{text-align:center;letter-spacing:.4em;font-size:1.5rem;font-weight:700}.auth-links{justify-content:space-between;margin-top:12px;display:flex}.linklike{color:var(--link);font:inherit;cursor:pointer;background:0 0;border:none;padding:0;font-weight:700;text-decoration:underline}.linklike:disabled{opacity:.5;cursor:default}.pill.warn{color:var(--warn-ink);border-color:color-mix(in srgb, #f59e0b 45%, var(--border));background:var(--warn-bg)}.calendar-hint{color:var(--text-soft);margin:10px 0 0;font-size:.92em}.cal-notice{color:var(--warn-ink);background:var(--warn-bg);border:1px solid color-mix(in srgb, #f59e0b 45%, var(--border));border-radius:12px;align-items:flex-start;gap:10px;padding:10px 12px;font-size:.92em;display:flex}.cal-notice-body{flex:1}.cal-notice-x{color:inherit;cursor:pointer;opacity:.75;background:0 0;border:none;padding:2px 4px;font-size:1em;font-weight:700;line-height:1}.cal-notice-x:hover{opacity:1}.footer-disclaimer{max-width:640px;color:var(--text-soft);margin:6px auto 0;font-size:.82em;line-height:1.4}.login-disclaimer{color:var(--text-soft);opacity:.85;margin:10px 0 0;font-size:.72rem;line-height:1.4}.agree-row{text-align:left;color:var(--text-soft);align-items:flex-start;gap:10px;margin-top:16px;font-size:.82rem;line-height:1.45;display:flex}.agree-row input[type=checkbox]{width:18px;height:18px;accent-color:var(--accent);flex:none;margin-top:3px}.disclaimer-banner{background:color-mix(in srgb, #f59e0b 12%, var(--surface));border:1px solid color-mix(in srgb, #f59e0b 40%, var(--border));border-radius:12px;align-items:flex-start;gap:10px;margin-bottom:18px;padding:12px 14px;display:flex}.disclaimer-banner-icon{font-size:1.1rem;line-height:1.5}.disclaimer-banner-text{color:var(--text);flex:1;margin:0;font-size:.88rem;line-height:1.5}.disclaimer-banner-close{border:1px solid var(--border);background:var(--surface);color:var(--text);cursor:pointer;border-radius:999px;flex:none;align-self:center;min-height:44px;padding:6px 14px;font-weight:700}.disclaimer-banner-close:hover{background:var(--surface-2)}.help-disclaimer{border:1px solid var(--border);background:var(--surface-2);border-left:4px solid #f59e0b;border-radius:10px;margin-top:18px;padding:12px 16px}.help-disclaimer h3{margin:4px 0 8px;font-size:1rem}.help-disclaimer ul{margin:0;padding-left:18px}.help-disclaimer li{color:var(--text-soft);margin-bottom:8px;font-size:.86rem;line-height:1.5}@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}.game-frame-summary{background:color-mix(in srgb, var(--accent) 12%, var(--surface));color:var(--text);border-bottom:1px solid var(--border);padding:8px 14px;font-size:.95rem}.cal-add-row{flex-wrap:wrap;gap:10px;margin-top:4px;display:flex}.cal-add-row .btn{flex:240px;font-weight:700}.cal-add-append{background:color-mix(in srgb, #22c55e 16%, var(--surface));border-color:color-mix(in srgb, #22c55e 42%, var(--border));color:color-mix(in srgb, #15803d 78%, var(--text))}.cal-add-append:hover:not(:disabled){background:color-mix(in srgb, #22c55e 26%, var(--surface))}.cal-add-chosen{background:color-mix(in srgb, #3b82f6 16%, var(--surface));border-color:color-mix(in srgb, #3b82f6 42%, var(--border));color:color-mix(in srgb, #1d4ed8 78%, var(--text))}.cal-add-chosen:hover:not(:disabled){background:color-mix(in srgb, #3b82f6 26%, var(--surface))}.cal-add-row .btn:disabled{opacity:.5;cursor:not-allowed}.cal-add-note{color:var(--text-soft);margin:8px 0 0;font-size:.92rem}.cal-slot-picker{border:1px solid color-mix(in srgb, #3b82f6 35%, var(--border));background:color-mix(in srgb, #3b82f6 8%, var(--surface));border-radius:12px;flex-wrap:wrap;align-items:center;gap:10px;margin-top:10px;padding:10px 12px;display:flex}.cal-slot-label{margin-right:8px;font-weight:700}.cal-slot-select{font:inherit;border:1px solid var(--border);background:var(--surface);color:var(--text);border-radius:10px;padding:8px 10px}.cal-danger-zone{border-top:1px dashed color-mix(in srgb, #ef4444 40%, var(--border));margin-top:22px;padding-top:14px}.cal-clear-all{background:color-mix(in srgb, #ef4444 14%, var(--surface));border-color:color-mix(in srgb, #ef4444 45%, var(--border));color:color-mix(in srgb, #b91c1c 80%, var(--text));letter-spacing:.01em;font-weight:800}.cal-clear-all:hover:not(:disabled){background:color-mix(in srgb, #ef4444 24%, var(--surface))}.cal-clear-all.confirming{color:#fff;background:#b91c1c;border-color:#7f1d1d}@media (width<=560px){.cal-add-row .btn{flex:100%}.cal-slot-picker{align-items:stretch}.cal-slot-select{width:100%}}.exercise-picker{grid-template-columns:1fr 1fr;gap:12px;margin-bottom:14px;display:grid}.exercise-tile{text-align:left;border:2px solid var(--border);background:var(--surface-2);color:var(--text);cursor:pointer;border-radius:14px;flex-direction:column;align-items:flex-start;gap:2px;padding:14px 16px;display:flex}.exercise-tile:hover{border-color:var(--accent)}.exercise-tile.on{border-color:var(--brand);background:color-mix(in srgb, var(--brand) 12%, var(--surface))}.exercise-tile-emoji{font-size:1.6rem;line-height:1.2}.exercise-tile-title{font-weight:800}.exercise-tile-desc{color:var(--text-soft);font-size:.85rem}@media (width<=560px){.exercise-picker{grid-template-columns:1fr}}.storymath-passage{border:2px solid var(--border);background:var(--surface-2);border-radius:14px;margin:4px 0 16px;padding:14px 16px;font-size:clamp(1.05rem,3.4vw,1.35rem);line-height:1.65}.storymath-step{margin-bottom:16px}.storymath-step-label{align-items:center;gap:8px;margin-bottom:8px;font-weight:700;display:flex}.storymath-step-num{background:var(--brand);width:1.6em;height:1.6em;color:var(--on-brand);border-radius:50%;place-items:center;font-size:.85rem;font-weight:800;display:inline-grid}.storymath-hint{color:var(--text-soft);font-weight:500}.storymath-step.is-locked{opacity:.45}.storymath-ops{flex-wrap:wrap;gap:10px;display:flex}.storymath-op{padding:12px 18px;font-size:1.05rem;font-weight:700}.storymath-op.op-right{border-color:var(--good);background:color-mix(in srgb, var(--good) 20%, var(--surface))}.storymath-op.op-wrong{border-color:var(--bad);background:color-mix(in srgb, var(--bad) 20%, var(--surface))}.storymath-opfeedback,.storymath-result{min-height:1.8em;margin-top:8px;font-weight:700}.storymath-result{text-align:center}.storymath-choices{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;max-width:360px;display:grid}.storymath-choices .option{text-align:center;font-size:1.15rem}.storymath-entry{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.storymath-entry .fill-input{max-width:190px;font-size:1.15rem}
