@font-face{font-family:Lexend;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/lexend-latin-400-normal-CwRJVcUA.woff2)format("woff2"),url(/assets/lexend-latin-400-normal-CHypAkT3.woff)format("woff")}@font-face{font-family:Lexend;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/lexend-latin-500-normal-Dl-X5nog.woff2)format("woff2"),url(/assets/lexend-latin-500-normal-D9x1QWTH.woff)format("woff")}@font-face{font-family:Lexend;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/lexend-latin-600-normal-DdvlkEkX.woff2)format("woff2"),url(/assets/lexend-latin-600-normal-DSBzZxpA.woff)format("woff")}@font-face{font-family:Lexend;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/lexend-latin-700-normal-DqO8md6r.woff2)format("woff2"),url(/assets/lexend-latin-700-normal-DVyJlN8t.woff)format("woff")}:root{--bg:#f1f5ee;--surface:#fff;--surface-sunken:#f7faf5;--ink:#1e3328;--ink-muted:#4c6355;--primary:#2f7a4f;--sprout:#9cc9a6;--accent:#e9a23b;--track:#dce6d6;--not-started:#e4ebe0;--fast-bg:#e6f1e8;--slow-bg:#fbebd0;--miss:#a33a25;--miss-ink:#7a2a1a;--line:#c9d8c3;--control-border:#6f8a76;--focus:#1e3328}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%}body{background:var(--bg);min-height:100vh;color:var(--ink);margin:0;font-family:Lexend,system-ui,sans-serif;font-size:18px;line-height:1.55}h1,h2,h3{margin:0;font-weight:600;line-height:1.2}p{margin:0}a{color:var(--primary);text-underline-offset:3px}a:hover{color:var(--ink)}button{font:inherit;color:inherit}:focus-visible{outline:3px solid var(--focus);outline-offset:3px}.visually-hidden{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.icon{fill:none;stroke:currentColor;stroke-width:2px;stroke-linecap:round;stroke-linejoin:round;flex:none;width:24px;height:24px}.button{border:2px solid var(--primary);background:var(--primary);color:#fff;cursor:pointer;border-radius:20px;justify-content:center;align-items:center;gap:12px;min-height:56px;padding:12px 32px;font-size:20px;font-weight:600;text-decoration:none;transition:background-color .15s ease-out;display:inline-flex}.button:hover{background:var(--ink);border-color:var(--ink);color:#fff}.button--secondary{background:var(--surface);border-color:var(--control-border);color:var(--ink)}.button--secondary:hover{background:var(--surface-sunken);border-color:var(--ink);color:var(--ink)}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}.app{flex-direction:column;gap:20px;max-width:1920px;min-height:100vh;margin:0 auto;padding:16px;display:flex}@media (width>=900px){.app{padding:24px 32px}}.app-bar{align-items:center;gap:16px;display:flex}.icon-button{background:var(--surface);width:52px;height:52px;color:var(--ink);cursor:pointer;border:0;border-radius:16px;justify-content:center;align-items:center;display:inline-flex}.icon-button .icon{width:26px;height:26px}.screen{background:var(--surface);text-align:center;border-radius:32px;flex-direction:column;flex:1;justify-content:center;align-items:center;gap:24px;padding:40px 24px;display:flex}.screen h1{font-size:clamp(28px,4vw,40px)}.screen h1:focus{outline:none}.screen .note{max-width:40ch;color:var(--ink-muted)}.tiles{flex-wrap:wrap;justify-content:center;gap:16px;display:flex}.tile{border:2px solid var(--control-border);background:var(--bg);min-width:140px;min-height:120px;color:var(--ink);cursor:pointer;border-radius:24px;flex-direction:column;justify-content:center;align-items:center;gap:4px;padding:16px 24px;font-size:20px;font-weight:600;text-decoration:none;display:inline-flex}.tile:hover{border-color:var(--ink)}.tile .big{font-size:44px;line-height:1}.links{flex-wrap:wrap;justify-content:center;gap:8px 24px;display:flex}.links a{align-items:center;min-height:48px;display:inline-flex}.app>main{flex-direction:column;flex:1;display:flex}.avatar{border-radius:50%;flex:none;justify-content:center;align-items:center;display:inline-flex}.player-chip{background:var(--surface);border-radius:16px;align-items:center;gap:12px;padding:6px 18px 6px 6px;display:flex}.player-chip-text{flex-direction:column;line-height:1.15;display:flex}.player-name{font-size:17px;font-weight:600}.player-grade{color:var(--ink-muted);font-size:13px}.muted{color:var(--ink-muted)}.eyebrow{color:var(--ink-muted);text-transform:uppercase;letter-spacing:.06em;margin:0;font-size:16px;font-weight:500}.practice{flex-direction:column;flex:1;gap:20px;display:flex}.top-bar{align-items:center;gap:16px;display:flex}.progress{flex:1;align-items:center;gap:14px;min-width:0;padding:0 12px;display:flex}.progress-track{background:var(--track);border-radius:7px;flex:1;height:14px;overflow:hidden}.progress-fill{background:var(--primary);border-radius:7px;height:100%;transition:width .2s ease-out}.progress-text{color:var(--ink-muted);white-space:nowrap;font-variant-numeric:tabular-nums;font-size:16px;font-weight:500}.practice-main{flex:1;grid-template-columns:1.45fr 1fr;gap:24px;min-height:0;display:grid}.practice-main--single{grid-template-columns:1fr}@media (width<=899px){.practice-main{grid-template-columns:1fr}.player-chip-text{display:none}}.question-card{background:var(--surface);text-align:center;border-radius:32px;flex-direction:column;justify-content:center;align-items:center;gap:28px;padding:40px 48px;display:flex}@media (width<=640px){.question-card{padding:28px 20px}}.prompt{color:var(--ink-muted);margin:0;font-size:18px}.prompt--title{color:var(--ink);font-size:28px}.question-row{flex-wrap:wrap;justify-content:center;align-items:center;gap:28px;display:flex}.expression{letter-spacing:-2px;font-variant-numeric:tabular-nums;margin:0;font-size:clamp(64px,10vw,128px);font-weight:600;line-height:1}.expression:focus{outline:none}.teach .expression,.missed .expression{font-size:clamp(48px,7vw,88px)}.answer-slot{border:4px solid var(--primary);background:var(--surface-sunken);border-radius:28px;justify-content:center;align-items:center;gap:4px;width:220px;height:148px;display:flex}@media (width<=640px){.answer-slot{width:160px;height:112px}}.answer-digits{font-variant-numeric:tabular-nums;font-size:clamp(64px,8vw,104px);font-weight:600;line-height:1}.caret{background:var(--primary);border-radius:2px;width:4px;height:60%}.is-correct .answer-slot{animation:.4s ease-out pulse}@keyframes pulse{50%{transform:scale(1.06)}}.pills{flex-wrap:wrap;justify-content:center;gap:12px;display:flex}.pill{border:2px solid var(--control-border);background:var(--surface);min-height:52px;color:var(--ink);cursor:pointer;border-radius:26px;align-items:center;gap:10px;padding:0 22px;font-size:17px;font-weight:500;display:inline-flex}.pill--primary{border-color:var(--primary);background:var(--primary);color:#fff}.keypad{background:var(--surface);border-radius:32px;grid-template-columns:repeat(3,minmax(0,1fr));grid-auto-rows:minmax(72px,1fr);gap:12px;padding:28px;display:grid}.key{background:var(--bg);color:var(--ink);cursor:pointer;border:0;border-radius:20px;justify-content:center;align-items:center;font-size:38px;font-weight:600;display:flex}.key:disabled{opacity:.55;cursor:default}.key--check{background:var(--primary);color:#fff}.choices{grid-template-columns:repeat(2,minmax(120px,1fr));gap:16px;width:min(100%,480px);display:grid}.choice{border:2px solid var(--control-border);background:var(--bg);min-height:96px;color:var(--ink);cursor:pointer;border-radius:24px;font-size:48px;font-weight:600}.self-mark{flex-wrap:wrap;justify-content:center;gap:16px;display:flex}.missed-note,.lesson-rule{margin:0;font-size:20px}.hint{flex-direction:column;align-items:center;gap:16px;width:100%;display:flex}.hint-text{margin:0;font-size:19px;font-weight:500}.hint-body{flex-wrap:wrap;justify-content:center;align-items:center;gap:24px;display:flex}.dots{flex-direction:column;gap:4px;display:flex}.dot-row{gap:4px;display:flex}.dot-row.gap{margin-top:8px}.dot-row span{background:var(--primary);border-radius:50%;width:14px;height:14px}.dot-row.p2 span{background:var(--accent)}.dot-row.minus span{background:repeating-linear-gradient(45deg, var(--accent) 0 3px, var(--surface) 3px 6px);border:1px solid var(--ink)}.equations{text-align:left;font-variant-numeric:tabular-nums;flex-direction:column;gap:8px;margin:0;padding:0;font-size:22px;font-weight:600;list-style:none;display:flex}.equations li{align-items:center;gap:10px;display:flex}.equations .swatch{background:var(--primary);border-radius:50%;width:16px;height:16px}.equations .p2 .swatch{background:var(--accent)}.equations .total{border-top:2px solid var(--line);padding-top:8px}.remember{background:var(--fast-bg);border-radius:20px;padding:16px 28px}.remember-label{color:var(--ink-muted);margin:0;font-size:15px}.remember-fact{margin:4px 0 0;font-size:30px;font-weight:600}.garden-strip{background:var(--surface);border-radius:24px;flex-wrap:wrap;align-items:center;gap:16px 28px;padding:16px 24px;display:flex}.mini-garden{grid-template-columns:repeat(12,8px);gap:2px;display:grid}.cell{background:var(--track);border-radius:2px;width:8px;height:8px}.cell--sprout{background:var(--sprout)}.cell--bloom{background:var(--primary)}.cell--new{background:var(--accent)}.cell--out{outline:1px dashed var(--line);outline-offset:-1px;background:0 0}.garden-strip-text{flex-direction:column;gap:4px;display:flex}.garden-strip-title{font-size:20px;font-weight:600}.garden-strip-sub{color:var(--ink-muted);font-size:15px}.player-tiles{margin:0;padding:0;list-style:none}.player-tile{flex-direction:column;align-items:center;gap:4px;display:flex}.tile-sub{color:var(--ink-muted);font-size:15px;font-weight:500}.tile-menu{align-items:center;gap:6px;min-width:48px;min-height:48px;padding:0 12px;font-size:15px;display:inline-flex}.form-screen{justify-content:flex-start}.player-form{text-align:left;flex-direction:column;gap:24px;width:min(100%,640px);display:flex}.field{border:0;flex-direction:column;gap:8px;margin:0;padding:0;display:flex}.field-label{padding:0;font-size:18px;font-weight:600}.field-hint{color:var(--ink-muted);font-size:15px}.field input[type=text]{border:2px solid var(--control-border);background:var(--surface);min-height:52px;color:var(--ink);font:inherit;border-radius:16px;padding:8px 16px;font-size:20px}.inline-field{flex-wrap:wrap;gap:12px;display:flex}.inline-field input{flex:1;min-width:0}.option-row{flex-wrap:wrap;gap:12px;display:flex}.option{background:var(--bg);cursor:pointer;border:3px solid #0000;border-radius:20px;justify-content:center;align-items:center;min-width:64px;min-height:64px;display:inline-flex;position:relative}.option input{opacity:0;cursor:pointer;margin:0;position:absolute;inset:0}.option:has(input:checked){border-color:var(--ink)}.option:has(input:focus-visible){outline:3px solid var(--focus);outline-offset:3px}.option--text{padding:0 20px;font-size:18px;font-weight:600}.swatch-big{border-radius:50%;width:40px;height:40px}.form-actions{flex-wrap:wrap;gap:12px;display:flex}.button:disabled{opacity:.5;cursor:default}.results{flex-direction:column;flex:1;gap:18px;display:flex}.results-head{flex-wrap:wrap;align-items:center;gap:16px;display:flex}.results-head h1{margin-left:8px;font-size:30px}.stats{grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;display:grid}@media (width<=899px){.stats{grid-template-columns:repeat(2,minmax(0,1fr))}}.stat{background:var(--surface);border-radius:24px;flex-direction:column;gap:4px;padding:18px 22px;display:flex}.stat-label{color:var(--ink-muted);font-size:14px}.stat-value{font-variant-numeric:tabular-nums;font-size:40px;font-weight:600;line-height:1.1}.stat-value small{color:var(--ink-muted);font-size:20px;font-weight:500}.results-main{flex:1;grid-template-columns:1.7fr 1fr;gap:18px;display:grid}@media (width<=899px){.results-main{grid-template-columns:1fr}}.panel{background:var(--surface);border-radius:28px;flex-direction:column;gap:12px;padding:22px 24px;display:flex}.panel h2{font-size:20px}.panel-head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;display:flex}.legend{color:var(--ink-muted);flex-wrap:wrap;gap:8px 18px;margin:0;padding:0;font-size:14px;list-style:none;display:flex}.legend li{align-items:center;gap:6px;display:flex}.tile-swatch{border:2px solid;border-radius:4px;width:14px;height:14px}.tile-swatch--fast{border-color:var(--sprout);background:var(--fast-bg)}.tile-swatch--slow{border-color:var(--accent);background:var(--slow-bg)}.tile-swatch--missed{border-color:var(--miss)}.q-tiles{grid-template-columns:repeat(5,minmax(0,1fr));gap:10px;margin:0;padding:0;list-style:none;display:grid}@media (width<=640px){.q-tiles{grid-template-columns:repeat(2,minmax(0,1fr))}}.q-tile{border:2px solid;border-radius:14px;flex-direction:column;gap:2px;padding:8px 12px;display:flex}.q-tile--fast{border-color:var(--sprout);background:var(--fast-bg)}.q-tile--slow{border-color:var(--accent);background:var(--slow-bg)}.q-tile--missed{border-color:var(--miss);background:var(--surface);color:var(--miss-ink)}.q-fact{font-size:19px;font-weight:600}.q-note{align-items:center;gap:4px;font-size:13px;font-weight:500;display:flex}.results-side{flex-direction:column;gap:18px;display:flex}.next-list{flex-direction:column;gap:8px;margin:0;padding:0;list-style:none;display:flex}.next-list li{background:var(--bg);border-radius:14px;padding:12px 16px}.next-fact{font-size:22px;font-weight:600}.results-actions{gap:12px;display:flex}.results-actions .button{flex:1;min-height:64px;font-size:18px}.garden-screen{justify-content:flex-start}.segmented{background:var(--bg);border-radius:16px;padding:4px;display:inline-flex}.segmented button{min-height:48px;color:var(--ink);cursor:pointer;background:0 0;border:0;border-radius:12px;padding:0 20px;font-weight:600}.segmented button[aria-pressed=true]{background:var(--surface);box-shadow:0 0 0 2px var(--control-border)}.garden-grid{grid-template-columns:repeat(12,minmax(0,36px));gap:4px;max-width:100%;display:grid}.g-cell{aspect-ratio:1;border:2px solid var(--control-border);background:var(--surface);color:var(--ink);border-radius:8px;justify-content:center;align-items:center;font-size:11px;font-weight:600;display:flex;position:relative}.g-cell .icon{width:12px;height:12px;position:absolute;top:1px;right:1px}.g-cell--sprout{border-color:var(--sprout);background:var(--fast-bg)}.g-cell--new{border-color:var(--accent);background:var(--slow-bg)}.g-cell--bloom{border-color:var(--primary);background:var(--primary);color:#fff}.g-cell--out{border:1px dashed var(--line);color:#0000}.g-dot{background:var(--ink);border-radius:50%;width:6px;height:6px;position:absolute;top:3px;right:3px}.g-cell--key{width:24px;height:24px}.legend--garden{justify-content:center;font-size:15px}.table-wrap{max-width:100%;overflow-x:auto}.garden-table{border-collapse:collapse;font-variant-numeric:tabular-nums}.garden-table th,.garden-table td{border-bottom:1px solid var(--line);text-align:center;padding:8px 16px}@media (prefers-reduced-motion:reduce){.is-correct .answer-slot{animation:none}}h1[tabindex="-1"]:focus,.expression[tabindex="-1"]:focus{outline:none}.strip-legend{color:var(--ink-muted);flex-wrap:wrap;gap:8px 20px;margin:0 0 0 auto;padding:0;font-size:14px;list-style:none;display:flex}.strip-legend li{align-items:center;gap:8px;display:flex}.strip-legend .cell{border-radius:3px;width:14px;height:14px}.app-handoff{flex-direction:column;flex:1;gap:20px;display:flex}.option--player{gap:10px;padding:8px 18px 8px 10px;font-size:18px;font-weight:600}.option--player .field-hint{margin-left:4px}.option--off{opacity:.75;border-style:dashed}.option-check{font-weight:700}.handoff-last{margin:0;font-size:20px}.button--big{min-height:72px;padding:0 40px;font-size:24px}.score-list,.scores{text-align:left;flex-direction:column;gap:10px;width:100%;max-width:520px;margin:0;padding:0;list-style:none;display:flex}.score-list li{align-items:center;gap:10px;font-size:18px;display:flex}.score-row{border:2px solid var(--line);border-radius:20px;flex-wrap:wrap;align-items:center;gap:14px;padding:14px 18px;display:flex}.score-row--win{border-color:var(--primary);background:var(--fast-bg)}.score-name{overflow-wrap:anywhere;flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.score-moment{color:var(--ink-muted);font-size:15px}.score-badge{align-items:center;gap:4px;font-weight:700;display:inline-flex}.score-points{font-variant-numeric:tabular-nums;margin-left:auto;font-size:22px;font-weight:700}.gate-hold{touch-action:none;-webkit-user-select:none;user-select:none;flex-direction:column;gap:8px;min-height:140px;padding:16px 28px}.gate-ring{transform:rotate(-90deg)}.gate-ring circle{fill:none;stroke-width:6px}.gate-ring-track{stroke:var(--track)}.gate-ring-fill{stroke:var(--primary);stroke-linecap:round}.gate-or{color:var(--ink-muted);margin:0}.gate-fact{text-align:left;width:100%;max-width:420px}.parent{flex-direction:column;gap:20px;display:flex}.parent-head{flex:none;padding:28px 24px}.lock-chip{background:var(--bg);color:var(--ink-muted);border-radius:14px;align-items:center;gap:6px;margin:0;padding:6px 12px;font-size:14px;display:inline-flex}.notice{border:2px solid var(--accent);background:var(--slow-bg);max-width:640px;color:var(--ink);border-radius:16px;margin:0;padding:12px 16px}.parent-progress{grid-template-columns:minmax(0,auto) minmax(0,1fr);gap:20px;display:grid}.parent-progress>.panel:first-child{grid-row:span 2}.parent .panel select{border:2px solid var(--control-border);background:var(--surface);min-height:52px;color:var(--ink);font:inherit;border-radius:16px;padding:8px 16px;font-size:18px}.parent-grid{border-collapse:separate;border-spacing:4px;font-size:12px}.parent-grid th{color:var(--ink-muted);font-weight:600}.p-cell{text-align:center;border-radius:7px;min-width:34px;height:34px;font-weight:500;position:relative}.p-cell--mastered{background:var(--primary);color:#fff}.p-cell--fast{background:var(--sprout);color:var(--ink)}.p-cell--slow{background:var(--accent);color:var(--ink);font-weight:600}.p-cell--missed{box-shadow:inset 0 0 0 2px var(--miss);background:var(--surface);color:var(--miss-ink);font-weight:700}.p-cell--learning{box-shadow:inset 0 0 0 2px var(--sprout);background:var(--surface);color:var(--ink)}.p-cell--learning:after{content:"";border:2px dashed var(--primary);border-radius:7px;position:absolute;inset:0}.p-cell--none{background:var(--not-started);color:var(--ink-muted);font-weight:400}.p-cell--out{border:1px dashed var(--line);color:var(--ink-muted);opacity:.6}.p-mark{font-size:10px;line-height:1.2;position:absolute;top:0;right:3px}.p-key{border-radius:4px;justify-content:center;align-items:center;width:16px;height:16px;font-size:10px;font-weight:700;display:inline-flex;position:relative}.p-key.p-cell--learning:after{border-radius:4px}.legend--parent{max-width:520px}.table-rows{border-collapse:collapse;width:100%;font-size:15px}.table-rows th,.table-rows td{text-align:right;padding:6px 8px}.table-rows thead th{color:var(--ink-muted);font-size:13px;font-weight:500}.table-rows th:first-child,.table-rows td:nth-child(2){text-align:left}.table-rows td:nth-child(2){width:100%}.bar{background:var(--not-started);border-radius:6px;height:12px;display:block;overflow:hidden}.bar-fill{background:var(--primary);border-radius:6px;height:100%;display:block}.trend{border-bottom:1px solid var(--line);align-items:flex-end;gap:10px;height:110px;margin:0;padding:0;list-style:none;display:flex}.trend li{flex-direction:column;flex:1;align-items:center;gap:4px;display:flex}.trend-label{color:var(--ink-muted);font-size:12px}.trend-bar{background:var(--sprout);border-radius:6px 6px 0 0;width:100%;display:block}.check-row{align-items:center;gap:12px;min-height:48px;font-size:18px;display:flex}.check-row input{width:24px;height:24px;accent-color:var(--primary)}.confirm{border:2px solid var(--miss);text-align:left;border-radius:20px;flex-direction:column;gap:12px;padding:16px;display:flex}.confirm p{margin:0}.button--danger{background:var(--miss)}.button--danger:hover{background:var(--miss-ink)}.code-field{box-sizing:border-box;border:2px solid var(--control-border);background:var(--surface-sunken);width:100%;color:var(--ink);word-break:break-all;resize:vertical;border-radius:16px;padding:12px 16px;font-family:ui-monospace,monospace;font-size:14px}.qr{align-items:center;gap:16px;margin:0;display:flex}.qr canvas{width:180px;height:180px;image-rendering:pixelated}@media (width<=900px){.parent-progress{grid-template-columns:minmax(0,1fr)}.parent-progress>.panel:first-child{grid-row:auto}}.reduce-motion *,.reduce-motion :before,.reduce-motion :after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}
