:root{--background:#f7f9fc;--surface:#fff;--surface-soft:#f0f3f8;--text:#172033;--muted:#667085;--border:#dde3ec;--primary:#4b5eea;--primary-hover:#3f51d0;--primary-soft:#eef0ff;--secondary:#32c6a6;--secondary-soft:#e8faf5;--accent:#ffb85c;--accent-soft:#fff3e1;--success:#257a55;--success-soft:#eaf7f0;--error:#c94242;--error-soft:#fcecec;--warning:#a96510;--s1:4px;--s2:8px;--s3:12px;--s4:16px;--s6:24px;--s8:32px;--s12:48px;--s16:64px;--s24:96px;--r-small:10px;--r-button:14px;--r-card:20px;--r-tool:24px;--r-pill:999px;--page:1120px;--tool:760px;--content:720px;--motion:.16s;--shadow:0 4px 20px #17203306;color-scheme:light;font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Noto Sans KR,sans-serif}*{box-sizing:border-box}body{background:var(--background);color:var(--text);margin:0;font-size:1rem;line-height:1.65}button,input,textarea{font:inherit}button,a,textarea{touch-action:manipulation}a{color:var(--primary);text-underline-offset:4px}button{cursor:pointer}button:disabled{cursor:default;opacity:.6}a:focus-visible,button:focus-visible,textarea:focus-visible,[tabindex]:focus-visible{outline:3px solid var(--primary);outline-offset:4px}[hidden]{display:none!important}h1,h2,h3,p{margin:0}h1,h2,h3{letter-spacing:-.035em;overflow-wrap:anywhere;font-weight:700}h1{font-size:2.25rem;line-height:1.25}h2{font-size:1.625rem;line-height:1.35}h3{font-size:1.25rem;line-height:1.4}p+p{margin-top:var(--s4)}.container{max-width:var(--page);padding:0 var(--s8);margin:auto}.site-header{border-bottom:1px solid var(--border);background:var(--surface);height:72px}.header-inner{justify-content:space-between;align-items:center;gap:var(--s6);height:100%;display:flex}.brand{align-items:center;gap:var(--s3);color:var(--text);white-space:nowrap;font-size:1.125rem;font-weight:750;text-decoration:none;display:flex}.brand-mark{border-radius:var(--r-small);background:var(--primary);color:#fff;width:36px;height:36px;box-shadow:0 3px 0 var(--primary-hover);place-items:center;font-size:1.125rem;display:grid}nav{gap:var(--s8);display:flex}nav a{color:var(--muted);font-size:.9375rem;font-weight:600;text-decoration:none}nav a:hover,nav a[aria-current]{color:var(--primary)}.skip{z-index:99;background:#fff;padding:12px;position:fixed;top:-100px;left:16px}.skip:focus{top:12px}.button{justify-content:center;align-items:center;gap:var(--s2);min-height:52px;padding:var(--s3) var(--s6);border-radius:var(--r-button);transition:background var(--motion),transform var(--motion);text-align:center;border:1px solid #0000;font-size:1rem;font-weight:700;text-decoration:none;display:inline-flex}.button:hover{transform:translateY(-1px)}.primary{background:var(--primary);color:#fff}.primary:hover{background:var(--primary-hover)}.secondary{background:var(--surface);color:var(--text);border-color:var(--border)}.secondary:hover{background:var(--surface-soft)}.text-button{color:var(--muted);padding:var(--s2);text-underline-offset:4px;background:0 0;border:0;text-decoration:underline}.text-link{font-weight:600}.eyebrow{color:var(--primary);letter-spacing:.04em;font-size:.875rem;font-weight:700}.muted{color:var(--muted);font-size:.875rem}.pill{border-radius:var(--r-pill);background:var(--primary-soft);color:var(--primary);padding:var(--s1) var(--s3);align-items:center;font-size:.875rem;font-weight:650;display:inline-flex}.hero{padding:var(--s24) 0 var(--s16);align-items:center;gap:var(--s12);grid-template-columns:1.5fr 1fr;display:grid}.hero h1{margin:var(--s6) 0;letter-spacing:-.045em;font-size:2.75rem;line-height:1.15}.hero h1 span{color:var(--primary)}.hero-description{color:var(--muted);max-width:460px;font-size:1.0625rem}.hero-actions{gap:var(--s3);margin:var(--s8) 0 var(--s4);flex-wrap:wrap;display:flex}.hero-actions .secondary{font-size:.9375rem}.hero-time{color:var(--muted);font-size:.875rem}.hero-art{border-radius:var(--r-tool);background:var(--primary-soft);padding:var(--s12) var(--s8);justify-content:center;align-items:center;gap:var(--s6);flex-direction:column;min-height:270px;display:flex;position:relative}.key-row{gap:var(--s3);display:flex}.decor-key{background:var(--surface);border:1px solid var(--border);border-bottom:5px solid var(--border);border-radius:var(--r-button);width:64px;height:64px;color:var(--primary);justify-content:center;align-items:center;font-size:1.75rem;font-weight:700;display:flex;transform:rotate(-5deg)}.decor-key:nth-child(2){background:var(--primary);color:#fff;border-color:var(--primary-hover);transform:translateY(-12px)rotate(4deg)}.decor-key:nth-child(3){transform:rotate(6deg)}.art-caption{color:var(--text);font-size:1rem;font-weight:600}.art-caption span{color:var(--success)}.steps{gap:var(--s6);grid-template-columns:repeat(3,minmax(0,1fr));display:grid}.step-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-card);padding:var(--s8);box-shadow:var(--shadow)}.step-number{border-radius:var(--r-small);background:var(--primary-soft);width:32px;height:32px;color:var(--primary);margin-bottom:var(--s6);justify-content:center;align-items:center;font-size:.875rem;font-weight:700;display:inline-flex}.step-card:nth-child(2) .step-number{background:var(--secondary-soft);color:var(--success)}.step-card:nth-child(3) .step-number{background:var(--accent-soft);color:var(--warning)}.step-card p{margin-top:var(--s3);color:var(--muted);font-size:.9375rem}.returning-card{justify-content:space-between;align-items:center;gap:var(--s6);margin-top:var(--s8);padding:var(--s6) var(--s8);border:1px solid var(--border);border-radius:var(--r-card);background:var(--surface);display:flex}.returning-card strong{margin-top:var(--s1);font-size:1.25rem;display:block}.home-parent{gap:var(--s12);padding:var(--s16) 0;border-bottom:1px solid var(--border);grid-template-columns:1fr 1.5fr;display:grid}.home-parent h2{margin-top:var(--s3)}.home-parent p{color:var(--muted)}.home-parent a{margin-top:var(--s4);display:inline-block}.guide{max-width:var(--content);margin:var(--s16) auto;overflow-wrap:anywhere}.guide h2{margin-top:var(--s12);margin-bottom:var(--s6)}.guide h3{margin:var(--s8) 0 var(--s3)}.guide p,.guide li{color:var(--muted)}.guide ul,.guide ol{padding-left:var(--s6)}.guide li+li{margin-top:var(--s3)}.guide details{padding:var(--s6) 0;border-bottom:1px solid var(--border)}.guide summary{cursor:pointer;font-weight:650}.guide details p{padding-top:var(--s3)}.related{gap:var(--s6);margin-top:var(--s8);flex-wrap:wrap;display:flex}.page-heading{max-width:var(--tool);margin:var(--s12) auto var(--s8)}.page-heading p{color:var(--muted);margin-top:var(--s3)}.tool-width{max-width:var(--tool);margin:auto}.session-bar{justify-content:space-between;align-items:center;gap:var(--s4);margin-bottom:var(--s4);display:flex}.timer{color:var(--muted);white-space:nowrap;font-size:.875rem}.timer strong{color:var(--text);font-variant-numeric:tabular-nums;margin-right:var(--s1);font-size:1.625rem}.tool-panel{padding:var(--s8);border:1px solid var(--border);border-radius:var(--r-tool);background:var(--surface);box-shadow:var(--shadow)}.prompt-label{color:var(--muted);justify-content:space-between;align-items:center;gap:var(--s3);margin-bottom:var(--s6);font-size:.875rem;display:flex}.typing-prompt{letter-spacing:.005em;white-space:pre-wrap;word-break:keep-all;overflow-wrap:anywhere;min-height:96px;margin-bottom:var(--s6);font-size:1.625rem;line-height:1.7}.typing-prompt .pending{color:var(--muted)}.typing-prompt .correct{color:var(--text)}.typing-prompt .current{color:var(--primary);border-bottom:3px solid var(--primary)}.typing-prompt .incorrect{color:var(--error);background:var(--error-soft);text-decoration:underline wavy var(--error);text-underline-offset:5px}.input-label{color:var(--muted);margin-bottom:var(--s2);font-size:.875rem;display:block}textarea{resize:vertical;border:1.5px solid var(--border);border-radius:var(--r-button);background:var(--background);width:100%;min-height:92px;color:var(--text);padding:var(--s4);transition:border-color var(--motion);font-size:1.25rem;line-height:1.7;display:block}textarea:focus{border-color:var(--primary);background:var(--surface);outline-offset:2px}textarea::placeholder{color:var(--muted);font-size:1rem}.input-meta{justify-content:space-between;align-items:flex-start;gap:var(--s4);color:var(--muted);margin-top:var(--s4);font-size:.875rem;display:flex}.accuracy{white-space:nowrap}.accuracy strong{color:var(--text)}.session-actions{justify-content:space-between;align-items:center;gap:var(--s4);color:var(--muted);margin-top:var(--s3);font-size:.875rem;display:flex}.notice{background:var(--accent-soft);border-radius:var(--r-small);padding:var(--s4);margin-top:var(--s4);overflow-wrap:anywhere;font-size:.875rem}.typing-running .site-header{background:var(--background)}.typing-running .brand-mark{background:var(--surface-soft);color:var(--muted);box-shadow:none}.typing-running .page-guide{visibility:hidden}.result-panel h2{margin:var(--s4) 0 var(--s8);outline:none}.complete-badge{padding:var(--s2) var(--s4);border-radius:var(--r-pill);background:var(--success-soft);color:var(--success);font-size:.875rem;font-weight:650;display:inline-block}.stats-grid{gap:var(--s4);grid-template-columns:repeat(3,minmax(0,1fr));display:grid}.stat-card{border:1px solid var(--border);border-radius:var(--r-card);background:var(--surface);padding:var(--s6)}.stat-card>span{color:var(--muted);font-size:.875rem}.stat-card>div{margin-top:var(--s2);gap:var(--s2);flex-wrap:wrap;align-items:baseline;display:flex}.stat-card strong{font-variant-numeric:tabular-nums;letter-spacing:-.05em;font-size:3rem;line-height:1.2}.stat-card small{color:var(--muted);font-size:.875rem}.weak-card{margin-top:var(--s6);padding:var(--s8);background:var(--primary-soft);border-radius:var(--r-card)}.weak-card h3{margin:var(--s2) 0 var(--s4)}.weak-card ul{margin:0;padding:0;list-style:none}.weak-card li{align-items:center;gap:var(--s4);justify-content:space-between;font-size:.875rem;display:flex}.weak-card li+li{margin-top:var(--s3)}.keycap{border-radius:var(--r-small);border:1px solid var(--border);padding:var(--s2) var(--s3);color:var(--primary);background:#fff;font-weight:650;display:inline-block}.comparison{margin-top:var(--s6);padding:var(--s6);border:1px solid var(--border);border-radius:var(--r-card)}.comparison h3{margin-bottom:var(--s3);font-size:1rem}.comparison strong{margin-left:var(--s2);color:var(--primary)}.result-actions{align-items:center;gap:var(--s3);margin:var(--s8) 0 var(--s6);flex-wrap:wrap;display:flex}.result-actions .primary{flex:1}.method-note{color:var(--muted);font-size:.875rem}.practice-heading{margin-bottom:var(--s8)}.practice-heading h2{margin:var(--s2) 0 var(--s2)}.practice-heading p{color:var(--muted);font-size:.875rem}.progress-box{align-items:center;gap:var(--s4);margin-top:var(--s6);color:var(--muted);font-size:.875rem;display:flex}progress{height:8px;accent-color:var(--primary);flex:1}.game-word{text-align:center;min-height:74px;padding:var(--s4) 0;font-size:2.25rem}.game-panel textarea{resize:none;text-align:center;min-height:66px}.level{padding:var(--s1) var(--s3);border-radius:var(--r-pill);background:var(--surface-soft);color:var(--text);font-size:.875rem}.level-NORMAL{background:var(--primary-soft)}.level-CHALLENGE{background:var(--accent-soft)}.kids-intro{padding:var(--s8);border-radius:var(--r-card);background:var(--surface);border:1px solid var(--border);scroll-margin-top:var(--s8)}.site-footer{border-top:1px solid var(--border);padding:var(--s8) 0;color:var(--muted);margin-top:var(--s16);font-size:.875rem}.footer-inner{justify-content:space-between;gap:var(--s6);flex-wrap:wrap;align-items:center;display:flex}.footer-links{gap:var(--s6);flex-wrap:wrap;display:flex}.footer-links a{color:var(--muted);text-decoration:none}.consent-panel{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-card);padding:var(--s6);margin-top:var(--s6)}.consent-actions{gap:var(--s3);margin-top:var(--s4);flex-wrap:wrap;display:flex}.policy-table{border-collapse:collapse;width:100%;margin:var(--s6) 0;font-size:.875rem}.policy-table th,.policy-table td{padding:var(--s3);border:1px solid var(--border);text-align:left;vertical-align:top}.policy-table th{background:var(--surface-soft)}@media (width>=1600px){.hero{padding-top:var(--s24)}}@media (width<=900px){.hero{gap:var(--s8);grid-template-columns:1fr .7fr}.hero-art{padding:var(--s8) var(--s4)}.decor-key{width:48px;height:52px;font-size:1.5rem}.steps{gap:var(--s4)}.step-card{padding:var(--s6)}.home-parent{gap:var(--s8)}}@media (width<=767px){.container{padding:0 var(--s4)}.site-header{height:64px}nav{gap:var(--s4)}nav a{font-size:.875rem}.brand{gap:var(--s2);font-size:1rem}.brand-mark{width:30px;height:30px}.hero{padding:var(--s12) 0;grid-template-columns:1fr}.hero h1{margin:var(--s4) 0;font-size:2rem;line-height:1.25}.hero-art{display:none}.hero-description{font-size:1rem}.hero-actions{margin-top:var(--s6)}.hero-actions .button{width:100%}.steps{gap:var(--s3);grid-template-columns:1fr}.step-card{padding:var(--s6);column-gap:var(--s4);grid-template-columns:32px 1fr;display:grid}.step-number{grid-row:span 2;margin:0}.step-card h3{font-size:1.125rem}.step-card p{margin-top:var(--s2);grid-column:2}.home-parent{padding:var(--s12) 0;gap:var(--s6);grid-template-columns:1fr}h1{font-size:1.75rem}h2{font-size:1.5rem}.page-heading{margin-top:var(--s8);margin-bottom:var(--s6)}.tool-panel{padding:var(--s6) var(--s4)}.typing-prompt{word-break:normal;min-height:100px;font-size:1.3125rem;line-height:1.75}.input-meta{gap:var(--s2);flex-direction:column}.stats-grid{grid-template-columns:1fr 1fr}.stat-card{padding:var(--s4)}.stat-card:first-child{grid-column:1/-1}.stat-card strong{font-size:2.5rem}.weak-card{padding:var(--s6)}.weak-card li{align-items:flex-start;gap:var(--s2);flex-direction:column}.result-actions{flex-direction:column;align-items:stretch}.returning-card{padding:var(--s6);flex-direction:column;align-items:flex-start}.game-word{min-height:74px;font-size:2rem}.guide{margin:var(--s12) auto}.kids-intro{padding:var(--s6)}.session-actions{align-items:flex-start}.session-actions span{padding-top:var(--s2);text-align:right}.footer-inner{flex-direction:column;align-items:flex-start}.footer-links{gap:var(--s4)}.policy-table{font-size:.875rem}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition:none!important;animation:none!important}}.step-card{min-width:0;min-height:224px}.step-card h3,.step-card p{word-break:keep-all;overflow-wrap:normal}.step-card p{line-height:1.8}.hero-time{word-break:keep-all;max-width:560px}.kids-heading,.kids-choice,.kids-intro,.beginner-done{word-break:keep-all;overflow-wrap:normal}.kids-heading h1,.kids-choice strong,.kids-intro h2,.kids-intro h3{overflow-wrap:normal}.kids-choices{gap:var(--s4);grid-template-columns:repeat(2,minmax(0,1fr));display:grid}.kids-choice{align-items:flex-start;gap:var(--s3);border:1px solid var(--border);border-radius:var(--r-card);padding:var(--s6);background:var(--surface);color:var(--text);transition:border-color var(--motion);flex-direction:column;text-decoration:none;display:flex}.kids-choice:hover{border-color:var(--primary)}.kids-choice strong{font-size:1.125rem;line-height:1.6}.kids-choice>span:not(.eyebrow):not(.text-link){color:var(--muted);font-size:.9375rem}.kids-choice .text-link{padding-top:var(--s2);color:var(--primary);margin-top:auto}.kids-intro h2{margin-top:var(--s2)}.beginner-stages{gap:var(--s2);margin:var(--s8) 0 var(--s6);flex-wrap:wrap;font-size:.8125rem;list-style:none;display:flex;padding:0!important}.beginner-stages li{background:var(--surface-soft);padding:var(--s2) var(--s3);border-radius:var(--r-small);margin:0!important}.beginner-stages li[aria-current]{color:var(--primary);background:var(--primary-soft);font-weight:700}.beginner-target{align-items:center;gap:var(--s2);margin:var(--s6) 0;flex-direction:column;display:flex}.beginner-target span{color:var(--muted);font-size:.875rem}.beginner-target strong{color:var(--primary);font-size:2.25rem;line-height:1.35}.virtual-keyboard{max-width:580px;padding:var(--s4) var(--s3);background:var(--surface-soft);border-radius:var(--r-button);margin:auto}.keyboard-row{justify-content:center;gap:4px;display:flex}.keyboard-row+.keyboard-row{margin-top:5px}.keyboard-key{border:1px solid var(--border);background:var(--surface);border-bottom-width:3px;border-radius:6px;flex-direction:column;flex:0 calc(10% - 3.6px);justify-content:center;align-items:center;min-width:0;min-height:54px;line-height:1.35;display:flex}.keyboard-key small{color:var(--muted);font-size:.625rem}.keyboard-key strong{font-size:1.125rem}.keyboard-key.highlighted{color:#fff;background:var(--primary);border-color:var(--primary-hover)}.keyboard-caption{text-align:center;margin:var(--s2) 0 var(--s6);font-size:.8125rem}.beginner-start textarea{resize:none;text-align:center;min-height:66px}.beginner-status{min-height:3.3em;margin:var(--s3) 0;font-size:.875rem}.beginner-done{padding-top:var(--s4)}.beginner-done .button{margin-top:var(--s6)}.game-panel .prompt-label{margin-bottom:var(--s2)}.game-panel .game-word{padding:var(--s2) 0;min-height:68px;margin-bottom:var(--s3)}.runner-track{background:var(--surface-soft);border:1px solid var(--border);border-radius:var(--r-button);padding:var(--s3) var(--s4);margin-bottom:var(--s4);transition:box-shadow var(--motion)}.track-summary{justify-content:space-between;align-items:center;gap:var(--s2);font-size:.875rem;display:flex}.track-summary strong span{color:var(--muted);font-weight:400}.combo{color:var(--primary);white-space:nowrap;border-radius:var(--r-small);padding:2px 6px;font-size:.8125rem;font-weight:700}.combo-spark{background:var(--primary-soft)}.runner-lane{margin:24px 10px 0;position:relative}.track-cells{grid-template-columns:repeat(20,minmax(0,1fr));gap:2px;height:12px;display:grid}.track-cells span{border:1px solid var(--border);background:#fff;border-radius:2px}.track-cells .filled{background:var(--primary);border-color:var(--primary)}.runner{color:var(--primary);line-height:1;transition:left .24s ease-out;position:absolute;top:-21px;transform:translate(-50%)}.runner-marker{background:var(--primary);color:#fff;text-align:center;border-radius:50%;width:20px;height:20px;font-size:10px;line-height:19px;animation:.24s ease-out runner-step;display:block;position:relative}.runner-marker:after{content:"";border-left:4px solid #0000;border-right:4px solid #0000;border-top:5px solid var(--primary);position:absolute;bottom:-4px;left:6px}.track-labels{color:var(--muted);margin-top:var(--s1);justify-content:space-between;font-size:.75rem;display:flex}.track-labels span:last-child{color:var(--text);font-weight:700}.track-feedback{color:var(--primary);text-align:center;margin-top:var(--s2);font-size:.8125rem}.glow{box-shadow:0 0 0 3px var(--primary-soft),0 0 16px #4b5eea26}@keyframes runner-step{50%{transform:translateY(-5px)scale(1.12)}}@media (width>=768px) and (width<=900px){.step-card{min-height:248px;padding:24px 20px}}@media (width<=767px){.step-card{align-content:center;min-height:148px}.kids-choices{grid-template-columns:1fr}.track-summary{flex-wrap:wrap}.track-summary strong{font-size:.8125rem}.track-summary strong span{display:block}.runner-track{padding:var(--s3)}.kids-intro{padding:var(--s6) var(--s4)}.keyboard-key{border-radius:4px;min-height:42px}.keyboard-key strong{font-size:.9375rem}.virtual-keyboard{padding:var(--s3) 4px}.keyboard-row{gap:2px}.keyboard-key{flex-basis:calc(10% - 1.8px)}.beginner-stages{gap:4px}.beginner-stages li{padding:6px 8px}}@media (width<=359px){.header-inner,nav{gap:var(--s3)}.brand{font-size:.9375rem}.step-card{column-gap:12px;padding:24px 20px}.keyboard-key strong{font-size:.875rem}.keyboard-key small{font-size:.5625rem}}.input-label-row{margin-bottom:var(--s2);color:var(--muted);flex-wrap:wrap;align-items:center;gap:4px 12px;font-size:.8125rem;display:flex}.input-label-row .input-label{margin-bottom:0}.combo-spark{animation:.35s ease-out combo-flash}@keyframes combo-flash{50%{transform:scale(1.08);box-shadow:0 0 12px #4b5eea66}}.stroke-sequence{flex-wrap:wrap;justify-content:center;gap:8px 14px;margin:12px 0;font-size:.9375rem;display:flex}.syllable-sequence{border:1px solid var(--border);border-radius:10px;flex-wrap:wrap;align-items:center;gap:4px;padding:8px 10px;display:flex}.syllable-sequence>strong{color:var(--text)}.stroke-done{color:var(--success)}.stroke-current{color:var(--primary);text-underline-offset:4px;font-weight:800;text-decoration:underline}.stroke-later,.stroke-arrow{color:var(--muted)}.current-stroke{text-align:center;min-height:1.7em;margin:12px 0 16px;font-weight:700;color:var(--primary)!important}.keyboard-key.key-done{background:var(--success-soft);border-color:var(--success);color:var(--success)}.shift-key{flex-basis:100px;min-height:32px;font-size:.8125rem}.beginner-target.succeeded strong,.beginner-target.succeeded span{color:var(--success)}.beginner-start textarea[readonly]{background:var(--success-soft)}.profile-panel{border:1px solid var(--border);border-radius:var(--r-button);background:var(--surface);word-break:keep-all;margin-top:16px;padding:6px 12px}.profile-row{flex-wrap:wrap;align-items:center;gap:10px;font-size:.8125rem;display:flex}.profile-row label{white-space:nowrap;font-weight:700}.profile-row select{font:inherit;border:1px solid var(--border);background:var(--background);min-width:110px;max-width:240px;min-height:32px;color:var(--text);border-radius:8px;flex:1;padding:4px 8px}.profile-row .text-button{white-space:nowrap;margin-left:auto;font-size:.8125rem}.profile-controls{gap:12px;padding:12px 0;font-size:.875rem;display:grid}.profile-controls p,.profile-note{color:var(--muted);font-size:.8125rem}.profile-controls>.button{justify-self:start}.profile-controls form>div{flex-wrap:wrap;gap:8px;margin-top:6px;display:flex}.profile-controls input{border:1px solid var(--border);min-width:0;max-width:240px;min-height:44px;font:inherit;border-radius:10px;padding:8px}.profile-controls .button{min-height:44px;padding:8px 12px;font-size:.875rem}.profile-note,.profile-notice:not(:empty){margin-top:6px;font-size:.8125rem}.container:has(>.profile-panel,>astro-island>.profile-panel)>.page-heading{margin-top:20px;margin-bottom:20px}.practice-input-help{color:var(--primary);margin-bottom:12px;font-size:.875rem}.game-panel{padding:24px}.profile-row select:focus-visible,.profile-controls input:focus-visible{outline:3px solid var(--primary);outline-offset:2px}@media (width<=359px){.profile-row{gap:6px}.profile-row label{font-size:.75rem}.profile-row select{max-width:180px}.profile-row .text-button{padding:4px}}.virtual-keyboard{padding:16px 6px}.keyboard-row{grid-template-columns:repeat(60,minmax(0,1fr));gap:0;display:grid}.keyboard-key{min-height:54px;margin:0 1px}.keyboard-key strong{font-size:1.125rem;line-height:1.4}.keyboard-key small{font-size:.625rem;font-weight:400;line-height:1.3}.keyboard-key.highlighted small{color:#e1e5ff}.shift-key{grid-row:1;min-height:54px;font-size:.8125rem;font-weight:650}.shift-left{grid-column:1/span 9}.shift-right{grid-column:50/span 11}.punctuation-key{color:var(--muted);font-size:.875rem}.profile-panel-home{background:var(--primary-soft);border-radius:var(--r-card);border-color:#d3d9fa;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:12px 20px;max-width:none;padding:18px 20px;display:grid}.profile-intro h2{color:var(--text);letter-spacing:-.025em;font-size:1.0625rem;line-height:1.4}.profile-intro p{color:var(--muted);word-break:keep-all;margin-top:4px;font-size:.8125rem;line-height:1.6}.profile-panel-home .profile-row{flex-wrap:nowrap;gap:10px}.profile-panel-home .profile-row label{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.profile-panel-home .profile-row select{background:var(--surface);width:200px;max-width:240px;min-height:44px;color:var(--primary-hover);border-radius:var(--r-small);border-color:#bac4f5;padding:8px 10px;font-size:.9375rem;font-weight:700}.profile-panel-home .profile-manage{white-space:nowrap;border-color:#c9d1ef;min-height:44px;padding:8px 14px;font-size:.875rem}.profile-panel-home .profile-controls,.profile-panel-home .profile-note,.profile-panel-home .profile-notice:not(:empty){grid-column:1/-1}.profile-panel-home .profile-notice:empty{display:none}.container:has(.profile-panel-home)>.hero{padding-top:var(--s12)}@media (width<=900px){.profile-panel-home{grid-template-columns:1fr}.profile-panel-home .profile-row{justify-content:flex-start}.profile-panel-home .profile-row select{flex:1;max-width:320px}}@media (width<=767px){.virtual-keyboard{padding:12px 2px}.keyboard-key,.shift-key{min-height:44px}.keyboard-key strong{font-size:clamp(.6875rem,2.6vw,1.125rem)}.keyboard-key small{font-size:clamp(.5rem,1.7vw,.625rem)}.shift-key{font-size:clamp(.625rem,2vw,.8125rem)}.profile-panel-home{gap:12px;margin-top:12px;padding:16px 12px}.profile-panel-home .profile-row{gap:8px}.profile-panel-home .profile-row select{width:0;min-width:0;max-width:none}.profile-panel-home .profile-manage{padding:8px 10px}.profile-intro p{font-size:.8125rem}}.onboarding-choice{word-break:keep-all;margin-top:24px}.onboarding-choice h2{overflow-wrap:normal;font-size:1.25rem}.onboarding-options{gap:10px;max-width:480px;margin-top:16px;display:grid}.onboarding-options .button{text-align:left;justify-content:flex-start}.onboarding-choice a[aria-disabled=true]{pointer-events:none}.onboarding-reward-note{color:var(--muted);margin-top:12px;font-size:.8125rem}.onboarding-choice>.kids-choices{margin-top:16px}.keyboard-key.home-reference{padding-bottom:5px;position:relative}.home-bump{opacity:.5;background:currentColor;border-radius:2px;width:8px;height:2px;position:absolute;bottom:3px;left:calc(50% - 4px)}.home-anchor{color:var(--muted)}.explorer-reward{border:1px dashed var(--border);border-radius:var(--r-card);background:var(--surface-soft);align-items:center;gap:16px;margin:16px 0 20px;padding:16px;display:flex}.explorer-reward strong{color:var(--text);font-size:.9375rem}.explorer-reward p{font-size:.8125rem;margin-top:4px!important}.explorer-sticker{border:1px dashed var(--muted);width:76px;min-height:88px;color:var(--muted);background:var(--surface);border-radius:16px;flex-direction:column;flex:0 0 76px;justify-content:center;align-items:center;padding:4px;display:flex}.explorer-sticker svg{width:64px;height:56px;display:block}.explorer-sticker span{white-space:nowrap;font-size:.625rem;font-weight:700}.explorer-reward.earned{border:1px solid var(--primary);background:var(--primary-soft)}.earned .explorer-sticker{color:var(--primary);border:2px solid var(--primary);transform:rotate(-3deg)}.earned strong{color:var(--primary)}.beginner-progress{color:var(--muted);align-items:center;gap:16px;margin-bottom:16px;font-size:.8125rem;display:flex}.beginner-progress span{white-space:nowrap}.beginner-progress progress{width:100%;min-width:0}.shift-instruction{border:1px solid var(--primary);border-radius:var(--r-card);background:var(--primary-soft);color:var(--primary);word-break:keep-all;grid-template-columns:40px 1fr;gap:4px 12px;margin:16px 0;padding:16px;display:grid}.shift-instruction>span{grid-row:span 2;font-weight:700}.shift-instruction small{color:var(--muted);font-size:.8125rem}.hint-toggle{margin:16px auto;display:flex}.beginner-review{margin:16px auto 0;display:block}.beginner-done .hero-actions .button{margin-top:0}@media (width<=767px){.onboarding-choice{margin-top:20px}.onboarding-options .button{padding:12px 16px;font-size:.9375rem}.explorer-reward{gap:10px;padding:12px}.explorer-sticker{flex-basis:64px;width:64px;min-height:78px}.explorer-sticker svg{width:54px;height:48px}.explorer-reward strong{font-size:.875rem}.shift-instruction{grid-template-columns:32px 1fr;gap:4px 8px;padding:12px}}@media (prefers-reduced-motion:reduce){.earned .explorer-sticker{transform:none}}.beginner-course-progress{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;display:flex}.beginner-course-progress .text-button{font-size:.8125rem}.beginner-start h3,.beginner-catalog h3,.group-complete h3{margin:16px 0 12px}.beginner-start .beginner-stages,.beginner-start .beginner-progress{margin:16px 0}.group-key-list{letter-spacing:.06em;margin:20px 0 8px;font-size:1.75rem;font-weight:700;color:var(--primary)!important}.recall-intro-copy{margin:16px 0 24px}.group-complete{padding:24px 0}.group-complete .hero-actions{margin-top:24px}.group-cards{grid-template-columns:1fr 1fr;gap:16px;margin:24px 0;display:grid}.group-card{border:1px solid var(--border);border-radius:var(--r-card);min-width:0;padding:20px}.group-card h4{margin:12px 0 4px;font-size:1.125rem}.group-card p{color:var(--primary)}.group-card .button{width:100%;margin-top:12px;padding:10px;font-size:.9375rem}.shift-instruction .shift-label{letter-spacing:.04em;color:var(--muted);grid-column:1/-1;margin-bottom:4px;font-size:.75rem;font-weight:700}.manual-keyboard-hint{margin:16px 0}.hint-lifetime{text-align:center;color:var(--muted);font-size:.8125rem}.keyboard-hint-panel{border:1px solid var(--border);border-radius:var(--r-card);background:var(--surface);padding:12px 8px}.manual-keyboard-hint .hint-toggle{margin:12px auto}.word-input-help{border-left:3px solid var(--primary);background:var(--primary-soft);padding:12px 14px;font-size:.9375rem;font-weight:650;color:var(--text)!important;margin:16px 0!important}.word-input-help.word-ready{border-color:var(--success);background:var(--success-soft)}.word-input-help.word-error{border-color:var(--error);background:var(--error-soft);color:var(--error)!important}.confirmed-word-feedback{background:var(--surface-soft);white-space:pre-wrap;overflow-wrap:anywhere;border-radius:8px;margin-bottom:16px;padding:12px 14px;font-size:1.375rem}.confirmed-word-feedback>span:first-child{color:var(--muted);font-size:.8125rem}.confirmed-word-feedback .incorrect{color:var(--error);background:var(--error-soft);text-decoration:underline wavy var(--error);text-underline-offset:5px}.beginner-status.word-error{font-weight:650;color:var(--error)!important}.explorer-reward .sticker-name{color:var(--primary);font-size:1rem;display:block}.explorer-sticker svg{width:68px;height:68px}.explorer-sticker{background:0 0;border:0;flex-basis:88px;width:88px;padding:0}.explorer-sticker span{font-size:.6875rem}.explorer-reward-copy small{color:var(--muted);font-size:.75rem}.explorer-reward.earned{text-align:center;border-width:2px;flex-direction:column;gap:16px;padding:28px 20px}.earned .explorer-sticker{border:0;flex-basis:auto;width:200px;transform:none}.earned .explorer-sticker svg{width:200px;height:200px}.earned .explorer-sticker span{font-size:1.25rem}.earned .sticker-name{font-size:1.375rem}.sticker-earned-label{background:var(--primary);color:#fff;border-radius:999px;margin:12px 0 4px;padding:4px 22px;font-size:1.25rem;font-weight:800;display:inline-block}.earned .explorer-reward-copy p{font-size:1rem}.game-panel .keyboard-key strong{font-size:1.125rem}.game-panel .keyboard-caption{font-size:.8125rem}@media (width<=767px){.group-cards{grid-template-columns:1fr}.group-key-list{font-size:1.375rem}.group-card{padding:16px}.keyboard-hint-panel{padding:12px 2px}.earned .explorer-sticker,.earned .explorer-sticker svg{width:180px}.earned .explorer-sticker svg{height:180px}.game-panel .keyboard-key strong{font-size:clamp(.6875rem,2.6vw,1.125rem)}}.beginner-input-label-row{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:8px 16px;margin:16px 0 8px;display:flex}.beginner-input-label-row .input-label{margin:0}.beginner-input-label-row .word-input-help{color:var(--text);background:var(--surface-soft);border-radius:6px;margin:0;padding:4px 8px;font-size:.9375rem}.beginner-input-label-row .word-ready{color:var(--success);background:var(--success-soft);font-weight:750}.beginner-start textarea.key-input-error{border:2px solid var(--error);background:var(--error-soft)}.key-error-comparison{background:var(--error-soft);color:var(--text);border-radius:8px;flex-wrap:wrap;gap:8px 20px;margin-top:12px;padding:12px 16px;display:flex}.key-error-comparison .incorrect{text-decoration:underline wavy var(--error);text-underline-offset:5px;color:var(--error)}.beginner-status.word-error{color:var(--error);font-weight:650}.recall-next{margin-top:12px}.recall-next p{margin-bottom:12px}.general-course-goal{background:var(--surface-soft);border-radius:8px;padding:12px 16px}.general-complete{margin:12px 0;padding:16px 20px;font-size:1.2rem}.beginner-entry p{color:var(--muted);margin:8px 0;font-size:.875rem}.game-panel .manual-keyboard-hint{margin:0 0 16px}.runner-completion-copy{color:var(--muted);margin-top:10px}@media (width<=767px){.beginner-input-label-row{flex-direction:column;align-items:flex-start;gap:6px}.key-error-comparison{flex-direction:column}.general-complete{font-size:1.05rem}}.game-panel .game-word{margin-bottom:8px;padding:4px 0}.game-panel .runner-track{margin-bottom:8px}.game-panel .manual-keyboard-hint{margin-bottom:4px}.game-panel .hint-toggle{min-height:44px;margin:4px auto;padding:8px 16px}.keyboard-key.enter-key{grid-column:48/span 13}.keyboard-key.space-key{grid-column:17/span 28;gap:3px}.delimiter-key .delimiter-label{line-height:1.25;font-size:.9375rem!important}.space-key-mark{border:1px solid;border-top:0;border-radius:0 0 2px 2px;width:36%;height:5px;display:block}.keyboard-confirm-row{grid-template-columns:repeat(60,minmax(0,1fr));margin-top:6px;display:grid}.delimiter-label{font-weight:750}.keyboard-key.delimiter-ready{background:var(--primary);color:#fff;border-color:var(--primary-hover);box-shadow:0 0 0 2px var(--primary);font-weight:800}.delimiter-input-help{color:var(--muted);font-size:.8125rem;line-height:1.5}.delimiter-input-help.word-ready{color:var(--success);background:var(--success-soft);border-radius:5px;padding:2px 6px;font-weight:750}.input-label-row{flex-wrap:wrap}.practice-focus{border:1px solid var(--border);border-left:4px solid var(--primary);background:var(--surface);border-radius:var(--r-button);margin:0 0 20px;padding:16px 20px}.practice-focus h3{margin-bottom:8px;font-size:1rem}.practice-focus p{margin-top:8px;font-size:.875rem}.result-panel .practice-focus{margin-top:24px}.runner-completion-badge{text-align:center;border:2px solid var(--primary);border-radius:var(--r-card);background:var(--primary-soft);flex-direction:column;align-items:center;margin:8px 0 24px;padding:24px 20px;display:flex}.runner-completion-badge svg{width:148px;height:148px;margin:12px 0;display:block}.runner-completion-badge>strong{color:var(--primary-hover);font-size:1.5rem;line-height:1.4}.runner-completion-badge .runner-completion-copy{color:var(--text);margin-top:8px}@media (width<=767px){.delimiter-key .delimiter-label{font-size:clamp(.6875rem,2.6vw,.9375rem)!important}.practice-focus{padding:14px 16px}.runner-completion-badge{padding:20px 16px}.runner-completion-badge svg{width:128px;height:128px}.runner-completion-badge>strong{font-size:1.3125rem}}.word-confirm-help{max-width:100%;color:var(--muted);gap:4px;font-size:.875rem;line-height:1.6;display:grid}.word-confirm-copy{overflow-wrap:anywhere}.confirm-keycap{vertical-align:baseline;border:1px solid var(--border);background:var(--surface);font:inherit;color:var(--text);white-space:nowrap;border-bottom-width:3px;border-radius:6px;padding:2px 8px;font-weight:750;display:inline-block}.confirm-keycap.delimiter-ready{background:var(--primary);border-color:var(--primary-hover);color:#fff}.word-confirm-help small{font-size:.8125rem}.runner-completion-badge{border:1px solid var(--border);background:var(--surface);padding:20px}.runner-completion-badge .eyebrow{color:var(--primary-hover)}.key-capture{border:2px dashed var(--muted);background:var(--surface-soft);cursor:pointer;color:var(--text);border-radius:12px;gap:10px;margin-top:16px;padding:16px 20px;display:grid}.key-capture:focus{outline:3px solid var(--primary);outline-offset:4px;border-style:solid}.key-capture-label{font-size:.875rem;font-weight:700}.key-capture .last-key-feedback{overflow-wrap:anywhere;font-size:1.15rem;line-height:1.6}.key-capture #key-capture-help{color:var(--muted);font-size:.875rem}.key-capture .key-found{color:var(--success)}.key-capture.key-input-error{border:2px solid var(--error);background:var(--error-soft)}#first-steps:has([data-compact=true])>:is(.eyebrow,h2,p){display:none}.beginner-start,.group-complete,.beginner-done,.beginner-target{scroll-margin-top:12px}.beginner-start[data-compact=true] :is(.explorer-reward.promised,.general-course-goal,.beginner-stages,.keyboard-caption,.recall-intro-copy){display:none}.beginner-start[data-compact=true] #beginner-help{margin:8px 0 0;font-size:.8125rem}.beginner-start[data-compact=true] h3{margin:4px 0;font-size:1.125rem}.beginner-start[data-compact=true] .group-key-list{margin:0;font-size:.875rem}.beginner-start[data-compact=true] .group-key-list+.muted{display:none}.beginner-start[data-compact=true] .beginner-progress{gap:8px;margin:4px 0}.beginner-start[data-compact=true] .beginner-target{flex-direction:row;justify-content:center;gap:12px;margin:4px 0}.beginner-start[data-compact=true] .beginner-target strong{font-size:1.75rem}.beginner-start[data-compact=true] .current-stroke{margin:0;font-size:.875rem}.beginner-start[data-compact=true] .virtual-keyboard{margin:4px 0;padding:6px}.beginner-start[data-compact=true] .keyboard-key{min-height:38px}.beginner-start[data-compact=true] .shift-instruction{gap:0 8px;margin:4px 0;padding:6px;font-size:.875rem}.beginner-start[data-compact=true] .shift-instruction .shift-label{margin:0}.beginner-start[data-compact=true] .key-capture{gap:2px;margin-top:8px;padding:6px 10px}.beginner-start[data-compact=true] .key-capture-label,.beginner-start[data-compact=true] #key-capture-help{font-size:.75rem}.beginner-start[data-compact=true] .last-key-feedback{font-size:1rem}.beginner-start[data-compact=true] .beginner-status{min-height:0;margin:4px 0}.beginner-start[data-compact=true] .beginner-course-progress .text-button{padding:0}.beginner-start[data-compact=true] .key-capture{margin:4px 0}.beginner-start[data-compact=true] :is(.key-capture-label,#key-capture-help){display:none}.beginner-start[data-compact=true] .beginner-target+.key-capture{padding:4px 8px}.beginner-start[data-compact=true] .shift-instruction small{font-size:.75rem}@media (height<=600px){.beginner-start[data-compact=true] .group-key-list{display:none}.beginner-start[data-compact=true] .keyboard-key{min-height:32px}.beginner-start[data-compact=true] .shift-instruction{font-size:.8125rem}.beginner-start[data-compact=true] .shift-label{display:none}.beginner-start .key-capture{gap:2px;margin:4px 0;padding:4px 8px}.beginner-start .key-capture-label{display:none}.beginner-start #key-capture-help{font-size:.75rem}}.course-overall{text-align:left;flex:1;min-width:0}.course-overall>strong,.beginner-target .course-overall>strong{color:var(--text);font-size:1.125rem;line-height:1.4;display:block}.course-overall>p{color:var(--muted);margin:4px 0;font-size:.8125rem;line-height:1.5}.course-segments{grid-template-columns:repeat(10,1fr);gap:3px;margin:6px 0;display:grid}.course-segments>span{background:var(--border);border-radius:3px;height:5px}.course-segments>.finished{background:var(--success)}.course-segments>.current{background:var(--primary)}.beginner-start .beginner-target{text-align:center;display:block}.beginner-start .current-target{justify-content:center;align-items:center;gap:12px;display:flex}.beginner-start .beginner-progress{flex-wrap:wrap;justify-content:center;align-items:center;gap:4px 10px;margin:6px 0;display:flex}.beginner-progress .lesson-phase{color:var(--primary);font-size:.9375rem}.beginner-start .beginner-progress progress{max-width:100px}.beginner-start[data-compact=true] .beginner-target strong[data-testid=beginner-target]{font-size:2.25rem}.beginner-start .key-capture .last-key-feedback.key-found{color:var(--muted);font-weight:500}.beginner-start .recall-intro-copy.recall-transition,.beginner-start[data-compact=true] .recall-intro-copy.recall-transition{background:var(--primary-soft);color:var(--primary);border-radius:var(--r-small);text-align:left;margin:8px 0;padding:8px 12px;font-size:.9375rem;font-weight:700;display:block}.group-complete>.course-overall,.beginner-done>.course-overall{margin-bottom:16px}@media (width<=767px){.beginner-course-progress:has(.course-overall){gap:4px}.beginner-course-progress>.course-overall{flex-basis:100%}}@media (height<=600px){.beginner-start .beginner-target{margin-bottom:4px}.beginner-start .current-stroke{margin:2px 0;font-size:.875rem}.beginner-start .virtual-keyboard{padding:6px}.beginner-start .keyboard-key{min-height:32px}}@media (width>=600px) and (height<=600px){.beginner-course-progress:has(.course-overall){position:relative}.beginner-course-progress>.course-overall{flex-basis:100%}.beginner-course-progress>.course-overall>strong{padding-right:150px}.beginner-course-progress>.text-button{position:absolute;top:0;right:0}.beginner-start[data-compact=true] .beginner-target strong[data-testid=beginner-target]{font-size:2rem}.beginner-start .current-stroke{min-height:0;line-height:1.2}.beginner-start[data-compact=true] .virtual-keyboard{padding:5px 6px}.course-segments{margin:4px 0}.course-overall>p{margin:2px 0}}
