/* FlightPulse 3.1 design system: radar first, compact station strip, readable data.
 * Aircraft scrolling is still owned by aircraft-workspace.css, never nested page cards. */
:root{--fp-space-1:4px;--fp-space-2:8px;--fp-space-3:12px;--fp-space-4:16px;--fp-space-6:24px;--fp-label:13px;--fp-body:15px;--fp-title:19px;--fp-number:28px;--fp-radius:3px;--display:'DM Sans',system-ui,sans-serif}
:root[data-theme=light]{--bg:#f1f3f4;--surface:#fff;--surface2:#edf2f5;--surface3:#dce8ee;--border:#b6c8d2;--text:#132f40;--muted:#39586b;--dim:#4f6a7c;--accent:#095bb6;--green:#08796c;--fp-ink:#092634;--fp-blue:#0879aa;--fp-cyan:#5ad6d1;--fp-amber:#eeb14a}
:root[data-theme=dark]{--bg:#08161d;--surface:#102831;--surface2:#17333e;--surface3:#244955;--border:#3c606d;--text:#f0f6f8;--muted:#bfd0d7;--dim:#a6bfcb;--accent:#6cc9fa;--green:#63d7bb;--fp-ink:#08232e;--fp-blue:#278cae;--fp-cyan:#6be0d9;--fp-amber:#f4bc57}
html{scroll-padding-top:20px}body{font-size:var(--fp-body);line-height:1.5}
main{max-width:none;padding:0 20px}.topbar{height:64px;min-height:64px;padding:0 20px;border-bottom:2px solid var(--fp-cyan);gap:20px}
.brand,.fp-wordmark{letter-spacing:-.9px;font-weight:700}.brand{font-size:26px}.fp-brandmark{width:33px;height:32px}
.main-nav{gap:21px}.main-nav a,.main-nav .nav-action{font-size:14px}.top-actions .language,.topbar #account-button{font-size:14px;min-height:40px}.top-actions .icon-button{width:40px;height:40px}
.intro{padding:10px 0;margin:0;border:0;min-height:48px;gap:12px}.intro>div:first-child{display:flex;align-items:baseline;gap:16px;min-width:0}.intro h1{font-size:16px;line-height:1.5;letter-spacing:0;font-weight:600}.intro .eyebrow,.intro p{display:none}
.utc{display:flex;flex-direction:row;align-items:center;gap:10px;min-width:0;padding:0;border:0}.utc-label{font-size:12px}.utc strong{font-size:18px;letter-spacing:.5px}.utc>span:last-child{font-size:12px}
.airport-toolbar{display:flex;gap:12px;margin:0 0 12px}.search-trigger{height:46px;min-width:285px;font-size:15px;flex:0 1 390px}.search-trigger kbd{font-size:12px}.quick-airports button{height:44px;font-size:14px;padding:0 20px}.favorites-trigger{font-size:14px;min-height:44px}.atc-directory-trigger{margin-left:auto}
.airport-hero{min-height:95px;padding:13px 20px;border-bottom:1px solid var(--border);border-radius:0;background:var(--surface);margin-bottom:12px}.airport-hero:before{width:4px;background:var(--green)}.airport-hero:after{display:none}.airport-primary{gap:20px}.airport-code{font-size:46px;letter-spacing:-2px;padding-right:20px}.airport-copy h2{font-size:20px;font-weight:650;line-height:1.3}.airport-location,.airport-meta{font-size:13px;line-height:1.5}.airport-location{margin-bottom:3px}.airport-meta{margin-top:4px}.country-tag{font-size:12px;padding:1px 6px}.airport-end .text-link{font-size:13px}.airport-end .large{width:40px;height:40px}
/* Map gets the first visual and keyboard position; radio stays beside it on wide screens. */
.workspace-grid{grid-template-columns:minmax(0,1fr) 330px;grid-template-areas:'map radio';gap:12px;background:none;border:0;margin:0}.map-panel{grid-area:map;border:1px solid var(--border)}.radio-panel{grid-area:radio;border:1px solid var(--border);align-self:start}.workspace-grid>.panel{border-radius:0}
.panel-heading{min-height:60px;padding:10px 16px;background:var(--surface);gap:10px}.panel-heading h2{font-size:17px;gap:9px}.count-badge{font-size:13px;padding:3px 8px}.badge{font-size:12px;font-weight:500;padding:4px 7px;line-height:1.4}.map-actions{gap:6px}.map-actions .icon-button{width:38px;height:38px}.map-settings-trigger{font-size:14px;min-height:40px;padding:8px 12px;border-color:var(--accent);font-weight:600}.map-wrap{height:clamp(560px,calc(100dvh - 340px),850px);min-height:560px;flex:none}.map-bottom{font-size:13px;padding:9px 14px;gap:10px;min-height:39px}.map-caption{font-size:13px;padding:8px 10px;max-width:calc(100% - 28px)}.map-center,.map-legend,.map-route-legend{font-size:12px}.map-center{min-height:40px}.map-legend{padding:5px 8px}
.map-settings{width:min(390px,calc(100% - 20px));max-height:calc(100% - 20px)}.map-settings-heading strong{font-size:17px}.map-settings-heading button{min-width:40px;min-height:40px}.map-settings-body{font-size:14px}.map-settings-body h3{font-size:15px}.map-setting-field>span,.map-setting-check,.map-filter-count,.map-setting-field select,.map-filter-query{font-size:14px}.map-settings-note{font-size:13px;line-height:1.6}.map-setting-field select,.map-filter-query{min-height:42px}.map-setting-check{min-height:37px}.map-setting-check input{width:18px;height:18px}
.radio-panel .panel-heading{display:flex;flex-wrap:wrap;align-items:center;min-height:60px}.radio-panel .panel-heading h2{flex:1}.radio-panel .badge{font-size:12px;white-space:normal}.channel-tabs{padding:8px;gap:3px;display:flex;flex-wrap:wrap;overflow:visible}.channel-tabs button{font-size:13px;padding:8px;min-height:36px}.channel-tabs button:disabled{opacity:.65}.channel-explanation{font-size:13px;padding:9px 14px;line-height:1.5}#player-content{padding:14px;min-height:0;flex:none}.station-title{margin-bottom:12px}.station-title h3{font-size:20px;line-height:1.3}.station-sub,.station-code{font-size:13px}.radio-empty{text-align:left;padding:4px 0}.radio-empty .empty-icon{display:none}.radio-empty h3{font-size:17px;line-height:1.45}.radio-empty p{font-size:14px;line-height:1.65;margin:10px 0;max-width:none}.radio-empty a,.radio-empty button{font-size:14px}.radio-empty .primary-button{display:flex;width:100%;justify-content:center;padding:12px}.radio-footer{padding:10px 14px;font-size:12px;margin-top:0;flex-wrap:wrap;gap:8px;line-height:1.5}.radio-footer button{font-size:13px}.player-splash{min-height:170px}.play-stream{font-size:14px;min-height:46px}.radio-source-note{font-size:12px}.station-top{min-width:0}
.fp-radio-save{display:flex;align-items:center;gap:8px;width:100%;border-top:1px solid var(--border);padding:10px 14px;font-size:14px;text-align:left;background:var(--surface2);min-height:44px}.fp-radio-save[aria-pressed=true]{color:var(--accent)}.fp-radio-saved{margin:0 0 12px;display:flex;flex-wrap:wrap;gap:6px}.fp-radio-saved button{font-size:13px;border:1px solid var(--border);padding:7px 9px;min-height:38px;background:var(--surface)}
.personal-dashboard{margin:12px 0 20px;border:1px solid var(--border);border-radius:0}.pd-details>summary{padding:11px 16px;min-height:48px}.pd-summary-title strong{font-size:15px}.pd-summary-hint,.pd-summary-count{font-size:13px}.pd-content{padding:16px}.pd-help,.pd-empty{font-size:14px}.pd-view-option,.pd-text-button,.pd-interest-fields input{font-size:14px;min-height:40px}
.weather-panel,.flights-panel,.airport-info-panel{margin-top:20px;border-radius:0}.weather-heading,.flights-panel .panel-heading{padding:14px 18px}.weather-heading h2,.flights-panel .panel-heading h2,.airfield-summary-copy strong{font-size:20px;font-weight:650}.weather-observed,.weather-unit-select,.weather-unit-select select{font-size:13px}.weather-metric>span,.weather-metric>small{font-size:13px}.weather-metric strong{font-size:30px;font-weight:650;letter-spacing:-.7px}.weather-metric-detail{font-size:14px}.weather-source{font-size:13px;line-height:1.6}.weather-runway-wind>summary,.weather-advisories>summary,.weather-reports>summary,.weather-forecast>summary{font-size:14px;padding:12px 18px}.weather-report-explanation,.weather-report-raw{font-size:14px;line-height:1.65}.weather-metrics{border-bottom:1px solid var(--border)}
.flight-tabs button{font-size:15px;padding:13px 0}.flight-tz,.demo-switch,.flights-foot{font-size:13px}.fw-intro{padding:18px;gap:16px}.fw-copy h3{font-size:18px}.fw-copy p{font-size:15px}.fw-copy small,.fw-links{font-size:13px}.fw-load{font-size:14px;min-height:44px}.flight-table td{font-size:15px}.flight-table th{font-size:13px}.airfield-summary-copy span,.airfield-reference-badge{font-size:13px}.airfield-table td,.airfield-table th{font-size:14px}.airfield-source-note{font-size:13px}.airfield-summary-code{font-size:14px}.bottom-note{display:none}footer{min-height:80px;padding:20px 0}footer>span,footer>div,.seo-airport-links{font-size:13px!important}
dialog input,dialog select,dialog textarea{font-size:16px!important}dialog p,.dialog-body,.aw-notice,.aw-form-field>span,.aw-field-label{font-size:14px;line-height:1.65}.airport-result{padding:14px;min-height:70px}.result-name{font-size:16px}.result-location,.result-icao{font-size:13px}.result-code{font-size:22px}.search-input-wrap input{font-size:17px}.search-label,.search-bottom{font-size:13px}
/* Legible aircraft telemetry without changing the proven single-scroll layout. */
#aircraft-detail.aircraft-detail{border-radius:4px;width:min(370px,calc(100% - 24px));height:min(470px,calc(100% - 24px))}
#aircraft-detail.aircraft-detail.is-expanded{width:min(440px,calc(100% - 24px));height:calc(100% - 24px)}
#aircraft-detail .ad-heading h3{font-size:25px;font-weight:700;letter-spacing:-.6px}#aircraft-detail .ad-heading>span,#aircraft-detail .ad-header-identity,#aircraft-detail .ad-header-airline{font-size:13px}#aircraft-detail .ad-main-metrics strong{font-size:28px;font-weight:650}#aircraft-detail .ad-main-metrics span,#aircraft-detail .ad-main-metrics small,#aircraft-detail .ad-status,#aircraft-detail .ad-status small{font-size:13px}#aircraft-detail .ad-field dt{font-size:13px;line-height:1.5}#aircraft-detail .ad-field dd{font-size:16px;font-weight:600;line-height:1.5}#aircraft-detail .ad-data-grid{gap:14px 16px;padding:12px 0}#aircraft-detail .ad-field{padding-bottom:8px;border-bottom:1px solid var(--border)}#aircraft-detail .ad-source,#aircraft-detail .ad-observation-status{font-size:12px}#aircraft-detail .ad-more-toggle{font-size:15px}#aircraft-detail .ad-more-toggle small{font-size:12px}#aircraft-detail.is-expanded .ad-tabs button{font-size:14px;min-height:40px}#aircraft-detail .ad-follow{font-size:14px;min-height:42px}#aircraft-detail .ad-route-state{font-size:14px}#aircraft-detail .ad-reference-note,#aircraft-detail .ad-position p,#aircraft-detail .ad-model span,#aircraft-detail .ad-callsign-hint{font-size:13px}#aircraft-detail .ad-model strong{font-size:17px}.fp-note,.fp-empty,.fp-unavailable,.fp-chart-note{font-size:14px!important;line-height:1.65!important}.fp-observed strong{font-size:18px}.fp-observed span,.fp-stats dt,.fp-chart-label,.fp-chart-axis{font-size:13px}.fp-history h4{font-size:16px}#aircraft-detail .ad-title-icon{border-radius:2px;background:#16495d;color:#83e8e1}
.map-panel.is-expanded .map-wrap{height:calc(100dvh - 125px);min-height:0}
@media(min-width:1600px){.workspace-grid{grid-template-columns:minmax(0,1fr) 360px}.map-wrap{min-height:630px}}
@media(max-width:1180px){.main-nav{gap:14px}.main-nav a,.main-nav .nav-action{font-size:13px}.topbar{gap:14px}.workspace-grid{grid-template-columns:minmax(0,1fr) 300px}.map-actions #map-status{display:none}.airport-end .text-link{display:none}.map-settings-trigger{font-size:13px;padding:8px}.panel-heading h2{font-size:16px}}
@media(max-width:1000px){.workspace-grid{grid-template-columns:minmax(0,1fr);grid-template-areas:'map' 'radio'}.radio-panel{width:100%;display:grid;grid-template-columns:minmax(220px,.7fr) minmax(0,1fr)}.radio-panel .panel-heading,.radio-panel .channel-tabs,.radio-panel .channel-explanation{grid-column:1}.radio-panel #player-content{grid-column:2;grid-row:1/5;border-left:1px solid var(--border)}.radio-panel .radio-footer,.radio-panel .fp-radio-save{grid-column:1/-1}.radio-empty p{max-width:none}.map-wrap{height:590px;min-height:590px}.topbar{height:auto;min-height:70px;padding:10px 16px 0}.main-nav{height:40px;gap:22px;order:3;flex-basis:100%;justify-content:flex-start;overflow-x:auto}.top-actions{margin-left:auto}.main-nav a,.main-nav .nav-action{font-size:14px}.main-nav a.active:after{bottom:0}.topbar{flex-wrap:wrap}.airport-toolbar{flex-wrap:wrap}.search-trigger{flex:1}.atc-directory-trigger{margin-left:0}.airport-hero{padding:13px 16px}.airport-primary{gap:16px}.airport-code{font-size:43px}}
@media(max-width:650px){main{padding:0 10px}.topbar{padding:10px 12px 0;gap:6px}.brand{font-size:24px}.fp-brandmark{width:27px}.top-actions{gap:2px}.top-actions .icon-button{width:34px;height:38px}.topbar #account-button{padding:6px 9px}.topbar #sources-top{display:none}.top-actions .separator{display:none}.main-nav{height:43px;gap:22px}.intro{padding:8px 1px;min-height:39px}.intro h1{font-size:13px;font-weight:500}.utc strong{font-size:15px}.utc-label{font-size:11px}.utc>span:last-child{display:none}.utc{display:flex;gap:5px}.airport-toolbar{gap:8px;margin-bottom:10px}.search-trigger{width:100%;height:46px;min-width:0;flex-basis:100%}.quick-airports{display:flex;flex:1;min-width:0}.quick-airports button{padding:0 12px;flex:1;height:40px}.favorites-trigger{padding:7px 0;min-height:38px;font-size:13px}.favorites-trigger span[data-t=favorites]{display:none}.atc-directory-trigger{order:2;margin:0;flex-basis:100%;border-top:1px solid var(--border);padding:7px 0;justify-content:flex-start}#open-favorites{margin-left:0}.airport-hero{padding:12px;min-height:92px;margin-bottom:10px}.airport-primary{gap:12px;align-items:flex-start}.airport-code{font-size:36px;padding:0 12px 0 0;align-self:center;min-width:0}.airport-copy h2{font-size:16px;line-height:1.35}.airport-location{font-size:12px;flex-wrap:wrap;gap:4px}.airport-location>span[data-icon]{display:none}.airport-meta{font-size:12px;gap:4px;flex-wrap:wrap}.airport-meta #coordinates,.airport-meta .meta-dot{display:none}.airport-end{align-self:center;gap:3px}.airport-hero-controls{flex-direction:column}.airport-end .large{width:35px;height:35px}.country-tag{font-size:11px;margin-left:0}.map-panel .panel-heading{padding:8px 10px;min-height:56px}.map-panel .panel-heading h2{font-size:15px;gap:6px}.map-actions{gap:2px}.map-actions .icon-button{width:33px;height:38px}.map-settings-trigger{font-size:13px;padding:8px;min-height:38px}.map-settings-trigger svg{display:none}.map-wrap{height:560px;min-height:560px}.map-bottom{font-size:12px;padding:8px 10px;min-height:38px}.map-caption{font-size:12px;max-width:calc(100% - 20px);left:10px;top:10px}.map-legend{font-size:11px}.workspace-grid{gap:10px}.radio-panel{display:flex}.radio-panel #player-content{border:0;padding:14px}.radio-panel .panel-heading{min-height:54px}.radio-empty{text-align:left}.radio-empty h3{font-size:18px}.radio-empty p{font-size:15px}.station-title h3{font-size:21px}.channel-tabs button{font-size:14px;min-height:40px}.radio-footer{font-size:13px}.personal-dashboard{margin-top:10px}.pd-summary-hint{display:none}.weather-panel,.flights-panel,.airport-info-panel{margin-top:14px}.weather-heading,.flights-panel .panel-heading{padding:14px}.weather-heading h2,.flights-panel .panel-heading h2{font-size:18px}.weather-metric strong{font-size:28px}.weather-metric>span,.weather-metric>small{font-size:13px}.weather-unit-select select{font-size:16px}.fw-intro{padding:15px}.fw-copy p{font-size:15px}.flight-tabs button{font-size:14px}.airfield-summary-copy strong{font-size:17px}.airfield-reference-badge{display:none}.dialog-body{padding:0 18px 20px}.airport-result{padding:11px;gap:12px}.result-name{font-size:15px}.result-code{font-size:21px}.result-icao{font-size:12px}
 #aircraft-detail.aircraft-detail{width:auto;height:min(380px,70%);max-height:min(380px,70%);left:8px;right:8px;bottom:25px}#aircraft-detail.aircraft-detail.is-expanded{width:auto;height:min(680px,84dvh);max-height:calc(100dvh - 20px);left:10px;right:10px;bottom:10px}#aircraft-detail .ad-heading h3{font-size:23px}#aircraft-detail .ad-more-toggle{font-size:15px}#aircraft-detail .ad-source,#aircraft-detail .ad-observation-status{font-size:12px}#aircraft-detail.is-expanded .ad-tabs button{font-size:13px;padding:7px;min-height:40px}#aircraft-detail .ad-main-metrics strong{font-size:25px}#aircraft-detail .ad-field dt{font-size:13px}#aircraft-detail .ad-field dd{font-size:16px}.map-settings{position:absolute;top:8px;right:8px;left:8px;width:auto;bottom:8px;max-height:none}.map-setting-field select,.map-filter-query{font-size:16px}
}
@media(max-height:520px){#aircraft-detail.aircraft-detail.is-expanded{position:fixed;top:8px;bottom:8px;left:auto;right:8px;width:min(440px,calc(100vw - 16px));height:calc(100dvh - 16px);max-height:none}#aircraft-detail .ad-heading h3{font-size:20px}#aircraft-detail.is-expanded .ad-tabs button{min-height:33px;font-size:13px}#aircraft-detail.is-expanded .ad-more-toggle{min-height:36px;padding:5px 12px}#aircraft-detail.is-expanded .ad-source,#aircraft-detail.is-expanded .ad-observation-status{font-size:11px}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important}}

.map-quickbar{display:flex;align-items:center;gap:14px;padding:8px 14px;background:var(--surface2);border-bottom:1px solid var(--border)}.map-quickbar label{display:flex;align-items:center;gap:10px;flex:1}.map-quick-label{font-size:13px;font-weight:600;white-space:nowrap}.map-quick-query{background:var(--surface);border:1px solid var(--border);border-radius:3px;color:var(--text);font-size:14px;min-height:38px;padding:7px 10px;width:100%;max-width:430px}.map-quick-note{font-size:12px;color:var(--muted);white-space:nowrap}@media(max-width:1180px){.map-quick-note{display:none}}@media(max-width:650px){.map-quickbar{padding:8px 10px}.map-quick-label{display:none}.map-quick-query{font-size:16px;min-height:42px}}

#radio-tools{grid-column:1/-1}.fp-radio-saved{padding:10px 14px;margin:0;border-top:1px solid var(--border)}.fp-radio-provider{padding:10px 14px;display:flex;flex-direction:column;gap:6px;font-size:13px}.fp-radio-provider select{font-size:15px;padding:8px;background:var(--surface);color:var(--text);border:1px solid var(--border)}
.weather-cache-note{padding:12px 16px;color:var(--danger);font-size:14px;border-top:1px solid var(--border)}

body[data-dashboard-view=atc-map] .workspace-grid{grid-template-columns:minmax(0,1fr) 380px}body[data-dashboard-view=map] .workspace-grid{grid-template-columns:minmax(0,1fr) 280px}.map-panel.expanded .map-wrap{height:calc(100dvh - 200px);min-height:200px}.plane-label{font-size:12px}.plane-label small{font-size:11px}@media(max-width:1000px){body[data-dashboard-view=atc-map] .workspace-grid,body[data-dashboard-view=map] .workspace-grid{grid-template-columns:minmax(0,1fr)}}

/* Avoid thousands of individual shadow/compositing surfaces in dense traffic. */
.traffic-map.is-dense .airwave-plane:not(.is-selected){filter:none;transition:none}

/* Compact station strip: old absolute controls must not cover the airport code. */
@media(max-width:650px){
 .airport-hero{gap:8px;align-items:center}
 .airport-primary{flex:1;min-width:0}.airport-copy{min-width:0}.airport-code{flex-shrink:0}
 .airport-end{position:static;display:flex;align-self:center;flex-shrink:0}
 .airport-hero-controls{position:static;flex-direction:column;gap:5px}
 .airport-copy h2{overflow-wrap:anywhere}
}
