/* Self-hosted brand faces. Newsreader and Source Sans 3 are both under the SIL
   Open Font License 1.1, which permits redistribution from IARO's own host.
   Serving them here removes the last third-party request the site makes, and
   keeps the site legible in countries where Google's font CDN is blocked. */
@font-face {
  font-family: "Newsreader";
  font-style: normal;
  font-weight: 200 800;
  font-display: swap;
  src: url("/static/assets/fonts/newsreader-latin-opsz-normal.woff2") format("woff2");
}
@font-face {
  font-family: "Newsreader";
  font-style: italic;
  font-weight: 200 800;
  font-display: swap;
  src: url("/static/assets/fonts/newsreader-latin-opsz-italic.woff2") format("woff2");
}
@font-face {
  font-family: "Source Sans 3";
  font-style: normal;
  font-weight: 200 900;
  font-display: swap;
  src: url("/static/assets/fonts/source-sans-3-latin-wght-normal.woff2") format("woff2");
}
@font-face {
  font-family: "Source Sans 3";
  font-style: italic;
  font-weight: 200 900;
  font-display: swap;
  src: url("/static/assets/fonts/source-sans-3-latin-wght-italic.woff2") format("woff2");
}

:root {
  --bg: #f6f3ec;
  --bg-2: #efebe2;
  --bg-3: #e4ddd0;
  --paper: #f6f3ec;
  --paper-2: #fffcf7;
  --ink: #1a1f2b;
  --muted: #5b6573;
  --navy: #010042;
  --navy-deep: #010042;
  --gold: #b0893e;
  --gold-2: #c4a265;
  --sky: #7eb6de;
  --line: rgba(28, 42, 110, 0.12);
  --line-dark: rgba(16, 24, 32, 0.12);
  --shadow: 0 18px 40px rgba(20, 30, 82, 0.08);
  --radius: 18px;
  --header-h: 84px;
  --font-display: "Newsreader", Georgia, "Times New Roman", serif;
  --font: "Source Sans 3", "Segoe UI", system-ui, sans-serif;
  --font-serif: "Newsreader", Georgia, serif;
  --ease: cubic-bezier(0.22, 1, 0.36, 1);
}

*, *::before, *::after { box-sizing: border-box; }
html { scroll-behavior: smooth; }
html, body { margin: 0; padding: 0; }
body {
  font-family: var(--font);
  color: var(--ink);
  background: var(--bg);
  line-height: 1.6;
  letter-spacing: 0;
  overflow-x: hidden;
}
img { max-width: 100%; display: block; }
a { color: inherit; text-decoration: none; }
button, input, select, textarea { font: inherit; color: inherit; }
.skip {
  position: absolute; left: -999px; top: 8px;
}
.skip:focus { left: 8px; z-index: 100; background: var(--gold); color: var(--ink); padding: 8px 12px; }

.wrap {
  width: min(1180px, calc(100% - 40px));
  margin-inline: auto;
}
.wrap-wide {
  width: min(1320px, calc(100% - 32px));
  margin-inline: auto;
}

h1, h2, h3, h4 {
  font-family: var(--font-display);
  font-weight: 500;
  line-height: 1.08;
  letter-spacing: -0.02em;
  margin: 0;
  color: var(--navy);
}
.kicker {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  font-size: 12px;
  font-weight: 600;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--navy);
  margin-bottom: 16px;
}
.kicker::before {
  content: "";
  width: 28px; height: 1px;
  background: var(--navy);
}
.lede {
  font-family: var(--font-serif);
  font-size: clamp(1.15rem, 2vw, 1.4rem);
  font-weight: 400;
  line-height: 1.45;
  color: #3d4654;
}
.muted { color: var(--muted); }
.ink { color: var(--ink); }

