:root{--ink: #1f2a44;--ink-soft: #55607a;--paper: #fff8ec;--cream: #fcefd8;--line: #e6d8c3;--mint: #63e6be;--violet: #845ef7;--star: #ffd43b;--coral: #ff8787;--sky: #74c0fc;--night: #0c1a2b;--night-deep: #07111f;--green: #2fa35a;--danger: #d6455a;--radius: 28px;--safe-top: env(safe-area-inset-top, 0px);--safe-bottom: env(safe-area-inset-bottom, 0px);--btn: clamp(52px, 6.5vmin + 12px, 74px);font-family:Nunito,"Baloo 2",Trebuchet MS,Segoe UI,system-ui,-apple-system,Roboto,Arial,sans-serif;color:var(--ink);-webkit-text-size-adjust:100%}*{box-sizing:border-box}html,body{margin:0;height:100%}body{background:var(--night);overscroll-behavior:none}body[data-mode=child]{overflow:hidden;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none;touch-action:manipulation}body[data-mode=parent]{background:#f3efe7}button{font:inherit;color:inherit}.sr-only{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}#app.booting:before{content:"";position:fixed;inset:0;margin:auto;width:64px;height:64px;border-radius:50%;border:6px solid rgba(99,230,190,.25);border-top-color:var(--mint);animation:spin .9s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.sprite{display:block;width:100%;height:100%;pointer-events:none}.sprite>svg{display:block;width:100%;height:100%;overflow:visible}.sprite.flip>svg{transform:scaleX(-1)}.silhouette>svg{filter:brightness(0);opacity:.82}.silhouette.faint>svg{opacity:.18}.screen{position:fixed;inset:0;overflow:hidden;outline:none}.backdrop{position:absolute;inset:0;z-index:0}.backdrop>svg{width:100%;height:100%;display:block}.backdrop.dim:after{content:"";position:absolute;inset:0;background:#fff8ec2e}.night .backdrop.dim:after{background:#07111f1f}.backdrop g[id^=cloud-]{animation:drift 34s ease-in-out infinite alternate}.backdrop g[id^=cloud-]:nth-of-type(2n){animation-duration:44s;animation-delay:-9s}.backdrop g[id^=flyer-]{animation:drift 16s ease-in-out infinite alternate}.backdrop g[id^=firefly-]{animation:firefly 7s ease-in-out infinite}.backdrop g[id^=firefly-]:nth-of-type(3n){animation-duration:9s;animation-delay:-3s}.backdrop g[id^=firefly-]:nth-of-type(3n+1){animation-duration:6s;animation-delay:-1.5s}.backdrop g[id^=twinkle-]{animation:twinkle 3.4s ease-in-out infinite}.backdrop g[id^=twinkle-]:nth-of-type(2n){animation-delay:-1.7s}.backdrop g[id^=note-]{animation:floaty 4.6s ease-in-out infinite}.backdrop g[id^=note-]:nth-of-type(2n){animation-delay:-2.2s}@keyframes drift{0%{translate:-46px 0}to{translate:46px 0}}@keyframes firefly{0%,to{translate:0 0;opacity:.95}50%{translate:14px -26px;opacity:.4}}@keyframes twinkle{0%,to{opacity:1}50%{opacity:.35}}@keyframes floaty{0%,to{translate:0 0}50%{translate:0 -20px}}.bob{animation:bob 3.2s ease-in-out infinite}@keyframes bob{0%,to{transform:translateY(0)}50%{transform:translateY(-8px)}}.topbar{position:absolute;z-index:5;left:0;right:0;top:0;display:flex;align-items:center;gap:10px;padding:calc(8px + var(--safe-top)) clamp(10px,2vw,22px) 6px}.topbar .spacer{flex:1}.icon-btn{flex:none;width:var(--btn);aspect-ratio:132 / 138;padding:0;border:0;background:none;cursor:pointer;border-radius:50%;transition:transform .15s ease;-webkit-tap-highlight-color:transparent}.icon-btn:active{transform:scale(.9)}.icon-btn:focus-visible,.choice:focus-visible,.piece:focus-visible,.stone-btn:focus-visible,.landmark:focus-visible,.profile-card:focus-visible,.drop-zone:focus-visible,.bin:focus-visible,.seq-slot:focus-visible,.match-card:focus-visible,.mem-card:focus-visible,.hotspot:focus-visible,.count-cell:focus-visible,.listen-btn:focus-visible,.avatar-btn:focus-visible,.play-big:focus-visible,.jigsaw-cell:focus-visible,.hold-btn:focus-visible{outline:4px solid var(--star);outline-offset:3px}.icon-btn.small{width:clamp(40px,4vmin + 22px,54px)}.icon-btn.big{width:clamp(68px,9vmin,86px);display:grid;justify-items:center;aspect-ratio:auto}.icon-btn.big .sprite{aspect-ratio:132 / 138;height:auto}.btn-caption{font-weight:800;font-size:14px;margin-top:2px;color:var(--ink)}.parent-lock{width:clamp(40px,3vmin + 26px,52px);opacity:.85}.corner-right{position:absolute;z-index:5;top:calc(10px + var(--safe-top));right:14px}.screen-title,.world-title{margin:0;flex:1;text-align:center;font-weight:900;font-size:clamp(22px,3vmin + 10px,38px);color:var(--ink);text-shadow:0 2px 0 rgba(255,255,255,.6)}.screen-title.light{color:#fff;text-shadow:0 3px 0 rgba(7,17,31,.35)}.world-title{display:flex;align-items:center;justify-content:center;gap:8px}.world-title>span{background:#ffffffeb;border-radius:999px;padding:6px 18px;box-shadow:0 4px #1f2a441f;font-size:clamp(18px,2vmin + 10px,30px)}.world-title .title-art{width:clamp(44px,6vmin,70px);height:auto;aspect-ratio:200 / 206}.opening-center{position:relative;z-index:2;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:clamp(4px,1.4vmin,14px);padding:20px 16px calc(24px + var(--safe-bottom))}.logo{margin:0;width:min(78vw,560px);aspect-ratio:708 / 150;filter:drop-shadow(0 4px 0 rgba(7,17,31,.5))}.opening-lumi{width:clamp(150px,30vmin,280px);height:auto;aspect-ratio:200 / 206}.tagline{margin:0;color:#e8f6ff;font-weight:800;letter-spacing:.04em;font-size:clamp(16px,2.2vmin,22px);text-shadow:0 2px 0 rgba(0,0,0,.3)}.play-big{width:clamp(100px,17vmin,150px);aspect-ratio:132 / 138;border:0;padding:0;background:none;cursor:pointer;animation:pulse 1.8s ease-in-out infinite;border-radius:50%}@keyframes pulse{0%,to{transform:scale(1)}50%{transform:scale(1.07)}}.profile-grid{position:absolute;z-index:2;inset:90px 12px calc(16px + var(--safe-bottom));display:flex;flex-wrap:wrap;align-content:center;justify-content:center;gap:clamp(10px,3vw,40px);overflow-y:auto}.profile-card{position:relative;width:clamp(128px,20vmin + 30px,220px);border:0;background:none;cursor:pointer;padding:0 0 46px;transition:transform .15s}.profile-card:active{transform:scale(.95)}.profile-card .avatar{position:relative;z-index:2;width:86%;margin:0 auto -18%;height:auto;aspect-ratio:200 / 206}.profile-card .stone{width:100%;height:auto;aspect-ratio:200 / 76}.name-pill{display:inline-flex;align-items:center;gap:8px;background:#fffffff0;color:var(--ink);border-radius:999px;padding:5px 14px;font-weight:900;box-shadow:0 4px #1f2a4426;white-space:nowrap;font-size:clamp(14px,1.4vmin + 8px,19px)}.profile-card .name-pill{position:absolute;left:50%;bottom:0;transform:translate(-50%)}.name-pill .stars{color:#b27b00;font-size:.85em}.landmarks{position:absolute;inset:0;z-index:2}.landmark{position:absolute;width:clamp(108px,13vmin + 4vw,236px);transform:translate(-50%,-86%);border:0;background:none;padding:0;cursor:pointer;display:grid;justify-items:center;transition:transform .18s}.landmark:hover,.landmark:active{transform:translate(-50%,-88%) scale(1.05)}.landmark-art{width:100%;height:auto;aspect-ratio:200 / 206;filter:drop-shadow(0 8px 0 rgba(31,42,68,.12))}.landmark .name-pill{margin-top:-6px;flex-direction:column;gap:0;line-height:1.15;padding:5px 12px;text-align:center;white-space:normal;max-width:150%}.avatar-btn{display:flex;align-items:center;gap:8px;border:0;cursor:pointer;padding:4px 16px 4px 4px;border-radius:999px;background:#ffffffeb;box-shadow:0 4px #1f2a4424;font-weight:900;font-size:clamp(15px,1.3vmin + 9px,20px)}.avatar-btn .sprite{width:clamp(42px,5vmin + 16px,60px);height:auto;aspect-ratio:200 / 206}.map-lumi{position:absolute;z-index:3;left:12px;bottom:calc(6px + var(--safe-bottom));width:clamp(96px,15vmin,180px);height:auto;aspect-ratio:200 / 206;pointer-events:none}.world-body{position:absolute;z-index:2;inset:calc(var(--btn) + 22px + var(--safe-top)) 0 0;overflow-y:auto;padding:12px 12px calc(110px + var(--safe-bottom));-webkit-overflow-scrolling:touch}.stone-path{list-style:none;margin:0 auto;padding:8px 0;max-width:1180px;display:flex;flex-wrap:wrap;justify-content:center;align-content:center;gap:clamp(8px,2vw,30px) clamp(10px,2.4vw,34px);min-height:100%}.stone-item:nth-child(2n){transform:translateY(clamp(10px,3vmin,34px))}.stone-btn{position:relative;display:grid;justify-items:center;width:clamp(108px,12vmin + 5vw,178px);border:0;padding:0;background:none;cursor:pointer;transition:transform .15s}.stone-btn:active{transform:scale(.94)}.stone-icon{position:relative;z-index:2;width:70%;height:auto;aspect-ratio:1;margin-bottom:-16%;border-radius:26px;background:#fff;padding:8%;box-shadow:0 0 0 3px #1f2a4414,0 6px #1f2a4424}.stone-icon>svg{height:100%}.stone-item.done .stone-icon{box-shadow:0 0 0 5px var(--star),0 6px #1f2a4424}.stone-btn .stone{width:100%;height:auto;aspect-ratio:200 / 76}.stone-num{position:absolute;z-index:3;top:-6px;left:6px;min-width:30px;height:30px;border-radius:15px;background:var(--violet);color:#fff;font-weight:900;display:grid;place-items:center;font-size:16px;box-shadow:0 3px #1f2a4433}.world-lumi{position:absolute;z-index:3;left:8px;bottom:calc(4px + var(--safe-bottom));width:clamp(92px,14vmin,170px);height:auto;aspect-ratio:200 / 206;pointer-events:none}.screen.play{display:grid;grid-template-rows:auto auto minmax(0,1fr)}.screen.play .topbar{position:relative;grid-row:1}.guide{position:relative;z-index:3;grid-row:2;display:flex;align-items:center;justify-content:center;gap:6px;padding:0 clamp(10px,2vw,24px);margin-top:calc(-1 * var(--btn) - 2px);pointer-events:none}.guide-art{width:clamp(70px,12vmin,130px);aspect-ratio:200 / 206;flex:none}.bubble{pointer-events:auto;position:relative;background:#fff;border-radius:26px;padding:8px 10px 8px 18px;max-width:min(640px,72vw);box-shadow:0 6px #1f2a441f;display:flex;flex-direction:column;align-items:center;gap:4px}.bubble:before{content:"";position:absolute;left:-12px;top:50%;translate:0 -50%;border:12px solid transparent;border-right-color:#fff;border-left:0}.bubble-row{display:flex;align-items:center;gap:10px}.prompt-text{margin:0;font-weight:900;font-size:clamp(17px,1.6vmin + 11px,27px);line-height:1.2;text-align:center}.bubble .cue{width:auto;height:clamp(56px,10vmin,110px);max-width:100%}.play-area{position:relative;z-index:2;grid-row:3;overflow:auto;display:flex;padding:clamp(8px,1.6vmin,18px) 12px calc(14px + var(--safe-bottom));-webkit-overflow-scrolling:touch}.engine{margin:auto;display:flex;flex-direction:column;align-items:center;gap:clamp(10px,2vmin,22px);width:100%;max-width:1100px}.fx-layer{position:absolute;inset:0;z-index:20;pointer-events:none;overflow:hidden}.spark{position:absolute;width:var(--size, 34px);height:var(--size, 34px);translate:-50% -50%;animation:spark .9s ease-out forwards}@keyframes spark{0%{transform:translate(0) scale(.4);opacity:1}70%{opacity:1}to{transform:translate(var(--dx),var(--dy)) scale(1.1) rotate(40deg);opacity:0}}.engine-error{background:#fff;padding:16px 20px;border-radius:18px;font-weight:800}.choices{display:flex;flex-wrap:wrap;justify-content:center;gap:clamp(10px,2vmin,24px)}.choice,.match-card,.piece,.drop-zone,.pattern-cell{border:4px solid transparent;background:#ffffffe6;border-radius:var(--radius);box-shadow:0 6px #1f2a4421}.choice{width:clamp(104px,18vmin + 2vw,210px);aspect-ratio:1;padding:8px;cursor:pointer;transition:transform .15s,opacity .3s,border-color .2s;-webkit-tap-highlight-color:transparent}.choice:active{transform:scale(.95)}.choice.right{border-color:var(--mint);box-shadow:0 0 0 6px #63e6be73,0 6px #1f2a4421}.choice.tried{opacity:.5}.choice.faded{opacity:.4}.choices.n-4{max-width:calc(2*clamp(104px,18vmin + 2vw,210px) + 3*clamp(10px,2vmin,24px) + 8px)}@media(min-aspect-ratio:5/4){.choices.n-4{max-width:none}}.choices.wide .choice{width:clamp(150px,30vmin + 6vw,360px);aspect-ratio:4 / 3}.choices.numbers .choice{width:clamp(84px,13vmin + 2vw,150px)}.engine-compare-size .choice{background:#ffffffd1}.stage-cue{width:clamp(130px,26vmin,250px);aspect-ratio:1;background:#ffffffeb;border-radius:var(--radius);padding:10px;box-shadow:0 6px #1f2a4421}.stage-cue.small{width:clamp(90px,15vmin,150px)}.listen-btn{width:clamp(118px,20vmin,190px);aspect-ratio:200 / 206;border:0;padding:0;background:none;cursor:pointer;border-radius:50%}.listen-btn.playing{animation:pulse .6s ease-in-out infinite}.shake{animation:shake .42s ease}@keyframes shake{0%,to{translate:0 0}20%{translate:-9px 0}40%{translate:9px 0}60%{translate:-6px 0}80%{translate:5px 0}}.pop{animation:popin .34s ease}@keyframes popin{0%{scale:.86}60%{scale:1.1}to{scale:1}}.hint-glow{animation:hintglow 1s ease-in-out 3;border-color:var(--star)!important}@keyframes hintglow{0%,to{box-shadow:0 0 #ffd43b00,0 6px #1f2a4421;scale:1}50%{box-shadow:0 0 0 12px #ffd43b8c,0 6px #1f2a4421;scale:1.06}}.count-tray{display:grid;gap:clamp(2px,.8vmin,8px);padding:clamp(8px,1.4vmin,14px);background:#ffffffd1;border-radius:var(--radius);box-shadow:0 6px #1f2a441f}.count-tray.cols-1{grid-template-columns:repeat(1,auto)}.count-tray.cols-2{grid-template-columns:repeat(2,auto)}.count-tray.cols-3{grid-template-columns:repeat(3,auto)}.count-tray.cols-5{grid-template-columns:repeat(5,auto)}.count-cell{position:relative;width:clamp(52px,8vmin + 2vw,104px);aspect-ratio:1;border:0;background:none;padding:2px;cursor:pointer;border-radius:18px}.count-cell.counted{background:#63e6be47}.count-cell.away>.sprite:first-child{opacity:.45}.count-badge{position:absolute;top:-4px;right:-4px;width:46%;height:auto;aspect-ratio:1}.away-mark{position:absolute;top:0;right:0;width:48%;height:auto;aspect-ratio:132 / 138}.equation{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:clamp(6px,1.4vmin,16px)}.equation .count-cell{width:clamp(44px,6vmin + 2vw,84px)}.op-sign{width:clamp(44px,7vmin,76px);aspect-ratio:1}.op-blank{width:clamp(70px,11vmin,116px);aspect-ratio:1}.engine-match{flex-direction:row;justify-content:center;position:relative;gap:clamp(36px,12vw,180px);align-items:stretch}.match-col{display:flex;flex-direction:column;gap:clamp(8px,1.6vmin,16px);justify-content:center;position:relative;z-index:1}.match-card{width:clamp(84px,13vmin + 2vw,160px);aspect-ratio:1;padding:6px;cursor:pointer;transition:transform .15s,border-color .2s}.match-card.selected{border-color:var(--violet);transform:scale(1.06);box-shadow:0 0 0 6px #845ef740,0 6px #1f2a4421}.match-card.matched{border-color:var(--pair, var(--mint))}.match-lines{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;z-index:0;overflow:visible}.engine-memory{display:grid;gap:clamp(8px,1.6vmin,16px);justify-content:center;width:auto}.engine-memory.cols-2{grid-template-columns:repeat(2,auto)}.engine-memory.cols-3{grid-template-columns:repeat(3,auto)}.engine-memory.cols-4{grid-template-columns:repeat(4,auto)}.mem-card{width:clamp(72px,11vmin + 3vw,150px);aspect-ratio:160 / 198;border:0;padding:0;background:none;cursor:pointer;perspective:800px}.mem-inner{position:relative;width:100%;height:100%;transition:transform .36s ease;transform-style:preserve-3d}.mem-card.flipped .mem-inner,.mem-card.found .mem-inner{transform:rotateY(180deg)}.mem-face{position:absolute;inset:0;backface-visibility:hidden;-webkit-backface-visibility:hidden;border-radius:18px}.mem-front{transform:rotateY(180deg);background:#fff;padding:8px;box-shadow:0 5px #1f2a4421;display:grid;place-items:center}.mem-card.found .mem-front{box-shadow:0 0 0 5px var(--mint),0 5px #1f2a4421}@media(max-width:480px)and (orientation:portrait){.engine-memory.cols-4{grid-template-columns:repeat(3,auto)}}.drop-row,.bin-row,.slot-row,.tray,.pattern-row{display:flex;flex-wrap:wrap;justify-content:center;gap:clamp(8px,1.8vmin,20px)}.tray{min-height:clamp(84px,14vmin,150px);padding:8px;border-radius:var(--radius);background:#fff8ec8c}.piece{width:clamp(80px,12vmin + 2vw,150px);aspect-ratio:1;padding:6px;cursor:grab;touch-action:none;transition:box-shadow .15s,opacity .2s;-webkit-tap-highlight-color:transparent;position:relative}.piece.dragging{cursor:grabbing;box-shadow:0 16px 28px #1f2a4447;transition:none}.piece.returning{transition:transform .25s ease}.piece.selected{border-color:var(--violet);box-shadow:0 0 0 6px #845ef747,0 6px #1f2a4421}.piece.faded{opacity:.45}.drop-zone{position:relative;width:clamp(110px,18vmin + 3vw,220px);aspect-ratio:1;padding:8px;cursor:pointer;transition:transform .15s}.drop-zone.outline{background:#ffffffa6;border:4px dashed rgba(31,42,68,.25)}.drop-hover{transform:scale(1.05);border-color:var(--mint)!important}.drop-holder{position:absolute;inset:auto 4px 4px auto;display:flex;flex-wrap:wrap-reverse;justify-content:flex-end;gap:2px;max-width:70%;pointer-events:none}.drop-holder .piece{width:clamp(46px,7vmin + 6px,84px);padding:3px;box-shadow:0 3px #1f2a441f;border-width:2px}.mode-build .drop-holder{inset:8px;max-width:none;justify-content:center;align-items:center}.mode-build .drop-holder .piece{width:100%;height:100%;background:none;border:0}.need-badge{position:absolute;top:-14px;left:-14px;width:clamp(42px,6vmin,64px);aspect-ratio:1}.demo-hand{position:absolute;z-index:25;width:clamp(56px,8vmin,84px);height:auto;aspect-ratio:142 / 148;pointer-events:none;animation:demo 2.4s ease-in-out forwards}@keyframes demo{0%{opacity:0;transform:translate(0)}15%{opacity:1;transform:translate(0)}80%{opacity:1;transform:translate(var(--dx),var(--dy))}to{opacity:0;transform:translate(var(--dx),var(--dy))}}.engine-drag,.engine-sort{position:relative}.bin{position:relative;width:clamp(118px,18vmin + 4vw,240px);border:0;padding:0;background:none;cursor:pointer;display:grid;justify-items:center;transition:transform .15s}.bin-cue{width:42%;aspect-ratio:1;background:#ffffffeb;border-radius:22px;padding:6px;box-shadow:0 4px #1f2a441f;margin-bottom:4px}.bin-basket{width:100%;height:auto;aspect-ratio:200 / 206}.bin .bin-holder{position:absolute;inset:auto 12% 14%;max-width:none;justify-content:center}.bin .bin-holder .piece{width:34%;background:#ffffffeb}.seq-slot{position:relative;width:clamp(80px,13vmin + 3vw,172px);aspect-ratio:1;border:0;padding:0;background:none;cursor:pointer}.seq-slot .slot-bg{position:absolute;inset:0}.seq-slot .drop-holder{inset:6%;max-width:none;justify-content:center;align-items:center}.seq-slot .drop-holder .piece{width:100%;height:100%;padding:4px}.engine-sequence .piece{width:clamp(74px,12vmin + 2vw,160px)}.pattern-row{align-items:center}.pattern-cell{width:clamp(60px,9vmin + 2vw,128px);aspect-ratio:1;padding:6px;position:relative}.pattern-cell.blank{background:#ffffff8c;box-shadow:none}.pattern-cell .slot-bg{position:absolute;inset:0}.pattern-cell .qmark{position:absolute;inset:22%;width:auto;height:auto}.pattern-cell.filled{background:#fffffff2;border-color:var(--mint)}.engine-trace{gap:12px}.trace-board{position:relative;height:min(56vh,460px);max-width:94vw;background:#ffffffe0;border-radius:32px;box-shadow:0 8px #1f2a4421}.trace-art,.trace-overlay{position:absolute;inset:0;width:100%;height:100%}.trace-art>svg{width:100%;height:100%}.trace-overlay{touch-action:none;cursor:crosshair}.trace-overlay .ink{fill:none;stroke:var(--violet);stroke-width:13;stroke-linecap:round;stroke-linejoin:round}.trace-start{position:absolute;width:clamp(44px,6vmin,64px);height:auto;aspect-ratio:1;translate:-50% -50%;pointer-events:none;animation:pulse 1.2s ease-in-out infinite;transition:left .2s,top .2s}.trace-start.nudge{animation:popin .4s ease 2}.trace-board.done{box-shadow:0 0 0 6px var(--mint),0 8px #1f2a4421}.trace-picture{width:clamp(90px,16vmin,160px);aspect-ratio:1;animation:popin .5s ease}.jigsaw-board{position:relative;display:grid;grid-template-columns:repeat(var(--cols),1fr);grid-template-rows:repeat(var(--rows),1fr);width:min(92vw,640px,calc(50vh * 4 / 3));aspect-ratio:4 / 3;border-radius:24px;overflow:hidden;background:#fff;box-shadow:0 8px #1f2a4421}.jigsaw-ghost{position:absolute;inset:0;opacity:.26}.jigsaw-ghost>svg{width:100%;height:100%}.jigsaw-cell{position:relative;z-index:1;border:2px dashed rgba(31,42,68,.28);background:transparent;padding:0;cursor:pointer}.jigsaw-cell.filled{border-color:transparent}.jigsaw-cell .piece{position:absolute;inset:0;width:100%;height:100%;padding:0;border:0;border-radius:0;box-shadow:none;background:none}.jigsaw-piece{width:clamp(70px,10vmin + 4vw,170px);padding:0;overflow:hidden;border-radius:12px}.jigsaw-piece .sprite>svg{width:100%;height:100%}.jigsaw-board.complete{box-shadow:0 0 0 6px var(--mint),0 8px #1f2a4421}.discover-board{position:relative;width:min(94vw,960px,calc(56vh * var(--ar, 1.58)));border-radius:26px;overflow:hidden;box-shadow:0 8px #1f2a4421}.discover-art{position:absolute;inset:0}.discover-art>svg{width:100%;height:100%}.hotspot{position:absolute;border:0;background:transparent;border-radius:22px;cursor:pointer;padding:0}.hotspot:after{content:"";position:absolute;inset:-12px;border-radius:26px}.hotspot.found{box-shadow:0 0 0 5px var(--star),0 0 26px 6px #ffd43bb3;background:#fff3b02e}.hotspot.hint-glow{border:4px dashed var(--star)}.discover-counter{display:flex;gap:6px;background:#ffffffe0;border-radius:999px;padding:4px 12px;box-shadow:0 4px #1f2a441f}.discover-counter .sprite{width:clamp(34px,5vmin,50px);height:auto;aspect-ratio:1}.reward{position:absolute;inset:0;z-index:40;display:grid;place-items:center;background:#0c1a2b80;animation:fadein .25s ease;padding:16px}@keyframes fadein{0%{opacity:0}}.reward-card{background:var(--paper);border-radius:36px;padding:clamp(14px,3vmin,28px) clamp(16px,4vmin,36px);text-align:center;box-shadow:0 12px #1f2a442e;animation:popin .45s ease;max-width:94vw}.reward-art{display:flex;align-items:flex-end;justify-content:center;gap:4px}.reward-lumi{width:clamp(110px,20vmin,180px);height:auto;aspect-ratio:200 / 206}.reward-star{width:clamp(96px,16vmin,150px);height:auto;aspect-ratio:1;animation:spinstar .9s ease}@keyframes spinstar{0%{transform:rotate(-90deg) scale(.4)}}.reward-title{margin:6px 0 12px;font-size:clamp(30px,5vmin,48px);font-weight:900;color:var(--violet)}.reward-actions{display:flex;gap:clamp(10px,3vmin,26px);justify-content:center}.gate{position:fixed;inset:0;z-index:100;display:grid;place-items:center;background:#07111f9e;padding:16px}.gate-card{position:relative;width:min(420px,100%);max-height:96vh;overflow:auto;background:#fff;border-radius:24px;padding:24px 22px;text-align:center;box-shadow:0 20px 50px #0000004d}.gate-close{position:absolute;top:8px;right:8px;width:46px}.gate-step h2{margin:6px 0;font-size:22px}.gate-step p{margin:0 0 12px;color:var(--ink-soft)}.gate-msg{min-height:1.4em;font-weight:700;color:var(--ink-soft)!important}.gate-msg.error{color:var(--danger)!important}.hold-btn{position:relative;width:120px;aspect-ratio:132 / 138;border:0;background:none;cursor:pointer;padding:0;border-radius:50%;touch-action:none}.hold-ring{position:absolute;inset:-10px;border-radius:50%;background:conic-gradient(var(--mint) calc(var(--p, 0) * 360deg),transparent 0);mask:radial-gradient(circle,transparent 62%,#000 63%);-webkit-mask:radial-gradient(circle,transparent 62%,#000 63%);pointer-events:none}.pin-pad{display:grid;gap:14px;justify-items:center;outline:none}.pin-pad.disabled{opacity:.55}.pin-dots{display:flex;gap:12px;min-height:22px}.pin-dot{width:18px;height:18px;border-radius:50%;border:3px solid var(--ink-soft)}.pin-dot.on{background:var(--violet);border-color:var(--violet)}.pin-keys{display:grid;grid-template-columns:repeat(3,72px);gap:10px}.pin-key{height:60px;border-radius:16px;border:2px solid #e5e0d6;background:#fbf8f2;font-size:24px;font-weight:800;cursor:pointer}.pin-key:active{background:#efe9dd}.pin-key.ok{background:var(--violet);color:#fff;border-color:var(--violet);font-size:18px}.pin-key.secondary{font-size:20px}.pin-key:focus-visible,.btn:focus-visible,.parent-tabs a:focus-visible,.age-option:focus-visible,.avatar-option:focus-visible,.link-btn:focus-visible,input:focus-visible{outline:3px solid var(--violet);outline-offset:2px}.link-btn{margin-top:12px;background:none;border:0;color:var(--violet);font-weight:800;text-decoration:underline;cursor:pointer}.parent-ui{font-family:system-ui,-apple-system,Segoe UI,Roboto,Arial,sans-serif;color:var(--ink)}.screen.parent{position:static;min-height:100%;overflow:visible;padding:0 0 40px}.parent-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:calc(14px + var(--safe-top)) clamp(14px,4vw,40px) 10px;background:#fff;border-bottom:1px solid #e8e2d6;flex-wrap:wrap}.brand{display:flex;align-items:center;gap:10px;font-weight:800;color:var(--ink-soft)}.brand-logo{width:120px;height:auto;aspect-ratio:708 / 150}.parent-tabs{display:flex;gap:4px;padding:10px clamp(10px,4vw,40px);overflow-x:auto;background:#fff;border-bottom:1px solid #e8e2d6}.parent-tabs a{padding:9px 14px;border-radius:10px;text-decoration:none;color:var(--ink-soft);font-weight:700;white-space:nowrap}.parent-tabs a.on{background:#efe8ff;color:var(--violet)}.parent-body{max-width:980px;margin:0 auto;padding:18px clamp(12px,4vw,32px);display:grid;gap:16px}.card{background:#fff;border-radius:16px;padding:18px clamp(14px,3vw,24px);box-shadow:0 1px 2px #1f2a440f,0 4px 18px #1f2a440d}.card h2{margin:0 0 6px;font-size:20px}.card h3{margin:18px 0 8px;font-size:16px;color:var(--ink-soft)}.muted{color:var(--ink-soft)}.small{font-size:13px}.child-head{display:flex;align-items:center;gap:14px}.child-head h2{margin:0}.child-head p{margin:2px 0 0}.child-avatar{width:64px;height:auto;aspect-ratio:200 / 206;flex:none}.world-bars{display:grid;gap:8px}.bar-row{display:grid;grid-template-columns:34px minmax(90px,160px) 1fr 48px;align-items:center;gap:10px}.bar-icon{width:34px;height:auto;aspect-ratio:200 / 206}.bar{position:relative;height:12px;background:#f0ebe2;border-radius:6px;overflow:hidden}.bar-fill{position:absolute;inset:0 auto 0 0;background:linear-gradient(90deg,var(--mint),#3cc46a);border-radius:6px}.bar-value{text-align:right;font-variant-numeric:tabular-nums;color:var(--ink-soft)}.table-wrap{overflow-x:auto}.skill-table{width:100%;border-collapse:collapse;font-size:15px}.skill-table th,.skill-table td{text-align:left;padding:7px 8px;border-bottom:1px solid #f0ebe2}.skill-table th{color:var(--ink-soft);font-weight:700;font-size:13px}.recent-list{list-style:none;padding:0;margin:0;display:grid;gap:8px}.recent-list li{display:grid;grid-template-columns:1fr auto;gap:2px 10px;align-items:center;padding:8px 0;border-bottom:1px solid #f3efe7}.recent-title{font-weight:700}.recent-list .muted{grid-column:1;font-size:13px}.recent-list .pill{grid-column:2;grid-row:1 / span 2}.pill{padding:4px 10px;border-radius:999px;font-size:13px;font-weight:700;white-space:nowrap}.mastery-new{background:#f0ebe2;color:var(--ink-soft)}.mastery-practising{background:#fff3c4;color:#8a6400}.mastery-confident{background:#d9f7ea;color:#13734a}.btn{display:inline-flex;align-items:center;justify-content:center;min-height:44px;padding:10px 18px;border-radius:12px;border:2px solid transparent;font-weight:800;cursor:pointer;text-decoration:none;font-size:15px}.btn.primary{background:var(--violet);color:#fff}.btn.secondary{background:#fff;border-color:#ddd6c8;color:var(--ink)}.btn.danger{background:var(--danger);color:#fff}.btn:active{transform:translateY(1px)}.form-actions,.row-actions{display:flex;gap:10px;flex-wrap:wrap;justify-content:flex-end;margin-top:12px}.profile-row{display:flex;align-items:center;gap:14px;flex-wrap:wrap}.profile-row .grow{flex:1;min-width:120px}.profile-row h2,.profile-row p{margin:0}.profile-form{display:grid;gap:8px;width:100%}.profile-form label,.profile-form .label{font-weight:800;margin-top:8px}.profile-form input[type=text],.card input[type=text],.gate-card input[type=text]{font:inherit;padding:12px 14px;border-radius:12px;border:2px solid #ddd6c8;font-size:17px;width:100%;background:#fff;color:var(--ink)}.hint{color:var(--ink-soft);font-size:14px;margin:0}.form-error{color:var(--danger);font-weight:700;margin:4px 0 0;min-height:1em}.age-picker{display:flex;gap:8px;flex-wrap:wrap}.age-option{padding:10px 16px;border-radius:12px;border:2px solid #ddd6c8;background:#fff;font-weight:800;cursor:pointer;min-height:44px}.age-option.on{background:var(--violet);border-color:var(--violet);color:#fff}.avatar-picker{display:grid;grid-template-columns:repeat(auto-fill,minmax(72px,1fr));gap:8px}.avatar-option{aspect-ratio:1;border-radius:16px;border:3px solid #eee8dd;background:#fffaf2;padding:4px;cursor:pointer}.avatar-option.on{border-color:var(--violet);background:#f3eeff}.confirm-box{margin-top:12px;padding:14px;border-radius:12px;background:#fff7e6;border:2px solid #f3d38a;width:100%}.confirm-box.danger{background:#fff0f1;border-color:#f2b8bf}.confirm-box p{margin:0;font-weight:700}.notice{padding:12px 14px;border-radius:12px;background:#eef6ff;margin:0}.notice p{margin:4px 0}.notice.ok{background:#e3f8ee;color:#13734a;font-weight:700}.notice.error{background:#ffecee;color:#9b1c2e;font-weight:700}.notice.warn{background:#fff6dc;color:#6d5200}.toggle-row{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:12px 0;border-bottom:1px solid #f3efe7}.toggle-row label{font-weight:800}.toggle-row p{margin:2px 0 0;font-size:14px}.toggle-row input[type=checkbox]{appearance:none;-webkit-appearance:none;flex:none;width:54px;height:32px;border-radius:16px;background:#ddd6c8;position:relative;cursor:pointer;transition:background .2s}.toggle-row input[type=checkbox]:after{content:"";position:absolute;top:4px;left:4px;width:24px;height:24px;border-radius:50%;background:#fff;transition:transform .2s;box-shadow:0 1px 3px #0003}.toggle-row input[type=checkbox]:checked{background:var(--green)}.toggle-row input[type=checkbox]:checked:after{transform:translate(22px)}.file-label{margin-right:8px}#restore-file{position:absolute;width:1px;height:1px;opacity:0}.backup-status{display:grid;gap:10px}.screen.setup{overflow-y:auto}.setup-panel{position:relative;z-index:2;width:min(560px,calc(100vw - 24px));margin:calc(24px + var(--safe-top)) auto 24px;background:#fff;border-radius:24px;padding:20px clamp(16px,4vw,30px) 26px;box-shadow:0 20px 50px #07111f4d}.setup-head{display:flex;align-items:center;gap:12px}.setup-head h1{margin:0;font-size:22px}.setup-head p{margin:4px 0 0;color:var(--ink-soft)}.setup-lumi{width:86px;height:auto;aspect-ratio:200 / 206;flex:none}.setup-panel h2{font-size:18px;margin:18px 0 6px}.pin-create{display:grid;justify-items:center;gap:4px;margin-top:10px}.pin-create h3{margin:4px 0}.fatal{display:grid;place-items:center;align-content:center;gap:12px;color:#fff;background:var(--night)}@media(max-height:520px)and (orientation:landscape){.guide{margin-top:calc(-1 * var(--btn))}.bubble .cue{height:52px}.choice{width:clamp(84px,22vmin + 4vw,160px)}}@media(max-width:720px){.guide{margin-top:0;padding-top:2px}.guide-art{width:clamp(56px,15vw,84px)}.bubble{max-width:calc(100vw - 110px)}}@media(max-width:420px){.bubble{padding-left:14px}.engine-match{gap:44px}.bar-row{grid-template-columns:28px 1fr 60px}.bar-row .bar-label{grid-column:2}.bar-row .bar{grid-column:2;grid-row:2}.bar-row .bar-value{grid-row:1 / span 2;grid-column:3}}@media(prefers-reduced-motion:reduce){*,*:before,*:after,.backdrop g{animation:none!important;transition:none!important}.spark{display:none}}
