/* Shared form surfaces; keyboard focus has its own calm, contained ring. */
:root{--control-radius:12px}
:where(button,a,input,select,textarea,summary):focus-visible{outline:2px solid var(--focus);outline-offset:3px}
body button:focus-visible,body a:focus-visible,body input:focus-visible,body select:focus-visible,body textarea:focus-visible{outline-color:var(--focus)}
.ui-select,.select-popover{--control-surface:var(--portal-surface,var(--panel,var(--body-bg,#fff)));--control-soft:var(--portal-soft,var(--bg-deep,var(--darkened-bg,#f2f5f0)));--control-text:var(--portal-ink,var(--text,var(--body-fg,#263d30)));--control-muted:var(--portal-muted,var(--muted,var(--body-quiet-color,#647468)));--control-border:var(--portal-border,var(--line,var(--border-color,#dbe5dc)))}
.ui-select{position:relative;display:block;min-width:0;width:100%;color:var(--control-text);font:inherit}
.ui-select .ui-select-native{position:absolute!important;inset:0!important;opacity:0!important;pointer-events:none!important;z-index:-1;width:100%!important;height:100%!important;min-width:0!important;max-width:100%!important;margin:0!important;padding:0!important;outline:0!important}
body .select-trigger{width:100%;min-height:49px;display:flex;align-items:center;gap:10px;padding:10px 13px;background:var(--control-surface);color:var(--control-text);border:1px solid var(--control-border);border-radius:var(--control-radius);font:inherit;font-size:var(--text-ui,15px);font-weight:450;line-height:1.8;text-align:start;box-shadow:0 1px 2px #12261a05;transition:background .18s,border-color .18s,box-shadow .18s;cursor:pointer;isolation:isolate}
body .select-trigger:hover{border-color:var(--focus);background:var(--control-soft)}
body .select-trigger:focus{outline:0}
body .select-trigger:focus-visible{outline:2px solid var(--focus);outline-offset:3px;box-shadow:0 0 0 5px var(--focus-halo)}
body .ui-select.is-open .select-trigger{border-color:var(--focus);box-shadow:0 0 0 3px var(--focus-halo)}
body .ui-select.is-placeholder .select-value{color:var(--control-muted)}
body .ui-select.is-open .select-value{color:var(--control-text)}
body .select-trigger:disabled{opacity:.5;cursor:not-allowed}
.select-value{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:start}
.select-leading,.select-chevron,.select-check{display:grid;place-items:center;flex-shrink:0;color:var(--control-muted)}
.select-leading svg{width:17px;height:17px}.select-chevron svg{width:16px;height:16px}
.select-chevron{margin-inline-start:auto;transition:transform .18s}.is-open .select-chevron{transform:rotate(180deg)}
.select-trigger svg,.select-popover svg{display:block;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}
.select-popover{position:fixed;z-index:2000;box-sizing:border-box;padding:6px;overflow-y:auto;overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:var(--control-muted) transparent;background:var(--control-surface);color:var(--control-text);border:1px solid var(--control-border);border-radius:14px;box-shadow:0 18px 48px #11271b30,0 3px 12px #11271b14;font-family:var(--font-family-primary,Estedad,Arial,sans-serif);font-size:var(--text-small,14px);line-height:1.9;animation:choice-appear .14s ease-out}
.select-popover[hidden],.select-validation[hidden]{display:none}
.select-option{min-height:43px;display:flex;align-items:center;justify-content:space-between;gap:16px;padding:8px 11px;border:1px solid transparent;border-radius:9px;cursor:pointer;user-select:none;overflow-wrap:anywhere;transition:background .12s}
.select-option>span:first-child{min-width:0;text-align:start}
.select-option:hover,.select-option.is-active{background:var(--control-soft);border-color:var(--control-border)}
.select-option[aria-selected=true]{background:var(--focus-halo);color:var(--control-text);font-weight:600}
.select-option[aria-disabled=true]{opacity:.4;cursor:not-allowed}
.select-check{color:var(--focus);opacity:0}.select-check svg{width:17px;height:17px;stroke-width:2}
.select-option[aria-selected=true] .select-check{opacity:1}
.select-group{padding:12px 11px 5px;font-size:var(--text-micro,12px);color:var(--control-muted)}
.select-validation{display:block;padding-top:7px;color:#dc9d8c;font-size:var(--text-caption,13px)}
.ui-select.has-error .select-trigger{border-color:#c68b7b}
/* A single language control contains the icon, name and chevron. */
.language>span:not(.ui-select){display:none}
.ui-select.is-language{width:auto;flex-shrink:0}
.is-language .select-trigger{background:transparent;min-height:42px;padding:8px 11px;gap:8px;font-size:var(--text-small,14px)}
.is-language .select-value{flex:0 0 auto;min-width:30px}
.is-language .select-chevron{margin-inline-start:0}
.portal-language{display:block}
.portal .portal-language .ui-select{max-width:none}
.search-floor .ui-select{min-width:145px}
.search-floor .select-trigger{min-height:42px;background:transparent;font-size:var(--text-small)}
.portal .form-control{border-radius:var(--control-radius);border:1px solid var(--portal-border);background:var(--portal-soft);box-shadow:0 1px 2px #12261a05;transition:border-color .18s,box-shadow .18s,background .18s}
.portal .form-control:hover{border-color:#9cb2a440}
.portal .form-control:focus{outline:0;border-color:var(--focus);box-shadow:0 0 0 4px var(--focus-halo);background:var(--portal-surface)}
.portal .ui-select .select-trigger{background:var(--portal-soft)}
.portal .ui-select.is-open .select-trigger{background:var(--portal-surface)}
.portal .portal-language .select-trigger{background:transparent}
.portal .shop-selector .ui-select{width:270px;max-width:100%}
.portal .form-control::file-selector-button{font:inherit;border:1px solid var(--portal-border);padding:8px 14px;margin-inline-end:12px;border-radius:8px;color:var(--portal-green);background:var(--portal-surface);cursor:pointer}
.portal .form-control[type=file]{padding:6px;font-size:var(--text-small)}
.portal input[type=checkbox],.tour-all-floors input{accent-color:var(--focus);cursor:pointer}
.portal input[type=checkbox]:focus-visible{outline-color:var(--focus)}
.portal .form-field>label{font-weight:500}
.portal .auth-story{background:#3b5545}
.portal .welcome-card{background:linear-gradient(115deg,#3e5c49,#355443);border-color:#c3dcc125}
.portal .welcome-card p{color:#d2dfd2}
.portal .welcome-card .eyebrow,.portal .welcome-link{color:#ead2a9}
:root[data-theme=light] .portal .auth-story{background:#3b5545}
:root[data-theme=light] .portal .welcome-card{background:linear-gradient(115deg,#45664f,#355443)}
/* Softer public controls and search surface in both modes. */
body:not(.portal) .primary-button,body:not(.portal) .outline-button{border-radius:11px}
.search-panel{background:var(--panel);color:var(--text);border:1px solid var(--line);border-radius:17px;box-shadow:0 8px 30px #10271912;padding:20px 22px}
.search-icon{border-color:var(--line);color:var(--muted)}
.search-input-wrap>span,.search-floor>span{color:var(--muted)}
.search-input-wrap input{color:var(--text)}
.search-input-wrap input::placeholder{color:var(--muted)}
.search-input-wrap input:focus-visible{outline:0}
.search-input-wrap:focus-within>span{color:var(--text)}
.search-floor{border-color:var(--line)}
.search-submit{background:var(--accent);color:#293e30;border-radius:10px;font-weight:600;min-height:49px}
.search-submit:hover{background:#e1c99f;color:#293e30}
:root[data-theme=light] .search-panel{background:#fff;border-color:#dce5da}
:root[data-theme=light] .search-submit{background:#385d47;color:#f2f5ed}
:root[data-theme=light] .search-submit:hover{background:#456c53;color:#fff}
:root[data-theme=dark] .business-card,:root[data-theme=dark] .status-notice{background:var(--panel)}
:root[data-theme=dark] .model-controls{background:#30483ce8}
:root[data-theme=dark] .map-workspace{background:var(--bg-deep)}
:root[data-theme=dark] .map-sidebar{background:var(--panel)}
:root[data-theme=dark] .tour-header,:root[data-theme=dark] .tour-sidebar,:root[data-theme=dark] .tour-tabs{background:var(--panel)}
:root[data-theme=dark] .tour-search,:root[data-theme=dark] .tour-main,:root[data-theme=dark] .tour-loading{background:var(--bg-deep)}
:root[data-theme=dark] .tour-scene-status,:root[data-theme=dark] .tour-minimap,:root[data-theme=dark] .tour-selected,:root[data-theme=dark] .tour-viewpoints button{background:#324e40ed;color:var(--text)}
:root[data-theme=dark] .main-nav.open{background:var(--panel)}
@keyframes choice-appear{from{opacity:0;transform:translateY(-3px)}to{opacity:1;transform:translateY(0)}}
@media(max-width:760px){
 .portal .portal-topbar{gap:5px}.portal .topbar-account>div{min-width:0}.portal .topbar-tools{flex-shrink:0}
 .portal .portal-language .select-trigger{padding:6px;gap:4px;font-size:var(--text-micro);min-height:36px}
 .portal .portal-language .select-leading{display:none}.portal .portal-language .select-chevron svg{width:12px}
 .portal .shop-selector .ui-select{flex:1;width:auto;min-width:0}
 .portal .auth-tools .select-trigger{color:#edf2e8;border-color:#d6e2ce30}
}
@media(max-width:650px){
 .is-language .select-trigger{font-size:var(--text-caption);padding:6px 7px;gap:5px;min-height:38px}
 .is-language .select-leading svg{width:14px;height:14px}.is-language .select-chevron svg{width:12px;height:12px}
 .search-panel{padding:17px 15px}.search-floor .ui-select{min-width:140px;max-width:75%;width:auto}
 .search-floor .select-trigger{min-height:44px}
 .tour-header-actions .is-language .select-leading{display:none}
 .tour-header-actions .is-language .select-trigger{border:0;padding-inline:4px}
 .tour-header-actions .is-language .select-value{min-width:25px}
}
@media(prefers-reduced-motion:reduce){.select-popover,.select-trigger,.select-option,.select-chevron{animation:none;transition:none}}
.language>.ui-select{display:block}
:root[data-theme=dark] dialog{background:var(--panel)}
.related-widget-wrapper>.ui-select{width:auto;min-width:0;flex:1}
.portal input.form-control:-webkit-autofill{-webkit-text-fill-color:var(--portal-ink);caret-color:var(--portal-ink);-webkit-box-shadow:0 0 0 1000px var(--portal-soft) inset}
.portal input.form-control:-webkit-autofill:focus{-webkit-box-shadow:0 0 0 1000px var(--portal-surface) inset,0 0 0 4px var(--focus-halo)}
