@font-face{font-family:Fredoka;src:url(../fonts/Fredoka.ttf) format("truetype");font-weight:300 700;font-display:swap}
:root{--beach:#2EA8E6;--sun:#FFC93C;--grass:#5CC25B;--coral:#FF7A6B;--sand:#F7E3B5;--cream:#FFF8EC;--ink:#3B2A20;--purple:#8E5BD6;--bg1:#BFE9FF;--bg2:#FFF8EC;--card:#fff;--text:var(--ink)}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{margin:0;min-height:100%}
body{font-family:Fredoka,ui-rounded,"Arial Rounded MT Bold",system-ui,sans-serif;color:var(--text);background:linear-gradient(180deg,var(--bg1),var(--bg2) 60%);background-attachment:fixed;min-height:100vh;min-height:100dvh;-webkit-user-select:none;user-select:none;overscroll-behavior:none;padding:env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left)}
body.bed{--bg1:#141B4D;--bg2:#3D3486;--card:#232A6E;--text:#F3EFFF}
img{max-width:100%;height:auto;display:block;-webkit-user-drag:none}
a{color:inherit;text-decoration:none}
.top{display:flex;align-items:center;gap:12px;padding:10px 14px;position:sticky;top:0;z-index:20}
.top h1{flex:1;margin:0;font-size:clamp(22px,4.5vw,36px);text-align:center;color:#fff;-webkit-text-stroke:2px var(--ink);paint-order:stroke fill;text-shadow:0 4px 0 var(--ink);letter-spacing:.5px}
.ib{width:64px;height:64px;border-radius:22px;border:4px solid var(--ink);background:#fff;box-shadow:0 5px 0 var(--ink);display:grid;place-items:center;cursor:pointer;padding:4px;flex:none}
.ib img{width:100%;height:100%;object-fit:contain}
.ib.home{background:var(--sun);overflow:hidden;padding:0}
.ib.home img{object-fit:cover;border-radius:16px}
.ib:active,.btn:active,.tile:active{transform:translateY(4px);box-shadow:0 1px 0 var(--ink)}
body.bed .ib{background:#C9C3F2}
.wrap{max-width:1100px;margin:0 auto;padding:8px 16px 40px}
.btn{font:inherit;font-weight:600;font-size:22px;border:4px solid var(--ink);border-radius:24px;box-shadow:0 5px 0 var(--ink);background:var(--sun);color:var(--ink);padding:12px 22px;cursor:pointer;display:inline-flex;align-items:center;gap:10px;min-height:60px}
.btn.blue{background:var(--beach);color:#fff}.btn.green{background:var(--grass)}.btn.coral{background:var(--coral)}.btn.purple{background:var(--purple);color:#fff}.btn.white{background:#fff}
.btn.on{outline:5px solid #fff;outline-offset:2px}
.grid{display:grid;gap:18px;grid-template-columns:repeat(auto-fill,minmax(150px,1fr))}
.tile{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;background:var(--card);border:4px solid var(--ink);border-radius:26px;box-shadow:0 6px 0 var(--ink);padding:14px;text-align:center;font-weight:600;font-size:22px;cursor:pointer;min-height:150px;overflow:hidden;color:var(--text)}
.tile img.ic{width:88px;height:88px;object-fit:contain}
.tile img.cover{width:100%;aspect-ratio:16/9;object-fit:cover;border-radius:16px}
.tile.c1{background:#FFE7A0}.tile.c2{background:#BDE8FF}.tile.c3{background:#CDEFC2}.tile.c4{background:#D9CCF5}.tile.c5{background:#FFD0C8}
body.bed .tile.c1,body.bed .tile.c2,body.bed .tile.c3,body.bed .tile.c4,body.bed .tile.c5{background:#2E3584}
.hero{position:relative;border:4px solid var(--ink);border-radius:30px;overflow:hidden;box-shadow:0 6px 0 var(--ink);margin-bottom:18px}
.hero img{width:100%;height:auto;display:block;aspect-ratio:16/8;object-fit:cover}
.hero .title{position:absolute;left:0;right:0;top:10px;text-align:center;font-size:clamp(26px,6vw,58px);font-weight:700;color:#fff;-webkit-text-stroke:3px var(--ink);paint-order:stroke fill;text-shadow:0 5px 0 var(--ink);line-height:1.05;padding:0 10px}
.home-grid{display:grid;gap:16px;grid-template-columns:repeat(2,1fr)}
@media(min-width:760px){.home-grid{grid-template-columns:repeat(4,1fr)}}
.home-grid .tile{min-height:170px;font-size:26px}
.home-grid .tile img.ic{width:100px;height:100px}
.small-row{display:flex;gap:14px;justify-content:center;margin-top:20px;flex-wrap:wrap}
.center{text-align:center}
.big{font-size:clamp(26px,5vw,44px);font-weight:700}
.panel{background:var(--card);border:4px solid var(--ink);border-radius:26px;box-shadow:0 6px 0 var(--ink);padding:18px 20px;margin:14px 0;font-size:19px;line-height:1.45;-webkit-user-select:text;user-select:text}
.panel h2{margin:0 0 8px;font-size:26px}
/* story reader */
.reader{display:flex;flex-direction:column;gap:12px;max-width:1100px;margin:0 auto;padding:0 12px 24px}
.reader .art{border:4px solid var(--ink);border-radius:28px;overflow:hidden;box-shadow:0 6px 0 var(--ink);background:#000;position:relative}
.reader .art img{width:100%;aspect-ratio:16/9;object-fit:cover;transition:opacity .35s}
.reader .txt{background:var(--card);border:4px solid var(--ink);border-radius:24px;padding:14px 18px;font-size:clamp(22px,3.6vw,34px);font-weight:600;line-height:1.3;text-align:center;min-height:2.8em;display:flex;align-items:center;justify-content:center}
.reader .nav{display:flex;justify-content:space-between;align-items:center;gap:10px}
.dots{display:flex;gap:8px}.dots i{width:14px;height:14px;border-radius:50%;background:#fff;border:3px solid var(--ink)}.dots i.on{background:var(--coral)}
@media (orientation:landscape) and (min-width:900px){.reader{flex-direction:row;flex-wrap:wrap}.reader .art{flex:1 1 62%}.reader .side{flex:1 1 30%;display:flex;flex-direction:column;gap:12px;justify-content:center}.reader .nav{flex-basis:100%}}
/* modal */
.modal{position:fixed;inset:0;background:rgba(20,20,40,.6);display:grid;place-items:center;z-index:100;padding:16px}
.modal .box{background:#fff;color:var(--ink);border:4px solid var(--ink);border-radius:28px;padding:22px;max-width:440px;width:100%;text-align:center;box-shadow:0 8px 0 var(--ink)}
.modal h2{margin:0 0 6px}
.choices{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin:14px 0}
.hold{position:relative;overflow:hidden}
.hold .fill{position:absolute;left:0;top:0;bottom:0;width:0;background:rgba(92,194,91,.6);transition:width .1s linear}
.hold span{position:relative}
/* celebrate */
.celebrate{position:fixed;inset:0;pointer-events:none;z-index:90;overflow:hidden}
.celebrate i{position:absolute;top:-30px;width:16px;height:16px;border-radius:4px;animation:fall 1.8s ease-in forwards}
@keyframes fall{to{transform:translateY(110vh) rotate(540deg)}}
.toast{position:fixed;left:50%;bottom:24px;transform:translateX(-50%);background:#fff;border:4px solid var(--ink);border-radius:24px;padding:12px 20px;font-size:24px;font-weight:700;box-shadow:0 5px 0 var(--ink);z-index:95;display:flex;gap:10px;align-items:center;color:var(--ink)}
.toast img{width:54px;height:54px;border-radius:50%;object-fit:cover}
.wiggle{animation:wig .4s}@keyframes wig{25%{transform:translateX(-8px)}75%{transform:translateX(8px)}}
@media (prefers-reduced-motion:reduce){*{animation-duration:.01s!important;transition:none!important}}
/* night sky */
.stars{position:fixed;inset:0;pointer-events:none;z-index:-1}
.stars b{position:absolute;width:3px;height:3px;background:#fff;border-radius:50%;opacity:.7;animation:tw 3s infinite alternate}
@keyframes tw{to{opacity:.2}}
button,input{font-family:inherit}
.famgrid{display:grid;gap:18px;grid-template-columns:1fr}
.fam .desc{font-weight:400;font-size:18px}
.fam.small .desc{font-size:15px}
@media(min-width:700px){.famgrid{grid-template-columns:repeat(3,1fr)}.famgrid.two{grid-template-columns:repeat(2,1fr);max-width:820px;margin-left:auto;margin-right:auto}}
