/* ==========================================================================
   Insight Bay: Flight Theory (/aviation)
   Deliverable 13. Page scoped stylesheet.

   PRINCIPLE
   This file introduces no new colours. Every value derives from the
   existing --ib-* token set defined in /assets/css/styles.css, which
   already carries a complete light and dark theme. Dark mode therefore
   works automatically, whatever mechanism the site uses to switch it,
   because nothing here hard codes a hue.

   Two page scoped tokens are derived, both from existing values:
     --av-hud      thin instrument rule colour
     --av-cloud    cloud gradient ink

   Animated properties are transform and opacity only.
   ========================================================================== */

/* --------------------------------------------------------------------------
   0. Derived tokens and fallbacks
   -------------------------------------------------------------------------- */

.ib-aviation {
  --av-hud: color-mix(in srgb, var(--ib-ink) 18%, transparent);
  --av-cloud: color-mix(in srgb, var(--ib-ink) 5%, transparent);
  --av-cloud-soft: color-mix(in srgb, var(--ib-ink) 3%, transparent);
  --av-wash-a: color-mix(in srgb, var(--ib-accent) 7%, var(--ib-bg));
  --av-wash-b: color-mix(in srgb, var(--ib-gold) 5%, var(--ib-bg));
  --av-r: var(--ib-radius, 14px);
  --av-r-lg: var(--ib-radius-lg, 22px);
  --av-ease: var(--ibe-out, cubic-bezier(.22, .61, .21, 1));
  --av-dur: var(--ib-dur-3, .55s);
}

/* Engines without color-mix get equivalent pre computed values.
   These match the light theme; the dark theme override follows. */
@supports not (color: color-mix(in srgb, red 50%, blue)) {
  .ib-aviation {
    --av-hud: rgba(32, 32, 30, .18);
    --av-cloud: rgba(32, 32, 30, .05);
    --av-cloud-soft: rgba(32, 32, 30, .03);
    --av-wash-a: #F6EDE5;
    --av-wash-b: #F7F1E4;
  }
  @media (prefers-color-scheme: dark) {
    .ib-aviation {
      --av-hud: rgba(242, 239, 232, .18);
      --av-cloud: rgba(242, 239, 232, .05);
      --av-cloud-soft: rgba(242, 239, 232, .03);
      --av-wash-a: #24201C;
      --av-wash-b: #222019;
    }
  }
}


/* --------------------------------------------------------------------------
   0b. Accessible accent for small label text

   The site's --ib-accent (#C96442) measures 3.47:1 against --ib-bg in the
   light theme, which is below the WCAG AA threshold of 4.5:1 for text at
   this size and weight. --ib-accent-ink is the same hue family, is already
   part of the design system (it is the site's link colour), and measures
   4.57:1 in light and 6.61:1 in dark. Small uppercase labels on this page
   therefore use --ib-accent-ink. Visually the difference is barely
   perceptible; in an audit it is the difference between a pass and a fail.

   Recommendation for the wider site: make the same substitution in
   styles.css for .ib-eyebrow and .grade.
   -------------------------------------------------------------------------- */

.ib-aviation .ib-eyebrow { color: var(--ib-accent-ink); }

/* --------------------------------------------------------------------------
   1. Utilities shared with the page
   -------------------------------------------------------------------------- */

.av-skip {
  position: absolute;
  left: -9999px;
  top: 0;
  z-index: 999;
  padding: .75rem 1.1rem;
  background: var(--ib-ink);
  color: var(--ib-bg);
  border-radius: 0 0 var(--av-r) 0;
  font-weight: 600;
}
.av-skip:focus { left: 0; }

.av-measure { max-width: 820px; }

.av-h2 {
  margin-top: .75rem;
  font-size: clamp(1.7rem, 3.2vw, 2.5rem);
  line-height: 1.16;
  letter-spacing: -.02em;
}

.av-link {
  color: var(--ib-accent-ink);
  text-decoration: none;
  border-bottom: 1px solid color-mix(in srgb, var(--ib-accent-ink) 35%, transparent);
  transition: color var(--ib-dur-1, .16s) ease, border-color var(--ib-dur-1, .16s) ease;
}
.av-link:hover { color: var(--ib-accent-ink-hover); border-bottom-color: var(--ib-accent-ink-hover); }

.av-btn-line {
  background: transparent;
  color: var(--ib-ink);
  border: 1px solid var(--ib-line-strong);
}
.av-btn-line:hover {
  border-color: var(--ib-ink);
  background: color-mix(in srgb, var(--ib-ink) 5%, transparent);
}

