/* Apple-inspired Liquid Glass; local surfaces leave the full-page map unobstructed. */
:root{
 color-scheme:light;--bg:#eef2f6;--surface:#f8fafc;--soft:rgba(220,230,241,.35);--text:#172537;--muted:#536477;--line:rgba(84,111,139,.17);--accent:#0064d8;--accent-soft:rgba(0,113,227,.09);
 --glass-tint:rgba(245,249,255,.43);--glass-border:rgba(255,255,255,.78);--glass-sheen:linear-gradient(145deg,rgba(255,255,255,.52),rgba(255,255,255,.10) 43%,rgba(231,242,255,.16));
 --glass-light:rgba(255,255,255,.90);--glass-dark:rgba(77,102,135,.12);--glass-shadow:0 12px 36px -12px rgba(30,53,79,.18),0 3px 10px -5px rgba(24,51,80,.13);--glass-popover:rgba(246,250,255,.80);--glass-field:rgba(255,255,255,.38);--glass-lens:rgba(255,255,255,.53);--glass-lens-edge:rgba(255,255,255,.94);--glass-lens-shadow:0 2px 7px rgba(44,70,101,.12),inset 0 1px 0 #fff;
 --stage-bg:radial-gradient(ellipse at 18% 20%,#e2edf7 0%,transparent 48%),radial-gradient(ellipse at 86% 78%,#e5ecef 0%,transparent 51%),linear-gradient(135deg,#f5f7fa,#edf1f6);
 font-family:-apple-system,BlinkMacSystemFont,"SF Pro Text","PingFang SC","Microsoft YaHei",sans-serif;
}
:root[data-theme=night]{
 color-scheme:dark;--bg:#0c1420;--surface:#172537;--soft:rgba(118,151,187,.13);--text:#f1f6fc;--muted:#b1c0d1;--line:rgba(188,211,237,.17);--accent:#8ac3ff;--accent-soft:rgba(95,170,255,.14);
 --glass-tint:rgba(19,33,50,.55);--glass-border:rgba(216,234,255,.23);--glass-sheen:linear-gradient(145deg,rgba(205,229,255,.13),rgba(255,255,255,.015) 44%,rgba(96,157,225,.06));--glass-light:rgba(224,239,255,.30);--glass-dark:rgba(0,0,0,.22);--glass-shadow:0 15px 40px -10px rgba(0,0,0,.4),0 2px 9px rgba(0,0,0,.14);--glass-popover:rgba(21,36,54,.90);--glass-field:rgba(206,227,255,.07);--glass-lens:rgba(153,200,255,.16);--glass-lens-edge:rgba(219,237,255,.37);--glass-lens-shadow:0 3px 9px rgba(0,0,0,.18),inset 0 1px 0 rgba(234,246,255,.22);
 --stage-bg:radial-gradient(ellipse at 18% 20%,#20374e 0%,transparent 50%),radial-gradient(ellipse at 86% 78%,#172b38 0%,transparent 52%),linear-gradient(135deg,#0a121e,#111e2e);
}
/* Bound the blur to floating UI surfaces, never the WebGL canvas. */
:is(.journey-panel,.scene-title,.floor-display,.room-panel,.model-controls,.settings-panel,.selection-status,.floor-menu,.search-results,.theme-switch,.footer-views,.map-floor-label,.room-hover-tip,.model-hint),#toast{background-color:var(--glass-tint);background-image:var(--glass-sheen);border:1px solid var(--glass-border);box-shadow:inset 0 1px 0 var(--glass-light),inset 0 -1px 0 var(--glass-dark),var(--glass-shadow);-webkit-backdrop-filter:blur(20px) saturate(155%);backdrop-filter:blur(20px) saturate(155%)}
:is(.model-controls,.settings-panel,.floor-menu,.search-results){background-color:var(--glass-popover)}
.topbar,.bottom-bar{background:transparent!important;box-shadow:none!important;backdrop-filter:none!important;-webkit-backdrop-filter:none!important}
.brand-title{font-weight:650;letter-spacing:-.5px;font-size:21px}.brand-sub{letter-spacing:.8px;color:var(--muted)}.header-label{color:var(--muted);font-size:12px;letter-spacing:.2px}
.journey-panel{border-radius:28px;padding:23px 22px 21px}.section-kicker{font-size:10px;font-weight:650;letter-spacing:1.8px;color:var(--accent)}.section-kicker::before{box-shadow:0 0 0 4px var(--accent-soft);width:5px;height:5px}
.journey-panel h1{font-size:29px;font-weight:650;letter-spacing:-1px;line-height:1.25;margin-top:13px}.intro{color:var(--muted);line-height:1.8;font-size:12px;margin-top:9px}
.origin{border:1px solid rgba(255,255,255,.26);border-radius:19px;background:var(--soft);padding:14px 12px;margin:21px 0;box-shadow:inset 0 1px 0 rgba(255,255,255,.18)}.origin div span{color:var(--muted)}.origin strong{color:var(--text);font-weight:600}.origin-fixed{background:var(--glass-field);border:1px solid var(--line);border-radius:999px;padding:5px 8px;color:var(--muted);font-size:9px}
.search-label{font-size:12px;font-weight:550;color:var(--muted)}
.search-box,.destination-picker select,.lift-choice select{background:var(--glass-field);border:1px solid var(--line);box-shadow:inset 0 1px 2px rgba(31,63,98,.04),0 1px 0 rgba(255,255,255,.35);border-radius:16px;color:var(--text)}.search-box{height:52px}.search-box input::placeholder{color:var(--muted);opacity:1}.search-box:focus-within{border-color:var(--accent);outline:3px solid var(--accent-soft);background:var(--glass-field)}
.destination-picker select{min-height:46px;border-radius:15px;font-size:13px}.destination-picker::after{border-color:var(--muted)}.destination-picker :is(option,optgroup),.lift-choice option{background:var(--surface);color:var(--text)}
.journey-actions{margin-top:13px;gap:10px}.secondary-button{border-radius:999px;border-color:var(--line);padding:11px 12px;background:var(--glass-field);font-weight:500}.secondary-button:hover,#model-controls-toggle[aria-expanded=true]{background:var(--accent-soft);border-color:var(--accent)}#room-details-toggle{color:var(--accent);font-size:12px}
.journey-help{border-color:var(--line);margin-top:20px;padding-top:18px}.journey-help p{color:var(--muted)}.help-symbol{border-radius:50%;background:var(--accent-soft);color:var(--accent)}
.scene-title{border-radius:23px;padding:7px 17px 7px 7px;gap:13px;overflow:visible}.floor-trigger{border-radius:17px;background:var(--glass-field);border:1px solid rgba(255,255,255,.32);min-height:46px;box-shadow:inset 0 1px 0 rgba(255,255,255,.25);color:var(--text)}.floor-trigger:hover,.floor-trigger[aria-expanded=true]{background:var(--accent-soft);border-color:var(--glass-border)}.floor-trigger b{color:var(--accent);font-weight:650}.floor-summary h2{font-weight:600;letter-spacing:-.15px}.floor-summary p{color:var(--muted)}
.floor-menu{border-radius:23px;top:calc(100% + 12px);padding:7px}.floor-option{border-radius:16px;min-height:56px}.floor-option[aria-selected=true]{background:var(--accent-soft);color:var(--accent)}.floor-option:hover{background:var(--soft)}.floor-menu p{color:var(--muted)}
/* A single sliding lens gives segmented controls a fluid selection transition. */
.glass-segmented{position:relative;isolation:isolate;border-radius:999px;padding:5px;gap:2px}
.glass-segmented>.liquid-lens{position:absolute;left:0;top:5px;height:calc(100% - 10px);width:var(--lens-width,0px);transform:translate3d(var(--lens-x,5px),0,0);border:1px solid var(--glass-lens-edge);border-radius:999px;background:linear-gradient(150deg,rgba(255,255,255,.34),rgba(255,255,255,0) 65%),var(--glass-lens);box-shadow:var(--glass-lens-shadow);pointer-events:none;z-index:0;transition:transform .36s cubic-bezier(.22,1,.36,1),width .36s cubic-bezier(.22,1,.36,1)}
.glass-segmented>button{position:relative;z-index:1;border-radius:999px;background:transparent;color:var(--muted);border:1px solid transparent;min-height:40px;transition:color .18s ease,background-color .18s ease,transform .18s ease}
.glass-segmented>button:is([aria-pressed=true],.active),:root[data-theme=night] .glass-segmented>button:is([aria-pressed=true],.active){background:transparent;color:var(--accent);box-shadow:none;font-weight:600}.glass-segmented>button:hover{background:var(--accent-soft);color:var(--text)}.glass-segmented>button:active{transform:scale(.96)}
.theme-switch{border-radius:999px}.theme-switch button{padding-inline:15px;font-size:12px}.theme-switch .ui-icon{width:16px;height:16px}.floor-display{border-radius:999px}.floor-display button{padding-inline:14px;font-size:12px}.footer-views{border-radius:999px}.view-button{padding:9px 16px;font-size:12px;letter-spacing:-.1px;min-height:40px}
.model-controls{border-radius:25px;padding:19px}.zone-button{border-radius:15px;background:transparent;border-color:transparent;min-height:47px}.zone-button:hover,.zone-button.active{background:color-mix(in srgb,var(--zone-color) 10%,transparent);border-color:color-mix(in srgb,var(--zone-color) 25%,transparent)}.zone-dot{box-shadow:0 0 0 4px color-mix(in srgb,var(--zone-color) 9%,transparent)}
.search-results{border-radius:21px;padding:7px}.search-result{border-radius:14px}.search-result:hover,.search-result:focus-visible{background:var(--accent-soft)}.search-result strong{color:var(--text)}.search-result span{color:var(--muted)}
.room-panel{border-radius:27px;padding:22px}.room-panel h3{font-size:24px;font-weight:650;letter-spacing:-.7px}.room-panel p{color:var(--muted)}.room-number{color:var(--accent);font-size:10px;letter-spacing:1px}.room-fields{border-color:var(--line)}.room-panel :is(.primary-button,.focus-button),.room-panel :is(.primary-button,.focus-button):hover{background:transparent;border-top:1px solid var(--line);box-shadow:none;color:var(--accent)}.details-close{background:var(--glass-field);border:1px solid var(--line);min-width:30px;min-height:30px;top:-4px;right:-5px;color:var(--muted)}
.selection-status{border-radius:26px;padding:13px 16px}.selection-content b{font-weight:600;letter-spacing:-.2px}.selection-content small{color:var(--muted)}.selection-navigate{border-radius:999px;background:linear-gradient(160deg,#3295ff,#0875ec 58%,#0062d6);box-shadow:inset 0 1px 0 rgba(255,255,255,.5),0 3px 9px rgba(0,100,210,.17);border:1px solid rgba(0,91,202,.18);color:#fff;font-weight:600;min-height:44px;padding-inline:19px}.selection-navigate:hover{background:linear-gradient(160deg,#4a9fff,#0069df)}.is-navigating .selection-navigate,.is-navigating .selection-navigate:hover{background:var(--glass-field);color:var(--text);border:1px solid var(--line);box-shadow:inset 0 1px 0 rgba(255,255,255,.15)}
.map-floor-label{border-radius:999px;padding:8px 13px;font-size:11px;-webkit-backdrop-filter:blur(12px) saturate(140%);backdrop-filter:blur(12px) saturate(140%);box-shadow:inset 0 1px 0 var(--glass-light),0 3px 9px rgba(23,46,74,.07)}.room-hover-tip,.model-hint{border-radius:999px;background-color:var(--glass-popover);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);box-shadow:inset 0 1px 0 var(--glass-light),0 3px 12px rgba(20,40,60,.07)}.model-hint{font-size:10px;color:var(--muted)}
.home-button,.map-settings summary{color:var(--text);font-weight:500}.home-button:hover,.map-settings summary:hover{color:var(--accent)}.settings-panel{border-radius:27px;padding:22px}.settings-panel h2{font-size:16px;letter-spacing:-.3px}.tool-button{border-color:var(--line)}.tool-button>span{border-radius:50%;background:var(--accent-soft);color:var(--accent)}.height-control input{accent-color:#007aff}.lift-choice select{border-radius:13px}#toast{border-radius:22px;color:var(--text);font-size:13px}
.ui :is(button,summary,input,select):focus-visible{outline:3px solid var(--accent);outline-offset:3px}
/* Centre both navigation states on the page, independent of floating panels. */
@media(min-width:901px){.selection-status{left:50%;right:auto;transform:translateX(-50%);width:520px;max-width:calc(100vw - 40px);min-height:76px}.selection-content{flex:1}}
/* Ease compositing during map gestures to preserve the zoom performance gain. */
html[data-map-interacting=true] :is(.journey-panel,.scene-title,.floor-display,.room-panel,.model-controls,.settings-panel,.selection-status,.floor-menu,.search-results,.theme-switch,.footer-views,.map-floor-label,.room-hover-tip,.model-hint){-webkit-backdrop-filter:blur(10px) saturate(130%);backdrop-filter:blur(10px) saturate(130%)}
@media(max-height:820px) and (min-width:901px){.journey-panel{padding:20px}.journey-panel h1{font-size:26px;margin-top:10px}.origin{margin:16px 0;padding:12px}.journey-help{margin-top:17px;padding-top:15px}.room-panel{padding:20px}}
@media(max-width:1200px) and (min-width:901px){.journey-panel,.room-panel{padding:20px}.journey-panel h1{font-size:26px}.floor-display button{padding-inline:11px}}
@media(max-width:900px){
 .brand-title{font-size:16px;letter-spacing:-.4px}.brand-sub{font-size:9px;letter-spacing:.5px}.header-label{display:none}.journey-panel{padding:16px;border-radius:25px;max-height:260px}.journey-panel h1{font-size:21px;line-height:1.3;letter-spacing:-.6px;margin:0 0 12px}.origin{padding:0;border:0;box-shadow:none;background:none;margin:0;top:15px;right:16px}.origin strong{font-size:11px}
 .search-box{height:48px;border-radius:15px}.search-box input{font-size:14px}.destination-picker select{border-radius:13px;font-size:12px}.journey-actions{top:109px;right:16px;margin:0;gap:0}.journey-actions>button:first-child{font-size:11px;width:142px;padding:10px 9px}.destination-picker{width:calc(100% - 152px)}
 .scene-toolbar{top:272px}.scene-title{padding:5px;border-radius:19px;gap:8px}.floor-trigger{min-height:42px;border-radius:14px;padding:7px 9px;font-size:12px}.floor-trigger b{font-size:11px}.floor-summary h2{font-size:11px}.glass-segmented{padding:4px;gap:1px}.glass-segmented>.liquid-lens{top:4px;height:calc(100% - 8px)}.glass-segmented>button{min-height:40px}
 .theme-switch button{min-height:34px;padding:0 10px;font-size:11px}.theme-switch .ui-icon{width:14px;height:14px}.floor-display button{padding:8px 10px;font-size:11px}.view-button{padding:8px 10px;font-size:11px;gap:5px}.room-panel{padding:18px;border-radius:25px}.room-panel h3{font-size:22px}.selection-status{border-radius:23px;padding:12px}.selection-navigate{padding-inline:15px;font-size:12px}.settings-panel{border-radius:25px;padding:19px}.model-controls{border-radius:23px}.search-results{left:16px;right:16px}.journey-panel:has(.search-results:not([hidden])) .search-results{top:133px}.map-floor-label{font-size:10px;padding:6px 10px}.model-hint{font-size:9px}.bottom-bar{padding-inline:14px}
}
@media(max-width:420px){.topbar{padding-inline:14px}.brand-title{font-size:15px}.brand{gap:9px}.theme-switch button{padding-inline:8px}.journey-panel h1{font-size:20px}.floor-summary{display:none}.floor-display button{padding-inline:9px}.journey-actions>button:first-child{width:132px}.destination-picker{width:calc(100% - 142px)}.view-button{padding-inline:9px}}
@supports not ((backdrop-filter:blur(1px)) or (-webkit-backdrop-filter:blur(1px))){:root{--glass-tint:#eef4fa;--glass-popover:#f7faff}:root[data-theme=night]{--glass-tint:#1a2a3d;--glass-popover:#1a2a3d}}
@media(prefers-reduced-transparency:reduce){:root{--glass-tint:#f3f6fa;--glass-popover:#f7faff;--glass-field:#fff;--glass-lens:#fff}:root[data-theme=night]{--glass-tint:#192a3f;--glass-popover:#1e3047;--glass-field:#253b53;--glass-lens:#344c67}[class]{-webkit-backdrop-filter:none!important;backdrop-filter:none!important}}
@media(prefers-contrast:more){:root{--glass-tint:#f3f6fa;--glass-popover:#f7faff;--muted:#354c63;--line:#7b8fa6}:root[data-theme=night]{--glass-tint:#15283e;--glass-popover:#182e47;--muted:#dfebf8;--line:#8aabc9}.ui :is(button,summary,select){border-color:var(--line)}}
@media(prefers-reduced-motion:reduce){.glass-segmented>.liquid-lens,.glass-segmented>button{transition:none!important}}
/* Keep room details above the persistent navigation pill on phones. */
@media(max-width:900px){
 #app:has(.selection-status.has-selection) .room-panel{bottom:186px;max-height:min(300px,calc(100dvh - 510px))}
 .selection-status{min-height:82px}
}
@media(max-width:900px){.room-number{top:64px;right:20px}}
