:root{color-scheme:light;--ink:#263e39;--paper:#f5efda;--gold:#e9bb68}*{box-sizing:border-box}body{margin:0;background:#19332f;color:var(--ink);font-family:ui-monospace,"PingFang TC","Microsoft JhengHei",monospace}button,select,summary{-webkit-tap-highlight-color:transparent;font:inherit}button,select{color:var(--ink)}button{cursor:pointer}button:focus-visible,summary:focus-visible,select:focus-visible,canvas:focus-visible{outline:3px solid #e6aa43;outline-offset:3px}#app{max-width:1600px;margin:auto;height:100vh;height:100dvh;min-height:500px;display:flex;flex-direction:column;border-inline:1px solid #51655b}.topbar{position:relative;z-index:5;background:var(--paper);border-bottom:4px solid #a79572;display:flex;align-items:center;justify-content:space-between;padding:13px 24px;gap:12px;box-shadow:0 4px #203a3550}.brand{display:flex;gap:13px;align-items:center}.brand-icon{font-size:35px;color:#b65e43;background:#e9dfbd;border:2px solid #b09d72;padding:0 9px}h1{font-size:22px;margin:0;letter-spacing:2px}h1 span{font-size:12px;font-weight:500;letter-spacing:3px;margin-left:15px}h1+p{font-size:11px;letter-spacing:3px;margin:5px 0 0;color:#96703e}summary{cursor:pointer;list-style:none;background:#e8dfc5;border:1px solid #b4a683;padding:10px 14px;font-size:12px;white-space:nowrap}summary span{margin-left:16px}.settings-panel{position:absolute;right:24px;top:calc(100% + 10px);background:var(--paper);padding:16px;border:2px solid #7f8b72;box-shadow:5px 5px #1e322b66;width:300px}.characters{display:flex;gap:8px}.characters button{background:#e7dfc5;border:2px solid transparent;flex:1;font-size:11px;padding:4px}.characters button[aria-pressed=true]{background:#d5dfbd;border-color:#597b5a}.characters canvas{width:52px;height:65px;display:block;margin:auto;image-rendering:pixelated}.station-label{display:grid;gap:8px;font-size:12px;margin-top:16px}select{padding:10px;background:#fff9e8;border:1px solid #ac9b79;width:100%}#world{position:relative;flex:1;min-height:0;overflow:hidden;background:#9ca77b}#game{display:block;width:100%;height:100%;image-rendering:pixelated;outline:none;touch-action:none}.location{position:absolute;top:20px;left:20px;display:grid;grid-template-columns:10px auto;gap:5px 9px;padding:12px 18px;background:#f7f0dbed;border:2px solid #879078;box-shadow:3px 3px #293a3d40;pointer-events:none}.location strong{font-size:14px;letter-spacing:2px}.location small{grid-column:2;font-size:10px;color:#71795b}.live-dot{width:7px;height:7px;background:#618c55;margin-top:5px}.tools{position:absolute;top:20px;right:20px;display:flex;gap:5px}.tools button{width:38px;height:38px;font-size:22px;background:#f4eed9ec;border:2px solid #899279;box-shadow:2px 2px #233d3940}.tools button:active{transform:translateY(2px)}.map-panel{position:absolute;bottom:20px;left:20px;padding:7px;background:#f5efd9eb;border:2px solid #7f8971;box-shadow:3px 3px #233d3940}.map-panel>span{display:flex;justify-content:space-between;font-size:9px;padding-bottom:5px}.map-panel b{font-weight:400;color:#8b7850}.map-panel canvas{display:block;width:128px;height:100px;image-rendering:pixelated}.keyboard-hint{position:absolute;bottom:20px;left:50%;transform:translateX(-50%);white-space:nowrap;background:#243e37d9;color:#f0e5c9;padding:9px 15px;font-size:10px;letter-spacing:1px;pointer-events:none}.keyboard-hint i{margin:0 8px;color:#e9bb68}#message{position:absolute;left:50%;top:22px;transform:translateX(-50%);max-width:70%;padding:10px 15px;background:#263e39ec;color:#fff2cc;border:1px solid #a5a67b;font-size:12px;text-align:center;pointer-events:none}#message:empty{display:none}footer{background:#ede5cc;display:flex;gap:10px;justify-content:space-between;padding:11px 24px;font-size:11px;border-top:3px solid #a79572}footer small{font-size:9px;color:#6d735f}a{color:inherit}.touch-controls{display:none}button{user-select:none;-webkit-user-select:none}@media(pointer:coarse),(max-width:700px){.topbar{padding:10px 12px}.brand{gap:8px}.brand-icon{font-size:27px;padding:0 6px}h1{font-size:16px;letter-spacing:1px}h1 span{display:none}h1+p{font-size:9px;letter-spacing:2px}summary{font-size:10px;padding:9px}summary span{margin-left:4px}.settings-panel{right:10px;width:280px}.location{top:12px;left:12px;padding:9px 12px}.tools{top:12px;right:12px}.tools button{width:33px;height:33px}.keyboard-hint{display:none}.touch-controls{display:block;position:absolute;bottom:20px;right:16px}#dpad{display:grid;grid-template:repeat(3,52px)/repeat(3,52px);gap:4px;padding:5px;background:#243e3933;border-radius:20px;touch-action:none}#dpad button,#run{background:#f3e8cde8;border:2px solid #6e7e68;box-shadow:0 3px #2f493e70;font-size:19px;touch-action:none;border-radius:10px}#dpad button:active,#run:active,#dpad button.pressed,#run.pressed{background:#e6bb6f;transform:translateY(2px)}.up{grid-area:1/2}.left{grid-area:2/1}.right{grid-area:2/3}.down{grid-area:3/2}.pad-center{grid-area:2/2;display:grid;place-items:center;color:#efe2b9;font-size:23px}#run{position:absolute;right:183px;bottom:10px;width:53px;height:53px;font-size:15px;border-radius:50%}.map-panel{left:12px;bottom:22px}.map-panel canvas{width:96px;height:75px}.map-panel>span{font-size:8px}footer{padding:8px 12px}footer>span{display:none}footer small{font-size:8px}#message{top:70px;max-width:90%;width:max-content;font-size:11px}}@media(max-width:370px){#dpad{grid-template:repeat(3,46px)/repeat(3,46px)}#run{right:164px}.map-panel canvas{width:76px;height:60px}}
/* Keep the original world and artwork; overlays scroll independently. */
#app{min-height:0}
dialog{color:var(--ink);background:var(--paper);border:3px solid #7f8b72;box-shadow:6px 6px #19332f66;width:min(94vw,480px);max-height:calc(100dvh - 24px);overflow-y:auto;overscroll-behavior:contain;padding:22px;margin:auto}
dialog::backdrop{background:#142c27cf;backdrop-filter:blur(3px)}
dialog h2{margin:0 0 10px;font-size:23px;letter-spacing:2px}dialog p{font-size:12px;line-height:1.6}
#start-game,#overview-close,#settings,#music-toggle{padding:10px 12px;background:#e8dfc5;border:2px solid #879078;white-space:nowrap}
#start-game{width:100%;background:#d5dfbd;font-weight:bold;font-size:16px}#start-game:disabled{opacity:.5;cursor:wait}
#overview-dialog{width:min(96vw,1000px)}#overview-map{width:100%;height:auto;display:block;border:1px solid #879078;margin:12px 0}#overview-close{display:block;margin-left:auto}
#overview-open{width:auto;padding:0 10px;font-size:12px}.location{max-width:calc(100% - 260px)}.location strong{letter-spacing:0;font-size:12px;overflow-wrap:anywhere}
.music-controls{display:grid;grid-template-columns:auto minmax(90px,130px) auto;gap:4px 8px;align-items:center;font-size:11px;margin-left:auto}.music-controls select{padding:7px;min-width:0}.music-controls small{grid-column:1/-1;font-size:10px;line-height:1.3;overflow-wrap:anywhere}#music-toggle{padding:6px 8px;min-width:72px;font-size:11px}
@media(max-width:700px){.topbar{flex-wrap:wrap;gap:7px}.music-controls{order:3;flex-basis:100%;grid-template-columns:auto minmax(0,1fr) auto}.music-controls small{grid-column:2;}.topbar #settings{margin-left:auto;font-size:11px;padding:8px}.location{top:10px;left:10px;max-width:calc(100% - 20px);padding:7px 9px}.tools{top:76px;right:10px}.location strong{font-size:11px}.map-panel{bottom:14px}.touch-controls{bottom:14px;right:10px}#message{top:116px}.characters canvas{width:64px;height:80px}dialog{padding:18px}}
@media(max-height:450px){.topbar{padding:5px 12px;flex-wrap:nowrap}.brand-icon{display:none}h1{font-size:16px}h1 span,h1+p{display:none}.music-controls{order:0;flex-basis:auto;grid-template-columns:minmax(85px,110px) auto;gap:2px 6px}.music-controls label{display:none}.music-controls small{grid-column:1/-1;font-size:9px}.topbar #settings{margin-left:0}footer{padding:4px 12px}.location{top:7px;max-width:calc(100% - 260px);padding:5px 8px}.tools{top:7px}.touch-controls{display:block;bottom:8px;right:12px}#dpad{grid-template:repeat(3,40px)/repeat(3,40px);gap:3px}#run{right:145px;width:46px;height:46px}.map-panel{bottom:8px}.map-panel canvas{width:80px;height:62px}.keyboard-hint{display:none}#message{top:50px}dialog{padding:14px;max-height:calc(100dvh - 16px)}dialog h2{font-size:20px}.characters canvas{width:48px;height:60px}}
/* Touch controls are independent thumb targets, not a right-aligned D-pad. */
#scale{position:absolute;left:calc(50% - 40px);bottom:74px;color:#263e39;background:#f5efdaeb;padding:5px 7px;font-size:10px;pointer-events:none}
#scale-line{display:block;border:solid #263e39;border-width:0 2px 2px;height:5px;margin-bottom:3px}
@media(pointer:coarse),(max-width:900px),(max-height:450px){
 .touch-controls{display:block;position:absolute;inset:0;pointer-events:none;z-index:4}
 #joystick{position:absolute;left:calc(44px + env(safe-area-inset-left,0px));bottom:calc(32px + env(safe-area-inset-bottom,0px));width:136px;height:136px;border:3px solid #64745de0;border-radius:50%;background:radial-gradient(circle,#e6dfc180 0 40%,#344c3c40 41%);box-shadow:inset 0 0 0 9px #f5efda30;touch-action:none;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none;pointer-events:auto}
 #stick-knob{position:absolute;left:calc(50% - 26px);top:calc(50% - 26px);width:52px;height:52px;border:2px solid #52694f;border-radius:50%;background:#e6d8a8f2;box-shadow:0 3px 0 #344c3c80;pointer-events:none}
 #run{position:absolute;right:calc(44px + env(safe-area-inset-right,0px));bottom:calc(44px + env(safe-area-inset-bottom,0px));width:76px;height:76px;font-size:20px;border:3px solid #64745d;border-radius:50%;background:#f3e8cdeb;box-shadow:0 3px #2f493e70;touch-action:none;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none;pointer-events:auto}
 #run.pressed{background:#e6bb6f;transform:translateY(2px)}
 .map-panel{left:auto;right:12px;top:122px;bottom:auto;pointer-events:none}
 .map-panel canvas{width:96px;height:75px}.keyboard-hint{display:none}
 #scale{left:calc(44px + env(safe-area-inset-left,0px));bottom:calc(190px + env(safe-area-inset-bottom,0px))}
}
@media(max-width:370px){#joystick{left:calc(32px + env(safe-area-inset-left,0px));width:128px;height:128px}#run{right:calc(32px + env(safe-area-inset-right,0px));width:68px;height:68px}#scale{left:calc(32px + env(safe-area-inset-left,0px));bottom:calc(182px + env(safe-area-inset-bottom,0px))}.map-panel canvas{width:76px;height:60px}}
@media(max-height:450px){#joystick{width:128px;height:128px}.map-panel{top:58px;bottom:auto}.map-panel canvas{width:80px;height:62px}#scale{bottom:calc(182px + env(safe-area-inset-bottom,0px))}}
