@font-face{font-family:Nunito;src:url(assets/NunitoSans-Bold.woff2);font-weight:400 700;font-display:swap}@font-face{font-family:Nunito;src:url(assets/NunitoSans-Black.woff2);font-weight:800 1000;font-display:swap}@font-face{font-family:Comfortaa;src:url(assets/Comfortaa-Bold.woff2);font-weight:700;font-display:swap}
*{box-sizing:border-box}html{min-width:280px;scroll-behavior:smooth}body{margin:0;color:var(--ink);background:var(--bg);font-family:Nunito,sans-serif;font-size:18px;line-height:1.4;transition:background .25s,color .25s}button,select,a{-webkit-tap-highlight-color:transparent}button,select{font:inherit}button,a,select{touch-action:manipulation}button{cursor:pointer;color:inherit}button{border:0}a{color:inherit}button:disabled{cursor:wait}button:focus-visible,a:focus-visible,select:focus-visible{outline:4px solid var(--focus);outline-offset:5px}button:active{transform:translateY(3px) scale(.97)!important}.app{max-width:1800px;min-height:100svh;margin:auto;padding:clamp(16px,2.5vw,42px);display:flex;flex-direction:column}#header{display:flex;justify-content:space-between;align-items:center;gap:20px;position:relative;z-index:2}.brand{display:flex;align-items:center;gap:11px;text-decoration:none;font-weight:900;font-size:20px;line-height:1.1}.brand>span:last-child{display:grid;gap:5px}.brand small{font-size:10px;letter-spacing:.16em;text-transform:uppercase;font-weight:800}.brand-mark{display:grid;place-items:center;width:49px;height:49px;background:var(--accent);color:var(--onaccent);border-radius:17px;transform:rotate(-8deg)}.brand-mark .icon{width:28px;height:28px}.controls{display:flex;align-items:center;gap:10px}.tool{min-width:50px;min-height:50px;border:1.5px solid var(--line);border-radius:50%;display:grid;place-items:center;background:var(--surface)}.theme-control{position:relative;display:flex;align-items:center;gap:8px;min-height:50px;border:1.5px solid var(--line);border-radius:30px;background:var(--surface);padding:0 14px}.theme-control label{display:flex}.theme-control select{background:transparent;border:0;color:var(--ink);font-weight:800;font-size:14px;max-width:130px;min-height:46px;cursor:pointer}.theme-control option{background:var(--surface);color:var(--ink)}.icon{width:24px;height:24px;flex:none;vertical-align:middle}.art{width:100%;height:auto;display:block}.eyebrow{font-size:12px;font-weight:900;letter-spacing:.18em;text-transform:uppercase;margin:0 0 18px}h1,h2,p{margin-top:0}h1{font-size:clamp(42px,5.6vw,92px);font-weight:900;line-height:1.02;letter-spacing:-.055em;margin-bottom:22px}h1 em{font-style:normal;color:var(--accent-text)}.lead{font-size:clamp(17px,1.6vw,24px);max-width:34ch;margin:0}.small-note{font-size:13px;letter-spacing:.02em;color:var(--muted)}#main{flex:1;min-width:0;outline:0;padding-block:clamp(24px,4vw,64px) 25px}#footer{display:flex;align-items:center;justify-content:space-between;gap:18px;padding-top:20px;font-size:12px;font-weight:800;color:var(--muted)}#footer a{padding-block:15px;min-height:44px}.footer-note{display:flex;align-items:center;gap:8px}.footer-note .icon{width:15px}.primary,.secondary{min-height:64px;border-radius:24px;font-weight:900;font-size:20px;display:inline-flex;justify-content:center;align-items:center;gap:14px;padding:16px 26px;text-decoration:none;transition:transform .18s,background .18s}.primary{background:var(--accent);color:var(--onaccent);box-shadow:0 5px 0 var(--shadow)}.secondary{background:var(--surface);color:var(--ink);border:2px solid var(--line)}.primary:hover,.secondary:hover{transform:translateY(-3px)}.primary .icon{width:28px}.lucy{position:relative;margin:0;isolation:isolate}.lucy-portrait{position:relative;aspect-ratio:1;overflow:hidden;border-radius:50%;background:var(--accent2);border:8px solid var(--surface);box-shadow:0 8px 0 var(--shadow);transform-origin:50% 90%;animation:lucy-idle 5s ease-in-out infinite}.lucy img{width:100%;height:100%;object-fit:cover;object-position:50% 37%;display:block;transform:scale(1.04)}.lucy-portrait:after{content:"";position:absolute;inset:0;border-radius:inherit;border:2px solid #ffffff50;pointer-events:none}.lucy figcaption{position:relative;z-index:1;margin:-18px auto 0;width:max-content;background:var(--accent);color:var(--onaccent);font-size:12px;letter-spacing:.12em;font-weight:900;padding:10px 22px;border-radius:14px;transform:rotate(-4deg)}.lucy .speech{position:absolute;bottom:97%;left:0;right:0;text-align:center;background:var(--surface);color:var(--ink);padding:13px;border:2px solid var(--line);border-radius:24px;font-weight:900;font-size:16px;z-index:2}.lucy .speech:after{content:"";position:absolute;top:100%;left:48%;width:15px;height:15px;background:var(--surface);border-bottom:2px solid var(--line);border-right:2px solid var(--line);transform:translateY(-7px) rotate(45deg)}body.talking .lucy-portrait{animation:lucy-talk .34s ease-in-out infinite alternate}.mood-happy .lucy-portrait{animation:lucy-cheer .75s cubic-bezier(.2,.8,.3,1.3) 3}.spark{position:absolute;color:var(--accent-text);font-size:44px;pointer-events:none}.spark.one{top:8%;right:-8%}.spark.two{bottom:12%;left:-7%;font-size:30px}.screen{animation:arrive .4s cubic-bezier(.22,1,.36,1)}.letter-list button{position:relative}.letter-list .visited{position:absolute;right:5px;top:5px;background:var(--ink);color:var(--bg);border-radius:100%;display:grid;place-items:center;width:23px;height:23px}.visited .icon{width:16px;height:16px}.stepbar{display:flex;align-items:center;gap:20px;margin-bottom:25px}.back{display:flex;align-items:center;gap:9px;border:0;border-radius:30px;min-height:48px;padding:10px 16px;background:var(--surface);font-size:15px;font-weight:900}.steps{display:flex;gap:7px;align-items:center;margin-left:auto}.steps span{width:30px;height:7px;border-radius:8px;background:var(--line)}.steps .done{background:var(--accent)}.steps-label{font-size:12px;letter-spacing:.1em;text-transform:uppercase;font-weight:900}.play-title{font-size:clamp(30px,3.4vw,54px);letter-spacing:-.04em;line-height:1.1;margin-bottom:12px}.play-copy{font-size:18px;color:var(--muted);margin:0}.listen-letter{border-radius:32px;border:2px solid var(--line);background:var(--card);color:var(--card-ink);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;padding:20px;position:relative;min-height:230px;cursor:pointer}.listen-letter .glyph{font-weight:900;font-size:clamp(100px,12vw,190px);line-height:1.1;letter-spacing:-.06em}.listen-letter .glyph small{font-size:.65em;margin-left:.06em}.listen-letter .sound-label{display:flex;align-items:center;gap:9px;font-size:16px;font-weight:900}.sound-wave{display:flex;align-items:center;justify-content:center;gap:5px;height:25px}.sound-wave i{width:5px;height:7px;background:currentColor;border-radius:5px}body.talking .sound-wave i{animation:wave .55s ease-in-out infinite alternate;animation-delay:calc(var(--i)*-.13s)}.choices{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}.choice{padding:15px;border-radius:26px;min-height:170px;background:var(--card);color:var(--card-ink);border:2px solid var(--line);box-shadow:0 5px 0 var(--shadow);display:flex;align-items:center;flex-direction:column;justify-content:center;gap:5px;transition:transform .2s}.choice:hover{transform:translateY(-6px) rotate(-1deg)}.choice .art{max-width:180px;min-width:0}.choice .word{font-weight:900;font-size:22px;display:flex;align-items:center;gap:7px}.choice .word .icon{width:17px}.choice.nudge{animation:nudge .45s ease}.feedback{min-height:30px;color:var(--ink);font-weight:800;font-size:16px;margin:18px 0 0}.replay-prompt{display:flex;align-items:center;gap:10px;font-size:16px;font-weight:900;border-radius:25px;background:var(--surface);border:1.5px solid var(--line);padding:12px 18px;min-height:50px}.finish-actions{display:flex;gap:16px;justify-content:center;flex-wrap:wrap}.finish-title{font-size:clamp(42px,5vw,80px);line-height:1.05;margin:0 0 16px}.reward-art{position:relative}.reward-art>.art{max-width:200px;margin:auto}.burst-label{font-weight:900;font-size:13px;letter-spacing:.15em;text-transform:uppercase}.celebration .lucy{max-width:230px;margin:auto}.celebration .reward-letter{font-size:100px;font-weight:900;line-height:1}.celebration .word-line{font-size:24px;font-weight:900;margin:16px 0 25px}.celebration .small-note{margin:14px 0 0}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.skip{position:fixed;top:-100px;left:20px;z-index:100;background:var(--ink);color:var(--bg);padding:15px}.skip:focus{top:15px}#confetti{position:fixed;inset:0;overflow:hidden;pointer-events:none;z-index:20}.world{position:fixed;inset:0;z-index:-1;pointer-events:none;overflow:hidden}.storage-notice{font-size:12px}
@keyframes arrive{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:translateY(0)}}@keyframes lucy-idle{0%,75%,100%{transform:rotate(0)}82%{transform:rotate(-3deg)}90%{transform:rotate(3deg)}}@keyframes lucy-talk{from{transform:rotate(-1deg) scale(1)}to{transform:rotate(1deg) scale(1.025)}}@keyframes lucy-cheer{0%,100%{transform:translateY(0) rotate(0)}35%{transform:translateY(-18px) rotate(-6deg)}70%{transform:translateY(-4px) rotate(5deg)}}@keyframes wave{to{height:24px}}@keyframes nudge{20%,60%{transform:rotate(-3deg)}40%,80%{transform:rotate(3deg)}}@keyframes reveal{from{transform:scale(.7) rotate(-10deg);opacity:0}to{transform:scale(1) rotate(0);opacity:1}}
@media(min-width:1500px){#main{display:flex;flex-direction:column;justify-content:center}.screen{width:100%}}
@media(max-width:700px){.app{padding:18px}#header{gap:10px}.brand{font-size:16px;gap:8px}.brand small{font-size:8px}.brand-mark{width:40px;height:40px;border-radius:13px}.brand-mark .icon{width:23px}.controls{gap:7px}.tool{min-height:46px;min-width:46px}.theme-control{min-height:46px;padding:0 9px;gap:3px}.theme-control .icon{display:none}.theme-control select{font-size:12px;max-width:100px;min-height:44px}#main{padding-top:30px}#footer{font-size:10px;gap:12px;flex-wrap:wrap}.eyebrow{font-size:10px;margin-bottom:14px}.choices{gap:10px}.choice{padding:10px;min-height:140px;border-radius:20px}.choice .word{font-size:17px}.choice .word .icon{display:none}.stepbar{gap:10px;margin-bottom:22px}.steps-label{font-size:10px}.steps{gap:5px}.steps span{width:20px}.primary,.secondary{font-size:17px;min-height:60px;padding:15px 20px}.play-copy{font-size:16px}.listen-letter{min-height:210px}.feedback{font-size:14px}.lucy .speech{font-size:13px}.finish-actions{gap:12px}.finish-actions>*{flex:1}.celebration .word-line{font-size:21px}}
@media(max-width:350px){.brand small{display:none}.brand{font-size:14px}.brand-mark{display:none}.theme-control select{max-width:92px}.app{padding:14px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation:none!important;transition:none!important}#confetti{display:none}}
/* Flexible children must be allowed to shrink inside their grid tracks. */
.screen,.screen>*,.letter-list button{min-width:0}.letter-list button{width:100%}
.reward-stamp{position:absolute;bottom:18px;right:-14px;border-radius:50%;width:60px;height:60px;display:grid;place-items:center;background:var(--accent);color:var(--onaccent);border:3px solid var(--surface);transform:rotate(12deg)}
@media(min-width:651px){#main{display:flex;flex-direction:column;justify-content:center}.screen{width:100%}}
@media(min-width:651px) and (max-width:1499px) and (min-height:600px){#main{padding-top:30px;padding-bottom:20px}}
@media(max-width:650px){#footer{padding-top:12px}#footer #storage{display:none}}
/* Short browser windows scroll naturally; the learning controls retain their size. */
@media(min-width:651px) and (max-height:500px){.app{padding:14px 20px}#header{padding-bottom:10px}.brand small{display:none}#main{padding-top:16px!important;padding-bottom:16px!important}#footer{padding-top:4px}.stepbar{margin-bottom:16px}.play-title{font-size:30px}.play-copy{font-size:15px}.eyebrow{font-size:9px;margin-bottom:10px}.steps-label{font-size:10px}}

@media(max-width:650px){#header{flex-wrap:wrap}.brand{font-size:18px}.brand small{font-size:9px;letter-spacing:.03em}.controls{margin-left:auto}}

.brand small{text-transform:none}
