@font-face{font-family:Nunito Sans Variable;font-style:normal;font-display:swap;font-weight:200 1000;src:url(/_next/static/media/nunito-sans-cyrillic-ext-wght-normal.807f8a64.woff2) format("woff2-variations");unicode-range:u+0460-052f,u+1c80-1c8a,u+20b4,u+2de0-2dff,u+a640-a69f,u+fe2e-fe2f}@font-face{font-family:Nunito Sans Variable;font-style:normal;font-display:swap;font-weight:200 1000;src:url(/_next/static/media/nunito-sans-cyrillic-wght-normal.958b8893.woff2) format("woff2-variations");unicode-range:u+0301,u+0400-045f,u+0490-0491,u+04b0-04b1,u+2116}@font-face{font-family:Nunito Sans Variable;font-style:normal;font-display:swap;font-weight:200 1000;src:url(/_next/static/media/nunito-sans-vietnamese-wght-normal.904964c5.woff2) format("woff2-variations");unicode-range:u+0102-0103,u+0110-0111,u+0128-0129,u+0168-0169,u+01a0-01a1,u+01af-01b0,u+0300-0301,u+0303-0304,u+0308-0309,u+0323,u+0329,u+1ea0-1ef9,u+20ab}@font-face{font-family:Nunito Sans Variable;font-style:normal;font-display:swap;font-weight:200 1000;src:url(/_next/static/media/nunito-sans-latin-ext-wght-normal.dde16b97.woff2) format("woff2-variations");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,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 Sans Variable;font-style:normal;font-display:swap;font-weight:200 1000;src:url(/_next/static/media/nunito-sans-latin-wght-normal.89a9369d.woff2) format("woff2-variations");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}:root{--color-canvas:#f7f5ef;--color-surface:#fff;--color-surface-raised:#fcfbf7;--color-surface-soft:#eeeae2;--color-ink:#29263d;--color-ink-muted:#6c6876;--color-ink-subtle:#aaa49a;--color-accent:#e65f43;--color-accent-soft:#fce4dd;--color-success:#17815b;--color-success-soft:#dff3e9;--color-danger:#c84141;--color-danger-soft:#fde5e2;--color-warning:#d9a514;--color-warning-soft:#fff1bd;--color-focus:#007394;--color-border:#dcd7cd;--color-border-strong:#bdb6aa;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-6:24px;--space-8:32px;--space-12:48px;--space-16:64px;--radius-control:12px;--radius-inner:20px;--radius-card:28px;--radius-round:999px;--shadow-control:0 2px 0 rgba(41,38,61,0.14),0 4px 12px rgba(41,38,61,0.08);--shadow-card:0 2px 0 rgba(41,38,61,0.08),0 16px 40px rgba(41,38,61,0.09);--shadow-overlay:0 24px 80px rgba(30,27,45,0.24);--shadow-image:0 7px 0 rgba(41,38,61,0.08);--shadow-text:0 4px 0 rgba(41,38,61,0.22);--color-overlay:rgba(41,38,61,0.56);--gradient-stars:linear-gradient(140deg,rgba(230,95,67,0.94),rgba(0,115,148,0.82));--gradient-fireworks:linear-gradient(140deg,rgba(41,38,61,0.96),rgba(0,115,148,0.9));--gradient-confetti:linear-gradient(140deg,rgba(230,95,67,0.94),rgba(217,165,20,0.9));--ring-success:rgba(23,129,91,0.2);--duration-fast:120ms;--duration-normal:220ms;--duration-celebration:800ms;--ease-standard:cubic-bezier(0.2,0.8,0.2,1);--cream:var(--color-canvas);--paper:var(--color-surface);--ink:var(--color-ink);--muted:var(--color-ink-subtle);--coral:var(--color-accent);--green:var(--color-success);--yellow:var(--color-warning);--red:var(--color-danger);--blue:var(--color-focus);font-family:Nunito Sans Variable,ui-rounded,system-ui,sans-serif;color:var(--color-ink);background:var(--color-canvas);font-weight:600}*{box-sizing:border-box}body,html{margin:0;min-height:100%;overscroll-behavior:none}button,input,select{font:inherit;color:inherit}button{border:0;cursor:pointer;touch-action:manipulation;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none;-webkit-tap-highlight-color:transparent;transition:background var(--duration-fast) var(--ease-standard),color var(--duration-fast) var(--ease-standard),border-color var(--duration-fast) var(--ease-standard),box-shadow var(--duration-fast) var(--ease-standard),transform var(--duration-fast) var(--ease-standard)}.icon-button{display:inline-grid;place-items:center;color:var(--color-ink)}@media (hover:hover){button:not(:disabled):hover{filter:brightness(.98)}.adult-lock:hover,.tools .icon-button:hover{color:var(--color-accent);background:var(--color-accent-soft)}}button:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid var(--color-focus);outline-offset:3px}main{min-height:100dvh;padding:10px clamp(12px,3vw,44px) 18px;background:radial-gradient(circle at 8% 5%,var(--color-surface) 0 3%,transparent 17%),var(--color-canvas);display:flex;flex-direction:column}main[data-hydrated=false]{visibility:hidden}header{height:54px;justify-content:space-between}.brand,header{display:flex;align-items:center}.brand{gap:10px;background:none;font-size:1.05rem;letter-spacing:.06em;font-weight:800}.brand span{display:grid;place-items:center;width:42px;height:42px;border-radius:var(--radius-control);background:var(--coral);color:white;font-size:1.55rem}.adult-lock{width:48px;height:48px;border-radius:var(--radius-round);background:var(--color-surface-soft);font-size:1.4rem}.lesson{flex:1 1;min-height:245px;display:grid;grid-template-columns:minmax(180px,30%) 1fr 64px;gap:clamp(16px,4vw,48px);align-items:center;max-width:1200px;width:100%;margin:auto}.picture{aspect-ratio:1;max-height:270px;border-radius:var(--radius-card);background:var(--paper);box-shadow:var(--shadow-card);display:grid;place-items:center;overflow:hidden}.picture>span{font-size:clamp(6rem,14vw,11rem);filter:drop-shadow(var(--shadow-image))}.picture .name-mark{display:grid;place-items:center;width:70%;height:70%;background:var(--color-success-soft);border-radius:var(--radius-round);color:var(--color-success)}.task{text-align:center;min-width:0}.word{font-size:clamp(2.8rem,7vw,6.8rem);letter-spacing:.03em;white-space:nowrap;display:flex;justify-content:center;font-weight:750}.word span{color:var(--color-ink-subtle);transition:.18s}.word span.done{color:var(--green)}.word span.incorrect{color:var(--red);-webkit-text-decoration:underline wavy currentColor;text-decoration:underline wavy currentColor;text-underline-offset:.12em}.word span.current{color:var(--ink);border-bottom:8px solid var(--yellow)}.target{margin:24px auto 0;width:clamp(90px,10vw,132px);height:clamp(90px,10vw,132px);display:grid;place-items:center;border-radius:var(--radius-card);background:var(--color-surface);box-shadow:var(--shadow-card);font-size:clamp(4rem,7vw,6.2rem);color:var(--coral);font-weight:750}.lesson.wrong .target{background:var(--color-danger-soft);color:var(--red)}.lesson.correct .target{color:var(--color-success);background:var(--color-success-soft);box-shadow:0 0 0 6px var(--ring-success),var(--shadow-card);animation:correct-pop .52s var(--ease-standard)}.tools{display:grid;gap:10px}.tools button{width:58px;height:58px;background:var(--color-surface);box-shadow:var(--shadow-control);color:var(--color-ink)}.enter-prompt,.tools button{border-radius:var(--radius-inner)}.enter-prompt{text-align:center;margin:4px auto 12px;padding:10px 22px;background:var(--color-warning-soft);font-size:1.2rem}.enter-prompt b{display:inline-flex;align-items:center;gap:var(--space-2);background:var(--yellow);padding:7px 14px;border-radius:var(--radius-control);animation:pulse 1s infinite}.keyboard{width:min(100%,940px);margin:0 auto;display:grid;gap:7px}.key-row{display:flex;justify-content:center;gap:7px}.key{height:clamp(48px,6vw,68px);min-width:clamp(35px,6vw,66px);border-radius:var(--radius-control);background:var(--color-surface);box-shadow:var(--shadow-control);font-size:clamp(1.05rem,2.3vw,1.8rem);font-weight:750}.key:active{transform:translateY(2px);box-shadow:none}.key.hint{background:var(--color-warning-soft);box-shadow:0 0 0 2px var(--color-warning),var(--shadow-control)}.key:disabled{opacity:.2}.actions{margin-top:3px}.key.back{min-width:100px}.key.back,.key.enter{background:var(--color-surface-soft)}.key.enter{min-width:190px;display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);color:var(--color-ink-muted)}.key.enter.ready{background:var(--green);color:white;box-shadow:0 0 0 2px var(--color-success),var(--shadow-control);animation:pulse 1s infinite}.celebration,.modal-backdrop{position:fixed;inset:0;z-index:20;background:var(--color-overlay);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);display:grid;place-items:center;padding:20px}.celebration.kind-fireworks{background:var(--gradient-fireworks)}.celebration.kind-confetti{background:var(--gradient-confetti)}.adult-card,.hand-card,.picker-card{position:relative;width:min(920px,96vw);max-height:92dvh;overflow:auto;padding:30px}.adult-card,.confirm-card,.hand-card,.picker-card{background:var(--paper);border-radius:var(--radius-card);box-shadow:var(--shadow-overlay)}.confirm-card{width:min(460px,92vw);padding:34px;text-align:center}.confirm-card>div{display:flex;justify-content:center;gap:14px}.confirm-card button{min-width:120px;padding:16px;border-radius:var(--radius-inner);background:var(--color-surface-soft)}.confirm-card .primary{background:var(--green);color:white}.adult-card h2,.hand-card h2,.picker-card h2{text-align:center;margin:0 0 18px}.close{position:absolute;right:18px;top:15px;width:48px;height:48px;border-radius:var(--radius-round);font-size:2rem;background:var(--color-surface-soft)}.picker-card>input{width:100%;height:68px;border:2px solid var(--color-border);border-radius:var(--radius-inner);padding:0 22px;font-size:1.35rem}.results{display:grid;grid-template-columns:repeat(auto-fill,minmax(145px,1fr));gap:12px;margin-top:18px}.results button{min-height:140px;border-radius:var(--radius-inner);background:var(--color-surface-soft);display:grid;place-items:center;padding:12px}.results span{font-size:3.8rem}.results b{font-size:1rem}.missing{text-align:center;padding:30px}.missing button,.primary{background:var(--green);color:white;border-radius:var(--radius-control);padding:14px 20px}.celebration{background:var(--gradient-stars);-webkit-backdrop-filter:none;backdrop-filter:none;overflow:hidden}.hooray{z-index:2;text-align:center;color:white;font-size:clamp(3rem,9vw,8rem);text-shadow:var(--shadow-text);font-weight:800}.hooray small{display:block;font-size:.3em;margin:10px}.hooray button{display:flex;align-items:center;justify-content:center;gap:var(--space-2);margin:32px auto 0;padding:18px 30px;border-radius:var(--radius-inner);background:var(--yellow);font-size:1.4rem;box-shadow:var(--shadow-control)}.fest-field{position:absolute;inset:0;overflow:hidden;pointer-events:none;z-index:1}.celebration-glow{position:absolute;width:min(76vw,820px);aspect-ratio:1;left:50%;top:50%;border:2px solid var(--color-warning-soft);border-radius:var(--radius-round);opacity:.22;transform:translate(-50%,-50%);box-shadow:0 0 0 42px var(--ring-success),0 0 110px var(--color-warning-soft);animation:celebration-breathe 1.8s infinite alternate var(--ease-standard)}.fest-piece{position:absolute;width:12px;height:28px;border-radius:4px;background:var(--color-warning-soft);animation:confetti-fall linear infinite}.fest-pictogram{position:absolute;height:auto;filter:drop-shadow(var(--shadow-image));opacity:.92;animation:pictogram-rain linear infinite}.fest-piece:nth-child(4n){background:var(--color-accent-soft)}.fest-piece:nth-child(4n+1){background:var(--color-success-soft)}.fest-piece:nth-child(4n+2){background:var(--color-surface)}.fest-piece.shape-dot{width:17px;height:17px;border-radius:var(--radius-round)}.fest-piece.shape-diamond{width:19px;height:19px;border-radius:3px}.fest-burst{position:absolute;width:10px;height:10px;animation:burst-pulse 1.45s infinite var(--ease-standard)}.fest-burst i{--angle:calc(var(--ray) * 30deg);position:absolute;left:4px;top:4px;width:4px;height:52px;border-radius:var(--radius-round);background:var(--color-warning-soft);transform-origin:2px 2px;transform:rotate(var(--angle)) translateY(-18px) scaleY(.75)}.burst-one{left:17%;top:24%}.burst-two{right:16%;top:19%;animation-delay:-.55s}.burst-three{right:24%;bottom:19%;animation-delay:-1s;transform:scale(.72)}.celebration.low-arousal .fest-burst:nth-of-type(n+3),.celebration.low-arousal .fest-pictogram:nth-of-type(n+6),.celebration.low-arousal .fest-piece:nth-of-type(n+19){display:none}.celebration.low-arousal .fest-piece{animation-duration:7s!important;opacity:.7}.celebration.low-arousal .fest-pictogram{animation-duration:9s!important;opacity:.65}.celebration.low-arousal .fest-burst{animation-duration:3.4s;opacity:.65}.celebration.low-arousal .celebration-glow{animation-duration:4s}main.low-arousal .word span{transition-duration:.42s}main.low-arousal .lesson.correct .target{animation:correct-breathe .95s var(--ease-standard)}main.low-arousal .key.enter.ready{animation-duration:2.2s!important}main.low-arousal .shake{animation:gentle-shake .42s var(--ease-standard)}.canvas-wrap{position:relative;width:min(420px,75vw);aspect-ratio:1;margin:auto;border:3px dashed var(--color-border-strong);border-radius:var(--radius-card);background:white}.hand-card,.hand-card *{user-select:none;-webkit-user-select:none;-webkit-touch-callout:none}.canvas-wrap canvas{position:absolute;inset:0;width:100%;height:100%;touch-action:none}.trace-letter{position:absolute;inset:0;display:grid;place-items:center;font-size:18rem;color:var(--color-surface-soft)}.hand-actions{display:flex;justify-content:center;gap:12px;margin-top:15px}.hand-actions button{padding:14px;border-radius:var(--radius-control)}.hand-card p{font-weight:500;text-align:center;color:var(--color-ink-muted)}.adult-card{font-weight:600}.adult-check{text-align:center;color:var(--color-ink-muted)}.stats{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.stats div{background:var(--color-surface-soft);border-radius:var(--radius-inner);padding:16px;text-align:center}.stats b,.stats span{display:block}.stats b{font-size:2rem;color:var(--color-success)}.settings-grid{display:grid;grid-template-columns:1fr 1fr;gap:15px;margin:20px 0}.settings-grid>label{display:grid;gap:7px}.settings-grid input[type=range],.settings-grid select{width:100%;min-height:48px}.toggle{display:flex!important;grid-template-columns:auto 1fr!important;align-items:center;gap:10px!important}.toggle input{width:25px;height:25px}fieldset{display:flex;flex-wrap:wrap;gap:15px;border:2px solid var(--color-border);border-radius:var(--radius-inner);padding:14px}fieldset input{width:22px;height:22px;vertical-align:middle;margin-right:5px}.danger{margin-top:22px;background:var(--color-danger-soft);color:var(--color-danger);padding:12px;border-radius:var(--radius-control)}.attribution{font-size:.8rem;color:var(--color-ink-muted)}.attribution a{color:var(--color-focus)}@keyframes pulse{50%{transform:scale(1.06)}}@keyframes confetti-fall{0%{transform:translate3d(0,-12vh,0) rotate(0deg)}to{transform:translate3d(var(--drift),124vh,0) rotate(780deg)}}@keyframes pictogram-rain{0%{transform:translate3d(0,-18vh,0) rotate(-12deg)}50%{transform:translate3d(var(--drift),56vh,0) rotate(9deg)}to{transform:translate3d(0,124vh,0) rotate(-8deg)}}@keyframes celebration-breathe{to{opacity:.34;transform:translate(-50%,-50%) scale(1.06)}}@keyframes burst-pulse{0%,to{opacity:.18;transform:scale(.62) rotate(-8deg)}48%{opacity:.9;transform:scale(1) rotate(4deg)}}@keyframes shake{25%{transform:translateX(-9px)}75%{transform:translateX(9px)}}@keyframes correct-pop{35%{transform:scale(1.1) rotate(-2deg)}70%{transform:scale(1.04) rotate(2deg)}}@keyframes correct-breathe{50%{transform:scale(1.045)}}@keyframes gentle-shake{35%{transform:translateX(-4px)}70%{transform:translateX(4px)}}.shake{animation:shake .18s 2}@media (max-width:800px),(orientation:portrait){main{overflow:auto}.lesson{grid-template-columns:1fr 64px;min-height:unset}.picture{display:none}.word{font-size:clamp(2rem,9vw,4rem);overflow:hidden}.settings-grid{grid-template-columns:1fr}.key{min-width:7.5vw}.keyboard{margin-top:12px}}@media (prefers-reduced-motion:reduce){*,:after,:before{animation:none!important;scroll-behavior:auto!important}}.key.enter.ready{animation:enterGlow 1s infinite!important}@keyframes enterGlow{50%{filter:brightness(1.12);box-shadow:var(--shadow-control),0 0 0 8px var(--ring-success)}}.picture>img{width:78%;height:78%;object-fit:contain}.results img{width:72px;height:72px;object-fit:contain}@media (prefers-reduced-motion:reduce){.key.enter.ready{animation:none!important}}