:root{--ink: #2d3a26;--paper: #f6fbf1;--goo: #8fd19e;--goo-dark: #5aa35a;--accent: #ffcf3f;--shadow: 0 10px 30px rgba(40, 60, 30, .25);font-family:Nunito,Segoe UI,system-ui,-apple-system,sans-serif;color:var(--ink)}*{box-sizing:border-box}html,body{margin:0;height:100%;overflow:hidden;background:#cfeeff}body{-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}#app{position:fixed;inset:0}#stage{position:absolute;inset:0}.layer{position:absolute;inset:0;width:100%;height:100%;display:block}.layer-fx{touch-action:none}#ui{position:absolute;inset:0;pointer-events:none}#ui>*{pointer-events:auto}#ui>.hint,#ui>.hint *{pointer-events:none}.screen.menu{position:absolute;inset:0;overflow-y:auto;padding:max(12px,env(safe-area-inset-top)) max(16px,env(safe-area-inset-right)) 16px max(16px,env(safe-area-inset-left));background:radial-gradient(circle at 80% 12%,#fff0b4e6 0,#fff0b400 28%),linear-gradient(180deg,#6fb7ea,#bfe4fb 45%,#e9f7d8);display:flex;flex-direction:column;gap:12px}.screen.menu:before{content:"";position:absolute;left:0;right:0;bottom:0;height:38%;background:radial-gradient(ellipse at 30% 100%,#8fc46e 0,#6ea85a 45%,#6ea85a00 72%),radial-gradient(ellipse at 85% 110%,#a9cfa1 0,#a9cfa100 60%);pointer-events:none;opacity:.8}.screen.menu>*{position:relative}.menu header{display:flex;flex-direction:column;align-items:center;gap:14px}.menu h1{margin:0;line-height:0}.menu h1 .logo{width:min(360px,60vw);height:auto;filter:drop-shadow(0 6px 10px rgba(30,60,20,.25))}.blob-icon{width:.9em;height:.9em;border-radius:45% 55% 50% 50%;display:inline-block;background:radial-gradient(circle at 35% 30%,#d8f5c1,#7fc46a 70%,#4d7f38);box-shadow:inset -3px -3px #00000026}.tagline{margin:0;opacity:.75;font-size:14px;max-width:60ch}.levels{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px}.level{--card-bg: #fff;--card-border: rgba(45,58,38,.15);--card-shadow: rgba(45,58,38,.12);--card-ink: var(--ink);--card-num: var(--goo-dark);--card-done-bg: #eefae6;--card-done-border: var(--goo-dark);position:relative;text-align:left;border:2px solid var(--card-border);border-radius:14px;background:var(--card-bg);padding:10px 12px;cursor:pointer;font:inherit;color:var(--card-ink);display:flex;flex-direction:column;gap:2px;min-height:76px;box-shadow:0 3px 0 var(--card-shadow);transition:transform .08s}.level:active{transform:translateY(2px);box-shadow:none}.level .num{font-weight:800;font-size:20px;color:var(--card-num)}.level:before{content:"";position:absolute;left:0;top:10px;bottom:10px;width:5px;border-radius:0 4px 4px 0;background:#8fd19e}.level.theme-cave:before{background:#5b6478}.level.theme-dusk:before{background:#f08a5d}.level.theme-winter:before{background:#9cc3e0}.level .name{font-weight:700}.level .meta{font-size:12px;opacity:.6}.level .meta.hud-balls{opacity:1;margin:4px 0 0;padding:0;background:none;border-radius:0;gap:6px}.level .hud-balls .need{border-color:var(--card-num);background:var(--card-need-bg, rgba(143, 209, 158, .25))}.level .hud-balls .ball{background:radial-gradient(circle at 35% 30%,var(--card-ball-hi, #8a8a90),var(--card-ball, #2a2a2e) 70%)}.level .hud-balls .ball{width:10px;height:10px}.level .hud-balls .need{padding:3px 6px 3px 5px;gap:3px;border-width:1.5px;border-radius:8px}.level .hud-balls .need .flag{font-size:11px}.level .hud-balls .need .flag svg{width:10px;height:12px}.level .hud-balls .spares{gap:3px}.level.done{border-color:var(--card-done-border);background:var(--card-done-bg)}.level .tick,.level .lock{position:absolute;top:8px;right:10px;font-size:18px}.level .tick{color:var(--card-done-border);font-weight:900}.level.locked{opacity:.6;filter:grayscale(.4)}.menu footer{margin-top:auto;display:flex;gap:16px;align-items:center;flex-wrap:wrap;font-size:13px;opacity:.85}.menu footer .version{margin-left:auto;opacity:.5;font-size:11px}.link{background:none;border:none;color:var(--goo-dark);font:inherit;font-weight:700;cursor:pointer;padding:6px 0}.hud{position:absolute;left:max(8px,env(safe-area-inset-left));right:max(8px,env(safe-area-inset-right));top:max(8px,env(safe-area-inset-top));display:flex;align-items:center;gap:10px}.hud-btn{width:42px;height:42px;border-radius:12px;border:none;background:#ffffffd9;font-size:22px;color:var(--ink);box-shadow:0 2px #2d3a2633;cursor:pointer}.hud-title{font-weight:800;background:#ffffffb3;padding:6px 12px;border-radius:10px}.hud-balls{margin-left:auto;display:flex;align-items:center;gap:8px;background:#ffffffbf;padding:5px 10px;border-radius:12px}.hud-balls .ball{width:13px;height:13px;border-radius:50%;background:radial-gradient(circle at 35% 30%,#8a8a90,#2a2a2e 70%);box-sizing:border-box;flex:none}.hud-balls .ball.lost{background:none;border:2px dashed rgba(45,58,38,.4)}.hud-balls .need{display:flex;align-items:center;gap:4px;padding:4px 8px 4px 6px;border:2px solid var(--goo-dark);border-radius:10px;background:#8fd19e40}.hud-balls .need .flag{font-size:13px;line-height:1;margin-right:2px}.hud-balls .need.short{border-color:#c0392b;background:#c0392b1f}.hud-balls .spares{display:flex;gap:4px;opacity:.85}.hint{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;padding:0 16px;pointer-events:none;transition:opacity .45s,transform .45s}.hint-card{display:flex;align-items:center;gap:16px;background:#ffffffed;padding:18px 26px;border-radius:20px;box-shadow:var(--shadow);max-width:min(640px,92vw);font-size:clamp(18px,3.2vh,26px);font-weight:800;line-height:1.25;animation:pop .3s ease-out}.hint-num{flex:none;width:1.8em;height:1.8em;border-radius:50%;display:grid;place-items:center;background:var(--goo-dark);color:#fff;font-size:.9em}.hint.fade{opacity:0;transform:scale(.96)}.sheet-host{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;pointer-events:none}.sheet-host.modal{background:#1e281459;pointer-events:auto}.sheet-host:empty{display:none}.sheet{pointer-events:auto;background:#fff;border-radius:18px;padding:18px 22px;box-shadow:var(--shadow);min-width:280px;max-width:min(520px,90vw);text-align:center;animation:pop .25s ease-out}@keyframes pop{0%{transform:scale(.85);opacity:0}to{transform:scale(1);opacity:1}}.sheet h2{margin:0 0 6px;font-size:24px}.sheet p{margin:4px 0 12px}.sheet .fine{font-size:12px;opacity:.7;min-height:1em}.row{display:flex;gap:10px;justify-content:center;flex-wrap:wrap}.row.actions{flex-wrap:nowrap;gap:8px}.row.actions .btn{flex:1 1 0;min-width:0;padding:10px 8px;white-space:nowrap;display:inline-flex;align-items:center;justify-content:center;gap:6px}.row.actions .ic{font-size:1.05em;line-height:1}.btn{font:inherit;font-weight:800;border:none;border-radius:12px;padding:10px 18px;cursor:pointer}.btn.primary{background:var(--goo-dark);color:#fff;box-shadow:0 3px #3f7a3f}.btn.ghost{background:#eef3ea;color:var(--ink)}.btn:disabled{opacity:.5}.world{display:flex;flex-direction:column;gap:10px}.world+.world{margin-top:10px}.world-banner{position:relative;overflow:hidden;border-radius:16px;min-height:92px;border:2px solid rgba(45,58,38,.15);box-shadow:0 3px #2d3a261f;background:linear-gradient(180deg,var(--sky) 0%,var(--sky) 58%,var(--ground) 58%,var(--ground) 100%);display:flex;align-items:center;color:#fff;text-shadow:0 2px 4px rgba(0,0,0,.45)}.world-banner img{display:block;width:100%;height:auto}.world-banner:has(img){min-height:0;background:transparent;border-color:transparent;box-shadow:none}.world-banner:has(img) .world-text,.world-banner:has(img) .world-done{display:none}.world-text{position:relative;padding:14px 18px}.world-n{font-size:12px;letter-spacing:.12em;text-transform:uppercase;opacity:.85}.world-text h2{margin:2px 0;font-size:26px;line-height:1.05}.world-text p{margin:0;font-size:13px;opacity:.92;max-width:46ch}.world-done{position:absolute;right:14px;top:12px;font-weight:700;font-size:13px;opacity:.9}.world-grasslands .level{--card-need-bg: rgba(143, 209, 158, .25)}.world-caves .level{--card-bg: #e6e8ee;--card-border: rgba(40,46,60,.28);--card-shadow: rgba(30,35,48,.3);--card-ink: #262b38;--card-num: #4d566e;--card-done-bg: #ccd2e0;--card-done-border: #4d566e;--card-need-bg: rgba(77,86,110,.16)}.world-waterworld .level{--card-bg: #e2f4fb;--card-border: rgba(20,90,130,.28);--card-shadow: rgba(20,90,130,.25);--card-ink: #12384a;--card-num: #1b7fa8;--card-done-bg: #c4e9f6;--card-done-border: #1b7fa8;--card-need-bg: rgba(27,127,168,.16)}.world-winter .level{--card-bg: #f2f8fd;--card-border: rgba(74,100,120,.3);--card-shadow: rgba(74,100,120,.22);--card-ink: #22384a;--card-num: #5d8bab;--card-done-bg: #dbeaf6;--card-done-border: #5d8bab;--card-need-bg: rgba(93,139,171,.16)}.world-darkness .level{--card-bg: #232b26;--card-border: rgba(150,200,160,.28);--card-shadow: rgba(0,0,0,.45);--card-ink: #dfeadd;--card-num: #8fd19e;--card-done-bg: #2f3d32;--card-done-border: #8fd19e;--card-need-bg: rgba(143,209,158,.18);--card-ball-hi: #b9c2b9;--card-ball: #10140f}.world-darkness .level .hud-balls .ball.lost{border-color:#dfeadd73}.world-darkness .level .hud-balls .need .flag svg{filter:invert(1)}
