@font-face{font-family:Nunito Variable;font-style:normal;font-display:swap;font-weight:200 1000;src:url(/assets/nunito-cyrillic-ext-wght-normal-D4X5GqEv.woff2)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Nunito Variable;font-style:normal;font-display:swap;font-weight:200 1000;src:url(/assets/nunito-cyrillic-wght-normal-CY6AOgYE.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Nunito Variable;font-style:normal;font-display:swap;font-weight:200 1000;src:url(/assets/nunito-vietnamese-wght-normal-U01xdrZh.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Nunito Variable;font-style:normal;font-display:swap;font-weight:200 1000;src:url(/assets/nunito-latin-ext-wght-normal-CXYtwYOx.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Nunito Variable;font-style:normal;font-display:swap;font-weight:200 1000;src:url(/assets/nunito-latin-wght-normal-BzFMHfZw.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--font:"Nunito Variable", "Nunito", system-ui, -apple-system, "Segoe UI", sans-serif;--bg:#f7f8fc;--surface:#fff;--ink:#1d2440;--ink-2:#4a5270;--line:#e3e7f1;--primary:#2f7de1;--primary-soft:#e6f0fd;--go:#2f8a57;--go-dark:#24734a;--danger:#d6574a;--tone-blue-bg:#eaf3fe;--tone-blue:#4a90e8;--tone-blue-ink:#1f5fb0;--tone-mint-bg:#e8f6ef;--tone-mint:#4fb383;--tone-mint-ink:#1f7a4c;--tone-coral-bg:#fdeeea;--tone-coral:#ef7f6b;--tone-coral-ink:#b24a38;--tone-violet-bg:#f1ecfd;--tone-violet:#9a7ae6;--tone-violet-ink:#6547b8;--tone-yellow-bg:#fff6df;--tone-yellow:#f2b53a;--tone-yellow-ink:#8a6210;--tone-pink-bg:#fdecf1;--tone-pink:#ea7a9c;--tone-pink-ink:#ad3d62;--radius-s:14px;--radius:22px;--radius-l:30px;--shadow:0 1px 2px #1d24400a, 0 6px 18px #1d24400f;--shadow-lift:0 2px 4px #1d24400d, 0 12px 28px #1d24401a;--tap:56px}.tone-blue{--t-bg:var(--tone-blue-bg);--t:var(--tone-blue);--t-ink:var(--tone-blue-ink)}.tone-mint{--t-bg:var(--tone-mint-bg);--t:var(--tone-mint);--t-ink:var(--tone-mint-ink)}.tone-coral{--t-bg:var(--tone-coral-bg);--t:var(--tone-coral);--t-ink:var(--tone-coral-ink)}.tone-violet{--t-bg:var(--tone-violet-bg);--t:var(--tone-violet);--t-ink:var(--tone-violet-ink)}.tone-yellow{--t-bg:var(--tone-yellow-bg);--t:var(--tone-yellow);--t-ink:var(--tone-yellow-ink)}.tone-pink{--t-bg:var(--tone-pink-bg);--t:var(--tone-pink);--t-ink:var(--tone-pink-ink)}:root{--ok-bg:#e8f6ef;--hint:#f2b53a;--token:#5876a8;--dot:var(--t,#4a90e8);--card-min:120px;--gap-play:clamp(12px, 2vmin, 24px);--prompt-size:clamp(24px, 4vmin, 40px);--pair-0:#4a90e8;--pair-1:#ef7f6b;--pair-2:#4fb383;--pair-3:#9a7ae6;--pair-4:#f2b53a}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{font-family:var(--font);color:var(--ink);background:var(--bg);-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent;margin:0;font-size:18px;line-height:1.4}h1,h2,h3,p{margin:0}a{color:inherit;text-decoration:none}button,input,select{font:inherit;color:inherit}button{cursor:pointer}:focus-visible{outline:3px solid var(--primary);outline-offset:3px;border-radius:12px}.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}.muted{color:var(--ink-2);font-weight:600}.page{max-width:1280px;padding:max(20px, env(safe-area-inset-top)) max(clamp(16px, 3vw, 36px), env(safe-area-inset-right)) max(48px, env(safe-area-inset-bottom)) max(clamp(16px, 3vw, 36px), env(safe-area-inset-left));flex-direction:column;gap:24px;margin:0 auto;display:flex}.section-title{margin-bottom:12px;font-size:24px;font-weight:900}.empty{text-align:center;color:var(--ink-2);background:var(--surface);border-radius:var(--radius);padding:32px;font-weight:600}.notice{background:var(--tone-yellow-bg);color:var(--tone-yellow-ink);border-radius:var(--radius-s);padding:12px 16px;font-size:16px;font-weight:700}.not-found{text-align:center;justify-content:center;align-items:center;min-height:60vh}.app-header{flex-wrap:wrap;align-items:center;gap:24px;min-height:96px;display:flex}.brand-name{letter-spacing:-.02em;align-items:center;gap:14px;font-size:clamp(44px,5vw,60px);font-weight:900;line-height:1;display:inline-flex}.brand-logo{width:auto;height:clamp(46px,5.4vw,64px);display:block}.brand-icon{width:auto;height:clamp(52px,6vw,70px);box-shadow:var(--shadow);border-radius:22%}.brand-sub{color:var(--ink-2);margin-top:4px;font-size:19px;font-weight:600}.offline-badge{background:var(--tone-mint-bg);color:var(--tone-mint-ink);border-radius:999px;align-items:center;gap:8px;margin-left:auto;padding:8px 16px;font-size:15px;font-weight:700;display:inline-flex}.app-header-actions{align-items:center;gap:12px;margin-left:auto;display:flex}.offline-badge+.app-header-actions{margin-left:0}.btn{min-height:var(--tap);border:2px solid #0000;border-radius:18px;justify-content:center;align-items:center;gap:10px;padding:0 26px;font-size:19px;font-weight:800;transition:transform .12s,box-shadow .12s;display:inline-flex}.btn:active{transform:scale(.98)}.btn:disabled{opacity:.45;cursor:default;box-shadow:none}.btn-go{background:var(--go);color:#fff;box-shadow:0 6px 16px #2f8a5740}.btn-go:hover{background:var(--go-dark)}.btn-primary{background:var(--primary);color:#fff}.btn-soft{background:var(--primary-soft);color:#1d5fb8}.btn-outline{background:var(--surface);border-color:var(--line)}.btn-small{min-height:52px;padding:0 20px;font-size:17px}.icon-btn{background:var(--surface);width:60px;height:60px;box-shadow:var(--shadow);border:0;border-radius:50%;flex:none;place-items:center;display:grid}.icon-btn svg{width:28px;height:28px}.tool-btn{border:2px solid var(--line);background:var(--surface);border-radius:18px;justify-content:center;align-items:center;gap:8px;min-width:60px;min-height:60px;padding:0 12px;font-size:16px;font-weight:800;display:inline-flex}.tool-btn svg{width:26px;height:26px}.install-btn{background:var(--primary-soft);color:#1d5fb8;min-height:48px;padding:0 16px;font-size:16px}.update-btn{min-height:48px;padding:0 16px;font-size:16px}.chip{color:var(--ink-2);white-space:nowrap;background:#ffffffd9;border-radius:999px;align-items:center;gap:6px;padding:4px 10px;font-size:14px;font-weight:700;display:inline-flex}.chip.level-1{color:var(--tone-mint-ink)}.chip.level-2{color:var(--tone-yellow-ink)}.chip.level-3{color:var(--tone-coral-ink)}.count-pill{color:var(--ink-2);vertical-align:middle;background:#ffffffe6;border-radius:999px;align-items:center;padding:4px 12px;font-size:15px;font-weight:700;display:inline-flex}.sheet-backdrop{z-index:50;background:#1d244047;place-items:center;padding:16px;animation:.2s fade;display:grid;position:fixed;inset:0}.sheet{background:var(--surface);border-radius:var(--radius-l);width:min(720px,100%);max-height:calc(100dvh - 32px);box-shadow:var(--shadow-lift);flex-direction:column;gap:18px;padding:20px 24px 24px;display:flex;overflow:auto}.sheet-head{justify-content:space-between;align-items:center;gap:12px;display:flex}.sheet-head h2{font-size:28px;font-weight:900}.sheet-head .icon-btn{box-shadow:none;background:var(--bg)}.sheet-row{border-top:2px solid var(--line);flex-direction:column;gap:10px;padding-top:16px;display:flex}.sheet-row h3{font-size:20px;font-weight:900}.sheet-row p{color:var(--ink-2);font-size:16px;font-weight:600}.sheet-note{color:var(--ink-2);font-size:15px;font-weight:600}@keyframes fade{0%{opacity:0}to{opacity:1}}.segmented{flex-wrap:wrap;gap:6px;display:flex}.seg-btn{border:2px solid var(--line);background:var(--surface);min-height:48px;color:var(--ink-2);border-radius:999px;padding:0 18px;font-size:16px;font-weight:700}.seg-btn.is-active{background:var(--primary);border-color:var(--primary);color:#fff}.share-url{border:2px solid var(--line);background:var(--bg);width:100%;height:52px;color:var(--ink-2);border-radius:14px;padding:0 14px;font-size:15px}.share-actions{flex-wrap:wrap;gap:10px;display:flex}.share-actions .btn{flex:180px}.qr-view{text-align:center;flex-direction:column;align-items:center;gap:12px;display:flex}.qr-code{aspect-ratio:1;background:#fff;border-radius:16px;width:min(420px,70vw,55dvh);padding:8px}.qr-code svg{width:100%;height:100%;display:block}.qr-title{font-size:22px;font-weight:900}.install-steps{flex-direction:column;gap:10px;margin:0;padding-left:22px;font-size:18px;font-weight:600;display:flex}@media (width<=760px){.install-btn span{display:none}.install-btn{padding:0 12px}}@media (width<=560px){body{font-size:17px}.app-header{gap:12px;min-height:0}.offline-badge{margin-left:0}.brand-name{font-size:42px}}@media (width>=1600px){.page{max-width:1520px}}@media (width>=2200px){.page{max-width:1900px}body{font-size:20px}}.stepper-row{flex-wrap:wrap;gap:16px;display:flex}.stepper{align-items:center;gap:8px;display:inline-flex}.stepper-label{min-width:28px;font-weight:800}.stepper-btn{border:2px solid var(--line);background:var(--surface);border-radius:50%;width:52px;height:52px;font-size:26px;font-weight:900;line-height:1}.stepper-btn:disabled{opacity:.35;cursor:default}.stepper-value{text-align:center;min-width:44px;font-size:28px;font-weight:900}.seg-btn .seg-icon{width:26px;height:26px;display:inline-flex}.seg-btn .seg-icon svg{width:100%;height:100%}.seg-btn .seg-icon .q-token{fill:currentColor}.customize-preview .thumb{background:var(--bg);border-radius:var(--radius);height:120px;padding:10px}.tool-btn.is-active{background:var(--tone-mint-bg);border-color:var(--go);color:var(--go-dark)}@media (width<=900px){.play-tools .tool-btn span{display:none}}.intro{background:var(--t-bg);border-radius:var(--radius-l);flex-direction:column;gap:12px;padding:clamp(22px,3vw,36px);display:flex}.intro h1{letter-spacing:-.01em;max-width:22ch;font-size:clamp(28px,3.4vw,42px);font-weight:900;line-height:1.1}.intro p{color:var(--ink-2);max-width:62ch;font-size:19px;font-weight:600}.cat-grid{grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:18px;display:grid}.cat-tile{background:var(--t-bg);border-radius:var(--radius);grid-template-rows:auto auto 1fr auto;gap:2px;min-height:230px;padding:20px 20px 16px;transition:transform .15s,box-shadow .15s;display:grid}.cat-tile:hover{box-shadow:var(--shadow-lift);transform:translateY(-2px)}.cat-tile h3{font-size:26px;font-weight:900}.cat-tile p{color:var(--ink-2);font-size:16px;font-weight:600}.cat-art{min-height:96px;color:var(--t-ink);justify-content:center;align-items:center;gap:10px;padding:8px 0;display:flex}.cat-art .thumb-cell{flex:1 1 0;max-width:170px;height:84px}.cat-art.art-2 .thumb-cell.is-numeral{max-width:70px}.cat-image{object-fit:contain;-webkit-user-select:none;user-select:none;-webkit-user-drag:none;width:auto;max-width:100%;height:110px}.cat-foot{justify-content:space-between;align-items:center;display:flex}.round-arrow{background:var(--surface);width:44px;height:44px;box-shadow:var(--shadow);border-radius:50%;place-items:center;display:grid}.series-grid{grid-template-columns:repeat(auto-fill,minmax(270px,1fr));gap:16px;display:grid}.series-card{border-radius:var(--radius);background:var(--surface);border:2px solid var(--t-bg);box-shadow:var(--shadow);flex-direction:column;gap:8px;padding:18px;display:flex}.series-kicker{text-transform:uppercase;letter-spacing:.04em;color:var(--t-ink);font-size:14px;font-weight:800}.series-card h3{font-size:22px;font-weight:900;line-height:1.15}.series-card h3 a:hover{text-decoration:underline}.series-desc{color:var(--ink-2);font-size:16px;font-weight:600}.series-card .thumb{background:var(--t-bg);border-radius:var(--radius-s);height:72px;margin:4px 0;padding:6px}.series-card .btn{align-self:flex-start;margin-top:auto}.page-header{background:var(--t-bg);border-radius:var(--radius-l);align-items:center;gap:20px;padding:20px;display:flex}.page-header-text{flex:1;min-width:0}.page-header h1{flex-wrap:wrap;align-items:center;gap:14px;font-size:clamp(30px,4vw,46px);font-weight:900;line-height:1.1;display:flex}.page-header p{color:var(--ink-2);margin-top:4px;font-size:18px;font-weight:600}.teacher-goal{background:var(--surface);border-radius:var(--radius);box-shadow:var(--shadow);padding:4px 18px}.teacher-goal summary{cursor:pointer;min-height:52px;color:var(--ink-2);align-items:center;gap:10px;font-weight:800;display:flex}.teacher-goal p{color:var(--ink-2);max-width:75ch;padding:0 0 16px;font-weight:600}.ex-grid{grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:16px;display:grid}.ex-card{border-radius:var(--radius);background:var(--t-bg);flex-direction:column;gap:10px;padding:14px;transition:transform .15s,box-shadow .15s;display:flex}.ex-card:hover{box-shadow:var(--shadow-lift);transform:translateY(-2px)}.ex-card .thumb{background:var(--surface);border-radius:var(--radius-s);height:110px;padding:8px}.ex-card-title{font-size:18px;font-weight:800;line-height:1.2}.ex-meta{flex-wrap:wrap;gap:6px;display:flex}.thumb{color:var(--ink);justify-content:center;align-items:center;gap:8px;display:flex}.thumb-cell{flex:1 1 0;justify-content:center;align-items:center;min-width:0;height:100%;display:flex}.thumb-cell.is-numeral{flex:0 60px}.thumb-cell svg{width:100%;height:100%}.set-start{flex-wrap:wrap;align-items:center;gap:12px;display:flex}.set-start-btn{flex:280px;min-height:76px;padding:0 48px;font-size:26px}.set-start-btn svg{width:30px;height:30px}.set-list{grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:12px;margin:0;padding:0;list-style:none;display:grid}.set-item{background:var(--surface);border-radius:var(--radius);min-height:96px;box-shadow:var(--shadow);align-items:center;gap:12px;padding:12px;display:flex}.set-item .thumb{background:var(--bg);border-radius:var(--radius-s);flex:none;width:110px;height:70px;padding:4px}.set-num{background:var(--go);color:#fff;border-radius:50%;flex:none;place-items:center;width:34px;height:34px;font-weight:900;display:grid}.set-item-text{flex-direction:column;gap:6px;min-width:0;display:flex}.set-item-title{font-size:17px;font-weight:800}.about{background:var(--surface);border-radius:var(--radius-l);box-shadow:var(--shadow);flex-direction:column;gap:12px;padding:clamp(20px,3vw,32px);display:flex}.about h2{font-size:24px;font-weight:900}.about p{color:var(--ink-2);max-width:75ch;font-weight:600}.summary-table{border-collapse:separate;border-spacing:0;background:var(--surface);border-radius:var(--radius);width:100%;box-shadow:var(--shadow);font-size:16px;overflow:hidden}.summary-table th,.summary-table td{text-align:left;border-bottom:2px solid var(--line);vertical-align:top;padding:12px 14px}.summary-table thead th{text-transform:uppercase;letter-spacing:.03em;color:var(--ink-2);font-size:14px}.summary-table tbody th{font-weight:800}.summary-time{color:var(--ink-2);font-size:14px;font-weight:600;display:block}.summary-actions{flex-wrap:wrap;gap:12px;display:flex}@media (width<=560px){.page-header{gap:14px;padding:14px 16px}.page-header p{font-size:16px}.ex-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.ex-card .thumb{height:84px}.set-list{grid-template-columns:minmax(0,1fr)}.summary-table{font-size:14px}.summary-table th,.summary-table td{padding:8px}}@media print{.summary-actions,.page-header .icon-btn{display:none}body{background:#fff}}.library-tools{flex-wrap:wrap;gap:12px;display:flex}.builder-toggle{min-height:52px;font-size:17px}.builder-toggle.is-active{background:var(--tone-mint-bg);border-color:var(--go);color:var(--go-dark)}.builder-count{background:var(--go);color:#fff;border-radius:999px;place-items:center;min-width:28px;height:28px;padding:0 8px;font-size:15px;display:inline-grid}button.ex-card{font:inherit;color:inherit;text-align:left;cursor:pointer;border:3px solid #0000;position:relative}.ex-card.is-selected{border-color:var(--go);box-shadow:0 0 0 3px #2f8a5733}.pick-mark{z-index:1;background:var(--surface);width:40px;height:40px;box-shadow:var(--shadow);color:var(--ink-2);border-radius:50%;place-items:center;display:grid;position:absolute;top:10px;right:10px}.ex-card.is-selected .pick-mark{background:var(--go);color:#fff}.with-tray{padding-bottom:0}.with-tray:has(~.builder-tray) .page{padding-bottom:300px}.builder-pill{right:max(16px, env(safe-area-inset-right));bottom:max(16px, env(safe-area-inset-bottom));z-index:40;position:fixed;box-shadow:0 10px 28px #1d244040}.builder-tray{left:50%;bottom:max(12px, env(safe-area-inset-bottom));z-index:40;background:var(--surface);border-radius:var(--radius-l);border:2px solid var(--tone-mint-bg);flex-direction:column;gap:12px;width:min(1180px,100% - 24px);padding:14px 16px;display:flex;position:fixed;transform:translate(-50%);box-shadow:0 -2px 6px #1d24400d,0 16px 40px #1d244033}.builder-head{flex-wrap:wrap;align-items:center;gap:12px;display:flex}.builder-name{flex:260px}.builder-name input{border:2px solid var(--line);background:var(--bg);border-radius:14px;width:100%;height:52px;padding:0 16px;font-size:18px;font-weight:700}.builder-name input:focus{border-color:var(--primary);outline:none}.builder-check{min-height:48px;color:var(--ink-2);cursor:pointer;align-items:center;gap:10px;font-size:16px;font-weight:700;display:flex}.builder-check input{width:26px;height:26px;accent-color:var(--go)}.builder-close{width:52px;height:52px;box-shadow:none;background:var(--bg)}.builder-empty{color:var(--ink-2);font-size:16px;font-weight:600}.builder-list{scroll-snap-type:x proximity;gap:8px;margin:0;padding:2px 2px 6px;list-style:none;display:flex;overflow-x:auto}.builder-item{scroll-snap-align:start;background:var(--bg);border-radius:16px;flex:none;align-items:center;gap:8px;padding:4px 4px 4px 8px;display:flex}.builder-num{background:var(--go);color:#fff;border-radius:50%;flex:none;place-items:center;width:32px;height:32px;font-size:16px;font-weight:900;display:grid}.builder-title{white-space:nowrap;text-overflow:ellipsis;max-width:260px;font-size:16px;font-weight:800;overflow:hidden}.builder-item-actions{display:flex}.builder-item-actions button{width:44px;height:44px;color:var(--ink-2);background:0 0;border:0;border-radius:12px;place-items:center;display:grid}.builder-item-actions button:disabled{opacity:.25}.builder-item-actions svg{width:22px;height:22px}.builder-bar{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.builder-summary{color:var(--ink-2);margin-right:auto;font-weight:800}@media (width<=600px){.builder-tray{gap:8px;padding:10px}.builder-bar .btn-go{flex:1}.with-tray:has(~.builder-tray) .page{padding-bottom:380px}}.random-btn{min-height:52px;font-size:17px}.play-page{background:var(--bg);height:100dvh;padding:max(12px, env(safe-area-inset-top)) max(16px, env(safe-area-inset-right)) max(12px, env(safe-area-inset-bottom)) max(16px, env(safe-area-inset-left));gap:var(--gap-play);flex-direction:column;display:flex;overflow:hidden}.play-bar{align-items:center;gap:14px;display:flex}.play-title{flex:1;align-items:center;gap:14px;min-width:0;display:flex}.play-title h1{white-space:nowrap;text-overflow:ellipsis;font-size:clamp(20px,2.4vw,28px);font-weight:900;overflow:hidden}.series-progress{background:var(--surface);color:var(--ink-2);box-shadow:var(--shadow);border-radius:999px;flex:none;align-items:center;gap:10px;padding:6px 14px;font-size:16px;font-weight:800;display:inline-flex}.series-name{color:var(--ink);text-overflow:ellipsis;white-space:nowrap;max-width:220px;overflow:hidden}.play-tools{gap:8px;display:flex}.play-main{gap:var(--gap-play);flex-direction:column;flex:1;min-height:0;display:flex;position:relative}.prompt-row{align-items:center;gap:14px;min-height:64px;display:flex}.prompt{font-size:var(--prompt-size);flex:1;font-weight:900;line-height:1.15}.speak-btn{background:var(--surface);width:64px;height:64px;box-shadow:var(--shadow);color:var(--primary);border:0;border-radius:50%;flex:none;place-items:center;display:grid}.speak-btn svg{width:32px;height:32px}.round-dots{flex:none;gap:8px;display:inline-flex}.round-dots span{background:var(--line);border-radius:50%;width:14px;height:14px}.round-dots .is-done{background:var(--go)}.round-dots .is-current{background:var(--primary);box-shadow:0 0 0 4px var(--primary-soft)}.task-area{flex-direction:column;flex:1;min-height:0;display:flex}.task{gap:var(--gap-play);flex-direction:column;flex:1;min-height:0;display:flex}.stimulus{background:var(--t-bg);border-radius:var(--radius-l);min-height:0;color:var(--ink);flex:1.15 1 0;justify-content:center;align-items:center;padding:clamp(10px,2vmin,24px);display:flex}.stimulus>svg{width:100%;max-width:900px;height:100%}.stimulus.is-numeral>svg{max-width:360px}.stimulus.is-sequence>svg{max-width:760px;max-height:190px}.answers{min-height:var(--card-min);gap:var(--gap-play);flex:1 1 0;grid-auto-columns:minmax(0,1fr);grid-auto-flow:column;display:grid}.task-choice.no-stimulus .answers{flex:1}.answer{background:var(--surface);min-width:0;min-height:0;color:var(--ink);border:3px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);touch-action:manipulation;justify-content:center;align-items:center;padding:clamp(8px,1.6vmin,18px);transition:transform .12s,box-shadow .12s,border-color .12s,opacity .25s;display:flex;position:relative}.answer>svg{width:100%;height:100%}.answer.is-number>svg{max-height:150px}.answer:not(:disabled):hover{box-shadow:var(--shadow-lift)}.answer:not(:disabled):active{transform:scale(.97)}.answer:disabled{cursor:default}.answer.state-selected{border-color:var(--primary);background:var(--primary-soft);box-shadow:0 0 0 4px #2f7de133}.answer.state-correct{border-color:var(--go);background:var(--ok-bg);animation:.35s pop}.answer.state-wrong{opacity:.35;box-shadow:none;animation:.35s nudge}.answer.state-hint{border-color:var(--hint);animation:1.4s ease-in-out infinite pulse}.answer-check,.pair-badge{background:var(--go);color:#fff;width:40px;height:40px;box-shadow:var(--shadow);border-radius:50%;place-items:center;display:grid;position:absolute;top:-12px;right:-12px}.answer-check svg,.pair-badge svg{stroke-width:3px;width:24px;height:24px}@keyframes pop{0%{transform:scale(1)}45%{transform:scale(1.06)}to{transform:scale(1)}}@keyframes nudge{0%,to{transform:translate(0)}25%{transform:translate(-6px)}75%{transform:translate(6px)}}@keyframes pulse{0%,to{box-shadow:0 0 #f2b53a8c}50%{box-shadow:0 0 0 10px #f2b53a00}}.quantity{overflow:visible}.q-token{fill:var(--token)}.q-dot{fill:var(--dot)}.q-cell{fill:var(--surface);stroke:var(--ink-2);stroke-opacity:.35;stroke-width:.06px}.q-hit{fill:#0000}.q-tap{cursor:pointer;outline:none}.q-tap:focus-visible .q-hit{stroke:var(--primary);stroke-width:.08px}.q-tap.is-counted>:not(.q-badge):not(.q-hit){opacity:.55}.q-badge circle{fill:var(--primary)}.q-badge text{fill:#fff;text-anchor:middle;dominant-baseline:central;font-size:.3px;font-weight:900;font-family:var(--font)}.numeral text{font-family:var(--font);text-anchor:middle;dominant-baseline:central;fill:currentColor;font-size:100px;font-weight:900}.sequence .seq-cell rect{fill:var(--surface);stroke:var(--line);stroke-width:4px}.sequence .seq-cell text{font-family:var(--font);text-anchor:middle;dominant-baseline:central;fill:var(--ink);font-size:60px;font-weight:900}.sequence .seq-cell.is-gap rect{fill:var(--primary-soft);stroke:var(--primary);stroke-dasharray:12 9}.sequence .seq-cell.is-gap text{fill:var(--primary)}.sequence .seq-cell.is-filled rect{fill:var(--ok-bg);stroke:var(--go)}.sequence .seq-arrow{fill:none;stroke:var(--ink-2);stroke-width:6px;stroke-linecap:round;stroke-linejoin:round}.task-match{justify-content:center}.match-row{gap:var(--gap-play);flex:1 1 0;grid-auto-columns:minmax(0,1fr);grid-auto-flow:column;min-height:0;display:grid}.match-left{flex:.75 1 0}.answer.state-matched{opacity:.9}.answer.state-matched.pair-0{border-color:var(--pair-0)}.answer.state-matched.pair-1{border-color:var(--pair-1)}.answer.state-matched.pair-2{border-color:var(--pair-2)}.answer.state-matched.pair-3{border-color:var(--pair-3)}.answer.state-matched.pair-4{border-color:var(--pair-4)}.pair-badge.pair-0{background:var(--pair-0)}.pair-badge.pair-1{background:var(--pair-1)}.pair-badge.pair-2{background:var(--pair-2)}.pair-badge.pair-3{background:var(--pair-3)}.pair-badge.pair-4{background:var(--pair-4)}@media (orientation:landscape){.task-match.has-sets{flex-direction:row}.task-match.has-sets .match-row{grid-auto-rows:minmax(0,1fr);grid-auto-columns:auto;grid-auto-flow:row}.task-match.has-sets .match-left{flex:.32 1 0}.task-match.has-sets .match-right{flex:1 1 0}.task-match.has-sets .answer.is-number>svg{max-height:110px}}.order-slots{gap:var(--gap-play);background:var(--t-bg);border-radius:var(--radius-l);flex:1 1 0;grid-auto-columns:minmax(0,1fr);grid-auto-flow:column;min-height:0;margin:0;padding:clamp(10px,2vmin,20px);list-style:none;display:grid}.order-slot{border-radius:var(--radius);min-width:0;min-height:0;color:var(--ink);background:#ffffff80;border:3px dashed #1d244033;justify-content:center;align-items:center;padding:8px;display:flex}.order-slot>svg{width:100%;height:100%;max-height:140px}.order-slot.is-next{border-color:var(--primary)}.order-slot.is-filled{border:3px solid var(--go);background:var(--surface);animation:.3s pop}.answer.state-placed{border:3px dashed var(--line);box-shadow:none;background:0 0}.next-row{justify-content:center;display:flex}.next-btn{min-height:76px;padding:0 56px;font-size:26px}.next-btn svg{width:30px;height:30px}.finish{background:var(--surface);border-radius:var(--radius-l);width:min(760px,100%);max-height:100%;box-shadow:var(--shadow-lift);flex-direction:column;gap:18px;margin:auto;padding:24px;animation:.25s fade;display:flex;overflow:auto}.finish-hero{background:var(--tone-yellow-bg);border-radius:var(--radius);justify-content:center;align-items:center;gap:24px;padding:18px 24px;display:flex}.finish-hero h2{letter-spacing:-.02em;font-size:clamp(44px,6vw,68px);font-weight:900;line-height:1}.finish-star{object-fit:contain;width:120px;height:120px;animation:.5s pop}.finish-check circle{fill:var(--go)}.finish-check path{fill:none;stroke:#fff;stroke-width:9px;stroke-linecap:round;stroke-linejoin:round}.finish-sub{text-align:center;font-size:22px;font-weight:900}.finish-stats{grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:12px;margin:0;display:grid}.finish-stats>div{border-radius:var(--radius);border:2px solid var(--line);text-align:center;background:var(--surface);padding:14px}.finish-stats dt{color:var(--ink-2);font-size:16px;font-weight:800}.finish-stats dd{margin:0;font-size:40px;font-weight:900;line-height:1.15}.finish-hard{background:var(--tone-yellow-bg);border-radius:var(--radius);padding:12px 16px}.finish-hard h3{color:var(--tone-yellow-ink);font-size:17px;font-weight:900}.finish-hard ul{margin:6px 0 0;padding-left:20px;font-weight:600}.finish-note{color:var(--tone-mint-ink);justify-content:center;align-items:center;gap:8px;font-weight:700;display:flex}.finish-actions{flex-wrap:wrap;gap:12px;display:flex}.finish-actions .btn{flex:200px;min-height:68px}.finish-actions.is-student .btn{min-height:88px;font-size:26px}.finish-actions.is-student .btn svg{width:30px;height:30px}.finish-link{min-height:48px;color:var(--ink-2);justify-content:center;align-items:center;gap:8px;font-weight:800;display:inline-flex}.play-page.is-student .prompt-row{padding-left:72px}.student-exit{top:max(12px, env(safe-area-inset-top));left:max(12px, env(safe-area-inset-left));z-index:30;position:fixed}.hold-btn{width:56px;height:56px;color:var(--ink-2);box-shadow:var(--shadow);touch-action:none;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;opacity:.6;background:#ffffffd9;border:0;border-radius:50%;place-items:center;display:grid;position:relative}.hold-btn.is-holding{opacity:1}.hold-btn:not(.is-holding) .hold-ring{visibility:hidden}.hold-btn svg:not(.hold-ring){width:24px;height:24px}.hold-ring{width:100%;height:100%;position:absolute;inset:0;transform:rotate(-90deg)}.hold-ring circle{fill:none;stroke:var(--primary);stroke-width:4px;stroke-dasharray:100;stroke-dashoffset:100px;stroke-linecap:round}.hold-btn.is-holding .hold-ring circle{transition:stroke-dashoffset var(--hold-ms) linear;stroke-dashoffset:0}.hold-hint{background:var(--ink);color:#fff;white-space:nowrap;border-radius:10px;padding:6px 12px;font-size:15px;font-weight:800;position:absolute;top:50%;left:64px;transform:translateY(-50%)}@media (orientation:portrait){.stimulus{flex-grow:1}.answers{flex-grow:1.1}}@media (width<=700px){.task-choice.options-4 .answers,.task-match.pairs-4 .match-row{grid-template-columns:repeat(2,minmax(0,1fr));grid-auto-columns:auto;grid-auto-flow:row}.play-bar{gap:8px}.play-title .series-name{display:none}.icon-btn,.tool-btn{width:52px;min-width:52px;height:52px;min-height:52px}.prompt-row{flex-wrap:wrap;gap:8px 10px}.prompt{flex:60%}.round-dots{flex-basis:100%;order:3;justify-content:center}.speak-btn{width:52px;height:52px}.round-dots span{width:10px;height:10px}.answer-check,.pair-badge{width:32px;height:32px;top:-8px;right:-8px}}@media (height<=520px){.play-bar .play-title h1{font-size:18px}.prompt-row{min-height:48px}.play-page{--card-min:90px}}.stimulus.is-line>svg{max-height:240px}.task-line{justify-content:center}.line-board{background:var(--t-bg);border-radius:var(--radius-l);flex:1;justify-content:center;align-items:center;min-height:0;padding:clamp(10px,2vmin,28px);display:flex}.line-board>svg{width:100%;height:100%;max-height:320px}.number-line .nl-axis{fill:none;stroke:var(--ink);stroke-width:5px;stroke-linecap:round;stroke-linejoin:round}.number-line .nl-tick{stroke:var(--ink);stroke-width:4px;stroke-linecap:round}.number-line .nl-tick.is-major{stroke-width:5px}.number-line .nl-label{font-family:var(--font);dominant-baseline:central;fill:var(--ink);font-size:34px;font-weight:900}.number-line .nl-label.is-start{fill:var(--primary)}.number-line .nl-label.is-target{fill:var(--go)}.number-line .nl-label.is-wrong{fill:var(--ink-2);opacity:.55}.number-line .nl-start{fill:var(--primary)}.number-line .nl-mark{fill:var(--hint);stroke:var(--surface);stroke-width:4px}.number-line .nl-mark.is-solved{fill:var(--go)}.number-line .nl-target{fill:var(--go);stroke:var(--surface);stroke-width:4px;transform-box:fill-box;transform-origin:50%;animation:.35s pop}.number-line .nl-wrong{fill:var(--ink-2);opacity:.35}.number-line .nl-hop{fill:none;stroke:var(--go);stroke-width:4px;stroke-linecap:round;stroke-linejoin:round}.number-line .nl-hint{fill:none;stroke:var(--hint);stroke-width:5px;transform-box:fill-box;transform-origin:50%;animation:1.4s ease-in-out infinite pulse-ring}.number-line .nl-hit{fill:#0000;cursor:pointer;outline:none}.number-line .nl-hit:focus-visible{fill:var(--primary-soft);fill-opacity:.6}@media (hover:hover){.number-line .nl-hit:hover{fill:var(--primary-soft);fill-opacity:.45}}@keyframes pulse-ring{0%,to{opacity:1}50%{opacity:.25}}.rotate-hint{text-align:center;background:var(--t-bg);border-radius:var(--radius-l);flex-direction:column;flex:1;justify-content:center;align-items:center;gap:16px;padding:24px;display:flex}.rotate-hint svg.rotate-icon{width:96px;height:96px;color:var(--primary);animation:2.4s ease-in-out infinite rotate-phone}.rotate-hint p{max-width:18ch;font-size:22px;font-weight:900}@keyframes rotate-phone{0%,30%{transform:rotate(0)}60%,to{transform:rotate(-90deg)}}[data-appearance=colorful] .answer.state-correct:after{content:"";border-radius:inherit;border:3px solid var(--go);pointer-events:none;animation:.6s ease-out forwards ring;position:absolute;inset:-3px}@keyframes ring{0%{opacity:.9;transform:scale(1)}to{opacity:0;transform:scale(1.12)}}[data-appearance=neutral]{--dot:#4f6a9a}[data-appearance=neutral] .stimulus,[data-appearance=neutral] .order-slots,[data-appearance=neutral] .finish-hero,[data-appearance=neutral] .intro,[data-appearance=neutral] .cat-tile,[data-appearance=neutral] .ex-card,[data-appearance=neutral] .page-header{background:#eef1f6}[data-appearance=neutral] .answer.state-correct{animation:none}[data-appearance=minimal]{--dot:#3b4466;--token:#3b4466}[data-appearance=minimal] .stimulus,[data-appearance=minimal] .order-slots,[data-appearance=minimal] .finish-hero,[data-appearance=minimal] .intro,[data-appearance=minimal] .cat-tile,[data-appearance=minimal] .ex-card,[data-appearance=minimal] .page-header{background:#f1f3f7}[data-appearance=minimal] .answer{box-shadow:none}[data-appearance=minimal] *,[data-appearance=minimal] :before,[data-appearance=minimal] :after{transition:none!important;animation:none!important}[data-appearance=minimal] .answer.state-hint{border-width:5px}[data-appearance=minimal] .round-dots .is-current{box-shadow:none}[data-appearance=contrast]{--bg:#fff;--ink:#000;--ink-2:#1a1a1a;--line:#000;--primary:#0046c7;--primary-soft:#dfe9ff;--go:#006b2d;--go-dark:#004d20;--ok-bg:#d9f5e3;--hint:#b35c00;--dot:#000;--token:#000}[data-appearance=contrast] .stimulus,[data-appearance=contrast] .order-slots,[data-appearance=contrast] .finish-hero,[data-appearance=contrast] .intro,[data-appearance=contrast] .cat-tile,[data-appearance=contrast] .ex-card,[data-appearance=contrast] .series-card,[data-appearance=contrast] .page-header{background:#fff;border:3px solid #000}[data-appearance=contrast] .answer{box-shadow:none;border-width:4px}[data-appearance=contrast] .answer.state-wrong{opacity:.25}[data-appearance=contrast] .answer.state-hint{border-width:6px}[data-appearance=contrast] .q-cell{stroke:#000;stroke-opacity:1;stroke-width:.08px}[data-appearance=contrast] .sequence .seq-cell rect{stroke:#000}[data-appearance=contrast] .seg-btn,[data-appearance=contrast] .tool-btn{border-color:#000}[data-appearance=contrast] .muted,[data-appearance=contrast] .cat-tile p,[data-appearance=contrast] .chip,[data-appearance=contrast] .count-pill{color:#000}[data-appearance=contrast] .order-slot{border-color:#000}[data-size=large]{--prompt-size:clamp(26px, 4vmin, 44px);--gap-play:clamp(16px, 2.8vmin, 32px);--card-min:160px}[data-size=large] .answer{border-width:4px}[data-size=large] .answer.is-number>svg{max-height:200px}[data-size=large] .speak-btn{width:76px;height:76px}@media (prefers-reduced-motion:reduce){*,:before,:after{transition:none!important;animation:none!important}.hold-btn.is-holding .hold-ring circle{transition:stroke-dashoffset var(--hold-ms) linear!important}}
