:root{--bg: #f4f1ff;--bg-2: #e9f6ff;--card: #ffffff;--ink: #2a2250;--muted: #6b6690;--line: #e4defa;--primary: #7c5cff;--primary-dark: #5a3fc9;--sun: #ffb020;--good: #22b573;--warn: #f59e0b;--bad: #ef4444;--red: #ff3b3b;--cyan: #22e0f0;--radius: 22px;--shadow: 0 6px 0 rgba(42, 34, 80, .06), 0 12px 28px rgba(42, 34, 80, .08);--display: "Fredoka", "Nunito", system-ui, sans-serif;color-scheme:light;font-family:Nunito,system-ui,-apple-system,Segoe UI,Roboto,sans-serif;line-height:1.5}*{box-sizing:border-box}html,body{margin:0;color:var(--ink);background:var(--bg)}body{min-height:100dvh;-webkit-font-smoothing:antialiased;background:radial-gradient(1200px 500px at 10% -10%,#ffe7f1 0%,transparent 60%),radial-gradient(900px 500px at 100% 0%,#dff4ff 0%,transparent 60%),var(--bg);background-attachment:fixed}button,input,select,textarea{font:inherit;color:inherit}a{color:var(--primary-dark);font-weight:700}h1,h2,h3{font-family:var(--display);line-height:1.15;margin:0 0 .4em;font-weight:600}h1{font-size:clamp(1.7rem,4.5vw,2.4rem)}h2{font-size:1.45rem}h3{font-size:1.12rem}p{margin:0 0 .8em}.app{min-height:100dvh;display:flex;flex-direction:column}.top{display:flex;align-items:center;gap:12px;padding:10px 16px;position:sticky;top:0;z-index:5;background:#ffffffd9;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-bottom:2px solid var(--line)}.brand{display:flex;align-items:center;gap:10px;font-family:var(--display);font-weight:700;font-size:1.35rem;cursor:pointer;color:var(--primary-dark)}.tabs{display:flex;gap:6px;margin-left:auto}.tabs button{display:inline-flex;align-items:center;gap:6px;background:none;border:0;padding:8px 14px;border-radius:999px;color:var(--muted);cursor:pointer;font-weight:800}.tabs button.on{background:var(--primary);color:#fff}.tabs button:not(.on):hover{background:#efeaff;color:var(--ink)}.page{width:100%;max-width:980px;margin:0 auto;padding:24px 16px 48px;flex:1}.narrow{max-width:620px;margin:0 auto}.foot{text-align:center;color:var(--muted);font-size:.82rem;padding:18px 16px 24px}.card{background:var(--card);border-radius:var(--radius);padding:20px;box-shadow:var(--shadow);border:2px solid var(--line)}.stack>*+*{margin-top:14px}.row{display:flex;gap:12px;align-items:center;flex-wrap:wrap}.grid{display:grid;gap:16px;grid-template-columns:repeat(auto-fill,minmax(260px,1fr))}.muted{color:var(--muted)}.small{font-size:.9rem}.center{text-align:center}.spacer{flex:1}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:10px 20px;min-height:46px;border-radius:16px;cursor:pointer;font-weight:800;letter-spacing:.01em;background:#fff;color:var(--ink);border:2px solid var(--line);box-shadow:0 4px 0 var(--line);transition:transform .08s,box-shadow .08s,filter .15s}.btn:hover{filter:brightness(1.03)}.btn:active{transform:translateY(3px);box-shadow:0 1px 0 var(--line)}.btn.primary{background:var(--primary);border-color:var(--primary-dark);color:#fff;box-shadow:0 4px 0 var(--primary-dark)}.btn.primary:active{box-shadow:0 1px 0 var(--primary-dark)}.btn.sun{background:var(--sun);border-color:#d98a00;color:#3a2400;box-shadow:0 4px #d98a00}.btn.danger{color:var(--bad)}.btn.ghost{background:none;border-color:transparent;box-shadow:none}.btn:disabled{opacity:.5;cursor:not-allowed;transform:none}.btn.big{padding:14px 28px;font-size:1.15rem;min-height:56px;border-radius:20px}.btn.icon{padding:0;width:46px}.field{display:grid;gap:6px;font-weight:700}.field small{font-weight:600;color:var(--muted)}input[type=text],input[type=password],input[type=number],input[type=email],select{width:100%;padding:12px 14px;border-radius:14px;border:2px solid var(--line);background:#fbfaff;font-weight:600}input:focus-visible,select:focus-visible,.btn:focus-visible{outline:3px solid #b9a8ff;outline-offset:2px}input[type=range]{width:100%;accent-color:var(--primary)}.choice{display:grid;gap:10px;grid-template-columns:1fr 1fr}.choice button{padding:16px;border-radius:16px;border:3px solid var(--line);background:#fff;cursor:pointer;font-weight:800;display:flex;align-items:center;justify-content:center;gap:8px}.choice button.on{border-color:var(--primary);background:#f1edff}.notice{border-radius:16px;padding:14px 16px;background:#fff7e6;border:2px solid #ffe2a8}.notice.bad{background:#fff1f1;border-color:#ffd0d0}.notice.good{background:#e9fbf2;border-color:#b8efd3}.error{color:var(--bad);font-weight:700}ul.clean{margin:0;padding-left:1.2em}ul.clean li+li{margin-top:6px}.steps{display:flex;gap:6px;margin-bottom:18px}.steps span{flex:1;height:8px;border-radius:8px;background:var(--line)}.steps span.on{background:var(--primary)}.pill{display:inline-flex;align-items:center;gap:6px;padding:4px 12px;border-radius:999px;background:#f1edff;font-weight:800;font-size:.85rem;color:var(--primary-dark)}.mascot .wing-l,.mascot .wing-r{transform-box:fill-box}.mascot.wave .wing-r{transform-origin:0% 0%;animation:wave 1.6s ease-in-out infinite}.mascot .pupil{animation:look 5s ease-in-out infinite}@keyframes wave{0%,60%,to{transform:rotate(0)}70%{transform:rotate(-22deg)}85%{transform:rotate(8deg)}}@keyframes look{0%,40%,to{transform:translate(0)}50%,70%{transform:translate(4px)}}.float{animation:float 4s ease-in-out infinite}@keyframes float{50%{transform:translateY(-8px)}}.mascot-says{display:flex;align-items:center;gap:12px}.bubble{position:relative;background:#fff;border:2px solid var(--line);border-radius:20px;padding:12px 16px;font-weight:700;box-shadow:var(--shadow)}.bubble:before{content:"";position:absolute;left:-10px;top:50%;width:16px;height:16px;background:#fff;border-left:2px solid var(--line);border-bottom:2px solid var(--line);transform:translateY(-50%) rotate(45deg)}.hero{display:flex;align-items:center;gap:18px;padding:22px;border-radius:28px;color:#fff;position:relative;overflow:hidden;background:linear-gradient(135deg,#7c5cff,#a16bff 55%,#ff7ab6);box-shadow:var(--shadow)}.hero h1{color:#fff;margin-bottom:4px}.hero p{margin:0;opacity:.95;font-weight:700}.hero .cloud{position:absolute;background:#ffffff2e;border-radius:999px}.stats{display:grid;gap:12px;grid-template-columns:repeat(auto-fit,minmax(150px,1fr))}.stat{background:#fff;border-radius:20px;padding:14px 16px;box-shadow:var(--shadow);border:2px solid var(--line);display:flex;align-items:center;gap:12px}.stat .ic{width:44px;height:44px;border-radius:14px;display:grid;place-items:center;flex:none}.stat .v{font-family:var(--display);font-size:1.5rem;font-weight:700;line-height:1.1}.stat .l{font-size:.8rem;color:var(--muted);font-weight:700}.progress-bar{height:14px;background:#ece7ff;border-radius:999px;overflow:hidden}.progress-bar span{display:block;height:100%;background:linear-gradient(90deg,#22b573,#7be0a8);border-radius:999px;transition:width .4s}.game-card{position:relative;display:flex;flex-direction:column;background:#fff;border-radius:24px;overflow:hidden;border:3px solid var(--line);box-shadow:var(--shadow);cursor:pointer;text-align:left;padding:0;transition:transform .15s,box-shadow .15s}.game-card:hover{transform:translateY(-3px)}.game-card .art{aspect-ratio:16 / 10;position:relative}.game-card .art canvas{width:100%;height:100%;display:block}.game-card .body{padding:14px 16px 16px;display:flex;flex-direction:column;gap:4px;flex:1}.game-card .name{font-family:var(--display);font-size:1.2rem;font-weight:600}.game-card .meta{display:flex;align-items:center;gap:8px;margin-top:auto;padding-top:8px}.game-card.done{border-color:#9fe3c1}.game-card .done-badge{position:absolute;top:10px;right:10px;background:var(--good);color:#fff;border-radius:999px;padding:4px 10px;font-weight:800;font-size:.8rem;display:inline-flex;align-items:center;gap:4px;box-shadow:0 3px #15925a}.stars-earned{color:var(--sun);letter-spacing:1px}.stickers{display:grid;gap:12px;grid-template-columns:repeat(auto-fill,minmax(120px,1fr))}.sticker{background:#fff;border:2px dashed var(--line);border-radius:20px;padding:14px 8px;text-align:center}.sticker .e{font-size:2.2rem;line-height:1.2}.sticker b{display:block;font-size:.9rem}.sticker small{color:var(--muted);font-size:.75rem}.sticker.locked .e{filter:grayscale(1);opacity:.35}.sticker.earned{border-style:solid;border-color:#ffd98a;background:#fffaf0}.chart{width:100%;height:auto;display:block}.chart text{fill:var(--muted);font-size:11px;font-weight:700}.auth-wrap{min-height:100dvh;display:grid;place-items:center;padding:24px 16px}.auth{width:100%;max-width:440px}.auth .switch{display:grid;grid-template-columns:1fr 1fr;background:#ece7ff;border-radius:16px;padding:4px}.auth .switch button{border:0;background:none;padding:10px;border-radius:12px;font-weight:800;cursor:pointer;color:var(--muted)}.auth .switch button.on{background:#fff;color:var(--ink);box-shadow:0 2px 0 var(--line)}.stage{position:fixed;top:0;right:0;bottom:0;left:0;background:#000;display:flex;flex-direction:column;z-index:10}.stage-bar{display:flex;align-items:center;gap:10px;padding:8px 12px;background:#000;color:#8890a0;font-size:.95rem;border-bottom:1px solid #1a1a1a}.stage-bar .btn{min-height:38px;padding:6px 12px;background:#111;border-color:#262626;color:#aab;box-shadow:none;font-weight:700}.stage-body{flex:1;position:relative;overflow:hidden;display:flex;align-items:center;justify-content:center}.stage-body canvas{display:block;touch-action:none}.pixelated{image-rendering:pixelated}.overlay{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;background:#0a081ed1;padding:16px;z-index:2;overflow-y:auto}.overlay .card{max-width:520px;width:100%}.demo-box{border-radius:18px;overflow:hidden;border:3px solid var(--line);aspect-ratio:16 / 10}.demo-box canvas{width:100%;height:100%;display:block}.howto{counter-reset:s;list-style:none;padding:0;margin:0;display:grid;gap:8px}.howto li{counter-increment:s;display:flex;gap:10px;align-items:center;font-weight:700}.howto li:before{content:counter(s);width:28px;height:28px;flex:none;border-radius:50%;display:grid;place-items:center;background:var(--primary);color:#fff;font-family:var(--display)}.reward-stars{font-size:3rem;letter-spacing:6px}.reward-stars .off{filter:grayscale(1);opacity:.25}.pop-in{animation:pop .5s cubic-bezier(.2,1.6,.4,1) both}@keyframes pop{0%{transform:scale(.3);opacity:0}}.pad{display:flex;gap:10px;justify-content:center;padding:10px;flex-wrap:wrap}.pad .btn{min-width:64px;min-height:58px;font-size:1.4rem;background:#111;border-color:#262626;color:#9aa;box-shadow:none}.swatch{display:inline-block;width:.9em;height:.9em;border-radius:4px;vertical-align:-.1em}.table-wrap{overflow-x:auto;background:#fff;border-radius:var(--radius);border:2px solid var(--line)}table.data{width:100%;border-collapse:collapse;font-size:.92rem}table.data th,table.data td{padding:10px 12px;text-align:left;border-bottom:1px solid var(--line);white-space:nowrap}table.data th{font-size:.78rem;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);background:#faf8ff}table.data tr.click{cursor:pointer}table.data tr.click:hover td{background:#f7f4ff}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}}@media(max-width:640px){.top{flex-wrap:wrap}.tabs{margin-left:0;width:100%;justify-content:space-between}.tabs button{padding:6px 10px}.tabs button .lbl{font-size:.85rem}.choice{grid-template-columns:1fr}.hero{flex-direction:column;text-align:center}}
