/*
 * The helicopter calculator page.
 *
 * THIS IS THE DESIGN HANDOFF OF 16 AUGUST 2026, REVISED 17 AUGUST, turned into classes.
 *
 * The revision changed no copy and no page order. It replaced three loose systems with three
 * constrained ones, and that is the whole point of it:
 *
 *   ONE TYPE LADDER, WITH HARD FLOORS. Six steps, nothing between them. The floors matter more
 *   than the ceilings: section headings now hold 28px on a phone where they used to fall to
 *   20px and sit almost on top of the body text under them.
 *
 *   ONE 8px SPACING RAMP. 8 / 16 / 24 / 32 / 48 / 64 / 96. Nothing off-scale. The old set had a
 *   40px step and a 160px band inset that belonged to no ramp.
 *
 *   ONE 12-COLUMN GRID. 12 columns of 64px with 32px gutters makes the 1120px container, and
 *   only four layout patterns are allowed: 12, 8+4, 6+6, 4+4+4. Text measure now comes from
 *   those spans rather than from character counts — there is not one `ch` value left on the
 *   page, and there should not be. A `ch` measure and a column measure disagree at every
 *   viewport, so a page using both is really using neither.
 *
 * The system is the flight calculator's, which the handoff reuses deliberately: "the two pages
 * are the same page with different words". Scoped `.cl-hc` so neither can disturb the other.
 *
 * LIME IS RESERVED for actions and one emphasis line per dark band: the card's top rule, the
 * calculate button, "Register your interest", "Offer this calculator to your clients", the
 * closing call to action, and the hero's lime paragraph. Nothing else. A sixth lime thing
 * weakens the other five.
 *
 * THERE IS EXACTLY ONE MEDIA QUERY, and it moves the page gutter from 24px to 32px at 800px.
 * Everything else reflows through auto-fit grids that collapse when content stops fitting,
 * clamp() on the type and padding that shrink, and flex-wrap with token gaps. Adding a second
 * breakpoint starts a system competing with this one.
 *
 * WHY THIS IS A FILE AND NOT A <style> TAG. WordPress runs page content through wpautop, which
 * turns a blank line into a paragraph break inside a <style> tag as readily as in prose. It
 * injects a literal "</p><p>", the CSS parser stops, and the rule after it dies silently.
 */

.cl-hc {
  /* Type ladder: title 34 / h2 28 / h3 24 / body 20 / small 16 / label 14. Hard floors. */
  --t-title: clamp(34px, 6vw, 48px); --t-h2: clamp(28px, 4vw, 32px);
  --fs-h3: 24px; --fs-3: 20px; --fs-4: 16px; --fs-5: 14px;
  --w-r: 400; --w-m: 600; --w-b: 700;
  /* One 8px ramp. Nothing off-scale. */
  --s-1: 8px; --s-2: 16px; --s-3: 24px; --s-4: 32px; --s-5: 48px; --s-6: 64px; --s-7: 96px;
  --gutter: var(--s-3);
  --radius: 2px; --radius-lg: 4px; --pill: 999px;
  --stroke-1: 1px; --stroke-2: 1.5px; --stroke-3: 2px; --stroke-4: 3px; --stroke-5: 6px;
  --size-32: 32px; --size-40: 40px; --size-96: 96px;
  --control: 48px;
  /* 12 columns of 64px + 32px gutters = 1120px. Spans: 8 = 736 | 6 = 544 | 4 = 352.
     --col-6 and --col-4 are the auto-fit floors that produce 6+6 and 4+4+4. */
  --page: 1120px; --span-8: 736px; --span-6: 544px; --span-4: 352px;
  --col-6: 336px; --col-4: 320px; --flex-8: 640px;
  --tile: var(--span-4);
  --ink: #3E4454; --paper: #F4F8F9; --teal: #005A69; --lime: #CEF17B;

  font-family: "Epilogue", system-ui, sans-serif;
  font-size: var(--fs-3);
  line-height: 1.6;
  color: var(--ink);
  text-wrap: pretty;
}

