@font-face{font-family:system;src:local('Noto Sans TC')}*{box-sizing:border-box}html,body{margin:0;width:100%;height:100%;overflow:hidden}body{font-family:Inter,'Noto Sans TC','Microsoft JhengHei',system-ui,sans-serif;color:#153c4d;background:#e0e9e8}button,select,input{font:inherit}button{min-height:44px;border:1px solid #aac0c6;background:#f5f9f9;color:#163d50;border-radius:10px;padding:9px 16px;cursor:pointer;transition:background .15s,transform .15s}button:hover{background:#e0f0ed}button:active{transform:translateY(1px)}button:disabled{opacity:.5;cursor:default}button:focus-visible,select:focus-visible,canvas:focus-visible{outline:3px solid #28b4a6;outline-offset:3px}[hidden]{display:none!important}.primary{background:#176f77;color:#fff;border-color:#176f77;font-weight:600}.primary:hover{background:#205c66}#scene{display:block;width:100%;height:100%;touch-action:none;outline:none}#loading,#fatal{position:fixed;inset:0;z-index:100;display:flex;align-items:center;justify-content:center;flex-direction:column;background:#123a4c;color:#f1fbfa;text-align:center;padding:28px}#loading h1{font-size:28px;letter-spacing:.1em;line-height:1.5;font-weight:500}#loading h1 span{font-size:17px;letter-spacing:.33em;color:#9ad5d0}#loading progress{width:220px;height:5px;accent-color:#84cec3;border:0}#fatal p{max-width:560px;line-height:1.8}#fatal h1{font-size:26px}.brandmark{font-size:60px;color:#8ed6ce;font-weight:200}#hud{position:fixed;top:0;left:0;right:0;display:flex;justify-content:space-between;align-items:center;padding:max(18px,env(safe-area-inset-top)) 28px 16px;background:linear-gradient(#f3f8f8ef,#f3f8f8a8,transparent);pointer-events:none}.identity,.hud-actions{display:flex;gap:12px;align-items:center;pointer-events:auto}.cross{font-size:32px;font-weight:300;color:#267e88}.identity strong{font-size:15px;letter-spacing:.1em}.identity small{display:block;font-size:11px;letter-spacing:.19em;margin-top:4px;color:#597f8b}.identity small span{margin-left:12px;letter-spacing:.04em;font-size:10px}.hud-actions button{background:#f7fbfbea;backdrop-filter:blur(12px);font-size:14px}.hud-actions button span{margin-left:14px;color:#78949c;font-size:12px}.hud-actions #helpOpen{font-size:20px;width:44px;padding:4px}.eyebrow{font-size:11px;letter-spacing:.12em;color:#4e8c94;font-weight:600}#welcome{position:fixed;left:6vw;top:24vh;width:min(480px,80vw);padding:28px 34px;background:#f8fbf8e8;backdrop-filter:blur(16px);border:1px solid #ffffffc4;border-radius:4px 28px 28px 4px;box-shadow:0 15px 70px #183a4d18;border-left:4px solid #3e949a}#welcome h1{font-weight:500;font-size:clamp(28px,4vw,45px);line-height:1.3;margin:20px 0}#welcome>p{font-size:17px;line-height:1.85;color:#4e707b}#welcome #start{margin:10px 0 8px;width:100%;display:flex;justify-content:space-between;align-items:center}#welcome .scope{font-size:12px;line-height:1.7;color:#6f8991}.fine{font-size:13px;line-height:1.7;color:#6e8b96}#loading .fine{color:#a7cbd3}#location{position:fixed;top:96px;left:28px;display:flex;gap:10px;align-items:center;padding:10px 15px;background:#f7faf9e8;border:1px solid #ffffffab;border-radius:12px;box-shadow:0 4px 24px #1a4a5410;pointer-events:none}#location strong{font-size:14px;font-weight:600}#location small{display:block;font-size:10px;letter-spacing:.08em;color:#6b8b95;margin-top:3px}.status-dot{width:7px;height:7px;border-radius:50%;background:#26988d}.authorized{padding-left:12px;border-left:1px solid #c8dadb;color:#5a7e85;font-size:11px}#exploreCard{position:fixed;right:28px;top:96px;width:270px;background:#133c4fee;border:1px solid #6fa1aa80;border-radius:14px;color:#e5f6f6;box-shadow:0 8px 30px #173c4d18;backdrop-filter:blur(12px)}#cardToggle{display:flex;justify-content:space-between;width:100%;border:0;background:transparent;color:#d9efef;border-radius:14px;font-size:14px;padding:12px 16px}#cardBody{padding:0 16px 15px}#cardBody>p{font-size:14px;margin:0 0 12px;color:#b4d4db}.zone-buttons{display:flex;gap:6px}.zone-buttons button{background:#285366;border-color:#5a818e;color:#e0f5f3;flex:1;font-size:13px;padding:7px 6px}#routeStatus{display:block;font-size:11px;line-height:1.7;color:#a3c9d0;margin-top:12px}#controls{position:fixed;bottom:max(22px,env(safe-area-inset-bottom));left:28px;right:28px;display:flex;align-items:center;gap:12px;pointer-events:none}#controls button{pointer-events:auto;box-shadow:0 4px 20px #14384920}.keyboard-help{font-size:12px;color:#33535f;text-shadow:0 1px 4px #fff;background:#f3faf8d9;border-radius:10px;padding:10px 12px;line-height:1.6}kbd{font-family:inherit;font-weight:600}i{font-style:normal;color:#86a4ac;margin:0 8px}#interact{margin-left:auto;min-width:190px}.hotspot{position:fixed;min-width:44px;min-height:44px;font-size:12px;padding:6px 12px;background:#f4fff9ed;border:1px solid #76aaa5;border-radius:22px;color:#20515a;box-shadow:0 4px 20px #173d5520;transform:translate(-50%,-100%);white-space:nowrap;z-index:5}.hotspot:hover{background:white}.hotspot.npc{background:#e1f6efef}.hotspot:active{transform:translate(-50%,-100%)}#minimap{position:fixed;right:28px;bottom:85px;width:220px;padding:10px 12px 7px;background:#f3faf9df;border:1px solid #d3e2e4;border-radius:12px;pointer-events:none}#minimap svg{display:block;width:100%;height:auto}#minimap small{display:block;font-size:10px;text-align:right;color:#6f9399;margin-top:2px}#joystick{position:fixed;left:max(24px,env(safe-area-inset-left));bottom:max(24px,env(safe-area-inset-bottom));width:120px;height:140px;text-align:center;z-index:10;touch-action:none;user-select:none}#joystick small{font-size:11px;color:#355761;background:#edf6f2d9;padding:2px 10px;border-radius:8px}.joystick-ring{width:112px;height:112px;border:1px solid #e5f3f1b3;background:#315d6c33;box-shadow:inset 0 0 24px #ffffff60;border-radius:50%;display:grid;place-items:center}#stick{display:block;width:46px;height:46px;border:2px solid #effaf6a8;border-radius:50%;background:#336b7cc2;box-shadow:0 3px 16px #123a4b33}#portraitHint{position:fixed;bottom:160px;left:18px;right:18px;font-size:12px;color:#436873;background:#effaf6e8;padding:10px 12px;border-radius:10px;text-align:center;pointer-events:none}#returnView{position:fixed;left:50%;bottom:28px;transform:translateX(-50%);background:#153f50;color:#fff;border-color:#568393;z-index:15}#toast{position:fixed;bottom:96px;left:50%;transform:translateX(-50%);max-width:80vw;background:#123b4eeb;color:#e4f7f5;border:1px solid #6da7aa;padding:12px 18px;border-radius:10px;font-size:14px;z-index:40;text-align:center;pointer-events:none}dialog{width:min(660px,calc(100vw - 32px));max-height:calc(100dvh - 32px);padding:30px;border-radius:18px;border:1px solid #b2ccd1;background:#f1f7f6;color:#153c4d;box-shadow:0 18px 80px #08293545;overflow:auto}dialog::backdrop{background:#0a2a3b80;backdrop-filter:blur(4px)}dialog h2{font-size:25px;font-weight:500;margin:12px 40px 18px 0}dialog p{font-size:16px;line-height:1.9}dialog .fine{font-size:13px}.dialog-close{position:absolute;right:12px;top:12px;min-width:44px;font-size:24px;padding:0;border:0;background:transparent}dialog>button.primary{margin-top:12px}#map{width:min(1040px,calc(100vw - 32px))}#map>p{font-size:14px;margin:4px 0 14px}#planDrawing{background:#e6efee;padding:12px;border-radius:12px;max-height:50dvh;overflow:auto}#planDrawing svg{display:block;width:100%;min-width:440px;min-height:210px}.map-views{display:flex;gap:8px;flex-wrap:wrap;margin-top:16px}.map-views button{flex:1;white-space:nowrap}dl{font-size:15px;line-height:1.8}dt{font-weight:600;color:#267f87;margin-top:18px}dd{margin:5px 0 0}#settings label{display:block;margin:20px 0;font-size:16px}#settings select{display:block;width:100%;margin-top:10px;padding:12px;border:1px solid #a5bfc6;background:#fff;color:#163b4c;border-radius:8px}#settings .check{display:flex;align-items:center;gap:10px}#settings input{width:20px;height:20px;accent-color:#227a83}
@media(max-width:960px),(pointer:coarse){#hud{padding:12px 18px}.identity strong{font-size:12px}.identity small{font-size:9px}.identity small span{display:none}.cross{font-size:24px}.hud-actions{gap:6px}.hud-actions button{padding:6px 10px;font-size:12px}.hud-actions button span{display:none}#location{top:74px;left:18px;padding:8px 12px}.authorized{display:none}#exploreCard{top:74px;right:18px;width:220px}#cardBody{font-size:12px}#cardBody>p{font-size:12px}#minimap{display:none}#controls{left:160px;right:18px;bottom:24px}.keyboard-help{display:none}#interact{min-width:150px}.hotspot{font-size:12px}#welcome{top:21vh;left:5vw;padding:20px 26px;width:min(420px,80vw)}#welcome h1{font-size:30px;margin:12px 0}#welcome>p{font-size:15px;margin:10px 0}#welcome .scope{font-size:11px;margin:6px 0}#portraitHint{bottom:175px}#toast{bottom:160px}}
@media(max-height:520px){#location{top:64px}#exploreCard{top:64px}#cardBody>p{display:none}#welcome{top:75px;padding:18px 24px;width:360px}#welcome h1{font-size:28px;margin:8px 0}#welcome>p{font-size:13px;line-height:1.5}#welcome .scope{font-size:10px}#joystick{width:100px;height:115px;bottom:16px}.joystick-ring{width:90px;height:90px}#controls{bottom:18px}#toast{bottom:80px}#planDrawing{max-height:40dvh}dialog{padding:22px}dialog h2{font-size:22px}#help dl{font-size:13px;line-height:1.5}#help dt{margin-top:10px}#help p{margin:8px 0}}
@media(max-width:500px){#hud .identity strong{font-size:10px;letter-spacing:.04em}#hud .cross{display:none}.identity small{letter-spacing:.09em}.hud-actions button{padding:5px 8px}#exploreCard{width:calc(100vw - 36px);top:128px}#location{top:74px}#cardBody{display:none}#exploreCard.expanded #cardBody{display:block}#controls #cameraReset{display:none}#controls{left:150px;right:18px}#interact{min-width:0;flex:1;font-size:13px}#welcome{top:25vh;width:90vw;left:5vw}#map .map-views{display:grid;grid-template-columns:1fr 1fr}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}}
@media(max-width:1000px){.hotspot[data-item^="BED-"]{min-width:44px;padding:6px 10px;font-size:12px}.zone-buttons button{white-space:nowrap;font-size:12px;padding:7px 4px}}
/* Mission UI stays separate from the 3D scene and does not replace its layout. */
.avatar-choice{display:flex;align-items:center;gap:14px}.avatar-choice select,select[data-pair]{padding:10px;border-radius:8px;border:1px solid #7da6ac;background:#f4faf8;color:#173d50;min-height:44px}#missionBody{font-size:14px;line-height:1.65}#missionBody small{color:#c2dfdf}.mission-next{margin:4px 0 10px}.mission-tools{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin-top:12px}.mission-tools button{background:#24566a;color:#f3fffd;border-color:#64909a;padding:6px;font-size:13px}#missionBody>button{margin:8px 5px 4px 0}.zone-buttons{margin-top:12px}#minimap{top:96px;bottom:auto;right:28px;width:230px;padding:5px;pointer-events:auto}#miniMapOpen{display:block;width:100%;padding:4px;border:0;background:transparent}#miniDrawing{display:block}#miniToggle{min-height:30px;font-size:11px;padding:3px 8px;display:block;margin-left:auto}#exploreCard{top:300px}#minimap small{font-size:12px;text-align:left}.hotspot.objective{background:#155b62;color:#fff;border:2px solid #91efcf;box-shadow:0 0 0 5px #51b8a833}.choice-row,.journey-tabs{display:flex;gap:8px;flex-wrap:wrap;margin:12px 0}.choice-row button,.journey-tabs button{flex:1;min-width:120px}button[aria-pressed=true]{border-color:#38b9a6;background:#15575f;color:white;box-shadow:inset 0 0 0 1px #38b9a6}#journey{background:#102e3d;color:#e4f4f3;border-color:#5f8c96;width:min(800px,calc(100vw - 24px));max-height:calc(100dvh - 24px)}#journey.wide{width:min(1120px,calc(100vw - 24px))}#journey .fine{color:#aac9cc}#journey .eyebrow{color:#88cfc3}#journey .dialog-close{color:#e6faf4}#journey p{font-size:16px;line-height:1.7}#journey h3{font-size:19px;font-weight:600}#journey select{width:100%}.device-reading{border-left:3px solid #4dc7b3;padding:14px 18px;background:#194253;border-radius:0 12px 12px 0;margin:16px 0}.device-reading svg{display:block;width:100%;height:65px}.device-reading small{display:block;margin-top:8px}.matching{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}.matching label{line-height:2}.data-route{display:flex;gap:14px;list-style:none;padding:0}.data-route li{flex:1;padding:14px 8px;background:#225668;border-radius:8px;border-bottom:3px solid #5cd8bf}.locator-plan{position:relative;background:#e6efee;border-radius:12px;overflow:hidden}.locator-plan svg{display:block;width:100%;max-height:240px}.found-pump{position:absolute;top:65%;left:52%;color:#fff;background:#145653;padding:8px;border-radius:8px}.flow-nodes{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin:22px 0}.flow-nodes>div>button{width:100%;min-height:160px;background:#19485b;color:#eefcf8;border-color:#6796a2;text-align:left;display:flex;flex-direction:column;gap:12px}.flow-nodes small{color:#94dacc}.flow-nodes strong{font-size:20px}.flow-nodes span{font-size:14px;line-height:1.6}.edge{font-size:13px;color:#9cb8c2;margin:12px 0}.edge.connected{color:#8de6c8}.edge button{display:block;font-size:12px;margin-top:6px}.transmitting>div{border-top:3px solid #63dbc1;animation:transfer 2s ease-in-out 2}.transmitting>div:nth-child(2){animation-delay:.2s}.transmitting>div:nth-child(3){animation-delay:.4s}.transmitting>div:nth-child(4){animation-delay:.6s}@keyframes transfer{50%{filter:brightness(1.45)}}.bed-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:10px}.bed-grid button{text-align:left;background:#1c4658;color:#f0fffa;border-color:#527c8b;padding:14px 12px}.bed-grid strong,.bed-grid small{display:block}.bed-grid small{font-size:14px;line-height:1.8;margin-top:10px}#journey fieldset{border:1px solid #5a8792;border-radius:12px;margin:18px 0;padding:16px}#journey legend{line-height:1.6;padding:0 8px}#journey fieldset button{display:block;margin:8px 0;width:100%;text-align:left}.completion{padding:18px;background:linear-gradient(135deg,#194f5d,#19364b);border-radius:16px}.completion>span{color:#8de8c9}.completion li{line-height:1.9}.completion button{margin:8px 10px 0 0}#settings input[type=range]{width:100%;height:32px}
@media(max-width:960px),(pointer:coarse){#minimap{display:block;top:68px;right:18px;width:155px}#miniDrawing svg{height:72px}#minimap small{font-size:10px}#exploreCard{top:220px;width:220px}#missionBody{font-size:13px}#routeStatus{font-size:12px}.flow-nodes>div>button{min-height:135px}.flow-nodes strong{font-size:17px}}
@media(max-height:520px){#exploreCard{top:64px;right:184px;width:215px}#cardBody{max-height:220px;overflow:auto}#minimap{top:64px}#welcome{top:65px}#welcome .scope{display:none}#welcome h1{font-size:25px}#welcome .avatar-choice{font-size:13px}#welcome select{padding:5px}#journey{padding:20px}#journey h2{font-size:21px}.flow-nodes{margin:12px 0;gap:10px}.flow-nodes>div>button{min-height:120px;padding:10px}.bed-grid{grid-template-columns:repeat(5,minmax(135px,1fr));overflow-x:auto}.device-reading{margin:10px 0}}
@media(max-width:500px){#minimap{top:70px;width:120px}#exploreCard{top:228px;width:calc(100vw - 36px);right:18px}.flow-nodes,.matching{grid-template-columns:1fr 1fr}.bed-grid{grid-template-columns:1fr 1fr}.flow-nodes>div>button{min-height:150px}.data-route{flex-wrap:wrap}.data-route li{flex-basis:40%}#welcome{top:22vh}#welcome .scope{display:none}}
@media(prefers-reduced-motion:reduce){.transmitting>div{animation:none}}
body[data-reduced-motion=true] .transmitting>div{animation:none}#journeyNotice,#pairFeedback:not(:empty){border-left:3px solid #e2bc75;background:#55472c;color:#ffefce;padding:12px;font-size:15px}
#journey .dialog-close{position:sticky;float:right;top:0;margin:-12px -12px 0 0;background:#1c4d5b;z-index:5}
.comparison-preview{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin:16px 0}.comparison-preview article{padding:14px;border:1px solid #6a9da5;background:#1e495b;border-radius:10px}.comparison-preview p{margin:8px 0}.comparison-preview.after{gap:0;background:#1e495b;border:1px solid #6a9da5;border-radius:10px;padding:12px}.comparison-preview.after h3{grid-column:1/-1;margin:0 0 12px}.comparison-preview.after article{border:0;border-radius:0;border-left:1px solid #6a9da5}.hotspot.npc.objective::before{content:'！';font-weight:bold;margin-right:4px}.found-pump{left:63.3%;top:70%}
@media(max-width:500px){.comparison-preview{grid-template-columns:1fr}.comparison-preview.after article{border-left:0;border-top:1px solid #6a9da5}}
/* Always-visible next action; details may collapse without hiding the task. */
#exploreCard{width:300px;top:280px}#missionSummary{padding:0 14px 14px}#missionInstruction{font-size:15px;line-height:1.55;margin:0 0 10px;color:#e7f7f4}#missionPrimary{display:block;width:100%;min-height:44px;background:#8dd8c7;color:#113d48;border-color:#a8ebd9;text-align:center}#missionBody{font-size:13px;padding-top:10px;border-top:1px solid #62848b}#cardBody{max-height:230px;overflow:auto}.mission-tools{grid-template-columns:1fr 1fr}.mission-tools button{font-size:13px}body[data-tutorial-step="1"] #joystick .joystick-ring{border:3px solid #5ae3c5;box-shadow:0 0 0 5px #216b6040}#minimap small{line-height:1.4}
@media(pointer:coarse){#hud{padding:10px 12px;min-height:58px}.identity{gap:6px}.identity strong{font-size:11px}.identity small{font-size:8px}.hud-actions{gap:5px}.hud-actions button{font-size:12px;padding:6px 10px}#location{top:65px;left:12px;padding:6px 10px;border-radius:9px;max-width:calc(100vw - 142px);box-shadow:none}#location strong{font-size:13px}#location small{font-size:9px;letter-spacing:.02em}#minimap{top:65px;right:12px;width:112px;background:transparent;border:0;padding:0}#miniToggle{min-height:44px;width:100%;font-size:12px;background:#f3faf9ed;border:1px solid #aac0c6}#miniMapOpen{display:none}#exploreCard{top:116px;right:12px;width:270px}#cardToggle{padding:8px 12px;font-size:13px}#missionSummary{padding:0 12px 12px}#missionInstruction{font-size:14px;line-height:1.45;margin-bottom:9px}#cardBody{max-height:150px}#controls{bottom:max(16px,env(safe-area-inset-bottom));right:12px}#joystick{bottom:max(16px,env(safe-area-inset-bottom))}#toast{bottom:155px;font-size:13px;max-width:calc(100vw - 32px)}}
@media(pointer:coarse) and (orientation:portrait){#exploreCard{top:116px;left:12px;right:12px;width:auto}#cardBody{max-height:185px}#controls{left:145px}#joystick{left:14px}#interact{font-size:13px;padding:9px 10px}#missionInstruction{font-size:14px}#cardBody>small{font-size:12px}}
@media(pointer:coarse) and (orientation:portrait) and (max-height:700px){#exploreCard{top:106px}#missionInstruction{font-size:13px}#missionSummary{padding-bottom:10px}}
@media(pointer:coarse) and (orientation:landscape){#toast{top:122px;bottom:auto;left:12px;right:auto;max-width:240px;transform:none}}
@media(pointer:coarse) and (orientation:portrait){#toast{top:270px;bottom:auto;left:12px;right:12px;max-width:none;transform:none}}
@media(pointer:coarse) and (orientation:portrait) and (max-height:700px){#toast{top:240px}}
#cardToggle[aria-expanded=false] span{transform:rotate(180deg)}
.hotspot.gift::before{content:'🎁';margin-right:6px}.reward-note{display:flex;align-items:center;gap:14px;border-left:3px solid #8bdac3;background:#214e59;padding:12px 16px;border-radius:0 12px 12px 0}.reward-note>span{font-size:28px}.reward-note p{margin:0!important}.reward-success{color:#a1e9d0;font-weight:600}.reward-promise{color:#c7e1db}#journey.keepsake-dialog{width:min(1040px,calc(100vw - 24px))}.keepsake-layout{display:grid;grid-template-columns:minmax(180px,1.1fr) minmax(240px,1fr);gap:28px;align-items:start}#keepsakeImage{display:block;width:100%;max-height:65dvh;object-fit:contain;border-radius:12px}.keepsake-controls{font-size:15px;line-height:1.6}.keepsake-controls small{font-size:13px;color:#b5d0d1}.keepsake-downloads{display:grid;gap:10px;margin:18px 0}.keepsake-controls nav{display:flex;flex-wrap:wrap;gap:8px;margin:16px 0}.keepsake-controls button{min-height:44px}.keepsake-controls #keepsakeSaveStatus{font-size:13px;line-height:1.6;color:#bbd6d5}
@media(max-width:600px){.keepsake-layout{grid-template-columns:1fr;gap:16px}.keepsake-controls{order:-1}.keepsake-controls>p{margin:8px 0!important}.keepsake-downloads{grid-template-columns:1fr 1fr;margin:12px 0}.keepsake-downloads button{font-size:14px;padding:10px}#keepsakeImage{max-height:none;width:100%}.keepsake-controls nav{margin:10px 0}.keepsake-controls nav button{font-size:13px}}
@media(max-height:520px) and (orientation:landscape){#keepsakeImage{max-height:calc(100dvh - 130px)}.keepsake-layout{gap:20px}.keepsake-controls>p{font-size:14px!important;margin:8px 0}.keepsake-downloads{grid-template-columns:1fr 1fr;margin:10px 0}.keepsake-downloads button{font-size:13px;padding:8px}.keepsake-controls nav button{font-size:13px;padding:8px}}
.keepsake-warning{border-left:3px solid #d3b37c;background:#4b442f;padding:10px 12px;color:#ffedc7}