.av-inline-cta { margin-top: 2rem; }

.av-emph { font-weight: 600; }

.av-section-alt { background: var(--ib-bg-soft); }

/* Section separator, drawn outward from the centre. The HUD motif. */
.av-rule {
  display: block;
  height: 1px;
  max-width: 1180px;
  margin: 0 auto;
  background: var(--av-hud);
  transform: scaleX(0);
  transform-origin: center;
  transition: transform .6s var(--av-ease);
}
.av-rule.is-in { transform: scaleX(1); }

/* --------------------------------------------------------------------------
   2. Reveal system
   Matches the feel of the site's existing .ib-reveal deliberately.
   -------------------------------------------------------------------------- */

.av-reveal {
  opacity: 0;
  transform: translateY(16px);
}
.av-reveal.is-in {
  opacity: 1;
  transform: none;
  transition:
    opacity var(--av-dur) var(--av-ease),
    transform var(--av-dur) var(--av-ease);
  transition-delay: calc(var(--i, 0) * 60ms);
}
/* Mathematics never slides. */
.ib-math.av-reveal,
.av-reveal .ib-math { transform: none; }

.av-rise { opacity: 0; transform: translateY(12px); }
.is-ready .av-rise {
  opacity: 1;
  transform: none;
  transition:
    opacity var(--av-dur) var(--av-ease),
    transform var(--av-dur) var(--av-ease);
  transition-delay: calc(var(--i, 0) * 70ms);
}
/* If script never runs, show everything. */
html:not(.js) .av-rise,
html:not(.js) .av-reveal { opacity: 1; transform: none; }

/* --------------------------------------------------------------------------
   3. Hero
   -------------------------------------------------------------------------- */

.av-hero {
  position: relative;
  isolation: isolate;
  overflow: hidden;
  padding-block: clamp(4rem, 11vh, 8rem) clamp(3rem, 8vh, 5.5rem);
  border-bottom: 1px solid var(--ib-line);
}

.av-hero-sky {
  position: absolute;
  inset: 0;
  z-index: -1;
  color: var(--ib-accent);
  opacity: 0;
  transition: opacity 1.2s var(--av-ease);
  background:
    linear-gradient(
      to bottom,
      var(--ib-bg-deep) 0%,
      var(--av-wash-a) 58%,
      var(--av-wash-b) 84%,
      var(--ib-bg) 100%
    );
}
.is-ready .av-hero-sky { opacity: 1; }

.av-clouds {
  position: absolute;
  left: 0;
  right: 0;
  pointer-events: none;
  background-repeat: no-repeat;
}
.av-clouds-a {
  top: 34%;
  height: 40%;
  width: 200%;
  background-image:
    radial-gradient(60% 100% at 18% 50%, var(--av-cloud) 0%, transparent 70%),
    radial-gradient(45% 90% at 52% 42%, var(--av-cloud) 0%, transparent 72%),
    radial-gradient(70% 100% at 84% 58%, var(--av-cloud-soft) 0%, transparent 74%);
  animation: av-drift-a 180s linear infinite alternate;
}
.av-clouds-b {
  top: 58%;
  height: 46%;
  width: 240%;
  background-image:
    radial-gradient(55% 100% at 26% 46%, var(--av-cloud-soft) 0%, transparent 72%),
    radial-gradient(65% 100% at 66% 62%, var(--av-cloud-soft) 0%, transparent 76%);
  animation: av-drift-b 260s linear infinite alternate;
}

@keyframes av-drift-a {
  from { transform: translate3d(-25%, var(--av-py, 0px), 0); }
  to   { transform: translate3d(0%,   var(--av-py, 0px), 0); }
}
@keyframes av-drift-b {
  from { transform: translate3d(0%,   var(--av-py2, 0px), 0); }
  to   { transform: translate3d(-20%, var(--av-py2, 0px), 0); }
}

.av-contrail {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  color: var(--ib-accent);
}
.av-contrail path {
  stroke-dasharray: 1600;
  stroke-dashoffset: 1600;
}
.av-contrail.is-drawn path {
  stroke-dashoffset: 0;
  transition: stroke-dashoffset 2.4s var(--av-ease);
}

