@font-face{font-family:Roboto;src:url(assets/fonts/Roboto-Regular.ttf) format("truetype");font-weight:400;font-display:swap}@font-face{font-family:Roboto;src:url(assets/fonts/Roboto-Medium.ttf) format("truetype");font-weight:500 700;font-display:swap}:root{font-family:Roboto,Arial,"Noto Sans",sans-serif;color:#edf0f5;background:#121a24;font-synthesis:none;--panel:rgba(38,47,65,.82);--muted:#b6bfcd;--gold:#ebc67c;--line:rgba(206,218,238,.22)}*{box-sizing:border-box}body{margin:0;overflow:hidden}button,input,select{font:inherit}button{color:inherit;cursor:pointer;border:1px solid transparent;background:none}button:focus-visible,input:focus-visible,select:focus-visible{outline:2px solid var(--gold);outline-offset:3px}button:hover{background:rgba(219,230,255,.10)}[hidden]{display:none!important}#scene{display:block;width:100vw;height:100dvh;touch-action:none;outline:none}.panel{background:var(--panel);border:1px solid var(--line);border-radius:7px;box-shadow:0 5px 22px #0000000c}.brand{position:absolute;left:1.2vw;top:2.1vh;width:28.6vw;min-width:310px;height:8vh;min-height:64px;display:flex;align-items:center;padding:12px 16px;gap:16px;font-size:clamp(22px,1.62vw,30px);font-weight:400}.brand svg{width:64px;height:46px;flex-shrink:0;fill:none;stroke:white;stroke-width:3.5}.brand small{display:block;font-size:clamp(9px,.78vw,14px);letter-spacing:3px;margin-top:4px;color:var(--muted)}.intro{position:absolute;left:1.45vw;top:12vh;padding:15px 17px;font-size:14px}.intro strong{font-size:16px;color:var(--gold);font-weight:500}.intro p{color:var(--muted);margin:12px 0}.minimap{position:absolute;right:1.3vw;top:2.1vh;width:15.6vw;min-width:205px;padding:13px 16px;text-align:left;background:rgba(38,47,65,.9)}.map-title{display:flex;justify-content:space-between;font-size:16px}.map-title span{color:var(--gold)}#mini{width:100%;height:24vh;display:block;min-height:175px}.minimap small{font-size:12px;color:var(--muted)}#clock{border-top:1px solid var(--line);padding-top:10px;margin-top:10px;color:var(--gold);font-size:13px}.walk-help{position:absolute;left:1.45vw;bottom:2.5vh;padding:12px 16px;font-size:15px}.walk-help small{display:block;color:var(--muted);font-size:12px;margin-top:7px}.dock{position:absolute;bottom:2.3vh;left:50%;transform:translateX(-50%);display:flex;padding:7px 0;width:35vw;min-width:390px}.dock button{flex:1;padding:5px 10px;font-size:18px;white-space:nowrap}.dock button+button{border-left:1px solid #9299a5}.dock span{font-size:14px;margin-left:10px;margin-right:6px;color:var(--muted)}.options-button{position:absolute;right:1vw;bottom:2.1vh;padding:10px 13px;font-size:14px}#fps{color:var(--muted);font-size:11px;margin-left:8px}#hud{pointer-events:none}#hud button,#hud nav{pointer-events:auto}#modal-root{position:absolute;inset:0;background:#080e1777;display:grid;place-items:center;backdrop-filter:blur(3px)}.modal{background:rgba(30,39,53,.98);max-width:calc(100vw - 28px);max-height:calc(100dvh - 30px);overflow:auto;padding:22px 28px}.modal-title{font-size:23px;display:flex;align-items:center;justify-content:space-between;gap:24px;padding-bottom:16px;border-bottom:1px solid var(--line)}.close{font-size:30px;line-height:1;padding:0 4px;color:var(--muted)}#map-modal{width:1020px}.map-layout{display:grid;grid-template-columns:minmax(0,2fr) minmax(260px,1fr);gap:20px;padding-top:16px}.map-main{text-align:center;min-width:0}#floors{display:flex;justify-content:center;gap:6px}#floors button{padding:8px 10px;font-size:12px;background:#303b4f;border-radius:4px}#floors button.active{color:var(--gold);background:#465064}#full-map{width:100%;max-height:61vh;object-fit:contain;display:block;touch-action:manipulation}.legend{display:flex;justify-content:space-between;gap:8px;font-size:11px;color:var(--muted)}.legend span:first-child{color:#79d1fa}.legend span:nth-child(2){color:#8dc4ac}.legend span:last-child{color:#9bd7e7}.map-main>small{font-size:11px;color:var(--muted)}aside{border-left:1px solid var(--line);padding-left:20px}h3{font-size:15px;color:var(--gold);font-weight:500;margin:15px 0 22px}#places button{display:flex;gap:12px;align-items:center;width:100%;text-align:left;padding:12px 7px;margin-bottom:5px;border-radius:4px;font-size:14px;background:#283447}#places button b{display:grid;place-items:center;border-radius:50%;width:21px;height:21px;background:#596274;font-size:12px}#places button.active{color:var(--gold);background:#3b4557}#places button.active b{background:var(--gold);color:#273444}#place-detail{min-height:133px;padding-top:12px}#place-detail h4{font-size:16px;color:var(--gold);font-weight:400;margin:10px 0}#place-detail p,aside>small{font-size:13px;line-height:1.7;color:var(--muted)}#time-modal{width:660px;padding:30px 38px}#time-modal>p{font-size:18px;color:var(--muted)}#time-range{width:100%;accent-color:var(--gold);margin:16px 0}.ticks{display:flex;justify-content:space-between;font-size:12px;color:var(--muted)}.time-presets,.time-actions{display:flex;gap:10px;margin-top:26px;justify-content:space-between}.time-presets button,.time-actions button,.time-actions label,#quality,#info-map{background:#354055;padding:10px 15px;border-radius:4px;border:1px solid var(--line);font-size:14px}.time-presets button{flex:1}.time-actions{margin:20px 0}.time-actions label{display:flex;align-items:center;gap:12px}.time-actions select{background:#354055;color:white;border:0;font-size:14px}#time-modal .hint,.hint{font-size:14px;color:var(--muted);line-height:1.7}#quality{color:var(--gold)}#info-modal{width:690px}#info-modal .modal-title{color:var(--gold)}#info-modal p{line-height:1.8}#loading{position:absolute;inset:0;background:#111a25;display:flex;align-items:center;justify-content:center;flex-direction:column;z-index:100;transition:opacity .6s}.loading-brand{font-size:35px;letter-spacing:6px;text-align:center}.loading-brand span{font-size:11px;letter-spacing:4px;display:block;margin-top:15px;color:var(--muted)}#load-status{font-size:13px;color:var(--muted);margin-top:45px}.progress{width:260px;height:2px;background:#344354;overflow:hidden}.progress i{display:block;width:0%;height:100%;background:#e4d2b5;transition:width .3s}#retry{margin-top:24px;border:1px solid var(--line);padding:10px 25px}#touch{display:none;pointer-events:none;position:absolute;inset:0}#joystick{position:absolute;bottom:85px;left:max(25px,env(safe-area-inset-left));width:104px;height:104px;border-radius:50%;border:1px solid #ffffff55;background:#24314465;pointer-events:auto;touch-action:none}#joystick i{position:absolute;left:32px;top:32px;width:40px;height:40px;border-radius:50%;background:#b9c9ce99;box-shadow:0 0 0 1px #ffffff30}.touch-buttons{position:absolute;right:24px;bottom:95px;display:flex;gap:12px;pointer-events:auto}.touch-buttons button{border-radius:50%;height:43px;width:43px;background:#24314499;border:1px solid #ffffff55;font-size:23px;touch-action:manipulation}.touch-buttons .active{color:var(--gold)}#toast{position:absolute;bottom:100px;left:50%;transform:translateX(-50%);background:#1c273bee;color:white;padding:12px 20px;border-radius:5px;font-size:13px;z-index:110}
@media(pointer:coarse){#touch{display:block}.walk-help{display:none}.dock span{display:none}}@media(max-width:900px){.brand{width:auto;min-width:0;font-size:22px;height:64px;left:14px;top:14px;padding:9px 13px}.brand svg{width:43px}.brand small{font-size:8px;letter-spacing:2px}.intro{top:92px;left:14px;font-size:11px;padding:10px 12px}.intro strong{font-size:12px}.intro p{margin:9px 0}.minimap{min-width:0;width:155px;right:14px;top:14px;padding:10px}.map-title{font-size:12px}#mini{min-height:0;height:150px}.minimap small,#clock{font-size:10px}.dock{width:360px;min-width:0;bottom:18px}.dock button{font-size:15px;padding:5px}.options-button{bottom:21px;right:14px;font-size:12px}.walk-help{display:none}.map-layout{grid-template-columns:minmax(0,1.7fr) minmax(210px,1fr);gap:8px}.modal{padding:15px}.modal-title{font-size:18px}aside{padding-left:12px}#places button{font-size:12px;padding:8px 4px}h3{font-size:12px;margin:8px 0 14px}.legend{font-size:9px}#place-detail{min-height:100px}}@media(max-width:600px){.brand{font-size:18px;gap:9px;height:56px}.brand svg{width:35px}.brand small{font-size:7px;letter-spacing:1.4px}.intro{display:none}.minimap{width:120px}.map-title{font-size:10px}#mini{height:126px}.minimap small{font-size:8px}#clock{font-size:9px}.dock{width:280px;left:14px;transform:none;bottom:18px}.dock button{font-size:13px}.options-button{font-size:0;bottom:18px;padding:9px}.options-button:before{content:'⚙';font-size:20px}#fps{display:none}.modal{max-height:calc(100dvh - 20px)}.map-layout{display:block}.map-main{width:100%}#full-map{max-height:49vh}aside{border-left:0;border-top:1px solid var(--line);margin-top:10px;padding:5px 0}#places{display:grid;grid-template-columns:1fr 1fr;gap:3px}#places button{margin:0}aside h3{margin:7px 0}#place-detail{min-height:0}#place-detail p{margin:4px 0}aside>small{display:none}.modal-title{font-size:15px;padding-bottom:8px}#floors button{font-size:10px;padding:7px}#time-modal{padding:22px}#time-modal>p{font-size:15px}.time-presets{gap:4px}.time-presets button{padding:10px 5px;font-size:12px}.time-actions label,.time-actions button{font-size:12px;padding:8px 10px}.legend{flex-wrap:wrap;justify-content:center}#floor-hint{display:block;line-height:1.5}.touch-buttons{right:20px;bottom:97px;flex-direction:column}#joystick{bottom:95px}}

#full-map{width:min(100%,calc(61vh * 680 / 630));height:auto;max-height:none;margin:0 auto}@media(max-width:600px){#full-map{width:min(100%,calc(49dvh * 680 / 630));height:auto;max-height:none}}

/* R14: local directory interaction and the extended amenity index. */
#directory-prompt{position:fixed;z-index:12;left:50%;bottom:130px;transform:translateX(-50%);padding:13px 22px;border-radius:24px;color:var(--ink,#e7ddc8);font:500 13px Roboto,Arial;cursor:pointer;white-space:nowrap}
#directory-prompt[hidden]{display:none}
#places{max-height:350px;overflow-y:auto;scrollbar-width:thin}
@media(max-width:700px){#directory-prompt{bottom:164px;padding:11px 17px}#places{max-height:190px}}
/* 10-17 ui (qa r7 #5): the frame rate is never shown to players — before the HUD loads (the set-up pages in the headset) as after it; only ?debug / ?perfhud=1 (body.plx-debug, vivo-hud.js) */ body:not(.plx-debug) #fps{display:none!important}
