/* Site & Access page */
.page-hero { padding-block: var(--space-12) var(--space-12); }
.page-hero__title { margin: var(--space-2) 0 var(--space-4); font: 800 clamp(52px, 8vw, 88px)/.92 var(--font-display); }
.page-hero__lede { margin: 0; max-width: 64ch; font-size: 18px; line-height: 28px; color: rgba(255,255,255,.85); }

.toc { position: sticky; top: calc(env(safe-area-inset-top, 0px) + 65px); z-index: 10; background: rgb(255 255 255 / .72); -webkit-backdrop-filter: blur(12px) saturate(160%); backdrop-filter: blur(12px) saturate(160%); border-bottom: 1px solid var(--line); }
.toc__inner { display: flex; gap: var(--space-1); overflow-x: auto; scrollbar-width: none; padding-block: var(--space-2); }
.toc__inner::-webkit-scrollbar { display: none; }
.toc a { flex: none; padding: 6px 14px; border-radius: var(--radius-pill); color: var(--ink); text-decoration: none; font: 600 14px/20px var(--font-sans); border: 1px solid rgb(255 255 255 / .8);
  background: linear-gradient(180deg, rgb(255 255 255 / .75), rgb(238 241 246 / .55)); -webkit-backdrop-filter: blur(10px) saturate(160%); backdrop-filter: blur(10px) saturate(160%);
  box-shadow: inset 0 1px 0 rgb(255 255 255 / .7), 0 2px 8px rgb(20 30 50 / .10); transition: transform .15s, box-shadow .15s; }
.toc a:hover { transform: translateY(-1px); box-shadow: inset 0 1px 0 rgb(255 255 255 / .8), 0 4px 12px rgb(20 30 50 / .16); }
@media (max-width: 640px) { .toc { top: calc(env(safe-area-inset-top, 0px) + 86px); } html { scroll-padding-top: 150px; } }
html { scroll-padding-top: 130px; }

h4 { margin: var(--space-4) 0 var(--space-1); font: 700 13px/16px var(--font-sans); letter-spacing: .08em; text-transform: uppercase; color: var(--ink-muted); }
.bullets { margin: 0; padding-left: 1.2em; display: grid; gap: var(--space-2); }
.bullets li::marker { color: var(--lime-text); }
.steps { margin: var(--space-3) 0 var(--space-4); padding: 0; list-style: none; counter-reset: s; display: grid; gap: var(--space-3); }
.steps li { counter-increment: s; display: grid; grid-template-columns: 32px 1fr; gap: var(--space-3); align-items: start; }
.steps li::before { content: counter(s); width: 28px; height: 28px; border-radius: 50%; display: grid; place-items: center; background: var(--storm); color: var(--on-storm); font: 700 14px/1 var(--font-sans); }
.steps li::before { background: linear-gradient(180deg, rgb(64 78 112 / .9), rgb(38 50 71 / .82)); -webkit-backdrop-filter: blur(8px) saturate(160%); backdrop-filter: blur(8px) saturate(160%); border: 1px solid rgb(255 255 255 / .35); box-shadow: inset 0 1px 0 rgb(255 255 255 / .45), 0 3px 10px rgb(20 30 50 / .18); }

