/* One layout system for the filter column, map, and right details column. */
body { height:100dvh; display:flex; flex-direction:column; overflow:hidden; }
.topbar { flex:0 0 auto; }
.workspace { flex:1 1 auto; min-height:0; min-width:0; }
.sidebar,.map-area,.sidebar-scroll { min-height:0; }
@media (min-width:901px) and (max-width:1120px) {
 .workspace { --sidebar-width:244px; --details-width:304px; }
 .source-date { display:none; }
}
@media (max-width:900px) {
 .topbar { min-height:48px; padding:6px max(12px,env(safe-area-inset-right)) 6px max(12px,env(safe-area-inset-left)); gap:12px; }
 .brand { width:144px; }
 .source-date { display:none; }
 .header-end { gap:6px; }
 .header-end button { min-height:32px; font-size:11px; padding:6px 10px; }
 .header-end .theme-toggle { padding:7px; }
 .header-end button .icon { width:16px; height:16px; }
 .workspace,.workspace.has-selection { grid-template-columns:minmax(0,1fr); grid-template-rows:auto minmax(0,1fr); }
 .workspace.has-selection { grid-template-columns:minmax(0,1fr) 288px; }
 .sidebar { grid-column:1/-1; grid-row:1; border-right:0; border-bottom:1px solid var(--border-default); }
 .map-area { grid-column:1; grid-row:2; }
 .building-panel { grid-column:2; grid-row:2; }
 .search-area { display:grid; grid-template-columns:minmax(0,1fr) auto; gap:0 8px; padding:8px max(12px,env(safe-area-inset-right)) 8px max(12px,env(safe-area-inset-left)); }
 .sidebar-title { position:absolute; width:1px; height:1px; padding:0; margin:0; overflow:hidden; clip-path:inset(50%); }
 #search-form { min-width:0; }
 #search-form>label { position:absolute; width:1px; height:1px; overflow:hidden; clip-path:inset(50%); }
 .search-box { padding-left:10px; gap:8px; min-height:38px; }
 .search-box input { font-size:16px; min-height:36px; padding-block:6px; }
 .search-box .icon-button { min-height:32px; width:32px; }
 kbd { display:none; }
 .mobile-only { display:inline-flex; }
 #mobile-filters { align-self:end; min-height:38px; padding-inline:12px; font-size:12px; }
 #mobile-filters>.icon { width:16px; height:16px; }
 .sidebar-scroll { display:none; }
 .filters-expanded .sidebar-scroll { display:block; position:absolute; top:calc(100% + 6px); left:max(12px,env(safe-area-inset-left)); right:max(12px,env(safe-area-inset-right)); max-height:min(70dvh,600px); padding:16px; border:1px solid var(--border-default); border-radius:8px; box-shadow:var(--shadow-popover); background:var(--surface-card); z-index:700; }
 .filters select { min-height:44px; font-size:16px; margin-bottom:16px; }
 .filters label { font-size:12px; }
 .sidebar-footer { display:none; }
 #apply-filters { width:100%; min-height:44px; margin:0 0 16px; }
 .building-panel-toolbar .icon-button { min-width:44px; min-height:44px; }
 #building-content { padding:16px; }
 dialog { width:min(520px,var(--dialog-width,calc(100% - 24px))); }
 .dialog-head { padding:16px 16px 12px; }
 .dialog-head .icon-button { min-width:44px; min-height:44px; }
 .dialog-body { padding:16px; }
 dialog input,dialog select { font-size:16px; min-height:44px; }
 input[type=file] { font-size:12px; }
 .form-grid { grid-template-columns:1fr; }
 .inline { flex-wrap:wrap; }
 .inline>* { width:100%; flex-basis:100%; }
 .inline button,#upload-button { min-height:44px; }
}
@media (max-width:600px) {
 .workspace.has-selection { grid-template-columns:minmax(0,1fr); }
 .building-panel { position:absolute; grid-area:2/1; top:0; right:0; bottom:0; width:min(320px,calc(100% - 44px)); box-shadow:-8px 0 24px #0002; }
}
@media (max-width:380px) {
 .brand { width:134px; }
 .topbar { padding-inline:12px; gap:8px; }
 .header-end { gap:4px; }
 .header-end button { padding:6px 8px; font-size:10px; gap:6px; }
 .search-area { padding-inline:12px; gap:0 8px; }
 #mobile-filters>span:not(.filter-count) { display:none; }
 #mobile-filters { min-width:44px; padding-inline:12px; }
}
@media (max-height:540px) and (max-width:1000px) {
 .sidebar-title { display:none; }
 .search-area { padding-block:6px; }
}
@media (pointer:coarse) {
 .icon-button,.text-button,#mobile-filters,.search-box { min-height:44px; }
 .icon-button,.text-button { min-width:44px; }
 .search-box input { min-height:42px; }
 .map-toolbar button { min-width:44px; min-height:44px; }
 .visible-list { bottom:94px; }
}