/* HUD corner ticks */
.av-tick {
  position: absolute;
  width: 18px;
  height: 18px;
  border: 0 solid var(--av-hud);
}
.av-tick-tl { top: 22px; left: 22px;  border-top-width: 1px; border-left-width: 1px; }
.av-tick-tr { top: 22px; right: 22px; border-top-width: 1px; border-right-width: 1px; }
.av-tick-bl { bottom: 22px; left: 22px;  border-bottom-width: 1px; border-left-width: 1px; }
.av-tick-br { bottom: 22px; right: 22px; border-bottom-width: 1px; border-right-width: 1px; }

.av-hero-inner { position: relative; }

.av-hero h1 {
  margin-top: .75rem;
  font-size: clamp(2.5rem, 5.2vw, 4.1rem);
  line-height: 1.06;
  letter-spacing: -.032em;
  max-width: 16ch;
}

.av-lede {
  margin-top: 1.4rem;
  max-width: 640px;
  font-size: 1.1rem;
  line-height: 1.62;
  color: var(--ib-ink-soft);
}

.av-cta-row {
  display: flex;
  flex-wrap: wrap;
  gap: .75rem;
  margin-top: 2rem;
}

.av-disclosure {
  display: flex;
  align-items: center;
  gap: 1rem;
  margin-top: 2.75rem;
  font-family: var(--ib-font-mono, ui-monospace, monospace);
  font-size: .82rem;
  letter-spacing: .04em;
  color: var(--ib-ink-muted);
}
.av-disclosure-rule {
  flex: 0 0 56px;
  height: 1px;
  background: var(--av-hud);
}

/* --------------------------------------------------------------------------
   4. Cards and grids
   -------------------------------------------------------------------------- */

.av-grid-3 {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 1rem;
  margin-top: 2.25rem;
}
.av-grid-2 {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 1rem;
  margin-top: 2.25rem;
}

.av-card {
  background: var(--ib-card-bg);
  border: 1px solid var(--ib-line);
  border-radius: var(--av-r);
  padding: 1.6rem 1.7rem;
}
.av-card h3 { margin: 0 0 .6rem; font-size: 1.05rem; letter-spacing: -.01em; }
.av-card p  { margin: 0; color: var(--ib-ink-soft); font-size: .97rem; line-height: 1.62; }
.av-card-mark { border-left: 2px solid var(--ib-accent); }

.av-pillar {
  background: var(--ib-card-bg);
  border: 1px solid var(--ib-line);
  border-radius: var(--av-r);
  padding: 1.7rem 1.8rem;
}
.av-pillar-n {
  display: inline-block;
  font-family: var(--ib-font-mono, monospace);
  font-size: .8rem;
  letter-spacing: .18em;
  text-transform: uppercase;
  color: var(--ib-accent-ink);
  font-weight: 700;
}
.av-pillar h3 { margin: .5rem 0 .55rem; font-size: 1.12rem; letter-spacing: -.012em; }
.av-pillar p  { margin: 0; color: var(--ib-ink-soft); line-height: 1.66; }

/* --------------------------------------------------------------------------
   5. Age cards, reusing the /space page pattern
   -------------------------------------------------------------------------- */

.av-age {
  border: 1px solid var(--ib-line);
  border-radius: var(--av-r);
  background: var(--ib-card-bg);
  padding: 1.7rem 1.8rem;
  margin-top: 1rem;
}
.av-age h3 { margin: .35rem 0 0; font-size: 1.22rem; letter-spacing: -.015em; }
.av-age p  { margin: .8rem 0 0; color: var(--ib-ink-soft); line-height: 1.68; }
.av-grade {
  font-size: .78rem;
  letter-spacing: .14em;
  text-transform: uppercase;
  font-weight: 800;
  color: var(--ib-accent-ink);
}

/* Mathematics blocks. Matches the /space page treatment. */
.ib-aviation .ib-math {
  margin: 1.1rem 0;
  padding: 1rem 1.1rem;
  background: var(--ib-bg-soft);
  border-left: 2px solid var(--ib-accent-soft);
  border-radius: 0 8px 8px 0;
  overflow-x: auto;
  font-family: var(--ib-font-mono, monospace);
  font-size: .95rem;
  line-height: 1.9;
  color: var(--ib-ink);
}
.ib-aviation .ib-math code { font-family: inherit; }

.ib-aviation .ib-note {
  font-size: .88rem;
  color: var(--ib-ink-muted);
  margin-top: 1.4rem;
  line-height: 1.6;
}

.av-slab { margin-top: 2.5rem; }

/* --------------------------------------------------------------------------
   6. Modules
   -------------------------------------------------------------------------- */

.av-modules { margin-top: 2.25rem; border-top: 1px solid var(--ib-line); }