/* Map */
.sitemap { display: grid; grid-template-columns: minmax(0, 1fr) 320px; gap: var(--space-6); align-items: start; }
.sitemap__fig { margin: 0; display: grid; gap: var(--space-2); }
.sitemap__map { aspect-ratio: 1.45; border-radius: var(--radius-md); overflow: hidden; border: 1px solid var(--line); }
.legend { list-style: none; margin: 0; padding: 0; display: grid; gap: var(--space-1); }
.legend a, .legend__road { display: grid; grid-template-columns: 32px 1fr; gap: var(--space-3); align-items: center; padding: var(--space-2); border-radius: var(--radius-md); color: var(--ink); text-decoration: none; }
.legend a:hover { background: var(--cloud); }
.legend b { display: block; font-weight: 600; font-size: 15px; line-height: 20px; }
.legend small { display: block; color: var(--ink-muted); font-size: 13px; line-height: 18px; }
.legend__sym { width: 28px; height: 28px; display: grid; place-items: center; font: 700 13px/1 var(--font-sans); border: 2px solid var(--ink); border-radius: 50%; }
.legend__sym--launch { background: var(--lime); color: var(--on-lime); clip-path: polygon(50% 0, 100% 100%, 0 100%); border: 0; padding-top: 8px; }
.legend__sym--launch-historic { background: var(--line-strong); color: var(--ink); clip-path: polygon(50% 0, 100% 100%, 0 100%); border: 0; padding-top: 8px; }
.legend__sym--lz { background: var(--sky); color: var(--on-lime); }
.legend__sym--lz-alt { background: var(--surface); border-color: var(--storm); }
.legend__sym--parking { background: var(--storm); color: #fff; border-radius: 6px; border-color: var(--storm); }
.legend__sym--junction { background: var(--storm-violet); color: #fff; border-radius: 4px; transform: rotate(45deg) scale(.8); border-color: var(--storm-violet); }
.legend__sym--junction { font-size: 0; }
.legend__sym--road { border: 0; border-radius: 0; height: 5px; background: var(--storm-violet); box-shadow: 0 0 0 2px #fff; }
@media (max-width: 900px) { .sitemap { grid-template-columns: 1fr; } .sitemap__map { aspect-ratio: 1.1; } }

/* Access */
.access__grid { display: grid; grid-template-columns: minmax(0, 1.2fr) minmax(0, 1fr); gap: var(--space-8); align-items: start; }
.access__main > h3 { margin-bottom: var(--space-2); }
.facts--stack { grid-template-columns: 1fr; }
.facts--stack dd { font: 400 15px/22px var(--font-sans); }
.facts--stack dd small { font-size: 13px; line-height: 18px; margin-top: 4px; }
@media (max-width: 900px) { .access__grid { grid-template-columns: 1fr; } }
.roadstatus { display: grid; gap: var(--space-2); padding: var(--space-6); border: 2px solid var(--caution); border-radius: var(--radius-md); background: var(--surface); }
.roadstatus__h { margin: 0; font: 700 28px/1 var(--font-display); }
.roadstatus__state { margin: 0; font-size: 20px; }
.roadstatus p { margin: 0; }

/* Launch guide */
.launches { display: grid; gap: var(--space-12); }
.lguide { display: grid; gap: var(--space-4); padding-top: var(--space-8); border-top: 1px solid var(--line); }
.lguide:first-child { border-top: 0; padding-top: 0; }
.lguide__head { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: end; gap: var(--space-4); }
.lguide__head h3 { margin: var(--space-2) 0 var(--space-1); font-size: clamp(40px, 5vw, 56px); line-height: .95; }
.lguide__head p { margin: 0; max-width: 60ch; }
.lguide__body { display: grid; grid-template-columns: minmax(0, 1.5fr) minmax(0, 1fr); gap: var(--space-8); }
.lguide__text p { margin: 0; }
@media (max-width: 860px) { .lguide__body { grid-template-columns: 1fr; } }
.pads { list-style: none; margin: var(--space-3) 0 0; padding: 0; display: grid; gap: var(--space-3); }
.pads li { padding: var(--space-3) var(--space-4); border-radius: var(--radius-md); background: var(--cloud); font-size: 15px; line-height: 23px; }
.pads .tag { background: rgb(255 255 255 / .55); -webkit-backdrop-filter: blur(8px) saturate(160%); backdrop-filter: blur(8px) saturate(160%); border: 1px solid rgb(255 255 255 / .8); color: var(--ink); box-shadow: inset 0 1px 0 rgb(255 255 255 / .8), 0 2px 8px rgb(20 30 50 / .12); }
:root[data-theme="dark"] .pads .tag { background: rgb(255 255 255 / .1); border-color: rgb(255 255 255 / .25); }
@media (prefers-color-scheme: dark) { :root:not([data-theme="light"]) .pads .tag { background: rgb(255 255 255 / .1); border-color: rgb(255 255 255 / .25); } }
.nophoto { margin: var(--space-4) 0 0; padding: var(--space-3); border: 1px dashed var(--line-strong); border-radius: var(--radius-md); font-size: 13px; line-height: 18px; color: var(--ink-muted); }
.cmp { margin: 0; display: grid; grid-template-columns: 150px 1fr; gap: var(--space-4); align-items: center; padding: var(--space-4); border-radius: var(--radius-md); border: 1px solid var(--line); }
.cmp svg { width: 150px; height: 150px; }
.cmp__ring { fill: var(--surface); stroke: var(--line-strong); filter: drop-shadow(0 3px 8px rgb(20 30 50 / .22)); }
.cmp__range { fill: var(--lime); opacity: .55; }
.cmp__arrow { stroke: var(--storm); stroke-width: 3; }
.cmp__head { fill: var(--storm); }
.cmp__dot { fill: var(--ink); }
.cmp__card { font: 700 11px/1 var(--font-sans); fill: var(--ink-muted); }
.cmp__n { font: 700 11px/1 var(--font-sans); fill: var(--on-storm); }
.cmp__badge { fill: var(--storm); stroke: #fff; stroke-width: 1.5; }
.cmp figcaption { display: grid; gap: var(--space-1); font-size: 14px; line-height: 20px; }
.cmp figcaption b { display: inline-grid; place-items: center; width: 20px; height: 20px; border-radius: 50%; background: var(--storm); color: var(--on-storm); font-size: 11px; }
.cmp { display: flex; flex-wrap: wrap; justify-content: center; }
.cmp svg { flex: none; overflow: visible; }
.cmp figcaption { flex: 1 1 200px; }

/* Landing */
.zones { display: grid; grid-template-columns: 1fr; gap: var(--space-6); align-items: start; }
.zone { display: grid; gap: var(--space-3); padding: var(--space-6); background: var(--surface); border-radius: var(--radius-md); border: 1px solid var(--line); }
.zone--authorized { grid-column: 1 / -1; border-top: 6px solid var(--sky); }
.zone header { display: grid; gap: var(--space-2); justify-items: start; }
.zone h3 { font-size: 36px; }
.zone p { margin: 0; }
.zone h4 { margin-bottom: 0; }
.reqs { margin: 0; display: grid; gap: 1px; background: var(--line); border-radius: var(--radius-md); overflow: hidden; border: 1px solid var(--line); }
.reqs > div { display: grid; grid-template-columns: 140px 1fr; gap: var(--space-3); padding: var(--space-3) var(--space-4); background: var(--surface); }
.reqs dt { font-weight: 700; }
.reqs dd { margin: 0; font-size: 15px; line-height: 22px; }
@media (max-width: 560px) { .reqs > div { grid-template-columns: 1fr; gap: 2px; } }
.contacts { display: flex; flex-wrap: wrap; gap: var(--space-2); }
.contacts a { padding: 6px 12px; border-radius: var(--radius-pill); border: 1px solid var(--line-strong); font-size: 14px; text-decoration: none; }
.contacts a:hover { background: var(--cloud); }
.nolanding { margin-top: var(--space-8); padding: var(--space-6); border-radius: var(--radius-md); background: var(--surface); border-left: 6px solid var(--grounded); }
.nolanding h3 { margin-bottom: var(--space-3); }
.nolist { margin: 0; padding: 0; list-style: none; display: grid; gap: var(--space-2); }

/* Visiting */
.contact-list, .req-cards { list-style: none; margin: var(--space-3) 0 0; padding: 0; display: grid; gap: var(--space-3); }
.contact-list li { display: grid; gap: 2px; padding-bottom: var(--space-3); border-bottom: 1px solid var(--line); font-size: 15px; line-height: 22px; }
.contact-list span { color: var(--ink-muted); }
.req-cards li { padding: var(--space-4); border-radius: var(--radius-md); background: var(--cloud); }
.req-cards p { margin: var(--space-1) 0 var(--space-2); font-size: 15px; line-height: 23px; }
.airspace .reqs { margin: var(--space-3) 0; }
.emergency { margin-top: var(--space-12); padding: var(--space-6); border-radius: var(--radius-md); background: var(--slate); color: var(--on-slate); }
.emergency h3 { color: var(--on-slate); margin-bottom: var(--space-3); }
.emergency ul { list-style: none; margin: 0 0 var(--space-3); padding: 0; display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: var(--space-3); }
.emergency li { display: grid; gap: 2px; }
.emergency li span { font: 700 12px/16px var(--font-sans); letter-spacing: .06em; text-transform: uppercase; color: var(--sky); }
.emergency li a { color: var(--on-slate); font: 500 20px/28px var(--font-mono); text-decoration: none; }
.emergency p, .emergency a { color: rgba(241,243,246,.82); }

/* Sources */
.flags { margin: 0; padding: 0; list-style: none; display: grid; gap: var(--space-2); }
.flags li { padding: var(--space-3) var(--space-4); border-radius: var(--radius-md); background: var(--surface); border-left: 4px solid var(--lilac); font-size: 15px; line-height: 23px; }
.flags a { white-space: nowrap; font-size: 14px; }
.sources__h { margin: var(--space-12) 0 var(--space-3); }
.sources { margin: 0; padding: 0; list-style: none; display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 320px), 1fr)); gap: var(--space-2) var(--space-6); }
.sources li { display: grid; font-size: 15px; line-height: 22px; }
.sources .host { font: 500 12px/16px var(--font-mono); color: var(--ink-muted); }

/* Pilot requirements: membership and insurance */
.pins { display: grid; gap: var(--space-3); margin-bottom: var(--space-12); }
.pins h3 { margin: 0; }
.pins p { margin: 0; max-width: 72ch; }
.ptable { width: 100%; border-collapse: separate; border-spacing: 0; border: 1px solid var(--line); border-radius: var(--radius-md); overflow: hidden; background: var(--surface); font-size: 15px; line-height: 22px; }
.ptable thead th { background: var(--storm); color: var(--on-storm); font: 700 12px/16px var(--font-sans); letter-spacing: .08em; text-transform: uppercase; text-align: left; padding: var(--space-3) var(--space-4); }
.ptable tbody th, .ptable td { text-align: left; padding: var(--space-3) var(--space-4); border-top: 1px solid var(--line); vertical-align: top; }
.ptable tbody th { font-weight: 700; }
.ptable:not(.ptable--season) tbody tr:last-child, .ptable tbody tr.is-hl { background: color-mix(in srgb, var(--lime) 18%, var(--surface)); }
.ptable--season td:nth-child(2) { font-weight: 600; white-space: nowrap; }
@media (max-width: 640px) {
  .ptable thead { display: none; }
  .ptable, .ptable tbody, .ptable tr, .ptable th, .ptable td { display: block; width: 100%; }
  .ptable tbody tr + tr { border-top: 1px solid var(--line); }
  .ptable tbody th { border-top: 0; padding-bottom: 0; }
  .ptable td { border-top: 0; padding-top: var(--space-1); }
  .ptable:not(.ptable--season) td:last-child::before { content: "Confirm with: "; color: var(--ink-muted); }
}
.req-cards .m7-btn { margin: 0 var(--space-2) var(--space-2) 0; }

/* Breathing room between a sub-heading and the list under it. */
h3 + .bullets { margin-top: var(--space-3); }
