:root{--bg1:#0b1640;--bg2:#3a1c71;--card:#ffffff;--ink:#1d1b3a;--a:#7c5cff;--b:#00c2ff;--c:#ffd23f;--soft:#eef0ff}
[data-theme=doll]{--bg1:#ff8fc7;--bg2:#ffd1ec;--a:#e83e8c;--b:#b05cff;--c:#ffe066;--soft:#fff0f8}
[data-theme=hero]{--bg1:#1f4fd8;--bg2:#3a8bff;--a:#e0242f;--b:#1f4fd8;--c:#ffd000;--soft:#eef4ff}
[data-theme=web]{--bg1:#120608;--bg2:#5a0b12;--a:#e3102b;--b:#2a2a2a;--c:#ff5a6e;--soft:#fff0f1}
[data-theme=space]{--bg1:#0b1640;--bg2:#3a1c71;--a:#7c5cff;--b:#00c2ff;--c:#ffd23f;--soft:#eef0ff}
[data-theme=dino]{--bg1:#2f7d32;--bg2:#a5d66b;--a:#ff8a00;--b:#2f7d32;--c:#ffe14d;--soft:#f1fbe8}
[data-theme=ocean]{--bg1:#035e8a;--bg2:#2ec5d3;--a:#ff6f61;--b:#0077b6;--c:#ffd166;--soft:#e8faff}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
body{margin:0;min-height:100vh;font-family:"Nunito","Trebuchet MS",system-ui,sans-serif;color:var(--ink);
background:radial-gradient(circle at 20% 10%,rgba(255,255,255,.25),transparent 40%),linear-gradient(160deg,var(--bg1),var(--bg2));background-attachment:fixed}
[data-theme=doll] body,body[data-theme=doll]{background-image:radial-gradient(#fff8 1.5px,transparent 2px),linear-gradient(160deg,var(--bg1),var(--bg2));background-size:28px 28px,auto}
body[data-theme=space]{background-image:radial-gradient(#fff9 1px,transparent 1.5px),radial-gradient(#fff6 1px,transparent 1.5px),linear-gradient(160deg,var(--bg1),var(--bg2));background-size:60px 60px,37px 37px,auto;background-position:0 0,15px 20px,0 0}
body[data-theme=web]{background-image:repeating-radial-gradient(circle at 50% 0,transparent 0 38px,#ffffff14 39px 40px),repeating-conic-gradient(from 0deg at 50% 0,transparent 0 14deg,#ffffff14 14deg 15deg),linear-gradient(160deg,var(--bg1),var(--bg2))}
body[data-theme=hero]{background-image:repeating-linear-gradient(45deg,#ffffff10 0 20px,transparent 20px 40px),linear-gradient(160deg,var(--bg1),var(--bg2))}
body[data-theme=ocean]{background-image:radial-gradient(circle at 80% 90%,#ffffff30 0 8px,transparent 9px),radial-gradient(circle at 10% 70%,#ffffff30 0 5px,transparent 6px),linear-gradient(180deg,var(--bg1),var(--bg2));background-size:120px 120px,90px 90px,auto}
body[data-theme=dino]{background-image:radial-gradient(circle,#ffffff22 10px,transparent 11px),linear-gradient(160deg,var(--bg1),var(--bg2));background-size:70px 70px,auto}
#app{max-width:1100px;margin:0 auto;padding:16px 16px 40px}
.top{display:flex;align-items:center;gap:10px;color:#fff;flex-wrap:wrap}
.logo{font-weight:900;font-size:clamp(22px,4vw,32px);letter-spacing:.5px;text-shadow:0 3px 0 #0003;flex:1}
.logo span{color:var(--c)}
.pill{background:#fff;color:var(--ink);border-radius:999px;padding:8px 14px;font-weight:800;box-shadow:0 4px 0 #0002;display:inline-flex;gap:6px;align-items:center}
.card{background:var(--card);border-radius:28px;padding:22px;box-shadow:0 10px 0 #0002,0 20px 40px #0003;margin-top:16px}
h1,h2{margin:.2em 0}h1{font-size:clamp(26px,5vw,40px)}
button,.btn{font:inherit;font-weight:900;border:0;border-radius:20px;padding:14px 20px;cursor:pointer;background:var(--a);color:#fff;box-shadow:0 6px 0 #0003;transition:transform .08s;font-size:18px;min-height:52px}
button:active{transform:translateY(4px);box-shadow:0 2px 0 #0003}
button.ghost{background:var(--soft);color:var(--ink)}button.alt{background:var(--b)}
input{font:inherit;font-size:24px;padding:14px 18px;border-radius:18px;border:3px solid var(--soft);width:100%;outline:none}
input:focus{border-color:var(--a)}
.row{display:flex;gap:12px;flex-wrap:wrap;align-items:center}
.names{display:flex;flex-wrap:wrap;gap:12px;margin:12px 0}
.names button{background:var(--soft);color:var(--ink);font-size:20px;display:flex;align-items:center;gap:8px}
.av{width:34px;height:34px;border-radius:50%;display:grid;place-items:center;color:#fff;font-size:16px}
.ages{display:grid;grid-template-columns:repeat(auto-fill,minmax(64px,1fr));gap:10px}
.ages button{background:var(--soft);color:var(--ink);font-size:24px}.ages button.on{background:var(--a);color:#fff}
.themes{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:12px}
.th{border-radius:20px;padding:12px;color:#fff;font-weight:900;text-align:center;border:4px solid transparent;cursor:pointer;box-shadow:0 6px 0 #0002;min-height:90px;display:flex;flex-direction:column;justify-content:center;gap:4px}
.th.on{border-color:var(--ink);transform:scale(1.04)}.th .e{font-size:30px}
.hero{display:flex;align-items:center;gap:16px}
.hero svg{width:clamp(90px,18vw,150px);flex:none;animation:bob 3s ease-in-out infinite}
@keyframes bob{50%{transform:translateY(-8px) rotate(-3deg)}}
.bubble{background:var(--soft);border-radius:22px;padding:14px 18px;font-size:clamp(17px,2.4vw,22px);font-weight:700;position:relative}
.tiles{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,200px),1fr));gap:16px;margin-top:16px}
.tile{border-radius:28px;padding:20px;color:#fff;cursor:pointer;min-height:170px;display:flex;flex-direction:column;justify-content:space-between;box-shadow:0 8px 0 #0003;position:relative;overflow:hidden;border:0;text-align:left}
.tile .ic{font-size:56px;line-height:1}.tile b{font-size:24px}.tile small{opacity:.9;font-weight:700}
.tile:after{content:"";position:absolute;right:-30px;top:-30px;width:110px;height:110px;border-radius:50%;background:#fff2}
.tile.little{min-height:200px}.tile.little .ic{font-size:72px}
.stars{font-size:18px}
.badges{display:flex;gap:10px;flex-wrap:wrap}.badge{background:var(--soft);border-radius:16px;padding:8px 12px;font-weight:800}.badge.off{opacity:.35;filter:grayscale(1)}
.big{font-size:clamp(40px,10vw,90px)}
.choices{display:grid;grid-template-columns:repeat(auto-fit,minmax(90px,1fr));gap:14px;margin-top:16px}
.choices button{font-size:clamp(30px,6vw,48px);min-height:96px;background:var(--b)}
.objs{font-size:clamp(40px,9vw,70px);display:flex;flex-wrap:wrap;gap:10px;justify-content:center;margin:12px 0;min-height:90px}
.objs span{animation:pop .4s backwards}@keyframes pop{from{transform:scale(0)}}
.prog{height:16px;background:var(--soft);border-radius:99px;overflow:hidden;margin:10px 0}.prog i{display:block;height:100%;background:linear-gradient(90deg,var(--a),var(--c));transition:width .3s}
.typebox{font-family:ui-monospace,Menlo,monospace;font-size:clamp(20px,3.6vw,30px);line-height:1.6;background:var(--soft);padding:18px;border-radius:18px;word-break:break-word}
.typebox .ok{color:#1a9b4b}.typebox .bad{color:#fff;background:#e5484d;border-radius:4px}.typebox .cur{border-bottom:4px solid var(--a)}
.stats{display:flex;gap:12px;flex-wrap:wrap;margin:12px 0}.stat{background:var(--soft);border-radius:16px;padding:10px 16px;font-weight:900;font-size:20px}
.sheet{border-collapse:collapse;font-family:ui-monospace,Menlo,monospace;font-size:18px;width:100%;max-width:520px;background:#fff}
.sheet td,.sheet th{border:1px solid #c9cbe0;padding:8px 10px;min-width:60px}.sheet th{background:#e9ebf5;font-size:14px}
.sheet td.sel{outline:3px solid #1a9b4b;outline-offset:-3px}
.fx{display:flex;gap:8px;align-items:center;margin:10px 0;max-width:520px}.fx b{background:#e9ebf5;padding:10px;border-radius:8px}.fx input{font-family:ui-monospace,monospace;font-size:20px}
.kbd{display:grid;gap:6px;margin-top:12px}.kbd div{display:flex;gap:6px;justify-content:center}.kbd span{background:var(--soft);border-radius:10px;min-width:clamp(26px,8vw,52px);height:clamp(36px,9vw,52px);display:grid;place-items:center;font-weight:900;font-size:clamp(16px,3vw,22px);box-shadow:0 3px 0 #0002}
.kbd span.hl{background:var(--c);transform:scale(1.15)}
.colors{display:grid;grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:12px}
.sw{border-radius:22px;min-height:110px;display:flex;align-items:flex-end;padding:10px;font-weight:900;font-size:20px;cursor:pointer;box-shadow:0 6px 0 #0002;border:0}
table.par{width:100%;border-collapse:collapse}table.par td,table.par th{padding:10px;border-bottom:2px solid var(--soft);text-align:left}
#toast{position:fixed;left:50%;bottom:24px;transform:translateX(-50%) translateY(150%);background:#fff;padding:14px 22px;border-radius:999px;font-weight:900;font-size:20px;box-shadow:0 10px 30px #0004;transition:transform .3s,opacity .3s;opacity:0;z-index:9}
#toast.show{transform:translateX(-50%) translateY(0);opacity:1}
.confetti{position:fixed;top:-20px;font-size:26px;animation:fall 1.6s linear forwards;pointer-events:none;z-index:8}@keyframes fall{to{transform:translateY(110vh) rotate(720deg)}}
.muted{opacity:.7}.center{text-align:center}
@media(max-width:600px){.hero{flex-direction:column;text-align:center}.card{padding:16px;border-radius:22px}}
.logo .red{color:#fff;background:#e3102b;padding:0 10px;border-radius:12px;box-shadow:0 4px 0 #0003;margin-right:4px}
.nav{display:flex;gap:8px;overflow-x:auto;padding:10px 2px 4px;scrollbar-width:none}.nav::-webkit-scrollbar{display:none}
.nav button{flex:none;background:#ffffffe6;color:var(--ink);font-size:15px;min-height:44px;padding:8px 14px;border-radius:16px}
.strip{display:flex;gap:10px;flex-wrap:wrap;margin-top:14px}.strip .stat{flex:1;min-width:140px}
.rankbar{height:10px;background:#fff;border-radius:9px;overflow:hidden;margin-top:6px}.rankbar i{display:block;height:100%;background:linear-gradient(90deg,var(--a),var(--c))}
.unit{border-radius:26px;padding:16px;margin-top:16px;background:var(--soft);position:relative}
.unit.locked{opacity:.55;filter:grayscale(.7)}
.unit h3{margin:0 0 4px;font-size:22px}.grade{background:var(--a);color:#fff;border-radius:10px;padding:2px 10px;font-size:14px;font-weight:900;margin-right:6px}
.nodes{display:flex;flex-wrap:wrap;gap:12px;margin-top:10px}
.node{flex:1;min-width:130px;max-width:220px;background:#fff;color:var(--ink);border-radius:20px;padding:12px;display:flex;flex-direction:column;align-items:center;gap:4px;font-size:16px;min-height:110px}
.node .ni{font-size:34px}.node.quiz{background:var(--c)}.node.rec{outline:4px solid var(--a);animation:pulse 1.6s infinite}
@keyframes pulse{50%{outline-color:transparent}}
.node:disabled{opacity:.6}
.coll{display:grid;grid-template-columns:repeat(auto-fill,minmax(96px,1fr));gap:10px}
.ci{border-radius:18px;padding:10px;text-align:center;background:#fff;border:3px solid #ddd;font-weight:800;font-size:13px}.ci .e{font-size:42px;display:block}
.ci.common{border-color:#9aa3b5}.ci.rare{border-color:#1f6fe0;background:#eef5ff}.ci.epic{border-color:#a033ff;background:linear-gradient(135deg,#fdf0ff,#fff6d6)}
.ci.no .e{filter:brightness(0);opacity:.15}
.rar{font-size:11px;text-transform:uppercase;letter-spacing:1px}.rar.rare{color:#1f6fe0}.rar.epic{color:#a033ff}
.shopi{background:#fff;border-radius:20px;padding:14px;text-align:center;border:3px solid var(--soft)}.shopi .e{font-size:50px}
.modal{position:fixed;inset:0;background:#000a;z-index:20;display:grid;place-items:center;padding:16px}
.modal .card{max-width:420px;width:100%;text-align:center;animation:pop .4s}
.drop{font-size:110px;animation:spinin .8s}@keyframes spinin{from{transform:scale(0) rotate(-360deg)}}
.keypad{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;max-width:420px;margin:12px auto 0}.keypad button{font-size:26px;min-height:62px;background:var(--b)}
.ansbox{font-size:40px;font-weight:900;text-align:center;background:#fff;border:4px solid var(--a);border-radius:18px;padding:8px;min-height:68px;max-width:420px;margin:12px auto 0}
.lb td:first-child{font-size:24px;width:50px}
.wtool{display:flex;flex-wrap:wrap;gap:6px;margin:8px 0}.wtool button{min-height:44px;padding:6px 12px;font-size:16px;background:var(--soft);color:var(--ink);border-radius:12px;box-shadow:0 3px 0 #0002}
.wdoc{background:#fff;border:2px solid #d5d8e8;border-radius:8px;min-height:180px;padding:24px 28px;box-shadow:0 6px 18px #0001 inset;max-width:760px}
.wdoc p,.wdoc h2,.wdoc li{margin:.3em 0;line-height:1.4}.wdoc h2 span{font-weight:900!important}.wdoc li{margin-left:24px}
.wdoc span[data-w]{cursor:pointer;border-radius:4px;padding:0 2px}.wsel{background:#cfe3ff;outline:2px solid #1f6fe0}.wimg{font-size:64px}
.chart{background:#fff;border:2px solid #d5d8e8;border-radius:10px;padding:12px;margin-top:10px;max-width:520px}.bar{display:flex;align-items:center;gap:8px;margin:6px 0}.bar span{width:80px;font-weight:800}.bar i{display:block;background:var(--a);color:#fff;font-style:normal;font-weight:900;padding:4px 8px;border-radius:6px;min-width:30px}
.steps{list-style:none;padding:0;margin:8px 0}.steps li{padding:4px 0;font-weight:800}
.xb{min-height:44px;padding:6px 12px;font-size:15px}
.fing{display:flex;gap:8px;flex-wrap:wrap;justify-content:center;font-size:13px;font-weight:800;margin-top:6px}.fing span{padding:2px 8px;border-radius:8px}
.fall{position:relative;height:min(55vh,420px);background:linear-gradient(#0b1640,#3a1c71);border-radius:20px;overflow:hidden;margin-top:10px}
.fall .fl{position:absolute;top:0;width:54px;height:54px;border-radius:50%;background:var(--c);display:grid;place-items:center;font-weight:900;font-size:28px;box-shadow:0 0 18px #ffd23f99}
.fall .pop{animation:popx .3s forwards}@keyframes popx{to{transform:scale(2);opacity:0}}
#cloud{position:fixed;right:10px;bottom:10px;z-index:50;background:rgba(255,255,255,.92);color:#333;border-radius:999px;padding:5px 12px;font-size:13px;font-weight:700;box-shadow:0 2px 8px rgba(0,0,0,.18);pointer-events:none}
.famgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:14px;margin-top:16px}.famopt{background:rgba(0,0,0,.04);border-radius:16px;padding:14px;display:flex;flex-direction:column}.famopt button{margin-top:auto}
.famcode{font-family:ui-monospace,monospace;font-size:1.3em;letter-spacing:2px;background:#fff;color:#c62828;padding:3px 10px;border-radius:8px}
.bondw{max-width:300px;margin:10px auto}.nbrow{display:flex;justify-content:space-around}.nbl{display:block;width:62%;height:34px;margin:-6px auto}
.nb{width:86px;height:86px;border-radius:50%;border:4px solid #1d1b3a;background:#fff;color:#1d1b3a;display:flex;flex-direction:column;align-items:center;justify-content:center;font-size:24px;overflow:hidden}.nbq{background:#fff6d6;border-style:dashed}
.nb input{width:64px;font-size:22px;text-align:center;padding:4px;min-height:0}
.ctrs{display:flex;flex-wrap:wrap;gap:6px;justify-content:center;margin:8px 0}.ctr{width:44px;height:44px;min-height:0;padding:0;border-radius:50%;background:#7c5cff;font-size:18px}.ctr.on{background:#ff8a3d}
.barm{margin:12px auto;max-width:560px}.brow{display:flex;align-items:center;gap:8px;margin:6px 0}.bname{width:64px;font-weight:700;text-align:right;font-size:14px}.btrack{flex:1;display:flex;border:2px solid #1d1b3a;border-radius:6px;overflow:hidden;min-height:38px;background:#f6f6f6}
.bseg{display:flex;align-items:center;justify-content:center;color:#fff;font-weight:800;font-size:14px;border-right:2px solid #1d1b3a;min-width:16px;overflow:hidden}.bseg:last-child{border-right:0}.bq{color:#1d1b3a!important;background:repeating-linear-gradient(45deg,#fff 0 6px,#ffe9b0 6px 12px)!important}
.btot{font-weight:800;min-width:34px}.binp{width:80px;font-size:18px;padding:4px;min-height:0;text-align:center}
.discs{display:flex;gap:14px;justify-content:center;flex-wrap:wrap;margin:10px 0}.dcol{display:flex;flex-direction:column;gap:3px;flex-wrap:wrap;max-height:200px}.dcol i{width:40px;height:40px;border-radius:50%;color:#fff;font-size:11px;font-weight:800;font-style:normal;display:flex;align-items:center;justify-content:center}
.tf{display:grid;grid-template-columns:repeat(5,34px);gap:4px;justify-content:center;margin:10px auto}.tf i{height:34px;border:2px solid #1d1b3a;border-radius:6px;background:#fff}.tf i.tfa{background:#ff8a3d}.tf i.tfb{background:#7c5cff}
.seg{display:flex;gap:6px;margin:8px 0;flex-wrap:wrap}.seg button{background:#eee;color:#333}.seg button.on{background:var(--a);color:#fff}
