:root{color-scheme:dark;--navy:#091622;--panel:#112632;--panel-light:#172f3a;--line:#2b4650;--text:#eaf7f0;--muted:#9db6ba;--mint:#8bf3ca;--amber:#ffc575;--dark:#09261f;font-family:"Microsoft YaHei","PingFang SC",system-ui,sans-serif}
*{box-sizing:border-box}
body{margin:0;background:radial-gradient(ellipse at 15% 0%,#193c43 0,transparent 42%),radial-gradient(ellipse at 95% 70%,#172b38 0,transparent 46%),var(--navy);color:var(--text);min-height:100vh;min-height:100dvh}
button,select,a{-webkit-tap-highlight-color:transparent}
button,select{font:inherit}
button,a,select,canvas{outline-offset:4px}
button:focus-visible,a:focus-visible,select:focus-visible,canvas:focus-visible{outline:2px solid var(--amber)}
button{cursor:pointer;touch-action:manipulation}
button:disabled{cursor:default;opacity:.42}
button{border:0}
[hidden]{display:none!important}
.app{width:100%;max-width:450px;margin:0 auto;padding:12px 14px max(14px,env(safe-area-inset-bottom))}
.masthead{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:14px;min-height:48px}
.icon-button{width:46px;height:46px;min-width:46px;min-height:46px;border:1px solid var(--line);border-radius:16px;background:#122934;color:var(--text);display:flex;justify-content:center;align-items:center;text-decoration:none}
.back-link{font-size:24px;position:relative;padding-bottom:10px}
.back-word{font-size:9px;position:absolute;bottom:5px;letter-spacing:1px}
.help-button{font-size:20px;font-family:Georgia,serif;color:var(--mint)}
.brand{flex:1;text-align:center}
.eyebrow{font-size:9px;letter-spacing:1.5px;line-height:1.5;margin:0;color:var(--muted);font-weight:600}
h1{font-size:25px;letter-spacing:3px;line-height:1.35;margin:3px 0 0;font-weight:800;white-space:nowrap}
.brand-dot{display:inline-block;width:6px;height:6px;margin-left:4px;border-radius:50%;background:var(--amber);box-shadow:0 0 14px #ffc57590;vertical-align:middle}
.dispatch-card{background:linear-gradient(125deg,#16343e,#112932);border:1px solid #34515a;border-radius:20px 20px 6px 6px;padding:12px 16px 10px;position:relative}
.dispatch-heading{display:flex;align-items:center;justify-content:space-between}
.dispatch-heading .eyebrow{font-size:9px;letter-spacing:1.3px}
#level-number{margin-left:10px;color:var(--mint);font-variant-numeric:tabular-nums}
h2{font-size:20px;line-height:1.4;margin:4px 0 0;letter-spacing:1px}
.postmark{width:34px;height:36px;border:1px solid #ffc57580;outline:1px solid #ffc57538;outline-offset:3px;transform:rotate(9deg);text-align:center;color:var(--amber);font-size:11px;line-height:15px;padding-top:2px}
.resources{display:flex;align-items:center;justify-content:space-between;border-top:1px solid #35505a;margin-top:9px;padding-top:9px;gap:10px;font-size:12px}
.shot-count,.target-count{display:flex;align-items:center;gap:9px}
.small-label{color:var(--muted);font-size:10px;white-space:nowrap}
.resources strong{font-size:13px;font-weight:600;min-width:6px;font-variant-numeric:tabular-nums}
#shot-dots{display:flex;gap:5px}
.shot-dot{width:7px;height:7px;background:var(--mint);border:1px solid var(--mint);border-radius:50%;box-shadow:0 0 7px #8bf3ca40}
.shot-dot.used{background:transparent;border-color:#526e73;box-shadow:none}
.lamp-mini{width:9px;height:9px;border:1px solid var(--amber);transform:rotate(45deg);display:inline-block}
.board-section{margin-top:7px}
.board-frame{width:100%;max-width:100%;max-width:min(100%,max(240px,calc((100svh - 400px)*6/7)));margin-inline:auto;background:#0b202b;border:1px solid #34515a;border-radius:6px 6px 22px 22px;overflow:hidden;position:relative;box-shadow:0 12px 45px #020b112b}
canvas{display:block;width:100%;height:auto;aspect-ratio:6/7;touch-action:none;cursor:crosshair}
.board-tag{position:absolute;top:4px;left:50%;transform:translateX(-50%);pointer-events:none;font-size:5.5px;letter-spacing:1.8px;color:#6e969c;white-space:nowrap}
.status-line{font-size:11px;line-height:1.5;text-align:center;color:#bfd1ce;margin:8px 4px 7px;min-height:17px}
.controls{display:flex;flex-direction:column;gap:9px}
.aim-row{display:grid;grid-template-columns:1fr 1.2fr 1fr;align-items:center;gap:9px}
.nudge-button{min-height:46px;border:1px solid var(--line);border-radius:13px;color:var(--text);background:#152c36;font-size:16px;display:flex;align-items:center;justify-content:center;gap:8px}
.nudge-button span{font-size:12px}
.angle-display{text-align:center;line-height:1;display:flex;align-items:center;justify-content:center;gap:10px}
.angle-display>span{font-size:10px;line-height:1.5;color:var(--muted);width:22px}
output{font-size:27px;font-weight:700;font-variant-numeric:tabular-nums;min-width:52px;display:block;letter-spacing:-1px}
output span{color:var(--mint);font-weight:400;font-size:19px;vertical-align:top;margin-left:2px}
.primary-button{display:flex;align-items:center;justify-content:center;gap:12px;min-height:50px;width:100%;border-radius:14px;background:var(--mint);color:var(--dark);font-weight:800;font-size:16px;letter-spacing:1px;box-shadow:inset 0 -2px 0 #14503a1f}
.primary-button:active:not(:disabled){transform:translateY(1px);background:#bbffe1}
.fire-button{position:relative;min-height:52px}
.fire-symbol{font-size:23px;font-weight:400}
.key-hint{font-size:7px;letter-spacing:1px;border:1px solid #0a473d40;border-radius:4px;padding:4px;position:absolute;right:14px;opacity:.7}
.utility-row{display:grid;grid-template-columns:1fr 1.35fr;gap:9px}
.secondary-button{min-height:44px;border:1px solid var(--line);border-radius:13px;background:#152c36;color:var(--text);font-size:12px;letter-spacing:.5px;padding:9px 12px}
.secondary-button:hover:not(:disabled),.nudge-button:hover:not(:disabled){background:#203b46}
.level-picker{position:relative;display:flex;align-items:center;min-width:0;min-height:44px;border:1px solid var(--line);border-radius:13px;background:#152c36}
.level-picker>span:first-child{position:absolute;left:11px;font-size:10px;pointer-events:none;color:var(--muted)}
select{width:100%;min-width:0;min-height:44px;border:0;background:transparent;color:var(--text);border-radius:13px;appearance:none;padding:9px 25px 9px 43px;font-size:11px;cursor:pointer;outline-offset:2px}
select option{background:#142b35;color:var(--text)}
.select-arrow{position:absolute;right:11px;font-size:16px;top:10px;pointer-events:none;color:var(--mint)}
footer{display:flex;justify-content:space-between;color:#829fa5;font-size:9px;line-height:1.7;letter-spacing:.4px;margin-top:12px;padding:0 3px}
dialog{color:var(--text);background:linear-gradient(145deg,#1c3c43,#102733 70%);border:1px solid #50736f;border-radius:25px;width:calc(100% - 32px);max-width:380px;max-height:calc(100vh - 32px);max-height:calc(100dvh - 32px);overflow:auto;padding:22px 22px 20px;box-shadow:0 30px 100px #0008}
dialog::backdrop{background:#020d17c9;backdrop-filter:blur(5px)}
.dialog-topline{display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid #416069;padding-bottom:10px;margin-bottom:12px}
.dialog-stamp{color:var(--amber);font-size:25px;line-height:1}
dialog h2{font-size:23px;letter-spacing:1px;margin:0 0 12px}
.dialog-lead{font-size:15px;line-height:1.7;color:#e2efdf;margin:0 0 16px}
.help-steps{padding:0;list-style:none;counter-reset:steps;margin:0 0 16px}
.help-steps li{counter-increment:steps;position:relative;padding-left:29px;margin:0 0 16px;font-size:12px;line-height:1.6}
.help-steps li:before{content:counter(steps,decimal-leading-zero);position:absolute;left:0;top:0;color:var(--mint);font-size:10px;letter-spacing:.5px;font-weight:700}
.help-steps strong,.help-steps span{display:block}
.help-steps strong{font-size:12px;margin-bottom:3px;font-weight:600}
.help-steps span,.help-small{color:#afc6c6;font-size:11px;line-height:1.75}
.help-small{margin:0 0 14px}
dialog .primary-button{margin-top:8px}
.result-seal{width:70px;height:70px;display:flex;align-items:center;justify-content:center;font-size:34px;color:var(--amber);border:1px solid #ffc57580;outline:1px dashed #ffc57555;outline-offset:5px;border-radius:50%;margin:24px auto 25px;transform:rotate(-9deg)}
.result-seal.lost{color:var(--muted);border-color:#9db6ba80;outline-color:#9db6ba55}
.result-actions{display:flex;flex-direction:column;gap:10px}
.result-actions .secondary-button{font-size:13px}
.text-button{min-height:44px;background:transparent;color:var(--muted);font-size:11px;text-decoration:underline;text-underline-offset:5px}
@media(min-width:600px){.app{padding-top:24px;padding-bottom:26px}.masthead{margin-bottom:18px}.board-frame{box-shadow:0 20px 70px #0004}}
@media(max-width:370px){.app{padding:9px 12px 12px}.masthead{margin-bottom:10px;gap:9px}h1{font-size:23px}.dispatch-card{padding:10px 14px 9px}.dispatch-heading h2{font-size:18px}.resources{margin-top:7px;padding-top:7px}.controls{gap:8px}.status-line{font-size:10px}.key-hint{display:none}footer{margin-top:9px;font-size:8px}.angle-display{gap:6px}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;transition:none!important}}
dialog[data-fallback="true"][open]{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);margin:0;z-index:100;box-shadow:0 0 0 100vmax #020d17c9}

