:root{color-scheme:dark;--bg:#11232c;--panel:#19323e;--panel2:#203f4b;--line:#3b5966;--text:#eef4e9;--muted:#adc1c5;--mint:#79dbc1;--gold:#ffda83;--ink:#193331}*{box-sizing:border-box}body{margin:0;background:radial-gradient(ellipse at 25% 0,#264955 0,#10212b 75%);color:var(--text);font:16px/1.65 system-ui,-apple-system,"Segoe UI","Microsoft YaHei",sans-serif;min-height:100vh}button,textarea,input{font:inherit}button,a,textarea,input{outline-offset:4px}button{cursor:pointer;border:1px solid #4b6c77;color:var(--text);background:#244452;padding:9px 16px;border-radius:7px;box-shadow:0 2px 0 #0b2028;transition:background .12s,transform .12s}button:hover{background:#345b65;border-color:var(--mint)}button:active{transform:translateY(1px);box-shadow:none}button:disabled{opacity:.48;cursor:not-allowed}a{color:var(--mint)}.primary{background:var(--gold);border-color:#ffe1a0;color:#263634;font-weight:700;box-shadow:0 3px 0 #8d6b37}.primary:hover{background:#ffe7aa;border-color:#ffedc4}.top{max-width:1580px;margin:auto;display:flex;align-items:center;gap:30px;padding:18px 28px;border-bottom:1px solid #38515c}.logo{display:flex;align-items:center;gap:12px}.logoGlyph{font-size:36px;color:var(--gold)}.logo b{font-size:23px;letter-spacing:2px}.logo small{display:block;color:var(--mint);font:11px/1 ui-monospace,monospace;letter-spacing:5px;margin-top:4px}.topnote{color:var(--muted);font-size:13px;margin-left:10px}.top nav{margin-left:auto;display:flex;align-items:center;gap:10px}.top nav button,.top nav a{font-size:14px}.top nav a{margin-left:4px;text-decoration:none}.game{max-width:1500px;margin:auto;padding:22px 28px}.hud{display:flex;align-items:center;gap:26px;border:1px solid #52717a;border-radius:10px;background:linear-gradient(120deg,#294953,#1c3541);padding:14px 24px;margin-bottom:20px;box-shadow:0 4px 0 #0c1d25}.overline{display:block;font:12px/1.7 ui-monospace,monospace;letter-spacing:1.5px;color:var(--mint)}.day{min-width:135px;border-right:1px solid var(--line);padding-right:24px}.day strong{font:700 24px/1.4 ui-monospace,monospace;color:var(--gold)}.clock strong{font:700 24px/1.4 ui-monospace,monospace}.clock>span:last-child{margin-left:12px;font-size:13px;color:var(--muted)}.energy{width:230px;margin-left:auto}.energy>div:first-child{display:flex;justify-content:space-between;gap:12px;font-size:14px}.energy b{color:var(--mint);font-weight:500}.meter{height:9px;background:#0f2730;border:1px solid #406068;padding:1px;margin-top:7px;border-radius:4px;overflow:hidden}.meter i{display:block;height:100%;background:var(--mint);border-radius:2px;transition:width .2s}.growth{min-width:125px;border-left:1px solid var(--line);padding-left:24px}.growth strong{font:700 23px/1.5 ui-monospace,monospace}.growth small{font-size:12px;color:var(--gold)}.worldLayout{display:grid;grid-template-columns:minmax(0,1fr) 290px;gap:20px;align-items:start}.worldPanel{border:1px solid #577382;border-radius:10px;overflow:hidden;box-shadow:0 6px 0 #0a1d25;background:#172f3a;min-width:0}.worldTitle{display:flex;justify-content:space-between;gap:12px;padding:10px 18px;font-size:14px;color:#dcebe7}.worldTitle small{font-size:11px;color:var(--muted);margin-left:12px}#place{color:var(--gold);font-size:12px}.world{position:relative;aspect-ratio:3/2;touch-action:manipulation;overflow:hidden;isolation:isolate;cursor:crosshair}.world:focus-visible{outline:3px solid var(--gold);outline-offset:-3px}.worldArt{width:100%;height:100%;display:block;object-fit:fill;pointer-events:none;user-select:none}.station{position:absolute;transform:translate(-50%,-50%);padding:5px 10px;background:#143643eb;border:1px solid #699392;border-radius:5px;font-size:12px;box-shadow:0 3px 0 #071d2a;z-index:3;white-space:nowrap;color:#f2f6e9;cursor:pointer}.station:hover,.station.near{background:#ffe0a0;color:#213c40;border-color:#fff0bd}.station:active{transform:translate(-50%,-50%)}.station .questdot{display:inline-block;background:var(--gold);color:#263934;border-radius:3px;margin-right:5px;min-width:17px;font-weight:800}.station.done .questdot{background:var(--mint)}.station[data-go="exit"]{writing-mode:vertical-rl;padding:9px 4px;right:0;font-size:11px}.player{position:absolute;width:8%;min-width:35px;max-width:86px;transform:translate(-50%,-88%);pointer-events:none;z-index:4;will-change:left,top}.player img{display:block;width:100%;filter:drop-shadow(0 3px 0 #183b4266);image-rendering:pixelated}.player.walking img{animation:walk .22s steps(2,end) infinite}.player.left img{scale:-1 1}.playerTag{position:absolute;left:50%;top:-13px;transform:translateX(-50%);color:white;font-size:11px;text-shadow:0 1px 3px #000;background:#123342cc;padding:0 7px;border-radius:4px}.destination{position:absolute;width:16px;height:8px;transform:translate(-50%,-50%);border:2px solid #f4d999;border-radius:50%;pointer-events:none;z-index:2}.mapIntro{position:absolute;left:50%;top:51%;transform:translate(-50%,-50%);text-align:center;background:#163e4ee8;padding:12px 22px;border:1px solid #9db8b2;border-radius:8px;z-index:5;pointer-events:none;min-width:240px;box-shadow:0 4px 0 #0c243399}.mapIntro strong{display:block;color:var(--gold);font-size:17px}.mapIntro span{font-size:12px}.controls{display:flex;align-items:center;justify-content:space-between;gap:15px;padding:14px 16px;min-height:68px}.keyHint{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--muted)}kbd{font:11px ui-monospace,monospace;border:1px solid #6a858a;padding:3px 6px;border-radius:4px;color:var(--text);box-shadow:0 2px 0 #0e2229;background:#2c4750}.controls .primary{font-size:14px;min-width:155px}.dpad{display:none;gap:4px}.dpad button{touch-action:none;padding:6px 11px}.logStrip{display:flex;align-items:center;gap:12px;border-top:1px solid var(--line);padding:8px 16px;font-size:12px}.logStrip>span{flex-shrink:0;color:var(--gold)}.logStrip p{margin:0;color:var(--muted)}.agenda{background:#1c3540;border:1px solid #496571;border-radius:10px;padding:23px 20px;box-shadow:0 4px 0 #0b1f27}.agenda h1{font-size:23px;line-height:1.4;margin:10px 0}.agenda>p{font-size:13px;color:var(--muted);margin:10px 0 18px}.tasks{display:grid;gap:7px}.task{display:flex;align-items:center;gap:10px;background:transparent;border:1px solid transparent;box-shadow:none;padding:8px 6px;text-align:left;font-size:14px;width:100%}.task span{border:1px solid #648084;display:grid;place-items:center;width:21px;height:21px;border-radius:4px;font:12px ui-monospace,monospace;flex-shrink:0}.task.complete{color:var(--mint)}.task.complete span{background:#315a52;border-color:var(--mint)}.task.current{background:#335052;border-color:#6c8780;color:var(--gold)}.hintBox{font-size:13px;color:#f5ddb2;border-top:1px solid var(--line);border-bottom:1px solid var(--line);margin:16px 0;padding:14px 0}.coworkers h2{font-size:14px;font-weight:500;color:var(--muted);margin:0 0 10px}.relation{display:flex;align-items:center;gap:8px;font-size:12px;margin:7px 0}.relation .initial{display:grid;place-items:center;width:26px;height:26px;border-radius:5px;background:#35565b;color:var(--gold);font-size:13px}.relation b{font-weight:500}.relation small{margin-left:auto;color:var(--mint);font-size:11px}.saveNote{font-size:11px!important;margin:20px 0 0!important;color:#8da9af!important}footer{display:flex;justify-content:space-between;flex-wrap:wrap;gap:6px;margin-top:17px;font-size:11px;color:#9db2b9}dialog{width:min(790px,94vw);max-height:88vh;padding:0;border:2px solid #72928f;border-radius:12px;background:#1a3541;color:var(--text);box-shadow:0 10px 0 #071b25,0 24px 100px #000a}dialog::backdrop{background:#071b29a8;backdrop-filter:blur(3px)}.dialogTop{display:flex;align-items:center;justify-content:space-between;gap:20px;position:sticky;top:0;padding:18px 24px;background:#254753;border-bottom:1px solid var(--line);z-index:5}.dialogTop h2{font-size:22px;margin:1px 0}.close{font-size:26px;line-height:1;padding:7px 12px;background:transparent;box-shadow:none}#dialogBody{padding:24px}h3{font-size:17px;margin:23px 0 10px}h3:first-child{margin-top:0}p{margin:10px 0 16px}.muted,.small{font-size:13px;color:var(--muted)}.speech{display:flex;align-items:flex-start;gap:16px;margin-bottom:20px;padding:16px;background:#234552;border:1px solid #496d76;border-radius:8px}.portrait{width:52px;min-width:52px;height:56px;display:grid;place-items:center;background:#345b61;border:1px solid #6c8b89;border-radius:7px;font-size:24px;color:var(--gold)}.speech b{color:var(--gold);font-size:14px}.speech p{font-size:15px;margin:3px 0 0}.section{background:#15303c;border:1px solid #3b5c67;border-radius:8px;padding:18px;margin:16px 0}.section h3{margin-top:0}.choices{display:grid;gap:8px;margin:12px 0 18px}.choice{display:flex;align-items:flex-start;gap:10px;padding:12px;background:#22434f;border:1px solid #4d6a74;border-radius:6px;font-size:14px;cursor:pointer}.choice:has(input:checked){border-color:var(--gold);background:#3c514c}.choice input{accent-color:var(--gold);margin:6px 0 0;flex-shrink:0}.choice:has(input:disabled){opacity:.75;cursor:default}.rowActions{display:flex;align-items:center;flex-wrap:wrap;gap:10px;margin-top:15px}.rowActions .cost{font-size:12px;color:var(--gold)}.notice{border-left:3px solid var(--gold);padding:11px 15px;background:#354941;margin:14px 0;font-size:14px}.notice.good{border-color:var(--mint);background:#204f47}.tableWrap{overflow:auto}table{width:100%;border-collapse:collapse;font-size:13px}th,td{text-align:left;border-bottom:1px solid #456570;padding:10px 9px;min-width:65px}th{color:var(--mint);font-weight:500}.caseMetric{display:flex;align-items:center;gap:16px;padding:16px;background:#234b57;border-radius:8px;flex-wrap:wrap}.caseMetric strong{color:var(--gold);font-size:23px}.caseMetric span{font-size:14px}.trend{height:160px;width:100%;display:block;margin:14px 0 4px}.evidenceHead{display:flex;justify-content:space-between;gap:15px;align-items:center}.evidenceHead span{color:var(--mint);font-size:12px}textarea{width:100%;min-height:115px;resize:vertical;padding:12px;background:#112d39;border:1px solid #5a747f;border-radius:7px;color:var(--text);font-size:14px}.scoreHero{display:flex;align-items:center;gap:22px;padding:6px 0 18px}.scoreHero img{width:80px;height:80px;object-fit:contain;image-rendering:pixelated}.scoreHero strong{display:block;color:var(--gold);font:700 42px ui-monospace,monospace}.scoreHero p{margin:5px 0 0;color:var(--mint)}.scoreGrid{display:grid;grid-template-columns:1fr 1fr;gap:14px 24px}.scoreRow{font-size:13px}.scoreRow b{float:right;color:var(--mint)}.scoreRow .meter{height:6px;margin-top:4px}.jp{line-height:1.9;color:#d3e7ed}.logEntry{display:flex;gap:15px;font-size:13px;border-bottom:1px solid #355461;padding:9px 0}.logEntry time{color:var(--mint);flex-shrink:0}.history{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.stamp{background:#274c53;border:1px solid #5a7e7b;padding:13px;border-radius:7px;text-align:center;font-size:13px}.stamp strong{display:block;color:var(--gold);font-size:18px}.toast{position:fixed;bottom:28px;left:50%;transform:translateX(-50%);z-index:100;background:#ffe0a1;color:#1d353b;box-shadow:0 4px 0 #725c3a;border:1px solid #fff0c4;border-radius:7px;padding:12px 22px;max-width:90vw;font-size:14px;text-align:center}details{margin:15px 0}summary{cursor:pointer;color:var(--mint);font-size:14px}.locked{color:var(--muted);font-size:14px}.nightTitle{font-size:30px;line-height:1.4;color:var(--gold)}.bookTabs{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:20px}.bookTabs button{font-size:13px}.safetyNote{font-size:12px;color:var(--muted)}.stationsList{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.stationsList button{text-align:left;font-size:14px}@keyframes walk{0%{transform:translateY(0) rotate(-2deg)}50%{transform:translateY(-3px) rotate(2deg)}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}}@media(min-width:1550px){.worldLayout{grid-template-columns:minmax(0,1fr) 320px}}@media(max-width:1150px){.topnote{display:none}.worldLayout{grid-template-columns:minmax(0,1fr) 255px}.game{padding:18px}.agenda{padding:18px 15px}.keyHint{gap:5px;font-size:11px}.keyHint span:first-of-type{display:none}.top{padding:16px 22px}.hud{gap:18px}.energy{width:190px}}@media(max-width:900px){.worldLayout{grid-template-columns:1fr}.agenda{display:grid;grid-template-columns:1fr 1fr;column-gap:24px}.agenda>.overline,.agenda>h1,.agenda>#missionBrief{grid-column:1}.tasks{grid-column:2;grid-row:1/5}.hintBox{grid-column:1;margin:0}.coworkers{grid-column:1/3;display:none}.saveNote{grid-column:1/3}.world{max-height:none}.energy{width:180px}.day{min-width:110px}.growth{min-width:110px}.top nav a{display:none}.top{padding:12px 18px}.dpad{display:flex}.keyHint{display:none}.player{width:8%}}@media(max-width:600px){.game{padding:12px 10px}.logo b{font-size:18px}.logoGlyph{font-size:27px}.logo small{font-size:9px;letter-spacing:3px}.top{gap:10px;padding:10px 14px}.top nav{gap:6px}.top nav button{padding:7px 9px;font-size:12px}.hud{padding:10px 13px;gap:12px;flex-wrap:wrap;margin-bottom:14px}.day{padding-right:12px;min-width:98px}.day strong,.clock strong{font-size:21px}.clock>span:last-child{font-size:11px;margin-left:8px}.growth{margin-left:auto;padding-left:10px;min-width:80px}.growth .overline{font-size:10px;letter-spacing:0}.growth strong{font-size:19px}.energy{order:4;width:100%;margin:0}.energy>div:first-child{font-size:12px}.meter{height:7px;margin-top:4px}.worldTitle{padding:8px 10px;font-size:12px}.worldTitle small{display:none}.station{padding:4px 6px;font-size:10px;border-radius:4px}.station .questdot{min-width:13px;margin-right:3px;font-size:10px}.station[data-go="exit"]{font-size:9px;padding:4px 2px}.playerTag{font-size:9px;top:-10px}.player{width:9%;min-width:30px}.mapIntro{min-width:200px;padding:8px 12px;top:51%}.mapIntro strong{font-size:14px}.mapIntro span{font-size:11px}.controls{padding:10px;gap:8px;min-height:62px}.controls .primary{min-width:125px;font-size:12px;padding:9px}.dpad{gap:3px}.dpad button{padding:7px 10px;font-size:14px}.logStrip{padding:8px 10px;font-size:11px;align-items:start}.agenda{grid-template-columns:1fr;gap:0;padding:19px}.agenda>.overline,.agenda>h1,.agenda>#missionBrief,.tasks,.hintBox,.saveNote{grid-column:1;grid-row:auto}.agenda h1{font-size:22px}.agenda>p{font-size:14px}.tasks{grid-template-columns:1fr 1fr;gap:5px}.task{font-size:12px;padding:8px 4px;gap:6px}.hintBox{margin-top:10px}.saveNote{margin-top:10px!important}footer{font-size:10px;padding:0 4px}#dialogBody{padding:18px}.dialogTop{padding:14px 18px}.dialogTop h2{font-size:19px}.speech{gap:10px;padding:12px}.portrait{width:38px;min-width:38px;height:43px;font-size:20px}.speech p{font-size:14px}.scoreGrid{grid-template-columns:1fr}.history{grid-template-columns:1fr 1fr}.section{padding:14px}.stationsList{grid-template-columns:1fr}.rowActions button{font-size:14px}}

/* 手机上的弹窗：改成贴满屏幕的整页面板，永远不会比屏幕大；标题栏和关闭按钮固定在顶部。
   同时防止两种会把页面意外放大的情况：快速连点触发的双击缩放、输入框字号小于 16px 时 iOS 的聚焦放大。
   双指缩放仍然可用。这些规则放在 rpg.css，因为所有带弹窗的页面都加载它。 */
html{touch-action:manipulation;-webkit-text-size-adjust:100%;text-size-adjust:100%}
@media(pointer:coarse){input,select,textarea{font-size:16px!important}}
dialog{max-height:88dvh;overflow-x:hidden}
#dialogBody,dialog>div{overflow-wrap:anywhere;min-width:0}
#dialogBody svg,#dialogBody img,dialog svg,dialog img{max-width:100%;height:auto}
@media(max-width:600px),(max-height:520px){
 dialog[open]{inset:0!important;margin:0!important;width:100%!important;max-width:100%!important;height:100%!important;max-height:100%!important;border-radius:0;border-width:0;box-shadow:none;padding-bottom:env(safe-area-inset-bottom)}
 .dialogTop{padding:12px 14px;padding-top:calc(12px + env(safe-area-inset-top))}
 .dialogTop h2{font-size:18px}
 .dialogTop .close{min-width:44px;min-height:44px;font-size:22px}
 #dialogBody{padding:14px}
}