.av-module,
.av-q {
  border-bottom: 1px solid var(--ib-line);
}

.av-module > summary,
.av-q > summary {
  display: flex;
  align-items: flex-start;
  gap: 1.1rem;
  padding: 1.35rem .4rem;
  cursor: pointer;
  list-style: none;
  transition: transform var(--ib-dur-1, .16s) ease, background-color var(--ib-dur-1, .16s) ease;
}
.av-module > summary::-webkit-details-marker,
.av-q > summary::-webkit-details-marker { display: none; }

.av-module > summary:hover,
.av-q > summary:hover { transform: translateX(2px); }

.av-module > summary:focus-visible,
.av-q > summary:focus-visible {
  outline: 2px solid var(--ib-accent);
  outline-offset: 2px;
  border-radius: 6px;
}

.av-num {
  flex: 0 0 auto;
  font-family: var(--ib-font-mono, monospace);
  font-size: .82rem;
  color: var(--ib-accent-ink);
  font-weight: 500;
  padding-top: .28rem;
  letter-spacing: .04em;
}

.av-mod-title { flex: 1 1 auto; }
.av-mod-title h3 {
  margin: 0;
  font-size: 1.16rem;
  letter-spacing: -.014em;
  font-weight: 600;
}
.av-mod-sub {
  display: block;
  margin-top: .28rem;
  color: var(--ib-ink-muted);
  font-size: .94rem;
}

.av-q > summary h3 {
  flex: 1 1 auto;
  margin: 0;
  font-size: 1.05rem;
  font-weight: 600;
  letter-spacing: -.012em;
}

.av-chev {
  flex: 0 0 auto;
  position: relative;
  width: 14px;
  height: 14px;
  margin-top: .35rem;
}
.av-chev::before,
.av-chev::after {
  content: "";
  position: absolute;
  background: var(--ib-ink-muted);
  transition: transform var(--ib-dur-2, .3s) var(--av-ease), opacity var(--ib-dur-2, .3s) ease;
}
.av-chev::before { top: 6px; left: 0; width: 14px; height: 1.5px; }
.av-chev::after  { top: 0; left: 6px; width: 1.5px; height: 14px; }
details[open] > summary .av-chev::after { transform: scaleY(0); opacity: 0; }

.av-module-body {
  padding: 0 .4rem 1.6rem 0;
  max-width: 68ch;
}
.av-module > .av-module-body { padding-left: calc(1.1rem + 2.2ch); }
.av-module-body p {
  margin: 0 0 .9rem;
  color: var(--ib-ink-soft);
  line-height: 1.7;
}
.av-module-body p:last-child { margin-bottom: 0; }

.av-can,
.av-maps {
  border-left: 2px solid var(--ib-line-strong);
  padding-left: .95rem;
  font-size: .93rem;
}
.av-can span,
.av-maps span {
  display: block;
  font-family: var(--ib-font-mono, monospace);
  font-size: .72rem;
  letter-spacing: .16em;
  text-transform: uppercase;
  color: var(--ib-accent-ink);
  margin-bottom: .3rem;
}
.av-can { border-left-color: var(--ib-accent-soft); }

.av-omit {
  margin-top: 2.5rem;
  border: 1px solid var(--ib-line);
  border-radius: var(--av-r);
  padding: 1.6rem 1.8rem;
  background: var(--ib-bg-soft);
  max-width: 820px;
}
.av-omit h3 {
  margin: 0 0 .9rem;
  font-size: .78rem;
  letter-spacing: .16em;
  text-transform: uppercase;
  color: var(--ib-ink-muted);
  font-family: var(--ib-font-mono, monospace);
  font-weight: 500;
}
.av-omit ul { margin: 0; padding: 0; list-style: none; }
.av-omit li {
  padding: .5rem 0;
  border-top: 1px solid var(--ib-line);
  color: var(--ib-ink-soft);
  line-height: 1.6;
  font-size: .96rem;
}
.av-omit li:first-child { border-top: 0; padding-top: 0; }
.av-omit strong { color: var(--ib-ink); font-weight: 600; }

/* --------------------------------------------------------------------------
   7. Sources list
   -------------------------------------------------------------------------- */

.av-sources {
  margin: 2rem 0 0;
  padding: 0;
  list-style: none;
  max-width: 820px;
  border-top: 1px solid var(--ib-line);
}
.av-sources li {
  display: flex;
  gap: 1.2rem;
  align-items: baseline;
  padding: .7rem 0;
  border-bottom: 1px solid var(--ib-line);
  color: var(--ib-ink-soft);
  font-size: .97rem;
}
.av-src-code {
  flex: 0 0 9.5rem;
  font-family: var(--ib-font-mono, monospace);
  font-size: .8rem;
  color: var(--ib-accent-ink);
  letter-spacing: .03em;
}

