:root{color-scheme:dark;--app-height: 100vh;--bg: #090909;--bg-soft: rgba(18, 18, 18, .92);--panel: rgba(255, 255, 255, .08);--panel-strong: rgba(255, 255, 255, .12);--stroke: rgba(255, 255, 255, .9);--muted: rgba(255, 255, 255, .68);--accent: #ffd166;--danger: #ff6b6b;--safe: #7bd389;--shadow: rgba(0, 0, 0, .45);--font-display: "Avenir Next", "Trebuchet MS", sans-serif;--font-hand: "Comic Sans MS", "Marker Felt", "Chalkboard SE", cursive}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body,#app{margin:0;min-height:100%;min-height:100dvh}html{height:100%;height:100dvh;overflow:hidden;background:#050505;-webkit-text-size-adjust:100%;text-size-adjust:100%}body{min-height:var(--app-height);min-height:100dvh;background:radial-gradient(circle at top,rgba(255,209,102,.08),transparent 26%),linear-gradient(180deg,#101010,#050505);color:#fff;font-family:var(--font-display);overscroll-behavior:none;overflow:hidden}body.route-game,body.route-game #app{width:100%;height:var(--app-height);min-height:var(--app-height)}body.route-game{position:fixed;top:0;right:0;bottom:0;left:0}body.route-game .app-shell,body.route-game #game-canvas,body.route-game .hud,body.route-game .overlay,body.route-game .touch-controls,body.route-game .toast{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}body.route-editor{overflow:hidden}.app-shell{position:relative;width:100%;min-height:var(--app-height);min-height:100dvh;overflow:hidden;touch-action:none}#game-canvas{display:block;width:100%;height:var(--app-height);height:100dvh;touch-action:none}.hud{position:absolute;top:calc(env(safe-area-inset-top,0px) + 1rem);left:calc(env(safe-area-inset-left,0px) + 1rem);width:min(72rem,calc(100vw - env(safe-area-inset-left,0px) - env(safe-area-inset-right,0px) - 2rem));pointer-events:none}.hud-bar,.leaderboard{background:var(--bg-soft);border:1px solid rgba(255,255,255,.14);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);box-shadow:0 20px 50px var(--shadow)}.hud-bar,.leaderboard{border-radius:1.25rem;padding:.75rem .9rem}.hud-title,.overlay-panel h2{margin:0;font-family:var(--font-hand);font-size:clamp(1.65rem,3vw,2.4rem);font-weight:700;line-height:.95}.eyebrow,.muted{text-transform:uppercase;letter-spacing:.14em;font-size:.72rem}.eyebrow{color:var(--accent)}.overlay-panel p,.muted{color:var(--muted)}.overlay-panel p{margin:.45rem 0 0;line-height:1.45;white-space:pre-line}.hud-bar{display:flex;align-items:center;justify-content:space-between;gap:.9rem;pointer-events:auto}.hud-stats{display:flex;align-items:center;gap:.5rem;flex:1;min-width:0}.hud-stat{display:flex;align-items:baseline;gap:.35rem;min-width:0;padding:.45rem .65rem;border-radius:999px;background:#ffffff0d;border:1px solid rgba(255,255,255,.1)}.hud-stat span{color:var(--muted);font-size:.68rem;text-transform:uppercase;letter-spacing:.12em}.hud-stat strong{font-size:.82rem;font-weight:700;white-space:nowrap}.hud-actions{display:flex;align-items:center;gap:.45rem}button{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:0;cursor:pointer;transition:transform .14s ease,background-color .14s ease,opacity .14s ease;touch-action:manipulation}button:hover{transform:translateY(-1px)}button:active{transform:translateY(1px) scale(.99)}.action-button,.ghost-button,.hud-icon-button,.touch-controls button{border-radius:999px;padding:.9rem 1.15rem;font-weight:700}.action-button{background:linear-gradient(135deg,#fff5cf,#ffd166);color:#151515}.ghost-button{background:#ffffff14;color:#fff;border:1px solid rgba(255,255,255,.14)}.hud-icon-button{min-width:2.6rem;min-height:2.6rem;padding:0;display:grid;place-items:center;background:#ffffff14;color:#fff;border:1px solid rgba(255,255,255,.14);font-size:1rem;line-height:1}.leaderboard{pointer-events:auto}.leaderboard--floating{position:absolute;top:4.2rem;right:0;width:min(18rem,calc(100vw - 2rem));padding:.9rem 1rem}.leaderboard ol{margin:0;padding-left:1.2rem;display:grid;gap:.45rem;color:#fff}.leaderboard li{padding-left:.2rem}.overlay{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;padding:calc(env(safe-area-inset-top,0px) + 1rem) calc(env(safe-area-inset-right,0px) + 1rem) calc(env(safe-area-inset-bottom,0px) + 1rem) calc(env(safe-area-inset-left,0px) + 1rem);background:radial-gradient(circle at center,#00000038,#000000ad),linear-gradient(180deg,rgba(255,255,255,.05),transparent);z-index:5}.overlay.hidden{display:none}.overlay-panel{width:min(34rem,100%);padding:1.4rem;border-radius:1.6rem;background:#0a0a0ae0;border:1px solid rgba(255,255,255,.14);box-shadow:0 30px 80px var(--shadow)}.overlay-panel .action-button{margin-top:1rem}.overlay-actions{display:flex;flex-wrap:wrap;gap:.7rem;margin-top:1rem}.overlay-actions .action-button,.overlay-actions .ghost-button{margin-top:0}.toast{position:absolute;left:50%;bottom:calc(env(safe-area-inset-bottom,0px) + 1.25rem);transform:translate(-50%) translateY(120%);padding:.8rem 1rem;border-radius:999px;background:#141414f0;border:1px solid rgba(255,255,255,.18);box-shadow:0 12px 36px var(--shadow);transition:transform .18s ease;z-index:6}.toast.visible{transform:translate(-50%) translateY(0)}.context-hint{position:absolute;left:50%;bottom:calc(env(safe-area-inset-bottom,0px) + 4.4rem);transform:translate(-50%);padding:.45rem .8rem;border-radius:999px;background:#141414a3;border:1px solid rgba(255,255,255,.14);color:#ffffffd1;font-size:.76rem;letter-spacing:.02em;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);box-shadow:0 10px 26px #00000038;z-index:5;pointer-events:none}.screen-fx{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:4}.screen-fx__flash{position:absolute;top:0;right:0;bottom:0;left:0;opacity:0;transition:opacity 60ms linear}.screen-fx__flash--hit{background:radial-gradient(circle at center,rgba(255,120,102,.18),transparent 48%),linear-gradient(180deg,#ff6b6b2e,#ff6b6b0f)}.screen-fx__flash--restart{background:radial-gradient(circle at center,rgba(255,209,102,.18),transparent 46%),linear-gradient(180deg,#fff5cf1f,#ffd1660a)}.touch-controls{position:absolute;left:calc(env(safe-area-inset-left,0px) + 1rem);right:calc(env(safe-area-inset-right,0px) + 1rem);bottom:calc(env(safe-area-inset-bottom,0px) + 1rem);display:none;align-items:end;justify-content:space-between;z-index:4;pointer-events:none}.touch-stick-wrap,.jump-button{pointer-events:auto}.touch-stick{position:relative;width:8.5rem;height:8.5rem;border-radius:50%;background:radial-gradient(circle at 35% 30%,rgba(255,255,255,.12),transparent 44%),#ffffff0f;border:1px solid rgba(255,255,255,.15);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);box-shadow:0 18px 40px #0000004d;touch-action:none}.touch-stick:after{content:"";position:absolute;top:16%;right:16%;bottom:16%;left:16%;border-radius:50%;border:1px dashed rgba(255,255,255,.18)}.touch-stick-knob{position:absolute;left:50%;top:50%;width:3.35rem;height:3.35rem;border-radius:50%;transform:translate(-50%,-50%);background:linear-gradient(180deg,#ffffff61,#ffffff1f);border:1px solid rgba(255,255,255,.2);box-shadow:0 10px 24px #00000059}.jump-button{min-width:5.3rem;min-height:5.3rem;border-radius:50%;background:linear-gradient(180deg,#ffd166f5,#ffd166ad);color:#161616;border:1px solid rgba(255,255,255,.22);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);box-shadow:0 18px 40px #00000057}.level-editor{position:fixed;top:1rem;right:1rem;width:min(28rem,calc(100vw - 2rem));max-height:calc(100vh - 2rem);overflow:auto;padding:.9rem;border-radius:1rem;background:#080808f0;border:1px solid rgba(255,255,255,.14);box-shadow:0 24px 60px #00000070;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);z-index:9}.editor-shell{display:grid;grid-template-columns:22rem minmax(0,1fr);width:100%;height:var(--app-height);min-height:var(--app-height);min-height:100dvh;background:radial-gradient(circle at 20% 10%,rgba(255,209,102,.09),transparent 22%),linear-gradient(180deg,#111,#050505)}.editor-sidebar{display:grid;align-content:start;gap:.9rem;min-height:0;padding:1rem;border-right:1px solid rgba(255,255,255,.12);background:#080808eb;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);overflow-y:auto;overflow-x:hidden;-webkit-overflow-scrolling:touch}.editor-sidebar__head{display:flex;justify-content:space-between;gap:1rem;align-items:start}.editor-sidebar__head h1{margin:.15rem 0 0;font-family:var(--font-hand);font-size:2.2rem;line-height:.95}.editor-link{color:#fff;text-decoration:none;border:1px solid rgba(255,255,255,.14);padding:.65rem .8rem;border-radius:999px;background:#ffffff0f}.editor-main{display:grid;grid-template-rows:auto minmax(0,1fr);min-width:0;min-height:0;position:relative}.editor-stagebar{display:flex;justify-content:space-between;gap:1rem;align-items:baseline;padding:1rem 1.1rem .25rem}.editor-stagebar__title{margin:0;color:#fff;font-size:1.05rem}.editor-stagebar__hint{margin:0;color:var(--muted);font-size:.86rem;max-width:44rem}.editor-panel{padding:.9rem;border-radius:1rem;background:#ffffff0d;border:1px solid rgba(255,255,255,.1);box-shadow:0 16px 36px #00000040}.editor-panel__title{margin:0 0 .75rem;color:#fff;font-weight:700}.editor-field{display:grid;gap:.35rem}.editor-field span{color:var(--muted);font-size:.76rem}.editor-field input,.editor-field select,.editor-field textarea{width:100%;background:#ffffff0f;color:#fff;border:1px solid rgba(255,255,255,.14);border-radius:.75rem;padding:.75rem;font:inherit}.editor-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.5rem;margin-top:.75rem}.editor-actions button,.editor-toolgrid button{border-radius:.75rem;padding:.75rem;background:#ffffff14;color:#fff;border:1px solid rgba(255,255,255,.14)}.editor-toolgrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.5rem}.editor-toolgrid .is-active{background:linear-gradient(135deg,#fff5cf,#ffd166);color:#111}.editor-selection{margin-top:.75rem}.editor-selection__grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.5rem}.editor-canvas-wrap{padding:1rem;min-width:0;min-height:0}.editor-canvas{position:relative;width:min(100%,calc((100vh - 7rem) * 20 / 22));width:min(100%,calc((var(--app-height) - 7rem) * 20 / 22));aspect-ratio:20 / 22;margin-inline:auto;border-radius:1.2rem;overflow:hidden;background:radial-gradient(circle at top,rgba(255,209,102,.08),transparent 24%),linear-gradient(180deg,#121212,#050505);border:2px solid rgba(255,255,255,.14);box-shadow:0 30px 80px #00000057}.editor-save-button{position:fixed;right:calc(env(safe-area-inset-right,0px) + 1rem);bottom:calc(env(safe-area-inset-bottom,0px) + 1rem);z-index:12;min-width:9rem;padding:.9rem 1.3rem;border-radius:999px;border:1px solid rgba(255,255,255,.16);background:linear-gradient(135deg,#b9ffbf,#53d769);color:#08210d;box-shadow:0 20px 50px #184b1f5c;font-size:.9rem;font-weight:800;letter-spacing:.08em}.editor-save-button.is-saving{background:linear-gradient(135deg,#fff5cf,#ffd166);color:#151515}.editor-save-button.is-error{background:linear-gradient(135deg,#ffb3b3,#ff6b6b);color:#2f0808}.editor-grid,.editor-layer{position:absolute;top:0;right:0;bottom:0;left:0}.editor-grid{background-image:linear-gradient(rgba(255,255,255,.05) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.05) 1px,transparent 1px);background-size:5% calc(100% / 22)}.editor-item{position:absolute;border-radius:.6rem;border:2px solid rgba(255,255,255,.9);cursor:move;transform-origin:center center}.editor-item--platform{background:#ffffff14}.editor-item--ladder{background:repeating-linear-gradient(180deg,#ffffff29,#ffffff29 6px,#ffffff08 6px,#ffffff08 14px)}.editor-item--cannon{background:linear-gradient(180deg,#78b4ff2e,#78b4ff14)}.editor-item--cannon:after{content:"";position:absolute;top:50%;left:58%;width:38%;height:.34rem;border-radius:999px;background:#9fc4fff2;transform:translateY(-50%);box-shadow:0 0 12px #8cbfff66}.editor-item--start{background:#7bd3891f}.editor-item--exit{background:#ffd1661f}.editor-item.is-selected,.editor-enemy.is-selected{box-shadow:0 0 0 3px #ffd16659}.editor-item__label{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);color:#fff;font-family:var(--font-hand);font-size:1rem;pointer-events:none}.editor-cannon-arrow{position:absolute;pointer-events:none}.editor-cannon-arrow:after{content:"";position:absolute;left:50%;bottom:50%;width:42%;height:2px;background:#8cbffff2;transform-origin:left center;transform:rotate(calc(var(--cannon-angle) * -1deg));box-shadow:0 0 12px #8cbfff66}.editor-cannon-arrow:before{content:"";position:absolute;left:92%;bottom:50%;width:.7rem;height:.7rem;border-top:2px solid rgba(140,191,255,.95);border-right:2px solid rgba(140,191,255,.95);transform:translate(-50%,50%) rotate(calc(45deg + var(--cannon-angle) * -1deg))}.editor-handle{position:absolute;width:.95rem;height:.95rem;border-radius:50%;background:#ffd166;border:0;padding:0}.editor-handle--nw{left:-.45rem;top:-.45rem;cursor:nwse-resize}.editor-handle--ne{right:-.45rem;top:-.45rem;cursor:nesw-resize}.editor-handle--se{right:-.45rem;bottom:-.45rem;cursor:nwse-resize}.editor-handle--sw{left:-.45rem;bottom:-.45rem;cursor:nesw-resize}.editor-enemy{position:absolute;overflow:visible;cursor:move}.editor-enemy__svg{position:absolute;top:0;right:0;bottom:0;left:0;overflow:visible}.editor-enemy__svg line{stroke:#ff6b6be6;stroke-width:3}.editor-enemy__node{position:absolute;width:1rem;height:1rem;margin-left:-.5rem;margin-bottom:-.5rem;border-radius:50%;border:2px solid white;background:#ff6b6b;padding:0}.level-editor__head{display:flex;justify-content:space-between;align-items:center;margin-bottom:.75rem;color:#fff}.level-editor__head span,.level-editor__hint,.level-editor__field span{color:var(--muted);font-size:.76rem}.level-editor__field{display:grid;gap:.35rem;margin-bottom:.7rem}.level-editor__select,.level-editor__textarea{width:100%;background:#ffffff0f;color:#fff;border:1px solid rgba(255,255,255,.14);border-radius:.75rem;padding:.75rem;font:inherit}.level-editor__textarea{min-height:20rem;resize:vertical;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.82rem;line-height:1.45}.level-editor__actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.5rem}.level-editor__actions button{border-radius:.75rem;padding:.75rem;background:#ffffff14;color:#fff;border:1px solid rgba(255,255,255,.14)}.level-editor__hint{margin:.7rem 0 0;line-height:1.45}@media (max-width: 900px){.hud{width:calc(100vw - 1.5rem);width:calc(100vw - env(safe-area-inset-left,0px) - env(safe-area-inset-right,0px) - 1.5rem);top:calc(env(safe-area-inset-top,0px) + .75rem);left:calc(env(safe-area-inset-left,0px) + .75rem)}.hud-bar{flex-wrap:wrap;padding:.7rem .8rem}.touch-controls{display:flex}.level-editor{top:auto;bottom:calc(env(safe-area-inset-bottom,0px) + 8rem);right:calc(env(safe-area-inset-right,0px) + .75rem);left:calc(env(safe-area-inset-left,0px) + .75rem);width:auto;max-height:42vh}}@media (max-width: 640px){.app-shell{min-width:100vw}.hud{width:calc(100vw - env(safe-area-inset-left,0px) - env(safe-area-inset-right,0px) - 1rem);top:calc(env(safe-area-inset-top,0px) + .5rem);left:calc(env(safe-area-inset-left,0px) + .5rem)}.hud-title{width:100%;font-size:1.7rem}.hud-stats{order:3;width:100%;overflow-x:auto;padding-bottom:.1rem}.hud-actions{margin-left:auto}.leaderboard--floating{top:6.3rem;right:0;width:min(16rem,calc(100vw - 1rem))}.touch-controls{left:calc(env(safe-area-inset-left,0px) + .75rem);right:calc(env(safe-area-inset-right,0px) + .75rem);bottom:calc(env(safe-area-inset-bottom,0px) + .75rem)}.context-hint{bottom:calc(env(safe-area-inset-bottom,0px) + 6.25rem)}.touch-stick{width:7.5rem;height:7.5rem}.jump-button{min-width:4.8rem;min-height:4.8rem}.editor-shell{grid-template-columns:minmax(0,1fr);grid-template-rows:auto minmax(0,1fr)}.editor-sidebar{overflow-y:auto;max-height:min(45vh,32rem);border-right:0;border-bottom:1px solid rgba(255,255,255,.12)}.editor-stagebar{padding:.8rem .85rem .2rem}.editor-save-button{right:calc(env(safe-area-inset-right,0px) + .75rem);bottom:calc(env(safe-area-inset-bottom,0px) + .75rem);min-width:7.8rem;padding:.82rem 1.1rem}}
