:root{font-family:Inter Variable,Noto Sans TC Variable,sans-serif;color:#355376;background:#d9e6f4;font-synthesis:none;--blue: #527cbb;--muted: #718ba5;--glass: rgba(249, 252, 255, .76);--border: rgba(255, 255, 255, .9);--radius: 24px;--safe-top: env(safe-area-inset-top, 0px);--safe-right: env(safe-area-inset-right, 0px);--safe-bottom: env(safe-area-inset-bottom, 0px);--safe-left: env(safe-area-inset-left, 0px);--edge: 24px}*{box-sizing:border-box}body{margin:0;overflow:hidden;overscroll-behavior:none}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;color:inherit;cursor:pointer}button:focus-visible,a:focus-visible{outline:3px solid #5798dc;outline-offset:4px}#viewport{position:fixed;inset:0}#viewport canvas{display:block;touch-action:none}#viewport canvas:focus{outline:none}.glass{background:var(--glass);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);border:1px solid var(--border);box-shadow:0 8px 35px #4c78a015;border-radius:var(--radius)}.topbar{position:fixed;inset:0 0 auto;pointer-events:none;z-index:15}.wordmark{position:absolute;top:calc(var(--safe-top) + var(--edge));left:50%;transform:translate(-50%);max-width:calc(100vw - var(--safe-left) - var(--safe-right) - 32px);padding:0;pointer-events:auto;color:inherit;text-align:center;font-size:clamp(23px,3vw,32px);font-weight:inherit;margin:0;opacity:1;transition:left .65s ease,transform .65s ease,font-size .65s ease,opacity .65s ease}.wordmark-button{display:block;padding:0;border:0;background:none;text-align:inherit}.brand-name{display:flex;align-items:baseline;justify-content:center;gap:.34em;white-space:nowrap;letter-spacing:-.04em}.brand-name b{font-weight:700}.brand-name i{font-style:normal;font-weight:300;letter-spacing:.035em}.brand-subtitle{display:block;font-size:9px;font-weight:500;letter-spacing:.2em;margin-top:7px;transition:opacity .4s ease,max-height .6s ease;max-height:20px}.wordmark.is-compact{left:calc(var(--safe-left) + var(--edge));transform:none;font-size:14px;opacity:.83;text-align:left}.wordmark.is-compact .brand-subtitle{opacity:0;max-height:0;overflow:hidden}.round{width:44px;height:44px;border-radius:50%;border:1px solid #ffffffd9;background:#ffffffa0;font-size:19px;display:grid;place-items:center}#help-button{position:fixed;right:calc(var(--safe-right) + var(--edge));bottom:calc(var(--safe-bottom) + var(--edge));z-index:16}#map-panel{position:fixed;top:calc(var(--safe-top) + 86px);left:calc(var(--safe-left) + var(--edge));width:64px;height:64px;padding:4px;overflow:hidden;border-radius:50%;z-index:14;transition:width .35s ease,height .35s ease,border-radius .35s ease,padding .35s ease}.map-top{display:none;justify-content:space-between;font-size:10px;letter-spacing:1px;font-weight:600;white-space:nowrap}#minimap{display:block;width:54px;height:47px;margin:auto}#map-caption{display:none;border-top:1px solid #bed0e04d;padding-top:10px;font-size:12px;color:var(--muted);text-align:left;white-space:nowrap}#map-panel.is-expanded{width:192px;height:218px;border-radius:22px;padding:15px}#map-panel.is-expanded .map-top{display:flex}#map-panel.is-expanded #minimap{width:160px;height:140px;margin:4px 0}#map-panel.is-expanded #map-caption{display:block}#welcome{position:fixed;left:50%;top:calc(var(--safe-top) + 28vh);transform:translate(-50%);text-align:center;pointer-events:none;transition:opacity .8s;width:min(600px,calc(100vw - var(--safe-left) - var(--safe-right) - 40px))}#welcome>span{font-size:clamp(22px,3vw,38px);font-weight:500;letter-spacing:-1px}#welcome p{font-size:14px;margin-top:14px;color:var(--muted);line-height:1.8}footer{position:fixed;bottom:calc(var(--safe-bottom) + var(--edge));left:calc(var(--safe-left) + var(--edge));right:calc(var(--safe-right) + 88px);display:flex;justify-content:space-between;align-items:center;gap:24px;pointer-events:none;transition:opacity .25s}.camp-open footer{opacity:0}.location-label{display:flex;gap:12px;align-items:center}.location-line{height:32px;width:3px;border-radius:3px;background:#7a9dc8;flex-shrink:0}.location-label strong{font-size:15px;font-weight:500;display:block}.location-label small{font-size:12px;color:var(--muted);display:block;margin-top:5px}.desktop-controls{font-size:12px;color:var(--muted);display:flex;align-items:center;gap:8px}kbd{font-family:inherit;border:1px solid #adc0d36b;border-radius:6px;background:#ffffff40;padding:6px;font-size:10px}.desktop-controls>span{margin-left:12px}#loading{position:fixed;inset:0;z-index:40;background:#edf4fc;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;padding:calc(var(--safe-top) + 24px) calc(var(--safe-right) + 16px) calc(var(--safe-bottom) + 24px) calc(var(--safe-left) + 16px)}#loading .loading-brand{font-size:clamp(22px,5vw,32px);font-weight:700;letter-spacing:-.04em;text-align:center}.loading-brand span{font-weight:300;letter-spacing:.035em}#loading p{font-size:14px;color:var(--muted)}.loading-mark{font-size:44px;color:#7199c9;animation:float 2s ease-in-out infinite}@keyframes float{50%{transform:translateY(-8px)}}#help-dialog{color:inherit;width:min(440px,calc(100vw - var(--safe-left) - var(--safe-right) - 40px));max-height:calc(100dvh - var(--safe-top) - var(--safe-bottom) - 40px);padding:34px;overflow-y:auto}#help-dialog::backdrop{background:#6e8cab50;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}#help-close{position:absolute;right:12px;top:12px}.eyebrow{font-size:11px;letter-spacing:2px}h1,#help-dialog h2{font-weight:500;font-size:30px}#help-dialog p{font-size:15px;line-height:1.8}#help-dialog .primary+.primary{margin-left:8px}.model-note{color:var(--muted)}.primary{border:0;border-radius:12px;padding:12px 18px;min-height:44px;background:#5c80b6;color:#fff;text-decoration:none;display:inline-flex;align-items:center;justify-content:space-between;gap:16px;font-size:14px;white-space:nowrap}.primary:disabled{opacity:.55;cursor:default}#product-card[hidden]{display:none}#product-card{position:fixed;left:calc(50% + (var(--safe-left) - var(--safe-right)) / 2);bottom:calc(var(--safe-bottom) + var(--edge));width:min(560px,calc(100vw - var(--safe-left) - var(--safe-right) - 48px));max-height:30vh;max-height:30dvh;padding:20px 24px;display:flex;align-items:flex-start;gap:24px;overflow-y:auto;overscroll-behavior:contain;opacity:0;transform:translate(-50%,calc(100% + 200px));transition:opacity .28s ease,transform .28s ease;pointer-events:none;z-index:12}#product-card.is-open{opacity:1;transform:translate(-50%);pointer-events:auto}.card-content{flex:1;min-width:0}.card-title{display:flex;align-items:center;gap:10px}.card-icon{color:var(--camp-accent);font-size:22px}#product-card h2{font-size:22px;margin:0;line-height:1.25;font-weight:500;letter-spacing:-.6px;overflow-wrap:anywhere}#product-card p{font-size:14px;margin:8px 0 0;line-height:1.6;color:#617b96}.card-action{align-self:center;display:flex;flex-direction:column;align-items:center;gap:5px;flex-shrink:0}.card-action .primary{background:var(--camp-accent)}.card-action small{font-size:10px;color:var(--muted)}#joystick{display:none;position:fixed;left:calc(var(--safe-left) + 24px);bottom:calc(var(--safe-bottom) + 24px);width:104px;height:129px;pointer-events:none;user-select:none;z-index:13}#joystick.is-active{display:block}.joy-ring{width:104px;height:104px;border:1px solid #ffffffdc;background:#fff3;border-radius:50%;box-shadow:0 8px 30px #6991b616;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);position:relative}.joy-center{position:absolute;left:30px;top:30px;width:42px;height:42px;border-radius:50%;background:#f9fcffcc;border:1px solid white;box-shadow:0 3px 14px #688ebd22}.joy-caption{font-size:11px;display:block;text-align:center;margin-top:9px;color:#718ba5}@media(max-width:700px),(pointer:coarse){:root{--edge: 16px}.brand-subtitle{font-size:8px}.desktop-controls{display:none}#help-dialog .primary{width:100%;margin-left:0;margin-top:8px}footer{left:calc(var(--safe-left) + 152px);right:calc(var(--safe-right) + 76px);bottom:calc(var(--safe-bottom) + 28px)}.location-label{gap:8px}.location-label strong{font-size:12px}.location-label small{display:none}#welcome p{font-size:13px;max-width:270px;margin:12px auto}#product-card{bottom:calc(var(--safe-bottom) + 166px);padding:14px 16px;gap:12px;width:calc(100vw - var(--safe-left) - var(--safe-right) - 32px)}#product-card h2{font-size:18px}#product-card p{font-size:13px;margin-top:6px}.card-action .primary{padding:10px 14px;gap:8px}}@media(max-height:500px)and (orientation:landscape){#map-panel{top:calc(var(--safe-top) + 54px)}#map-panel.is-expanded{width:132px;height:143px;padding:10px}#map-panel.is-expanded #minimap{width:110px;height:96px}#map-panel.is-expanded .map-top{font-size:8px;letter-spacing:.3px}#map-panel.is-expanded #map-caption{display:none}.wordmark{font-size:23px}.wordmark.is-compact{font-size:13px}#product-card{bottom:calc(var(--safe-bottom) + 16px);width:min(500px,calc(100vw - var(--safe-left) - var(--safe-right) - 300px));padding:10px 14px}#product-card h2{font-size:16px}#product-card p{font-size:12px;line-height:1.4}#joystick{bottom:calc(var(--safe-bottom) + 12px)}#welcome{max-width:350px}footer{display:none}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}}