@media (min-width: 800px) { .cl-hc { --gutter: var(--s-4); } }

.cl-hc *, .cl-hc *::before, .cl-hc *::after { box-sizing: border-box; }
.cl-hc a { color: var(--teal); text-decoration: underline; text-decoration-thickness: var(--stroke-1); text-underline-offset: var(--stroke-4); }
.cl-hc a:hover { color: var(--ink); text-decoration-color: var(--lime); text-decoration-thickness: var(--stroke-4); }
.cl-hc input, .cl-hc select, .cl-hc button { font: inherit; }
.cl-hc p { margin: 0; }

/* Full-width bands break out of the theme's content column.
 *
 * `--sbw` IS THE VERTICAL SCROLLBAR'S WIDTH, and the page sets it. Without it the bands are
 * exactly one scrollbar too wide and the whole page scrolls sideways: `100vw` counts the
 * scrollbar, the content box does not. Measured as 8px of sideways scroll at a 320px window.
 *
 * Two fixes were rejected before this one. `overflow-x: clip` on the wrapper clips the bands at
 * the theme's content column, which is narrower than the viewport — it removes the sideways
 * scroll by destroying the full-width effect the bands exist for. `overflow: hidden` does the
 * same and additionally makes the element a scroll container, breaking anchor links.
 *
 * It falls back to 0px, which is exactly right on a phone: no persistent scrollbar, nothing to
 * subtract.
 */
.cl-hc .band-full {
  margin-left: calc(50% - 50vw + var(--sbw, 0px) / 2);
  margin-right: calc(50% - 50vw + var(--sbw, 0px) / 2);
  width: calc(100vw - var(--sbw, 0px));
}
.cl-hc .page { max-width: var(--page); margin: 0 auto; }
.cl-hc .pad { padding-left: var(--gutter); padding-right: var(--gutter); }

/* ---- Type. Measure comes from the grid spans, never from `ch`. ------------ */
.cl-hc h1 { margin: 0 0 var(--s-3); font-size: var(--t-title); line-height: 1.08; font-weight: var(--w-b); letter-spacing: -.02em; max-width: var(--span-6); }
.cl-hc h2 { margin: 0 0 var(--s-2); font-size: var(--t-h2); line-height: 1.15; font-weight: var(--w-b); letter-spacing: -.01em; max-width: var(--span-6); }
.cl-hc h3 { margin: 0 0 var(--s-1); font-size: var(--fs-h3); line-height: 1.25; font-weight: var(--w-b); }
.cl-hc .eyebrow { margin: 0 0 var(--s-2); font-size: var(--fs-5); font-weight: var(--w-b); letter-spacing: .14em; text-transform: uppercase; }
.cl-hc .lede { max-width: var(--span-6); font-size: var(--fs-3); line-height: 1.45; }
.cl-hc .body { max-width: var(--span-8); font-size: var(--fs-4); line-height: 1.6; }
/* 16px, never 14px. 14px is the floor and belongs to uppercase eyebrows, badges and dense card
   labels alone. Anything carrying an explanation stays at 16px. */
.cl-hc .note { max-width: var(--span-4); font-size: var(--fs-4); line-height: 1.5; color: rgba(62, 68, 84, .75); }
.cl-hc .note-wide { max-width: var(--span-8); }
.cl-hc .stack { display: flex; flex-direction: column; gap: var(--s-2); }
/* Text already inside a 6-column column carries no measure of its own. */
.cl-hc .grid .body, .cl-hc .grid .note, .cl-hc .stack .body, .cl-hc .stack .note { max-width: none; }

/* ---- Grid. Four sanctioned patterns: 12, 8+4, 6+6, 4+4+4. ---------------- */
.cl-hc .grid { display: grid; gap: var(--s-4); align-items: start; }
.cl-hc .g-6 { grid-template-columns: repeat(auto-fit, minmax(min(var(--col-6), 100%), 1fr)); }
.cl-hc .g-4 { grid-template-columns: repeat(auto-fit, minmax(min(var(--col-4), 100%), 1fr)); }
.cl-hc .gap-3 { gap: var(--s-3); }

