/* Layout for the public site. Colours, type and controls come from the desktop theme. */
* { box-sizing: border-box; }
body { margin: 0; background: var(--bg); color: var(--text); }
header { min-height: 72px; padding: 16px 5vw; display:flex; align-items:center; justify-content:space-between; border-bottom:1px solid var(--border); }
header > span, .eyebrow { letter-spacing:.12em; font-size:11px; color:var(--text-muted); font-weight:600; }
.brand img { display:block; width:188px; height:auto; }
.icon { width:22px; height:22px; flex-shrink:0; vertical-align:middle; }
.eyebrow, .profile-heading > a { display:flex; align-items:center; gap:10px; }
a { color:var(--accent); }
button, input { font:inherit; min-height:var(--control-height); border-radius:var(--radius-control); border:1px solid var(--border-strong); padding:8px 12px; }
button { display:inline-flex; align-items:center; justify-content:center; gap:8px; background:var(--surface-raised); color:var(--text); cursor:pointer; }
button:hover { background:var(--surface-hover); }
#lookup button { background:var(--accent); border-color:var(--accent); color:var(--hangar-navy); font-weight:600; }
#lookup button:hover { background:var(--accent-hover); }
input { background:var(--surface-raised); color:var(--text); min-width:0; }
input::placeholder { color:var(--text-muted); }
:focus-visible { outline:2px solid var(--accent); outline-offset:3px; }
#home { max-width:880px; margin:80px auto 100px; padding:0 28px; }
h1 { font-size:clamp(34px,5vw,56px); line-height:1.15; letter-spacing:-.035em; font-weight:600; margin:20px 0; }
.intro { font-size:18px; line-height:1.7; color:var(--text-muted); max-width:670px; }
#lookup { margin-top:36px; max-width:580px; }
label { display:block; font-size:13px; color:var(--text-muted); margin-bottom:8px; }
.lookup-row { display:flex; gap:10px; }
.lookup-row input { flex:1; }
.muted { color:var(--text-muted); font-size:13px; line-height:1.65; }
#profile { padding:24px 4vw; }
.profile-heading { display:flex; align-items:center; justify-content:space-between; gap:24px; }
.profile-heading h1 { font-size:28px; margin:8px 0; overflow-wrap:anywhere; }
#status { color:var(--text-muted); margin:14px 0; }
#retry { margin-bottom:20px; }
.toolbar { display:flex; gap:12px; align-items:center; flex-wrap:wrap; margin:24px 0 16px; }
.toolbar label { margin:0; }
.toolbar input { flex:1; max-width:400px; }
.map-layout { display:grid; grid-template-columns:300px 1fr; border:1px solid var(--border); border-radius:var(--radius-card); overflow:hidden; height:65vh; min-height:420px; }
aside { overflow:auto; background:var(--surface); padding:8px; border-right:1px solid var(--border); }
ul { list-style:none; padding:0; margin:0; }
#airports button { display:flex; justify-content:flex-start; gap:12px; width:100%; text-align:left; background:transparent; border:0; border-bottom:1px solid var(--border); border-radius:0; padding:14px 10px; font-weight:400; }
#airports button:hover { background:var(--surface-hover); }
#airports strong { display:block; font-size:14px; font-weight:600; margin-bottom:4px; }
#airports span { font-size:13px; line-height:1.5; overflow-wrap:anywhere; }
#airports span > span { color:var(--text-muted); }
#more { width:100%; margin-top:12px; }
.map-pane { position:relative; background:var(--hangar-navy); min-width:0; }
#map { height:100%; width:100%; }
#map-notice { position:absolute; top:10px; left:16px; right:16px; background:var(--surface); padding:12px; border:1px solid var(--border); border-radius:8px; font-size:13px; pointer-events:none; }
#map-notice:empty { display:none; }
.mapboxgl-ctrl-group { background:var(--surface-raised); border:1px solid var(--border); }
.mapboxgl-ctrl-group button { border-radius:0; }
.mapboxgl-ctrl-group button + button { border-color:var(--border); }
.mapboxgl-ctrl-icon { filter:invert(.95); }
.mapboxgl-ctrl-attrib { background:var(--surface); color:var(--text-muted); }
.mapboxgl-ctrl-attrib a { color:var(--text-muted); }
#details { width:min(480px,calc(100vw - 24px)); max-height:calc(100dvh - 32px); padding:0; overflow:auto; border:1px solid var(--border); border-radius:var(--radius-card); background:var(--surface); color:var(--text); box-shadow:0 18px 70px #0008; }
#details::backdrop { background:#0006; }
.detail-heading { display:flex; gap:14px; align-items:center; padding:20px; border-bottom:1px solid var(--border); }
#detail-flag { --CountryFlagIcon-height:26px; flex-shrink:0; border-radius:3px; }
#detail-flag:empty:not([class^='flag:']) { display:none; }
.detail-heading h2 { margin:0; font-size:24px; font-weight:600; }
.detail-heading p { margin:4px 0 0; font-size:16px; color:var(--text-muted); overflow-wrap:anywhere; }
#close-details { align-self:flex-start; margin-left:auto; font-size:24px; width:36px; padding:0; flex-shrink:0; border:0; }
.detail-grid { display:grid; grid-template-columns:90px minmax(0,1fr); gap:10px 14px; padding:18px 20px; margin:0; }
.detail-grid dt { color:var(--text-muted); }
.detail-grid dd { margin:0; overflow-wrap:anywhere; }
.package-details { border-top:1px solid var(--border); }
.package-details h3 { font-size:13px; color:var(--accent); margin:18px 20px 0; }
.detail-note { padding:0 20px 18px; margin:0; }
footer { color:var(--text-muted); font-size:12px; line-height:1.8; padding:24px 5vw; border-top:1px solid var(--border); }
[hidden] { display:none!important; }
@media(max-width:700px) {
 header { min-height:64px; } header > span { display:none; } .brand img { width:164px; }
 #home { margin:48px auto; } .lookup-row { flex-direction:column; }
 .profile-heading { align-items:flex-start; flex-direction:column; gap:8px; }
 .map-layout { display:flex; flex-direction:column-reverse; height:auto; min-height:0; }
 .map-pane { height:380px; } aside { max-height:300px; border-right:0; border-top:1px solid var(--border); }
 .toolbar label { width:100%; } .toolbar input { max-width:none; flex-basis:100%; width:100%; }
 #profile { padding:20px 16px; }
}