/* --------------------------------------------------------------------------
   8. Adult section
   -------------------------------------------------------------------------- */

.av-adult-section { padding-block: 3.5rem; }
.av-adult {
  border: 1px solid var(--ib-line);
  border-radius: var(--av-r);
  padding: 1.8rem 2rem;
  background: var(--ib-bg-soft);
}
.av-adult-eyebrow {
  display: block;
  font-family: var(--ib-font-mono, monospace);
  font-size: .72rem;
  letter-spacing: .16em;
  text-transform: uppercase;
  color: var(--ib-ink-muted);
}
.av-adult h3 { margin: .6rem 0 .8rem; font-size: 1.18rem; letter-spacing: -.014em; }
.av-adult p  { margin: 0 0 .8rem; color: var(--ib-ink-soft); line-height: 1.66; font-size: .97rem; }
.av-adult .av-inline-cta { margin-top: 1.1rem; }

/* --------------------------------------------------------------------------
   9. Final CTA
   -------------------------------------------------------------------------- */

.av-final { border-top: 1px solid var(--ib-line); }
.av-final p { color: var(--ib-ink-soft); line-height: 1.7; margin-top: 1rem; }

/* --------------------------------------------------------------------------
   10. FAQ
   -------------------------------------------------------------------------- */

.av-faq { margin-top: 2.25rem; border-top: 1px solid var(--ib-line); }
.av-q > .av-module-body { padding-left: 0; padding-right: 2rem; }

/* --------------------------------------------------------------------------
   11. Attitude indicator scroll progress
   -------------------------------------------------------------------------- */

.av-attitude {
  position: fixed;
  right: 24px;
  bottom: 24px;
  width: 44px;
  height: 44px;
  z-index: 40;
  pointer-events: none;
  opacity: 0;
  transition: opacity .4s var(--av-ease);
}
.av-attitude.is-visible { opacity: .9; }
.av-attitude svg { width: 100%; height: 100%; overflow: visible; }

.av-att-track {
  fill: var(--ib-card-bg);
  stroke: var(--ib-line-strong);
  stroke-width: 1;
}
.av-att-arc {
  fill: none;
  stroke: var(--ib-accent);
  stroke-width: 1.5;
  stroke-linecap: round;
  transform: rotate(-90deg);
  transform-origin: 24px 24px;
  stroke-dasharray: 125.66;
  stroke-dashoffset: 125.66;
}
.av-att-ground { fill: color-mix(in srgb, var(--ib-gold) 34%, transparent); }
.av-att-horizon { stroke: var(--ib-ink-soft); stroke-width: 1; }
.av-att-pitch   { stroke: var(--ib-ink-muted); stroke-width: .8; }
.av-att-ref {
  fill: none;
  stroke: var(--ib-accent);
  stroke-width: 1.4;
  stroke-linecap: round;
  stroke-linejoin: round;
}
.av-att-rotor { transform-origin: 24px 24px; }

@media (max-width: 1023px) { .av-attitude { display: none; } }

/* --------------------------------------------------------------------------
   12. Footer (page scoped; replace with the site partial on integration)
   -------------------------------------------------------------------------- */

.av-footer {
  background: var(--ib-footer-bg);
  color: var(--ib-footer-text);
  padding-block: 4rem 2rem;
  margin-top: 0;
}
.av-footer-top {
  display: grid;
  grid-template-columns: 2fr 1fr 1fr 1fr;
  gap: 2.5rem;
}
.av-footer-logo {
  display: inline-flex;
  align-items: center;
  gap: .55rem;
  color: var(--ib-footer-text);
  text-decoration: none;
  font-weight: 700;
  letter-spacing: -.015em;
  font-size: 1.05rem;
}
.av-footer-brand p {
  margin: 1rem 0 0;
  color: var(--ib-footer-text-soft);
  font-size: .93rem;
  line-height: 1.66;
  max-width: 42ch;
}
.av-footer-col h2 {
  font-size: .72rem;
  letter-spacing: .18em;
  text-transform: uppercase;
  color: var(--ib-footer-text-faint);
  margin: 0 0 .9rem;
  font-weight: 600;
}
.av-footer-col ul { margin: 0; padding: 0; list-style: none; }
.av-footer-col li { margin-bottom: .5rem; }
.av-footer-col a,
.av-footer-brand a {
  color: var(--ib-footer-text-soft);
  text-decoration: none;
  font-size: .93rem;
  border-bottom: 1px solid transparent;
}
.av-footer-col a:hover,
.av-footer-brand a:hover { color: var(--ib-footer-text); border-bottom-color: var(--ib-footer-line); }
.av-footer-col a[aria-current="page"] { color: var(--ib-footer-text); }