/* ---- Section rhythm: 96px bottom, 64px top after a rule ------------------ */
/* ---- The only two rules in this file that reach outside .cl-hc ------------- */
/* Everything else here is scoped so it cannot touch the theme. These two must reach the theme's
   own wrapper, because the empty white band above the hero is made there, not here. Both are
   guarded by :has(> .cl-hc), so they can only ever apply on a page that contains this
   calculator. No other page on the site can be affected by them.

   1. The theme puts a 180px top margin on .entry-content. That is right for an ordinary page
      with a title above the text. This page opens with a full-width teal band that is meant to
      sit directly under the header, so the margin showed as 127px of empty white.
      It is replaced by the header's height, NOT by zero. The header is position:fixed and nothing
      else in the theme reserves room for it, so that 180px was doing the job by accident. At zero
      the teal band slides underneath the header and loses its first 73px. The height is measured
      in the page's script and published as --cl-hdr, because it is 73px on a desktop and 68px on
      a phone. The 73px fallback only applies if the script has not run yet.
   2. wpautop leaves empty <p> elements around our content — one before the wrapper, two after.
      They are 0px tall but still carry the theme's paragraph margins, adding 20px more.

   The first selector deliberately repeats the theme's own three classes. The theme sets the
   margin with `.content-area .site-main .entry-content`, which outranks a shorter selector, so
   a two-class override is simply ignored. This matches its shape and adds one more class, which
   wins on the rules rather than by shouting !important at it. */
.content-area .site-main .entry-content:has(> .cl-hc) { margin-top: var(--cl-hdr, 73px); }
.entry-content:has(> .cl-hc) > p:empty { display: none; }

.cl-hc section { padding-bottom: var(--s-7); }
.cl-hc section.ruled { border-top: var(--stroke-1) solid rgba(62, 68, 84, .18); padding-top: var(--s-6); }

/* A section normally gets its top space from the 96px bottom padding of the section above it,
   or from its own 64px if it carries a rule. The first section of a content block has neither:
   what sits above it is the calculator card, in a different container, and a card has no bottom
   margin. So "A result you can understand" was touching the card with nothing between them.
   64px matches every other content section. The confidence explainer still carries no rule,
   because the design wants it read as attached to the result rather than as a new topic — but
   attached is not the same as touching. A section that sets its own top padding keeps it. */
.cl-hc .page.pad > section:first-child { padding-top: var(--s-6); }
.cl-hc .section-lede { margin: 0 0 var(--s-3); max-width: var(--span-6); font-size: var(--fs-3); line-height: 1.45; color: var(--teal); }

/* The calculator card carries its own heading in the 17 August copy. It is a section heading in
   rank, so it takes the h2 step, but it sits inside a card rather than opening a section, so it
   does not take the section's 64px above it. */
.cl-hc .card-title { margin: var(--s-3) 0 var(--s-2); font-size: var(--t-h2); line-height: 1.15; font-weight: 700; color: var(--ink); max-width: var(--span-6); }

/* Daren's note. The lime rule on the left is the one emphasis this section is allowed. */
.cl-hc .quote { margin: 0; padding: 0 0 0 var(--s-3); border-left: var(--stroke-3) solid var(--lime); max-width: var(--span-8); }
.cl-hc .quote .body { margin: 0 0 var(--s-2); }
.cl-hc .quote .tile-note { margin: var(--s-3) 0 0; color: var(--teal); }

/* The theme's header is sticky and 68px tall. Without this, both jump links land
   the section flush with the viewport top and the header covers its heading.
   96px is the ramp's top step and the smallest one that clears 68px. */
.cl-hc #calculate, .cl-hc #fleet { scroll-margin-top: var(--s-7); }

