/* Structural layout. Palette, shadows and skin belong to theme.css. */
:root { --header-height:56px;--toolbar-height:52px;--drawer-width:340px;--control-size:40px; }
html,body { height:100%; }
body { height:100vh;height:100dvh;display:flex;flex-direction:column;overflow:hidden; }
.site-header { height:var(--header-height);min-height:var(--header-height);padding:0 16px;gap:12px;flex-shrink:0; }
.site-header>strong { overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0;font-size:16px; }
.header-actions { gap:14px;flex-shrink:0; }
.account-menu { position:relative;font-size:13px; }
.account-menu>summary { cursor:pointer;padding:10px 2px; }
.account-content { position:absolute;right:0;top:100%;z-index:8;min-width:190px;max-width:calc(100vw - 24px);display:grid;gap:12px;padding:16px;border-radius:var(--ui-radius); }
.account-content #identity { display:block;color:var(--ui-muted);margin:0;overflow-wrap:anywhere; }
.account-content #summary { padding:0;background:none;color:var(--ui-muted); }
.account-content .login-trigger { color:var(--ui-action);text-align:left;padding:8px; }
.public-layout { display:flex;flex-direction:column;flex:1;width:100%;height:auto;min-height:0;margin:0;gap:0;overflow:hidden; }
.workspace-toolbar { display:flex;align-items:center;gap:10px;min-height:var(--toolbar-height);padding:6px 12px;border-bottom:1px solid;z-index:4;flex-shrink:0; }
.workspace-toolbar>button { white-space:nowrap;min-height:var(--control-size); }
.search-box { position:relative;flex:1;max-width:420px;min-width:0; }
.search-box input { height:var(--control-size); }
.search-box .results { position:absolute;top:calc(100% + 6px);left:0;right:0;max-height:min(45vh,320px);padding:8px;background:var(--ui-surface);border:1px solid var(--ui-border);border-radius:var(--ui-radius);box-shadow:var(--ui-shadow);overflow:auto; }
.map-panel { flex:1;min-height:0;height:auto;width:100%;padding:0; }
#map { height:100%;width:100%;min-height:0;flex:1; }
.map-controls { top:10px;left:auto;right:10px;gap:4px;flex-wrap:nowrap; }
.map-controls button { min-width:var(--control-size);height:var(--control-size);padding:5px 9px;font-size:13px; }
.map-state { right:auto;left:10px;top:8px;bottom:auto;max-width:calc(100% - 215px);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;pointer-events:none; }
.selected-card { display:flex;align-items:center;gap:8px;padding:8px 12px;border-top:1px solid;flex-shrink:0;min-height:58px; }
.selection-copy { flex:1;min-width:0;display:flex;align-items:center;gap:12px; }
.selected-card #selected-code { flex-shrink:0; }
.selected-card #selected-name { overflow:hidden;text-overflow:ellipsis;white-space:nowrap; }
.selected-card button { min-height:var(--control-size);white-space:nowrap; }
.workspace-dialog { padding:0;margin:0;position:fixed;max-width:calc(100vw - 24px);max-height:calc(100dvh - 24px);border-radius:var(--ui-radius);overflow:auto;overscroll-behavior:contain; }
.explore-dialog { inset:12px auto 12px 12px;width:var(--drawer-width); }
.detail-dialog { inset:12px 12px 12px auto;width:380px; }
.workspace-dialog .sidebar { width:100%;padding:16px;border:0;overflow:visible; }
.workspace-dialog .right-sidebar { position:static;display:block;box-shadow:none; }
.drawer-heading { display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:18px; }
.drawer-heading h2 { font-size:16px;margin:0; }
.drawer-heading button { min-height:var(--control-size);white-space:nowrap; }
.workspace-dialog .detail-heading { display:none; }
.workspace-dialog .left-sidebar { min-height:0; }
.workspace-dialog .section-title { margin-top:18px; }
.workspace-dialog .hall-option { padding:9px 0; }
.workspace-dialog .editor-panel { margin-top:12px; }
.notice:not(:empty) { position:fixed;bottom:12px;left:50%;transform:translateX(-50%);z-index:9;background:var(--ui-surface);padding:10px 14px;border:1px solid var(--ui-border);border-radius:var(--ui-radius);width:max-content;max-width:calc(100vw - 24px);max-height:20vh;overflow:auto;margin:0; }
.workspace-dialog .notice:not(:empty),#management-panel .notice:not(:empty),.login-panel .notice:not(:empty) { position:static;transform:none;width:auto;max-width:none;max-height:none;margin-top:8px; }
body.is-managing { overflow:auto; }
#management-panel { flex:1;min-height:0;padding-bottom:16px; }
.management-toolbar { width:min(1100px,calc(100% - 32px));display:grid;grid-template-columns:auto minmax(120px,1fr) auto minmax(120px,1fr);gap:10px;margin:16px auto; }
.management-toolbar select { max-width:none; }
#management-panel .panel { width:min(1100px,calc(100% - 32px));margin:0 auto;padding:18px; }
#management-panel h2 { font-size:17px;margin:0 0 16px; }
.login-panel { position:fixed;top:calc(var(--header-height) + 8px);max-height:calc(100dvh - var(--header-height) - 24px);overflow:auto; }
.sr-only { position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0; }
@media(max-width:760px) {
  :root { --header-height:48px;--toolbar-height:52px; }
  .site-header { padding:0 12px; }
  .workspace-toolbar { gap:8px;padding:6px 8px; }
  .workspace-toolbar>button { font-size:13px;padding:6px 10px; }
  .search-box { max-width:none; }
  .search-box input { font-size:16px;padding:8px; }
  .selected-card { padding-bottom:max(8px,env(safe-area-inset-bottom)); }
  .selection-copy { display:grid;gap:2px;font-size:13px; }
  .selected-card #selected-name { font-size:12px; }
  .workspace-dialog { max-height:calc(100dvh - 16px);max-width:calc(100vw - 16px); }
  .explore-dialog { inset:8px auto 8px 8px;width:min(var(--drawer-width),calc(100vw - 16px)); }
  .detail-dialog { inset:auto 8px 8px;width:calc(100vw - 16px);max-height:55dvh; }
  .workspace-dialog input,.workspace-dialog select { font-size:16px; }
  .workspace-dialog .sidebar { padding:14px; }
  .map-panel { min-height:0;height:auto;padding-bottom:env(safe-area-inset-bottom); }
  .map-state { display:none; }
  .management-toolbar { grid-template-columns:auto minmax(0,1fr);width:calc(100% - 24px); }
  #management-panel .panel { width:calc(100% - 24px);padding:14px; }
  .user-form,.legend-edit-row { min-width:0; }
}
@media(prefers-reduced-motion:reduce) { *,*::before,*::after { scroll-behavior:auto!important; } }
@media(max-width:760px) and (max-height:440px) {
  :root { --header-height:40px;--toolbar-height:44px;--control-size:36px; }
  .workspace-toolbar { min-height:44px;padding:4px 8px; }
  .workspace-toolbar>button,.search-box input { height:36px;min-height:36px; }
  .site-header>strong { font-size:14px; }
  .selected-card { min-height:48px;padding-top:4px;padding-bottom:4px; }
}

