/* Shared appearance tokens; UI text reflows, the geographic canvas never scales. */
:root{--selection-bg:#222;--selection-fg:#fff;--selection-border:#222;--ui-scale:1;--control-size:calc(44px * var(--ui-scale));--icon-size:calc(22px * var(--ui-scale));--header-height:calc(var(--control-size) + 20px);--surface-hover:#efefeb;--emphasis:#222722;--on-emphasis:#fff;--shadow:0 2px 12px #00000014;color-scheme:light}
:root[data-ui-size=large]{--ui-scale:1.12}
:root[data-ui-size=xlarge]{--ui-scale:1.24}
:root[data-theme=dark]{--selection-border:#b3b6ac;--white:#1c211f;--soft:#272d29;--ink:#f0f0e9;--muted:#b3b6ac;--line:#505951;--surface-hover:#343d36;--emphasis:#e7ebe3;--on-emphasis:#1c211f;--shadow:0 2px 12px #0005;color-scheme:dark}
body{background:var(--white);color:var(--ink)}
.site-header,.map-app .site-header{background:var(--white);color:var(--ink);border-bottom:1px solid var(--line);height:var(--header-height)}
.site-header .header-inner,.map-app .site-header .header-inner{height:var(--header-height)}
.site-header .brand,.map-app .site-header .brand,.map-app .header-radar{color:var(--ink)}
.app-menu-trigger,.map-app #map-menu-btn{background:var(--soft);color:var(--ink);width:var(--control-size);height:var(--control-size)}
.header-radar,.map-app .header-radar{width:var(--control-size);height:var(--control-size)}
.site-header :is(button,a)>svg{width:var(--icon-size);height:var(--icon-size)}
.header-radar>[data-nav-saved-count]{background:var(--ink);color:var(--white)}
.map-app{--map-ui:var(--white);--map-ui-hover:var(--surface-hover);--map-ui-line:var(--line);--map-ui-ink:var(--ink)}
.map-app .map-search{top:calc(var(--header-height) + 12px);height:calc(var(--control-size) + 4px);border:1px solid var(--line)}
.map-app .global-search input{height:var(--control-size)}
.map-app .global-search input::placeholder{color:var(--muted)}
.map-app .global-search input::-webkit-search-cancel-button{filter:none}
.map-app .map-icon,.map-app #fit-btn{width:var(--control-size);height:var(--control-size);min-width:var(--control-size)}
.map-app .map-icon svg{width:var(--icon-size);height:var(--icon-size)}
.map-app #layers-btn{top:calc(var(--header-height) + 12px);width:calc(var(--control-size) + 4px);height:calc(var(--control-size) + 4px);border:1px solid var(--line)}
.map-app .map-top{max-height:calc(100dvh - var(--header-height) - var(--control-size) - 120px);overflow-y:auto;border:1px solid var(--line)}
.map-app #map-info-btn{border:1px solid var(--line)}
.map-app .mobile-list-toggle{min-height:var(--control-size);border:1px solid var(--line)}
.map-app :is(.map-search,.map-top,#layers-btn,#map-info-btn,.mobile-list-toggle){box-shadow:var(--shadow)}
.map-app #map-info-btn{right:16px;bottom:20px}
.map-app .sidebar,.map-app .inspector{top:calc(var(--header-height) + var(--control-size) + 28px)}
.app-menu-dialog,.app-menu-dialog::backdrop,.app-menu-dialog .menu-heading{background:var(--white);color:var(--ink)}
.app-menu-dialog .menu-shell{padding-top:max(16px,env(safe-area-inset-top));font-size:calc(16px * var(--ui-scale))}
.app-menu-dialog .menu-heading{min-height:var(--control-size)}
.menu-close,.map-app .app-menu-dialog .menu-close{background:var(--soft);color:var(--ink);width:var(--control-size);height:var(--control-size);flex:none;display:grid;place-items:center}
.menu-close svg{width:var(--icon-size);height:var(--icon-size)}
.menu-close:hover,.map-app .app-menu-dialog .menu-close:is(:hover,:focus-visible){background:var(--surface-hover);color:var(--ink)}
.menu-account-section{background:var(--soft);border-color:var(--line)}
.menu-avatar{background:var(--surface-hover);color:var(--ink)}
.menu-account-summary>div>span,.menu-navigation small,.menu-navigation .nav-chevron,.menu-secondary,.app-menu-credit{color:var(--muted)}
.menu-profile-button{background:var(--white);border-color:var(--line);color:var(--ink)!important}
.menu-navigation>a,.menu-navigation>button{display:flex;align-items:center;gap:12px;min-height:calc(56px * var(--ui-scale));padding:13px 2px;border:0;border-bottom:1px solid var(--line);border-radius:0;background:transparent;color:var(--ink);text-align:left;font-size:calc(17px * var(--ui-scale));line-height:1.5;text-decoration:none}
.menu-navigation>button>svg{width:var(--icon-size);height:var(--icon-size);flex:none}
.menu-navigation>button>span:not(.nav-chevron){flex:1}
.menu-navigation>:is(a,button):is(:hover,[aria-current=page]){background:var(--soft)}
.menu-secondary{border-color:var(--line)}
.settings-title{display:flex;align-items:center;gap:12px}
.settings-back{display:grid;place-items:center;background:none;border:0;padding:8px;width:var(--control-size);height:var(--control-size);margin-left:-10px;border-radius:6px}
.settings-back svg{width:var(--icon-size);height:var(--icon-size)}
.settings-group{border:0;border-bottom:1px solid var(--line);padding:0 0 26px;margin:30px 0 0;min-width:0}
.settings-group legend{font:500 calc(17px * var(--ui-scale))/1.4 var(--body);margin-bottom:14px;padding:0}
.appearance-options{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:3px;padding:4px;background:var(--soft);border:1px solid var(--line);border-radius:8px}
.appearance-options label{position:relative;min-width:0;cursor:pointer}
.appearance-options input{position:absolute;width:1px;height:1px;opacity:0}
.appearance-options span{display:flex;align-items:center;justify-content:center;min-height:var(--control-size);padding:8px 4px;border-radius:5px;font-size:calc(15px * var(--ui-scale));line-height:1.3;text-align:center;color:var(--muted);transition:background .14s,color .14s,box-shadow .14s}
.appearance-options input:checked+span{background:var(--selection-bg);color:var(--selection-fg);box-shadow:0 0 0 1px var(--selection-border)}
.appearance-options input:focus-visible+span{outline:2px solid var(--ink);outline-offset:1px}
.appearance-help,#appearance-feedback{font-size:calc(14px * var(--ui-scale));line-height:1.6;color:var(--muted);margin:16px 0 0}
#appearance-feedback{min-height:3.2em}
.settings-link{display:inline-flex;align-items:center;min-height:var(--control-size);margin-top:8px;text-decoration:underline;text-underline-offset:4px}
:root[data-ui-size]:not([data-ui-size=normal]) :is(button:not(.map-marker),.button,input:not([type=checkbox]):not([type=radio]),select){min-height:var(--control-size)}
:root[data-ui-size]:not([data-ui-size=normal]) :is(.heart-button,.map-app .panel-close){width:var(--control-size);min-width:var(--control-size);height:var(--control-size)}
:root[data-ui-size]:not([data-ui-size=normal]) .heart-button svg{width:var(--icon-size);height:var(--icon-size)}
:root[data-theme=dark] :is(.sidebar,.inspector,.layers-panel,.layers-header,.sidebar-intro,.sidebar-bottom,.inspector-toolbar,.sheet-grab,.modal,.modal-body,.project-card,.object-card,.participant-card,.profile-form,.source-item){background:var(--white);color:var(--ink);border-color:var(--line)}
:root[data-theme=dark] :is(button:not(.map-marker):not(.map-icon),input,select,textarea,.button,.stage-choice,.geometry-options,.settings,.scope-note,.project-summary-facts>div,.claim-card){background:var(--soft);color:var(--ink);border-color:var(--line)}
:root[data-theme=dark] :is(.button.primary,.segmented button[aria-pressed=true],.layer-switch input:checked+span){background:var(--emphasis);color:var(--on-emphasis)}
:root[data-theme=dark] .maplibregl-ctrl-scale{color:#252521;background:#ffffffe6;border-color:#252521}
:root[data-theme=dark] .app-menu-trigger,:root[data-theme=dark] .map-app #map-menu-btn{background:var(--soft);color:var(--ink)}
:root[data-theme=dark] .heart-button{background:var(--white)!important;color:var(--ink)!important;border-color:var(--line)!important}
:root[data-theme=dark] .status{color:var(--muted)}
:root[data-theme=dark] .marker-label{background:var(--white);color:var(--ink);border-color:var(--line)}
@media(max-width:700px){
 .map-app .map-search{width:calc(100% - var(--control-size) - 36px);top:calc(var(--header-height) + 12px)}
 .map-app #layers-btn{top:calc(var(--header-height) + 12px);right:12px;left:auto}
 .map-app .sidebar{top:0}
 .map-app .inspector{top:auto}
 .map-app .mobile-list-toggle{max-width:calc(100% - var(--control-size) - 40px)}
 .map-app .map-top{right:12px;bottom:calc(var(--control-size) + 32px)}
 .map-app #map-info-btn{right:16px;bottom:20px}
 .settings-title{gap:6px}
 .app-menu-dialog .menu-shell{padding-left:20px;padding-right:20px}
 :root[data-ui-size]:not([data-ui-size=normal]) .map-app .stage-filters{grid-template-columns:1fr}
 :root[data-ui-size]:not([data-ui-size=normal]) .map-app .stage-choice{min-width:0;width:100%}
 :root[data-ui-size]:not([data-ui-size=normal]) .map-app .tabs{max-width:100%;overflow-x:auto;flex-wrap:nowrap}
 :root[data-ui-size]:not([data-ui-size=normal]) .map-app .tabs button{flex:0 0 auto;white-space:nowrap}
 :root[data-ui-size]:not([data-ui-size=normal]) .map-app .sidebar-intro{display:grid;grid-template-columns:minmax(0,1fr) var(--control-size);gap:0 12px}
 :root[data-ui-size]:not([data-ui-size=normal]) .map-app .sidebar-actions{display:contents}
 :root[data-ui-size]:not([data-ui-size=normal]) .map-app #sidebar-close{grid-column:2;grid-row:1}
 :root[data-ui-size]:not([data-ui-size=normal]) .map-app #about-btn{grid-column:1/-1;grid-row:2;justify-self:start;padding-left:0;background:transparent}
}
@media(prefers-reduced-motion:reduce){.appearance-options span{transition:none}}

/* Shared selected state; independent of theme and map surface colours. */
input:is([type=checkbox],[type=radio]){accent-color:var(--selection-bg)}
:root .map-app .layers-panel .segmented button[aria-pressed=true]{background:var(--selection-bg);color:var(--selection-fg);box-shadow:0 0 0 1px var(--selection-border)}
:root .map-app .layers-panel .layer-toggles input:checked{background:var(--selection-bg);box-shadow:0 0 0 1px var(--selection-border)}
:root .map-app .stage-choice:has(input:checked){background:var(--selection-bg);color:var(--selection-fg);border-color:var(--selection-border)}
:root .map-app .stage-choice:has(input:checked) small{color:var(--selection-fg)}
.map-app .stage-choice:has(input:focus-visible){outline-color:var(--ink)}

:root[data-theme] :is(.object-photo-wrap,.related-card-photo) .heart-button{background:transparent!important}

/* Shared header: news, saved projects, menu; labels appear on desktop. */
.site-header .header-action{position:relative;display:flex;align-items:center;justify-content:center;gap:9px;min-width:var(--control-size);width:var(--control-size);height:var(--control-size);border-radius:8px;color:inherit;text-decoration:none}
.site-header .header-label{display:none;position:static;background:none;color:inherit;padding:0;border-radius:0;min-width:0;height:auto;font-size:calc(14px * var(--ui-scale));line-height:1.3;white-space:nowrap}
.site-header .header-action:hover{background:var(--soft)}
.site-header .header-action svg,.site-header .app-menu-trigger svg{flex-shrink:0}
@media(min-width:768px){
 .site-header .header-label{display:inline}
 .site-header .header-action,.map-app .site-header .header-radar{width:auto;padding:0 13px}
 .site-header .app-menu-trigger,.map-app #map-menu-btn{display:flex;align-items:center;justify-content:center;gap:9px;width:auto;padding:0 13px}
 .site-header .header-radar>[data-nav-saved-count]{top:0;right:0}
}
@media(max-width:420px){
 .site-header .header-inner,.map-app .site-header .header-inner{gap:8px;padding-left:12px;padding-right:12px}
 .site-header .brand,.map-app .site-header .brand{font-size:clamp(18px,6vw,calc(25px * var(--ui-scale)))}
 .site-header .header-actions,.map-app .site-header .header-actions{gap:4px}
}

/* One dropdown surface across portal, map and administration. */
.rr-select{position:relative;display:block;min-width:0;width:100%;color:var(--ink)}
select.rr-native-select{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:0!important;clip-path:inset(50%);overflow:hidden;opacity:0;pointer-events:none}
.rr-select-trigger{display:flex;align-items:center;justify-content:space-between;gap:12px;width:100%;min-width:0;min-height:var(--control-size);padding:11px 14px;border:1px solid var(--line);border-radius:8px;background:var(--white);color:var(--ink);font:inherit;text-align:left;cursor:pointer;transition:border-color .15s ease,background .15s ease}
.rr-select-trigger:hover{border-color:var(--muted)}
.rr-select-trigger:focus-visible,.rr-select-trigger[aria-expanded=true]{outline:2px solid var(--ink);outline-offset:2px}
.rr-select-trigger:disabled{opacity:.45;cursor:default}
.rr-select-trigger[aria-invalid=true]{border-color:#a74232}
.rr-select-value{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rr-select-trigger>svg{width:18px;height:18px;flex:none;transition:transform .15s ease}
.rr-select-trigger[aria-expanded=true]>svg{transform:rotate(180deg)}
.rr-select-list{position:fixed;inset:auto;margin:0;padding:6px;border:1px solid var(--line);border-radius:12px;background:var(--white);color:var(--ink);box-shadow:0 8px 32px #00000024;overflow:auto;overscroll-behavior:contain;scroll-padding:6px;font:400 calc(15px * var(--ui-scale))/1.45 var(--body);animation:rr-dropdown-in .12s ease-out}
.rr-select-list::backdrop{background:transparent}
.rr-select-list [role=option]{display:flex;align-items:center;justify-content:space-between;gap:18px;min-height:44px;padding:10px 12px;border-radius:6px;cursor:pointer;overflow-wrap:anywhere}
.rr-select-list [role=option]:hover,.rr-select-list .is-active{background:var(--soft)}
.rr-select-list [role=option][aria-selected=true]{background:var(--selection-bg);color:var(--selection-fg);box-shadow:inset 0 0 0 1px var(--selection-border)}
.rr-select-list [aria-disabled=true]{opacity:.4;cursor:default}
.rr-option-check{flex:none;visibility:hidden}
[aria-selected=true]>.rr-option-check{visibility:visible}
.radius-select+.rr-select-trigger{font-size:calc(13px * var(--ui-scale))}
@keyframes rr-dropdown-in{from{opacity:0;transform:translateY(-3px)}to{opacity:1;transform:none}}
@media(prefers-reduced-motion:reduce){.rr-select-list{animation:none}.rr-select-trigger,.rr-select-trigger>svg{transition:none}}

.project-description-source{font-size:calc(12px * var(--ui-scale));color:var(--muted);margin-top:8px}
.project-website.button.primary{background:var(--ink);color:var(--white);border-color:var(--ink)}
.map-app .inspector .page-heading:has(.project-website){display:block}
.map-app .inspector .page-heading:has(.project-website) .actions{justify-content:flex-start}
.map-app .inspector .page-heading .actions>a.project-website{display:inline-flex;align-items:center}

.api-docs h2{margin-top:32px}.api-docs pre{max-width:100%;overflow-x:auto;border:1px solid var(--line);border-radius:8px;background:var(--soft);padding:16px;font:calc(13px * var(--ui-scale))/1.7 monospace;white-space:pre}.api-docs .actions{margin:20px 0}

/* Statistics share the project/profile spacing, typography and surface tokens. */
.stat-metrics{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:16px;margin:24px 0 30px}
.stat-metrics>div{border-top:1px solid var(--line);padding-top:16px;min-width:0}
.stat-metrics dt{font-size:calc(13px * var(--ui-scale));color:var(--muted)}
.stat-metrics dd{font:500 calc(34px * var(--ui-scale))/1.3 var(--heading);margin:8px 0 0;font-variant-numeric:tabular-nums}
.stat-chart-grid{display:grid;grid-template-columns:1fr 1fr;gap:32px}
.stat-chart{min-width:0;margin:8px 0 26px}.stat-chart h3{font-size:calc(19px * var(--ui-scale));margin:0 0 18px}
.stat-bars{margin:0}.stat-bars>div{margin:14px 0}.stat-bars dt{font-size:calc(14px * var(--ui-scale));margin-bottom:7px}.stat-bars dd{display:flex;align-items:center;gap:14px;margin:0}.stat-bars strong{font-weight:500;font-size:calc(14px * var(--ui-scale));font-variant-numeric:tabular-nums;min-width:25px;text-align:right}
.stat-bar-track{flex:1;height:8px;border-radius:4px;background:var(--soft);overflow:hidden}.stat-bar-track>span{display:block;height:100%;background:var(--ink);border-radius:4px}
.timeline-kind{font-size:calc(11px * var(--ui-scale));color:var(--muted)}.timeline-sources{font-size:calc(12px * var(--ui-scale));margin-top:10px}.timeline-sources a{text-decoration:underline;text-underline-offset:3px}
.statistics-intro{max-width:720px;color:var(--muted)}
.membership-form{display:grid;grid-template-columns:1fr 1fr;gap:18px;max-width:800px}.membership-form h2,.membership-form>.quiet-note,.membership-form>[role=status]{grid-column:1/-1}.membership-form label{display:grid;gap:8px;min-width:0;font-size:calc(14px * var(--ui-scale))}.membership-form input{width:100%;min-height:var(--control-size);border:1px solid var(--line);border-radius:8px;padding:10px 14px;background:var(--white)}.membership-form>[type=submit]{justify-self:start}
.account-list-heading{margin-top:40px}.account-list{display:grid;gap:16px}.account-card{padding:20px;border:1px solid var(--line);border-radius:8px;min-width:0}.account-card h3{margin:0 0 6px}.account-card p{margin:4px 0;overflow-wrap:anywhere}.membership-row{display:flex;justify-content:space-between;gap:16px;align-items:center;padding-top:16px;margin-top:16px;border-top:1px solid var(--line)}
@media(max-width:700px){.stat-chart-grid{grid-template-columns:1fr;gap:12px}.stat-metrics{grid-template-columns:repeat(2,minmax(0,1fr))}.stat-metrics dd{font-size:calc(30px * var(--ui-scale))}.membership-form{grid-template-columns:1fr}.membership-row{align-items:start;flex-direction:column}.account-card{padding:16px}}

.membership-form>.quiet-note{font-size:calc(14px * var(--ui-scale));line-height:1.65}
.timeline time,.map-app .inspector .timeline time{font-size:calc(12px * var(--ui-scale))}.timeline h3,.map-app .inspector .timeline h3{font-size:calc(17px * var(--ui-scale));margin:4px 0 8px}.timeline p,.map-app .inspector .timeline p{font-size:calc(14px * var(--ui-scale));line-height:1.65}
.account-card h3,.membership-row>span{overflow-wrap:anywhere;min-width:0}
