
:root{color-scheme:dark;--bg:#05090b;--panel:#06100b;--line:#1b3927;--green:#48db82;--bright:#a1ffb9;--muted:#38714e;--yellow:#e3dc64;--red:#ff6273}
*{box-sizing:border-box}[hidden]{display:none!important}
body{margin:0;min-height:100vh;background:radial-gradient(ellipse at 50% 25%,#0b1b11,#05090b 70%);color:#d9f4df;font:14px ui-monospace,SFMono-Regular,Consolas,monospace;padding:16px;display:grid;place-items:center;user-select:none}
.app{width:min(100%,1000px);min-height:0;border:1px solid #15242a;background:#030809;padding:clamp(14px,3vw,28px);display:flex;flex-direction:column;gap:12px;position:relative}
.game-nav{position:relative;z-index:4;display:flex;align-items:center;justify-content:flex-start;gap:12px;padding:7px 10px;border:1px solid var(--line);background:#06100b}.nav-label{color:var(--green);font-size:10px;font-weight:bold;letter-spacing:.15em}.game-select{width:min(260px,65%);appearance:none;border:1px solid #285039;background:#0a1b10;color:var(--bright);font:10px ui-monospace,SFMono-Regular,Consolas,monospace;letter-spacing:.08em;padding:8px 10px;cursor:pointer}.game-select:focus-visible{outline:2px solid var(--green);outline-offset:2px}.game-select option{background:#07100f;color:#d9f4df}
.game-nav .game-select{width:65%;max-width:260px;min-width:0;flex:0 1 260px;text-overflow:ellipsis;background-image:linear-gradient(45deg,transparent 50%,#48db82 50%),linear-gradient(135deg,#48db82 50%,transparent 50%);background-position:calc(100% - 13px) 50%,calc(100% - 8px) 50%;background-size:5px 5px;background-repeat:no-repeat;padding-right:26px}.home-link{display:inline-flex;align-items:center;justify-content:center;white-space:nowrap;border:1px solid #285039;background:#0a1b10;color:var(--bright);font:10px ui-monospace,SFMono-Regular,Consolas,monospace;letter-spacing:.08em;padding:8px 10px;text-decoration:none;cursor:pointer}.home-link:hover,.home-link:focus-visible{border-color:var(--green);background:#102118;outline:none}.game-nav .nav-label{margin-right:auto}
header{display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line);padding:0 0 12px;letter-spacing:.12em}.brand{font-size:clamp(13px,2.2vw,18px);font-weight:bold;color:var(--green)}.status{font-size:10px;color:var(--yellow);letter-spacing:.16em}
.intro{display:flex;justify-content:flex-start;gap:12px;color:var(--muted);font-size:11px;line-height:1.6}.intro b{color:var(--bright)}
.stage{position:relative;width:min(100%,800px);margin-inline:auto}.reels{display:grid;width:100%;margin:0;grid-template-columns:repeat(7,minmax(0,1fr));gap:clamp(6px,1.4vw,14px);flex:0 0 auto;min-height:0;align-items:stretch}.lane{min-width:0;display:flex;flex-direction:column;gap:8px}.lane.active .window{border-color:var(--green);box-shadow:0 0 15px #48db8226}.lane.locked .window{border-color:#34794b}.lane-head{height:20px;text-align:center;white-space:nowrap}.lane-name{font-size:clamp(11px,1.25vw,13px);color:var(--green);letter-spacing:.1em}.lane-state{display:block;font-size:clamp(7px,.85vw,9px);font-weight:bold;color:var(--yellow);letter-spacing:.04em}.lane.active .lane-name{color:var(--bright)}.lane.locked .lane-name{color:var(--yellow)}
.window{height:clamp(280px,44vh,360px);position:relative;overflow:hidden;cursor:pointer;border:1px solid #10271b;background:#040a0b;transition:border-color .12s,box-shadow .12s}.window:before,.window:after{content:"";position:absolute;left:0;right:0;height:22%;z-index:1;pointer-events:none}.window:before{top:0;background:linear-gradient(#03090a,transparent)}.window:after{bottom:0;background:linear-gradient(transparent,#03090a)}.payline{position:absolute;z-index:2;left:0;right:0;top:50%;height:2px;transform:translateY(-50%);background:#48db82a0;box-shadow:0 0 7px #48db8240;pointer-events:none}.payline:before,.payline:after{position:absolute;top:50%;transform:translateY(-50%);padding:0 2px;background:#040a0b;color:var(--green);font-size:18px;font-weight:bold;line-height:1;z-index:1}.payline:before{content:"[";left:calc(50% - 35px)}.payline:after{content:"]";right:calc(50% - 35px)}.symbols{position:absolute;left:0;right:0;bottom:auto;will-change:transform;transform:translate3d(0,0,0);animation:reel-roll var(--roll-duration) linear infinite paused}.reels.spinning .symbols{animation-play-state:running}.lane.locked .symbols{animation-play-state:paused}@keyframes reel-roll{to{transform:translate3d(0,var(--roll-distance),0)}}.symbol{position:absolute;left:0;right:0;display:grid;place-items:center;font-size:clamp(13px,1.55vw,18px);font-weight:bold;letter-spacing:.06em;color:#28563a;text-shadow:0 0 8px #48db821c}.symbol.target-code{color:#8a8243;text-shadow:0 0 9px #e3dc6420}.symbol.center-target{color:var(--yellow);text-shadow:0 0 12px #e3dc6460}
.symbols{will-change:transform}.readout{display:flex;justify-content:center;gap:22px;margin-top:6px;color:var(--green);font-size:10px;font-weight:bold;letter-spacing:.1em;min-height:16px}.readout b{color:var(--bright)}.bottom{display:flex;align-items:center;gap:14px;flex-wrap:wrap;border-top:1px solid var(--line);padding-top:10px}.prompt{font-size:10px;color:var(--muted);letter-spacing:.08em}.key{color:var(--bright);font-size:10px;letter-spacing:.08em}.ttl{margin-left:auto;color:var(--green);font-size:10px;font-weight:bold;letter-spacing:.1em}.feedback{min-height:0;font-size:10px;color:var(--yellow);letter-spacing:.08em}
.overlay{position:absolute;inset:0;background:#020607ad;display:grid;place-items:center;padding:18px;z-index:3}.card{width:min(100%,460px);background:#07100f;border:1px solid #28613c;padding:28px;text-align:center;box-shadow:0 0 40px #42ff8812}.eyebrow{font-size:10px;color:var(--green);letter-spacing:.24em}h1{font-size:clamp(23px,5vw,34px);margin:14px 0;letter-spacing:.06em;color:#d7ffe1}p{font-size:13px;color:#8bb79a;line-height:1.65;margin:0 0 22px}.go{background:var(--green);border:0;color:#041008;font:bold 12px ui-monospace,monospace;letter-spacing:.14em;padding:13px 24px;cursor:pointer}
.overlay.result-success{background:rgba(2,15,7,.93)}.overlay.result-failure{background:rgba(20,3,6,.94)}.overlay.result-success .card{border-color:#48db82;box-shadow:0 0 0 2px #48db8240,0 0 56px #48db8230}.overlay.result-failure .card{border-color:#ff6273;box-shadow:0 0 0 2px #ff627340,0 0 56px #ff627330}.overlay.result-success .card:before,.overlay.result-failure .card:before{display:block;padding:9px 12px;font-size:12px;font-weight:800;letter-spacing:.18em;margin-bottom:4px}.overlay.result-success .card:before{content:"✓  SUCCESS";color:#a1ffb9;background:#123b25;border:1px solid #48db82}.overlay.result-failure .card:before{content:"✕  FAILED";color:#ffc0c6;background:#401319;border:1px solid #ff6273}.overlay.result-success .go{background:#62ff91;color:#041008}.overlay.result-failure .go{background:#ff6273;color:#190408}
@media(max-width:600px){body{padding:7px}.app{min-height:0;padding:10px;gap:10px}.reels{gap:4px}.window{height:clamp(230px,38vh,300px)}.lane{gap:6px}.lane-head{height:19px}.lane-name{font-size:9px}.lane-state{font-size:6px}.symbol{height:34px;font-size:clamp(10px,2.8vw,14px)}.payline:before{left:calc(50% - 29px)}.payline:after{right:calc(50% - 29px)}.payline:before,.payline:after{font-size:15px}.intro{font-size:9px}.readout{gap:12px;font-size:8px}.game-nav{gap:6px;padding:6px}.home-link,.game-select{padding:7px 6px;font-size:8px}.feedback,.prompt,.key,.ttl{font-size:8px}}
