:root{--font: ui-rounded, "SF Pro Rounded", "Arial Rounded MT Bold", system-ui, sans-serif;--ink: #2b2350;--accent: #ff7a3d;--accent-dark: #d95a1f;--good: #3fbf6a;--panel: rgba(255, 255, 255, .92)}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent;-webkit-touch-callout:none;user-select:none;-webkit-user-select:none}html,body{margin:0;height:100%;overflow:hidden;overscroll-behavior:none;background:#9fd8ff;font-family:var(--font);color:var(--ink);touch-action:none}canvas#game{position:fixed;top:0;right:0;bottom:0;left:0;width:100%;height:100%;display:block}button{font-family:var(--font);cursor:pointer;touch-action:manipulation}.hidden{display:none!important}#hud{position:fixed;top:calc(env(safe-area-inset-top) + 12px);left:calc(env(safe-area-inset-left) + 16px);right:calc(env(safe-area-inset-right) + 16px);display:flex;align-items:center;gap:16px;pointer-events:none}.hud-left,.hud-right{display:flex;align-items:center;gap:12px}#hearts{font-size:28px;letter-spacing:2px;filter:drop-shadow(0 2px 0 rgba(0,0,0,.15))}#level-label,#stars{background:var(--panel);border-radius:999px;padding:6px 14px;font-weight:800;font-size:18px;box-shadow:0 3px #0000001f;white-space:nowrap}#progress{position:relative;flex:1;height:14px;background:#fff9;border-radius:999px;box-shadow:inset 0 2px #00000014}#progress-fill{position:absolute;left:0;top:0;bottom:0;width:0;border-radius:999px;background:linear-gradient(90deg,#7fd35a,#3fbf6a)}#progress-marks .mark{position:absolute;top:-4px;width:4px;height:22px;margin-left:-2px;border-radius:2px;background:#e94b5a}#progress-marks .mark.done{background:#ffcf33}#progress-dot{position:absolute;top:50%;left:0;width:26px;height:26px;margin:-13px 0 0 -13px;border-radius:50%;border:3px solid #fff;background:var(--player-color, #ff7a3d);box-shadow:0 2px #0003}#progress-flag{position:absolute;right:-10px;top:-14px;font-size:24px}#btn-pause{pointer-events:auto;width:52px;height:52px;border:none;border-radius:16px;background:var(--panel);color:var(--ink);font-size:18px;font-weight:900;box-shadow:0 3px #00000026}#toast{position:fixed;top:22%;left:50%;transform:translate(-50%) scale(.6);opacity:0;font-size:clamp(34px,6vw,64px);font-weight:900;color:#fff;-webkit-text-stroke:3px var(--ink);text-shadow:0 5px 0 var(--ink);pointer-events:none;transition:transform .18s ease-out,opacity .18s;text-align:center}#toast-main{white-space:nowrap}#toast-sub{margin-top:6px;font-size:clamp(18px,2.6vw,26px);-webkit-text-stroke:0;text-shadow:0 2px 0 var(--ink),0 0 6px var(--ink);max-width:80vw;white-space:normal}#toast.show{opacity:1;transform:translate(-50%) scale(1)}#controls{position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none}#joy-zone{position:absolute;left:0;bottom:0;width:55%;height:75%;pointer-events:auto;touch-action:none}#joy-base{position:absolute;width:150px;height:150px;margin:-75px 0 0 -75px;border-radius:50%;background:#ffffff47;border:4px solid rgba(255,255,255,.75);opacity:.55;transition:opacity .15s}#joy-base.active{opacity:1;transition:none}#joy-knob{position:absolute;left:50%;top:50%;width:70px;height:70px;margin:-35px 0 0 -35px;border-radius:50%;background:#fff;box-shadow:0 4px #0003}#buttons{position:absolute;right:calc(env(safe-area-inset-right) + 28px);bottom:calc(env(safe-area-inset-bottom) + 28px);display:grid;grid-template-columns:auto auto;align-items:end;gap:22px;pointer-events:auto}#buttons button{border:none;border-radius:50%;color:#fff;font-weight:900;letter-spacing:1px;touch-action:none;box-shadow:0 6px #00000040;transition:transform .06s}#buttons button.pressed{transform:translateY(4px) scale(.95);box-shadow:0 2px #00000040}#btn-jump{width:96px;height:96px;font-size:18px;background:#4aa8ff;margin-bottom:70px}#btn-dash{position:relative;width:124px;height:124px;font-size:22px;background:var(--accent);overflow:hidden}#btn-dash:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;border-radius:50%;background:conic-gradient(rgba(43,35,80,.55) calc(var(--cd, 0) * 1turn),transparent 0);pointer-events:none}.overlay{position:fixed;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;padding:16px;background:#2b235040}.card{width:min(460px,100%);max-height:100%;overflow:auto;background:var(--panel);border-radius:28px;padding:26px 26px 22px;text-align:center;box-shadow:0 10px #2b235040;display:flex;flex-direction:column;gap:12px}h1{margin:0;font-size:clamp(44px,8vw,64px);line-height:1;color:var(--accent);-webkit-text-stroke:2px var(--ink);text-shadow:0 5px 0 var(--ink)}h1 span{color:#7fd35a}h2{margin:0;font-size:36px}.tagline{margin:4px 0;font-size:18px;font-weight:700}.label{font-weight:800;font-size:15px;text-transform:uppercase;letter-spacing:1px;opacity:.7}#swatches,#skins{display:flex;justify-content:center;gap:10px;flex-wrap:wrap}#swatches button,#skins button{width:50px;height:50px;border-radius:50%;border:4px solid #fff;box-shadow:0 3px #0000002e}#swatches button.selected,#skins button.selected{border-color:var(--ink);transform:scale(1.12)}.card button{border:none;border-radius:18px;padding:14px;font-size:18px;font-weight:800;background:#ece8f7;color:var(--ink)}.card button.big{font-size:28px;padding:16px;background:var(--good);color:#fff;box-shadow:0 6px #2a9150}.card button.big:active{transform:translateY(3px);box-shadow:0 3px #2a9150}.hair-row{display:flex;justify-content:center;gap:6px;flex-wrap:wrap}.card .hair-row button{padding:8px 12px;font-size:15px;border-radius:999px}.card .hair-row button.selected{background:var(--ink);color:#fff}#menu-sub{font-size:15px;font-weight:700;opacity:.75;min-height:1em}#menu-sub button{background:none;padding:0 4px;font-size:15px;text-decoration:underline}.howto{display:grid;gap:4px;font-size:15px;background:#f4f1fb;border-radius:16px;padding:10px}#result-text{margin:0;font-size:20px;font-weight:700}@media (min-width: 900px) and (orientation: landscape){#menu{justify-content:flex-end;padding-right:6vw;background:linear-gradient(90deg,transparent 40%,rgba(43,35,80,.25))}}#rotate-hint{display:none;position:fixed;bottom:12px;left:50%;transform:translate(-50%);background:var(--panel);border-radius:999px;padding:8px 16px;font-weight:800;font-size:14px;pointer-events:none;white-space:nowrap}@media (orientation: portrait) and (pointer: coarse){#rotate-hint.menu-visible{display:block}}@media (max-width: 700px){#btn-jump{width:80px;height:80px;font-size:15px;margin-bottom:56px}#btn-dash{width:104px;height:104px;font-size:19px}#level-label,#stars{font-size:15px;padding:5px 10px}#hearts{font-size:22px}}
