:root{--bg: #100e0c;--ink: #f4efe6;--muted: #b3a89c;--line: rgba(244, 239, 230, .12);--you: #6dffb0;--you-deep: #0c7a45;--rival: #ff572e;--gold: #ffc14a;--danger: #ff3d55;--violet: #d2b4ff;--ok: #c6ff7a;--paper: #f6f1e7;--paper-ink: #1c1612;--sans: "Noto Sans TC", "PingFang TC", "Microsoft JhengHei", sans-serif;--mono: "Chivo Mono", ui-monospace, SFMono-Regular, Menlo, monospace;--who: 96px;--score: 92px;--lane-gap: 14px;color-scheme:dark}*{box-sizing:border-box}[hidden]{display:none!important}html,body{margin:0;min-height:100%}body{font-family:var(--sans);color:var(--ink);background:radial-gradient(900px 420px at 50% -8%,rgba(255,206,140,.16),transparent 60%),radial-gradient(700px 380px at 0% 30%,rgba(109,255,176,.05),transparent 55%),radial-gradient(700px 380px at 100% 36%,rgba(255,87,46,.06),transparent 55%),var(--bg)}button,p,h1,h2,ul{margin:0}button{font:inherit;color:inherit;-webkit-tap-highlight-color:transparent}:focus-visible{outline:2px solid var(--gold);outline-offset:3px}#app{width:min(1120px,calc(100% - 28px));margin:0 auto;min-height:100vh;padding:14px 0 28px;display:flex;flex-direction:column;gap:12px}#top-bar{position:relative;display:grid;grid-template-columns:auto auto minmax(0,1fr) auto;gap:14px 18px;align-items:center;padding:8px 2px 10px}#top-bar:before{content:"";position:absolute;left:6%;right:18%;top:0;height:3px;border-radius:999px;background:linear-gradient(90deg,transparent,#fff4cc,#b9ffd8,#fff4cc,transparent);box-shadow:0 0 16px #fff4ccbf}.brand{display:flex;gap:10px;align-items:center}.brand-mark{width:42px;height:42px;display:grid;place-items:center;border-radius:12px;background:#1c1814;border:1px solid rgba(255,220,170,.25);font-weight:900;letter-spacing:.04em}.brand-name{font-weight:900;font-size:18px;line-height:1.1}.brand-sub{color:var(--muted);font-size:12px;letter-spacing:.08em}#beat-label{justify-self:center;font-family:var(--mono);font-size:14px;padding:6px 12px;border-radius:999px;background:#1b1714;border:1px solid var(--line)}.meters{display:flex;justify-content:flex-end;gap:16px;align-items:center}#meter-budget,#meter-strain{display:flex;align-items:center;gap:8px;min-height:36px}#meter-budget span,.strain-name{color:var(--muted);font-size:13px}#meter-budget strong{font-family:var(--mono);font-size:18px;color:var(--ok)}#meter-budget.is-low strong{color:var(--gold)}#meter-budget.is-broke strong{color:var(--danger)}.strain-track{width:112px;height:12px;border-radius:999px;background:#241c16;box-shadow:inset 0 0 0 1px #ffffff0f;overflow:hidden}.strain-fill{display:block;width:0%;height:100%;border-radius:inherit;background:linear-gradient(90deg,#ffc14a,#ff7a18 72%,#ff3b4e);transition:width .3s ease-out}#meter-strain.is-hot .strain-fill{box-shadow:0 0 12px #ff4632a6}#meter-strain.is-max .strain-num{color:var(--danger)}.strain-num{font-family:var(--mono);font-size:13px;min-width:52px}#btn-restart{border:1px solid var(--line);background:transparent;border-radius:999px;padding:6px 12px;color:var(--muted);cursor:pointer}#btn-restart:hover{color:var(--ink);border-color:#ffffff47}#race-track{--who: 96px;--score: 92px;--lane-gap: 14px;position:relative;flex:1 0 auto;min-height:52vh;display:flex;flex-direction:column;justify-content:center;gap:14px;padding:18px 18px 16px;border-radius:28px;border:10px solid #3a2a1c;background:radial-gradient(120% 90% at 50% 100%,rgba(0,0,0,.28),transparent 46%),linear-gradient(180deg,#20241f,#121614 42%,#0c0f0c);box-shadow:inset 0 0 0 2px #6d5136,inset 0 0 80px #00000059,0 24px 50px #00000061;overflow:hidden}.track-top,.lanes,.lane-meta,#gap-readout,.hermes-line{position:relative;z-index:2}.track-top{display:flex;align-items:baseline;gap:12px}.goal-kicker,.goal-end{font-family:var(--mono);font-size:12px;letter-spacing:.16em;color:#f7f3ea}.goal-end{margin-left:auto}.track-rule{color:var(--muted);font-size:13px;flex:1}.lanes{position:relative;display:grid;grid-template-columns:var(--who) minmax(0,1fr) var(--score);column-gap:var(--lane-gap);row-gap:18px;align-items:center}#goal-marker{position:absolute;top:-6px;bottom:-6px;right:calc(var(--score) + var(--lane-gap));width:14px;transform:translate(50%);border-radius:2px;background:repeating-linear-gradient(#f4f1ea 0,#f4f1ea 8px,#161616 8px,#161616 16px);box-shadow:0 0 16px #ffffff47;z-index:3;pointer-events:none}.who{display:flex;flex-direction:column;line-height:1}.who-k{font-family:var(--mono);font-size:11px;letter-spacing:.14em;color:var(--muted)}.who-n{font-weight:900;font-size:22px;margin-top:4px}.who-you .who-n{color:var(--you)}.who-rival .who-n{color:#ffb199}.rail{position:relative;height:64px;border-radius:999px;background:#090b09;box-shadow:inset 0 3px 10px #000000b8,inset 0 0 0 2px #ffffff0d;overflow:visible}.rail:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;border-radius:inherit;background:repeating-linear-gradient(90deg,rgba(255,255,255,.035) 0 12px,transparent 12px 28px);pointer-events:none;z-index:0}#you-bar,#rival-bar{position:absolute;left:0;top:0;bottom:0;width:0%;border-radius:inherit;transition:width .3s ease-out;z-index:1}#you-bar.is-gain,#rival-bar.is-gain{animation:gainPulse .42s ease-out}#race-track.is-frozen #you-bar,#race-track.is-frozen #rival-bar,#race-track.is-frozen .runner{transition:none}#you-bar{background:linear-gradient(90deg,#075c36,#1ea86a 58%,#d8ffe9);box-shadow:0 0 22px #6dffb052}#rival-bar{background:linear-gradient(90deg,#6d1c0c,#ef4316 62%,#ffd0c2);box-shadow:0 0 22px #ff572e52}.runner{position:absolute;z-index:2;top:50%;left:8px;width:40px;height:40px;margin:0;display:grid;place-items:center;border-radius:50%;transform:translateY(-50%);font-weight:900;transition:left .3s ease-out,transform .3s ease-out}.runner.is-moving{left:calc(var(--pct) * 1%);transform:translate(-100%,-50%)}.runner-you{background:#eafff4;color:#085233;box-shadow:0 0 0 3px #6dffb0d9,0 0 18px #6dffb08c}.runner-rival{background:#fff1ec;color:#8c240e;box-shadow:0 0 0 3px #ff7a56e6,0 0 18px #ff572e80}#you-rail.is-hold:after{content:"本拍唔跑";position:absolute;top:0;right:0;bottom:0;left:0;z-index:4;display:grid;place-items:center;border-radius:inherit;font-weight:900;letter-spacing:.14em;color:var(--gold);background:repeating-linear-gradient(-45deg,#100e0a33,#100e0a33 8px,#ffc14a29 8px,#ffc14a29 16px)}#hold-flash{position:absolute;top:0;right:0;bottom:0;left:0;z-index:6;display:grid;place-items:center;border-radius:inherit;font-weight:900;letter-spacing:.16em;color:#1a1204;background:#ffc14af0;opacity:0;pointer-events:none}#hold-flash.is-on{animation:holdFlash .7s ease-out}#rival-rail.is-danger #rival-bar,#rival-rail.is-danger .runner-rival{animation:dangerPulse .9s ease-in-out infinite}#rival-runner.is-pulse{animation:rivalPulse .7s ease-in-out infinite}#rival-runner.is-fade{animation:rivalFade .9s ease-out forwards}#rival-rail.is-critical #rival-bar,#rival-rail.is-critical .runner-rival{animation-duration:.42s}.score{font-family:var(--mono);font-weight:700;font-size:32px;line-height:1;text-align:right}.score-you{color:var(--you)}.score-rival{color:#ffb39f}.score.is-over:after{content:"超線";display:block;margin-top:4px;font-size:10px;letter-spacing:.14em;color:var(--gold)}.score.is-pop{animation:pop .3s ease-out}.lane-meta{display:grid;grid-template-columns:var(--who) minmax(0,1fr) var(--score);column-gap:var(--lane-gap);row-gap:2px}#you-sub,#rival-sub{grid-column:2;color:var(--muted);font-size:14px}#you-sub{color:#d9ffe9}#gap-readout{display:flex;justify-content:space-between;gap:12px;align-items:baseline;padding:12px 14px;border-radius:16px;background:#00000059;border:1px solid rgba(255,255,255,.06)}#gap-main{font-size:26px;font-weight:900;letter-spacing:.01em}#gap-sub{color:var(--muted);font-family:var(--mono);font-size:12px}#gap-readout.is-lead #gap-main{color:var(--you)}#gap-readout.is-danger #gap-main{color:var(--gold)}#gap-readout.is-critical{border-color:#ff3d558c;box-shadow:inset 0 0 24px #ff3d5529}#gap-readout.is-critical #gap-main{color:#ff8d98}#gap-readout.is-punch{animation:gapPunch .8s cubic-bezier(.2,.8,.2,1)}.hermes-line{position:absolute;top:16px;right:20px;z-index:5;margin:0;color:#9a9a9a;font-family:var(--mono);font-size:13px}#race-track.is-hermes .goal-end{visibility:hidden}#race-track.is-hermes{animation:scout 1.2s ease-in-out 2}#race-track.is-fired:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:radial-gradient(circle at center,transparent 42%,rgba(90,0,12,.38));pointer-events:none;z-index:1}#invest-panel{padding:4px 0 0}.panel-head{display:flex;justify-content:space-between;gap:12px;align-items:baseline;margin-bottom:10px}.panel-head h2{font-size:20px}.panel-head p{color:var(--muted);font-size:13px}.choices{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}#invest-panel button{text-align:left;border-radius:18px;padding:14px 14px 12px;background:linear-gradient(180deg,#2c261f,#191512);border:1px solid rgba(255,255,255,.08);box-shadow:0 8px #0a0908;cursor:pointer;min-height:132px;display:flex;flex-direction:column;gap:6px;transition:transform .12s ease,border-color .12s ease,filter .12s ease}#btn-hire{border-top:3px solid #8ecbff}#btn-tools{border-top:3px solid var(--you)}#btn-hold{border-top:3px solid var(--gold)}#btn-codex{border-top:3px solid var(--violet)}#invest-panel button:hover:not(:disabled){transform:translateY(-2px);border-color:#ffffff38}#invest-panel button:active:not(:disabled){transform:translateY(4px);box-shadow:0 3px #0a0908}#invest-panel button:disabled{cursor:not-allowed}#btn-codex.is-locked{background:repeating-linear-gradient(-45deg,#1a1613,#1a1613 8px,#241e19 8px,#241e19 16px);color:#c9bfb4}#btn-codex.is-locked .bt-title:after{content:" LOCKED";font-size:12px;letter-spacing:.14em;color:#8d8276}#btn-hire.is-maxed{opacity:.72}#btn-hire.is-maxed .bt-title:after{content:" · 已滿編";font-size:14px;color:#8d8276}#invest-panel button.is-risky{border-color:#ff3d55b3;box-shadow:0 8px #4a1020}#invest-panel button.is-pressed,#invest-panel button.is-pressed:hover,#invest-panel button.is-pressed:active{transform:translateY(7px);box-shadow:0 1px #0a0908;transition:none}#btn-hire.is-pressed{background:linear-gradient(180deg,#1a3d5c,#12283c)}#btn-tools.is-pressed{background:linear-gradient(180deg,#146043,#0d3d28)}#btn-hold.is-pressed{background:linear-gradient(180deg,#5c4510,#3a2c08)}#btn-codex.is-pressed{background:linear-gradient(180deg,#3d2460,#271640)}#invest-panel.is-dim{filter:grayscale(.45) brightness(.55);pointer-events:none;transition:filter .4s ease}.bt-top{display:flex;justify-content:space-between;align-items:center;color:var(--muted)}.bt-tag{font-family:var(--mono);font-size:11px;letter-spacing:.08em}.bt-title{font-size:20px;font-weight:900}.bt-sub{color:#ddd4c8;font-size:13px;line-height:1.45}.bt-now{margin-top:auto;font-family:var(--mono);font-size:12px;color:var(--gold)}kbd{font-family:var(--mono);font-size:11px;border:1px solid rgba(255,255,255,.2);border-bottom-width:2px;border-radius:4px;padding:0 5px}.log-wrap{background:#16130f;border:1px solid var(--line);border-radius:16px;padding:10px 14px 12px}.log-title{font-size:13px;color:var(--muted);margin-bottom:6px}#toast-log .empty-log{color:var(--muted);font-size:14px}#toast-log .beat+.beat{border-top:1px solid var(--line);margin-top:8px;padding-top:8px}.toast-line{font-family:var(--mono);font-size:13px;line-height:1.5;overflow-wrap:anywhere}.toast-note{color:var(--gold);font-size:14px;margin-top:4px}#footer-hint{display:grid;grid-template-columns:minmax(180px,240px) 1fr;gap:8px 18px;align-items:center;padding:4px 2px 0}.footer-kicker{color:var(--muted);font-size:12px;letter-spacing:.08em}.footer-next{font-family:var(--mono);font-size:20px;font-weight:700;color:#ffb199}.footer-flavor{color:var(--gold);font-size:13px}.script-row{display:flex;flex-wrap:wrap;gap:6px}.chip{font-family:var(--mono);font-size:13px;padding:4px 8px;border-radius:999px;background:#1c1814;color:var(--muted);border:1px solid transparent}.chip.is-done{color:#d7cec4;background:#2a241e}.chip.is-now{color:#1a100c;background:#ff8a62;border-color:#ffd0c2;font-weight:700}.footer-rule{grid-column:1 / -1;color:var(--muted);font-size:12px}.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:30;display:grid;place-items:center;padding:20px;background:#08060480;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}#modal-ending{align-items:end;background:linear-gradient(to top,rgba(8,6,4,.9),rgba(8,6,4,.28) 48%,transparent 72%);-webkit-backdrop-filter:none;backdrop-filter:none}.modal-card{width:min(580px,100%);max-height:min(92vh,860px);overflow:auto;background:var(--paper);color:var(--paper-ink);border-radius:24px;padding:26px 26px 22px;box-shadow:0 30px 80px #00000073}.paper-kicker,.stamp{font-family:var(--mono);letter-spacing:.14em;font-size:12px;font-weight:700}.modal-card h1{font-size:40px;line-height:1.05;margin:6px 0 8px}.modal-card h2{font-size:30px;line-height:1.2;margin:8px 0 12px}.deck{font-size:18px;font-weight:700}.deck.en,.title-lines,.time-note,.feel{color:#5e534a}.feel{margin-top:8px}.title-lines,.resource-list{padding-left:18px;margin-top:10px;display:grid;gap:4px}.resource-list b{font-weight:900}.time-note{margin-top:10px;font-size:14px}.btn-go{width:100%;margin-top:16px;border:0;border-radius:14px;background:#16130f;color:#f6f1e7;font-weight:900;font-size:18px;padding:14px 16px;cursor:pointer}.btn-go:hover{background:#2a231c}.stamp{display:inline-block;border:3px solid currentColor;padding:3px 8px;transform:rotate(-6deg)}.stamp-fired{color:#c5162c}.stamp-bankrupt{color:#a15c00}.stamp-win{color:#0c8a45}.stamp-retain{color:#8a5a00}.versus{display:grid;grid-template-columns:1fr auto 1fr;gap:8px;align-items:end;margin:8px 0 12px}.versus span{display:block;font-family:var(--mono);font-size:12px;letter-spacing:.08em;color:#6d6258}.versus b{font-family:var(--mono);font-size:clamp(42px,7vw,68px);line-height:.9}.versus div:first-child b{color:#0b7a40}.versus div:last-child b{color:#d14316}.vs{font-family:var(--mono);color:#8a7d72;padding-bottom:8px}.end-ceo{margin:2px 0 8px;font-size:18px;font-weight:700;line-height:1.45}#modal-ending.is-theater .end-ceo,#modal-ending.is-theater .versus,#modal-ending.is-theater #end-body,#modal-ending.is-theater #btn-again{opacity:0;transform:translateY(10px);transition:opacity .42s ease,transform .42s ease}#modal-ending.is-theater .end-ceo.is-on,#modal-ending.is-theater .versus.is-on,#modal-ending.is-theater #end-body.is-on,#modal-ending.is-theater #btn-again.is-on{opacity:1;transform:none}#modal-ending.is-theater #btn-again:not(.is-on){pointer-events:none}.end-line{font-size:16px;line-height:1.45;margin-top:6px}.end-fired{box-shadow:inset 0 6px #c5162c}.end-bankrupt{box-shadow:inset 0 6px #a15c00}.end-win{box-shadow:inset 0 6px #0c8a45}.end-retain{box-shadow:inset 0 6px #c48a22}#app.is-rupture{animation:shake .38s linear}@keyframes pop{0%{transform:scale(1.16)}to{transform:none}}@keyframes gainPulse{0%{filter:brightness(1.75)}to{filter:brightness(1)}}@keyframes holdFlash{0%{opacity:0}18%{opacity:1}68%{opacity:1}to{opacity:0}}@keyframes rivalPulse{0%,to{filter:brightness(1);box-shadow:0 0 0 3px #ff7a56e6,0 0 18px #ff572e80}50%{filter:brightness(1.85);box-shadow:0 0 0 7px #ff5a30f2,0 0 28px #ff3c14e6}}@keyframes rivalFade{to{filter:brightness(.28) saturate(.35);box-shadow:0 0 0 3px #ff7a561f}}@keyframes gapPunch{0%{transform:scale(.96)}35%{transform:scale(1.07)}to{transform:scale(1)}}@keyframes dangerPulse{0%,to{filter:brightness(1)}50%{filter:brightness(1.45)}}@keyframes shake{0%,to{transform:translate(0)}20%{transform:translate(-6px)}40%{transform:translate(6px)}60%{transform:translate(-3px)}80%{transform:translate(3px)}}@keyframes scout{0%,to{box-shadow:inset 0 0 0 2px #6d5136,0 24px 50px #00000061}50%{box-shadow:inset 0 0 80px #ff284659,inset 0 0 0 2px #8a3040,0 24px 50px #00000061}}@media(min-height:820px){.rail{height:76px}.runner{width:46px;height:46px;font-size:16px}}@media(max-width:980px){#top-bar{grid-template-columns:1fr auto;grid-template-areas:"brand restart" "beat beat" "meters meters"}.brand{grid-area:brand}#btn-restart{grid-area:restart;justify-self:end;width:max-content}#beat-label{grid-area:beat;justify-self:start}.meters{grid-area:meters;justify-content:space-between}.choices{grid-template-columns:1fr 1fr}#footer-hint{grid-template-columns:1fr}}@media(max-width:640px){#race-track{--who: 64px;--score: 64px;min-height:420px;border-width:7px}.who-n{font-size:16px}.rail{height:52px}.runner{width:32px;height:32px;font-size:13px}.score{font-size:22px}#gap-main{font-size:20px}#gap-readout{flex-direction:column}.choices{grid-template-columns:1fr}.panel-head{flex-direction:column}#invest-panel button{min-height:0}.track-rule{display:none}}#tut-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:45;pointer-events:none}#tut-hole{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1;pointer-events:none}#tut-hole *{pointer-events:none}#tut-dim{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;display:block}.tut-ring{position:fixed;border-radius:16px;box-shadow:0 0 0 3px #ffc14a,0 0 0 8px #ffc14a47;pointer-events:none}#tut-coach{position:fixed;z-index:2;width:min(420px,calc(100vw - 24px));max-height:calc(100vh - 24px);overflow:auto;padding:16px 16px 14px;border-radius:18px;background:#1b1714;color:var(--ink);border:1px solid rgba(255,193,74,.65);box-shadow:0 18px 50px #00000080;pointer-events:auto}#tut-coach.is-shake{animation:shake .38s linear;border-color:var(--danger)}.tut-kicker{font-family:var(--mono);font-size:12px;letter-spacing:.14em;color:var(--gold);margin-bottom:8px}#tut-zh{font-size:18px;font-weight:700;line-height:1.45}#tut-zh p+p{margin-top:4px}#tut-zh strong{color:var(--gold)}#tut-en{margin-top:8px;color:var(--muted);font-family:var(--mono);font-size:13px;line-height:1.4}.tut-actions{display:flex;gap:8px;margin-top:14px}#tut-skip,#tut-next{min-height:44px;cursor:pointer}#tut-skip{border:1px solid var(--line);background:transparent;border-radius:999px;padding:10px 14px;color:var(--muted)}#tut-skip:hover{color:var(--ink);border-color:#ffffff47}#tut-next{flex:1;border:0;border-radius:12px;background:var(--gold);color:#1a1204;font-weight:900;font-size:16px;padding:12px 14px}#tut-next:hover{filter:brightness(1.05)}#tut-toast{position:fixed;z-index:60;left:50%;top:18px;transform:translate(-50%);background:var(--gold);color:#1a1204;font-weight:900;font-size:18px;padding:10px 18px;border-radius:999px;box-shadow:0 12px 30px #00000059;pointer-events:none}.is-tut-target{outline:3px solid var(--gold);outline-offset:4px}#invest-panel button.is-tut-blocked,#invest-panel button.is-tut-blocked:hover,#invest-panel button.is-tut-blocked:active{transform:none;filter:saturate(.65) brightness(.72)}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}#modal-ending.is-theater .end-ceo,#modal-ending.is-theater .versus,#modal-ending.is-theater #end-body,#modal-ending.is-theater #btn-again{opacity:1!important;transform:none!important}}
