body{background:radial-gradient(ellipse at 50% 0,#152b40,#050c14 65%);color:#dfeaf1;min-height:100vh}button,input{touch-action:manipulation}button{transition:filter .15s}button:disabled{opacity:.4}.flight-game{width:min(100% - 20px,620px);margin:20px auto;padding:12px;border:1px solid #9b7b4655;border-radius:20px;background:linear-gradient(145deg,#0d1d2b,#050d16);box-shadow:0 20px 90px #0008}.nx-header{padding:0 4px 8px}.flight-visual{position:relative;margin-top:12px;border:1px solid #a8875055;border-radius:14px;overflow:hidden;background:#06121f}.graph-head,.graph-replay-label{display:none!important}.graph-scene{padding:0!important;background:transparent!important}.graph-stage{border:0!important;border-radius:0!important;background:radial-gradient(ellipse at 50% 0,#18364d,#061422 72%)!important}.graph-hero{top:20%!important}.graph-multiplier{color:#f8dfa6!important;text-shadow:0 3px 1px #775629,0 0 24px #efc77c33!important;font-size:clamp(42px,11vw,72px)!important}.graph-footer{font-size:11px!important;padding:9px 12px!important}.history-strip{display:flex;align-items:center;gap:8px;padding:10px;border-top:1px solid #9b7b4644;font-size:10px;color:#93aebf}.history-strip>span{flex-shrink:0}#history{display:flex;gap:5px;overflow:auto;scrollbar-width:thin}#history span{padding:5px 7px;white-space:nowrap;border:1px solid #31556c;border-radius:5px;color:#80c9e5;background:#102838}#history .high{color:#f5cf89;border-color:#8d6c3a;background:#332b1d}#winEffect{position:absolute;z-index:5;top:38%;left:50%;transform:translateX(-50%);width:75%;text-align:center;padding:15px;background:linear-gradient(120deg,#102732ef,#091c26f5);border:1px solid #ecc879;border-radius:12px;box-shadow:0 0 28px #e7b84f33;pointer-events:none;animation:win .35s ease-out}#winEffect[hidden]{display:none}#winEffect span,#winEffect small{display:block;color:#b9d3dd;font-size:12px}#winEffect strong{display:block;color:#ffe0a0;font-size:clamp(26px,7vw,40px);margin:4px 0;font-variant-numeric:tabular-nums}@keyframes win{from{opacity:0;scale:.94}to{opacity:1;scale:1}}.bet-panel{margin-top:12px}.balance-row{display:grid;grid-template-columns:1fr 1fr;border:1px solid #324757;border-radius:9px;background:#071523;padding:10px;gap:12px}.balance-row label{display:flex;align-items:center;gap:7px;min-width:0;font-size:11px;color:#9bb3c4}.balance-row output{margin-left:auto;color:#f0d69d;font-size:15px}.balance-row input{width:100%;min-width:0;text-align:right;background:#05101b;border:1px solid #365064;border-radius:5px;color:#e9f0f4;padding:9px 5px;font-size:14px}.presets{display:grid;grid-template-columns:repeat(4,1fr);gap:7px;margin:8px 0}.presets button{border-radius:5px;font-size:12px;background:linear-gradient(#182d3d,#0d1d2a)}.bet-actions{display:grid;grid-template-columns:1fr 1fr;gap:8px}.bet-actions button{min-height:52px;font-size:19px;font-weight:800;border:1px solid #e5c079;border-radius:7px}#betButton{color:#03212c;background:linear-gradient(#5cecff,#1198bd);box-shadow:inset 0 1px 2px #c1faff}#cashoutButton{color:#221a0a;background:linear-gradient(#ffe4a3,#b99149)}#message{min-height:18px;margin:10px 0 6px;text-align:center;font-size:12px;color:#d7bc87}.nx-note{text-align:center;font-size:10px;color:#7793a7;margin:0 0 14px}.records{border:1px solid #2d4354;border-radius:10px;padding:12px;background:#07131f}.records h2{font-size:14px;margin:0 0 12px;display:flex;justify-content:space-between}.records small{font-size:10px;color:#7693a8;font-weight:400}.record-head,.records li{display:grid;grid-template-columns:1fr 1fr 1fr 1fr;gap:5px;font-size:11px;padding:9px 0;border-top:1px solid #203340}.record-head{color:#7e9aac;font-size:10px}.records ol{list-style:none;padding:0;margin:0}.records .empty{display:block;text-align:center;color:#829bae}.won span:last-child{color:#66e6ac}.game-info{padding:18px 2px;color:#7f99ac;font-size:11px}.game-info summary{cursor:pointer;color:#bfac86}.game-info label{display:flex;align-items:center;gap:15px;margin-top:15px}.game-info p{line-height:1.7}footer{display:flex;justify-content:space-between;border-top:1px solid #263c4e;padding:15px 0 3px;letter-spacing:1px;font-size:9px;color:#7491a5}@media(min-width:1000px){.flight-game{width:min(100% - 64px,1100px);display:grid;grid-template-columns:minmax(0,1.5fr) minmax(310px,1fr);gap:16px;padding:24px;margin:36px auto}.nx-header,.nx-status,footer{grid-column:1/-1}.flight-visual{grid-row:3/6;margin:0;align-self:start}.bet-panel{margin:0}.records{max-height:260px;overflow:auto}.game-info{padding:0}.graph-stage{min-height:330px}.graph-multiplier{font-size:66px!important}}@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}

/* Cashout is a normal-flow receipt, never an overlay on the flight. */
#winEffect{position:static;transform:none;inset:auto;width:auto;display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:4px 12px;margin:0;padding:10px 12px;border:0;border-top:1px solid #aa874c;border-radius:0;box-shadow:inset 0 1px 14px #e7b84f0d;animation:none;text-align:left}
#winEffect strong{font-size:24px;margin:0;line-height:1.2}#winEffect small{flex-basis:100%;font-size:12px}#winEffect[hidden]{display:none}
#soundButton{font-size:17px;line-height:1.2}#soundButton[data-ready=false]{color:#9db3c4}

/* During flight the cashout button owns feedback. The main celebration is end-only. */
.flight-screen{position:relative}.flight-screen #winEffect{position:absolute;inset:10% 5% 18%;display:flex;flex-direction:column;justify-content:center;gap:4px;align-items:center;border:0;background:radial-gradient(ellipse,#07131fea 0%,#07131fbb 48%,transparent 75%);padding:4px;text-align:center;pointer-events:none;box-shadow:none}
.flight-screen #winEffect[hidden]{display:none}.flight-screen #winEffect img{width:clamp(130px,40%,200px);height:auto;max-height:100px;object-fit:contain;filter:drop-shadow(0 4px 12px #ffd07755)}.flight-screen #winEffect strong{font-size:clamp(28px,8vw,44px);color:#ffdc8f;text-shadow:0 2px 1px #8b581f,0 0 16px #d6a54666}.flight-screen #winEffect small{flex-basis:auto;font-size:12px}.show-win .graph-hero,.show-win .graph-marker{visibility:hidden}.show-win .graph-curve-layer{opacity:.2}
#cashoutButton.cashed-out{opacity:1;position:relative;overflow:hidden;color:#ffdda0;background:linear-gradient(120deg,#76562c,#c09649 46%,#624827);border-color:#ffe0a0;box-shadow:inset 0 0 0 2px #d9ac58,0 0 15px #e8bd5344;animation:cashout-pop .45s ease-out}
#cashoutButton.cashed-out strong{display:block;font-size:clamp(18px,5vw,25px);line-height:1.2}#cashoutButton.cashed-out small{display:block;font-size:12px;color:#f8e6bc;font-weight:600;margin-top:3px}#cashoutButton.cashed-out:after{content:'';position:absolute;inset:-60% -100%;background:linear-gradient(110deg,transparent 42%,#fff8 50%,transparent 58%);transform:translateX(60%);animation:cashout-shine .8s ease-out;pointer-events:none}@keyframes cashout-shine{from{transform:translateX(-60%)}to{transform:translateX(60%)}}@keyframes cashout-pop{50%{box-shadow:inset 0 0 0 2px #ffe1a0,0 0 26px #ffd06a99}}@media(prefers-reduced-motion:reduce){#cashoutButton.cashed-out,#cashoutButton.cashed-out:after{animation:none}}
.balance-row{grid-template-columns:minmax(0,1fr)}
.balance-row .amount-entry{display:flex;align-items:center;gap:7px;min-width:0}.balance-row .amount-entry label{flex:0 0 auto;white-space:nowrap}.balance-row .amount-entry input{flex:1 1 0;width:0;min-width:0;box-sizing:border-box;height:36px}
.balance-row #amountReset{flex:0 0 52px;box-sizing:border-box;height:36px;min-height:36px;margin:0;padding:4px;border:1px solid #879aad;border-radius:5px;background:linear-gradient(#34495e,#172b3e);color:#e0e8ef;font:600 12px system-ui;cursor:pointer}
button[data-amount]:active,.balance-row #amountReset:active{transform:translateY(1px) scale(.97);filter:brightness(1.35);box-shadow:inset 0 2px 8px #000b,0 0 0 2px #62dff066;transition:none}
