:root{color-scheme:dark;--bg:#060d1c;--panel:#0c172b;--line:#203550;--cyan:#73e6ff;--orange:#ffba65;--muted:#9baec6;--white:#ecf4ff}*{box-sizing:border-box}body{margin:0;background:radial-gradient(ellipse at 50% 5%,#14223e 0,transparent 55%),var(--bg);color:var(--white);font:16px/1.6 system-ui,-apple-system,'Noto Sans CJK TC','Microsoft JhengHei',sans-serif}main{max-width:760px;margin:auto;padding:24px 28px}button,input,select{font:inherit}button{cursor:pointer;touch-action:manipulation}button:disabled{opacity:.4;cursor:default}button:focus-visible,input:focus-visible,select:focus-visible,canvas:focus-visible{outline:3px solid var(--cyan);outline-offset:3px}button,select{color:var(--white)}.masthead{display:flex;justify-content:space-between;align-items:center;gap:10px;margin:6px 0 22px}.eyebrow{font-size:10px;font-weight:700;letter-spacing:2.4px;color:var(--muted)}.eyebrow span{padding:0 5px;color:var(--orange)}h1{font-size:clamp(22px,4.6vw,34px);line-height:1.3;margin:9px 0 4px;font-weight:900;letter-spacing:.02em;color:var(--orange)}h1 span{color:var(--white);margin-left:5px}.subtitle{font-size:13px;color:var(--muted);margin:0}.tools{display:flex;gap:6px;align-self:flex-start;margin-top:20px}.icon{width:38px;height:38px;background:#0c192c;border:1px solid #30435f;border-radius:10px;font-size:18px;display:grid;place-items:center;padding:0}.icon:hover{border-color:var(--cyan)}#language{font-size:12px;font-weight:800}.arena-wrap{max-width:600px;margin:auto;border:1px solid #315175;border-radius:18px;overflow:hidden;box-shadow:0 20px 80px #0006;background:#060d19}.hud{padding:12px 17px;display:grid;grid-template-columns:1.2fr 1fr .8fr 1fr auto;gap:10px;background:linear-gradient(110deg,#172940,#0d192b);align-items:center}.hud small{display:block;font-size:10px;color:#a1b7d2;letter-spacing:1px}.hud strong{font-size:21px;line-height:1.4;font-variant-numeric:tabular-nums}.hud em{font-size:12px;font-style:normal;color:var(--muted)}#scoreHud{color:var(--orange)}#comboHud{color:var(--cyan)}#timeHud{font-size:17px}.stage-meta{display:flex;justify-content:space-between;gap:10px;background:#0c192b;padding:6px 17px;font-size:11px;letter-spacing:1px}.stage-meta span:last-child{color:var(--cyan);font-variant-numeric:tabular-nums}.progress{height:3px;background:#142236}.progress i{display:block;width:0;height:100%;background:linear-gradient(90deg,#379ac8,#9df7ff);transition:width .2s}.viewport{position:relative;aspect-ratio:600/880;max-height:calc(100svh - 305px);min-height:330px;width:100%;overflow:hidden;background:#050d1c}.viewport canvas{display:block;width:100%;height:100%;touch-action:none;object-fit:contain;outline-offset:-4px!important}.shield{position:absolute;top:12px;left:15px;pointer-events:none;font-size:10px;color:#b1cbe0}.shield div{color:var(--cyan);font-size:15px;letter-spacing:3px;line-height:1.2}.route{position:absolute;right:15px;top:14px;display:flex;gap:6px;pointer-events:none}.route span{border:1px solid #4a6486;background:#112238b8;width:15px;height:6px;transform:skew(-25deg)}.route span.done{background:var(--cyan);box-shadow:0 0 8px #73e6ff5c}.overlay{position:absolute;inset:0;display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center;background:linear-gradient(180deg,#0711266e,#071126ed 37%,#071126f5);padding:25px 28px;backdrop-filter:blur(3px);z-index:5}.tag{font-size:10px;letter-spacing:3px;color:var(--cyan);font-weight:800;margin:5px 0 16px}.overlay h2{font-size:clamp(28px,4.5vw,42px);line-height:1.35;margin:0 0 14px;font-weight:900}.overlay p{font-size:14px;margin:0 0 15px;color:#bdcfe4}.sample{display:flex;align-items:center;justify-content:center;gap:16px;margin:0 0 16px;color:#bcefff;font-size:18px}.sample span:first-child{display:grid;place-items:center;width:52px;height:52px;background:#102a40;border:1px solid #69ccf2;border-radius:15px;font-size:27px;font-weight:800}.sample b{color:var(--muted);font-weight:400}.overlay .rules{font-size:12px;line-height:1.9;color:#9baec6}.overlay form{width:min(100%,310px);display:grid;gap:10px}.overlay input{background:#0e223a;border:1px solid #3c5778;padding:12px 16px;border-radius:10px;color:var(--white);text-align:center;width:100%;min-width:0;font-size:16px}.primary{padding:13px 20px;border:0;border-radius:10px;background:linear-gradient(100deg,#96ebfc,#60c9ec);color:#052035;font-weight:850;box-shadow:0 5px 23px #51bcf02b}.primary:hover{filter:brightness(1.1)}.secondary{padding:6px 12px;border:1px solid #344c6e;border-radius:8px;background:#101f34;color:#cae1f7}.connection{font-size:11px!important;color:#8ba1bd!important;margin:10px 0 0!important;line-height:1.6!important;overflow-wrap:anywhere}.error{color:#ffae9a!important;font-size:12px!important}.compact{background:#071126e8}.result-score{font-size:60px;font-weight:900;color:var(--orange);line-height:1.2;margin:8px 0 20px}.result-actions{display:flex;flex-wrap:wrap;justify-content:center;gap:10px;margin-top:25px}.result .tag{margin-bottom:20px}.flight-bottom{display:flex;gap:7px;align-items:center;font-size:10px;color:#adc0d6;padding:10px 14px;background:#101d30}.kbd{margin-left:auto;color:#6d85a4;font-size:9px;white-space:nowrap}.live-dot{width:5px;height:5px;border-radius:50%;background:var(--cyan);display:inline-block;flex-shrink:0;box-shadow:0 0 8px #70ddff6b}.toast{position:absolute;left:10%;right:10%;top:28%;text-align:center;pointer-events:none;color:var(--white);font-size:23px;font-weight:800;text-shadow:0 2px 12px #000;z-index:4}.comms{max-width:600px;margin:16px auto 30px;background:#0c182a;border:1px solid #22364e;border-radius:12px;padding:14px 17px}.section-label{display:flex;justify-content:space-between;align-items:center;color:#83c5dc;font-size:10px;letter-spacing:2px;margin-bottom:8px}#mathFeed{min-height:52px}#mathFeed p{margin:3px 0;font-size:12px;line-height:1.6}#mathFeed .formula{font-size:16px;font-weight:750;letter-spacing:.4px;color:var(--white)}#mathFeed .reason{color:#9fb5ce}#mathFeed.wrong{border-left:2px solid #ffb186;padding-left:10px}.feed-idle{color:var(--muted)}.leaderboard{max-width:600px;margin:0 auto 26px}.board-head{display:flex;justify-content:space-between;align-items:center;gap:15px}.board-head h2{font-size:23px;margin:5px 0 8px}.board-head .eyebrow{font-size:9px;letter-spacing:2px}.board-head select{font-size:12px;background:#101f34;border:1px solid #314967;border-radius:9px;padding:8px 10px;max-width:46%}.table-wrap{overflow-x:auto}table{width:100%;border-collapse:collapse;font-size:12px;margin-top:12px;text-align:left;white-space:nowrap}th{font-size:10px;color:#8198b5;font-weight:500;letter-spacing:1px}th,td{padding:11px 8px;border-bottom:1px solid #1d2d43}td:nth-child(2){max-width:160px;overflow:hidden;text-overflow:ellipsis;color:#d6e6fa}td:nth-child(3){color:var(--orange);font-weight:800}td:nth-child(5){font-size:10px;color:var(--muted)}.pagination{display:flex;justify-content:center;align-items:center;gap:20px;font-size:11px;color:var(--muted);margin-top:15px}.pagination button{padding:2px 12px}footer{max-width:600px;margin:auto;padding:16px 0 10px;border-top:1px solid #1d3049;color:#7187a3;font-size:10px;display:flex;gap:6px;flex-wrap:wrap}footer a{color:#9eb5ce;text-decoration:none}footer span{margin-left:auto}.sr-only{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}[hidden]{display:none!important}.arena-wrap:fullscreen{border:0;border-radius:0;background:#060d19;display:flex;flex-direction:column;align-items:center;width:100%;height:100%}.arena-wrap:fullscreen .hud,.arena-wrap:fullscreen .stage-meta,.arena-wrap:fullscreen .progress,.arena-wrap:fullscreen .flight-bottom{width:min(100%,600px)}.arena-wrap:fullscreen .viewport{height:calc(100dvh - 140px);width:min(100%,600px);min-height:0;max-height:none;flex:1}
@media(max-width:520px){main{padding:14px 12px}.masthead{margin:0 2px 16px}.eyebrow{font-size:8px;letter-spacing:1.5px}.tools{gap:4px;margin-top:17px}.icon{width:32px;height:34px;font-size:16px}h1{font-size:23px}h1 span{display:block;margin-left:0}.subtitle{font-size:11px}.hud{padding:9px 11px;gap:6px}.hud strong{font-size:19px}.hud small{font-size:9px}.hud #timeHud{font-size:15px}.viewport{max-height:calc(100svh - 265px);min-height:330px}.overlay{padding:18px 20px}.overlay h2{font-size:29px}.overlay .rules{font-size:11px}.overlay p{font-size:12px}.sample{margin-bottom:10px}.tag{margin-bottom:12px}.flight-bottom{font-size:9px;padding:8px 10px}.kbd{display:none}.stage-meta{padding:5px 12px;font-size:10px}.shield{left:10px;top:8px}.shield div{font-size:12px}.route{right:10px;top:10px;gap:4px}.route span{width:13px}.comms{padding:12px 14px}#mathFeed .formula{font-size:14px}.board-head h2{font-size:21px}td,th{padding:9px 5px}.result-score{font-size:48px}.overlay .connection{font-size:10px!important}.primary{padding:11px 16px}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;transition:none!important}}

.math-inline{position:absolute;bottom:3px;left:5%;right:5%;text-align:center;pointer-events:none;background:linear-gradient(90deg,transparent,#07172be8 15%,#07172be8 85%,transparent);color:#d9f5ff;font-size:11px;padding:4px 8px;text-shadow:0 1px 4px #000;border-radius:6px}

/* v1.0.1: the launch form lives in document flow, outside the fixed-height arena. */
.arena-wrap.is-intro > .hud,.arena-wrap.is-intro > .stage-meta,.arena-wrap.is-intro > .progress,.arena-wrap.is-intro > .viewport,.arena-wrap.is-intro > .input-controls,.arena-wrap.is-intro > .flight-bottom{display:none}
.intro.overlay{position:relative;inset:auto;overflow:visible;min-height:0;padding:30px 24px;background:linear-gradient(145deg,#152c46,#08182c 65%);backdrop-filter:none}
.intro h2{font-size:clamp(26px,4vw,34px)}
.overlay > *{flex-shrink:0}
.overlay:not(.intro){overflow-y:auto;overscroll-behavior:contain;justify-content:flex-start;scrollbar-width:thin}
.overlay:not(.intro)::before,.overlay:not(.intro)::after{content:"";flex:1 0 0;min-height:0}
.input-controls{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:10px 14px;background:#102139;border-top:1px solid #28415e}
.input-help{display:grid;gap:2px;min-width:0;text-align:left}
.input-help strong{font-size:12px;color:#c9efff;line-height:1.45}
.input-help span{font-size:10px;color:#96afca;line-height:1.45}
.fire-button{flex:none;display:flex;flex-direction:column;align-items:center;justify-content:center;min-width:108px;min-height:58px;padding:7px 15px;background:linear-gradient(120deg,#a6efff,#6dcced);color:#092338;border:1px solid #bbf6ff;border-radius:12px;touch-action:none;user-select:none;-webkit-user-select:none;font-weight:850;box-shadow:0 4px 15px #39a7cd1b}
.fire-button span{font-size:17px;line-height:1.2;letter-spacing:1px}
.fire-button small{font-size:8px;line-height:1.5;letter-spacing:.6px}
.fire-button[aria-pressed="true"]{background:#ffd18b;border-color:#ffe6bf;box-shadow:0 0 20px #ffbd4e40}
.arena-wrap:not(.is-intro) .viewport{max-height:calc(100svh - 385px);min-height:300px}
.arena-wrap:fullscreen > .input-controls{width:min(100%,600px)}
.arena-wrap:fullscreen:not(.is-intro) .viewport{flex:1;min-height:0;max-height:none}
.arena-wrap.is-intro:fullscreen{overflow-y:auto;display:block}.arena-wrap.is-intro:fullscreen .intro{min-height:100%;max-width:600px;margin:auto}
@media(max-width:520px){.intro.overlay{padding:24px 18px}.intro h2{font-size:28px}.intro .rules{font-size:11px}.input-controls{padding:8px 10px;gap:10px}.fire-button{min-width:94px;min-height:54px}.input-help strong{font-size:11px}.input-help span{font-size:9px}.arena-wrap:not(.is-intro) .viewport{max-height:calc(100svh - 340px);min-height:300px}.arena-wrap:fullscreen:not(.is-intro) .viewport{max-height:none;min-height:0}}
