:root{font-family:Segoe UI,system-ui,sans-serif;color:#f4f8ff;background:#071326;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-optical-sizing:auto}*{box-sizing:border-box}html,body,#game{width:100%;height:100%;margin:0;overflow:hidden}body{min-width:320px;min-height:420px}body.cursor-idle,body.cursor-idle *{cursor:none!important}.game-shell,.game-viewport{position:relative;width:100%;height:100%;isolation:isolate}.game-viewport canvas{position:absolute;inset:0;display:block;z-index:-1}.hud{position:absolute;top:clamp(20px,4vh,42px);left:clamp(20px,5vw,64px);right:clamp(20px,5vw,64px);display:flex;justify-content:center;align-items:flex-start;pointer-events:none}.hud-stats{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);align-items:start;gap:clamp(24px,5vw,62px);width:min(480px,100%)}.hud-score{justify-self:end}.hud-level{justify-self:start}.hud-stats>div{display:grid;gap:5px;justify-items:center;text-align:center;text-shadow:0 1px 6px #000c,0 0 2px #000}.hud-shield-icons{display:flex;gap:4px;height:22px;align-items:center}.hud-shield-icons img{width:30px;height:30px;filter:drop-shadow(0 1px 3px #000a)}.hud-shield-icons img.is-new{animation:hud-shield-in 1.6s ease-out}.hud-shield-icons img.is-arriving{visibility:hidden}#shield-award{position:fixed;inset:0;z-index:9;pointer-events:none;background:radial-gradient(ellipse at 50% 44%,#253f5259,#03080fe0);transition:background-color .4s}#shield-award[hidden]{display:none}#shield-award canvas{width:100%;height:100%}#shield-award[data-phase=flight]{background:transparent}.hud-shield-icons img.is-lost{visibility:hidden}@keyframes hud-shield-in{0%{opacity:0;transform:scale(1.6)}30%{opacity:1;transform:scale(1.3);filter:drop-shadow(0 0 6px #c9a46299) drop-shadow(0 1px 3px #000a)}to{transform:scale(1)}}.hud-label{color:#9bb6d5;font-size:9px;font-weight:700;letter-spacing:.2em}.hud-stats strong{font-size:18px;font-weight:600;letter-spacing:.08em}.hud-score{position:relative}.hud-combo{position:absolute;top:100%;left:50%;margin-top:3px;color:#8fa5ba;font-size:8px;font-weight:700;letter-spacing:.2em;white-space:nowrap;opacity:0;transform:translate(-50%,-3px);transition:opacity .25s ease,transform .25s ease}.hud-combo b{color:#e3c58e;font-family:Cascadia Code,Consolas,monospace;font-size:11px;letter-spacing:.04em}.hud-combo.is-active{opacity:1;transform:translate(-50%)}.hud-combo.is-up b{display:inline-block;animation:hud-bonus .6s ease-out}body.wave-intermission #game canvas{filter:blur(7px) brightness(.65)}.wave-banner{--chamfer: 12px;position:absolute;top:34%;left:50%;display:flex;width:min(360px,calc(100% - 40px));flex-direction:column;align-items:center;padding:0 0 14px;background:repeating-linear-gradient(0deg,#ffffff05 0 1px,transparent 1px 3px),linear-gradient(180deg,#0b1828d9,#060e1ad9);clip-path:polygon(var(--chamfer) 0,100% 0,100% calc(100% - var(--chamfer)),calc(100% - var(--chamfer)) 100%,0 100%,0 var(--chamfer));filter:drop-shadow(0 12px 30px #000a);color:#dbe9f5;text-align:center;pointer-events:none;transform:translate(-50%,-50%);animation:wave-banner-in .45s cubic-bezier(.2,.9,.3,1.2) both}.wave-banner[hidden]{display:none}.wave-banner.is-leaving{animation:wave-banner-out .4s ease-in both}.wave-banner:before{content:"";position:absolute;inset:0;padding:1px;background:linear-gradient(135deg,#5fb4d8aa,#5fb4d822 40% 60%,#6fb08e99);clip-path:inherit;-webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;mask-composite:exclude}@keyframes wave-banner-in{0%{opacity:0;transform:translate(-50%,-50%) scaleX(.6)}}@keyframes wave-banner-out{to{opacity:0;transform:translate(-50%,-60%)}}.wave-banner-header{display:flex;align-self:stretch;align-items:center;gap:8px;margin-bottom:10px;padding:6px 14px 6px 18px;border-bottom:1px solid #5fb4d826;background:#5fb4d80f;color:#9fc3d6;font-family:Cascadia Code,Consolas,monospace;font-size:9px;letter-spacing:.14em}.wave-banner-dot{width:6px;height:6px;border-radius:50%;background:#6fb08e;box-shadow:0 0 8px #6fb08e}.wave-banner-code{margin-left:auto;color:#6f8a7c}.wave-banner-title{margin:0 0 10px;font-size:clamp(17px,3vw,22px);font-weight:800;letter-spacing:.24em;text-shadow:0 0 16px #5fb4d855}.wave-banner-stats{display:grid;grid-template-columns:repeat(3,1fr);align-self:stretch;margin:0 18px;border-top:1px solid #5fb4d81f}.wave-banner-stats>div{display:grid;gap:3px;padding:8px 4px 0}.wave-banner-stats dt{color:#7f97ad;font-size:8px;font-weight:700;letter-spacing:.18em;text-transform:uppercase}.wave-banner-stats dd{margin:0;font-family:Cascadia Code,Consolas,monospace;font-size:15px;font-weight:600}#wave-banner-bonus{color:#e3c58e}.game-controls{position:absolute;top:-6px;right:-8px;display:flex;gap:2px;pointer-events:auto}.hud-button{--edge: #8fb7cc;position:relative;display:grid;place-items:center;width:32px;height:32px;margin:0;padding:0;border:0;border-radius:50%;background:transparent;color:#8fb7cc;opacity:.4;transition:opacity .2s ease,color .2s ease,background .2s ease}.hud-button:hover:not(:disabled),.hud-button:focus-visible{outline:none;opacity:1;color:#d8eefa;background:radial-gradient(circle,#5fb4d82e,transparent 70%);filter:none}.hud-button:active:not(:disabled){transform:scale(.92)}.hud-button[data-state=paused]{--edge: #c9a462;opacity:.95;color:#e3c58e;animation:hud-paused-pulse 1.8s ease-in-out infinite}@keyframes hud-paused-pulse{50%{opacity:.55}}.hud-icon{width:21px;height:21px;fill:currentColor;filter:drop-shadow(0 0 3px #0008)}.hud-github-link{text-decoration:none}.hud-github-link img{display:block;width:20px;height:20px;object-fit:contain;filter:invert(1) drop-shadow(0 0 3px #0008)}.hud-github-link:hover,.hud-github-link:focus-visible{opacity:1;color:#d8eefa;background:radial-gradient(circle,#5fb4d82e,transparent 70%)}.hud-icon-stroke{fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round}.hud-button .icon-play,.hud-button[data-state=paused] .icon-pause{display:none}.hud-button[data-state=paused] .icon-play{display:block}.hud-button .icon-muted,.hud-button[data-state=muted] .icon-sound{display:none}.hud-button[data-state=muted] .icon-muted{display:block}.hud-button-label,.hud-key{display:none}.hud-button[data-tip]:after{content:attr(data-tip);position:absolute;top:calc(100% + 4px);right:0;padding:3px 7px;border-radius:4px;background:#06111fe6;color:#b9d3e2;font-size:9px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;white-space:nowrap;opacity:0;pointer-events:none;transition:opacity .15s ease}.hud-button:hover:not(:disabled):after,.hud-button:focus-visible:after{opacity:1}.hud-button:disabled{cursor:default;opacity:.15}.asset-notice,.end-panel{position:absolute;top:50%;left:50%;display:flex;width:min(460px,calc(100% - 40px));flex-direction:column;align-items:center;gap:12px;padding:24px;border:1px solid #8dcfff44;border-radius:16px;background:#071326d9;box-shadow:0 18px 70px #0008,inset 0 1px #ffffff12;text-align:center;transform:translate(-50%,-50%);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px)}.asset-notice[hidden],.end-panel[hidden]{display:none}.asset-notice strong,.end-title{margin:0;color:#f4f8ff;font-size:17px;font-weight:700}.asset-notice span{color:#b7c9dd;font-size:12px;line-height:1.55}.end-panel{width:min(340px,calc(100% - 40px))}.end-backdrop{position:absolute;inset:0;display:none;background:#050c1c4d;backdrop-filter:blur(6px) saturate(.9);-webkit-backdrop-filter:blur(6px) saturate(.9);pointer-events:none;animation:end-backdrop-in .6s ease both}.end-backdrop:has(+.breach-panel:not([hidden])){display:block}@keyframes end-backdrop-in{0%{opacity:0}}.breach-panel{--chamfer: 16px;width:min(400px,calc(100% - 40px));gap:0;padding:0 0 22px;border:0;border-radius:0;background:repeating-linear-gradient(0deg,#ffffff05 0 1px,transparent 1px 3px),linear-gradient(180deg,#0b1828f0,#060e1af0);clip-path:polygon(var(--chamfer) 0,100% 0,100% calc(100% - var(--chamfer)),calc(100% - var(--chamfer)) 100%,0 100%,0 var(--chamfer));box-shadow:none;filter:drop-shadow(0 18px 50px #000c);animation:breach-in .5s cubic-bezier(.2,.9,.3,1.2) both}.breach-panel:before{content:"";position:absolute;inset:0;padding:1px;background:linear-gradient(135deg,#c46a6acc,#5fb4d833 40% 60%,#c46a6a99);clip-path:inherit;-webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;mask-composite:exclude;pointer-events:none}.breach-panel:after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,transparent,#5fb4d812 50%,transparent);background-size:100% 40%;background-repeat:no-repeat;animation:breach-scan 3.2s linear infinite;pointer-events:none}@keyframes breach-in{0%{opacity:0;transform:translate(-50%,-46%) scale(.96)}}@keyframes breach-scan{0%{background-position:0 -60%}to{background-position:0 160%}}.breach-header{display:flex;align-self:stretch;align-items:center;gap:8px;margin-bottom:18px;padding:8px 16px 8px 22px;border-bottom:1px solid #c46a6a33;background:#c46a6a14;color:#c9a4a4;font-family:Cascadia Code,Consolas,monospace;font-size:10px;letter-spacing:.14em}.breach-dot{width:7px;height:7px;border-radius:50%;background:#d06a6a;box-shadow:0 0 8px #d06a6a;animation:breach-blink 1s steps(2,start) infinite}@keyframes breach-blink{to{visibility:hidden}}.breach-code{margin-left:auto;color:#8a6f6f}.breach-title{position:relative;color:#e8d6d6;font-size:clamp(22px,4vw,30px);font-weight:800;letter-spacing:.16em;text-shadow:0 0 18px #c46a6a66}.breach-title:before,.breach-title:after{content:attr(data-text);position:absolute;inset:0;overflow:hidden;pointer-events:none}.breach-title:before{color:#5fb4d8;clip-path:inset(0 0 62% 0);transform:translate(-2px);opacity:.7;animation:breach-glitch-a 3.6s steps(1) infinite}.breach-title:after{color:#c46a8c;clip-path:inset(58% 0 0 0);transform:translate(2px);opacity:.7;animation:breach-glitch-b 3.6s steps(1) infinite}@keyframes breach-glitch-a{0%,86%,to{transform:translate(0);opacity:0}88%{transform:translate(-4px);opacity:.8;clip-path:inset(10% 0 55% 0)}91%{transform:translate(3px);opacity:.7;clip-path:inset(40% 0 30% 0)}94%{transform:translate(-2px);opacity:.6;clip-path:inset(0 0 70% 0)}}@keyframes breach-glitch-b{0%,86%,to{transform:translate(0);opacity:0}89%{transform:translate(4px);opacity:.8;clip-path:inset(60% 0 5% 0)}92%{transform:translate(-3px);opacity:.7;clip-path:inset(30% 0 45% 0)}95%{transform:translate(2px);opacity:.6;clip-path:inset(75% 0 0 0)}}.breach-subtitle{margin:6px 0 18px;color:#8fa5ba;font-size:11px;letter-spacing:.08em}.breach-stats{display:grid;grid-template-columns:repeat(3,1fr);align-self:stretch;margin:0 22px;border-top:1px solid #5fb4d822;border-bottom:1px solid #5fb4d822}.breach-stats>div{display:grid;gap:4px;padding:12px 4px}.breach-stats>div+div{border-left:1px solid #5fb4d81a}.breach-stats dt{color:#7f97ad;font-size:8px;font-weight:700;letter-spacing:.18em;text-transform:uppercase}.breach-stats dd{margin:0;color:#dbe9f5;font-family:Cascadia Code,Consolas,monospace;font-size:19px;font-weight:600}.breach-best{margin:12px 0 18px;color:#7f97ad;font-size:10px;font-weight:700;letter-spacing:.18em;text-transform:uppercase}.breach-best span{margin-left:6px;color:#b9cddd;font-family:Cascadia Code,Consolas,monospace;letter-spacing:.06em}.breach-best.is-new{color:#c9a462}.breach-best.is-new span{color:#e3c58e;text-shadow:0 0 10px #c9a46266}.breach-button{display:inline-flex;align-items:center;gap:12px;margin:0;padding:10px 14px 10px 18px;border:1px solid #5fb4d866;border-radius:0;background:linear-gradient(180deg,#5fb4d826,#5fb4d80d);clip-path:polygon(10px 0,100% 0,100% calc(100% - 10px),calc(100% - 10px) 100%,0 100%,0 10px);color:#d8eefa;font-size:11px;font-weight:700;letter-spacing:.2em;text-transform:uppercase;transition:background .2s ease,color .2s ease}.breach-button:hover,.breach-button:focus-visible{outline:none;background:linear-gradient(180deg,#5fb4d84d,#5fb4d81f);color:#fff;filter:none}.breach-button kbd{padding:2px 5px;border:1px solid #5fb4d84d;border-radius:3px;color:#8fb7cc;font:inherit;font-size:9px;letter-spacing:.06em}.breach-button-secondary{border-color:#8fb7cc33;background:transparent;color:#9fb8c9}.standby-panel:before{background:linear-gradient(135deg,#c9a462aa,#5fb4d833 40% 60%,#5fb4d899)}.standby-panel .breach-header{border-bottom-color:#c9a46233;background:#c9a46212;color:#cdbb98}.standby-panel .breach-dot{background:#c9a462;box-shadow:0 0 8px #c9a462;animation:standby-breathe 2.4s ease-in-out infinite}@keyframes standby-breathe{50%{opacity:.25}}.standby-panel .breach-code{color:#8a7c62}.standby-panel .breach-title{color:#dbe9f5;letter-spacing:.32em;text-shadow:0 0 18px #5fb4d855;animation:standby-breathe-title 3.2s ease-in-out infinite}@keyframes standby-breathe-title{50%{text-shadow:0 0 26px #5fb4d888;opacity:.82}}.standby-panel .breach-stats{margin-bottom:20px}#end-panel{width:min(440px,calc(100% - 40px))}#end-panel .breach-stats{grid-template-columns:repeat(4,1fr)}.standby-actions{display:flex;flex-wrap:wrap;justify-content:center;gap:10px}@media(prefers-reduced-motion:reduce){.wave-banner,.wave-banner.is-leaving,.hud-combo.is-up b,.standby-panel .breach-dot,.standby-panel .breach-title,.breach-panel,.breach-panel:after,.breach-title:before,.breach-title:after,.breach-dot{animation:none}}.splash{position:absolute;inset:0;z-index:10;display:flex;align-items:center;justify-content:center;padding:24px;background:#050c1c66;backdrop-filter:blur(10px) saturate(.9);-webkit-backdrop-filter:blur(10px) saturate(.9);cursor:pointer;opacity:1;transition:opacity .45s ease}.splash.is-leaving{opacity:0;pointer-events:none}.splash[hidden]{display:none}.splash-window{display:flex;flex-direction:column;align-items:center;gap:14px;width:min(540px,74vh,calc(100% - 32px));padding:14px 14px 18px;border:1px solid #8dcfff44;border-radius:18px;background:#071326d9;box-shadow:0 24px 80px #000a,0 0 50px #3c5cff26,inset 0 1px #ffffff12;transform:scale(1);transition:transform .45s ease}.splash.is-leaving .splash-window{transform:scale(.96)}.splash-image{display:block;width:100%;aspect-ratio:1;object-fit:cover;border-radius:12px}.splash-prompt{margin:0;color:#d8e6ff;font-size:12px;font-weight:700;letter-spacing:.12em;text-transform:uppercase}.splash.is-ready .splash-prompt{animation:splash-pulse 1.6s ease-in-out infinite}@keyframes splash-pulse{50%{opacity:.45}}button{margin-top:5px;padding:10px 18px;border:0;border-radius:8px;background:linear-gradient(110deg,#12b8f5,#2675ee);color:#fff;font:inherit;font-size:12px;font-weight:700;cursor:pointer}button:hover{filter:brightness(1.12)}button:focus-visible{outline:2px solid #fff;outline-offset:3px}@media(max-width:520px){.hud{justify-content:flex-start}.hud-stats{gap:14px;width:calc(100% - 112px)}.hud-stats strong{font-size:15px}.hud-shield-icons img{width:24px;height:24px}}
