*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{margin:0;height:100%;background:#fff8e7;font-family:"Nunito","Comic Sans MS","Trebuchet MS",system-ui,sans-serif;color:#2d3047}
#app{max-width:820px;margin:0 auto;padding:calc(12px + env(safe-area-inset-top)) 14px calc(24px + env(safe-area-inset-bottom));min-height:100%}
h1{font-size:2rem;margin:.3em 0;text-align:center}h2{font-size:1.5rem;margin:.4em 0}
.center{text-align:center}.big{font-size:1.6rem}
.bar{display:flex;align-items:center;gap:8px;justify-content:space-between;margin-bottom:10px}
.btn{border:0;border-radius:22px;padding:16px 22px;font-size:1.3rem;font-weight:800;color:#fff;background:#4d96ff;box-shadow:0 5px 0 rgba(0,0,0,.18);min-height:60px;min-width:60px;cursor:pointer;font-family:inherit;touch-action:manipulation}
.btn:active{transform:translateY(3px);box-shadow:0 2px 0 rgba(0,0,0,.18)}
.btn.green{background:#2bb673}.btn.red{background:#ff6b6b}.btn.yellow{background:#ffc93c;color:#2d3047}.btn.purple{background:#9b5de5}.btn.grey{background:#adb5bd}.btn.orange{background:#ff9f43}
.btn.small{padding:10px 14px;font-size:1.05rem;min-height:48px}
.btn.block{display:block;width:100%;margin:10px 0}
.row{display:flex;gap:10px;flex-wrap:wrap;justify-content:center}
.card{background:#fff;border-radius:28px;padding:18px;box-shadow:0 6px 18px rgba(0,0,0,.08);margin:12px 0}
.pic{width:min(56vw,240px);height:min(56vw,240px);display:block;margin:6px auto}
.cardpic{width:min(56vw,240px);height:min(56vw,240px);margin:6px auto;border-radius:30px;display:flex;align-items:center;justify-content:center;font-size:2.2rem;font-weight:900;color:#fff;text-align:center;padding:10px;background:linear-gradient(135deg,#9b5de5,#4d96ff)}
.pl{font-size:2.6rem;font-weight:900;text-align:center;color:#d6336c;letter-spacing:.5px;word-break:break-word}
.en{font-size:1.4rem;text-align:center;color:#555}
.hidden{visibility:hidden}
.profiles{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:12px}
.prof{background:#fff;border-radius:24px;padding:14px;text-align:center;font-size:1.3rem;font-weight:800;box-shadow:0 5px 0 rgba(0,0,0,.08);border:0;font-family:inherit;color:inherit}
.prof .av{font-size:3.4rem;display:block}
.levels{display:grid;grid-template-columns:repeat(auto-fill,minmax(96px,1fr));gap:10px}
.lvl{border:0;border-radius:20px;padding:8px 4px;min-height:96px;font-family:inherit;font-weight:800;color:#fff;font-size:1rem;display:flex;flex-direction:column;align-items:center;justify-content:center;box-shadow:0 4px 0 rgba(0,0,0,.15)}
.lvl img{width:40px;height:40px}.lvl .n{font-size:.85rem}.lvl.locked{background:#ced4da!important;color:#6c757d}.lvl.locked img{filter:grayscale(1);opacity:.5}
.stars{color:#ffc93c;font-size:1rem;letter-spacing:1px;text-shadow:0 1px 0 #b8860b}
.cathead{margin:18px 4px 6px;font-size:1.3rem;font-weight:900}
.choices{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.choices .btn{font-size:1.25rem;background:#fff;color:#2d3047;border:3px solid #4d96ff;box-shadow:0 4px 0 #4d96ff}
.choices .btn.right{background:#2bb673;color:#fff;border-color:#2bb673}.choices .btn.wrong{background:#ff6b6b;color:#fff;border-color:#ff6b6b}
input.type{width:100%;font-size:2rem;padding:12px;border-radius:18px;border:3px solid #9b5de5;text-align:center;font-family:inherit}
.letters{display:flex;flex-wrap:wrap;gap:6px;justify-content:center;margin:10px 0}
.letters .btn{background:#ffc93c;color:#2d3047;font-size:1.6rem;min-width:56px;padding:8px}
.fb{font-size:1.5rem;font-weight:900;text-align:center;margin:10px 0;min-height:1.5em}
.fb.ok{color:#2bb673}.fb.close{color:#ff9f43}.fb.no{color:#ff6b6b}
.diff span{padding:0 1px;border-radius:6px}.diff .bad{background:#ffc93c;color:#c92a2a;text-decoration:underline}
.progress{height:16px;background:#e9ecef;border-radius:10px;overflow:hidden;margin:6px 0}.progress>div{height:100%;background:linear-gradient(90deg,#2bb673,#4d96ff)}
.stat{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}.stat div{background:#fff;border-radius:20px;padding:14px;text-align:center;font-weight:800}.stat b{display:block;font-size:2.2rem;color:#9b5de5}
.mic{font-size:3.5rem;width:120px;height:120px;border-radius:50%;padding:0}
.mic.on{background:#ff6b6b;animation:pulse 1s infinite}@keyframes pulse{50%{transform:scale(1.08)}}
#toast{position:fixed;left:50%;bottom:30px;transform:translateX(-50%);background:#2d3047;color:#fff;padding:12px 20px;border-radius:16px;font-size:1.1rem;opacity:0;transition:.3s;pointer-events:none;z-index:9;max-width:90vw;text-align:center}#toast.show{opacity:1}
label{font-size:1.15rem;font-weight:700;display:block;margin:12px 0 4px}
select,input[type=range],input[type=text].name{font-size:1.2rem;width:100%;padding:10px;border-radius:12px;border:2px solid #ccc;font-family:inherit}
.avs{display:flex;flex-wrap:wrap;gap:6px}.avs button{font-size:2.2rem;border:3px solid transparent;background:#fff;border-radius:16px;width:64px;height:64px}.avs button.sel{border-color:#9b5de5}
.small-note{font-size:.95rem;color:#777;text-align:center}
.wordlist{display:flex;flex-wrap:wrap;gap:6px}.wordlist span{background:#fff;border-radius:12px;padding:6px 10px;font-weight:700}
@media (min-width:700px){.pl{font-size:3.4rem}.pic,.cardpic{width:280px;height:280px}}
.lvl .cardpic{width:44px;height:44px;font-size:.9rem;border-radius:10px;padding:2px;margin:0}
/* games */
.ggrid{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}.ggrid .btn{min-height:110px;font-size:1.3rem}
.coins{font-weight:900;font-size:1.2rem;background:#fff;border-radius:16px;padding:6px 12px}
.mem{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}
.mc{aspect-ratio:1/1;border:0;border-radius:18px;background:linear-gradient(135deg,#9b5de5,#4d96ff);color:#fff;font-size:2.4rem;font-weight:900;font-family:inherit;display:flex;align-items:center;justify-content:center;padding:4px;box-shadow:0 4px 0 rgba(0,0,0,.15);transition:transform .25s}
.mc.up{background:#fff;color:#d6336c;font-size:1.25rem;transform:rotateY(360deg)}.mc.done{background:#d3f9d8;opacity:.75}.mc img{width:80%;height:80%}.mc .cardpic{width:100%;height:100%;font-size:1rem;margin:0}
.sky{position:relative;height:56vh;min-height:330px;background:linear-gradient(#bde0fe,#e7f5ff);border-radius:28px;overflow:hidden}
.balloon{position:absolute;bottom:-160px;width:min(28vw,130px);height:min(34vw,160px);border:0;border-radius:50% 50% 46% 46%;display:flex;align-items:center;justify-content:center;animation:rise linear forwards;box-shadow:inset -10px -12px 0 rgba(0,0,0,.12)}
.balloon:after{content:"";position:absolute;bottom:-28px;left:50%;width:2px;height:28px;background:#666}
.balloon img{width:62%;height:62%}.balloon .cardpic{width:80%;height:auto;font-size:.9rem;padding:4px;margin:0}
@keyframes rise{to{transform:translateY(calc(-56vh - 220px))}}
.balloon.pop{animation:pop .3s forwards}@keyframes pop{to{transform:scale(1.8);opacity:0}}
.shake{animation:shake .4s}@keyframes shake{25%{transform:translateX(-8px)}75%{transform:translateX(8px)}}
.slots{display:flex;gap:6px;justify-content:center;flex-wrap:wrap;margin:10px 0}.slots span{min-width:44px;height:58px;border-bottom:5px solid #9b5de5;font-size:2.2rem;font-weight:900;text-align:center;color:#d6336c}
.tiles{display:flex;flex-wrap:wrap;gap:8px;justify-content:center}.tiles .btn{font-size:2rem;min-width:64px;min-height:64px;background:#ffc93c;color:#2d3047}.tiles .btn.used{visibility:hidden}
.timer{height:22px;background:#e9ecef;border-radius:12px;overflow:hidden}.timer>div{height:100%;background:linear-gradient(90deg,#ff6b6b,#ffc93c);transition:width .1s linear}
.tf .btn{font-size:2.6rem;min-height:110px;flex:1}
.stickers{display:grid;grid-template-columns:repeat(auto-fill,minmax(70px,1fr));gap:8px}.stickers div{background:#fff;border-radius:16px;aspect-ratio:1;display:flex;align-items:center;justify-content:center;font-size:2rem;color:#ccc}.stickers img{width:80%}
.confetti{position:fixed;top:-40px;font-size:2rem;pointer-events:none;animation:fall 2.2s ease-in forwards;z-index:20}@keyframes fall{to{transform:translateY(110vh) rotate(720deg)}}
/* coins */
.balance{border:0;border-radius:30px;padding:10px 22px;font-size:1.7rem;font-weight:900;font-family:inherit;color:#7a5200;background:radial-gradient(circle at 30% 30%,#fff3b0,#ffd43b 45%,#f2a900);box-shadow:0 5px 0 #b8860b,0 0 18px rgba(255,200,0,.6);transition:transform .2s}
.balance.small{font-size:1.1rem;padding:4px 12px;margin-top:6px;display:inline-block;box-shadow:0 3px 0 #b8860b}.balance.bump{transform:scale(1.2)}
.coinfly{position:fixed;left:50%;top:45%;transform:translate(-50%,-50%);z-index:30;font-size:2rem;font-weight:900;color:#b8860b;display:flex;align-items:center;gap:6px;animation:coinup 1.2s ease-out forwards;pointer-events:none;text-shadow:0 2px 0 #fff}
.coinfly img{filter:drop-shadow(0 0 10px gold);animation:spin .6s linear 2}@keyframes spin{to{transform:rotateY(360deg)}}@keyframes coinup{to{top:6%;opacity:0}}
.bankcard{background:linear-gradient(160deg,#fff9db,#ffe066)}.bigcoins{font-size:4rem;font-weight:900;color:#b8860b}
.hist{display:flex;justify-content:space-between;gap:8px;padding:8px 0;border-bottom:1px solid #eee;align-items:center}.hist b{color:#2bb673;white-space:nowrap}.neg{color:#e03131!important}
.shopitem .si{display:flex;gap:12px;align-items:center}.tag{background:#e7f5ff;color:#1c7ed6;border-radius:10px;padding:2px 8px;font-size:.9rem;font-weight:800}
.req,.kidbank{padding:10px 0;border-bottom:1px solid #eee}.goal{cursor:pointer}
.pinpad{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;max-width:340px;margin:20px auto}.pinpad .btn{font-size:2rem;min-height:80px}.dots{grid-column:1/4;text-align:center;font-size:2.4rem;letter-spacing:10px;color:#9b5de5}
a.btn{text-decoration:none;display:inline-block}
.dailybtn{display:flex;align-items:center;gap:14px;justify-content:center;font-size:1.6rem;margin:8px 0 14px}.dailybtn small{font-size:1rem;opacity:.9}.dailybtn svg text{fill:#fff}
.goalpop{position:fixed;inset:0;background:rgba(0,0,0,.45);z-index:25;display:flex;align-items:center;justify-content:center;padding:20px}.goalpop .card{max-width:420px;width:100%;animation:popin .4s}@keyframes popin{from{transform:scale(.5)}}
.chart{display:flex;gap:3px;height:120px;align-items:flex-end;margin:8px 0}.chart>div{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;height:100%;font-size:.7rem}.cb{width:100%;background:#ffc93c;border-radius:6px 6px 0 0}.cb.ok{background:#2bb673}
.sparkwrap{display:flex;align-items:center;gap:8px;justify-content:center;font-weight:800;margin:4px 0}.sparkbar{width:140px;height:14px;background:#fff;border-radius:8px;overflow:hidden;border:2px solid #ffd43b}.sparkbar>div{height:100%;background:linear-gradient(90deg,#ffe066,#f59f00)}
.coinfly.spark{color:#f59f00;font-size:1.6rem}.maths{background:#f3f0ff}
/* fx */
.glow{animation:glow .7s}@keyframes glow{0%{box-shadow:0 0 0 0 rgba(43,182,115,.8);transform:scale(1)}40%{transform:scale(1.04)}100%{box-shadow:0 0 0 26px rgba(43,182,115,0);transform:scale(1)}}
.gshake{animation:gshake .45s}@keyframes gshake{20%{transform:translateX(-6px)}40%{transform:translateX(5px)}60%{transform:translateX(-3px)}80%{transform:translateX(2px)}}
.burst{position:fixed;z-index:40;pointer-events:none;font-size:1.4rem;transform:translate(-50%,-50%);animation:burst .7s ease-out forwards}@keyframes burst{to{transform:translate(calc(-50% + var(--dx)),calc(-50% + var(--dy))) scale(.3);opacity:0}}
.flycoin{position:fixed;left:50%;top:45%;width:64px;height:64px;margin:-32px 0 0 -32px;z-index:40;pointer-events:none;filter:drop-shadow(0 0 12px gold);animation:flycoin .9s cubic-bezier(.5,-0.3,.7,1) forwards;will-change:transform}
@keyframes flycoin{0%{transform:translate(0,0) scale(.4) rotateY(0)}25%{transform:translate(0,-40px) scale(1.3) rotateY(360deg)}100%{transform:translate(var(--tx),var(--ty)) scale(.45) rotateY(1080deg)}}
.cplus{position:fixed;left:50%;top:38%;transform:translateX(-50%);z-index:41;font-size:3rem;font-weight:900;color:#f2a900;text-shadow:0 3px 0 #fff,0 0 14px gold;pointer-events:none;animation:cplus 1.2s ease-out forwards}@keyframes cplus{to{transform:translate(-50%,-80px);opacity:0}}
.coinfly{display:none}.coinfly.spark{display:flex}
.stars .st{display:inline-block;transform:scale(0);animation:starpop .45s cubic-bezier(.2,1.6,.5,1) forwards}.stars .st.off{color:#ced4da;text-shadow:none}@keyframes starpop{to{transform:scale(1)}}
.fwwrap{position:fixed;inset:0;z-index:50;background:radial-gradient(#1b1f3b,#05060f)}.fw{position:absolute;inset:0;width:100%;height:100%}
.fwtext{position:absolute;left:0;right:0;bottom:12%;text-align:center;color:#fff;animation:popin .6s}.fwtext h1{font-size:2.2rem;text-shadow:0 0 18px #ffd43b}
@media (prefers-reduced-motion: reduce){*{animation-duration:.01ms!important;animation-iteration-count:1!important;transition:none!important}.stars .st{transform:none}}
/* desktop / laptop */
kbd{display:none}
@media (hover:hover) and (pointer:fine){
 .btn:hover,.prof:hover,.lvl:not(.locked):hover,.mc:hover,.balloon:hover{filter:brightness(1.08);transform:translateY(-2px);cursor:pointer}
 .choices .btn:hover{background:#e7f5ff}.btn:focus-visible,.prof:focus-visible,.lvl:focus-visible{outline:4px solid #9b5de5;outline-offset:3px}
 kbd{display:inline-block;background:#e9ecef;color:#555;border-radius:8px;padding:0 8px;margin-right:8px;font-size:.9rem;font-family:inherit;border-bottom:2px solid #adb5bd}
 .tiles .btn{cursor:grab}.tiles .btn.dragging{opacity:.4}.slots.dropzone{background:#f3f0ff;border-radius:14px}
}
@media (min-width:1000px){
 #app{max-width:1100px;padding-left:28px;padding-right:28px}
 h1{font-size:2.6rem}
 .card{max-width:860px;margin-left:auto;margin-right:auto;padding:28px}
 .choices,.btn.block,.tiles,.letters,input.type,.mem,.sky,.tf,.timer,.progress{max-width:860px;margin-left:auto;margin-right:auto}
 .btn.block{display:block;width:100%}
 .levels{grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:14px}.lvl{min-height:130px;font-size:1.1rem}.lvl img{width:60px;height:60px}
 .pic,.cardpic{width:300px;height:300px}.pl{font-size:4rem}
 .choices{grid-template-columns:repeat(4,1fr)}.choices .btn{min-height:90px;font-size:1.4rem}
 .mem{grid-template-columns:repeat(4,1fr);max-width:720px}.mc{font-size:3rem}
 .profiles{grid-template-columns:repeat(auto-fill,minmax(180px,1fr));max-width:900px;margin:0 auto}
 .stat{grid-template-columns:repeat(4,1fr)}.ggrid{grid-template-columns:repeat(3,1fr);max-width:900px;margin:0 auto}
 .sky{height:60vh}.balloon{width:150px;height:185px}
 .dailybtn{max-width:860px;margin-left:auto;margin-right:auto}
}
@media (min-width:1600px){#app{max-width:1300px}.levels{grid-template-columns:repeat(auto-fill,minmax(150px,1fr))}}
.desktop-hint{display:none}@media (hover:hover) and (pointer:fine){.desktop-hint{display:block}}
.qr svg{width:200px;height:200px;background:#fff;border-radius:12px}
/* Zuzia */
.zhost{display:flex;align-items:flex-end;gap:8px;margin:6px auto;max-width:860px}.zhost svg{flex:none;overflow:visible}
.zbubble{background:#fff;border:3px solid #3a3340;border-radius:20px;padding:10px 14px;font-weight:800;font-size:1.1rem;position:relative;margin-bottom:40px;max-width:70%}
.zbubble:before{content:"";position:absolute;left:-14px;bottom:14px;border:8px solid transparent;border-right-color:#3a3340}
.zline{fill:none;stroke:#2d2a32;stroke-width:4;stroke-linecap:round}
.zuzia .zeyes{transform-origin:100px 92px;animation:zblink 4.5s infinite}@keyframes zblink{0%,92%,100%{transform:scaleY(1)}95%{transform:scaleY(.1)}}
.zuzia .ztail{transform-origin:140px 172px;animation:ztail 2.4s ease-in-out infinite}@keyframes ztail{50%{transform:rotate(10deg)}}
.zuzia .zmouth{transform-origin:100px 114px;animation:zmouth .28s infinite alternate}@keyframes zmouth{to{transform:scaleY(.25)}}
.zuzia .zwave{transform-origin:150px 122px;animation:zwave .6s ease-in-out infinite alternate}@keyframes zwave{to{transform:rotate(-25deg)}}
.zuzia .zpoint{animation:zpoint .7s ease-in-out infinite alternate}@keyframes zpoint{to{transform:translateX(8px)}}
.z-cheer{animation:zjump .6s ease-in-out infinite alternate}@keyframes zjump{to{transform:translateY(-14px)}}
.z-happy,.z-wave,.z-talk,.z-point{animation:zbob 2.2s ease-in-out infinite}@keyframes zbob{50%{transform:translateY(-4px)}}
.z-sleepy .zzz{animation:zzz 2s infinite}@keyframes zzz{50%{opacity:.3;transform:translateY(-4px)}}
.zin .zbubble{animation:popin .35s}
@media (prefers-reduced-motion: reduce){.zuzia *{animation:none!important}}
/* listening first */
.btn.huge{font-size:2.8rem;min-width:96px;min-height:96px;border-radius:30px}
.lfbtns{gap:14px}.dots-row span{color:#dee2e6;font-size:1.4rem;margin:0 2px}.dots-row .d{color:#2bb673}.dots-row .c{color:#ff9f43}
.choices.pics .btn{min-height:130px;background:#fff}.choices.pics img{width:96px;height:96px}.choices.pics .cardpic{width:100%;height:auto;font-size:1.1rem;margin:0}
body.lf .en,body.lf .small-note{display:none}body.lf #sp{display:none}
/* explore sections */
.explore{display:grid;grid-template-columns:repeat(5,1fr);gap:8px;margin:12px auto;max-width:860px}.explore .btn{padding:8px 4px;font-size:.95rem;min-height:84px;display:flex;flex-direction:column;align-items:center}.explore .btn span{font-size:2rem}
.exp-stories{background:#ff6b6b}.exp-songs{background:#9b5de5}.exp-missions{background:#ff9f43}.exp-talk{background:#2bb673}.exp-sounds{background:#4d96ff}
.tiles2{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:12px}.tile2{border:0;background:#fff;border-radius:22px;padding:12px;box-shadow:0 5px 0 rgba(0,0,0,.08);font-family:inherit;display:flex;flex-direction:column;align-items:center;gap:4px;font-size:1.05rem;color:#2d3047;position:relative}
.tile2 img{width:70px;height:70px}.tile2 .cardpic{width:70px;height:70px;font-size:.8rem;margin:0}.tile2 small{color:#777}.tile2>span:last-child{position:absolute;top:6px;right:10px}.tile2.locked{opacity:.5;filter:grayscale(1)}
.story .spics{display:flex;justify-content:center;gap:10px;flex-wrap:wrap}.story .spics img{width:min(30vw,140px);height:min(30vw,140px)}.stext{font-size:2rem;font-weight:800;text-align:center;line-height:1.5;margin:10px 0}.sw{cursor:pointer;border-radius:8px;padding:0 3px}.sw.on{background:#ffd43b}
.gloss{text-align:center;font-size:1.3rem;min-height:1.6em;color:#9b5de5}.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
.lyrics .ly{padding:8px 12px;border-radius:14px}.lyrics .ly.on{background:#fff3bf;transform:scale(1.02)}.lpl{font-size:1.5rem;font-weight:800;color:#d6336c}.len{color:#666}
.mission{display:flex;gap:12px;align-items:center}.mpic{width:80px;height:80px;flex:none}
.slabel{font-size:2rem;font-weight:900;color:#d6336c}.big2{font-size:4.5rem}.wbtn{background:#fff;color:#2d3047;display:flex;flex-direction:column;align-items:center}.wbtn img{width:70px;height:70px}
.zsmall .zbubble{font-size:1rem}
@media (max-width:420px){.explore .btn{font-size:.8rem}}
/* sentences */
.scene{display:flex;justify-content:center;align-items:flex-end;gap:6px;flex-wrap:wrap;margin:6px 0}.scene img{width:min(28vw,130px);height:min(28vw,130px)}
.scene.sm img{width:64px;height:64px}.scene.xs img{width:34px;height:34px}.choices.one{grid-template-columns:1fr}.choices.one .btn{font-size:1.15rem;min-height:70px}
.wslots{min-height:60px;display:flex;flex-wrap:wrap;gap:6px;justify-content:center;align-items:center}.wslots span{background:#f3f0ff;border-bottom:4px solid #9b5de5;border-radius:10px;padding:6px 10px;font-size:1.5rem;font-weight:900;color:#d6336c;min-width:0;height:auto}
.wslots .ph{color:#aaa}.wtiles .btn{font-size:1.4rem;min-width:auto;padding:12px 16px}.blank{color:#9b5de5;font-weight:900}
.exp-sent{background:#e64980}.lockedx{opacity:.6}.explore{grid-template-columns:repeat(6,1fr)}.smem{grid-template-columns:repeat(4,1fr)}.smem .mc{font-size:.9rem;color:#2d3047}
/* character builder */
.kbuild{display:grid;gap:12px}.kprev{position:sticky;top:0;z-index:2;background:#fff8e7;display:flex;flex-direction:column;align-items:center;padding-bottom:6px}
.kopt h3{margin:10px 4px 6px}.kvals{display:flex;flex-wrap:wrap;gap:8px}.kv{border:3px solid transparent;background:#fff;border-radius:18px;min-width:64px;min-height:64px;padding:4px 6px;font-family:inherit;font-weight:800;font-size:1rem;display:flex;flex-direction:column;align-items:center;justify-content:center;box-shadow:0 3px 0 rgba(0,0,0,.08)}
.kv.sel{border-color:#9b5de5;background:#f3f0ff}.kv small{font-size:.75rem}.swatch{display:block;width:44px;height:44px;border-radius:50%;border:3px solid #3a3340}.exp-me{background:#20c997}
.prof .av svg{display:block;margin:0 auto}.zhost .kid{flex:none}
@media (min-width:1000px){.kbuild{grid-template-columns:320px 1fr}.kprev{position:sticky;top:10px;align-self:start}}
.explore{grid-template-columns:repeat(4,1fr)}@media (min-width:700px){.explore{grid-template-columns:repeat(7,1fr)}}
/* play-test fixes */
button,.btn,.card,.tile2,.lvl,.mc,.balloon,.prof,.zbubble,.hist{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}
input,textarea,select{-webkit-user-select:text;user-select:text}
.talkcard img{width:auto;height:auto;max-width:150px;max-height:150px}
.sndopts{display:flex;flex-direction:column;gap:10px}.sndopt{display:flex;gap:8px;align-items:center;justify-content:center}.sndopt>.btn:first-child{flex:1}
.sndans{display:flex;align-items:center;gap:12px;justify-content:center}.sndans img{width:56px;height:56px}.sndans small{color:#555}
.zspk{margin-left:6px;padding:2px 8px;vertical-align:middle}
#keepGoing{color:#e67700;font-weight:800}
#moreActs{margin-top:8px}