/* ---- Hero. 96px top; 144–192px bottom, because the card pulls 96px up. ---- */
.cl-hc .hero { position: relative; overflow: hidden; background: var(--teal); color: var(--paper);
  padding: var(--s-7) var(--gutter) clamp(calc(var(--s-7) + var(--s-5)), 22vw, calc(var(--s-7) + var(--s-7))); }
.cl-hc .hero .eyebrow { color: rgba(244, 248, 249, .75); }
.cl-hc .hero .lede { color: rgba(244, 248, 249, .92); }
.cl-hc .hero-inner { position: relative; max-width: var(--page); margin: 0 auto; }
/* Pinned to the viewport edge rather than the section's, so it clamps instead of sliding out of
   frame on laptop widths. Decorative, 13% opacity, safe to delete. The hero title stops at the
   6-column span, which is what keeps it clear of this. */
.cl-hc .hero-outline { position: absolute; top: var(--s-2); right: max(var(--gutter), calc(50% - var(--page) / 2));
  width: clamp(140px, 22vw, 420px); height: auto; opacity: .13; color: var(--lime); pointer-events: none; }
/* 8 + 4 */
.cl-hc .hero-cols { display: flex; flex-wrap: wrap; gap: var(--s-4); align-items: flex-start; margin-top: var(--s-6); }
.cl-hc .hero-main { flex: 1 1 var(--flex-8); display: flex; flex-direction: column; gap: var(--s-2); }
.cl-hc .hero-emphasis { font-size: var(--fs-3); line-height: 1.4; font-weight: var(--w-m); color: var(--lime); }
.cl-hc .hero-note { font-size: var(--fs-4); line-height: 1.5; color: rgba(244, 248, 249, .75); }
.cl-hc .tile { flex: 0 1 var(--span-4); width: 100%; max-width: var(--span-4); display: flex; flex-direction: column;
  align-items: flex-start; gap: var(--s-1); padding: var(--s-2); background: rgba(244, 248, 249, .06); }
.cl-hc .tile-strong { font-size: var(--fs-4); font-weight: var(--w-m); line-height: 1.4; }
.cl-hc .tile-note { font-size: var(--fs-4); line-height: 1.5; color: rgba(244, 248, 249, .85); }
.cl-hc .pill { display: inline-block; padding: 2px var(--s-1); background: var(--lime); color: var(--ink);
  font-size: var(--fs-5); font-weight: var(--w-b); letter-spacing: .1em; text-transform: uppercase; }

/* ---- The calculator card. Interior 32px, up to 48px wide. ----------------- */
.cl-hc .card-lift { max-width: var(--page); margin: 0 auto;
  transform: translateY(clamp(-96px, -8vw, -48px)); margin-bottom: clamp(-96px, -8vw, -48px); }
.cl-hc .card { background: #fff; border: var(--stroke-1) solid rgba(62, 68, 84, .14);
  border-top: var(--stroke-5) solid var(--lime); border-radius: var(--radius-lg);
  box-shadow: 0 var(--s-3) var(--s-5) calc(var(--s-2) * -2) rgba(0, 90, 105, .35);
  padding: clamp(var(--s-4), 4vw, var(--s-5)); }
.cl-hc .rail { display: flex; flex-wrap: wrap; align-items: center; gap: var(--s-3); margin: 0 0 var(--s-3); }
.cl-hc .rail .step { display: inline-flex; align-items: center; gap: var(--s-1); font-size: var(--fs-4); font-weight: var(--w-b); }
.cl-hc .rail .n { display: flex; align-items: center; justify-content: center; width: var(--size-32); height: var(--size-32);
  border-radius: var(--pill); background: var(--teal); color: var(--paper); flex: 0 0 auto; }
.cl-hc .rail .step.next { font-weight: var(--w-m); color: rgba(62, 68, 84, .6); }
.cl-hc .rail .step.next .n { background: rgba(62, 68, 84, .12); color: rgba(62, 68, 84, .7); }
.cl-hc .rail .bar { flex: 1; min-width: var(--size-32); height: var(--stroke-1); background: rgba(62, 68, 84, .18); }
.cl-hc .card-lede { margin: 0 0 var(--s-5); max-width: var(--span-8); font-size: var(--fs-4); line-height: 1.5; color: rgba(62, 68, 84, .75); }