.av-footer-bottom {
  margin-top: 3rem;
  padding-top: 1.5rem;
  border-top: 1px solid var(--ib-footer-line);
  display: flex;
  flex-wrap: wrap;
  gap: .75rem 2rem;
  align-items: center;
  justify-content: space-between;
}
.av-footer-bottom p { margin: 0; color: var(--ib-footer-text-soft); font-size: .86rem; }
.av-footer-legal { display: flex; gap: 1.2rem; }
.av-footer-legal a { color: var(--ib-footer-text-soft); text-decoration: none; font-size: .86rem; }
.av-footer-legal a:hover { color: var(--ib-footer-text); }

/* --------------------------------------------------------------------------
   13. Responsive
   -------------------------------------------------------------------------- */

@media (max-width: 1024px) {
  .av-footer-top { grid-template-columns: 1fr 1fr 1fr; }
  .av-footer-brand { grid-column: 1 / -1; }
}

@media (max-width: 860px) {
  .av-grid-3,
  .av-grid-2 { grid-template-columns: 1fr; }
  .av-sources li { flex-direction: column; gap: .15rem; }
  .av-src-code { flex: none; }
}

@media (max-width: 768px) {
  .av-hero { padding-block: 2.75rem 2.25rem; }
  .av-hero h1 { font-size: clamp(2.1rem, 9vw, 2.7rem); max-width: none; }
  .av-lede { font-size: 1rem; }
  .av-cta-row { flex-direction: column; align-items: stretch; }
  .av-cta-row .ib-btn { justify-content: center; }
  .av-contrail { display: none; }
  .av-clouds-b { display: none; }
  .av-tick { display: none; }
  .av-disclosure { margin-top: 2rem; font-size: .78rem; }
  .av-disclosure-rule { display: none; }
  .ib-aviation .ib-section { padding-block: 3.25rem; }
  .av-module > .av-module-body { padding-left: 0; }
  .av-module > summary,
  .av-q > summary { padding: 1.15rem .2rem; gap: .8rem; }
  .av-omit,
  .av-adult,
  .av-card,
  .av-pillar,
  .av-age { padding: 1.3rem 1.35rem; }
  .av-footer-top { grid-template-columns: 1fr 1fr; }
  .av-footer-bottom { flex-direction: column; align-items: flex-start; }
}

@media (max-width: 480px) {
  .av-footer-top { grid-template-columns: 1fr; }
}

/* --------------------------------------------------------------------------
   14. Print
   -------------------------------------------------------------------------- */

@media print {
  .ib-nav, .av-attitude, .av-hero-sky, .av-skip, .av-cta-row, .av-inline-cta { display: none !important; }
  .av-reveal, .av-rise { opacity: 1 !important; transform: none !important; }
  .av-module-body, .av-q .av-module-body { display: block !important; }
  .av-rule { transform: none !important; }
}

/* --------------------------------------------------------------------------
   15. Reduced motion
   -------------------------------------------------------------------------- */

@media (prefers-reduced-motion: reduce) {
  .ib-aviation *,
  .ib-aviation *::before,
  .ib-aviation *::after {
    animation-duration: .01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: .01ms !important;
    scroll-behavior: auto !important;
  }
  .av-clouds-a,
  .av-clouds-b { animation: none; transform: none; }
  .av-contrail path { stroke-dashoffset: 0; }
  .av-attitude { display: none; }
  .av-reveal,
  .av-rise { opacity: 1; transform: none; }
  .av-rule { transform: scaleX(1); }
  .av-hero-sky { opacity: 1; }
}

/* --------------------------------------------------------------------------
   16. Forced colours and high contrast
   -------------------------------------------------------------------------- */

@media (forced-colors: active) {
  .av-hero-sky, .av-clouds, .av-contrail, .av-tick, .av-attitude { display: none; }
  .av-card, .av-pillar, .av-age, .av-omit, .av-adult { border: 1px solid CanvasText; }
  .av-rule { background: CanvasText; transform: none; }
}