.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 10px;
  min-height: 48px;
  padding: 0 22px;
  border-radius: 999px;
  border: 1px solid transparent;
  font-weight: 600;
  letter-spacing: 0.02em;
  transition: transform .25s var(--ease), background .25s, border-color .25s, color .25s;
  cursor: pointer;
}
.btn:hover { transform: translateY(-1px); }
.btn-gold {
  background: linear-gradient(180deg, #e8d3a2, #c4a265);
  color: #1a1408;
}
.btn-gold:hover { filter: brightness(1.05); }
.btn-ghost {
  border-color: var(--line);
  background: transparent;
  color: var(--navy);
}
.btn-ghost:hover { border-color: var(--navy); background: rgba(28,42,110,0.04); }
.btn-navy {
  background: var(--navy);
  color: white;
}
.btn-ink {
  background: var(--ink);
  color: var(--paper);
}
.btn-row { display: flex; flex-wrap: wrap; gap: 12px; }

/* Header */
.site-header {
  position: fixed; inset: 0 0 auto 0;
  height: var(--header-h);
  z-index: 80;
  display: flex; align-items: center;
  background: rgba(246, 243, 236, 0.94);
  backdrop-filter: blur(16px);
  border-bottom: 1px solid var(--line);
}
.header-inner {
  width: min(1320px, calc(100% - 32px));
  margin-inline: auto;
  display: flex; align-items: center; justify-content: space-between;
  gap: 20px;
}
.brand {
  display: flex; align-items: center; gap: 12px;
  min-width: max-content;
}
.brand img.iaro-mark, .brand svg { width: 42px; height: 42px; }
.brand img.iaro-logo {
  width: auto;
  height: 52px;
  max-width: 220px;
  border-radius: 6px;
}
.brand-text { display: flex; flex-direction: column; line-height: 1; }
.brand-text strong {
  font-family: var(--font);
  font-size: 18px;
  font-weight: 700;
  letter-spacing: 0.04em;
  color: var(--navy);
}
.brand-text span {
  font-size: 11px;
  letter-spacing: 0.08em;
  text-transform: none;
  color: var(--muted);
  margin-top: 4px;
}
.nav {
  display: flex; align-items: center; gap: 4px;
}
.nav a {
  padding: 8px 12px;
  font-size: 15px;
  font-weight: 500;
  color: var(--navy);
  border-radius: 999px;
}
.nav a:hover, .nav a.is-active { color: var(--navy-deep); }
.nav a.is-active { background: rgba(28,42,110,0.08); }
.header-cta { display: flex; gap: 8px; align-items: center; }
.header-cta .btn { min-height: 40px; padding: 0 16px; font-size: 14px; }
.menu-btn {
  display: none;
  width: 42px; height: 42px;
  border: 1px solid var(--line);
  background: transparent;
  border-radius: 12px;
  cursor: pointer;
}
.menu-btn span, .menu-btn span::before, .menu-btn span::after {
  display: block; width: 18px; height: 1.5px; background: var(--navy); position: relative;
}
.menu-btn span::before, .menu-btn span::after {
  content: ""; position: absolute; left: 0;
}
.menu-btn span::before { top: -6px; }
.menu-btn span::after { top: 6px; }
.menu-btn[aria-expanded="true"] span { background: transparent; }
.menu-btn[aria-expanded="true"] span::before { top: 0; transform: rotate(45deg); }
.menu-btn[aria-expanded="true"] span::after { top: 0; transform: rotate(-45deg); }
body.nav-open { overflow: hidden; }

/* Hero */
.hero {
  position: relative;
  min-height: 100svh;
  display: grid;
  align-items: end;
  padding: calc(var(--header-h) + 24px) 0 72px;
  overflow: hidden;
}
.hero-media {
  position: absolute; inset: 0;
}
.hero-media picture { display: block; width: 100%; height: 100%; }
.hero-media img {
  width: 100%; height: 100%;
  object-fit: cover;
  transform: scale(1.04);
}
.hero-media::after {
  content: "";
  position: absolute; inset: 0;
  background:
    linear-gradient(180deg, rgba(20,30,82,.42) 0%, rgba(20,30,82,.18) 32%, rgba(20,30,82,.55) 72%, var(--bg) 100%),
    linear-gradient(90deg, rgba(20,30,82,.38), transparent 62%);
}
.hero-content {
  position: relative;
  z-index: 2;
  width: min(1180px, calc(100% - 40px));
  margin-inline: auto;
}
.hero h1 {
  font-size: clamp(2.2rem, 5.4vw, 4.4rem);
  max-width: 18ch;
  color: white;
  font-weight: 500;
}
.hero h1 em {
  font-style: italic;
  font-family: var(--font-serif);
  font-weight: 400;
  color: #e8f2fb;
}
.hero .kicker { color: #d7ebf8; }
.hero .kicker::before { background: var(--sky); }
.hero .lede { color: rgba(255,255,255,.88); }
.hero-copy {
  max-width: 38rem;
  margin: 22px 0 28px;
}
.hero-meta {
  display: flex; flex-wrap: wrap; gap: 28px;
  margin-top: 48px;
  padding-top: 24px;
  border-top: 1px solid var(--line);
}
.hero-meta { border-top-color: rgba(255,255,255,.22); }
.hero-meta div strong {
  display: block;
  font-family: var(--font-display);
  font-size: 28px;
  letter-spacing: -0.02em;
  color: white;
}
.hero-meta div span {
  font-size: 13px;
  color: rgba(255,255,255,.72);
}

.flight-path {
  position: absolute; inset: 18% 8% 30% 40%;
  z-index: 2; pointer-events: none; opacity: .7;
}
.flight-path path {
  fill: none; stroke: var(--gold-2); stroke-width: 1.2;
  stroke-dasharray: 6 10;
  animation: dash 18s linear infinite;
}
@keyframes dash { to { stroke-dashoffset: -400; } }

/* Logo rail */
.logo-rail {
  padding: 22px 0 26px;
  border-top: 1px solid var(--line);
  border-bottom: 1px solid var(--line);
  background: var(--paper-2);
}
.logo-rail-label {
  text-align: center;
  font-size: 12px;
  letter-spacing: .14em;
  text-transform: uppercase;
  color: var(--muted);
  margin: 0 0 16px;
  font-weight: 600;
}
.marquee {
  overflow: hidden;
  mask-image: linear-gradient(90deg, transparent, #000 8%, #000 92%, transparent);
}
.marquee-track {
  display: flex;
  width: max-content;
  animation: marquee 48s linear infinite;
}
.marquee-set { display: flex; gap: 12px; padding-inline: 6px; }
.marquee:hover .marquee-track,
.marquee:focus-within .marquee-track { animation-play-state: paused; }
@keyframes marquee { to { transform: translateX(-50%); } }

.logo-tile {
  width: 168px; height: 80px;
  background: #fff;
  border: 1px solid var(--line);
  border-radius: 12px;
  display: grid; place-items: center;
  padding: 12px 14px;
  flex: 0 0 auto;
  color: inherit;
  text-decoration: none;
}
a.logo-tile:hover, a.logo-tile:focus-visible {
  border-color: var(--navy);
  box-shadow: 0 8px 18px rgba(20, 30, 82, .10);
}
.logo-tile img {
  width: 100%;
  height: 48px;
  object-fit: contain;
}
.logo-rail-quiet {
  padding: 14px 0 16px;
  background: var(--paper);
  border-top: 1px dashed var(--line);
  border-bottom: 1px dashed var(--line);
}
.logo-rail-quiet .logo-rail-label {
  font-size: 11px;
  letter-spacing: .1em;
  font-weight: 500;
  margin-bottom: 10px;
}
.logo-rail-quiet .logo-tile {
  width: 120px;
  height: 104px;
  padding: 10px;
  border-radius: 8px;
  background: transparent;
}
.logo-rail-quiet .logo-tile img { height: 80px; }
.logo-rail-quiet .marquee-track { animation-duration: 72s; }

/* Sections */
.section { padding: 96px 0; }
.section-head {
  display: grid;
  grid-template-columns: 1fr minmax(240px, 420px);
  gap: 32px;
  align-items: end;
  margin-bottom: 48px;
}
.section-head h2 { font-size: clamp(2rem, 4.4vw, 3.4rem); }
.section-head p { margin: 0; color: var(--muted); }

.grid-3 { display: grid; grid-template-columns: repeat(3, 1fr); gap: 18px; }
.grid-2 { display: grid; grid-template-columns: 1.15fr .85fr; gap: 22px; }
.grid-4 { display: grid; grid-template-columns: repeat(4, 1fr); gap: 16px; }

.card {
  background: var(--paper-2);
  border: 1px solid var(--line);
  border-radius: var(--radius);
  padding: 28px;
  min-height: 0;
  box-shadow: var(--shadow);
}
.card h2, .card h3 { font-size: 1.55rem; margin-bottom: 10px; }
.card p { color: #3d4654; margin: 0; }
.card .num {
  font-family: var(--font);
  font-size: 12px;
  font-weight: 700;
  letter-spacing: .14em;
  text-transform: uppercase;
  color: var(--navy);
  margin-bottom: 18px;
}
.card-stack { display: grid; gap: 16px; align-content: start; }

.photo-card {
  position: relative; overflow: hidden;
  border-radius: var(--radius);
  min-height: 420px;
  margin: 0;
  align-self: stretch;
}
.photo-card img { width: 100%; height: 100%; object-fit: cover; position: absolute; inset: 0; }
.photo-card figcaption {
  position: absolute; left: 0; right: 0; bottom: 0;
  padding: 28px;
  background: linear-gradient(transparent, rgba(20,30,82,.82));
  color: white;
}
.photo-card figcaption h2,
.photo-card figcaption .kicker { color: white; }
.photo-card figcaption .kicker::before { background: var(--sky); }

/* Events */
.event {
  display: grid;
  grid-template-columns: 180px 1fr auto;
  gap: 24px;
  align-items: center;
  padding: 28px 0;
  border-bottom: 1px solid var(--line);
}
.event-date {
  font-family: var(--font);
  font-size: 13px;
  font-weight: 700;
  letter-spacing: .08em;
  text-transform: uppercase;
  color: var(--navy);
}
.event h3 { font-size: 1.55rem; margin-bottom: 6px; }
.event p { margin: 0; color: var(--muted); }

/* Members grid */
.member-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 14px;
}
.member-card {
  background: var(--paper-2);
  border-radius: 18px;
  padding: 22px 18px 16px;
  color: var(--ink);
  min-height: 160px;
  display: flex; flex-direction: column; justify-content: space-between;
  transition: transform .25s var(--ease), box-shadow .25s;
}
.member-card:hover { transform: translateY(-4px); box-shadow: var(--shadow); }
.member-card img {
  width: 100%;
  height: 52px;
  object-fit: contain;
  object-position: left center;
}
.member-card small {
  display: block;
  margin-top: 18px;
  color: var(--muted);
  font-size: 12px;
  letter-spacing: .04em;
}
.filters { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 22px; }
.chip {
  border: 1px solid var(--line);
  background: transparent;
  color: var(--navy);
  border-radius: 999px;
  padding: 8px 14px;
  cursor: pointer;
}
.chip.is-on, .chip:hover { background: var(--navy); color: white; border-color: var(--navy); }

/* Map */
.map-shell {
  position: relative;
  background: #dce7f2;
  border: 1px solid var(--line);
  border-radius: 28px;
  overflow: hidden;
  min-height: 560px;
}
#arotw-map {
  width: 100%;
  height: 620px;
}
.map-shell svg, .map-bg {
  width: 100%;
  height: auto;
  display: block;
}
.hotspot {
  position: absolute;
  width: 14px; height: 14px;
  border-radius: 50%;
  background: var(--gold);
  box-shadow: 0 0 0 8px rgba(196,162,101,.18);
  transform: translate(-50%, -50%);
  cursor: pointer;
  border: 0;
  padding: 0;
}
.hotspot::after {
  content: "";
  position: absolute; inset: -10px;
  border-radius: 50%;
  border: 1px solid rgba(232,211,162,.4);
  animation: pulse 2.4s ease-out infinite;
}
@keyframes pulse {
  from { transform: scale(.4); opacity: .8; }
  to { transform: scale(1.6); opacity: 0; }
}
.hotspot-card {
  position: absolute;
  right: 22px; top: 22px;
  width: min(360px, calc(100% - 44px));
  background: rgba(255,252,247,.94);
  border: 1px solid var(--line);
  border-radius: 18px;
  padding: 20px;
  backdrop-filter: blur(12px);
  z-index: 400;
  max-height: calc(100% - 44px);
  overflow: auto;
}
.hotspot-card h3 { font-size: 1.4rem; margin-bottom: 8px; }
.hotspot-card p { margin: 0; color: #3d4654; font-size: 15px; }
.hotspot-card ul { margin: 10px 0 0; padding-left: 18px; color: #3d4654; }
.leaflet-container { font-family: var(--font); background: #dce7f2; }
.link-type {
  display: inline-block;
  margin-top: 12px;
  font-size: 11px;
  letter-spacing: .16em;
  text-transform: uppercase;
  color: var(--sky);
}

/* Pricing */
.price-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 16px; align-items: stretch; }
.price {
  border: 1px solid var(--line);
  border-radius: 24px;
  padding: 32px 28px;
  background: var(--paper-2);
  display: flex;
  flex-direction: column;
  gap: 8px;
}
.price.is-featured {
  background: var(--paper);
  color: var(--ink);
  transform: translateY(-8px);
}
.price .amount {
  font-family: var(--font-display);
  font-size: 3rem;
  margin: 12px 0 6px;
}
.price .amount span { font-size: 1rem; letter-spacing: 0; font-family: var(--font); }
.price ul { padding-left: 18px; color: inherit; opacity: .82; margin: 8px 0 18px; flex: 1; }
.price .btn { margin-top: auto; align-self: flex-start; }
.price.is-featured .btn { background: var(--navy); color: white; }

/* Forms */
.form {
  display: grid; gap: 14px;
  background: var(--paper-2);
  color: var(--ink);
  padding: 32px;
  border-radius: 24px;
}
.form label { font-size: 13px; font-weight: 600; }
.form input, .form select, .form textarea {
  width: 100%;
  border: 1px solid var(--line-dark);
  border-radius: 12px;
  padding: 12px 14px;
  background: white;
  color: var(--ink);
}
.form textarea { min-height: 140px; resize: vertical; }
.form-row { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.note { font-size: 13px; color: var(--muted); }

/* News */
.news-item {
  padding: 20px 0;
  border-bottom: 1px solid var(--line);
}
.news-item time {
  font-size: 12px;
  letter-spacing: .12em;
  text-transform: uppercase;
  color: var(--navy);
}
.news-item h3 { font-size: 1.35rem; margin: 8px 0 6px; }
.news-item ul { margin: 0; padding-left: 18px; color: #3d4654; }

/* Page hero */
.page-hero {
  padding: calc(var(--header-h) + 64px) 0 48px;
  background:
    radial-gradient(800px 400px at 10% -10%, rgba(126,182,222,.22), transparent 50%),
    var(--bg);
}
.page-hero h1 { font-size: clamp(2.4rem, 5.5vw, 4.4rem); max-width: 16ch; }

/* Light band */
.band-paper {
  background: var(--paper);
  color: var(--ink);
}
.band-paper .muted { color: var(--muted); }
.band-paper .kicker { color: var(--navy); }
.band-paper .kicker::before { background: var(--navy); }
.band-paper .card {
  background: white;
  border-color: var(--line-dark);
  color: var(--ink);
}
.band-paper .card p { color: #3d4754; }

.quote {
  font-family: var(--font-serif);
  font-size: clamp(1.6rem, 3vw, 2.4rem);
  line-height: 1.25;
  font-style: italic;
  max-width: 22ch;
}

/* Footer */
.site-footer {
  padding: 64px 0 28px;
  border-top: 1px solid transparent;
  background: var(--navy-deep);
  color: #e8eef6;
}
.site-footer .brand-text strong { color: white; }
.site-footer .brand-text span { color: rgba(255,255,255,.65); }
.site-footer .muted { color: rgba(255,255,255,.62); }
.footer-grid {
  display: grid;
  grid-template-columns: 1.4fr 1fr 1fr 1fr;
  gap: 32px;
  margin-bottom: 48px;
}
.site-footer h2 {
  font-size: 13px;
  letter-spacing: .12em;
  text-transform: uppercase;
  color: var(--sky);
  margin-bottom: 14px;
}
.site-footer a { display: block; padding: 4px 0; color: rgba(232,238,246,.78); }
.site-footer a:hover { color: white; }
.legal {
  display: flex; justify-content: space-between; gap: 16px; flex-wrap: wrap;
  padding-top: 18px; border-top: 1px solid rgba(255,255,255,.12);
  font-size: 13px; color: rgba(232,238,246,.5);
}
.legal-links { display: flex; flex-wrap: wrap; gap: 6px 14px; }
.site-footer .legal a { display: inline; color: rgba(232,238,246,.78); }
.site-footer .legal a:hover { color: white; }
.legal address { font-style: normal; display: block; margin-top: 6px; }

.reveal { opacity: 0; transform: translateY(18px); animation: rise .8s var(--ease) forwards; }
.reveal:nth-child(2) { animation-delay: .08s; }
.reveal:nth-child(3) { animation-delay: .16s; }
@keyframes rise { to { opacity: 1; transform: none; } }

@media (max-width: 980px) {
  .section-head, .grid-3, .grid-2, .grid-4, .member-grid, .price-grid, .form-row, .event {
    grid-template-columns: 1fr;
  }
  .nav, .header-cta .btn-ghost { display: none; }
  .menu-btn { display: grid; place-items: center; }
  .nav.is-open {
    display: flex;
    flex-direction: column;
    align-items: stretch;
    position: absolute;
    top: var(--header-h); left: 0; right: 0;
    background: var(--paper-2);
    padding: 8px 20px 28px;
    border-bottom: 1px solid var(--line);
    z-index: 90;
    box-shadow: 0 30px 60px rgba(20,30,82,.12);
    min-height: calc(100svh - var(--header-h));
  }
  .nav.is-open a { color: var(--navy); }
  .nav.is-open a {
    padding: 14px 4px;
    font-size: 18px;
  }
  .hero { align-items: center; }
  .hero-meta { gap: 16px; }
  .event { gap: 8px; }
  .member-grid { grid-template-columns: repeat(2, 1fr); }
  .hotspot-card { position: relative; right: auto; top: auto; margin: 16px; width: auto; }
  .map-shell { min-height: 420px; }
}
@media (max-width: 640px) {
  .member-grid { grid-template-columns: 1fr; }
  .brand-text span { display: none; }
  .hero h1 { font-size: 2.35rem; max-width: 18ch; }
  .section { padding: 64px 0; }
}

/* Managed website: extend the paper, navy and sky IARO identity. */
:root { --radius: 12px; }
html { scroll-padding-top: calc(var(--header-h) + 20px); }
:focus-visible { outline: 3px solid #2672a3; outline-offset: 4px; }
.btn-gold { background: var(--navy); color: white; }
.hero .btn-gold { background: var(--sky); color: var(--navy); }
.hero .btn-ghost { color: white; border-color: rgba(255,255,255,.6); }
.hero-media::after { background: linear-gradient(90deg, rgba(1,0,42,.76), rgba(1,0,42,.24)), linear-gradient(0deg, rgba(1,0,42,.85), transparent 80%); }
.hero-meta { display: grid; grid-template-columns: repeat(4, minmax(0,1fr)); }
.hero-meta div strong { font-size: clamp(1.4rem, 2.4vw, 1.9rem); }
.hero-meta div span { color: #e0e9f0; }
.price.is-featured { background: #ddecf6; color: var(--navy); }
.price.is-featured .btn { background: var(--navy); color: white; }
.nav a { white-space: nowrap; padding-inline: 9px; }
.sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; border: 0; }
.directory-hero { padding-bottom: 30px; }
.directory-hero h1 { max-width: 24ch; font-size: clamp(2.3rem, 4.8vw, 3.8rem); }
.directory-hero .lede { max-width: 65ch; margin-bottom: 20px; }
.member-nav {
  display: flex;
  flex-wrap: nowrap;
  gap: 6px;
  margin: 18px 0 0;
  padding: 14px 0 6px;
  border-top: 1px solid var(--line);
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
  scrollbar-width: thin;
  overscroll-behavior-x: contain;
}
.member-nav a {
  flex: 0 0 auto;
  font-weight: 600;
  color: var(--navy);
  white-space: nowrap;
  padding: 8px 14px;
  border-radius: 999px;
}
.member-nav a.is-current {
  background: rgba(1, 0, 66, 0.08);
  text-decoration: none;
}
.nav-account { display: none; }
.directory-section { padding-top: 0; }
.text-link, .access-note a, .prose a:not(.btn) { color: var(--navy); text-decoration: underline; text-underline-offset: 4px; text-decoration-thickness: 1px; }
.text-link:hover, .prose a:not(.btn):hover { color: #235f88; }
/* `.prose a` (0,1,1) outranks `.btn-navy` (0,1,0), so without the :not() a navy
   button inside prose got navy text on a navy ground and vanished. */
.explore-grid { align-items: center; }
.explore-grid h2 { font-size: clamp(2rem, 4.4vw, 3.4rem); }
.explore-grid .lede { margin-block: 20px; }
.explore-grid .photo-card h3 { color: white; font-size: 2rem; }
.explore-search { margin-block: 24px 18px; }
.explore-search label { display: block; margin-bottom: 8px; font-weight: 600; }
.explore-search > div { display: flex; gap: 10px; }
.explore-search input { min-width: 0; flex: 1; width: 100%; padding: 12px; border: 1px solid #7e8794; border-radius: 5px; background: white; }
.access-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 22px; }
.access-card { padding: 32px; border: 1px solid var(--line); border-radius: 12px; background: var(--paper-2); }
.access-card-member { background: #e4eff6; border-top: 3px solid var(--navy); }
.access-card h3 { font-size: 1.8rem; }
.access-card ul { margin: 20px 0 26px; padding-left: 20px; }
.access-card li + li { margin-top: 10px; }
.benefits-table { width: 100%; border-collapse: collapse; }
.benefits-table th, .benefits-table td { padding: 18px 14px; text-align: left; vertical-align: top; border-bottom: 1px solid var(--line); }
.benefits-table thead { background: #e4eff6; }
.benefits-table tbody th { width: 30%; font-weight: 600; }
.benefits-table td { width: 35%; }
.access-note { padding: 16px 20px; border-left: 3px solid var(--sky); background: #e8f0f5; font-size: 1rem; }
.access-note h2 { font-size: 1.55rem; }
.search-bar { display: flex; flex-wrap: wrap; gap: 16px; align-items: end; padding: 22px; border: 1px solid var(--line); background: var(--paper-2); border-radius: 12px; }
.search-bar > div { flex: 1 1 180px; min-width: 0; }
.search-bar > .search-wide { flex: 3 1 260px; }
.search-bar label, .field > label { display: block; font-weight: 600; margin-bottom: 5px; }
.search-bar input, .search-bar select { width: 100%; min-height: 48px; padding: 10px 12px; border: 1px solid #7e8794; border-radius: 5px; background: white; }
.search-bar .text-link { align-self: center; }
.results-heading { display: flex; flex-wrap: wrap; align-items: baseline; justify-content: space-between; gap: 12px; margin: 30px 0 16px; }
.results-heading h2 { font-size: 1.6rem; }
.record-list { border-top: 1px solid var(--line); }
.record-card { display: flex; justify-content: space-between; gap: 24px; padding: 24px 0; border-bottom: 1px solid var(--line); }
.record-card.is-member { box-shadow: inset 3px 0 0 var(--navy); padding-left: 16px; }
.record-card h3 { font-size: 1.75rem; margin: 8px 0; }
.record-card h3 a:hover, .content-card h2 a:hover, .content-card h3 a:hover { text-decoration: underline; text-underline-offset: 5px; }
.record-card p { margin: 4px 0; }
.record-title { font-weight: 600; }
.record-aside { flex: 0 0 auto; display: flex; flex-direction: column; align-items: end; justify-content: space-between; gap: 16px; }
.eyebrow { font-size: .76rem; letter-spacing: .09em; text-transform: uppercase; color: #445166; font-weight: 600; }
.status-tag { display: inline-block; padding: 5px 11px; border-radius: 4px; font-size: .83rem; color: var(--navy); background: #e1ecf4; }
.status-tag.is-member { color: #fff; background: var(--navy); }
.pagination { display: flex; flex-wrap: wrap; justify-content: center; gap: 20px; align-items: center; margin-top: 32px; }
.directory-grid { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 20px; margin-top: 24px; }
.organisation-card h2, .content-card h2, .content-card h3 { font-size: 1.7rem; margin: 12px 0; overflow-wrap: anywhere; }
.organisation-card .status-tag { margin-bottom: 8px; }
.content-card { display: flex; flex-direction: column; align-items: start; }
.content-card > .text-link { margin-top: auto; }
.empty-state { grid-column: 1/-1; padding: 44px 28px; background: var(--paper-2); border: 1px solid var(--line); text-align: center; border-radius: 12px; }
.empty-state h2 { font-size: 2rem; }
.empty-state p { max-width: 65ch; margin: 20px auto; }
.detail-grid { display: grid; grid-template-columns: minmax(0,2fr) minmax(240px,1fr); align-items: start; gap: 44px; }
.detail-kicker { display: block; margin-top: 24px; }
.detail-kicker::before { display: none; }
.prose { max-width: 78ch; overflow-wrap: anywhere; }
.prose h2 { font-size: 2rem; margin: 28px 0 14px; }
.prose > p:first-child { margin-top: 0; }
.member-notes { margin-top: 36px; padding-top: 26px; border-top: 2px solid var(--sky); }
.record-facts h2 { font-size: 1.65rem; }
.record-facts dt { color: var(--muted); margin-top: 18px; font-size: .85rem; }
.record-facts dd { margin: 2px 0 0; overflow-wrap: anywhere; }
.record-facts a { overflow-wrap: anywhere; }
.map-disclosure { margin-top: 22px; border: 1px solid var(--line); border-radius: 10px; padding: 18px; }
.map-disclosure summary { cursor: pointer; font-weight: 600; color: var(--navy); }
#database-map { height: 370px; margin-top: 14px; border-radius: 8px; z-index: 1; background: #e8eef1; }
.checkbox { display: flex !important; align-items: start; gap: 10px; }
.checkbox input { width: 20px !important; height: 20px !important; min-height: 20px !important; margin-top: 3px; flex: 0 0 auto; }
.form .field { display: grid; gap: 5px; }
.form .field > .note { margin-top: -8px; }
.form label[for="id_consent"] { font-weight: 400; }
.form fieldset {
  border: 0;
  margin: 0;
  padding: 0;
  display: grid;
  gap: 8px;
}
.form legend { font-size: 13px; font-weight: 600; }
.form ul {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  gap: 6px;
}
.form ul label { font-weight: 400; display: flex; gap: 10px; align-items: flex-start; }
.plain-list { list-style: none; margin: 12px 0 0; padding: 0; display: grid; gap: 8px; }
.plain-list .note { margin: 0; }
.dash-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 18px;
}
.dash-card h2 { font-size: 1.6rem; margin: 8px 0 12px; }
.dash-card .btn { margin-top: 14px; }
.record-aside form { margin-top: 8px; }
@media (max-width: 980px) {
  .dash-grid { grid-template-columns: 1fr; }
}
.error-summary { background: #fff1ee; border: 2px solid #a83025; padding: 18px; }
.error-summary h2 { font-size: 1.4rem; color: #7c261d; }
.error-summary a { text-decoration: underline; }
.field-error input, .field-error textarea, .field-error select { border-color: #a83025; }
.field-message, .errorlist { color: #9a251a; margin: 0; }
.auth-wrap { max-width: 580px; }
.auth-wrap .form { margin-top: 22px; }
.site-footer .legal { color: #c0c6d8; }
@media (max-width: 1240px) {
  .nav { display: none; }
  .menu-btn { display: grid; place-items: center; }
  .nav.is-open { display: flex; position: absolute; flex-direction: column; align-items: stretch; top: var(--header-h); left: 0; right: 0; padding: 12px 24px; background: var(--paper-2); border-bottom: 1px solid var(--line); max-height: calc(100svh - var(--header-h)); overflow-y: auto; }
  .nav.is-open a { padding: 12px 6px; }
  .nav.is-open .nav-account { display: block; margin-top: 8px; padding-top: 16px; border-top: 1px solid var(--line); font-weight: 700; }
  html:not(.js-enabled) .site-header { position: relative; height: auto; }
  html:not(.js-enabled) .header-inner { flex-wrap: wrap; padding-block: 12px; }
  html:not(.js-enabled) .nav { display: flex; flex-wrap: wrap; }
  html:not(.js-enabled) .nav-account { display: inline-flex; }
  html:not(.js-enabled) .menu-btn { display: none; }
}
@media (max-width: 980px) {
  .header-cta .btn-ghost { display: inline-flex; }
  .footer-grid {
    grid-template-columns: 1fr 1fr 1fr;
    gap: 28px 32px;
  }
  .footer-grid > :first-child { grid-column: 1 / -1; max-width: 42ch; }
  .directory-grid { grid-template-columns: repeat(2,minmax(0,1fr)); }
  .detail-grid, .join-layout, .value-grid { grid-template-columns: 1fr; gap: 26px; }
  .record-aside { max-width: 40%; }
  .hero-meta { grid-template-columns: repeat(2,minmax(0,1fr)); }
  .price.is-featured { transform: none; }
  .join-aside { position: static; }
}
@media (max-width: 640px) {
  .header-inner { gap: 8px; }
  .brand img.iaro-logo { max-width: 132px; height: auto; }
  .header-cta { gap: 5px; }
  .header-cta .btn { padding-inline: 10px; font-size: 12px; }
  .header-cta .btn-gold { display: none; }
  .header-cta .btn-ghost { display: none; }
  .header-cta .header-account { display: inline-flex; }
  .footer-grid { grid-template-columns: 1fr; }
  .footer-grid > :first-child { grid-column: auto; max-width: none; }
  .directory-grid { grid-template-columns: 1fr; }
  .directory-section { padding-top: 0; }
  .search-bar { padding: 16px; }
  .record-card { flex-direction: column; gap: 16px; }
  .record-aside { flex-direction: row; align-items: center; flex-wrap: wrap; max-width: none; }
  .hero { min-height: auto; padding-bottom: 40px; }
  .hero-meta { margin-top: 32px; }
  .access-grid { grid-template-columns: 1fr; }
  .access-card { padding: 24px; }
  .explore-search > div { flex-wrap: wrap; }
  .explore-search input { flex-basis: 100%; }
  .benefits-table th, .benefits-table td { padding: 12px 6px; font-size: .85rem; overflow-wrap: anywhere; }
}
@media (max-width: 980px) {
  .value-grid,
  .join-layout {
    grid-template-columns: 1fr;
  }
  .join-aside { position: static; }
  .price.is-featured { transform: none; }
}
@media (max-width: 640px) {
  .header-cta .btn-gold { display: inline-flex; }
  .header-cta .btn-ghost { display: none; }
  .header-cta .header-account { display: inline-flex; }
  .benefits-table { display: block; overflow-x: auto; }
}
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after { animation: none !important; transition: none !important; }
  .reveal { opacity: 1; transform: none; }
  .marquee { mask-image: none; overflow: visible; }
  .marquee-track { width: auto; flex-wrap: wrap; justify-content: center; transform: none !important; }
  .marquee-set { flex-wrap: wrap; justify-content: center; }
  .marquee-set[aria-hidden="true"] { display: none; }
}

/* ---- Airport map: drawn in-house, no tiles, no third-party requests ---- */
.airport-map {
  position: relative;
  height: clamp(380px, 52vh, 560px);
  margin-top: 16px;
  border: 1px solid var(--line);
  border-radius: 12px;
  overflow: hidden;
  background: #e8eef4;
  touch-action: pan-y;
}
.airport-map__canvas { display: block; width: 100%; height: 100%; cursor: grab; }
.airport-map.is-dragging .airport-map__canvas { cursor: grabbing; }
.airport-map__grid path { stroke: rgba(1, 0, 66, .10); stroke-width: .6; fill: none; }
.airport-map__land path {
  fill: #fbf8f2;
  stroke: rgba(1, 0, 66, .28);
  stroke-width: .7;
  stroke-linejoin: round;
}
.airport-map__pin {
  fill: var(--sky);
  stroke: var(--navy);
  stroke-width: 1.4;
  paint-order: stroke;
}
.airport-map__pin.is-quiet { fill: #fff; stroke: #7b8598; stroke-dasharray: 2.2 1.8; }
.airport-map__pin.is-member { fill: var(--navy); stroke: #c4a35a; stroke-width: 2.2; }
.airport-map__cluster { fill: rgba(1, 0, 66, .90); stroke: #fff; stroke-width: 1.6; }
.airport-map__cluster.is-member { stroke: #c4a35a; }
.airport-map__count {
  fill: #fff;
  font-family: var(--font);
  font-size: 9px;
  font-weight: 700;
  pointer-events: none;
}
.airport-map__pins g { cursor: pointer; }
.airport-map__pins g:hover .airport-map__pin,
.airport-map__pins g:focus-visible .airport-map__pin { fill: #fff; stroke-width: 2.4; }
.airport-map__pins g:hover .airport-map__cluster,
.airport-map__pins g:focus-visible .airport-map__cluster { fill: #2672a3; }
.airport-map__pins g.is-selected .airport-map__pin { fill: #fff; stroke-width: 3; }
.airport-map__pins g:focus { outline: none; }
.airport-map__pins g:focus-visible circle { outline: 3px solid #2672a3; outline-offset: 3px; }
.airport-map.is-animated .airport-map__pins g { transition: opacity .18s ease; }

.airport-map__controls { position: absolute; top: 12px; right: 12px; display: grid; gap: 6px; }
.airport-map__controls button {
  width: 34px; height: 34px;
  display: grid; place-items: center;
  border: 1px solid var(--line);
  border-radius: 7px;
  background: rgba(255, 255, 255, .95);
  color: var(--navy);
  font-size: 17px; font-weight: 600; line-height: 1;
  cursor: pointer;
}
.airport-map__controls button:hover { background: #fff; border-color: var(--navy); }

.airport-map__tip {
  position: absolute;
  transform: translate(-50%, -160%);
  padding: 6px 10px;
  border-radius: 6px;
  background: var(--navy);
  color: #fff;
  font-size: 12.5px;
  white-space: nowrap;
  pointer-events: none;
  max-width: 90%;
  overflow: hidden;
  text-overflow: ellipsis;
}
.airport-map__hint {
  position: absolute; inset: auto 0 14px;
  margin-inline: auto;
  width: max-content; max-width: 90%;
  padding: 8px 14px;
  border-radius: 999px;
  background: rgba(1, 0, 66, .88);
  color: #fff;
  font-size: 13px;
}
.airport-map__status { margin: 10px 0 0; font-size: .9rem; color: var(--muted); }

.airport-map__panel {
  position: absolute; left: 12px; bottom: 12px;
  width: min(330px, calc(100% - 24px));
  max-height: calc(100% - 24px);
  overflow-y: auto;
  padding: 18px 20px;
  border: 1px solid var(--line);
  border-radius: 10px;
  background: rgba(255, 252, 247, .98);
  box-shadow: 0 18px 40px rgba(20, 30, 82, .18);
}
.airport-map__panel h3 { font-size: 1.25rem; margin: 4px 0 12px; }
.airport-map__close {
  position: absolute; top: 8px; right: 10px;
  width: 28px; height: 28px;
  border: 0; border-radius: 6px;
  background: transparent;
  color: var(--muted);
  font-size: 20px; line-height: 1; cursor: pointer;
}
.airport-map__close:hover { background: var(--bg-2); color: var(--navy); }
.airport-map__records { list-style: none; margin: 0 0 14px; padding: 0; }
.airport-map__records li { padding: 8px 0; border-top: 1px solid var(--line); }
.airport-map__records li:first-child { border-top: 0; }
.airport-map__records a { color: var(--navy); font-weight: 600; text-decoration: underline; text-underline-offset: 3px; }
.airport-map__records span, .airport-map__records em {
  display: block; font-style: normal; font-size: .84rem; color: var(--muted);
}
.airport-map__provenance { margin: 12px 0 0; font-size: .76rem; color: var(--muted); }
.airport-map__loading { margin: 0; color: var(--muted); }
.airport-map.is-failed .airport-map__canvas, .airport-map.is-failed .airport-map__controls { display: none; }

@media (max-width: 640px) {
  /* Tall enough to work in, short enough not to be mostly ocean. */
  .airport-map { height: min(58vh, 360px); }
  .airport-map__panel { left: 8px; right: 8px; width: auto; bottom: 8px; padding: 14px 16px; }
}
@media (prefers-reduced-motion: reduce) {
  .airport-map__pins g { transition: none !important; }
}
.map-block { margin-top: 26px; }
.map-block__head h2 { font-size: 1.9rem; margin-bottom: 6px; }
.map-block__head .note { max-width: 70ch; }
.map-block__legend { display: flex; flex-wrap: wrap; gap: 8px 20px; align-items: center; margin: 12px 0 0; font-size: .86rem; color: var(--muted); }
.map-block__legend .key { width: 13px; height: 13px; border-radius: 50%; display: inline-block; vertical-align: -2px; margin-right: 4px; }
.key-live { background: var(--sky); border: 1.5px solid var(--navy); }
.key-member { background: var(--navy); border: 1.5px solid #c4a35a; }
.key-quiet { background: #fff; border: 1.5px dashed #7b8598; }
.key-cluster { background: var(--navy); border: 1.5px solid #fff; box-shadow: 0 0 0 1px var(--line); }

/* The homepage map sits in a two-column band: let its shape follow the world
   rather than the column, so it is not marooned in a field of empty ocean. */
.explore-grid .airport-map { height: auto; aspect-ratio: 16 / 10; margin-top: 0; }
@media (max-width: 980px) { .explore-grid .airport-map { aspect-ratio: 3 / 2; } }

/* Introductory offer: stated once, plainly, wherever a fee is shown. */
.offer {
  display: flex; flex-wrap: wrap; gap: 6px 18px; align-items: baseline;
  margin-bottom: 26px; padding: 18px 22px;
  border: 1px solid var(--navy); border-left-width: 4px; border-radius: 10px;
  background: #e4eff6;
}
.offer__flag {
  margin: 0; font-size: 12px; font-weight: 700; letter-spacing: .14em;
  text-transform: uppercase; color: var(--navy);
}
.offer__body { margin: 0; flex: 1 1 340px; color: var(--ink); }
.offer__inline { margin-top: 14px; padding: 14px 16px; border-radius: 8px; background: #e4eff6; }

.join-hero h1 { max-width: 18ch; }
.join-hero .lede { max-width: 62ch; margin: 18px 0 22px; }
.join-hero .btn-row { margin-bottom: 6px; }
.join-hero .offer { margin: 28px 0 0; }
.value-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 18px;
  margin-top: 8px;
}
.value-card {
  background: var(--paper-2);
  border: 1px solid var(--line);
  border-radius: 12px;
  padding: 28px 26px;
}
.value-card h3 { font-size: 1.7rem; margin: 8px 0 12px; }
.value-card p { margin: 0; color: #3d4654; }
.join-steps {
  margin: 18px 0 0;
  padding: 0;
  list-style: none;
}
.join-steps li {
  position: relative;
  padding: 0 0 18px 42px;
  color: #3d4654;
}
.join-steps li:last-child { padding-bottom: 0; }
.join-steps__n {
  position: absolute;
  left: 0; top: 0;
  width: 28px; height: 28px;
  border-radius: 50%;
  background: var(--navy);
  color: #fff;
  font-size: .85rem;
  font-weight: 700;
  display: grid; place-items: center;
}
.join-steps strong { color: var(--navy); }
.join-layout {
  display: grid;
  grid-template-columns: minmax(0, 1.35fr) minmax(260px, .8fr);
  gap: 36px;
  align-items: start;
}
.join-aside { position: sticky; top: calc(var(--header-h) + 20px); }
.join-aside .kicker { margin-bottom: 10px; }
.join-aside .join-steps { margin-top: 8px; }
.join-aside .btn-row { margin-top: 18px; }
.join-event-card .btn { margin-top: 18px; }
.join-layout .form {
  border: 1px solid var(--line);
  border-radius: 12px;
}
.price-grid + .note { margin-top: 18px; }

@media (max-width: 980px) {
  .value-grid,
  .join-layout {
    grid-template-columns: 1fr;
  }
  .join-aside { position: static; }
  .price.is-featured { transform: none; }
}
@media (max-width: 640px) {
  .header-cta .btn-gold { display: inline-flex; }
  .header-cta .btn-ghost { display: none; }
  .header-cta .header-account { display: inline-flex; }
  .benefits-table { display: block; overflow-x: auto; }
}

/* ============================================================================
   IARO — map surface and member treatment.

   Append to the end of styles.css. Everything here overrides the earlier
   .airport-map rules by source order alone, so nothing above needs editing.

   Gold is reserved. The site's own palette moved to navy and sky (--gold was
   redefined to #7eb6de further up this file), which left gold unused — so it
   is claimed here for one meaning only: an IARO member. Nothing else on the
   map or in the panel may use it, which is what makes ten pins out of 270
   findable at a glance.
   ========================================================================= */

:root {
  --member: #b0893e;
  --member-light: #e8d3a2;
  --member-ink: #6d5320;
}

/* ---- Surface ---- */
.airport-map {
  border-color: rgba(1, 0, 66, .14);
  border-radius: 16px;
  background: #dfe9f2;
  box-shadow:
    0 1px 2px rgba(20, 30, 82, .05),
    0 18px 44px -24px rgba(20, 30, 82, .35);
}
/* A hairline of light along the top edge: the cheapest way to make a flat
   panel read as a surface rather than a hole in the page. */
.airport-map::after {
  content: "";
  position: absolute;
  inset: 0;
  border-radius: inherit;
  pointer-events: none;
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, .55), inset 0 0 0 1px rgba(1, 0, 66, .05);
}

.airport-map__grid path { stroke: rgba(1, 0, 66, .07); stroke-width: .6; fill: none; }

/* Wide, faint pass under the coastline — a soft shadow in the water. */
.airport-map__coast path {
  fill: none;
  stroke: rgba(1, 0, 66, .085);
  stroke-width: 3.5;
  stroke-linejoin: round;
}
.airport-map__land path {
  fill: #fdfbf6;
  stroke: rgba(1, 0, 66, .30);
  stroke-width: .7;
  stroke-linejoin: round;
}

/* ---- Ordinary airports ---- */
.airport-map__pin {
  fill: var(--sky);
  stroke: var(--navy);
  stroke-width: 1.4;
  paint-order: stroke;
}
.airport-map__pin.is-quiet { fill: #fff; stroke: #7b8598; stroke-dasharray: 2.2 1.8; }

.airport-map__cluster {
  fill: rgba(1, 0, 66, .88);
  stroke: #fff;
  stroke-width: 1.8;
  paint-order: stroke;
}
.airport-map__count {
  fill: #fff;
  font-family: var(--font);
  font-size: 10px;
  font-weight: 700;
  letter-spacing: .01em;
  pointer-events: none;
}

/* ---- Members ----
   Bigger, gold, ringed in white and lifted by a faint halo, in a group that is
   painted after everything else. A member is never drawn under another mark. */
/* A ring, not a filled wash. A member pin is painted over everything else, so
   anything solid around it blots out the cluster it happens to land on; an
   open ring lifts the pin off the map while hiding almost nothing. */
.airport-map__halo {
  fill: none;
  stroke: rgba(176, 137, 62, .40);
  stroke-width: 1.4;
  vector-effect: non-scaling-stroke;
  pointer-events: none;
}
.airport-map__emblem { fill: #2a1f08; pointer-events: none; }
.airport-map__member,
.airport-map__member-cluster {
  stroke: #fff;
  stroke-width: 2.2;
  paint-order: stroke;
}
.airport-map__count.is-member { fill: #2a1f08; }

/* The name, set with a paper-coloured halo so it stays legible over land,
   sea or another pin without needing a box behind it. */
.airport-map__label {
  fill: var(--navy);
  stroke: rgba(253, 251, 246, .92);
  stroke-width: 3.4;
  paint-order: stroke;
  vector-effect: non-scaling-stroke;
  font-family: var(--font);
  font-size: 11px;
  font-weight: 700;
  letter-spacing: .01em;
  pointer-events: none;
}

/* ---- States ---- */
.airport-map__pins g { cursor: pointer; }
.airport-map__pins g:hover .airport-map__pin,
.airport-map__pins g:focus-visible .airport-map__pin { fill: #fff; stroke-width: 2.4; }
.airport-map__pins g:hover .airport-map__cluster,
.airport-map__pins g:focus-visible .airport-map__cluster { fill: #2672a3; }
.airport-map__pins g.is-selected .airport-map__pin { fill: #fff; stroke-width: 3; }

.airport-map__pins--member g:hover .airport-map__halo,
.airport-map__pins--member g:focus-visible .airport-map__halo,
.airport-map__pins--member g.is-selected .airport-map__halo {
  stroke: rgba(176, 137, 62, .85);
  stroke-width: 2;
}
.airport-map__pins--member g:hover .airport-map__member,
.airport-map__pins--member g:focus-visible .airport-map__member,
.airport-map__pins--member g.is-selected .airport-map__member { stroke-width: 3.2; }

.airport-map__pins g:focus { outline: none; }
.airport-map__pins g:focus-visible circle { outline: 3px solid #2672a3; outline-offset: 3px; }

.airport-map.is-animated .airport-map__halo,
.airport-map.is-animated .airport-map__member,
.airport-map.is-animated .airport-map__pin,
.airport-map.is-animated .airport-map__cluster {
  transition: fill .18s ease, stroke .18s ease, stroke-width .18s ease;
}
/* The map arrives once, quietly. Pins are rebuilt on every zoom step, so the
   entrance belongs on the canvas, not on the marks. */
.airport-map .airport-map__canvas { opacity: 0; }
.airport-map.is-ready .airport-map__canvas { opacity: 1; transition: opacity .45s var(--ease); }

/* ---- Controls and chrome ---- */
.airport-map__controls { top: 14px; right: 14px; gap: 7px; }
.airport-map__controls button {
  width: 36px; height: 36px;
  border-color: rgba(1, 0, 66, .12);
  border-radius: 10px;
  background: rgba(255, 255, 255, .92);
  backdrop-filter: blur(8px);
  box-shadow: 0 2px 6px rgba(20, 30, 82, .10);
  transition: background .18s ease, border-color .18s ease, transform .18s var(--ease);
}
.airport-map__controls button:hover { background: #fff; border-color: var(--navy); transform: translateY(-1px); }

.airport-map__tip {
  padding: 7px 11px;
  border-radius: 8px;
  background: rgba(1, 0, 66, .95);
  box-shadow: 0 6px 18px rgba(20, 30, 82, .28);
  font-weight: 500;
}
.airport-map__tip.is-member {
  background: linear-gradient(180deg, #e8d3a2, #c4a265);
  color: #2a1f08;
}

.airport-map__hint { box-shadow: 0 8px 22px rgba(20, 30, 82, .25); }

/* ---- Panel ---- */
.airport-map__panel {
  border-radius: 14px;
  border-color: rgba(1, 0, 66, .10);
  background: rgba(255, 253, 249, .97);
  backdrop-filter: blur(10px);
  box-shadow:
    0 2px 6px rgba(20, 30, 82, .08),
    0 24px 50px -18px rgba(20, 30, 82, .38);
}
/* A gold edge on the panel for a member airport, matching the pin that opened it. */
.airport-map__panel.is-member { border-top: 3px solid var(--member); }

.airport-map__records li.is-member { border-left: 2px solid var(--member); padding-left: 10px; }
.airport-map__badge {
  display: inline-block;
  margin-left: 8px;
  padding: 1px 7px;
  border-radius: 999px;
  background: rgba(176, 137, 62, .14);
  color: var(--member-ink);
  font-size: .72rem;
  font-weight: 700;
  letter-spacing: .02em;
  vertical-align: 1px;
}

/* ---- Legend ----
   The member key carries the same aircraft as the pin it explains, so the
   legend shows the mark rather than describing it. */
.map-block__legend { gap: 10px 22px; }
.map-block__legend .key { width: 13px; height: 13px; }
.key-member {
  width: 17px; height: 17px;
  border: 0;
  background: url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2064%2064%27%3E%3Cdefs%3E%3CradialGradient%20id%3D%27g%27%20cx%3D%2734%25%27%20cy%3D%2730%25%27%20r%3D%2778%25%27%3E%3Cstop%20offset%3D%270%27%20stop-color%3D%27%23e8d3a2%27%2F%3E%3Cstop%20offset%3D%271%27%20stop-color%3D%27%23b0893e%27%2F%3E%3C%2FradialGradient%3E%3C%2Fdefs%3E%3Ccircle%20cx%3D%2732%27%20cy%3D%2732%27%20r%3D%2731%27%20fill%3D%27url%28%23g%29%27%2F%3E%3Cpath%20d%3D%27M32%207.5c2.05%200%203.35%202.4%203.35%206.05v5.1l17.15%2010.05v5.35L35.35%2028.5v9.15l6.1%204.3v4.4L32%2043.5l-9.45%202.85v-4.4l6.1-4.3V28.5L11.5%2034.05V28.7l17.15-10.05v-5.1C28.65%209.9%2029.95%207.5%2032%207.5Z%27%20fill%3D%27%23fff%27%20transform%3D%27translate%2832%2032%29%20scale%28.74%29%20translate%28-32%20-26.9%29%27%2F%3E%3C%2Fsvg%3E") center / contain no-repeat;
  box-shadow: 0 0 0 2px rgba(176, 137, 62, .22);
  vertical-align: -4px;
}

@media (prefers-reduced-motion: reduce) {
  .airport-map .airport-map__canvas,
  .airport-map.is-ready .airport-map__canvas { opacity: 1; transition: none; }
}

/* ============================================================================
   Record list — the results under the map.

   The markup already carries .record-card.is-member, so all of this is done
   by stylesheet: no template changes, and nothing to conflict with.

   The seal below is the same gold disc and aircraft as the map pin, so
   "member" looks identical on the map, in the map panel and in this list
   rather than being three unrelated decorations.
   ========================================================================= */

.results-heading { margin: 34px 0 18px; align-items: end; }
.results-heading h2 { font-size: 1.75rem; letter-spacing: -.01em; }
.results-heading .note { max-width: 46ch; text-align: right; }

/* Rows separated by hairlines read as a table of data. Cards on paper, with
   air between them, read as a collection worth browsing. */
.record-list { border-top: 0; display: grid; gap: 12px; }
.record-card {
  position: relative;
  padding: 22px 24px;
  border: 1px solid rgba(1, 0, 66, .10);
  border-bottom: 1px solid rgba(1, 0, 66, .10);
  border-radius: 14px;
  background: var(--paper-2);
  box-shadow: 0 1px 2px rgba(20, 30, 82, .04);
  transition: border-color .2s ease, box-shadow .2s ease, transform .2s var(--ease);
}
.record-card:hover {
  border-color: rgba(1, 0, 66, .22);
  box-shadow: 0 2px 4px rgba(20, 30, 82, .06), 0 16px 32px -20px rgba(20, 30, 82, .40);
  transform: translateY(-1px);
}
.record-card h3 { font-size: 1.45rem; margin: 6px 0 2px; letter-spacing: -.01em; }
.record-card .record-title { font-weight: 600; color: var(--navy); }
.record-card .muted { color: var(--muted); }

/* Member records: a warm ground, a gold edge, and the seal in its own gutter
   so it never crowds the status tag on the other side of the card. */
.record-card.is-member {
  padding-left: 74px;
  border-color: rgba(176, 137, 62, .38);
  background:
    linear-gradient(90deg, rgba(176, 137, 62, .07), rgba(176, 137, 62, 0) 220px),
    var(--paper-2);
  box-shadow: inset 3px 0 0 var(--member), 0 1px 2px rgba(20, 30, 82, .04);
}
.record-card.is-member:hover {
  border-color: rgba(176, 137, 62, .60);
  box-shadow:
    inset 3px 0 0 var(--member),
    0 2px 4px rgba(20, 30, 82, .06),
    0 16px 32px -20px rgba(120, 90, 30, .45);
}
.record-card.is-member::before {
  content: "";
  position: absolute;
  left: 22px;
  top: 24px;
  width: 36px;
  height: 36px;
  border-radius: 50%;
  background: url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2064%2064%27%3E%3Cdefs%3E%3CradialGradient%20id%3D%27g%27%20cx%3D%2734%25%27%20cy%3D%2730%25%27%20r%3D%2778%25%27%3E%3Cstop%20offset%3D%270%27%20stop-color%3D%27%23e8d3a2%27%2F%3E%3Cstop%20offset%3D%271%27%20stop-color%3D%27%23b0893e%27%2F%3E%3C%2FradialGradient%3E%3C%2Fdefs%3E%3Ccircle%20cx%3D%2732%27%20cy%3D%2732%27%20r%3D%2731%27%20fill%3D%27url%28%23g%29%27%2F%3E%3Cpath%20d%3D%27M32%207.5c2.05%200%203.35%202.4%203.35%206.05v5.1l17.15%2010.05v5.35L35.35%2028.5v9.15l6.1%204.3v4.4L32%2043.5l-9.45%202.85v-4.4l6.1-4.3V28.5L11.5%2034.05V28.7l17.15-10.05v-5.1C28.65%209.9%2029.95%207.5%2032%207.5Z%27%20fill%3D%27%23fff%27%20transform%3D%27translate%2832%2032%29%20scale%28.74%29%20translate%28-32%20-26.9%29%27%2F%3E%3C%2Fsvg%3E") center / contain no-repeat;
  box-shadow: 0 0 0 3px rgba(176, 137, 62, .16), 0 2px 5px rgba(120, 90, 30, .28);
}

.status-tag {
  padding: 5px 12px;
  border-radius: 999px;
  font-size: .8rem;
  font-weight: 600;
  letter-spacing: .01em;
  background: #e6eef6;
  border: 1px solid rgba(1, 0, 66, .08);
}
.status-tag.is-member {
  color: var(--member-ink);
  background: rgba(176, 137, 62, .13);
  border-color: rgba(176, 137, 62, .34);
}

@media (max-width: 640px) {
  .record-card { padding: 18px 18px; }
  .record-card.is-member { padding-left: 18px; padding-top: 66px; }
  .record-card.is-member::before { top: 18px; left: 18px; }
  .results-heading .note { text-align: left; }
}
@media (prefers-reduced-motion: reduce) {
  .record-card, .record-card:hover { transform: none; transition: none; }
}

/* IARO Express archive */
.express-callout{margin:0 0 20px}
.express-year{margin:28px 0 8px}
.express-year__label{font-size:1.05rem;letter-spacing:.02em;color:var(--navy,#010042);border-bottom:1px solid rgba(1,0,66,.15);padding-bottom:6px;margin:0 0 12px}
.express-list{list-style:none;margin:0;padding:0;display:grid;gap:14px}
.express-item{padding:0 0 12px;border-bottom:1px solid rgba(1,0,66,.06)}
.express-item__title{font-weight:600;text-decoration:none}
.express-item__date{display:inline-block;margin-left:10px;font-size:.82rem;color:#5a5a72}
.express-item__lines{margin:4px 0 0;color:#3a3a52;font-size:.92rem}

/* ── Conference programme (events/<slug>/programme) ───────────────────────
   The programme is a timetable, so it is set as one: times in tabular figures
   against a hairline track, each item a stop hanging off it. The marker colour
   encodes the kind of item — session, site visit, social, break — rather than
   decorating it. Tokens are the site's own; nothing new is introduced. */
.prog-hero h1 { display: flex; flex-direction: column; gap: 2px; }
.prog-sub { font-style: italic; font-weight: 400; color: var(--gold); font-size: .62em; }
.prog-when { display: flex; flex-wrap: wrap; gap: 6px 14px; align-items: baseline; margin: 14px 0 0; font-size: 1.05rem; }
.prog-dot { color: var(--line-dark); }
.prog-note {
  margin: 22px 0 0; padding: 14px 18px; border-left: 3px solid var(--gold);
  background: rgba(255,255,255,.5); font-size: .95rem; color: var(--muted);
  max-width: 62ch; display: flex; gap: 16px; align-items: center; justify-content: space-between;
}
.prog-eu { width: 84px; height: auto; flex: none; }
.prog-actions { display: flex; flex-wrap: wrap; gap: 14px 22px; align-items: center; margin: 24px 0 0; }

.prog-controls { display: flex; flex-wrap: wrap; gap: 16px; justify-content: space-between; align-items: flex-end; }
.prog-tabs { display: flex; border-bottom: 1px solid var(--line); }
.prog-tab {
  appearance: none; background: none; border: 0; cursor: pointer; font: inherit;
  font-size: .95rem; font-weight: 600; color: var(--muted);
  padding: 10px 18px 12px; border-bottom: 2px solid transparent; margin-bottom: -1px;
  transition: color .18s var(--ease), border-color .18s var(--ease);
}
.prog-tab .d { display: block; font-size: .7rem; letter-spacing: .1em; text-transform: uppercase; opacity: .75; }
.prog-tab:hover { color: var(--ink); }
.prog-tab[aria-selected="true"] { color: var(--navy); border-bottom-color: var(--gold); }
.prog-view { display: flex; gap: 4px; padding: 3px; background: rgba(255,255,255,.6); border: 1px solid var(--line); border-radius: 999px; }
.prog-vbtn {
  appearance: none; border: 0; background: none; cursor: pointer; font: inherit;
  font-size: .84rem; font-weight: 600; color: var(--muted); padding: 6px 15px; border-radius: 999px;
  transition: background .18s var(--ease), color .18s var(--ease);
}
.prog-vbtn[aria-pressed="true"] { background: var(--navy); color: var(--paper); }

.prog-venue { margin: 26px 0 0; font-size: .95rem; color: var(--muted); }
.prog-venue b { color: var(--ink); }
.prog-dayintro { margin: 8px 0 0; color: var(--muted); max-width: 66ch; font-size: .97rem; }

.prog-table { list-style: none; padding: 0; margin: 14px 0 0; position: relative; }
.prog-table::before { content: ""; position: absolute; left: 81px; top: 14px; bottom: 14px; width: 1px; background: var(--line-dark); }
.prog-stop { display: grid; grid-template-columns: 66px 30px 1fr; align-items: start; padding: 16px 0; }
.prog-stop + .prog-stop { border-top: 1px solid var(--line); }
.prog-time { font-variant-numeric: tabular-nums; font-size: .98rem; font-weight: 700; color: var(--navy); text-align: right; padding-top: 2px; }
.prog-time.tbc { font-weight: 600; font-size: .84rem; color: var(--muted); }
.prog-mark { position: relative; height: 22px; }
.prog-mark::after {
  content: ""; position: absolute; left: 8px; top: 6px; width: 11px; height: 11px;
  border-radius: 50%; background: var(--navy); box-shadow: 0 0 0 4px var(--paper);
}
.prog-stop[data-type="visit"]  .prog-mark::after { background: var(--gold); }
.prog-stop[data-type="social"] .prog-mark::after { background: var(--sky); }
.prog-stop[data-type="break"]  .prog-mark::after { background: var(--paper); border: 2px solid var(--line-dark); width: 9px; height: 9px; top: 7px; left: 9px; }
.prog-body h3 { font-family: var(--font-serif); font-weight: 600; font-size: 1.22rem; line-height: 1.25; margin: 0; color: var(--ink); }
.prog-body > p { margin: 7px 0 0; color: var(--muted); font-size: .97rem; max-width: 66ch; }
.prog-where { display: inline-block; margin: 8px 0 0; font-size: .78rem; font-weight: 600; letter-spacing: .06em; text-transform: uppercase; color: var(--muted); }

.prog-talks { list-style: none; margin: 14px 0 0; padding: 0; display: flex; flex-direction: column; gap: 13px; }
.prog-talk { padding-left: 15px; border-left: 2px solid var(--line); }
.prog-talk h4 { margin: 0; font-family: var(--font); font-size: 1rem; font-weight: 600; line-height: 1.35; color: var(--ink); }
.prog-talk.is-panel h4 { font-style: italic; font-weight: 500; color: var(--muted); }
.prog-who { margin: 3px 0 0; font-size: .92rem; color: var(--muted); }
.prog-who b { color: var(--ink); font-weight: 600; }
.prog-talk ul { margin: 7px 0 0; padding-left: 17px; font-size: .92rem; color: var(--muted); }
.prog-talk ul li { margin: 3px 0; }

.prog-speakers { display: grid; grid-template-columns: repeat(auto-fill, minmax(268px, 1fr)); gap: 1px; background: var(--line); border: 1px solid var(--line); margin: 24px 0 0; }
.prog-sp { background: var(--paper); padding: 18px 20px; display: flex; flex-direction: column; gap: 4px; }
.prog-sp-name { font-family: var(--font-serif); font-size: 1.12rem; font-weight: 600; color: var(--ink); line-height: 1.2; }
.prog-sp-role { font-size: .88rem; color: var(--muted); line-height: 1.4; }
.prog-sp-org { font-size: .76rem; letter-spacing: .07em; text-transform: uppercase; font-weight: 600; color: var(--gold); }
.prog-sp-talks { margin: 8px 0 0; padding: 0; list-style: none; display: flex; flex-direction: column; gap: 6px; font-size: .86rem; color: var(--muted); line-height: 1.35; }
.prog-sp-day { font-weight: 700; color: var(--navy); }

.prog-info { display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: 18px; margin: 44px 0 0; }
.prog-card { padding: 24px; background: rgba(255,255,255,.6); border: 1px solid var(--line); border-radius: var(--radius); display: flex; flex-direction: column; align-items: flex-start; gap: 10px; }
.prog-card h2 { font-family: var(--font-serif); font-weight: 600; font-size: 1.3rem; margin: 0; color: var(--navy); }
.prog-card p { margin: 0; color: var(--muted); font-size: .95rem; }
.prog-foot { margin: 30px 0 0; font-size: .9rem; color: var(--muted); }

@media (max-width: 640px) {
  .prog-table::before { left: 47px; }
  .prog-stop { grid-template-columns: 38px 22px 1fr; padding: 14px 0; }
  .prog-time { font-size: .88rem; text-align: left; }
  .prog-mark::after { left: 4px; }
  .prog-stop[data-type="break"] .prog-mark::after { left: 5px; }
  .prog-note { flex-direction: column; align-items: flex-start; }
}

/* Insights, before any curated news exists: show the newest Express issues
   rather than an "archive being imported" notice that stopped being true. */
.express-latest { grid-column: 1 / -1; padding: 30px 28px; background: rgba(255,255,255,.6); border: 1px solid var(--line); border-radius: var(--radius); }
.express-latest-head h2 { font-family: var(--font-serif); font-weight: 600; font-size: 1.5rem; margin: 0; color: var(--navy); }
.express-latest-head p { margin: 8px 0 0; color: var(--muted); font-size: .96rem; max-width: 62ch; }
.express-latest-list { list-style: none; margin: 22px 0; padding: 0; display: flex; flex-direction: column; }
.express-latest-list li { display: flex; flex-wrap: wrap; gap: 4px 16px; justify-content: space-between; align-items: baseline; padding: 11px 0; border-top: 1px solid var(--line); }
.express-latest-list a { color: var(--ink); text-decoration: none; font-weight: 600; font-size: 1rem; border-bottom: 1px solid transparent; }
.express-latest-list a:hover { color: var(--navy); border-bottom-color: var(--gold); }
.express-latest-date { font-variant-numeric: tabular-nums; font-size: .85rem; color: var(--muted); white-space: nowrap; }

/* Programme: who is hosting, and room for the two calls to action. */
.prog-hosts { display: flex; flex-wrap: wrap; gap: 26px; align-items: flex-end; margin: 26px 0 0; }
.prog-host { display: flex; flex-direction: column; gap: 7px; }
.prog-host-role { font-size: .7rem; letter-spacing: .13em; text-transform: uppercase; font-weight: 600; color: var(--muted); }
.prog-host img { height: 42px; width: auto; max-width: 220px; object-fit: contain; object-position: left center; }
.detail-actions { margin: 22px 0 0; }

/* Membership prompt. Shown to anyone who is not a member, on the Express pages
   where the gap between what they can see and what members read is the point. */
.upsell {
  grid-column: 1 / -1; margin: 40px 0 0; padding: 32px;
  display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 26px 40px; align-items: center;
  background: var(--navy); border-radius: var(--radius); color: var(--paper);
}
.upsell-eyebrow { margin: 0 0 6px; font-size: .72rem; letter-spacing: .16em; text-transform: uppercase; font-weight: 600; color: var(--gold); }
.upsell h2 { font-family: var(--font-serif); font-weight: 500; font-size: 1.7rem; line-height: 1.15; margin: 0; color: var(--paper); }
.upsell p { margin: 10px 0 0; color: var(--paper); opacity: .8; font-size: .97rem; max-width: 60ch; }
.upsell-list { list-style: none; margin: 18px 0 0; padding: 0; display: flex; flex-direction: column; gap: 7px; font-size: .95rem; color: var(--paper); opacity: .9; }
.upsell-list b { color: var(--gold); font-variant-numeric: tabular-nums; font-weight: 700; }
.upsell-actions { display: flex; flex-direction: column; gap: 12px; align-items: flex-start; }
.upsell-actions .text-link { color: var(--paper); opacity: .75; white-space: nowrap; }
.upsell-actions .text-link:hover { color: var(--gold); opacity: 1; }
@media (max-width: 720px) { .upsell { grid-template-columns: 1fr; padding: 26px 22px; } }

/* ── IARO Express issue ───────────────────────────────────────────────────
   An issue is five or six separate stories, not one article. Rendered as a
   flat run of paragraphs they were indistinguishable, so the headline, the
   body and the source credit are now three different things on the page. */
.express-issue { max-width: 74ch; }
.express-issue-date { margin: 12px 0 0; color: var(--muted); font-size: 1rem; }

.express-contents { padding: 22px 26px; background: rgba(255,255,255,.6); border: 1px solid var(--line); border-radius: var(--radius); }
.express-contents h2 { font-family: var(--font); font-size: .72rem; letter-spacing: .16em; text-transform: uppercase; font-weight: 600; color: var(--muted); margin: 0 0 12px; }
.express-contents ol { margin: 0; padding-left: 1.3em; display: flex; flex-direction: column; gap: 7px; }
.express-contents li::marker { color: var(--gold); font-variant-numeric: tabular-nums; font-weight: 700; }
.express-contents a { color: var(--ink); text-decoration: none; border-bottom: 1px solid transparent; font-size: 1.02rem; }
.express-contents a:hover { color: var(--navy); border-bottom-color: var(--gold); }

.express-stories { margin: 34px 0 0; }
.express-story + .express-story { margin-top: 38px; padding-top: 30px; border-top: 1px solid var(--line); }
.express-story h2 {
  font-family: var(--font-serif); font-weight: 600; font-size: 1.62rem; line-height: 1.2;
  margin: 0 0 14px; color: var(--navy); letter-spacing: -.01em; scroll-margin-top: 100px;
}
.express-story p { margin: 0 0 14px; line-height: 1.68; }
.express-story p:last-child { margin-bottom: 0; }
.express-source { margin-top: 16px !important; font-size: .87rem; color: var(--muted); }
.express-source span {
  display: inline-block; font-size: .68rem; letter-spacing: .13em; text-transform: uppercase;
  font-weight: 700; color: var(--gold); margin-right: 8px;
}

.express-pager { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; margin: 46px 0 0; padding-top: 26px; border-top: 1px solid var(--line); }
.express-pager__link { display: flex; flex-direction: column; gap: 5px; padding: 16px 18px; border: 1px solid var(--line); border-radius: var(--radius); text-decoration: none; background: rgba(255,255,255,.5); }
.express-pager__link:hover { border-color: var(--gold); }
.express-pager__link--next { text-align: right; }
.express-pager__dir { font-size: .72rem; letter-spacing: .12em; text-transform: uppercase; font-weight: 600; color: var(--gold); }
.express-pager__title { color: var(--ink); font-weight: 600; font-size: .97rem; line-height: 1.3; }
@media (max-width: 640px) { .express-pager { grid-template-columns: 1fr; } .express-pager__link--next { text-align: left; } }

/* Relaunch: stable member identities, clear verification and optional onboarding. */
.marquee { overflow: visible; mask-image: none; }
.marquee-track { width: auto; animation: none; transform: none; justify-content: center; }
.marquee-set { flex-wrap: wrap; justify-content: center; }
.marquee-set[aria-hidden="true"] { display: none; }
.form-extra { margin: 20px 0; padding: 20px; border: 1px solid var(--line, #d5d4cf); border-radius: 8px; }
.form-extra summary { cursor: pointer; font-weight: 600; }
.form-extra[open] summary { margin-bottom: 16px; }
.verification-note { max-width: 70ch; padding: 14px 18px; margin-top: 20px; border-left: 3px solid #9c752a; background: #f4eedf; color: #302e28; }
.network-topics { margin-top: 24px; }
.ops-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 260px), 1fr)); gap: 20px; }
.ops-number { font-size: 2rem; font-weight: 650; margin: 8px 0; }
.ops-table { width: 100%; border-collapse: collapse; }
.ops-table th, .ops-table td { padding: 12px; border-bottom: 1px solid #d5d4cf; text-align: left; }
.ops-table-wrap { overflow-x: auto; }

.hero-media { overflow: hidden; }
.explore-search input[name="website_check"] { inset: 0 auto auto 0; }

.hero-offer { max-width: 58ch; margin: 24px 0; color: #fff; font-size: 1rem; line-height: 1.55; }
.hero-offer a { color: #fff; text-decoration: underline; text-underline-offset: .2em; }

/* A temporary service condition outranks everything else on a record: someone
   reading it may be about to travel. Distinct from the verification note, which
   is about how much to trust the record rather than what is running today. */
.service-notice {
  margin: 14px 0 0; padding: 13px 16px; border-radius: var(--radius);
  background: rgba(176, 137, 62, .12); border-left: 3px solid var(--gold);
  font-size: .96rem; color: var(--ink); max-width: 66ch;
}
.service-notice strong { color: var(--navy); }
.member-notes__age {
  margin: 0 0 10px; font-size: .85rem; color: var(--muted); font-style: italic;
}
.directory-cta { margin: 20px 0 0; }

/* The joining offer, in the one place it is now stated. */
.offer-panel {
  margin: 26px 0 0; padding: 22px 24px; border-radius: var(--radius);
  background: rgba(255,255,255,.62); border: 1px solid var(--line); border-left: 3px solid var(--gold);
  max-width: 68ch;
}
.offer-panel__flag {
  margin: 0 0 8px; font-size: .72rem; letter-spacing: .14em; text-transform: uppercase;
  font-weight: 700; color: var(--gold);
}
.offer-panel__body { margin: 0; font-size: 1rem; line-height: 1.6; color: var(--ink); }
.offer-panel__event { margin: 14px 0 0; padding-top: 14px; border-top: 1px solid var(--line); font-size: .96rem; color: var(--muted); }
.offer-panel__event strong { color: var(--ink); display: block; margin-bottom: 3px; }
.offer-panel__terms { margin: 14px 0 0; padding: 14px 0 0 18px; border-top: 1px solid var(--line); font-size: .88rem; color: var(--muted); }
.offer-panel__terms li { margin: 5px 0; }
