:root{--paper: #f5efe3;--card: #fffdf8;--ink: #1e2633;--muted: #5b5f68;--line: #e3daca;--line-strong: #dcd2c0;--indigo: #1f3352;--indigo-soft: #e8ecf2;--tiger: #d9772b;--tiger-ink: #a9500f;--tiger-soft: #fce7d2;--stripe: #2b2118;--ok: #2e6b5e;--ok-soft: #e2efea;--ng: #b0463b;--ng-soft: #f8e7e4;--seal: #c23b2a;--on-indigo: #ffffff;--ko-font: "Noto Sans KR", "Apple SD Gothic Neo", "Malgun Gothic", sans-serif;--ja-font: "Noto Sans JP", "Hiragino Sans", "Hiragino Kaku Gothic ProN", "Noto Sans JP", "Yu Gothic UI", "Meiryo", sans-serif;--brush-font: "Nanum Brush Script", var(--ko-font);color-scheme:light}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--ja-font);font-size:18px;line-height:1.7}[lang=ko]{font-family:var(--ko-font)}button{font:inherit;color:inherit;cursor:pointer}button:focus-visible{outline:3px solid var(--tiger);outline-offset:2px}button:disabled{cursor:default}h1,h2{line-height:1.35}.home,.info{max-width:560px;margin:0 auto;padding:calc(28px + env(safe-area-inset-top)) 16px 40px}.brand{margin:0;color:var(--tiger-ink);font-weight:700;letter-spacing:.04em}.home h1{margin:2px 0 6px;font-size:32px}.home-sub{margin:0 0 22px;color:var(--muted)}.lesson-list{list-style:none;margin:0;padding:0;display:grid;gap:10px}.lesson-row{width:100%;display:grid;grid-template-columns:44px 1fr auto;align-items:center;gap:14px;padding:14px 16px;background:var(--card);border:1px solid var(--line);border-radius:14px;text-align:left}.lesson-row.is-next{border:2px solid var(--tiger)}.lesson-no{font-size:22px;font-weight:800;color:var(--indigo);text-align:center}.lesson-text{display:grid}.lesson-ko{font-size:20px;font-weight:700}.lesson-ja{color:var(--muted);font-size:15px}.lesson-state{font-size:14px;color:var(--muted);white-space:nowrap}.lesson-row.is-next .lesson-state{color:var(--tiger-ink);font-weight:700}.link-btn{margin-top:24px;background:none;border:0;color:var(--muted);text-decoration:underline;padding:8px 0}.back{background:none;border:0;color:var(--indigo);padding:8px 0}.err{white-space:pre-wrap;font-size:13px;color:var(--muted)}.lesson{max-width:560px;margin:0 auto;min-height:100dvh;display:flex;flex-direction:column;padding:0 16px}.lesson-bar{position:sticky;top:0;z-index:2;background:var(--paper);display:grid;grid-template-columns:44px 1fr auto;align-items:center;gap:10px;padding:calc(10px + env(safe-area-inset-top)) 0 10px}.close{width:44px;height:44px;border:0;background:none;font-size:28px;line-height:1;color:var(--muted)}.stripes{height:12px;border-radius:6px;background:var(--indigo-soft);overflow:hidden}.stripes-fill{height:100%;border-radius:6px;transition:width .35s ease;background:repeating-linear-gradient(115deg,var(--tiger) 0 14px,var(--stripe) 14px 19px)}@media(prefers-reduced-motion:reduce){.stripes-fill{transition:none}}.step-count{font-size:14px;color:var(--muted);font-variant-numeric:tabular-nums}.chapter-title{margin:4px 0 14px;color:var(--muted);font-size:15px}.ch-no{color:var(--indigo);font-weight:700;margin-right:.6em}.step{flex:1;padding-bottom:24px}.lesson-foot{position:sticky;bottom:0;background:linear-gradient(to top,var(--paper) 75%,transparent);padding:14px 0 calc(16px + env(safe-area-inset-bottom))}.primary{width:100%;min-height:58px;border:0;border-radius:14px;background:var(--indigo);color:var(--on-indigo);font-size:19px;font-weight:700}.primary:disabled{opacity:.35}.secondary{min-height:52px;padding:0 22px;border-radius:12px;border:2px solid var(--indigo);background:var(--card);color:var(--indigo);font-weight:700}.secondary:disabled{opacity:.4}.ghost{min-height:52px;padding:0 18px;border-radius:12px;border:1px solid var(--line);background:none;color:var(--muted)}h2{font-size:19px;margin:22px 0 10px}.note{color:var(--muted);font-size:16px}.sound{display:inline-flex;align-items:center;gap:8px;min-width:48px;min-height:48px;padding:0 12px;border-radius:999px;border:1px solid var(--line);background:var(--card);color:var(--indigo);justify-content:center}.sound svg{width:24px;height:24px;fill:currentColor;stroke:currentColor}.sound-big{min-height:64px;padding:0 26px;font-weight:700}.sound.is-playing{border-color:var(--tiger);color:var(--tiger)}.prompt{font-size:19px;font-weight:700;margin:0 0 14px}.stage{display:flex;align-items:center;justify-content:center;gap:14px;min-height:120px;margin-bottom:18px;background:var(--card);border:1px solid var(--line);border-radius:16px;padding:16px}.glyph{font-size:64px;font-weight:700;line-height:1.1}.glyph-part{font-size:52px}.build{gap:6px}.plus{font-size:28px;color:var(--muted);margin:0 8px;font-weight:400}.meaning{font-size:28px;font-weight:700}.options{list-style:none;margin:0;padding:0;display:grid;gap:10px;grid-template-columns:repeat(auto-fit,minmax(96px,1fr))}.option{width:100%;min-height:76px;border-radius:14px;border:2px solid var(--line);background:var(--card);display:flex;align-items:center;justify-content:center;padding:8px}.option-ko{font-size:36px;font-weight:700}.option-ja{font-size:20px;font-weight:700}.option-audio{display:inline-flex;align-items:center;gap:6px;font-weight:700}.option-audio svg{width:22px;height:22px;fill:currentColor}.reveal{font-size:22px;margin-left:6px}.option.is-picked{border-color:var(--indigo);background:var(--indigo-soft)}.option.is-right{border-color:var(--ok);background:var(--ok-soft)}.option.is-wrong{border-color:var(--ng);background:var(--ng-soft)}.q-actions{display:flex;gap:10px;justify-content:flex-end;margin-top:16px}.hint{background:var(--indigo-soft);border-radius:12px;padding:12px 14px;margin-top:12px}.feedback{margin-top:18px;border-radius:18px;padding:16px 18px;background:var(--card);border:1px solid var(--line)}.feedback.ok .verdict{color:var(--ok)}.feedback.ng .verdict{color:var(--ng)}.feedback p{margin:0 0 8px}.verdict{font-weight:900;font-size:22px}.narration p{margin:0 0 10px}.letters{list-style:none;margin:16px 0 0;padding:0;display:grid;gap:12px}.letter{background:var(--card);border:1px solid var(--line);border-radius:16px;padding:14px 16px}.letter-top{display:flex;align-items:center;gap:14px}.jamo{font-size:48px;font-weight:700;color:var(--indigo);line-height:1.1;min-width:1.1em}.arrow{color:var(--muted)}.syllable{font-size:48px;font-weight:700;line-height:1.1;flex:1}.mouth{margin:8px 0 0;color:var(--muted);font-size:16px}.vocab{list-style:none;margin:0;padding:0;display:grid;gap:10px}.vocab-card{display:grid;grid-template-columns:auto 1fr auto;grid-template-rows:auto auto;column-gap:14px;align-items:center;background:var(--card);border:1px solid var(--line);border-radius:14px;padding:12px 14px}.vocab-ko{grid-row:span 2;font-size:36px;font-weight:700}.vocab-ja{font-weight:700}.vocab-kana{color:var(--muted);font-size:15px;grid-column:2}.vocab-card .sound{grid-column:3;grid-row:1 / span 2}.practice,.repeat{list-style:none;margin:0;padding:0;display:grid;gap:8px;grid-template-columns:repeat(auto-fill,minmax(140px,1fr))}.practice li,.repeat li{display:flex;align-items:center;justify-content:space-between;gap:8px;background:var(--card);border:1px solid var(--line);border-radius:12px;padding:6px 8px 6px 14px}.practice li>span,.repeat li>span[lang]{font-size:28px;font-weight:700}.tag{font-size:12px;color:var(--muted)}.rule-card{background:var(--card);border:1px solid var(--line);border-radius:16px;padding:14px 16px;margin:0 0 12px}.flow{margin:0;padding-left:1.4em;color:var(--muted)}.read-alone{font-size:34px;font-weight:700;text-align:center;background:var(--card);border:1px solid var(--line);border-radius:14px;padding:14px}.recorder{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin:12px 0}.rec{min-height:52px;padding:0 22px;border-radius:999px;border:2px solid var(--ng);background:var(--card);color:var(--ng);font-weight:700}.rec.is-rec{background:var(--ng);color:#fff}.my-voice{max-width:100%}.self-check{padding-left:1.2em}.result-groups{list-style:none;padding:0;margin:0 0 14px}.result-groups li{display:flex;justify-content:space-between;background:var(--card);border:1px solid var(--line);border-radius:12px;padding:12px 16px}.result-groups strong{font-size:22px;color:var(--indigo);font-variant-numeric:tabular-nums}.letter-sub{margin:6px 0 0;font-size:16px;display:flex;align-items:center;gap:8px}.letter-sub [lang=ko]{font-size:24px;font-weight:700}.resume-note{margin:-6px 0 12px;font-size:15px;color:var(--muted);display:flex;flex-wrap:wrap;align-items:center;gap:4px 12px}.link-btn.inline{margin:0;padding:4px 0;font-size:15px}.review-areas{list-style:none;padding:0;margin:8px 0 0;display:grid;gap:8px}.review-areas li{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:10px 14px}.slow-toggle{align-self:flex-end;margin:-6px 0 6px;padding:4px 12px;border:1px solid var(--line);border-radius:999px;background:var(--card);font-size:14px;color:var(--muted)}.slow-toggle.on{border-color:var(--tiger);color:var(--ink);font-weight:700}.setting{margin:0 0 12px;color:var(--muted);font-size:15px}.scene-tools{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:12px}.lines{list-style:none;margin:0;padding:0;display:grid;gap:10px}.line-btn{width:100%;display:grid;gap:2px;text-align:left;padding:12px 14px;background:var(--card);border:1px solid var(--line);border-radius:14px}.line-sato .line-btn{border-left:5px solid var(--tiger)}.line-junho .line-btn{border-left:5px solid var(--indigo)}.line-staff .line-btn{border-left:5px solid var(--ok)}.line.is-now .line-btn{box-shadow:0 0 0 3px var(--tiger)}.line.is-heard .speaker:after{content:" ✓";color:var(--ok)}.speaker{font-size:13px;color:var(--muted);font-weight:700}.line-ko{font-size:22px;font-weight:700;line-height:1.45}.line-ja{font-size:15px;color:var(--muted)}.ex{display:grid;flex:1;min-width:0}.ex-ja{font-size:14px;color:var(--muted)}.cues{margin:0 0 12px;padding-left:1.4em;font-size:20px;font-weight:700}.sentence{font-size:24px;font-weight:700;line-height:1.5;overflow-wrap:anywhere}.blank{display:inline-block;min-width:2.4em;padding:0 .3em;margin:0 .1em;border-bottom:3px solid var(--tiger);text-align:center}.blank-filled{color:var(--ok)}.stage.stage-talk{display:grid;gap:6px;justify-items:start}.reveal-line{font-size:20px;font-weight:700;margin:6px 0}.ex [lang=ko]{font-size:22px;font-weight:700}.options.options-long{grid-template-columns:1fr}.options-long .option{text-align:left;padding:14px 16px}.options-long .option-ko{font-size:22px;line-height:1.45}.options-long .option-ja{font-size:18px}.repeat.repeat-long{grid-template-columns:1fr}.blank{margin:0}.line-sua .line-btn{border-left:5px solid var(--tiger);border-left-style:double}.scene-section{margin:8px 0 4px;font-size:14px;font-weight:700;color:var(--indigo)}.me-card{background:var(--card);border:2px dashed var(--tiger);border-radius:14px;padding:12px 14px;display:grid;grid-template-columns:minmax(0,1fr);gap:6px}.cue-big{margin:0;font-size:19px;font-weight:700;overflow-wrap:anywhere}.model{display:flex;align-items:center;justify-content:space-between;gap:10px;background:var(--indigo-soft);border-radius:12px;padding:8px 10px 8px 14px}.model [lang=ko],.model-ko{font-size:22px;font-weight:700}.next-turn{margin-top:14px;width:100%}.weak-list{list-style:none;margin:12px 0 0;padding:0;display:grid;gap:12px}.test-rules{padding-left:1.2em;margin:0 0 16px}.test-rules li{margin-bottom:6px}.test-note{margin-top:14px}.muted{color:var(--muted)!important;font-size:16px!important}.cert{margin:22px 0 12px;padding:22px 18px;text-align:center;background:var(--card);border:3px double var(--tiger);border-radius:12px}.cert-brand{margin:0;color:var(--tiger-ink);font-weight:700;font-size:14px}.cert-title{margin:6px 0 14px;font-size:20px}.cert-name{font-size:22px;font-weight:700;margin:0 0 10px}.cert-body{margin:0 0 10px}.cert-areas,.cert-date{margin:0;color:var(--muted);font-size:15px}.cert-input{display:grid;gap:6px;font-size:15px}.cert-input input{min-height:48px;font:inherit;padding:0 12px;border-radius:10px;border:1px solid var(--line);background:var(--card);color:var(--ink)}.nowrap{white-space:nowrap}.welcome{display:grid;gap:12px;align-content:start}.welcome .home-sub{margin-bottom:10px}.secondary.wide,.choice-list .primary{width:100%}.choice-list{display:grid;gap:10px;margin:18px 0 6px}.link-btn{display:block}.badge{display:inline-block;margin-right:8px;padding:1px 8px;border-radius:999px;background:var(--tiger-ink);color:var(--on-indigo);font-size:13px;vertical-align:2px}.survey{display:grid;gap:14px;align-content:start}.survey-q{border:0;margin:0;padding:0}.survey-q legend{font-weight:700;margin-bottom:8px}.survey-opts{display:flex;flex-wrap:wrap;gap:8px}.survey-opt{min-height:48px;padding:0 16px;border-radius:999px;border:1px solid var(--line);background:var(--card)}.survey-opt.on{border:2px solid var(--indigo);background:var(--indigo-soft);font-weight:700}.today{display:grid;gap:8px;margin:0 0 16px;padding:12px 14px;background:var(--card);border:1px solid var(--line);border-radius:14px}.today-goal{margin:0}.feedback{position:relative}.stamp{position:absolute;right:10px;top:-26px;width:96px;height:96px;white-space:nowrap;border-radius:50%;border:4px solid var(--seal);color:var(--seal);display:flex;flex-direction:column;align-items:center;justify-content:center;transform:rotate(-12deg);background:var(--card);font-family:var(--brush-font);font-weight:400;line-height:1.05;font-size:20px}.stamp [lang=ko]{font-family:var(--brush-font)}.stamp [lang=ko]:first-child{font-size:30px}.stamp [lang=ko]:last-child{font-size:18px;letter-spacing:-.05em}@media(prefers-reduced-motion:no-preference){.stamp{animation:stamp .25s ease-out}@keyframes stamp{0%{transform:rotate(-12deg) scale(1.6);opacity:0}to{transform:rotate(-12deg) scale(1);opacity:1}}}.feedback:has(.stamp){padding-right:116px}.option-audio{flex-wrap:wrap;justify-content:center;white-space:nowrap}.option-audio .reveal{flex-basis:100%;text-align:center;margin:2px 0 0;white-space:nowrap}.bar-toggles{display:flex;justify-content:flex-end;gap:6px;margin:-6px 0 6px}.bar-toggles .slow-toggle{margin:0}.game{max-width:560px;margin:0 auto;min-height:100dvh;display:flex;flex-direction:column;padding:calc(8px + env(safe-area-inset-top)) 16px calc(12px + env(safe-area-inset-bottom))}.game-bar{display:flex;align-items:center;gap:12px}.game-score{font-size:26px;font-weight:800;color:var(--indigo);font-variant-numeric:tabular-nums}.game-time{font-size:26px;font-weight:800;font-variant-numeric:tabular-nums;margin-left:auto}.game-time.low{color:var(--ng)}.game-bar small{font-size:14px;margin-left:2px}.game-bar .slow-toggle{margin-left:auto}.game-time+.slow-toggle{margin-left:0}.game-intro{display:grid;gap:14px;margin-top:12px}.game-count{flex:1;display:grid;place-items:center;font-size:72px;font-weight:800;color:var(--tiger)}.game-target{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:8px 0}.slots{display:flex;gap:6px;align-items:center}.slot{min-width:56px;height:56px;padding:0 6px;display:grid;place-items:center;border-radius:12px;border:2px dashed var(--line);background:var(--card);font-size:14px;color:var(--muted)}.slot.now{border-color:var(--tiger);color:var(--ink);font-weight:700}.slot.filled{border-style:solid;border-color:var(--ok);color:var(--ink);font-size:30px;font-weight:800}.slot-made{font-size:40px;font-weight:800;color:var(--ok);margin-left:6px}.combo{font-weight:800;color:var(--tiger-ink)}.sky{position:relative;flex:1;min-height:360px;border-radius:18px;overflow:hidden;background:linear-gradient(#dfe9f5,var(--paper));border:1px solid var(--line)}.balloon{position:absolute;width:64px;height:64px;margin-left:-32px;border-radius:50% 50% 46% 46%;border:0;background:var(--card);box-shadow:0 3px 0 var(--line);font-size:32px;font-weight:800;color:var(--indigo);touch-action:manipulation}.balloon:after{content:"";position:absolute;left:50%;bottom:-14px;width:1px;height:14px;background:var(--muted)}.balloon.hit{opacity:0;transform:scale(1.6);transition:opacity .18s,transform .18s;pointer-events:none}.balloon.shake{animation:shake .3s;background:var(--ng-soft)}@keyframes shake{25%{transform:translate(-6px)}75%{transform:translate(6px)}}.tora-cannon{position:absolute;left:50%;bottom:6px;width:56px;height:56px;margin-left:-28px;pointer-events:none}.made{font-size:22px;font-weight:700}.home-head{display:grid;grid-template-columns:52px 1fr;align-items:center;gap:12px;margin-bottom:14px}.home-head .logo{width:52px;height:52px}.home-head h1{margin:0;font-size:24px;font-weight:900}.home-sub{grid-column:1 / -1;margin:6px 0 0;font-size:16px}.hero{background:var(--card);border:1px solid var(--line);border-radius:20px;padding:16px 18px 18px;margin:0 0 14px;box-shadow:0 2px 0 var(--line);display:grid;gap:4px}.hero-meta{display:flex;flex-wrap:wrap;align-items:center;gap:8px;font-size:14px;color:var(--muted)}.hero-no{background:var(--indigo);color:var(--on-indigo);border-radius:6px;padding:1px 8px;font-weight:700}.hero-ko{font-size:26px;font-weight:700;line-height:1.35;margin-top:4px}.hero-ja{font-size:16px;color:var(--muted)}.hero .primary{margin-top:12px}.hero-done{font-size:18px;font-weight:700;margin:0}.section-label{margin:18px 0 8px;font-size:14px;font-weight:700;color:var(--muted);letter-spacing:.04em}.lesson-no{font-variant-numeric:tabular-nums}.lesson-row.is-done .lesson-no{color:var(--seal)}.done-stamp{margin:6px auto 18px;width:164px;height:164px;border-radius:50%;border:5px double var(--seal);color:var(--seal);background:var(--card);display:flex;flex-direction:column;align-items:center;justify-content:center;transform:rotate(-9deg);text-align:center;line-height:1.25}.done-stamp .ds-top{font-size:12px;letter-spacing:.2em;font-weight:700}.done-stamp .ds-no{font-size:34px;font-weight:900}.done-stamp .ds-rule{width:104px;border-top:2px solid currentColor;margin:6px 0}.done-stamp .ds-date{font-size:13px;font-weight:700;font-variant-numeric:tabular-nums}@media(prefers-reduced-motion:no-preference){.done-stamp{animation:dstamp .3s ease-out}@keyframes dstamp{0%{transform:rotate(-9deg) scale(1.5);opacity:0}to{transform:rotate(-9deg) scale(1);opacity:1}}}.result h2{text-align:center;font-size:24px;font-weight:900}.home-head .logo{width:96px;height:96px;object-fit:contain}.home-head{grid-template-columns:96px minmax(0,1fr) auto;gap:10px;align-items:center}.home-head h1{font-size:clamp(18px,5.2vw,24px);white-space:nowrap}.hero{overflow:hidden;padding-top:0}.hero-img{display:block;width:calc(100% + 36px);margin:0 -18px 12px;aspect-ratio:16 / 9;object-fit:cover;background:var(--line)}.hero-img.hero-tora{aspect-ratio:auto;width:160px;margin:12px auto 4px;background:none}.lesson-row{grid-template-columns:56px 1fr auto}.lesson-thumb{position:relative;width:56px;height:56px}.lesson-thumb img{width:56px;height:56px;border-radius:12px;object-fit:cover;display:block;background:var(--line)}.lesson-thumb .lesson-no{position:absolute;left:-6px;top:-6px;min-width:24px;height:24px;padding:0 5px;border-radius:12px;background:var(--card);border:1px solid var(--line);font-size:13px;line-height:22px;text-align:center}.lesson-row.is-done .lesson-thumb .lesson-no{background:var(--seal);border-color:var(--seal);color:#fff}.map-link{display:flex;align-items:center;gap:14px;width:100%;text-align:left;margin:0 0 4px;padding:10px 14px;background:var(--card);border:1px solid var(--line);border-radius:16px}.map-link img{width:56px;height:100px;object-fit:cover;border-radius:8px}.map-link strong{font-size:18px}.tora-pose{display:block;width:150px;height:150px;object-fit:contain;margin:4px auto 0}.welcome .tora-pose,.survey .tora-pose{width:160px;height:160px}.tora-side{flex:none;width:96px;height:96px;object-fit:contain}.narration.with-tora{display:flex;gap:10px;align-items:flex-start}.hint{display:flex;gap:10px;align-items:center}.hint .tora-side{width:64px;height:64px}.lesson-cover{display:block;width:100%;aspect-ratio:16 / 9;object-fit:cover;border-radius:18px;margin:0 0 14px;background:var(--line)}.lesson-cover.is-tora{aspect-ratio:auto;width:160px;margin:0 auto 8px;background:none}.line-row{display:flex;align-items:flex-start;gap:8px}.line-row .line-btn{flex:1;min-width:0}.face{flex:none;width:48px;height:48px;border-radius:50%;object-fit:cover;background:var(--tiger-soft);border:2px solid var(--card);box-shadow:0 0 0 1px var(--line);margin-top:6px}.me-who{display:flex;align-items:center;gap:8px}.me-who .face{width:36px;height:36px;margin:0}.cert{background-size:cover;background-position:center;border:0;box-shadow:0 2px 0 var(--line);color:#1e2633;aspect-ratio:1491 / 1055;max-width:100%;box-sizing:border-box;padding:7% 27% 7% 12%;display:flex;flex-direction:column;justify-content:center;gap:2px}.cert .cert-title{font-size:clamp(13px,3.6vw,20px);margin:2px 0 6px}.cert .cert-name{font-size:clamp(15px,4.2vw,22px);margin:0 0 4px}.cert .cert-body,.cert .cert-areas,.cert .cert-date{font-size:clamp(11px,2.9vw,15px);line-height:1.5;margin:0 0 4px}.cert .cert-brand{font-size:clamp(10px,2.6vw,14px)}.cert .cert-areas,.cert .cert-date{color:#4b4f58}.cert .cert-brand{color:#a9500f}.game-intro .tora-pose{margin-bottom:-6px}.tora-cannon{object-fit:cover;border-radius:50%}.map-page{max-width:560px;margin:0 auto;padding:calc(12px + env(safe-area-inset-top)) 16px 32px}.map-head{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:12px;margin-bottom:10px}.map-head h1{margin:0;font-size:24px;font-weight:900}.map-count{font-weight:700;color:var(--indigo);font-variant-numeric:tabular-nums}.map-wrap{position:relative;width:100%;max-width:480px;margin:0 auto}.map-img{display:block;width:100%;height:auto;border-radius:18px}.map-stop{position:absolute;width:34px;height:34px;margin:-17px 0 0 -17px;border-radius:50%;border:3px solid #1f3352;background:#fffdf8;color:#1f3352;font-size:13px;font-weight:800;padding:0;line-height:1;display:grid;place-items:center;font-variant-numeric:tabular-nums}.map-stop.done{background:#c23b2a;border-color:#c23b2a;color:#fff;transform:rotate(-8deg)}.map-stop.next{background:#d9772b;border-color:#fffdf8;color:#fff;box-shadow:0 0 0 4px #d9772b73;width:42px;height:42px;margin:-21px 0 0 -21px;font-size:15px}@media(prefers-reduced-motion:no-preference){.map-stop.next{animation:pulse 1.6s ease-in-out infinite}@keyframes pulse{50%{box-shadow:0 0 0 9px #d9772b26}}}.map-note{text-align:center}.stage-scene{position:relative;margin:0 0 16px;border-radius:20px;overflow:hidden;aspect-ratio:16 / 10;background:var(--line)}.stage-scene .stage-bg{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;object-fit:cover}.stage-scene .stage-tora{position:absolute;left:4px;bottom:-6px;width:46%;max-width:230px;height:auto;filter:drop-shadow(0 4px 6px rgba(43,33,24,.25))}.stage-scene .stage-bubble{position:absolute;right:12px;top:14px;max-width:54%;margin:0;padding:10px 14px;background:var(--card);border-radius:16px 16px 4px;font-size:15px;font-weight:700;line-height:1.5;box-shadow:0 2px 0 var(--line)}.onboard-steps{display:flex;gap:6px;list-style:none;margin:0 0 14px;padding:0;font-size:13px}.onboard-steps li{flex:1;text-align:center;padding:6px 4px;border-radius:999px;background:var(--card);border:1px solid var(--line);color:var(--muted)}.onboard-steps li.on{background:var(--indigo);border-color:var(--indigo);color:var(--on-indigo);font-weight:700}.onboard-steps li.done{color:var(--seal);border-color:var(--seal)}.map-stop.onboard{width:30px;height:30px;margin:-15px 0 0 -15px;font-size:14px}.map-tag{position:absolute;z-index:2;transform:translate(-50%,-50%);font-size:11px;font-weight:700;white-space:nowrap;background:var(--card);border-radius:6px;padding:0 5px;color:var(--ink);pointer-events:none;box-shadow:0 1px 0 var(--line)}.oops{position:absolute;right:6px;top:-30px;width:88px;height:88px;object-fit:contain}.feedback:has(.oops){padding-right:104px}.sky{background-size:cover;background-position:center bottom}.stage-scene.is-scene{overflow:visible;margin-bottom:44px}.stage-scene.is-scene .stage-bg{border-radius:20px}.stage-scene.is-scene .stage-bubble{top:auto;bottom:-34px;left:18%;right:8px;max-width:none;border-radius:4px 16px 16px;text-align:center;box-shadow:0 2px 8px #2b21181f}body{line-break:strict}p,h1,h2,h3,.test-rules li,.lesson-ja,.hero-ja,.note,.set-text{word-break:auto-phrase;text-wrap:pretty}[lang=ko]{word-break:normal;text-wrap:wrap}.practice li>span,.repeat li>span{min-width:0;overflow-wrap:anywhere}h1,h2{text-wrap:balance}.gear{width:52px;min-height:52px;border-radius:14px;border:1px solid var(--line);background:var(--card);color:var(--indigo);display:grid;place-items:center;gap:0;padding:4px 0;align-self:start;font-size:11px;font-weight:700;line-height:1.2}.gear svg{width:24px;height:24px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linejoin:round}.settings{max-width:560px;margin:0 auto;padding:calc(12px + env(safe-area-inset-top)) 16px 40px}.settings h1{margin:0;font-size:22px;text-align:center}.set-label{margin:20px 4px 8px;font-size:13px;font-weight:700;color:var(--muted);letter-spacing:.04em}.set-list{list-style:none;margin:0;padding:0;background:var(--card);border:1px solid var(--line);border-radius:16px;overflow:hidden}.set-list li+li{border-top:1px solid var(--line)}.set-row{width:100%;min-height:60px;display:flex;align-items:center;gap:12px;padding:10px 16px;background:none;border:0;text-align:left}.set-text{flex:1;display:grid}.set-text small{color:var(--muted);font-size:13px}.chev{font-size:24px;color:var(--muted);line-height:1}.switch{width:50px;height:30px;border-radius:15px;background:var(--line-strong);position:relative;flex:none;transition:background .15s}.switch span{position:absolute;top:3px;left:3px;width:24px;height:24px;border-radius:50%;background:#fff;box-shadow:0 1px 2px #0003;transition:left .15s}.switch.on{background:var(--ok)}.switch.on span{left:23px}.game-target{display:flex;align-items:stretch;gap:10px;margin:8px 0;flex-wrap:nowrap}.board{flex:1;min-width:0;display:flex;align-items:center;gap:12px;background:var(--card);border:1px solid var(--line);border-radius:16px;padding:8px 12px}.board-glyph{width:72px;height:72px;flex:none;display:grid;place-items:center;font-size:48px;font-weight:800;color:var(--indigo);background:var(--paper);border-radius:14px;border:2px dashed var(--line-strong)}.board-glyph.done{border:3px solid var(--seal);color:var(--seal);animation:glyphPop .35s ease-out}@keyframes glyphPop{0%{transform:scale(1.5)}to{transform:scale(1)}}.board .slots{display:flex;gap:6px;flex-wrap:wrap}.board .slot{min-width:46px;height:46px;font-size:13px}.board .slot.filled{font-size:24px}.game-side{display:flex;flex-direction:column;align-items:flex-end;justify-content:space-between;gap:6px}.game-side .listen{min-height:44px;padding:0 12px;font-size:14px}.quiver{display:flex;gap:2px}.q-arrow{width:10px;height:40px;transform:rotate(8deg)}.q-arrow.used{opacity:.18}.sky{touch-action:none;user-select:none;-webkit-user-select:none;cursor:crosshair;background-size:cover;background-position:center bottom}.mark{position:absolute;width:72px;height:72px;margin:-36px 0 0 -36px;border-radius:50%;pointer-events:none;background:radial-gradient(circle,#fffdf8 0,#fffdf8 27%,#c23b2a 28%,#c23b2a 40%,#fffdf8 41%,#fffdf8 55%,#1f3352 56%,#1f3352 70%,#fffdf8 71%,#fffdf8 85%,#c23b2a 86%,#c23b2a);box-shadow:0 3px #2b211840,0 0 0 2px #fffdf8}.mark-face{position:absolute;top:18px;right:18px;bottom:18px;left:18px;display:grid;place-items:center;border-radius:50%;background:#fffdf8;font-size:26px;font-weight:800;color:#1f3352;line-height:1}.mark.res-ok{animation:wobble .45s ease-out}.mark.res-ok .mark-face{background:#e2efea;color:#2e6b5e}.mark.res-ng{animation:wobble .45s ease-out;filter:grayscale(.6);opacity:.75}.mark.is-gone{opacity:0;transform:scale(.7);transition:opacity .35s,transform .35s}@keyframes wobble{0%{transform:rotate(0)}25%{transform:rotate(-9deg) scale(1.06)}55%{transform:rotate(6deg)}to{transform:rotate(0)}}.mark .stuck{position:absolute;width:14px;height:64px;transform-origin:50% 0;pointer-events:none}.aim-line{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;pointer-events:none;overflow:visible;z-index:3}.aim-line line{stroke:#1f3352;stroke-width:3;stroke-dasharray:2 9;stroke-linecap:round}.aim-line circle{fill:#c23b2a1f;stroke:#c23b2a;stroke-width:3}.trail{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;pointer-events:none;z-index:3}.trail circle{fill:#fffdf8}.arrow-fly{position:absolute;width:14px;height:64px;pointer-events:none;z-index:4;filter:drop-shadow(0 2px 2px rgba(43,33,24,.35))}.jamo-pop{position:absolute;z-index:5;transform:translate(-50%,-50%);font-size:40px;font-weight:900;color:#2e6b5e;text-shadow:0 2px 0 #fffdf8,0 0 8px #fffdf8;pointer-events:none;animation:jamoUp .55s ease-in forwards}@keyframes jamoUp{0%{transform:translate(-50%,-50%) scale(.6);opacity:0}25%{transform:translate(-50%,-90%) scale(1.25);opacity:1}to{transform:translate(-50%,-360%) scale(.7);opacity:0}}.game-banner{position:absolute;left:50%;top:40%;z-index:6;transform:translate(-50%,-50%);display:grid;justify-items:center;gap:2px;padding:12px 26px;border-radius:18px;background:#fffdf8f2;box-shadow:0 4px 16px #2b211840;font-size:56px;font-weight:900;line-height:1.1;animation:glyphPop .3s ease-out}.game-banner small{font-size:14px;font-weight:700;color:#5b5f68}.game-banner.ok{color:#c23b2a;border:3px solid #c23b2a}.game-banner.ng{color:#1f3352}.archer{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:2}@media(prefers-reduced-motion:reduce){.mark.res-ok,.mark.res-ng,.jamo-pop,.game-banner,.board-glyph.done{animation:none}}.archer-img{position:absolute;bottom:0;left:calc(50% - 135px);width:150px;height:150px;object-fit:contain;filter:drop-shadow(0 3px 4px rgba(43,33,24,.3))}.nocked{position:absolute;left:50%;bottom:104px;width:16px;height:74px;transform-origin:50% 100%;z-index:3}.archer-img.front{left:calc(50% - 75px)}
