:root{--ink:#0f172a;--ink-soft:#5b6b82;--card:#ffffffdb;--normal:#38bdf8;--water:#2563eb;--fire:#fb7a2c;--wind:#bfe8db}*{box-sizing:border-box}html,body{height:100%;color:var(--ink);-webkit-user-select:none;user-select:none;background:#cdeefb;margin:0;font-family:ui-rounded,Hiragino Maru Gothic ProN,Segoe UI,system-ui,sans-serif;overflow:hidden}#game{cursor:grab;touch-action:none;width:100%;height:100%;display:block;position:fixed;inset:0}#game.dragging{cursor:grabbing}#hud{pointer-events:none;position:fixed;inset:0}.panel{background:var(--card);border-radius:14px;padding:10px 14px;position:absolute;box-shadow:0 4px 14px #0f172a24}.label{color:var(--ink-soft);font-size:12px;font-weight:600;display:block}.value{font-size:18px;font-weight:700}#status-panel{width:260px;top:16px;left:16px}.status-head{align-items:baseline;gap:10px;margin-bottom:6px;display:flex}.status-head .label{display:inline}.bar{background:#0f172a24;border-radius:7px;height:14px;position:relative;overflow:hidden}.bar+.bar{margin-top:5px}.bar.xp{height:6px}.bar>div{border-radius:inherit;transform-origin:0;width:100%;height:100%;transition:transform .15s}.bar.hp>div{background:#34d399}.bar.xp>div{background:#f6c26b}.bar.boss>div{background:#ef6461}.bar span{text-align:center;font-size:11px;font-weight:700;line-height:14px;position:absolute;inset:0}#boss-panel{text-align:center;width:min(420px,40vw);top:16px;left:50%;transform:translate(-50%)}#boss-panel[hidden]{display:none}#help{font-size:13px;line-height:1.9;top:16px;right:16px}#help .tip{color:var(--ink-soft)}kbd{background:var(--ink);color:#fff;text-align:center;border-radius:6px;min-width:22px;margin-right:3px;padding:0 5px;font:600 11px/20px ui-rounded,Segoe UI,system-ui,sans-serif;display:inline-block}#banner{text-align:center;color:#fff;text-shadow:0 2px #0f172a8c,0 0 12px #0f172a73;background:#0f172a61;border-radius:20px;width:max-content;max-width:min(90vw,640px);padding:10px 26px 12px;animation:.35s ease-out banner-in,.4s ease-in 1.6s forwards fade-out;position:absolute;top:22%;left:50%;transform:translate(-50%,-50%)}#banner:has(#banner-sub:not([hidden])){animation:.35s ease-out banner-in,.4s ease-in 2.6s forwards fade-out}#banner[hidden],#banner-sub[hidden]{display:none}#banner-head{letter-spacing:.02em;font-size:clamp(26px,5vw,44px);font-weight:800}#banner-sub{margin-top:6px;font-size:clamp(15px,2.4vw,20px);font-weight:700}@keyframes banner-in{0%{opacity:0;transform:translate(-50%,-50%)scale(.8)}70%{transform:translate(-50%,-50%)scale(1.05)}to{opacity:1;transform:translate(-50%,-50%)scale(1)}}@keyframes fade-out{to{opacity:0}}#notes{flex-direction:column;align-items:flex-start;gap:6px;display:flex;position:absolute;top:112px;left:16px}.note-pop{color:#fff;background:#0f172ac7;border-radius:10px;padding:6px 12px;font-size:14px;font-weight:700;transition:opacity .4s,transform .4s;animation:.25s ease-out note-in}.note-pop.out{opacity:0;transform:translate(-12px)}@keyframes note-in{0%{opacity:0;transform:translate(-16px)}}#bubble{width:max-content;max-width:min(78vw,320px);color:var(--ink);text-align:center;background:#fff;border-radius:14px;padding:8px 13px;font-size:16px;font-weight:700;line-height:1.4;animation:.3s ease-out bubble-in;position:absolute;top:0;left:0;box-shadow:0 3px 12px #0f172a40}#bubble:after{content:"";border:7px solid #0000;border-top-color:#fff;border-bottom:0;margin-left:-7px;position:absolute;bottom:-7px;left:50%}#bubble[hidden]{display:none}#bubble.away{visibility:hidden}@keyframes bubble-in{0%{opacity:0;margin-top:8px}}.flash{animation:.5s ease-in-out 4 flash}@keyframes flash{50%{filter:brightness(1.15);box-shadow:0 0 0 6px #facc15e6}}#forms{gap:8px;display:flex;position:absolute;bottom:18px;left:50%;transform:translate(-50%)}.form{background:var(--card);color:var(--ink-soft);border:2px solid #0000;border-radius:14px;align-items:center;gap:6px;padding:8px 12px;font-size:14px;font-weight:600;display:flex}.form i{background:var(--colour);border-radius:50% 50% 45% 45%;width:16px;height:14px}.form[data-form=normal]{--colour:var(--normal)}.form[data-form=water]{--colour:var(--water)}.form[data-form=fire]{--colour:var(--fire)}.form[data-form=wind]{--colour:var(--wind)}.form.locked{opacity:.45}.form.locked i{background:#94a3b8}.form.active{border-color:var(--colour);color:var(--ink)}.overlay{background:#cdeefb;place-items:center;transition:opacity .4s;display:grid;position:fixed;inset:0}.overlay.fade{opacity:0;pointer-events:none}#fade{opacity:0;pointer-events:none;background:#0b1a24;transition:opacity .45s;position:fixed;inset:0}#fade.on{opacity:1}.card{text-align:center}.card h1{margin:0 0 6px;font-size:44px}@media (width<=720px){#help{display:none}}#flight{background:#0f172a59;border-radius:4px;width:56px;height:8px;position:absolute;top:0;left:0;overflow:hidden;box-shadow:0 1px 4px #0f172a40}#flight-fill{background:var(--wind);transform-origin:0;width:100%;height:100%}.overlay[hidden]{display:none}.overlay.screen{background:linear-gradient(#cdeefb8c,#cdeefbd9)}.overlay.screen.dim{background:#0f172a73}.menu{background:var(--card);border-radius:22px;min-width:300px;max-width:calc(100vw - 32px);padding:28px 32px;box-shadow:0 10px 30px #0f172a33}.menu h1{font-size:52px}.menu p{margin:8px 0 18px;line-height:1.5}.menu .tagline{color:var(--ink-soft);font-weight:600}.menu button{background:var(--normal);color:#fff;cursor:pointer;border:0;border-radius:14px;width:100%;margin:10px 0 0;padding:12px 18px;font:700 18px ui-rounded,Segoe UI,system-ui,sans-serif;transition:transform 80ms,box-shadow 80ms;display:block;box-shadow:0 4px #1d8fc4}.menu button:hover,.menu button:focus-visible{filter:brightness(1.06);outline:none;box-shadow:0 4px #1d8fc4,0 0 0 3px #38bdf859}.menu button:active{transform:translateY(3px);box-shadow:0 1px #1d8fc4}.menu button[hidden]{display:none}.menu button.quiet{color:var(--ink);background:#e2e8f0;box-shadow:0 4px #b8c2d0}.menu .controls{text-align:left;margin-top:18px;font-size:14px;line-height:2}.menu .note{color:var(--ink-soft);margin:14px 0 0;font-size:13px}.menu .credits a{color:var(--ink-soft);font-size:12px}#travel-list{grid-template-columns:1fr 1fr;gap:8px;display:grid}#travel-list button{color:var(--ink);background:#e2e8f0;margin:0;padding:9px 10px;font-size:14px;box-shadow:0 3px #b8c2d0}#touch{pointer-events:none;position:fixed;inset:0}#touch[hidden]{display:none}#touch button,#stick{pointer-events:auto;touch-action:none;-webkit-tap-highlight-color:transparent}#stick{left:max(24px, env(safe-area-inset-left));background:#ffffff47;border:2px solid #fff9;border-radius:50%;width:150px;height:150px;position:absolute;bottom:24px}#stick-knob{background:#ffffffd9;border-radius:50%;width:64px;height:64px;margin:-32px 0 0 -32px;position:absolute;top:50%;left:50%;box-shadow:0 3px 10px #0f172a40}.touch-button{width:72px;height:72px;color:var(--ink);background:#fffc;border:0;border-radius:50%;font:700 13px ui-rounded,Segoe UI,system-ui,sans-serif;position:absolute;box-shadow:0 3px 10px #0f172a40}.touch-button.big{color:#fff;background:#38bdf8e6;width:92px;height:92px;font-size:16px}.touch-button.pressed,#touch-pause.pressed{filter:brightness(.9);transform:scale(.92)}#touch-jump{right:max(24px, env(safe-area-inset-right));bottom:28px}#touch-attack{right:calc(max(24px, env(safe-area-inset-right)) + 104px);bottom:24px}#touch-ability{right:calc(max(24px, env(safe-area-inset-right)) + 14px);bottom:136px}#touch-pause{top:12px;right:max(12px, env(safe-area-inset-right));background:var(--card);width:44px;height:44px;color:var(--ink);border:0;border-radius:12px;font:800 15px ui-rounded,Segoe UI,system-ui,sans-serif;position:absolute;box-shadow:0 3px 10px #0f172a33}body.touch #help{display:none}body.touch #forms{top:12px;bottom:auto;left:auto;right:calc(max(12px, env(safe-area-inset-right)) + 54px);pointer-events:auto;gap:6px;transform:none}body.touch .form{padding:6px 9px;font-size:0}body.touch .form kbd{display:none}body.touch .form i{width:22px;height:19px}body.touch #status-panel{width:210px;padding:8px 12px}body.touch #boss-panel{top:64px}body.touch #notes{top:12px;left:max(12px, env(safe-area-inset-left))}body.touch .note-pop{font-size:13px}body.touch #bubble{font-size:14px}body.touch{touch-action:none}@media (height<=520px){.menu{padding:14px 22px}.menu h1{font-size:32px}.menu p{margin:4px 0 10px}.menu button{margin-top:7px;padding:8px 14px;font-size:16px}.menu .note{margin-top:8px}}.menu{max-height:calc(100vh - 16px);overflow-y:auto}body.touch .menu .controls{display:none}@media (height<=520px){.menu{padding:14px 22px}.menu h1{font-size:32px}.menu p{margin:4px 0 10px}.menu button{margin-top:7px;padding:8px 14px;font-size:16px}.menu .note{margin-top:8px}}.tag{text-align:center;pointer-events:none;position:absolute;top:0;left:0}.tag[hidden]{display:none}.tag-name{color:#fff;text-shadow:0 1px 3px #0f172acc;white-space:nowrap;margin-bottom:2px;font-size:12px;font-weight:800;display:block}.tag-bar{background:#0f172a73;border-radius:5px;width:64px;height:9px;position:relative;overflow:hidden;box-shadow:0 1px 4px #0f172a4d}.tag-bar>div{transform-origin:0;background:#34d399;width:100%;height:100%}.tag-bar span{color:#fff;text-shadow:0 1px 2px #0f172acc;font-size:8px;font-weight:800;line-height:9px;position:absolute;inset:0}.tag-bar.boss{width:120px;height:10px}.tag-bar.boss>div{background:#ef6461}body.touch #boss-panel{display:none!important}body.touch #status-panel .bar.hp{display:none}body.touch #status-panel{width:auto;min-width:170px}.tag-bar.xp{height:4px;margin:2px auto 0}.tag-bar.xp>div{background:#f6c26b}#slime-tag .tag-bar{margin-left:auto;margin-right:auto}#slime-tag .tag-name{font-size:11px}body.touch #status-panel{display:none}#boss-arrow{filter:drop-shadow(0 1px 3px #0f172a99);transform-origin:9px 11px;pointer-events:none;border-top:11px solid #0000;border-bottom:11px solid #0000;border-left:18px solid #ef6461;width:0;height:0;margin:-11px 0 0 -9px;animation:.8s ease-in-out infinite arrow-pulse;position:absolute;top:0;left:0}#boss-arrow[hidden]{display:none}@keyframes arrow-pulse{50%{opacity:.55}}#banner,#bubble,#notes{z-index:2}body.touch #banner{max-width:min(80vw,560px);top:max(20%,96px)}@media (height<=500px){body.touch #banner{padding:6px 18px 8px}body.touch #banner-head{font-size:24px}body.touch #banner-sub{font-size:14px}}
