@import url('https://fonts.googleapis.com/css2?family=Nunito:wght@400;600;700;800;900;1000&display=swap');
:root{font-family:Nunito,ui-rounded,system-ui,sans-serif;color:#45305c;background:#f4eff9;--app-height:100dvh;-webkit-text-size-adjust:100%;font-synthesis:none}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body{margin:0;width:100%;height:100%;overflow:hidden;overscroll-behavior:none;touch-action:none;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none}button,input,select{font:inherit}button{cursor:pointer;border:0;color:inherit;touch-action:manipulation}button:active{transform:translateY(1px)}button:disabled{opacity:.45;cursor:default}button:focus-visible,select:focus-visible,input:focus-visible,canvas:focus-visible{outline:3px solid #9571bd;outline-offset:2px}input{user-select:text;-webkit-user-select:text;touch-action:auto}img{pointer-events:none;-webkit-user-drag:none}.app{width:min(100%,1080px);height:var(--app-height);max-height:100dvh;display:flex;flex-direction:column;gap:7px;margin:auto;padding:max(9px,env(safe-area-inset-top)) 14px max(8px,env(safe-area-inset-bottom));overflow:hidden}header{height:43px;flex:none;display:flex;align-items:center;justify-content:space-between}.brand{display:flex;gap:9px;align-items:center}.brand-icon{display:grid;place-items:center;width:39px;height:39px;border-radius:13px;background:#8763b3;color:white;font-size:32px}h1{font-size:24px;line-height:1;margin:0;font-weight:1000;letter-spacing:-.8px}h1 span{display:block;font-size:8px;letter-spacing:1.8px;color:#a18aad;margin-top:6px}.header-actions{display:flex;gap:7px;align-items:center}.coins{background:#fff1d1;padding:5px 13px;border:1px solid #ecd9ad;border-radius:24px;font-size:14px}.coins>span{color:#d6a333}.coins b{font-size:19px;margin:0 4px}.icon-button{width:36px;height:36px;background:white;border-radius:50%;font-size:20px;font-weight:800}#sound[aria-pressed=true]{background:#d9eddf;color:#3a8963}.box-picker{display:flex;gap:7px;align-items:stretch;height:47px;flex:none}.box-picker>button{background:#ffffffd9;border-radius:14px}.box-picker>button:first-child,.box-picker>button:last-child{width:42px;font-size:29px}.box-picker #choose-box{flex:1;display:flex;justify-content:center;align-items:center;gap:10px;border:1px solid #e4d7ed}.box-picker img{width:43px;height:43px;object-fit:contain}.box-picker b{display:block;font-size:15px}.box-picker small{display:block;font-size:10px;color:#9b86ad;margin-top:1px}.machine{flex:1;min-height:100px;display:flex;flex-direction:column;border:4px solid white;border-radius:22px;overflow:hidden;box-shadow:0 5px 20px #58407115}.machine-bar{flex:none;height:30px;display:flex;justify-content:space-between;align-items:center;background:#fffdf7;padding:0 11px}.world{font-size:12px;font-weight:900}.machine-bar button{background:#f2ebf8;border-radius:10px;padding:4px 9px;font-size:12px;font-weight:800}.machine-bar b{margin:0 7px}.playfield{position:relative;flex:1;min-height:0;background:#dce9d8;overflow:hidden}canvas{display:block;width:100%;height:100%;touch-action:none}.scene-label{position:absolute;top:28px;left:27px;pointer-events:none;color:#405c4c;text-shadow:0 1px #ffffff77}.scene-label>span{font-size:9px;letter-spacing:1px;font-weight:900}.scene-label strong{display:none}.view-button{position:absolute;right:24px;top:25px;background:#fffdf6d9;border-radius:12px;padding:7px 10px;font-size:12px;backdrop-filter:blur(5px)}.machine-foot{flex:none;height:25px;display:flex;align-items:center;justify-content:space-between;padding:0 10px;background:#fffdf9;font-size:11px;color:#8b7c96}.edition{font-size:9px;letter-spacing:1px;color:#b3a4bd}.loading{position:absolute;inset:0;display:grid;place-items:center;background:#f2e9f8;color:#8b6c9f;font-size:15px;z-index:4}.toast{position:absolute;left:50%;bottom:20px;transform:translate(-50%,10px);background:#fffffff2;color:#614e73;box-shadow:0 5px 20px #43305922;border:1px solid white;border-radius:18px;padding:11px 16px;text-align:center;font-size:13px;font-weight:900;opacity:0;transition:.2s;pointer-events:none;max-width:90%;width:max-content}.toast.show{opacity:1;transform:translate(-50%,0)}.bottom{flex:none;display:flex;flex-direction:column;gap:5px}.collection-strip{height:30px;display:flex;align-items:center;gap:10px;background:#ffffff9c;border:1px solid white;border-radius:13px;padding:2px 12px}.collection-strip h2{font-size:12px;margin:0;font-weight:800}.collection-strip .eyebrow,.collection-strip p,.miniatures{display:none}.progress{display:flex;align-items:center;gap:9px;margin-left:auto}.progress b{font-size:13px;white-space:nowrap}.progress b span{color:#ab95b9}progress{appearance:none;display:block;width:65px;height:5px;border:0;border-radius:5px;overflow:hidden}progress::-webkit-progress-bar{background:#e8ddf0}progress::-webkit-progress-value{background:#85b9a1}progress::-moz-progress-bar{background:#85b9a1}.game-options{height:35px;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:0 5px;font-size:12px}.game-options>label:first-child{display:flex;gap:8px;align-items:center;font-weight:800}.game-options select{background:white;border:1px solid #decee9;border-radius:10px;padding:6px 8px;font-size:13px;color:#674a7e}#difficulty-hint{font-size:11px;color:#9f8baa;margin-left:auto}.assist{display:flex;align-items:center;gap:6px;font-size:12px;font-weight:800;white-space:nowrap}.assist input{position:absolute;opacity:0;width:1px;height:1px}.assist:has(input:focus-visible){outline:2px solid #9974c1}.switch{width:30px;height:19px;border-radius:20px;background:#cec1dc;position:relative}.switch:after{content:'';position:absolute;width:13px;height:13px;left:3px;top:3px;border-radius:50%;background:white;transition:.15s}.assist input:checked+.switch{background:#a88ac9}.assist input:checked+.switch:after{left:14px}.control-dock{height:120px;display:flex;gap:26px;align-items:center;justify-content:center;padding:0 15px}.joystick-wrap{flex:none;text-align:center}.joystick-wrap>span{display:none}.joystick{position:relative;width:106px;height:106px;border:4px solid #fff;border-radius:50%;background:#e5d7f4 url('assets/hardware/joystick.webp') center/auto 84% no-repeat;box-shadow:0 3px 0 #c8b4de;touch-action:none}.joystick button{position:absolute;background:transparent;color:#71518c;font-size:15px;padding:4px;touch-action:none}.up{left:calc(50% - 12px);top:0}.down{left:calc(50% - 12px);bottom:0}.left{left:0;top:calc(50% - 13px)}.right{right:0;top:calc(50% - 13px)}.knob{display:none}.grab-area{display:flex;flex-direction:column;align-items:stretch;gap:6px;width:280px;max-width:55%}.level-label{text-align:center;font-size:10px;font-weight:800;color:#9980ad}#grab{border:3px solid white;border-radius:21px;background:linear-gradient(#ff9a7a,#ed6b76);color:white;box-shadow:0 4px 0 #d05467;padding:10px 12px;min-height:64px}#grab>span{font-size:24px;font-weight:1000;letter-spacing:.5px}#grab>span>span{margin-left:13px}#grab small{display:block;font-size:11px;opacity:.9}.refill{background:none;font-size:11px;padding:4px;font-weight:800;color:#9777aa}.refill-box{background:#e6f1e6;border-radius:12px;font-size:13px;font-weight:900;color:#3f7a56;padding:9px}.refill-box[hidden]{display:none}.keys{color:#a18eb0}.keys p{font-size:12px;margin:8px 0}.keys small{font-size:10px}.eyebrow{font-size:9px;font-weight:900;letter-spacing:1px;color:#a18bb3}kbd{font:800 10px Nunito,system-ui;background:white;border:1px solid #e1d5eb;border-bottom:2px solid #d7c4e6;padding:3px 5px;border-radius:4px;margin-right:3px}footer{height:12px;flex:none;display:flex;justify-content:space-between;color:#ae9bbb;font-size:9px;gap:8px}footer a{color:#9c7aaf}dialog{padding:25px 22px 18px;max-width:520px;width:calc(100% - 28px);max-height:calc(var(--app-height) - 24px);border:1px solid white;border-radius:24px;background:#fcf7ff;color:#604675;box-shadow:0 20px 70px #2c183b44;overflow:auto;touch-action:pan-y;overscroll-behavior:contain}dialog::backdrop{background:#29173788;backdrop-filter:blur(6px)}.close{position:absolute;right:10px;top:6px;background:none;font-size:28px;z-index:1}.modal-title{margin:0 20px 13px 0;font-size:22px;font-weight:1000}.picker-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.box-slot{display:flex;flex-direction:column;gap:4px;min-width:0}.box-slot .box-card{flex:1}.box-reset{font-size:10px;font-weight:800;color:#8c6ba3;background:#efe4f8;border-radius:9px;padding:5px 4px}.box-reset:disabled{opacity:.35}.box-card{display:flex;flex-direction:column;align-items:center;background:#fff;border:2px solid #eee3f5;border-radius:16px;padding:7px 3px;min-width:0}.box-card[aria-pressed=true]{border-color:var(--box-color)}.box-card img{height:min(15vh,88px);width:100%;object-fit:contain}.box-card strong{font-size:11px}.box-card small{font-size:10px;color:#a088b2;margin-top:3px}.pager{display:flex;align-items:center;justify-content:space-between;font-size:12px;margin-top:14px}.pager button{padding:9px 14px;border-radius:10px;background:#eadcf6}.collection-select{display:flex;align-items:center;gap:10px;font-size:13px;margin-bottom:12px}.collection-select select{border:1px solid #dac9e7;background:white;padding:7px;border-radius:10px;font-size:14px;flex:1;min-width:0}.animal-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:7px}.animal-card{background:#f0e7f8;border-radius:14px;padding:5px;text-align:center}.animal-card img{width:100%;height:min(14vh,85px);object-fit:contain}.animal-card.locked img{filter:grayscale(1);opacity:.23}.animal-card b{display:block;font-size:11px}.animal-card small{font-size:10px;color:#a58ab6}.parent-copy{font-size:12px;line-height:1.5;margin:7px 0}.parent-balance{background:#fff1d5;border-radius:10px;padding:9px;font-size:12px;margin:9px 0}.parent-form{display:grid;gap:8px}.parent-form label{display:grid;gap:4px;font-size:12px;font-weight:800}.parent-form input,.parent-form select{width:100%;padding:8px 10px;border:1px solid #d8c7e6;border-radius:10px;background:white;font-size:16px;color:#5c4070;min-height:36px}.parent-form button[type=submit],.primary{border:0;border-radius:13px;padding:12px 17px;background:#9773ba;color:white;font-weight:900;font-size:15px}.error{color:#b93c61;font-size:12px;min-height:15px;margin:0}.parent-actions{text-align:center;margin:10px 0 0}.parent-actions button{background:none;font-size:12px;color:#9a7baf;text-decoration:underline}.storage-note{font-size:10px;color:#a18cae;line-height:1.4;margin:10px 0 0}.help-copy{font-size:13px;line-height:1.6;padding-left:18px}.help-copy li{margin:7px 0}.win-card{text-align:center;padding:3px 0}.win-card h2{font-size:23px;margin:4px 0;color:#8f5ba9;font-weight:1000}.win-card h3{font-size:21px;margin:0}.win-card p{font-size:13px;color:#a080b5;margin:8px 0 17px}.win-stars{font-size:25px;letter-spacing:13px;color:#e7b647}.win-toy{width:70%;height:min(29vh,190px);object-fit:contain;animation:win-pop .65s cubic-bezier(.2,.8,.3,1.4) both}.win-card .primary{width:90%;background:linear-gradient(120deg,#f398ab,#b58ddd)}@keyframes win-pop{from{transform:scale(.3) rotate(-12deg);opacity:0}to{transform:scale(1);opacity:1}}
@media(max-width:700px){.app{padding-left:8px;padding-right:8px;gap:6px}header{height:40px}.brand-icon{width:34px;height:34px;font-size:27px}h1{font-size:22px}h1 span{font-size:7px}.header-actions{gap:5px}.coins{padding:4px 9px}.icon-button{width:33px;height:33px}.box-picker{height:43px}.box-picker b{font-size:13px}.box-picker small{font-size:9px}.box-picker img{width:37px;height:37px}.machine{border-width:3px;border-radius:18px}.machine-bar{height:28px}.world{font-size:11px}.machine-foot{height:22px;font-size:10px}.edition{display:none}.scene-label{top:18px;left:20px}.scene-label>span{font-size:7px}.view-button{right:18px;top:16px;font-size:10px;padding:6px 8px}.keys,#difficulty-hint{display:none}.collection-strip{height:27px;padding:2px 8px}.collection-strip h2{font-size:10px}.progress b{font-size:11px}progress{width:44px}.game-options{height:34px;font-size:11px;gap:7px}.game-options>label:first-child{gap:5px}.game-options select{font-size:12px}.assist{font-size:11px}.control-dock{height:111px;padding:0 8px;gap:26px}.joystick{width:98px;height:98px}#grab{min-height:58px;padding:8px 10px}#grab>span{font-size:22px}#grab small{font-size:10px}.grab-area{gap:5px}.refill{font-size:10px}.level-label{font-size:9px}footer{font-size:8px;height:10px}.modal-title{font-size:20px}.win-card h2{font-size:21px}}
@media(max-height:600px) and (orientation:portrait){.app{gap:4px;padding-top:5px;padding-bottom:5px}header{height:35px}.box-picker{height:37px}.box-picker img{height:33px}.collection-strip,footer{display:none}.control-dock{height:98px}.joystick{width:86px;height:86px}.game-options{height:31px}.level-label{display:none}.win-toy{height:24vh}.modal-title{font-size:18px}.parent-copy{font-size:11px}.storage-note{font-size:9px}}
@media(orientation:landscape) and (max-height:600px){.app{display:grid;grid-template-columns:minmax(0,1fr) 225px;grid-template-rows:35px 38px minmax(0,1fr);gap:6px;padding:6px max(8px,env(safe-area-inset-right)) 6px max(8px,env(safe-area-inset-left))}header{grid-column:1/-1;height:35px}.box-picker{grid-column:1;grid-row:2;height:38px}.machine{grid-column:1;grid-row:3;height:100%;min-height:0}.bottom{grid-column:2;grid-row:2/4;display:flex;justify-content:center;gap:8px;min-height:0}.collection-strip{height:28px}.game-options{height:auto;flex-wrap:wrap;justify-content:center;gap:8px}.control-dock{height:auto;padding:0;gap:8px;flex-direction:column}.joystick{width:80px;height:80px}.grab-area{width:100%;max-width:100%;gap:4px}.level-label,.keys,#difficulty-hint,footer{display:none}#grab{min-height:48px;padding:5px}#grab>span{font-size:21px}#grab small{font-size:9px}.refill{padding:2px}.scene-label{top:10px;left:17px}.view-button{top:10px;right:17px}.machine-bar{height:26px}.machine-foot{height:20px}.picker-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.box-card img{height:46px}.picker-grid{gap:5px}.box-card{padding:3px}.modal-title{font-size:18px;margin-bottom:8px}.pager{margin-top:8px}.win-card{display:grid;grid-template-columns:140px 1fr;align-items:center;gap:4px}.win-stars{display:none}.win-card h2{grid-column:1/-1;font-size:20px}.win-toy{grid-column:1;grid-row:2/5;width:140px;height:140px}.win-card h3{font-size:18px}.win-card p{font-size:12px;margin:4px}.win-card .primary{font-size:13px;padding:9px}.animal-card img{height:40px}.animal-card b{font-size:10px}.animal-card small{font-size:9px}.collection-select{margin-bottom:7px}}
@media(prefers-reduced-motion:reduce){.win-toy{animation:none}.toast,.switch:after{transition:none}}

dialog{position:fixed;top:calc(var(--viewport-top,0px) + var(--app-height)/2);bottom:auto;transform:translateY(-50%);margin:0 auto;}
