/* Pixel look after Krillion: sky above, deep sea below, navy panels with cyan edges. */
:root{color-scheme:dark;--navy:#0B1C36;--deep:#081428;--panel:#0E2342;--edge:#2B4A6F;--cyan:#5CE1E6;--pink:#FF5C8A;--text:#E8F6FB;--muted:#8FB3C9;--mono:ui-monospace,"Cascadia Mono",Consolas,Menlo,monospace}
*{box-sizing:border-box}
[hidden]{display:none!important}
body{margin:0;min-height:100dvh;background:linear-gradient(#15406B,var(--navy) 320px,var(--deep));color:var(--text);font:15px/1.5 var(--mono);-webkit-font-smoothing:antialiased}
/* Faint scanlines over everything, like an old screen. */
body::after{content:"";position:fixed;inset:0;z-index:20;pointer-events:none;background:repeating-linear-gradient(transparent 0 2px,rgba(0,0,0,.07) 2px 3px)}
button{font:inherit;color:inherit;cursor:pointer;touch-action:manipulation}
button:focus-visible,a:focus-visible{outline:3px solid var(--cyan);outline-offset:3px}

.sky{position:relative;overflow:hidden;padding:56px 16px 88px;text-align:center;background:linear-gradient(#7EC4EC,#DDF3FB 88%,#2F78A8 88%,#15406B)}
/* Sun with a soft glow. */
.sky::before{content:"";position:absolute;top:22px;right:max(24px,calc(50% - 300px));width:64px;height:64px;border-radius:50%;background:#FFE07A;box-shadow:0 0 40px 18px rgba(255,236,150,.6)}
.back{position:absolute;top:max(12px,env(safe-area-inset-top));left:12px;display:flex;align-items:center;justify-content:center;width:40px;height:40px;background:var(--navy);color:var(--cyan);border:2px solid var(--cyan)}
.sky h1{position:relative;margin:0;font-size:clamp(34px,9vw,60px);line-height:1.1;letter-spacing:.08em;text-transform:uppercase;color:#fff;text-shadow:-3px 0 var(--pink),3px 0 var(--cyan)}
.tag{position:relative;margin:10px 0 0;color:#2E5D84;font-size:13px;letter-spacing:.06em}
.boat{position:absolute;bottom:calc(12% - 6px);left:max(16px,calc(50% - 280px));image-rendering:pixelated;animation:bob 3s ease-in-out infinite}
@keyframes bob{50%{transform:translateY(3px)}}

main{max-width:720px;margin:auto;padding:28px 16px 60px}
main h2{margin:0 0 18px;font-size:14px;font-weight:700;letter-spacing:.3em;text-transform:uppercase;color:var(--cyan)}
.levels{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:12px}
@media (max-width:420px){.levels{grid-template-columns:repeat(4,minmax(0,1fr))}}
.lv{position:relative;aspect-ratio:1;border:2px solid var(--edge);border-radius:0;background:var(--panel);font-size:26px;font-weight:700;font-variant-numeric:tabular-nums;transition:transform .12s ease,box-shadow .12s ease}
.lv:active:not(:disabled){transform:scale(.95)}
.lv.next{border-color:var(--cyan);color:var(--cyan);box-shadow:0 0 14px rgba(92,225,230,.45)}
.lv.done{color:var(--cyan)}
.lv:disabled{color:var(--muted);cursor:default;opacity:.45}
.lv i{position:absolute;right:6px;top:2px;font-size:12px;font-style:normal}
#error{max-width:720px;margin:40px auto;padding:0 16px;color:var(--pink)}

/* Game: the playfield covers the whole page; the sea fills the sides on wide screens. */
#play{position:fixed;inset:0;z-index:10;background:var(--deep);touch-action:none;user-select:none;-webkit-user-select:none}
#canvas{display:block;width:100vw;height:100dvh;image-rendering:pixelated;cursor:grab}
#canvas:active{cursor:grabbing}
#quit{position:absolute;top:max(10px,env(safe-area-inset-top));left:max(10px,env(safe-area-inset-left));width:40px;height:40px;border:2px solid var(--cyan);background:var(--navy);color:var(--cyan);font-size:24px;line-height:1}
#overlay{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;padding:24px;background:rgba(8,20,40,.55);animation:fade .2s ease}
#overlay.hint{background:none;pointer-events:none;align-items:flex-end;padding-bottom:max(16px,env(safe-area-inset-bottom))}
#overlay.hint .panel{padding:12px 16px}
#overlay.hint h2{font-size:16px}
#overlay.hint p{margin:0;font-size:13px}
#overlay.hint .actions{display:none}
.panel{width:min(340px,100%);background:var(--navy);color:var(--text);border:2px solid var(--cyan);padding:24px;text-align:center;box-shadow:0 0 24px rgba(92,225,230,.35);animation:pop .25s cubic-bezier(.2,.9,.3,1.2)}
.panel h2{margin:0 0 6px;font-size:24px;letter-spacing:.12em;color:#fff;text-shadow:-2px 0 var(--pink),2px 0 var(--cyan)}
.panel p{margin:0 0 18px;color:var(--muted)}
.actions{display:flex;flex-direction:column;gap:10px}
.actions button{min-height:48px;border:2px solid var(--edge);background:var(--panel);font-weight:700;letter-spacing:.12em;text-transform:uppercase;transition:transform .1s}
.actions button:active{transform:scale(.97)}
.actions #o-main{border-color:var(--cyan);color:var(--cyan);box-shadow:0 0 12px rgba(92,225,230,.4)}
@keyframes fade{from{opacity:0}}
@keyframes pop{from{opacity:0;transform:scale(.9)}}
@media (prefers-reduced-motion:reduce){#overlay,.panel,.boat{animation:none}}