/* ---- Cards --------------------------------------------------------------- */
.cl-hc .tilecard { padding: var(--s-3); background: #fff; border: var(--stroke-1) solid rgba(62, 68, 84, .14); }
.cl-hc .tilecard .tag { margin: 0 0 var(--s-1); font-size: var(--fs-5); font-weight: var(--w-b); letter-spacing: .1em; text-transform: uppercase; color: var(--teal); }
.cl-hc .badge { display: inline-block; margin: 0 0 var(--s-2); padding: 2px var(--s-1); background: rgba(62, 68, 84, .1);
  font-size: var(--fs-5); font-weight: var(--w-b); letter-spacing: .06em; text-transform: uppercase; }
.cl-hc .badge.on { background: var(--lime); }
.cl-hc .aside { margin: 0 0 var(--s-3); padding-left: var(--s-2); border-left: var(--stroke-3) solid rgba(0, 90, 105, .35);
  font-size: var(--fs-5); line-height: 1.55; color: rgba(62, 68, 84, .8); }

/* Rule-separated lists. The theme styles list markers at 30px on this template, so the marker is
   removed and the size forced rather than fought with. */
.cl-hc ul.ruled-list, .cl-hc ol.numbered { margin: 0 !important; padding: 0 !important; list-style: none !important; }
.cl-hc ul.ruled-list { display: flex; flex-direction: column; gap: var(--s-1); font-size: var(--fs-4); }
.cl-hc ul.ruled-list li { padding-top: var(--s-1); border-top: var(--stroke-1) solid rgba(62, 68, 84, .12);
  font-size: var(--fs-4) !important; line-height: 1.5 !important; list-style: none !important; margin: 0 !important; }
.cl-hc ul.ruled-list li::before, .cl-hc ol.numbered li::before { content: none !important; }
.cl-hc ol.numbered { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(var(--col-4), 100%), 1fr)); gap: var(--s-3); }
.cl-hc ol.numbered li { padding: var(--s-2); background: #fff; border-top: var(--stroke-4) solid var(--teal);
  font-size: var(--fs-4) !important; line-height: 1.5 !important; list-style: none !important; margin: 0 !important; }
.cl-hc ol.numbered .n { display: block; margin-bottom: var(--s-1); font-size: var(--fs-5); font-weight: var(--w-b); letter-spacing: .1em; color: rgba(62, 68, 84, .55); }

/* ---- Buttons ------------------------------------------------------------- */
.cl-hc .btn { display: inline-flex; align-items: center; min-height: var(--control); padding: var(--s-1) var(--s-3);
  font-size: var(--fs-4); font-weight: var(--w-b); text-decoration: none; border-radius: var(--radius); }
