.hud{pointer-events:none;position:absolute;inset:0}.mission{text-shadow:0 2px 14px #000;max-width:350px;position:absolute;top:125px;left:42px}.mission h2{margin:12px 0;font-size:25px;font-weight:500}.mission p{color:#d2d9d8;max-width:300px;font-size:12px;line-height:1.8}.mission-progress{color:#c2c9c7;letter-spacing:1px;margin-top:20px;font-size:10px}.mission-progress #hits{color:#eac78d;margin-right:6px;font-size:20px}.separator{color:#8b9a9a;padding:0 15px}.score{text-align:right;text-shadow:0 2px 14px #000;position:absolute;top:124px;right:42px}.score>span{color:#c5ceca;letter-spacing:3px;font-size:10px}.score strong{letter-spacing:2px;font-variant-numeric:tabular-nums;margin-top:6px;font-size:40px;font-weight:400;display:block}.score small{color:#d8bc85;margin-top:7px;font-size:10px;display:block}.condition{width:155px;position:absolute;bottom:64px;left:42px}.condition>span{color:#c0cecc;font-size:11px}.condition b{float:right;color:#fff;font-weight:500}.condition>div{background:#cad3ce30;height:3px;margin:13px 0}.condition i{background:#d9bd88;width:100%;height:100%;transition:width .2s;display:block}.condition small{color:#9aabaa;letter-spacing:1px;font-size:10px}.speedometer{text-align:right;text-shadow:0 2px 14px #000;width:200px;position:absolute;bottom:61px;right:42px}.speedometer>span:first-child{color:#e2c995;margin-right:16px;font-size:16px}.speedometer strong{letter-spacing:-5px;font-variant-numeric:tabular-nums;font-size:84px;font-weight:300;line-height:1}.speed-unit{letter-spacing:3px;color:#bdcac8;margin-top:8px;font-size:9px;display:block}.speed-line{background:#cad3ce30;height:2px;margin-top:15px}.speed-line i{background:#e2c995;width:0;height:100%;display:block}.key-guide{white-space:nowrap;color:#b4c0be;font-size:10px;position:absolute;bottom:29px;left:50%;transform:translate(-50%)}kbd{color:#e3e7dd;border:1px solid #bdc6c34a;border-radius:3px;margin-left:13px;margin-right:4px;padding:3px 5px;font-family:inherit;font-size:9px}#target-marker{text-align:center;color:#ffdaa0;text-shadow:0 2px 8px #000;white-space:nowrap;position:absolute;top:0;left:0;transform:translate(-50%,-100%)}#target-marker span{letter-spacing:2px;background:#302a1dc9;border:1px solid #f2cb8170;border-radius:3px;padding:7px;font-size:10px}#target-marker strong{margin-left:5px;font-size:11px}#target-marker i{font-size:32px;font-style:normal;line-height:24px;display:block}#toast{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);color:#f3e8d0;opacity:0;pointer-events:none;text-align:center;z-index:5;background:#152225dd;border:1px solid #ebd4a150;border-radius:4px;max-width:85vw;padding:14px 23px;font-size:14px;transition:all .2s;position:absolute;top:25%;left:50%;transform:translate(-50%,12px)}#toast.visible{opacity:1;transform:translate(-50%)}#toast.success{color:#f4d597;border-color:#e8c07e99}#impact-flash{pointer-events:none;opacity:0;z-index:1;position:absolute;inset:0;box-shadow:inset 0 0 120px #e2693977}dialog{color:#eeeae0;background:#172226f5;border:1px solid #b5c5c331;border-radius:9px;width:420px;max-width:90vw;padding:36px;box-shadow:0 30px 120px #0008}dialog::backdrop{-webkit-backdrop-filter:blur(7px);backdrop-filter:blur(7px);background:#071014a6}dialog h2{margin:15px 0;font-size:30px;font-weight:500}dialog p{color:#a8b9b6;font-size:12px;line-height:1.8}#settings{margin:25px 0}#settings label{border-bottom:1px solid #c5cecb18;justify-content:space-between;align-items:center;padding:12px 0;font-size:12px;display:flex}input[type=checkbox]{accent-color:#dec491;width:17px;height:17px}select{color:#dfdccc;background:#26363b;border:1px solid #cad4d130;border-radius:3px;padding:7px;font-size:11px}.dialog-actions{gap:10px;display:grid}.dialog-actions .primary{justify-content:center}.secondary{background:#ffffff08;border:1px solid #b9c8c536;border-radius:3px;padding:14px}.secondary:hover{background:#ffffff13}.text-button{color:#9faeac;background:0 0;padding:13px;font-size:11px}#result-stats{gap:27px;padding:18px 0 25px;display:flex}#result-stats strong{color:#e3c790;font-size:27px;font-weight:400;display:block}#result-stats span{color:#b4bfbb;font-size:10px}.touch-controls{display:none}.fatal-message{z-index:20;background:#132025;place-content:center;gap:14px;padding:30px;display:grid;position:absolute;inset:0}.fatal-message h1{font-size:30px}.fatal-message p{color:#bbcbc8;max-width:500px;line-height:1.8}.fatal-message button{max-width:200px}@media (max-height:780px) and (min-width:800px){.intro{width:360px;top:14%}h1{margin:16px 0;font-size:43px}.intro-copy{margin:12px 0 17px;font-size:12px}.scenario{padding:10px 15px}.scenario small{margin-top:4px}#start-button{margin-top:16px;padding:14px 20px}.disclaimer{margin-top:10px}.topbar{padding-top:22px}}@media (max-width:800px){.topbar{padding:20px}.brand{letter-spacing:2px;gap:10px;font-size:9px}.brand small{font-size:8px}.quiet{padding:10px;font-size:10px}.intro{width:350px;max-width:86vw;top:16%;left:7%}.intro-aside{display:none}h1{font-size:44px}.vignette{background:linear-gradient(90deg,#0b1417ec,#0b141790)}.mission{max-width:230px;top:95px;left:20px}.mission h2{font-size:20px}.mission p{max-width:220px;font-size:10px}.score{top:97px;right:20px}.score strong{font-size:30px}.score small{max-width:100px;font-size:9px}.condition{width:120px;bottom:110px;left:20px}.speedometer{width:135px;bottom:110px;right:20px}.speedometer strong{font-size:58px}.key-guide{display:none}.touch-controls{pointer-events:auto;justify-content:space-between;display:flex;position:absolute;bottom:23px;left:20px;right:20px}.touch-controls>div{gap:10px;display:flex}.touch-controls button{touch-action:none;-webkit-user-select:none;user-select:none;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#19292eaa;border:1px solid #ccd6d446;border-radius:7px;width:58px;height:54px}.touch-controls button:active{background:#ddbf8966}.intro .disclaimer{font-size:9px}}@media (max-height:540px){.intro{width:360px;max-width:52vw;top:90px}.intro .eyebrow,.intro-copy,.intro-aside,.disclaimer{display:none}h1{margin:0 0 12px;font-size:27px}h1 br{display:none}.scenario{padding:7px 13px}.scenario small{display:none}.scenario-list{gap:5px}#start-button{margin-top:12px;padding:11px 20px}.mission,.score{top:85px}.condition,.speedometer{bottom:95px}dialog{max-height:92vh;padding:23px;overflow:auto}}.target-readout{color:#d6e7ec;background:#172a35c9;border-left:2px solid #b0c9d7;padding:9px 12px;font-size:11px;line-height:1.6}.target-readout.active{color:#ffdaa0;background:#302a1dc9;border-color:#ffdaa0}#target-marker.warning{color:#d6e7ec}#target-marker.warning span{background:#172a35c9;border-color:#b0c9d780}.intro-controls{color:#c2c5b6;letter-spacing:.5px;margin-top:13px;font-size:10px}input[type=range]{accent-color:#ddbf89;width:112px}dialog{max-height:90vh;overflow:auto}@media (max-height:540px){.intro-controls{margin-top:8px;font-size:9px}}@media (prefers-reduced-motion:reduce){*{transition:none!important}.spinner{animation:none}}*{box-sizing:border-box}:root{color:#eeeae0;font-synthesis:none;background:#141c20;font-family:Inter,PingFang SC,Microsoft YaHei,sans-serif;font-weight:400}html,body,#app{width:100%;height:100%;margin:0;overflow:hidden}button,select,input{font:inherit}button{cursor:pointer}button:disabled{opacity:.55;cursor:wait}button:focus-visible,a:focus-visible,select:focus-visible{outline-offset:5px;outline:2px solid #e7c286}[hidden]{display:none!important}#viewport{position:absolute;inset:0}canvas{width:100%;height:100%;display:block}button{color:inherit;border:0}a{color:inherit;text-decoration:none}.vignette{pointer-events:none;background:linear-gradient(90deg,#0b1417f2,#0b1417bf 30%,#0b141726 65%),linear-gradient(#0910134d,#0000 30% 75%,#091013bf);position:absolute;inset:0}.playing .vignette{background:linear-gradient(#07101461,#0000 32% 77%,#071014bf)}.topbar{z-index:3;justify-content:space-between;align-items:center;padding:29px 42px;display:flex;position:absolute;top:0;left:0;right:0}.brand{letter-spacing:3px;align-items:center;gap:16px;font-size:12px;font-weight:650;display:flex}.brand small{color:#a9b1b1;letter-spacing:2px;margin-top:7px;font-size:10px;font-weight:400;display:block}.brand-mark{letter-spacing:-4px;font-size:29px;font-style:italic}.brand-mark span{color:#d9b77a;margin:0 3px}nav{gap:10px;display:flex}.quiet{-webkit-backdrop-filter:blur(15px);backdrop-filter:blur(15px);letter-spacing:1px;background:#14232988;border:1px solid #ffffff20;border-radius:3px;padding:12px 18px;font-size:12px}.quiet:hover{background:#294049bb}.intro{width:390px;max-width:45vw;position:absolute;top:17%;left:7%}.eyebrow{letter-spacing:2.5px;color:#cdb98e;font-size:9px;font-weight:600}.live-dot{background:#d8ba85;border-radius:50%;width:5px;height:5px;margin-right:8px;display:inline-block}h1{letter-spacing:-1px;margin:22px 0;font-size:clamp(38px,4.1vw,66px);font-weight:500;line-height:1.25}h1>span{color:#d7b27c}.intro-copy{color:#a5b1b2;margin-bottom:24px;font-size:13px;line-height:1.9}.scenario-list{gap:8px;display:grid}.scenario{text-align:left;background:#22313945;border:1px solid #cad6d315;border-radius:4px;align-items:center;gap:17px;width:100%;padding:13px 17px;transition:all .2s;display:flex}.scenario.selected{background:#d3b78415;border-color:#d3b78488}.scenario:hover{background:#d3b78422}.scenario-index{color:#9f9f92;font-size:11px}.scenario strong{font-size:13px;font-weight:500}.scenario small{color:#9eaaa9;margin-top:6px;font-size:10px;display:block}.scenario-arrow{color:#dfbc80;margin-left:auto;font-size:21px}.primary{color:#202829;background:#ddbf89;border:1px solid #e9cea1;border-radius:3px;justify-content:space-between;align-items:center;gap:25px;padding:17px 23px;font-weight:600;transition:background .2s;display:flex}.primary:hover{background:#eed2a0}#start-button{width:100%;margin-top:22px}.disclaimer{color:#839394;margin-top:15px;font-size:9px;line-height:1.9}.intro-aside{text-align:right;position:absolute;bottom:13%;right:7%}.intro-aside>span{letter-spacing:3px;color:#fff9df;font-size:10px}.intro-aside h2{letter-spacing:5px;margin:19px 0;font-size:clamp(32px,4.5vw,70px);font-weight:300;line-height:1.08}.intro-aside>div{letter-spacing:1px;color:#c4cecc;font-size:10px}.intro-aside i{vertical-align:middle;background:#c4cecc;width:16px;height:1px;margin:0 12px;display:inline-block}.loading{color:#c8c9bf;align-items:center;gap:12px;font-size:11px;display:flex;position:absolute;bottom:26px;left:42px}.spinner{border:1px solid #777;border-top-color:#d9b77a;border-radius:50%;width:13px;height:13px;animation:1s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}
