*{box-sizing:border-box}body{margin:0;color:#503d2a;background:#e5e4d5;font-family:system-ui,-apple-system,'PingFang SC',sans-serif}main{max-width:1180px;margin:auto;min-height:100svh;padding:0 32px 28px;background:#faf5e9;display:grid;grid-template-columns:minmax(0,1.7fr) minmax(300px,1fr);gap:20px 28px}header{grid-column:1/-1;display:flex;justify-content:space-between;align-items:center;height:70px;border-bottom:1px solid #d8ccb6}a{color:inherit;text-decoration:none;font:bold 30px serif}a small{font:11px system-ui;margin-left:12px;color:#87765e}button{font:inherit;cursor:pointer;border:1px solid #cfbea0;background:#fffaf1;color:#674a32;border-radius:6px;padding:9px 12px}button:focus-visible,a:focus-visible{outline:3px solid #b88938;outline-offset:4px}[hidden]{display:none!important}.heading{grid-column:1/-1;display:flex;align-items:center;justify-content:space-between}.heading p,.eyebrow{font-size:11px;letter-spacing:3px;color:#93724b}.heading h1{font:36px 'Kaiti SC',serif;margin:6px 0}.heading>span{font-size:13px;letter-spacing:3px}.arena{min-width:0;align-self:start;border:2px solid #a48257;border-radius:12px;overflow:hidden;box-shadow:0 12px 30px #644c3020}canvas{display:block;width:100%;height:510px}.panel{padding:22px;border:1px solid #d2bea0;border-radius:12px;background:#fffbf3;align-self:start}h2{font:26px 'Kaiti SC',serif;margin:10px 0}.story{font-size:13px;line-height:1.8;color:#887156;border-bottom:1px solid #e2d5bf;padding-bottom:15px}#task{font-size:12px;line-height:1.6}#steps{display:flex;gap:7px}#steps span{font-size:10px;padding:5px 8px;border:1px solid #ddcfb6;border-radius:3px}#steps .done{color:#547548;background:#e6ebd9}#steps .current{color:#a44930;border-color:#bf7957}#receipt{min-height:70px;display:flex;align-items:center;justify-content:center;text-align:center;font-size:16px;font-weight:650;line-height:1.5;padding:10px 0;border-block:1px solid #eadfcb;color:#9e4d2f;margin:15px 0}.meter-title{display:flex;justify-content:space-between;font-size:10px;color:#88775d}#meter{height:30px;background:#e8e5d7;border:1px solid #c3b89b;border-radius:5px;position:relative;margin:10px 0 20px}#meter i{position:absolute;height:100%}#zone{background:#b86a52aa}#gold{background:#e6bb5b}#needle{position:absolute;height:40px;width:3px;background:#503b28;top:-5px}.primary{width:100%;min-height:56px;background:#a84c33;color:#fff1d4;border:0;box-shadow:0 3px 0 #703827;font-weight:700;font-size:18px;touch-action:none;user-select:none}.primary small{font-size:11px;font-weight:400;margin-left:8px}button:disabled{opacity:.6;cursor:default}.secondary{display:flex;justify-content:space-between;gap:10px;margin-top:15px}.secondary button{border:0;background:none;font-size:11px;padding:4px 0}.tip,#stats{font-size:10px;color:#938069;line-height:1.8}#pause{position:fixed;inset:0;background:#34291fa8;display:grid;place-items:center;z-index:5}#pause>div{padding:30px;background:#fff6e3;border-radius:12px;max-width:90vw}@media(max-width:780px){main{display:block;padding:0 16px 20px}header{height:52px}.heading{padding:10px 0}.heading h1{font-size:26px}.heading p{margin:4px 0}.arena{margin:0 -16px 12px;border-radius:0;border-inline:0}canvas{height:260px}.panel{padding:14px}h2{font-size:22px}.story{font-size:12px;margin:8px 0;padding-bottom:8px}#receipt{min-height:54px;margin:10px 0}.tip{margin-bottom:0}}@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important}}
header{gap:12px;flex-wrap:wrap}header>a:nth-child(2){font-size:14px;margin-left:auto}
#save-panel{position:fixed;inset:0;background:#211b16b8;z-index:100;display:grid;place-items:center;padding:20px}#save-panel[hidden]{display:none}#save-panel section{background:#fff8e9;color:#493c2b;max-width:540px;width:100%;max-height:90vh;overflow:auto;padding:24px;border:2px solid #a88755;border-radius:10px}#save-panel button,#save-panel a{display:block;margin:14px 0;padding:12px}#save-panel button{width:100%}
#save-panel a{font-size:16px;font-weight:500}
/* Match the archive's military-night interface while keeping the painted arena. */
body{background:#101c24;color:#e0e6e5}header{border-color:#3b505b}header a,header button{color:#d8bd8a}button{background:#263c48;color:#e7eceb;border-color:#4b6370}.heading{background:#14232d;color:#e2e8e7}.heading p,.eyebrow{color:#b5c3c6}.panel{background:linear-gradient(145deg,#20333e,#15242e);border-color:#405762;color:#e2e8e7}.story,#stats,.tip,.meter-title{color:#b5c3c6}#receipt{color:#f0c991;border-color:#455c67}#task{color:#c5d2d4}#steps span{border-color:#536b73;color:#bbcccf}#steps .current{border-color:#d3b47c;color:#efd7a9}#steps .done{color:#83b4a5}.primary{background:#a34e40;color:#fff3df}#pause>div,#save-panel section{background:#1a2b36;color:#e2e8e7;border-color:#8f7c58}#save-panel a{color:#dbc393}
main{background:#101c24}#steps .done{background:#203d3b}#meter{background:#0c1820;border-color:#4b6571}.story{border-color:#3b505d}.arena{border-color:#566970;border-radius:5px}.panel{border-radius:5px}
/* Aim instrument: three independent layers, no animation lag on the hit windows. */
#aim{background:#101e27;border:1px solid #3b5360;padding:18px 16px 12px;border-radius:6px}.aim-readout{display:flex;flex-direction:column;gap:5px;min-height:52px;margin-bottom:12px}.aim-readout strong{font-size:18px;letter-spacing:1px;color:#dbe5e7}.aim-readout span{font-size:11px;color:#91a9b5}.meter-title{font-size:11px;align-items:center;color:#a6bdc8}#power{font:24px ui-monospace,monospace;color:#f0e1c2;font-variant-numeric:tabular-nums}#meter{height:42px;border:1px solid #516876;border-radius:3px;background:repeating-linear-gradient(90deg,transparent 0,transparent calc(10% - 1px),#a4c0cc20 calc(10% - 1px),#a4c0cc20 10%),#09131b;margin:12px 0 5px;box-shadow:inset 0 2px 10px #0008;isolation:isolate}#meter #power-fill{left:0;top:0;background:linear-gradient(90deg,#54798d28,#8caebe55);height:100%;z-index:0}#zone{background:repeating-linear-gradient(135deg,#61b5ae60 0,#61b5ae60 5px,#3b827c60 5px,#3b827c60 10px);border-inline:2px solid #94dbce;z-index:1}#gold{background:#eccb84;box-shadow:0 0 10px #e7bb6155;z-index:2}#needle{height:54px;width:3px;top:-7px;background:#f6faff;z-index:4;transform:translateX(-50%);box-shadow:0 0 5px #c4ddeb80}#needle:before{content:'';position:absolute;top:-4px;left:-4px;border-left:5px solid transparent;border-right:5px solid transparent;border-top:6px solid #f6faff}.meter-scale{display:flex;justify-content:space-between;color:#78939f;font:10px ui-monospace,monospace;margin-bottom:12px}.meter-legend{display:flex;gap:9px;flex-wrap:wrap;font-size:10px;margin-bottom:18px;color:#adc0c8}.meter-legend span:first-child{color:#94dbce}.meter-legend span:nth-child(2){color:#eccb84}#aim[data-state=good]{border-color:#6bb0a8}#aim[data-state=good] .aim-readout strong{color:#a2e3d5}#aim[data-state=perfect]{border-color:#e8c77c;box-shadow:inset 0 0 28px #d2a85912}#aim[data-state=perfect] .aim-readout strong{color:#ffe1a0}#aim[data-state=over] .aim-readout strong,#aim[data-state=blocked] .aim-readout strong{color:#edab94}#aim[data-state=perfect] #draw{background:#b68140}#draw{min-height:62px;box-shadow:0 3px 0 #512e2a;letter-spacing:1px}#draw:active{transform:translateY(2px);box-shadow:0 1px 0 #512e2a}#steps{flex-wrap:wrap}.secondary button{font-size:12px;padding:8px 0}.heading{padding:16px 0;background:none}header{min-height:70px;height:auto;padding:12px 0}.panel{box-shadow:0 14px 35px #0003}@media(max-width:780px){header{gap:8px}header>a:nth-child(2){font-size:11px}header>a:first-child{font-size:24px}.heading{padding:8px 0}canvas{height:230px}#aim{padding:14px 12px}.aim-readout strong{font-size:16px}.story{font-size:11px}#receipt{font-size:13px;min-height:44px}.tip{font-size:9px}#draw{min-height:60px}}@media(prefers-reduced-motion:reduce){#draw:active{transform:none}}
main{align-content:start;row-gap:12px}header{min-height:56px;padding:8px 0}.heading{padding:4px 0}.heading h1{font-size:30px;margin:3px 0}.panel{padding:18px}.panel h2{font-size:23px;margin:7px 0}.story{margin:8px 0;padding-bottom:10px}#receipt{min-height:44px;margin:10px 0;padding:8px 0;font-size:14px}.aim-readout{min-height:40px;margin-bottom:8px}#aim{padding:12px}.meter-legend{margin-bottom:12px}#meter{margin-top:8px}.secondary{margin-top:8px}.tip{margin-top:6px}canvas{height:490px}@media(max-width:780px){canvas{height:220px}.panel{padding:12px}.heading h1{font-size:24px}}
/* Clear daylight command desk. World, NPC conversation, aim and loot each have a home. */
body{background:#e4e8ee;color:#273448}main{background:#edf0f4;max-width:1320px;grid-template-columns:minmax(0,1.65fr) minmax(340px,1fr);gap:14px 24px;padding-inline:28px}header{border-color:#c7ced8}header a,header button{color:#46526a}a small{color:#718096}.heading{color:#29374d}.heading p,.eyebrow{color:#68768b}.heading h1{font-weight:600}.panel{background:#fffdf9;border:1px solid #d1d5dc;color:#29374d;box-shadow:0 12px 30px #3f4d6310;border-radius:12px}.story,#stats,.tip,.meter-title{color:#6b7687}.story{border-color:#e0e4e9}#task{color:#667287}#receipt{color:#995837;border-color:#e4e0d9;background:#f7f0e6;border-radius:6px;padding:10px;font-size:14px}#steps span{color:#66748b;border-color:#d5dce5}#steps .current{color:#8e5036;border-color:#bf8564;background:#faf0e7}#steps .done{background:#edf1f5;color:#65798a}button{background:#f3f5f8;color:#34445d;border-color:#c6cfdb}#draw{background:#b45c45;color:#fff8ed;box-shadow:0 3px #854535}.arena{border:1px solid #bcc7d2;border-radius:12px;background:#fffdf9;overflow:hidden;box-shadow:0 12px 30px #3f4d6310}.npc-invite{padding:18px 20px;display:flex;flex-wrap:wrap;gap:12px;align-items:center;border-top:3px solid #b67652;background:linear-gradient(110deg,#fffaf2,#f2f4f8)}.npc-invite>div{flex:1 1 240px}.npc-invite small{display:block;font-size:10px;color:#9a765b;letter-spacing:2px}.npc-invite strong{display:block;font:21px serif;margin:6px 0;color:#34405a}.npc-invite p{font-size:13px;line-height:1.7;margin:0;color:#6c7687}#npc-action{background:#394b66;color:white;border:0}#npc-other{background:transparent;border:0;font-size:11px;color:#69778e}#quest-track{font-size:11px;color:#6e7f93;line-height:1.7;padding:8px 0}#reward-card{display:flex;gap:12px;align-items:center;background:linear-gradient(120deg,#fff2d8,#faf8f1);border:1px solid #d8b478;border-radius:8px;padding:12px;margin:12px 0}#reward-icon{width:120px;height:80px;flex:0 0 120px;background:url('art/relics-v1.webp') no-repeat;background-size:800% 600%}#reward-card small{font-size:10px;color:#9a7950}#reward-card h3{margin:4px 0;font:18px serif;color:#80532d}#reward-card p{font-size:11px;color:#89745d;line-height:1.6;margin:4px 0}#reward-card a{font:12px system-ui;color:#99633b}#aim{background:#eff3f7;border-color:#c7d1dd}.aim-readout strong{color:#344660}.aim-readout span,.meter-title{color:#76859b}#power{color:#344660}#meter{background:repeating-linear-gradient(90deg,transparent 0,transparent calc(10% - 1px),#c7d3e233 calc(10% - 1px),#c7d3e233 10%),#26354b;border-color:#3c506b}#aim[data-state=good] .aim-readout strong{color:#3c8276}#aim[data-state=perfect] .aim-readout strong{color:#986126}#aim[data-state=over] .aim-readout strong,#aim[data-state=blocked] .aim-readout strong{color:#b05c47}.meter-legend{color:#64758b}.meter-legend span:first-child{color:#438c81}.meter-legend span:nth-child(2){color:#9b773d}#pause>div,#save-panel section{background:#fffdf8;color:#34445b;border-color:#c8c0b2}#save-panel a{color:#8a6047}@media(max-width:780px){main{display:block;padding:0 14px 20px}.arena{margin-inline:-14px;border-radius:0}.npc-invite{padding:12px 14px;gap:8px}.npc-invite>div{flex-basis:100%}.npc-invite strong{font-size:18px}#reward-icon{width:90px;height:60px;flex-basis:90px}canvas{height:230px}}
@media(min-width:781px){canvas{height:400px}.heading{padding:0}.heading p{margin:8px 0 3px}.npc-invite{padding:14px 18px}.panel{padding:16px}#aim{padding:10px}.aim-readout{min-height:36px}.heading h1{font-size:27px}}
#chapter-result{padding:16px;background:#f9edda;border:1px solid #d3ad72;border-radius:8px;margin:14px 0}#chapter-result h3{font:22px serif;color:#805b35;margin:0 0 10px}#chapter-result-score{font-size:14px;color:#9c713b;line-height:1.8}#chapter-result-best{font-size:12px;color:#8a7a65}#chapter-result button{margin:5px 6px 0 0;font-size:12px}
header>a:not(:first-child){font:12px system-ui;margin-left:0}header>a:nth-child(2){margin-left:auto}
/* Quiet aiming mode: detail is progressive, not permanently printed beside the bow. */
.sr-only{position:absolute!important;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap}summary{cursor:pointer;font-size:12px;color:#758298;list-style:none}summary:before{content:'＋';margin-right:7px}details[open]>summary:before{content:'－'}summary:focus-visible{outline:2px solid #b58b59;outline-offset:4px}.heading p{display:none}.heading h1{font:14px system-ui;color:#758298;letter-spacing:2px}.heading{padding:8px 0!important}#title{font-size:25px;margin:4px 0 16px}#mission-details{margin-bottom:14px}#mission-details[open]{background:#f4f5f6;padding:12px;border-radius:6px}#mission-details .eyebrow{line-height:1.7}#mission-details #stats{margin-bottom:0}.npc-invite{display:block;padding:12px 18px;border-top:1px solid #d1d6dd;background:#fcfbf8}.npc-invite>summary{font-size:13px;color:#8b654c}.npc-content{display:flex;flex-wrap:wrap;align-items:center;gap:12px;padding-top:14px}.npc-content>div{flex:1 1 220px}.npc-content small{display:none}#quest-track{padding:5px 0}#aim{border:0;background:transparent;padding:0}.aim-readout{min-height:30px;margin:8px 0 12px}.aim-readout strong{font-size:20px;font-weight:500}.meter-title>span{display:none}.meter-title{justify-content:flex-end}#power{font-size:17px;color:#7a8798}#meter{height:36px}.meter-scale{margin-bottom:18px}#draw{min-height:62px}.secondary{align-items:start}.secondary button{font-size:12px}#aim-help{text-align:right;max-width:260px}#aim-help[open]{background:#f0f3f6;padding:12px;border-radius:6px}#aim-help p{font-size:12px;color:#758298;line-height:1.7}#aim-help .meter-legend{justify-content:flex-end;margin:12px 0}#receipt{min-height:0;font-weight:500}body[data-play-state=idle] #receipt,body[data-play-state=drawing] #receipt{display:none}body[data-play-state=drawing] .npc-invite{visibility:hidden}#reward-card h3{font-size:17px}#reward-card summary{font-size:11px;margin:8px 0}#reward-card small{font-size:10px}#reward-card a{display:inline-block;margin-top:6px}.panel{padding:22px;align-self:center}main{grid-template-columns:minmax(0,2fr) minmax(300px,1fr)}@media(min-width:781px){canvas{height:480px}}@media(max-width:780px){main{display:block}.panel{padding:16px}canvas{height:280px}#title{font-size:21px;margin-bottom:10px}#mission-details{margin-bottom:8px}.aim-readout{margin:6px 0;min-height:25px}.aim-readout strong{font-size:18px}#meter{margin-top:6px}.npc-invite{padding:10px 14px}}
.panel:has(#reward-card:not([hidden]))>#receipt{display:none}
/* Phone layout: the aim controls and target fit together on short screens. */
@media(max-width:780px){
 html{scroll-padding-bottom:env(safe-area-inset-bottom)}
 main{padding:env(safe-area-inset-top) 12px calc(12px + env(safe-area-inset-bottom));min-height:100svh}
 header{min-height:44px;padding:0;gap:4px;flex-wrap:wrap}header>a:first-child{font-size:22px;margin-right:auto}header>a:first-child small{display:none}header>a:not(:first-child){font-size:11px;padding:12px 3px;margin:0}header button{min-height:44px;padding:7px;font-size:11px}
 .heading{padding:5px 0!important;min-height:27px}.heading h1{font-size:12px;letter-spacing:1px;margin:0}.heading>span{font-size:11px}
 .arena{margin:0 -12px 8px;border-radius:0}canvas{height:clamp(165px,30svh,280px)}.npc-invite{padding:10px 14px}.npc-invite summary{font-size:12px;min-height:22px}.npc-content button{min-height:44px}
 .panel{padding:12px;border-radius:9px}#title{font-size:19px;margin:0 0 7px}#mission-details{margin:0 0 4px}#mission-details summary{font-size:11px}.aim-readout{min-height:22px;margin:4px 0}.aim-readout strong{font-size:17px}.meter-title{height:20px}#power{font-size:14px}#meter{height:30px;margin:6px 0 4px}#needle{height:42px}#draw{min-height:52px;font-size:18px}.meter-scale{margin-bottom:10px}.secondary{margin-top:2px;min-height:38px}.secondary>button,#aim-help>summary{min-height:38px;display:flex;align-items:center}
 #aim-help[open]{max-width:100%;text-align:left}#reward-card{flex-wrap:wrap}#reward-card>div:last-child{flex:1;min-width:150px}#save-panel{padding:12px}#save-panel section{max-height:calc(100svh - 24px);padding:18px}#save-panel button{min-height:44px}
 input,select{font-size:16px}button{-webkit-tap-highlight-color:transparent}#draw{-webkit-touch-callout:none;touch-action:none}summary{-webkit-tap-highlight-color:transparent}
}
@media(max-width:780px) and (max-height:650px){canvas{height:165px}.heading{min-height:23px}.panel{padding:10px}.npc-invite{padding:7px 12px}.aim-readout strong{font-size:16px}.meter-scale{margin-bottom:7px}#draw{min-height:48px}}
@media(max-height:500px) and (min-width:600px){main{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(260px,1fr);gap:8px 12px}.arena{margin:0;align-self:start}canvas{height:260px}.heading{display:none}.panel{align-self:start}header{grid-column:1/-1}}
@media(max-width:780px){.secondary>button{white-space:nowrap;flex-shrink:0;min-width:42px}#aim-help{min-width:0;flex:1}}
/* WebKit needs the prefixed rule on descendants as well as the button. */
#draw,#draw *{-webkit-user-select:none!important;-moz-user-select:none!important;user-select:none!important;-webkit-touch-callout:none!important;-webkit-user-drag:none;touch-action:none}
#aim,#aim *{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}
.credits{grid-column:1/-1;text-align:center;font:12px/1.8 system-ui;color:#8490a0;padding:16px 0 4px}.credits span{padding:0 8px}.credits a{font:inherit;color:#667a93;text-decoration:underline;text-underline-offset:3px}

/* Stable touch layout: details stay in place while the finger is on the bow. */
body[data-play-state=drawing] #mission-details{visibility:hidden}
#meter{contain:layout}
button,a,summary{touch-action:manipulation}
#draw{touch-action:none}
@media(max-width:780px){
 header>a:not(:first-child){min-width:44px;text-align:center}
 .secondary>button,#aim-help>summary,#mission-details>summary{min-height:44px;min-width:44px}
 #mission-details>summary{display:flex;align-items:center}
 .npc-invite{padding-block:0}.npc-invite>summary{display:flex;align-items:center;min-height:44px}
 #tap,#npc-other,#chapter-result button,#restart{min-height:44px;padding:10px 12px}
 #save-panel section{overscroll-behavior:contain;-webkit-overflow-scrolling:touch}
 #reward-card a{min-height:44px;display:inline-flex;align-items:center}
}

.save-heading{position:sticky;top:-18px;z-index:1;background:#fffdf8;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:8px 0;border-bottom:1px solid #e0e4e9}.save-heading h2{margin:0}#save-panel .save-heading button{width:auto;flex-shrink:0;margin:0;font-size:13px}

.visit-stats{font:12px/1.8 system-ui;margin:12px auto 6px;max-width:440px;text-align:center}.visit-stats summary{cursor:pointer;min-height:44px;display:flex;align-items:center;justify-content:center;color:inherit;list-style:none}.visit-stats summary:before{content:none}.visit-stats p{font:11px/1.8 system-ui;margin:4px 0 12px;color:inherit;opacity:.85}

.visit-stats summary{flex-direction:column;gap:2px}.visit-stats summary span{padding:0}

/* 铁甲朱弦 — production scene and lower command desk. */
body{background:radial-gradient(ellipse at 50% 8%,#343c47,#1b222b 58%,#151b23);color:#efe6d1}
main{display:flex;flex-direction:column;max-width:1120px;padding:12px 24px 24px;gap:0;background:transparent}
header{width:100%;margin-bottom:12px;border-color:#b49b7040;min-height:60px;gap:8px}header a,header button{color:#d5cebb}header>a:first-child{font:32px 'Kaiti SC',serif;letter-spacing:4px;display:flex;align-items:center;gap:8px}header>a:first-child small{display:none}.brand-seal{display:inline-grid;place-items:center;width:29px;height:35px;border:1px solid #c9916d;background:#803d30;color:#ebc19b;font:22px serif;transform:rotate(-4deg)}header button{background:transparent;border-color:#b49b7030;border-radius:2px;font-size:12px}
.arena{position:relative;width:100%;margin:0;border:1px solid #ad95645c;border-bottom:0;border-radius:4px 4px 0 0;background:#1b222c;box-shadow:none;overflow:hidden}.arena canvas{height:420px}.heading{position:absolute;z-index:1;inset:0 0 auto;padding:16px 22px!important;min-height:90px;background:linear-gradient(#17202ad9,transparent);pointer-events:none;color:#fff2d8}.heading>div{border-left:4px solid #a34e40;padding-left:12px}.heading p{color:#e1d7bd;font-size:10px;letter-spacing:2px;margin:0 0 5px}.heading h1{font:24px 'Songti SC',serif;letter-spacing:3px;margin:0}.heading #progress{color:#f1ddad;font:20px serif;letter-spacing:1px}
.panel{width:100%;border:1px solid #ad95645c;border-top:2px solid #b39b6b;border-radius:0 0 4px 4px;background:linear-gradient(100deg,#202a36,#19222d);padding:14px 24px 10px;box-shadow:0 24px 60px #0003;color:#e8ddc5}.panel h2{font:18px 'Songti SC',serif;letter-spacing:2px;margin:0 0 4px}#mission-details summary{color:#a8b4bf}#receipt{background:transparent;color:#e8c997;border-color:#b49b7028;min-height:30px;margin:4px 0 10px;padding:4px 0;font-size:13px}#aim{display:grid;grid-template-columns:minmax(0,1fr) 240px;column-gap:32px;padding:0;background:transparent;border:0;border-radius:0;box-shadow:none}.aim-readout{grid-column:1;min-height:22px;margin:0}.aim-readout strong{font-size:15px;color:#e8ddc5}.meter-title{grid-column:1;color:#a8b4bf}#power{font-size:16px;color:#cbd3d9}#meter{grid-column:1;height:36px}.meter-scale{grid-column:1;color:#929eab}#draw{grid-column:2;grid-row:1/5;align-self:center;min-height:62px;border:1px solid #d4926b;border-radius:2px;background:linear-gradient(100deg,#9d4737,#ad5240);color:#fff0d1;font:22px 'Songti SC',serif;letter-spacing:4px;box-shadow:inset 0 0 0 4px #8c3e3020,0 3px #5d2924}.secondary{grid-column:1/-1;margin-top:0}.secondary button,#aim-help summary{color:#b3b5ae}.secondary #aim-help{color:#b7c2cc}#aim-help p{color:#b7c2cc}#aim[data-state=good] .aim-readout strong{color:#a2e3d5}#aim[data-state=perfect] .aim-readout strong{color:#ffe1a0}
.npc-invite{background:#222c37;border-top:1px solid #b39b6b70;padding:0 20px;color:#d7c6a7}.npc-invite summary{color:#d7c6a7}.npc-invite strong{color:#ecd9b8}.npc-invite p,#quest-track{color:#b7bec4}.npc-invite small{color:#c1a77d}#npc-action{background:#914835;color:#fff0d1}#npc-other{color:#bdc5ca}#mission-details p{color:#b7c2cc}#steps span{color:#bec9cf}#steps .current{background:#6c4233;color:#ffe2b1}#steps .done{background:#30443f;color:#abd2bc}.credits{color:#a3a59e}.credits a{color:#bfa989}#save-panel section,#pause>div{background:#202a35;color:#eadfc9;border-color:#a28e68}.save-heading{background:#202a35;border-color:#a28e6844}#save-panel a{color:#d9bc8e}button{background:#303d4b;color:#e4d7bf;border-color:#8f7c5855}.visit-stats{color:#a3a59e}
@media(max-width:780px){main{padding:8px 12px 20px}header{gap:5px;margin-bottom:10px;min-height:54px}header>a:first-child{font-size:26px}header>a:not(:first-child),header button{font-size:11px;padding:7px 5px;min-height:44px}.arena{margin:0;border-inline:1px solid #ad95645c;border-radius:4px 4px 0 0}.arena canvas{height:290px}.heading{padding:12px!important;min-height:75px}.heading h1{font-size:19px;letter-spacing:1px}.heading p{font-size:9px;letter-spacing:1px}.heading #progress{font-size:17px}.panel{padding:12px 14px 6px}.panel h2{font-size:16px}#aim{display:block}.aim-readout{min-height:22px}#draw{margin-top:12px;min-height:54px}#meter{height:30px}#needle{height:42px}.npc-invite{padding:0 12px}#receipt{font-size:12px}.save-heading{top:-18px}}
.heading p{display:block}.heading h1{color:#fff2d8}#title{font-size:18px;margin:0 0 4px}#mission-details{margin-bottom:4px}#mission-details[open],#aim-help[open]{background:#2a3542}#aim{position:relative}.meter-title{position:absolute;right:272px;top:0}.aim-readout{padding-right:55px}.meter-scale{display:flex;margin-bottom:8px}#mission-details:not([open]){position:absolute;right:24px;top:4px}.panel{position:relative}#mission-details>summary{min-height:36px}#title{padding-right:100px}#aim-help{margin-left:auto}
@media(max-width:780px){.meter-title{right:0;top:0}#title{font-size:16px}#mission-details:not([open]){right:14px;top:2px}.arena canvas{height:clamp(220px,40svh,290px)}#aim .aim-readout{margin:10px 0 12px}#draw{margin-top:12px}.heading h1{color:#fff2d8}#mission-details>summary{min-height:32px}}

/* Keep the full mounted silhouette inside the field on wide displays. */
@media(min-width:781px){.arena canvas{height:auto;aspect-ratio:1.65}}



#reward-card{background:#29333e;border:1px solid #9d8256;color:#eadfc9;padding:10px 14px;gap:14px;margin:10px 0;max-width:100%}#reward-card h3{color:#f1d49d;font-size:16px}#reward-card small,#reward-card p{color:#b9c0c5}#reward-card a{color:#e2bd7b}#reward-icon{width:90px;height:60px;flex:0 0 90px}#reward-card details[open]{max-height:150px;overflow:auto}#chapter-result{background:#29333e;border-color:#9d8256}#chapter-result h3,#chapter-result-score{color:#e8c997}#chapter-result-best{color:#b9c0c5}#next{position:sticky;bottom:12px;z-index:3;min-height:52px;margin-top:8px;border:1px solid #cb8768;box-shadow:0 3px 10px #0005}#receipt{overflow-wrap:anywhere}#reward-card>div:last-child{min-width:0}#reward-card a{min-height:36px;display:inline-flex;align-items:center}#reward-card summary{color:#c9b992}
@media(max-width:780px){#reward-card{flex-wrap:nowrap;padding:10px;gap:10px}#reward-icon{flex-basis:72px;width:72px;height:48px}#reward-card h3{font-size:14px}#reward-card>div:last-child{flex:1;min-width:0}#next{bottom:calc(8px + env(safe-area-inset-bottom))}}

/* Reserve a fixed control budget within the viewport, then fit the painted world. */
main{min-height:0}
@media(min-width:781px){main{padding-top:8px}header{min-height:48px;padding:4px 0;margin-bottom:8px}.arena canvas{aspect-ratio:auto;height:clamp(180px,calc(100svh - 280px),480px)}.panel{padding:10px 20px 6px}.npc-invite>summary{min-height:32px;display:flex;align-items:center}.npc-invite{padding-block:0}.secondary{min-height:36px}.secondary>button,#aim-help>summary{min-height:36px}.heading{display:flex}.credits{margin-top:12px}}
@media(max-width:780px){.arena canvas{aspect-ratio:auto;height:clamp(160px,calc(100svh - 350px),290px)}}
@media(max-height:500px) and (min-width:600px){main{display:flex;gap:0}.arena canvas{height:180px}.heading{display:flex}}
/* The complete default game is one viewport, including navigation and credits. */
html,body{height:100%;margin:0}body{overflow:hidden}main{height:100svh;height:100dvh;min-height:0;display:flex;flex-direction:column;padding:8px 20px;gap:0;overflow:hidden}header{flex:none;min-height:48px;margin:0 0 8px;padding:4px 0}.arena{flex:1 1 0;min-height:100px;display:flex;flex-direction:column;align-self:stretch}.arena canvas{flex:1 1 0;width:100%;height:0;min-height:0;aspect-ratio:auto}.npc-invite{flex:none}.panel{flex:none;max-height:48%;overflow:auto;overscroll-behavior:contain}.credits{flex:none;display:flex;flex-wrap:wrap;justify-content:center;align-items:center;gap:4px 8px;margin:0;padding:6px 0 0;font-size:10px;line-height:1.4}.credits a{font-size:10px}.credits .visit-stats{margin:0 12px 0 0;font-size:10px;line-height:1.4;max-width:none}.visit-stats summary{min-height:0;padding:0}.visit-stats[open] p{position:fixed;bottom:40px;left:50%;transform:translateX(-50%);width:min(360px,90vw);background:#202a35;border:1px solid #9d8256;padding:12px;z-index:20;color:#eee}.npc-invite[open]{max-height:45%;overflow:auto}#next{position:static}
@media(max-width:780px){main{padding:6px 10px max(6px,env(safe-area-inset-bottom))}header{min-height:44px;margin-bottom:6px}.panel{max-height:50%;padding:8px 12px 4px}.credits{font-size:9px;padding-top:4px;gap:2px 5px}.credits a{font-size:9px}.credits .visit-stats{font-size:9px;margin:0 6px 0 0}.npc-invite>summary{min-height:32px}.arena canvas{height:0;min-height:0}.secondary>button,#aim-help>summary{min-height:36px}#draw{min-height:48px;margin-top:8px}#aim .aim-readout{margin:6px 0 10px}}

/* Display lettering is distinct from readable supporting copy. */
:root{--display-font:"Kaiti SC","STKaiti","KaiTi","Songti SC","STSong","Noto Serif CJK SC",serif;--copy-font:-apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei",sans-serif}
body,button,input,select,summary{font-family:var(--copy-font)}h1,h2,h3,.brand-seal,.seal{font-family:var(--display-font)}
header>a:first-child,.heading h1,#title,#draw,#next,#reward-name,#chapter-result-title{font-family:var(--display-font)}#draw,#next{letter-spacing:3px}.heading h1{font-weight:500}#power,#progress,.meter-scale{font-family:ui-monospace,monospace;font-variant-numeric:tabular-nums}

/* Rewards and chapter reports never take height away from the field. */
#result-dialog,#detail-dialog{width:min(760px,calc(100vw - 32px));max-height:calc(100dvh - 32px);overflow:auto;background:#202a35;color:#eadfc9;border:1px solid #b49b70;border-radius:6px;padding:22px;box-shadow:0 24px 90px #0008}dialog::backdrop{background:#0b1219b8}.dialog-heading{display:flex;justify-content:space-between;align-items:center;gap:12px}.dialog-heading h2{margin:0;font:26px var(--display-font)}#result-close,#detail-close{font-size:24px;min-width:44px;min-height:44px;padding:0;background:transparent;border:0}#detail-close{float:right}#result-dialog #reward-card{margin:12px 0;padding:14px}#result-dialog #chapter-result{display:grid;grid-template-columns:1fr 180px;gap:8px 20px;padding:16px;margin:12px 0}#chapter-result-title,#chapter-result-score,#chapter-result-best{grid-column:1;margin:0}.chapter-actions{grid-column:2;grid-row:1/4;display:flex;flex-direction:column;justify-content:center;gap:8px}.chapter-actions button{margin:0!important;min-height:44px}.result-actions{display:flex;justify-content:flex-end;gap:12px;margin-top:16px}.result-actions .primary{width:auto;min-width:180px}.panel:has(#next:not([hidden])) #aim{display:none}#next{min-height:62px;margin:12px 0}.panel{min-height:174px}#detail-dialog .npc-invite,#detail-dialog #mission-details,#detail-dialog #aim-help{position:static;max-height:none;max-width:none;width:100%;margin:0;padding:12px;background:transparent;border:0;visibility:visible;text-align:left}#detail-dialog .npc-content{display:flex}#detail-dialog summary{font:22px var(--display-font);color:#eadfc9}#detail-dialog summary:before{content:''}#detail-dialog p{line-height:1.8}#result-dialog #reward-card details[open]{max-height:none}
@media(max-width:780px){.panel{min-height:222px}#result-dialog,#detail-dialog{padding:16px;width:calc(100vw - 24px)}#result-dialog #chapter-result{grid-template-columns:1fr;padding:12px}.chapter-actions{grid-column:1;grid-row:auto;flex-direction:row;flex-wrap:wrap}.chapter-actions button{flex:1}.result-actions{gap:8px}.result-actions .primary{min-width:0;flex:1;font-size:16px}.result-actions button{min-height:48px}#next{min-height:54px}#result-dialog #reward-card{padding:10px}}

@font-face{font-family:KaigongDisplay;src:url('fonts/kaigong-display.woff2?v=experience4') format('woff2');font-weight:400;font-style:normal;font-display:swap}:root{--display-font:KaigongDisplay,"Kaiti SC","STKaiti",serif}

.panel{height:190px;min-height:190px;max-height:none}#receipt{max-height:32px;overflow:auto}@media(max-width:780px){.panel{height:242px;min-height:242px;max-height:none}}
#result-dialog h2,#result-dialog h3,#result-next,#result-dialog .primary,#detail-dialog summary{font-family:var(--display-font)!important;font-weight:400}
#report-open{position:absolute;right:124px;top:2px;font-size:12px;min-height:36px;border:0;background:none;color:#dec393}
/* V4: scene cues and a steady command desk; the original ruler is unchanged. */
#field-cue{position:absolute;left:50%;bottom:46px;transform:translateX(-50%);z-index:2;pointer-events:none;background:#17202bd9;border:1px solid #d1b47a66;color:#ffdf9f;border-radius:3px;padding:5px 14px;white-space:nowrap;font:18px var(--display-font);max-width:95%;text-align:center}#field-cue:empty{display:none}#loot-toast{position:absolute;right:12px;top:76px;z-index:2;background:#202b34ed;color:#eecb8c;border-left:2px solid #d3b473;padding:8px 12px;font-size:13px;pointer-events:none}#route-choice{display:flex;gap:8px;margin:2px 0 7px}#route-choice button{min-height:32px;padding:5px 12px;font-size:12px;border-color:#b49b7055}#route-choice button[aria-pressed=true]{background:#80513b;color:#ffe0a1;border-color:#c8a56c}#route-choice[hidden]{display:none}#memory-line{font:22px/1.7 var(--display-font);color:#f2d49a;border-left:2px solid #c3975a;padding-left:14px}#record-review{color:#c3cbd1;line-height:1.8}#share-result{min-height:44px}#share-status{overflow-wrap:anywhere;font-size:12px}#arrow-select{background:#17232f;color:#eed9b4;padding:10px;font-size:16px;border:1px solid #b49b70}#star-goals{color:#dfbd81!important}#draw:active{transform:translateY(2px);box-shadow:inset 0 3px 14px #34170f88}#draw:disabled{opacity:.75}.panel{height:224px;min-height:224px}body:has(#route-choice[hidden]) .panel{height:190px;min-height:190px}#aim-help,#mission-details{visibility:visible!important}.arena canvas{touch-action:pan-y}header>a{white-space:nowrap}button:focus-visible,a:focus-visible,summary:focus-visible{outline:2px solid #f1d090;outline-offset:3px}#next{margin-top:6px}.heading{min-height:70px}.heading p{font-size:10px}#detail-dialog #arrow-note{font-size:13px}#result-dialog [hidden]{display:none!important}
@media(max-width:780px){#field-cue{font-size:15px;bottom:38px;padding:4px 8px}#loot-toast{top:60px;font-size:11px;padding:6px 8px}.panel{height:278px;min-height:278px}body:has(#route-choice[hidden]) .panel{height:242px;min-height:242px}header{gap:2px}header>a:first-child{font-size:22px;letter-spacing:1px}header>a:not(:first-child),header button{font-size:11px;min-width:36px;padding:6px 3px}#route-choice button{min-height:36px}.heading{padding:10px!important}.heading h1{font-size:18px}.heading p{font-size:8px;letter-spacing:0}}
@media(max-height:560px) and (min-width:600px){main{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(240px,1fr);grid-template-rows:44px minmax(0,1fr) 28px;gap:6px 12px}header{grid-column:1/-1;margin:0}.arena{height:100%;min-height:0}.panel,body:has(#route-choice[hidden]) .panel,body[data-play-state=result] .panel{height:100%;min-height:0;overflow:auto;padding:10px}#aim{display:block}#draw{width:100%;margin-top:8px}.meter-title{right:0}#field-cue{font-size:13px}.credits{grid-column:1/-1}.heading h1{font-size:18px}}
#field-cue{left:auto;right:14px;top:60px;bottom:auto;transform:none;max-width:65%;white-space:normal;font-size:16px}#loot-toast{top:98px}#route-choice button:disabled{opacity:.6}#result-dialog #memory-line[hidden]{display:none}
@media(max-width:780px){#field-cue{top:54px;right:10px;font-size:13px;padding:4px 7px;max-width:58%}#loot-toast{top:88px;max-width:70%}}

.gear-list{display:grid;gap:6px}#share-image{min-height:44px;margin-left:8px}
@media(max-width:360px){header>a[href="archive.html#journey"]{display:none}header>a:not(:first-child),header button{min-width:44px;min-height:44px}}
.dialog-heading{position:sticky;top:-22px;padding:6px 0;background:#202a35;z-index:3}@media(max-width:780px){.dialog-heading{top:-16px}#memory-line{font-size:20px}}