.cl-hc .btn-lime { background: var(--lime); color: var(--ink); }
.cl-hc .btn-lime:hover { background: #fff; color: var(--ink); text-decoration: none; }
.cl-hc .btn-teal { background: var(--teal); color: var(--paper); }
.cl-hc .btn-teal:hover { background: var(--ink); color: var(--paper); text-decoration: none; }
.cl-hc .btn-lg { font-size: var(--fs-3); }

/* ---- Dark bands. 96px vertical. ------------------------------------------ */
.cl-hc .band { background: var(--teal); color: var(--paper); padding: var(--s-7) var(--gutter); }
.cl-hc .band h2, .cl-hc .band h3 { color: var(--paper); }
.cl-hc .band .accent { margin: 0 0 var(--s-5); max-width: var(--span-6); font-size: var(--fs-3); line-height: 1.45; color: var(--lime); }
.cl-hc .band .body { color: rgba(244, 248, 249, .92); }
.cl-hc .band .note { color: rgba(244, 248, 249, .8); }
.cl-hc .band a { color: var(--paper); }
.cl-hc .panel { padding: var(--s-3); background: rgba(244, 248, 249, .06); }
.cl-hc .panel ul { margin: 0 !important; padding: 0 !important; list-style: none !important;
  display: flex; flex-direction: column; gap: var(--s-1); font-size: var(--fs-4); line-height: 1.5; color: rgba(244, 248, 249, .92); }
.cl-hc .panel li { padding-top: var(--s-1); border-top: var(--stroke-1) solid rgba(244, 248, 249, .2);
  font-size: var(--fs-4) !important; line-height: 1.5 !important; list-style: none !important; margin: 0 !important; }
.cl-hc .panel li::before { content: none !important; }
.cl-hc .proof { width: 100%; max-width: var(--tile); display: flex; flex-direction: column; align-items: flex-start;
  gap: var(--s-1); margin-top: var(--s-1); padding: var(--s-2); background: rgba(244, 248, 249, .06);
  text-decoration: none; color: var(--paper); }
.cl-hc .proof:hover { text-decoration: none; background: rgba(244, 248, 249, .12); }
/* 96px, not the 40px the handoff drew. At 40 the mark was a smudge: the wordmark could not be
   read and the strapline under it was about one pixel tall. The tile is 352 wide with room to
   spare, so the mark gets a size it can actually be read at. The file is 288px, three times
   this, so it stays sharp on a high-density screen. */
.cl-hc .proof img { width: var(--size-96); height: var(--size-96); object-fit: contain; }
.cl-hc .closing-trust { display: flex; flex-wrap: wrap; gap: var(--s-3); margin-top: var(--s-5); font-size: var(--fs-4); color: rgba(244, 248, 249, .85); }
.cl-hc .closing-trust span { padding-top: var(--s-1); border-top: var(--stroke-3) solid rgba(206, 241, 123, .5); }

/* ---- Quote, operator card, questions ------------------------------------- */
.cl-hc blockquote { margin: 0; padding-left: clamp(var(--s-2), 3vw, var(--s-3)); border-left: var(--stroke-5) solid var(--lime); }
.cl-hc blockquote p { margin: 0 0 var(--s-2); max-width: var(--span-6); font-size: clamp(var(--fs-4), 2.4vw, var(--fs-3)); line-height: 1.45; }
.cl-hc blockquote cite { font-style: normal; font-size: var(--fs-4); font-weight: var(--w-b); }
.cl-hc .featurecard { padding: clamp(var(--s-4), 4vw, var(--s-5)); background: #fff;
  border: var(--stroke-1) solid rgba(62, 68, 84, .14); border-left: var(--stroke-5) solid var(--teal); }
.cl-hc .featurecard h3 { margin: 0 0 var(--s-3); max-width: var(--span-6); font-size: var(--t-h2); line-height: 1.2; }
.cl-hc details { border-top: var(--stroke-1) solid rgba(62, 68, 84, .2); }
.cl-hc details:last-of-type { border-bottom: var(--stroke-1) solid rgba(62, 68, 84, .2); }
.cl-hc summary { display: flex; gap: var(--s-3); align-items: center; justify-content: space-between;
  padding: var(--s-3) 0; min-height: var(--control); font-size: clamp(var(--fs-4), 2.2vw, var(--fs-3));
  font-weight: var(--w-m); cursor: pointer; list-style: none; }
.cl-hc summary::-webkit-details-marker { display: none; }
.cl-hc summary::after { content: "+"; font-size: var(--fs-3); color: var(--teal); flex: 0 0 auto; }
.cl-hc details[open] summary::after { content: "\2013"; }
.cl-hc details p { padding: 0 0 var(--s-3); max-width: var(--span-8); font-size: var(--fs-4); line-height: 1.6; color: rgba(62, 68, 84, .85); }
.cl-hc .method-head { margin: 0 0 var(--s-2); font-size: var(--fs-4); font-weight: var(--w-b); letter-spacing: .1em; text-transform: uppercase; color: var(--teal); }