/* Summary and details are one anchored, expandable map card. */
.selected-card{position:absolute;z-index:3;left:16px;bottom:16px;width:380px;max-width:calc(100% - 32px);min-height:0;padding:0;display:flex;align-items:stretch;flex-direction:column;gap:0;max-height:65dvh;overflow:hidden}
.selection-summary{display:grid;grid-template-columns:minmax(0,1fr) auto auto;align-items:center;gap:8px;padding:12px}
.selection-copy{display:flex;align-items:flex-start;flex-direction:column;gap:5px;min-width:0}
.selection-copy #selected-name{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.selected-card .detail-dialog{position:static;inset:auto;margin:0;width:100%;max-width:none;max-height:calc(65dvh - 82px);padding:0;overflow:auto;border:0;border-top:1px solid var(--ui-border);border-radius:0;box-shadow:none}
.selected-card .detail-dialog .sidebar{padding:16px}
.management-toolbar{align-items:center}.management-toolbar label{margin:0;line-height:1.4}
@media(max-width:760px){.selected-card{left:12px;bottom:max(12px,env(safe-area-inset-bottom));width:380px;max-width:calc(100% - 24px)}.selection-summary{padding:10px}.selected-card .detail-dialog .sidebar{padding:14px}}
@media(max-height:440px){.selected-card{bottom:8px;max-height:75dvh}.selected-card .detail-dialog{max-height:calc(75dvh - 76px)}}
