/* SHOTGUN: hide before/after UI. CSS only — the DOM stays intact because
   main-v114.js resizeStage() reads #range and throws if it is missing. */
.scene-before,
.divider,
.range,
.focus-label,
.mobile-phone-before,
.mobile-phone-divider,
.mobile-phone-focus-label,
#mobilePhoneRange{display:none!important}
.scene-after{clip-path:none!important;-webkit-clip-path:none!important}
.mobile-phone-after{clip-path:none!important;-webkit-clip-path:none!important;width:100%!important}


/* ── Foundations: 8 design directions ──────────────────────────────────────
   Monitor mockup = the tunnel's own asset, white cut to transparency and the
   aluminium stand remapped to charcoal (desktop-monitor-v2-cutout.png, native
   587x435). Screen box uses the measured safe black area from
   tunnel-styles-test.css: L16 T11 R573 B352 => 2.73% / 2.53% / 94.89% / 78.39%.
   Standalone component — none of the .notes full-bleed rules apply here. */
.fdn-grid{position:relative;z-index:5;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));
  gap:clamp(22px,2.3vw,40px) clamp(16px,1.8vw,30px);
  /* Dave 8/26: "fills the browser window up way too much; 15% smaller w/ more
     margin" — 1560->1326px cap and 92vw->78vw so there is real air either side. */
  width:min(1326px,78vw);
  /* Dave 8/26: the last row's description was sitting flush on the edge of the
     dark band — needs real air beneath it, not zero. */
  margin:clamp(34px,3.8vw,58px) auto 0;padding-bottom:clamp(38px,3.4vw,52px)}
.fdn-card{position:relative;z-index:5;display:flex;flex-direction:column}
.fdn-card__label{position:relative;z-index:6}
.fdn-card__monitor{position:relative;width:100%;aspect-ratio:587/435;
  transition:transform .38s cubic-bezier(.2,.7,.3,1)}
.fdn-card:hover .fdn-card__monitor{transform:translateY(-6px)}
.fdn-card__frame{position:absolute;inset:0;width:100%;height:100%;display:block;
  object-fit:contain;z-index:2;pointer-events:none;transition:opacity .38s ease}
/* charcoal by default; the aluminium warms back to its real silver on hover
   and while the card is the chosen one (Dave, 8/26) */
.fdn-card__frame--silver{opacity:0}
.fdn-card__monitor:hover .fdn-card__frame--silver,
.fdn-card.is-chosen .fdn-card__frame--silver{opacity:1}
.fdn-card__monitor:hover .fdn-card__frame--dark,
.fdn-card.is-chosen .fdn-card__frame--dark{opacity:0}
.fdn-card__screen{position:absolute;/* Dave 8/26: show real black bezel around the site — the measured safe area
     (2.73/2.53/94.89/78.39) filled the whole face edge to edge. Inset inside it,
     kept horizontally centred on the face (spans 2.73%..97.62%, centre 50.17%). */
  left:6.17%;top:5.6%;width:88%;height:70.6%;
  /* ABOVE the frame: the monitor face in the PNG is opaque black (only the page
     white was cut out), so a screen sitting behind it would never be visible. */
  z-index:3;border-radius:3px;overflow:hidden;background:#0d0f11}
.fdn-card__shot{width:100%;height:100%;object-fit:cover;object-position:top center;display:block}

/* hover: "View Site Style +".
   Dave 8/26: the hover/click target must cover the WHOLE screen on all eight —
   it used to live inside .fdn-card__screen, so parts of the mockup did nothing.
   It now overlays the monitor and is inset to the screen box itself. */
.fdn-card__view{position:absolute;
  /* [FIX] 2026-09-04, Dave: "the darkening that goes over the HTML is not
     covering the whole HTML on any of the eight - halos and little white
     strips. If you have to go a little bit overflow I don't care."
     Same defect the phones had, still on desktop because that fix was inside
     a max-width query. Measured screen box is left 5.754% top 6.897%
     width 89.531% height 69.917%; this is that box bled 0.8% past on every
     edge so it always overshoots. The bleed lands on the black bezel, which
     is why the overflow does not read. */
  left:4.954%;top:6.097%;width:91.131%;height:71.517%;
  border-radius:3px;z-index:4;display:flex;align-items:center;
  justify-content:center;gap:7px;cursor:pointer;border:0;line-height:1;
  background:rgba(10,12,14,.52);backdrop-filter:blur(2px);-webkit-backdrop-filter:blur(2px);
  color:#fff;font-family:"Plus Jakarta Sans",Arial,sans-serif;font-size:10.5px;
  letter-spacing:.15em;text-transform:uppercase;font-weight:500;
  opacity:0;transition:opacity .28s ease}
.fdn-card__monitor:hover .fdn-card__view,
.fdn-card__view:focus-visible{opacity:1}
/* Dave 8/26: no ring around the plus. */
.fdn-card__plus{display:inline-block;font-size:15px;line-height:1;font-weight:400;
  color:rgba(255,255,255,.9);
  /* Dave 8/26 (2nd pass): still sitting low — the flex row was centering it on
     the line box, so vertical-align did nothing. Align the row to baseline and
     lift the glyph 4px. */
  position:relative;top:-4px;vertical-align:baseline}

/* label row: name + small toggle in the gap to its right, description under */
.fdn-card__label{margin-top:clamp(10px,1vw,15px);
  /* Dave 8/26: name + descriptor were hanging left of the monitor — shift in
     10px so they sit under the screen, not the frame's outer edge. */
  padding:0 2px 0 10px;
  display:grid;grid-template-columns:1fr auto;align-items:center;gap:6px 12px}
.fdn-card__name{color:#f6f1e8;font-size:12px;letter-spacing:.15em;
  /* Dave 8/26: 600 read too heavy at this size — lighter weight, same scale. */
  text-transform:uppercase;font-weight:400}
.fdn-card__desc{grid-column:1 / -1;margin-top:3px;
  /* narrower so it wraps inside the monitor's width instead of running past it */
  max-width:calc(100% - 22px);
  /* Dave 8/26: "much smaller, slightly thinner" — 13.5px/400 -> 11.5px/300 */
  font-family:"Plus Jakarta Sans",Arial,sans-serif;font-size:11.5px;font-weight:300;
  line-height:1.5;letter-spacing:.005em;color:rgba(246,241,232,.56)}

/* iOS-style switch */
.fdn-toggle{position:relative;width:34px;height:19px;flex:0 0 auto;padding:0;border:0;
  border-radius:19px;cursor:pointer;
  /* Dave 8/26: OFF must recede into the dark ground, not read as lit. */
  background:rgba(255,255,255,.09);box-shadow:inset 0 0 0 1px rgba(255,255,255,.10);
  transition:background .24s ease;justify-self:end;
  /* Dave 8/26: nudge all toggles 20px left, off the right edge */
  margin-right:20px;
  /* and keep them above anything the hero absolutely-positions nearby, which is
     what killed the first two cards' clicks on the live deploy */
  z-index:6}
.fdn-toggle__knob{position:absolute;top:2px;left:2px;width:15px;height:15px;border-radius:50%;
  background:rgba(246,241,232,.34);box-shadow:none;
  transition:transform .24s cubic-bezier(.3,.8,.4,1),background .24s ease}
.fdn-toggle[aria-pressed="true"]{background:#EFAA15;box-shadow:none}
.fdn-toggle[aria-pressed="true"] .fdn-toggle__knob{background:#fff;box-shadow:0 1px 3px rgba(0,0,0,.32)}
.fdn-card:hover .fdn-toggle[aria-pressed="false"]{background:rgba(255,255,255,.14)}
.fdn-card:hover .fdn-toggle[aria-pressed="false"] .fdn-toggle__knob{background:rgba(246,241,232,.5)}
.fdn-toggle[aria-pressed="true"] .fdn-toggle__knob{transform:translateX(15px)}
.fdn-toggle:focus-visible{outline:2px solid #EFAA15;outline-offset:2px}
.fdn-card.is-chosen .fdn-card__screen{box-shadow:inset 0 0 0 2px #EFAA15}
.fdn-card.is-chosen .fdn-card__name{color:#fff}

/* full-screen example-site viewer.
   Dave 8/26: the site must SCROLL, so nothing sits over the iframe. The frame
   is inset instead, leaving a backdrop ring that is the click-to-close target,
   with a label that follows the pointer over it. Escape also closes. */
.fdn-lightbox{position:fixed;inset:0;z-index:9999;background:rgba(8,9,11,.93);
  opacity:0;visibility:hidden;transition:opacity .3s ease,visibility .3s;
  /* Dave 8/26: true full-bleed — no black margin, the site fills the viewport
     and the only way out is the close button (or Escape). */
  display:block;padding:0;cursor:auto}
.fdn-lightbox.is-open{opacity:1;visibility:visible}
.fdn-lightbox__frame{width:100vw;height:100vh;display:block;border:0;background:#fff;
  border-radius:0;box-shadow:none}
.fdn-lightbox__cursor{position:fixed;z-index:3;pointer-events:none;
  transform:translate(14px,14px);color:rgba(255,255,255,.9);font-size:10px;
  letter-spacing:.16em;text-transform:uppercase;background:rgba(0,0,0,.62);
  padding:7px 12px;border-radius:999px;white-space:nowrap;opacity:0;
  transition:opacity .18s ease}
.fdn-lightbox__cursor{display:none}
/* always-available close control — the follow-cursor label cannot be clicked
   while the pointer is inside the embedded site, so this never depends on it */
/* Dave 8/27: was a black × in a circle jammed into the corner — now a gold
   pill reading "← Back", pulled 40px down / 30px in from the right, throbbing
   so it reads as the way out of a full-screen site preview. */
.fdn-lightbox__close{position:fixed;top:110px;right:30px;z-index:10000;
  width:auto;height:auto;border:0;border-radius:999px;cursor:pointer;
  background:#EFAA15;color:#fff;
  font-family:"Plus Jakarta Sans",Inter,ui-sans-serif,system-ui,sans-serif;
  font-size:14px;font-weight:600;letter-spacing:.02em;line-height:1;
  padding:12px 22px 12px 18px;
  display:inline-flex;align-items:center;gap:9px;
  box-shadow:0 6px 22px rgba(0,0,0,.32);
  transition:background .22s ease,box-shadow .22s ease;
  animation:fdnBackThrob 1.9s ease-in-out infinite}
.fdn-lightbox__back-arrow{font-size:17px;line-height:1;position:relative;top:-1px}
@keyframes fdnBackThrob{
  0%,100%{transform:scale(1)}
  50%{transform:scale(1.085)}
}
.fdn-lightbox__close:hover{background:#111;animation-play-state:paused;transform:scale(1.085)}
.fdn-lightbox__close:focus-visible{outline:2px solid #fff;outline-offset:3px}
@media (prefers-reduced-motion:reduce){.fdn-lightbox__close{animation:none}}

@media (max-width:1024px){.fdn-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:560px){.fdn-grid{grid-template-columns:1fr;width:82vw}}

/* keep the foundations headline on one line, per Dave */
.fdn-h2{white-space:nowrap}
@media (max-width:820px){.fdn-h2{white-space:normal}}

/* ── Hero: drop the "See a Finished Site" pill ─────────────────────────────
   Dave 8/26: the eight options below already open full sites, so the hero CTA
   is redundant — and the $XX/mo badge should fall into the space it leaves.
   The pill stays in the DOM but invisible ON PURPOSE: the mirror script near
   the bottom of index.html positions the badge off the pill's live rect and
   bails out entirely if the pill is missing or display:none. visibility keeps
   the rect, so the badge still tracks it across every breakpoint. */
.comparison-side-cta__btn{visibility:hidden !important;pointer-events:none !important}
/* script sets transform:translate(-50%, calc(-100% - 14px)) to sit ABOVE the
   pill; this drops the badge down into the pill's own position instead. */
/* script sets transform:translate(-50%, calc(-100% - 14px)) to sit ABOVE the
   pill; this drops the badge into the pill's place, then nudges it per Dave
   8/26: up 20px, left 10px. */
/* Dave 9/1: shift the whole tag's contents 20px right (was -10px). */
html body .comparison-price-tag{transform:translate(calc(-50% + 10px),-20px) !important}

/* Dave 8/27: the dark "Choose a look" block moves in 40px with the white lead
   block above it. foundations.js aligns the two BOXES (margin-left), so adding
   the same padding to each keeps their text edges flush while the monitor grid
   below stays exactly where it is. */
#foundationsIntro{padding-left:90px !important}

/* ── Hero lead block ───────────────────────────────────────────────────────
   Dave's own copy, 8/26: lead-in header, two paragraphs, lead-out header that
   hands off to the eight foundations directly below. Uses .lead--below-compare
   so it keeps the template's existing width and placement under the mockup. */
.fdn-lead{
  /* Dave 8/26: narrow the measure so neither paragraph drops a one-word widow. */
  /* Dave 8/27 (round 2): 62ch was too narrow — at the top of the clamp the
     41px header wrapped and dropped "here." on a line by itself, and the body
     ran short next to the dark section below it. 80ch fits the header on one
     line at every width and widens the paragraphs. */
  max-width:80ch;
  /* Both text blocks (this one and #foundationsIntro) sit 50px in from the
     left edge. Padding, not margin, so the measure above is unaffected and the
     two blocks stay flush with each other. */
  padding-left:90px !important;
  /* .lead--below-compare carries ~48px of left padding on the CONTAINER, which
     is why its text sat right of the dark section's heading even though both
     boxes started at the same x. Zero it here; the section's own margin still
     provides the outer inset. (Dave 8/26) */
  margin-left:0 !important}
.fdn-lead__in,.fdn-lead__out{
  font-family:"Plus Jakarta Sans",Arial,sans-serif;
  font-size:clamp(17px,1.28vw,20px);font-weight:400;line-height:1.35;
  letter-spacing:-.005em;color:#20242a;margin:0;
  /* the template's own h2 rules cap width and centre — both wrong here */
  max-width:none !important;width:100% !important;text-align:left !important;
  /* the template's h2 carries an inherited left indent (~48px at desktop) which
     pushed these in past the dark section's heading — zero it (Dave 8/26) */
  padding-left:0 !important;margin-left:0 !important;text-indent:0 !important}
.fdn-lead__out{margin-top:1.15em}
.fdn-lead p{margin:.85em 0 0;font-size:clamp(14px,1.02vw,15.5px);line-height:1.62;
  font-weight:300;color:rgba(32,36,42,.78)}
.fdn-lead p + p{margin-top:.8em}

/* $XX/mo badge: left-justified, not centred (Dave 8/26) */
html body .comparison-price-tag{text-align:left !important}
html body .comparison-price-tag strong,
html body .comparison-price-tag em{text-align:left !important}

/* Eyebrow + chosen style must read as ONE line of identical type (Dave 8/26). */
.investment-entry__eyebrow{white-space:nowrap !important}
/* the template renders eyebrow descendants as display:block, which is what was
   forcing the style onto its own line even with nowrap set */
#fdnEyebrowStyle{display:inline !important;font:inherit !important;font-size:inherit !important;
  font-weight:inherit !important;letter-spacing:inherit !important;
  text-transform:inherit !important;color:inherit !important;white-space:nowrap}

/* WebYay is always bold in body copy (Dave 8/26) */
.fdn-lead b, .fdn-lead strong{font-weight:600;color:inherit}

/* "Included" nav item: it is now the first <a> in .wg-nav (the old "See a
   Finished Site" link was removed), so it inherited that link's pill styling.
   Match Contact/FAQ instead. */
#navIncludedLink:not(:hover):not(:focus-visible){background:transparent !important;
  border-color:transparent !important;box-shadow:none !important}

/* Section headers to 400 (Dave 8/26) — "What changes beyond the look.",
   "Questions worth answering.", "Three decades of design experience…", and the
   foundations headline. The template sets these heavier in several places, so
   these need to win outright. */
html body .value-intro h2,
html body .faq-intro h2,
html body .credentials-intro__copy h2,
html body .fdn-h2{font-weight:400 !important}

/* Selected card: descriptor goes pure white — selection cue, not a hover cue. */
.fdn-card.is-chosen .fdn-card__desc{color:#fff !important}

/* Anchor jump for "What's Included" was landing under the sticky topbar, hiding
   the eyebrow and part of the headline. Reserve the bar's height plus air. */
#scopeIntro,#creditsIntro{scroll-margin-top:110px}

/* "About Us" is another .nav-contact link, so it needs the same reset that keeps
   the first nav <a> from inheriting the old pill styling. */
/* The ID reset must NOT apply on hover, or these two lose the faint grey pill
   that Contact/FAQ get and fall through to the gold link-hover colour instead.
   (Dave 8/26) */
#navAboutLink:not(:hover):not(:focus-visible){background:transparent !important;
  border-color:transparent !important;box-shadow:none !important}

/* ONLY the lead-in header is enlarged (Dave 8/26: 40% larger, weight 400).
   The lead-out keeps the original size. */
/* Dave 8/26: lead-IN only, another 20% larger. The lead-OUT stays as is. */
.fdn-lead__in{font-size:clamp(34px,2.55vw,41px) !important;line-height:1.22 !important}

/* Contact/FAQ keep the dark text on hover; the generic .wg-nav a:hover gold was
   still winning on the two new links. Match Contact exactly. */
html body .wg-topbar .wg-nav a#navIncludedLink:hover,
html body .wg-topbar .wg-nav a#navIncludedLink:focus-visible,
html body .wg-topbar .wg-nav a#navAboutLink:hover,
html body .wg-topbar .wg-nav a#navAboutLink:focus-visible{
  color:#3a3f42 !important;background:rgba(0,0,0,.06) !important;
  /* Dave 8/26: no gold ring — Contact/FAQ have no border on hover, and these
     two were still picking up the first-nav-link border treatment. */
  border-color:transparent !important;border:0 !important;outline:none !important;
  box-shadow:none !important}

/* body copy in the lead block must share that same flush-left edge */
.fdn-lead p{padding-left:0 !important;margin-left:0 !important;text-indent:0 !important}

/* the "View Site Style" row centres its children; the plus needs its own lift */
.fdn-card__view{align-items:center !important}
.fdn-card__view > span:first-child{display:inline-block;line-height:1}

/* The two new nav items inherited the first-nav-link tracking (0.88px) instead
   of Contact/FAQ's 0.22px — that is the loose kerning. Match exactly. */
html body .wg-topbar .wg-nav a#navIncludedLink,
html body .wg-topbar .wg-nav a#navAboutLink{letter-spacing:.22px !important}

/* WaltersGroup logo sat high in the topbar — drop it 10px (Dave 8/26). */
html body .wg-topbar .wg-logo-link{position:relative;top:8px}

/* The example site inside the laptop/phone must scroll (Dave 8/26). The shared
   stylesheet already sets pointer-events/overflow auto on these; the leftover
   scrolling="no" attribute was the part still locking them. */
.after-screen iframe,
.mobile-phone-after iframe{overflow:auto !important;-webkit-overflow-scrolling:touch !important;
  pointer-events:auto !important}

/* Monitor FRAME only at 70% until hovered or chosen; the screenshot inside stays
   fully opaque (Dave 8/26). The two frames cross-fade against each other, so the
   opacity has to ride on the wrapper, not on the individual <img>s. */
.fdn-card__monitor{opacity:1}
.fdn-card__frame{opacity:.5}
.fdn-card__frame--silver{opacity:0}
.fdn-card__monitor:hover .fdn-card__frame--dark,
.fdn-card.is-chosen .fdn-card__frame--dark{opacity:0}
.fdn-card__monitor:hover .fdn-card__frame--silver,
.fdn-card.is-chosen .fdn-card__frame--silver{opacity:1}

/* Broken vertical separators between the four columns (Dave 8/26, variant B).
   Inset top and bottom so they float rather than boxing each card in. */
.fdn-grid{column-gap:0 !important}
.fdn-card{padding:0 26px}
.fdn-card:not(:nth-child(4n))::after{content:"";position:absolute;right:0;
  top:14%;bottom:14%;width:1px;background:rgba(255,255,255,.16);pointer-events:none}
@media (max-width:1024px){
  /* 2-up: only the first of each pair gets a rule */
  .fdn-card:not(:nth-child(4n))::after{display:none}
  .fdn-card:nth-child(odd)::after{content:"";display:block;position:absolute;right:0;
    top:14%;bottom:14%;width:1px;background:rgba(255,255,255,.16);pointer-events:none}
}
@media (max-width:560px){.fdn-card::after{display:none !important}}

/* ── Intro wall: PT/clinic imagery + half the duration ─────────────────────
   intro.js and intro.css are SHARED by all 35 client pages, so nothing there
   is touched. Both changes are page-local overrides (Dave 8/26).
   1) Duration: the wall holds 6s then fades 3.2s (~9.2s total). Halved. */
#webyayIntroWall{animation:iwOverlayOut 1.6s ease-in 3s forwards !important}
#webyayIntroWall .iw-wall{animation-duration:4.5s !important}
#webyayIntroWall .iw-black-veil{animation-duration:.5s !important}

/* 2) Swap the portfolio images for the eight PT style pages. Six columns of
      six cards; each column cycles three images twice, matching the markup. */
#webyayIntroWall .iw-col:nth-of-type(1) .iw-card:nth-child(1) .iw-media{background-image:url("assets/intro/modern.jpg") !important}
#webyayIntroWall .iw-col:nth-of-type(1) .iw-card:nth-child(2) .iw-media{background-image:url("assets/intro/traditional.jpg") !important}
#webyayIntroWall .iw-col:nth-of-type(1) .iw-card:nth-child(3) .iw-media{background-image:url("assets/intro/sage.jpg") !important}
#webyayIntroWall .iw-col:nth-of-type(1) .iw-card:nth-child(4) .iw-media{background-image:url("assets/intro/modern.jpg") !important}
#webyayIntroWall .iw-col:nth-of-type(1) .iw-card:nth-child(5) .iw-media{background-image:url("assets/intro/traditional.jpg") !important}
#webyayIntroWall .iw-col:nth-of-type(1) .iw-card:nth-child(6) .iw-media{background-image:url("assets/intro/sage.jpg") !important}
#webyayIntroWall .iw-col:nth-of-type(2) .iw-card:nth-child(1) .iw-media{background-image:url("assets/intro/friendly.jpg") !important}
#webyayIntroWall .iw-col:nth-of-type(2) .iw-card:nth-child(2) .iw-media{background-image:url("assets/intro/athletic.jpg") !important}
#webyayIntroWall .iw-col:nth-of-type(2) .iw-card:nth-child(3) .iw-media{background-image:url("assets/intro/clinical.jpg") !important}
#webyayIntroWall .iw-col:nth-of-type(2) .iw-card:nth-child(4) .iw-media{background-image:url("assets/intro/friendly.jpg") !important}
#webyayIntroWall .iw-col:nth-of-type(2) .iw-card:nth-child(5) .iw-media{background-image:url("assets/intro/athletic.jpg") !important}
#webyayIntroWall .iw-col:nth-of-type(2) .iw-card:nth-child(6) .iw-media{background-image:url("assets/intro/clinical.jpg") !important}
#webyayIntroWall .iw-col:nth-of-type(3) .iw-card:nth-child(1) .iw-media{background-image:url("assets/intro/boutique.jpg") !important}
#webyayIntroWall .iw-col:nth-of-type(3) .iw-card:nth-child(2) .iw-media{background-image:url("assets/intro/bold.jpg") !important}
#webyayIntroWall .iw-col:nth-of-type(3) .iw-card:nth-child(3) .iw-media{background-image:url("assets/intro/modern.jpg") !important}
#webyayIntroWall .iw-col:nth-of-type(3) .iw-card:nth-child(4) .iw-media{background-image:url("assets/intro/boutique.jpg") !important}
#webyayIntroWall .iw-col:nth-of-type(3) .iw-card:nth-child(5) .iw-media{background-image:url("assets/intro/bold.jpg") !important}
#webyayIntroWall .iw-col:nth-of-type(3) .iw-card:nth-child(6) .iw-media{background-image:url("assets/intro/modern.jpg") !important}
#webyayIntroWall .iw-col:nth-of-type(4) .iw-card:nth-child(1) .iw-media{background-image:url("assets/intro/traditional.jpg") !important}
#webyayIntroWall .iw-col:nth-of-type(4) .iw-card:nth-child(2) .iw-media{background-image:url("assets/intro/sage.jpg") !important}
#webyayIntroWall .iw-col:nth-of-type(4) .iw-card:nth-child(3) .iw-media{background-image:url("assets/intro/friendly.jpg") !important}
#webyayIntroWall .iw-col:nth-of-type(4) .iw-card:nth-child(4) .iw-media{background-image:url("assets/intro/traditional.jpg") !important}
#webyayIntroWall .iw-col:nth-of-type(4) .iw-card:nth-child(5) .iw-media{background-image:url("assets/intro/sage.jpg") !important}
#webyayIntroWall .iw-col:nth-of-type(4) .iw-card:nth-child(6) .iw-media{background-image:url("assets/intro/friendly.jpg") !important}
#webyayIntroWall .iw-col:nth-of-type(5) .iw-card:nth-child(1) .iw-media{background-image:url("assets/intro/athletic.jpg") !important}
#webyayIntroWall .iw-col:nth-of-type(5) .iw-card:nth-child(2) .iw-media{background-image:url("assets/intro/clinical.jpg") !important}
#webyayIntroWall .iw-col:nth-of-type(5) .iw-card:nth-child(3) .iw-media{background-image:url("assets/intro/boutique.jpg") !important}
#webyayIntroWall .iw-col:nth-of-type(5) .iw-card:nth-child(4) .iw-media{background-image:url("assets/intro/athletic.jpg") !important}
#webyayIntroWall .iw-col:nth-of-type(5) .iw-card:nth-child(5) .iw-media{background-image:url("assets/intro/clinical.jpg") !important}
#webyayIntroWall .iw-col:nth-of-type(5) .iw-card:nth-child(6) .iw-media{background-image:url("assets/intro/boutique.jpg") !important}
#webyayIntroWall .iw-col:nth-of-type(6) .iw-card:nth-child(1) .iw-media{background-image:url("assets/intro/bold.jpg") !important}
#webyayIntroWall .iw-col:nth-of-type(6) .iw-card:nth-child(2) .iw-media{background-image:url("assets/intro/modern.jpg") !important}
#webyayIntroWall .iw-col:nth-of-type(6) .iw-card:nth-child(3) .iw-media{background-image:url("assets/intro/traditional.jpg") !important}
#webyayIntroWall .iw-col:nth-of-type(6) .iw-card:nth-child(4) .iw-media{background-image:url("assets/intro/bold.jpg") !important}
#webyayIntroWall .iw-col:nth-of-type(6) .iw-card:nth-child(5) .iw-media{background-image:url("assets/intro/modern.jpg") !important}
#webyayIntroWall .iw-col:nth-of-type(6) .iw-card:nth-child(6) .iw-media{background-image:url("assets/intro/traditional.jpg") !important}

/* Scrollbar gutter showed as a white line down the right edge of the phone (and
   laptop) once the iframes were made scrollable. The embedded site is cross-
   origin so its scrollbar cannot be styled — widen the iframe past the screen
   opening instead and let the screen's own overflow clip the bar away. */
.phone-screen,.laptop-screen,.mobile-phone-screen{overflow:hidden !important}
.phone-screen.after-screen iframe{width:408px !important}
/* 8/27 BUG FIX, per Dave: this used to be width:calc(100% + 18px), which
   REPLACED the template's own native 1464px iframe width — that 1464 is
   the site's real render width (1432) plus a deliberate 32px so the
   desktop scrollbar gutter lands past the screen mask. Overriding it with
   a percentage made the rendered page far narrower than the scaled screen,
   so the site sat against the left edge with a black band on the right.
   Native width/scale restored; the mask still clips the scrollbar. */
.laptop-screen.after-screen iframe{width:1464px !important;transform:scale(.7583) !important}
/* [FIX] 2026-09-03, Dave: "the hero video in the iPhone is skewed off and not
   filling the iPhone screen." My own rule did that. The template's JS sets the
   iframe inline to width:390px + scale(0.716226) - a real phone viewport
   scaled to exactly fill the 279px mockup. The width:calc(100% + 18px) that
   used to sit here overrode that inline width with !important, giving
   297px x 0.716 = 213px of page in a 279px screen: hence the black band down
   the right. Scrollbars are hidden by the template's own rules now, so the
   +18px overhang it was buying is not needed. Let the inline width stand. */

/* ============================================================================
   8/27 — included lead-in, tunnel headline echo, nav Start Project button
   ========================================================================= */

/* Dave: the four included-benefit tiles had no lead-in. Eyebrow + header +
   one sentence, same .value-intro pattern the rest of the page uses, and the
   "What's Included" nav item now stops here instead of at #scopeIntro
   ("what improves" is a different idea). scroll-margin clears the topbar. */
#includedIntro{
  scroll-margin-top:110px;
  margin:clamp(46px,4.6vw,72px) auto clamp(18px,1.8vw,26px);
}
/* .value-intro is written for the DARK sections (near-white type); this one
   sits inside the light .investment-section, so the type has to be re-colored
   to the same greys that section's own header/paragraph already use, and the
   header sized a step under it so the section still reads as one header. */
/* Dave 8/27: size/line-height overrides removed — this is a .value-intro like
   every other section header, so it now takes the template's own standard
   (clamp(56px,4.35vw,78px)/.96) instead of the smaller one I had set, which is
   what made the headers read as all over the map. Only the colour stays, since
   this block sits on the light section. */
#includedIntro h2{
  color:#6A6B6D !important;
  font-weight:400 !important;
}
/* the Project Investment header is not a .value-intro, so it needs the same
   values written out to line up with the rest */
@media (min-width:1100px){
  .investment-copy h2{
    font-size:clamp(52px,4.65vw,82px) !important;
    line-height:.96 !important;
    max-width:18.5ch !important;
    letter-spacing:-.045em !important;
    font-weight:400 !important;
    text-wrap:balance}
}
@media (min-width:1280px){
  .investment-copy h2{
    font-size:clamp(56px,4.35vw,78px) !important;
    max-width:19.75ch !important}
}
#includedIntro p{
  color:rgba(32,36,42,.66) !important;
  font-size:18px !important;
  line-height:1.55 !important;
  max-width:64ch !important;
}

/* Dave: inside Start Project the first headline should read as the style the
   visitor picked ("Boutique style"), a bit smaller so it fits the band.
   Text swap is in foundations.js via the window.webyayStyleHeadline hook. */
.tunnel-top__headline h2.is-style-headline{
  font-size:clamp(22px,3.05vw,44px) !important;
}

/* Dave: nav Start Project button — solid gold fill, white type, fading to a
   solid black fill on hover (was an outline pill). Written at the same
   over-qualified strength the template's own last-word rules use
   (html body header.wg-topbar x3 nav.wg-nav > button#navStartBtn), plus the
   .account-flow-open class, so this actually outranks them. */
html body header.wg-topbar.wg-topbar.wg-topbar nav.wg-nav > button#navStartBtn.account-flow-open,
html body header.wg-topbar.wg-topbar.wg-topbar nav.wg-nav > button#navStartBtn,
html body header.wg-topbar.wg-topbar.wg-topbar #navStartBtn.account-flow-open,
html body header.wg-topbar .mobile-menu-start,
.mobile-menu-start{
  background:#EFAA15 !important;
  border-color:#EFAA15 !important;
  color:#fff !important;
  transition:background .28s ease, border-color .28s ease, color .28s ease !important;
}
html body header.wg-topbar.wg-topbar.wg-topbar nav.wg-nav > button#navStartBtn.account-flow-open:hover,
html body header.wg-topbar.wg-topbar.wg-topbar nav.wg-nav > button#navStartBtn.account-flow-open:focus-visible,
html body header.wg-topbar.wg-topbar.wg-topbar nav.wg-nav > button#navStartBtn:hover,
html body header.wg-topbar.wg-topbar.wg-topbar nav.wg-nav > button#navStartBtn:focus-visible,
html body header.wg-topbar.wg-topbar.wg-topbar #navStartBtn.account-flow-open:hover,
html body header.wg-topbar.wg-topbar.wg-topbar #navStartBtn.account-flow-open:focus-visible,
html body header.wg-topbar .mobile-menu-start:hover,
.mobile-menu-start:hover,
.mobile-menu-start:focus-visible{
  background:#111 !important;
  border-color:#111 !important;
  color:#fff !important;
}

/* ── 8/27 round: investment block alignment, tighter grid gap, tunnel pill ──── */

/* Dave: "Project Investment" text and content must sit on the same left edge as
   the "Design Style" content above it. The section's own 75px inset put it 59px
   to the left of that edge — pad the section instead of moving each child, so
   the copy, the entry card and the payment column all shift together and the
   right-hand inset is untouched. */
.investment-section{padding-left:134px !important}
@media (max-width:900px){.investment-section{padding-left:24px !important}}

/* Dave: the space between the intro copy and the row of monitors was too big —
   halved. (was clamp(34px,3.8vw,58px)) */
.fdn-grid{margin-top:clamp(17px,1.9vw,29px) !important}

/* Dave: kill the gold "View Your New Site" pill that floats inside the tunnel's
   monitor on this page — a shotgun visitor has no site of their own to view yet.
   Page-local only; the 35 client pages keep theirs. */
.tunnel-view-newsite-pill{display:none !important}

/* Dave 8/27: no "Send Me PDF" on the shotgun page — that pill mails a marked-up
   PDF of a redesign the visitor hasn't had done yet, so it has nothing to send.
   Its caption line goes with it. Page-local: the 35 client pages keep theirs.
   The centered OK below stays — it advances the card like Next does. */
#webyayTunnel .tunnel-pdf-caption,
#webyayTunnel [data-pdf-caption],
#webyayTunnel .tunnel-3tile--pdf,
#webyayTunnel [data-pdf-tile]{display:none !important}

/* Dave 8/27: Transition Questions hovered to a light gray while the six pills
   beside it go solid gold with white type. Same treatment now — background,
   border and text all match .tunnel-foundation-pill:hover exactly; its gray
   RESTING fill is the intentional difference and is untouched. */
#webyayTunnel .tunnel-transition-faq-btn:hover,
#webyayTunnel .tunnel-transition-faq-btn:focus-visible{
  background:#EFAA15 !important;
  border-color:#EFAA15 !important;
  color:#ffffff !important;
}

/* Dave 8/27: Social Media is no longer its own tile — foundations.js moves its
   whole block to the bottom of the Design + Content panel. */
#webyayTunnel [data-3tile="social"]{display:none !important}
/* the moved block keeps the tunnel's own spacing; only the intro line needs
   room under it now that it sits inside a 3row control column */
#webyayTunnel .fdn-social-row .tunnel-3tile-panel__intro{margin:0 0 10px}

/* Dave 8/27: "Your Web Address" under the Transition Questions button on the
   foundation card. .tunnel-info-card is a flex column and the transition
   button carries order:10, so this needs a higher order to land beneath it.
   Width matches the pills' 330px grid so the row lines up with everything
   above it. */
#webyayTunnel .fdn-weburl{
  order:11;
  display:flex;align-items:center;gap:10px;
  width:100%;max-width:330px;margin-top:12px}
#webyayTunnel .fdn-weburl__label{
  flex:0 0 auto;
  font-family:"Plus Jakarta Sans",Inter,ui-sans-serif,system-ui,sans-serif;
  font-size:9.4px;font-weight:500;line-height:1.25;letter-spacing:.02em;
  color:#1c242a;white-space:nowrap}
#webyayTunnel .fdn-weburl__input{
  flex:1 1 auto;min-width:0;
  height:27.34px;padding:0 12px;
  border:1px solid #e2e4e6;border-radius:999px;background:#fff;
  font-family:"Plus Jakarta Sans",Inter,ui-sans-serif,system-ui,sans-serif;
  font-size:9.4px;line-height:1.25;color:#1c242a;
  transition:border-color .2s ease}
#webyayTunnel .fdn-weburl__input::placeholder{color:rgba(28,36,42,.42)}
#webyayTunnel .fdn-weburl__input:focus{outline:none;border-color:#EFAA15}
@media (max-width:640px){
  #webyayTunnel .fdn-weburl{max-width:none}
  #webyayTunnel .fdn-weburl__label,#webyayTunnel .fdn-weburl__input{font-size:11px}
  #webyayTunnel .fdn-weburl__input{height:25px}
}

/* Dave 8/27: "Use Content from your current site" — first row of Design +
   Content: their URL (carried over from the foundation card) plus a switch.
   ON means we lift the copy/logo/images from that site as-is, so everything
   below is ghosted out. */
#webyayTunnel .fdn-usecurrent{order:-1}
#webyayTunnel .fdn-usecurrent__control{display:flex;align-items:center;gap:12px}
#webyayTunnel .fdn-usecurrent__input{
  flex:1 1 auto;min-width:0;height:32px;padding:0 12px;
  border:1px solid #e2e4e6;border-radius:8px;background:#fff;
  font-family:"Plus Jakarta Sans",Inter,ui-sans-serif,system-ui,sans-serif;
  font-size:12px;line-height:1.25;color:#1c242a;transition:border-color .2s ease}
#webyayTunnel .fdn-usecurrent__input::placeholder{color:rgba(28,36,42,.42)}
#webyayTunnel .fdn-usecurrent__input:focus{outline:none;border-color:#EFAA15}

/* the switch is the same component as the eight style toggles, re-skinned for
   a light ground — the dark-page OFF state (white at 9%) is invisible here */
#webyayTunnel .fdn-toggle--light{
  margin-right:0;justify-self:auto;
  background:#dcdde1;box-shadow:inset 0 0 0 1px rgba(0,0,0,.06)}
#webyayTunnel .fdn-toggle--light .fdn-toggle__knob{
  background:#fff;box-shadow:0 1px 3px rgba(0,0,0,.22)}
#webyayTunnel .fdn-toggle--light[aria-pressed="true"]{background:#EFAA15;box-shadow:none}

/* everything below, once the switch is on */
#webyayTunnel .tunnel-3tile-panel.is-content-locked .tunnel-3row:not(.fdn-usecurrent){
  opacity:.38;pointer-events:none;filter:saturate(.35)}
#webyayTunnel .tunnel-3tile-panel.is-content-locked .tunnel-3row:not(.fdn-usecurrent) *{
  cursor:default !important}

/* Dave 8/27: with a two-line focus header ("Choose your / Design + Content")
   the shared flex row centred the back arrow against the WHOLE block, leaving
   it floating in space to the right of the gap between the lines. Letting the
   header lay out as normal inline text puts the arrow immediately after the
   last word of the second line, 25px to its right, on that line. */
/* BUG FIX 2026-08-27: these must NOT apply to the Custom Logo and Smart Forms
   panels. Those two carry their own header inside the panel, so the tunnel
   collapses this focus header for them (.is-tile-focus-logo sets height:0 and
   hides the text). My rules below have the same specificity and load later, so
   without the :not() they un-hid that text and it rendered ON TOP of the
   panel's own header — the doubled, overlapping headings Dave saw. */
/* BUG FIX 2026-09-03, Dave: "two competing headers... two competing reverse
   buttons." The tunnel ALREADY hides this shared header once you drill into
   "Additional Page N of X" - it sets style.display='none' on it inline, so the
   per-page header flows up into this slot and one back arrow is left. But an
   !important declaration in a stylesheet outranks a plain inline style, so the
   display:block !important below was overriding that and forcing the outer
   header (and its arrow) back on screen. The :not([style*=...]) pair below
   stands down whenever the tunnel has hidden it inline, which is exactly the
   drilled-in case - and leaves every other case untouched. */
#webyayTunnel .tunnel-detail__heading--subquestion[data-3tile-subquestion].is-tile-focus:not(.is-tile-focus-logo):not([style*="display: none"]):not([style*="display:none"]){
  display:block !important}
#webyayTunnel .tunnel-detail__heading--subquestion.is-tile-focus:not(.is-tile-focus-logo):not([style*="display: none"]):not([style*="display:none"]) [data-3tile-subquestion-text]{
  display:inline !important}
#webyayTunnel .tunnel-detail__heading--subquestion.is-tile-focus:not(.is-tile-focus-logo):not([style*="display: none"]):not([style*="display:none"]) .tunnel-3tile-focus-stepback{
  display:inline-flex !important;
  /* 19px, not 25: the whitespace text node between the header span and this
     button renders as ~6px, so 19 measures as the 25 Dave asked for. */
  margin-left:19px !important;
  vertical-align:middle;
  position:relative;top:-4px;
  transform:none !important}


/* Dave 8/27: "Don't include social media links" was wrapping to two lines in
   the narrower Design + Content column. One line, sized to its own text. */
#webyayTunnel .fdn-social-row [data-tunnel-social-status]{
  display:flex;flex-wrap:wrap;gap:8px}
#webyayTunnel .fdn-social-row .tunnel-social-status-btn{
  width:auto;max-width:none;white-space:nowrap;flex:0 0 auto}

/* Dave 8/27: the social rows were reserving a whole second line for a URL
   field nobody had asked for yet — the template lays chip+field side by side,
   which cannot fit in this narrower column, so every inactive row wrapped and
   sat 72px tall. Stack them instead: tight rows now, and the field appears
   UNDER its chip only once that chip is on, pushing everything below down. */
#webyayTunnel .fdn-social-row .tunnel-social-row{display:block}
#webyayTunnel .fdn-social-row .tunnel-social-chip{width:100%}
#webyayTunnel .fdn-social-row .tunnel-social-url{display:none}
#webyayTunnel .fdn-social-row .tunnel-social-row.is-active .tunnel-social-url{
  display:block;width:100%;min-width:0;margin-top:6px}

/* Dave 8/27: the scrollbar sat with the content pressed right against it.
   The card's 465px width comes from a template rule I'd have to override in
   the shared CSS to push the bar out to the window edge, so for now the bar
   is thinned and the content keeps clear of it. */
#webyayTunnel .tunnel-card{scrollbar-width:thin;scrollbar-color:rgba(28,36,42,.28) transparent}
#webyayTunnel .tunnel-card::-webkit-scrollbar{width:7px}
#webyayTunnel .tunnel-card::-webkit-scrollbar-track{background:transparent}
#webyayTunnel .tunnel-card::-webkit-scrollbar-thumb{
  background:rgba(28,36,42,.24);border-radius:99px}
#webyayTunnel .tunnel-card::-webkit-scrollbar-thumb:hover{background:rgba(28,36,42,.38)}


/* Dave 8/27: with the switch OFF the carried-over address is ghosted and dead;
   ON, it goes solid and editable. */
#webyayTunnel .fdn-usecurrent__input:disabled{
  opacity:.42;background:#f4f5f6;color:#1c242a;cursor:default}
/* label sits 5px higher than the field it names */
#webyayTunnel .fdn-usecurrent .tunnel-3row__label{position:relative;top:-5px}

/* Dave 8/27: Custom Logo — inline back arrow beside the checkmark (the shared
   top-right one is hidden for both panels that carry their own header, logo
   and Smart Forms). Size comes from the shared .tunnel-stepback-btn rule so
   every arrow in the tunnel still matches; only the gap and baseline move,
   and both need !important because that rule sets margin-left with one. */
#webyayTunnel .tunnel-detail__heading--subquestion.is-tile-focus-logo .tunnel-3tile-focus-stepback{
  display:none !important}
#webyayTunnel .fdn-logohead-stepback{
  margin:0 0 0 25px !important;vertical-align:middle;position:relative;top:1px}
/* same gotcha the Smart Forms panel hit: something upstream flattens <strong>
   back to 400 inside these panels, so the bolded price has to be asserted */
#webyayTunnel .tunnel-3tile-panel[data-3tile-panel="logo"] strong{font-weight:700 !important}

/* Dave 8/27: style picker under the tunnel monitor — a pill pull-down so they
   can switch design style on the fly without leaving Start Project. */
#webyayTunnel .fdn-stylepick{
  position:absolute;z-index:8;margin:0;
  /* percentages so it stays put against the monitor artwork at any size:
     just below the screen bezel, left of the stand. Dave 8/27: up 25px and
     right 40px from where it first landed. */
  top:84.9%;left:8.9%}
#webyayTunnel .fdn-stylepick__select{
  appearance:none;-webkit-appearance:none;
  height:34px;padding:0 34px 0 16px;border-radius:999px;
  border:1px solid rgba(28,36,42,.18);background:#fff;
  font-family:"Plus Jakarta Sans",Inter,ui-sans-serif,system-ui,sans-serif;
  font-size:12px;font-weight:500;letter-spacing:.01em;color:#1c242a;cursor:pointer;
  background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 8'><path d='M1 1.5 6 6.5 11 1.5' fill='none' stroke='%231c242a' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/></svg>");
  background-repeat:no-repeat;background-position:right 14px center;background-size:11px;
  box-shadow:0 1px 3px rgba(0,0,0,.06);
  transition:border-color .2s ease,box-shadow .2s ease}
#webyayTunnel .fdn-stylepick__select:hover{border-color:rgba(28,36,42,.34)}
#webyayTunnel .fdn-stylepick__select:focus{outline:none;border-color:#EFAA15;box-shadow:0 0 0 3px rgba(239,170,21,.22)}

/* Dave's standing rule, restated 8/27: nothing heavier than 400 anywhere in
   the tunnel — modal titles, section heads, buttons, the lot. Two deliberate
   exceptions, both of which he asked for by name: the bold "$9 per form." and
   "$149." prices. The before/after compare labels are also left alone because
   that panel is spec-matched to SNIPER pixel for pixel. */
/* The :not(#_) carries an ID's weight without matching anything, lifting these
   to (2,0,0) — needed because several of the price rules are written as
   #webyayTunnel .class .class with !important and would otherwise win. */
#webyayTunnel *:not(#_):not(.forms-compare__label),
#planModal *:not(#_),
.tunnel-pdf-modal *:not(#_):not(.forms-compare__label),
.tunnel-faq-modal *:not(#_),
#tunnelFormsCompareModal *:not(#_):not(.forms-compare__label){
  font-weight:400 !important}
#webyayTunnel .tunnel-3tile-panel[data-3tile-panel="forms"] strong:not(#_),
#webyayTunnel .tunnel-3tile-panel[data-3tile-panel="logo"] strong:not(#_),
#webyayTunnel [data-logo-price]:not(#_){font-weight:700 !important}

/* Dave 8/27: "Let's figure out later" sits to the right of the tile grid's OK
   and moves them on to Maintenance. Outline pill so OK stays the primary
   action — same height, radius and type size as OK. */
#webyayTunnel .tunnel-3tile-ok-row--pdf{align-items:center;gap:12px}
#webyayTunnel .fdn-later-btn{
  height:35px;padding:0 18px;border-radius:999px;
  border:1px solid rgba(28,36,42,.22);background:transparent;color:#3a3f42;
  font-family:"Plus Jakarta Sans",Inter,ui-sans-serif,system-ui,sans-serif;
  font-size:12px;line-height:1;cursor:pointer;white-space:nowrap;
  transition:background .2s ease,border-color .2s ease,color .2s ease}
#webyayTunnel .fdn-later-btn:hover,
#webyayTunnel .fdn-later-btn:focus-visible{
  background:#EFAA15;border-color:#EFAA15;color:#fff;outline:none}

/* Dave 8/27: the card logos were sitting right under "Payments secured by
   Stripe" with nothing between them. */
#webyayTunnel .tunnel-summary__payment-icons-img{margin-top:10px}
@media (max-width:900px){
  #webyayTunnel .tunnel-summary__payment-icons-img{margin-top:8px}
}

/* Dave 8/27: the About header ran into the website images on the right at wide
   windows, and the copy block sat too low in its box. This is the one header
   that shares its row with artwork, so it steps down a size from the section
   standard and its measure is capped so it can never reach the images. */
.credentials-intro__copy h2{
  font-size:clamp(34px,2.9vw,50px) !important;
  line-height:1.06 !important;
  max-width:17ch !important}
.credentials-intro__copy{margin-top:-30px}

/* Dave 8/27: the line under the Design + Content header. */
/* Dave 8/27: half the gap between the header and this line — the header's own
   22px bottom margin is collapsed to 5px when the note follows it, so the two
   read as one block (22 + 6 = 28 before, 14 now). */
#webyayTunnel .tunnel-detail__heading--subquestion:has(+ .fdn-focus-note){
  margin-bottom:5px !important}
#webyayTunnel .fdn-focus-note{
  margin:0 0 14px;
  font-family:"Plus Jakarta Sans",Inter,ui-sans-serif,system-ui,sans-serif;
  font-size:13px;line-height:1.5;color:var(--muted,rgba(28,36,42,.62))}

/* Dave 8/27: the running total in the bottom bar was spread out so far it ran
   into the step nav on the left. Item spacing halved (32px gap + 13px inset →
   16 + 8), and where the gold divider appears between the subscription items
   and the one-off items, the space either side of it is now equal (16/16) so
   it sits dead centre between the two batches instead of favouring one side. */
#webyayTunnel .tunnel-total__amount .estimate-part{
  margin-right:16px !important;padding-left:8px !important}
/* the row is a flex container with an 18px column-gap, so the item before the
   divider needs NO extra margin — the gap alone sits on the left of the line,
   and the bordered item's 18px padding matches it on the right. Equal both
   sides = the divider lands dead centre between the two batches. */
#webyayTunnel .tunnel-total__amount .estimate-breakdown:has(.estimate-part--care) .estimate-part--care,
#webyayTunnel .tunnel-total__amount .estimate-breakdown:has(.estimate-part--email) .estimate-part--email{
  margin-right:0 !important}
#webyayTunnel .tunnel-total__amount .estimate-breakdown:has(.estimate-part--care) .estimate-part--website,
#webyayTunnel .tunnel-total__amount .estimate-breakdown:has(.estimate-part--email) .estimate-part--website{
  padding-left:18px !important;margin-left:0 !important}


/* ---- Design + Content: gentle "we need your web address" nudge ----------
   Dave 8/29: "I want as few roadblocks as possible, so I wanna make it
   gentle." Soft line under the row, gold outline on the field, both gone
   the moment they start typing. */
#webyayTunnel .fdn-usecurrent{position:relative}
#webyayTunnel .fdn-usecurrent__nudge{
  margin:8px 0 0 !important;
  padding:0 !important;
  grid-column:2 / -1;
  font-size:13px !important;
  line-height:1.45 !important;
  font-weight:400 !important;
  color:#8a6a12 !important;
  letter-spacing:.01em;
}
#webyayTunnel .fdn-usecurrent.is-nudging .fdn-usecurrent__input{
  box-shadow:0 0 0 2px rgba(212,160,23,.55) !important;
  border-color:rgba(212,160,23,.85) !important;
}





/* ---- the three lightbox pills -----------------------------------------
   Dave 8/31: "all three different sizes... no fill at all, glassy blurry
   background... smaller and closer together." One size for all three, real
   frosted glass rather than a solid fill, 8px apart. The glass is tinted
   dark rather than light because most of the eight style sites are pale -
   white-on-white was the first version's mistake. Gold survives as a hairline
   and the check icon on Choose, so the hierarchy is still readable without
   anything being filled in. */
.fdn-lightbox__device,
.fdn-lightbox__choose,
#webyayShotgun .fdn-lightbox__close,
.fdn-lightbox__close{
  /* Dave 8/31: "solid black with white type, regular, bright gold on hover
     and on selected, 20% smaller." No glass, no blur, no hairline, nothing
     translucent. */
  position:fixed !important;
  right:50px !important;
  z-index:10000 !important;
  box-sizing:border-box !important;
  width:136px !important;
  min-width:136px !important;
  height:28px !important;
  display:inline-flex !important;
  align-items:center !important;
  justify-content:center !important;
  gap:6px !important;
  padding:0 11px !important;
  border:0 !important;
  border-radius:999px !important;
  background:#55585e !important;      /* Dave 8/31: black read too heavy */
  color:#fff !important;
  font:300 11px/1 'Plus Jakarta Sans',system-ui,sans-serif !important;
  letter-spacing:.02em !important;
  text-shadow:none !important;
  box-shadow:none !important;
  backdrop-filter:none !important;
  -webkit-backdrop-filter:none !important;
  cursor:pointer !important;
  animation:none !important;
  transition:background .16s ease,transform .16s ease,opacity .2s ease !important;
}
/* 6px apart */
.fdn-lightbox__device{ top:auto !important; bottom:149px !important; }
.fdn-lightbox__choose{ top:auto !important; bottom:115px !important; }
#webyayShotgun .fdn-lightbox__close,
.fdn-lightbox__close{ top:auto !important; bottom:81px !important; }

.fdn-lightbox__device:hover,
.fdn-lightbox__choose:hover,
.fdn-lightbox__close:hover{
  background:#d4a017 !important;
  color:#fff !important;
  transform:scale(1.04) !important;
}
.fdn-lightbox__device:focus-visible,
.fdn-lightbox__choose:focus-visible,
.fdn-lightbox__close:focus-visible{outline:2px solid #fff;outline-offset:2px}

/* the tick: a ghost until it is theirs, then white on gold */
.fdn-lightbox__choose-check{
  display:inline-flex;line-height:0;
  color:rgba(255,255,255,.22);
  transition:color .16s ease;
}
.fdn-lightbox__choose:hover .fdn-lightbox__choose-check{ color:#fff; }
/* selected: always gold */
.fdn-lightbox__choose.is-chosen{
  background:#d4a017 !important;
  color:#fff !important;
}
.fdn-lightbox__choose.is-chosen .fdn-lightbox__choose-check{ color:#fff; }
.fdn-lightbox__choose.is-chosen:hover{ background:#b8880f !important; }

.fdn-lightbox__device{opacity:0;visibility:hidden}
.fdn-lightbox__choose{opacity:0;visibility:hidden}
.fdn-lightbox__device.is-on,
.fdn-lightbox__choose.is-on{opacity:1;visibility:visible}
.fdn-lightbox__back-arrow{font-size:12px;line-height:1;position:relative;top:-1px}

@media (max-width:760px){
  .fdn-lightbox__device,
  .fdn-lightbox__choose,
  #webyayShotgun .fdn-lightbox__close,
  .fdn-lightbox__close{ right:16px !important; width:126px !important;
                        min-width:126px !important; font-size:10.5px !important; }
  .fdn-lightbox__device{ bottom:132px !important; }
  .fdn-lightbox__choose{ bottom:98px !important; }
  #webyayShotgun .fdn-lightbox__close,
  .fdn-lightbox__close{ bottom:64px !important; }
}

.fdn-lightbox__device-icon{display:inline-flex;line-height:0}
.fdn-lightbox__back-arrow{font-size:15px;line-height:1;position:relative;top:-1px}

@media (max-width:760px){
  .fdn-lightbox__device,
  .fdn-lightbox__choose,
  #webyayShotgun .fdn-lightbox__close,
  .fdn-lightbox__close{ right:16px !important; width:156px !important;
                        min-width:156px !important; font-size:12px !important; }
  .fdn-lightbox__device{ top:auto !important; bottom:166px !important; }
  .fdn-lightbox__choose{ top:auto !important; bottom:128px !important; }
  #webyayShotgun .fdn-lightbox__close,
  .fdn-lightbox__close{ top:auto !important; bottom:90px !important; }
}

/* ---- the phone stage ---------------------------------------------------
   Dave 8/31: the photo fills the whole window now, with a black veil round
   the edges of the browser rather than a hard black frame. It stays LAID OUT
   the whole time (hidden with opacity, not display:none) so the site inside
   loads and settles while they are still on desktop view - that is what was
   causing the sideways slide when the phone appeared. */
/* Dave 8/31 (revised): the scene runs the FULL height of the window, starting
   at the very top, and the style site's own nav bar is painted on top of it.
   Pushing the scene down below the bar dropped the phone too low and cut its
   base off. So instead the lightbox gets clipped to just its nav strip and
   lifted above the scene - see .fdn-lightbox.is-navstrip below. */
.fdn-phone{
  position:fixed;
  inset:0;
  z-index:9998;
  display:grid;place-items:center;
  background:#000;
  overflow:hidden;
  opacity:0;visibility:hidden;pointer-events:none;
  transition:opacity .22s ease;
}
.fdn-phone.is-on{opacity:1;visibility:visible;pointer-events:auto}

/* cover the viewport while keeping the photo's exact aspect, so the screen
   percentages below stay true. Capped so the phone never outgrows the window
   on very wide monitors - any gap left over is black, which is the veil. */
.fdn-phone__stage{
  position:relative;
  aspect-ratio:1400/933;
  height:clamp(100vh, calc(100vw * 933 / 1400), 132vh);
}
.fdn-phone__hand{
  position:absolute;inset:0;width:100%;height:100%;
  object-fit:cover;pointer-events:none;user-select:none;z-index:2;
}
/* the veil: darkens the outer edges of the window, no hard border */
.fdn-phone::after{
  content:"";position:absolute;inset:0;z-index:3;pointer-events:none;
  background:radial-gradient(ellipse 66% 70% at 50% 50%,
             rgba(0,0,0,0) 30%, rgba(0,0,0,.30) 58%, rgba(0,0,0,.66) 80%,
             rgba(0,0,0,.92) 100%);
}
/* measured off the alpha channel of phone-hand.webp - do not nudge by eye.
   Dave 8/31: the site used to be handed the hole's width as its viewport, so
   at ~285px it laid out bigger than a real phone would - type oversized, the
   header running to the edge. It now renders at a true 390px phone viewport
   and is SCALED to fit, exactly the way the laptop hero does it. The clip box
   is the hole to the pixel and hides the overflow, so no white sliver either. */
.fdn-phone__screen{
  position:absolute;
  left:40.429%;
  top:17.792%;
  width:19.357%;
  height:61.093%;
  z-index:1;
  overflow:hidden;
  background:#fff;
  border-radius:3px;
}
.fdn-phone__frame{
  position:absolute;top:0;left:0;
  width:390px;              /* a real iPhone's CSS viewport */
  border:0;
  transform-origin:0 0;     /* scale set from JS to match the hole */
}
@media (max-width:760px){
  .fdn-phone__stage{height:clamp(100vh, calc(100vw * 933 / 1400), 128vh)}
}


/* Dave 8/31: "I hate shadows. Don't use shadows." No text-shadow, no
   box-shadow, no drop-shadow on any of the three lightbox pills, in any
   state, including their icons. */
.fdn-lightbox__device,
.fdn-lightbox__choose,
#webyayShotgun .fdn-lightbox__close,
.fdn-lightbox__close,
.fdn-lightbox__device *,
.fdn-lightbox__choose *,
.fdn-lightbox__close *,
.fdn-lightbox__device:hover,
.fdn-lightbox__choose:hover,
.fdn-lightbox__close:hover,
.fdn-lightbox__device:focus,
.fdn-lightbox__choose:focus,
.fdn-lightbox__close:focus{
  text-shadow:none !important;
  box-shadow:none !important;
  filter:none !important;
  -webkit-filter:none !important;
}


/* ---- phone mode: keep only the site's nav bar, painted over the scene ----
   The lightbox is clipped to the measured header height and raised above the
   phone overlay. Its iframe is still the full page underneath, so nothing
   reloads and switching back is instant. overflow:hidden also takes the
   frame's scrollbar out of the strip, which was the wacky bar Dave saw. */
.fdn-lightbox.is-navstrip{
  height:var(--fdn-navh,88px) !important;
  bottom:auto !important;
  overflow:hidden !important;
  z-index:9999 !important;
  background:transparent !important;
}
.fdn-lightbox.is-navstrip .fdn-lightbox__frame{
  pointer-events:none;          /* the strip is scenery, not a live nav */
}


/* ---- corner scrim -------------------------------------------------------
   Dave 8/31: "a gradated darkening behind those buttons and behind the chat
   bubble... 45 degrees starting at the lower right at 15%, fading to zero
   about midway." Sits above the site, below the pills, and never takes a
   click. Only while the lightbox is up. */
/* Dave 8/31: the gradation existed only so clear-glass pills could be read.
   The pills are solid now, so it is dead weight - off entirely. */
.fdn-scrim,.fdn-scrim.is-on{ display:none !important; }


/* ---- font roles: header / body / everything -----------------------------
   Dave 8/31: "sometimes you want a serif for the header and a sans for the
   body." Tapping a font asks what it is for instead of assuming everything. */
#webyayTunnel .fdn-roleask{
  position:absolute;z-index:40;
  display:flex;gap:6px;
  padding:6px;
  border-radius:12px;
  background:#2b2d31;
  border:1px solid rgba(255,255,255,.10);
  opacity:0;visibility:hidden;transform:translateY(-4px);
  transition:opacity .15s ease,transform .15s ease;
}
#webyayTunnel .fdn-roleask.is-open{opacity:1;visibility:visible;transform:translateY(0)}
#webyayTunnel .fdn-roleask__btn{
  border:0;border-radius:999px;
  padding:0 13px;height:28px;
  background:rgba(255,255,255,.09);
  color:#fff;
  font:300 11px/1 'Plus Jakarta Sans',system-ui,sans-serif !important;
  letter-spacing:.02em;
  white-space:nowrap;
  cursor:pointer;
  transition:background .15s ease;
}
#webyayTunnel .fdn-roleask__btn:hover{background:#EFAA15}
#webyayTunnel .fdn-roleask__btn.is-current{background:#EFAA15}

/* the role each font is doing, sat under its name */
#webyayTunnel .fdn-fontrole{
  display:inline-block;
  margin-left:9px;
  padding:2px 8px;
  border-radius:999px;
  background:rgba(0,0,0,.16);
  font-size:9.5px !important;
  letter-spacing:.07em;
  text-transform:uppercase;
  vertical-align:middle;
  opacity:.9;
}
#webyayTunnel .tunnel-font-pill:not(.is-selected) .fdn-fontrole{display:none}

@media (max-width:760px){
  #webyayTunnel .fdn-roleask{flex-wrap:wrap;max-width:230px}
}


/* Dave 8/31: no per-font hover tooltips - they covered the role panel. The
   magnifier still opens the real site in that font, which is the preview
   that actually matters. */
#webyayTunnel .fdn-roleask.is-open ~ .tunnel-hover-tooltip,
body:has(#webyayTunnel .fdn-roleask.is-open) .tunnel-hover-tooltip{
  display:none !important;
}


/* ---- font tiles: ~18% smaller, and the role chip stays inside ------------
   Dave 8/31: "the buttons are quite tall compared to the font image inside,
   and when they're selected it pushes the magnifying glass out of the way."
   The pill now flexes and clips; the chip and the magnifier never move. */
#webyayTunnel .tunnel-font-list{ gap:8px 13px !important; }
#webyayTunnel .tunnel-font-row__controls{ gap:6px !important; }
#webyayTunnel .tunnel-font-pill{
  height:31px !important;
  min-height:31px !important;
  padding:0 11px !important;
  gap:6px !important;
  flex:1 1 auto !important;
  min-width:0 !important;
  overflow:hidden !important;
}
#webyayTunnel .tunnel-font-pill__name{
  font-size:12.5px !important;
  line-height:1 !important;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
}
#webyayTunnel .fdn-fontrole{
  flex:0 0 auto !important;
  margin-left:6px !important;
  padding:1px 6px !important;
  font-size:8px !important;
  letter-spacing:.06em;
}
#webyayTunnel .tunnel-font-pill__check{ flex:0 0 auto !important; }
#webyayTunnel .tunnel-font-preview-btn{
  flex:0 0 auto !important;
  width:23px !important;
  height:23px !important;
}
#webyayTunnel .tunnel-font-preview-btn svg{ width:11px !important; height:11px !important; }

/* the magnifier of whatever is currently painted on the monitor */
#webyayTunnel .tunnel-font-preview-btn.is-previewing{
  background:#EFAA15 !important;
  border-color:#EFAA15 !important;
  color:#fff !important;
}


/* Dave 8/31: the magnifiers are gone - clicking a font previews it on the
   monitor, and picking a role commits it. The pill takes the full row. */
#webyayTunnel .tunnel-font-preview-btn{ display:none !important; }
#webyayTunnel .tunnel-font-row__controls{ gap:0 !important; }
#webyayTunnel .tunnel-font-pill{ width:100% !important; }


/* Dave 8/31: the three tiles were almost touching "What do you need?" - 15px
   of air, and "Let's figure out later" goes light grey so it reads as the
   quiet option next to the real choices. */
#webyayTunnel .tunnel-3tile-row,
#webyayTunnel .tunnel-3tiles,
#webyayTunnel [class*="3tile"][class*="row"]{ margin-top:15px !important; }
#webyayTunnel .tunnel-detail__heading + *,
#webyayTunnel .tunnel-card__question + *{ margin-top:15px !important; }

#webyayTunnel .fdn-later-btn,
#webyayTunnel [data-fdn-later]{
  background:#f1f3f6 !important;
  border-color:#e5e8ec !important;
  color:#767d86 !important;
}
#webyayTunnel .fdn-later-btn:hover,
#webyayTunnel [data-fdn-later]:hover{
  background:#e7eaee !important;
  border-color:#d8dce1 !important;
  color:#4e545c !important;
}

/* ---- "Website style" nav item (Dave 8/31) --------------------------------
   Third time this bites: whichever link sits first in .wg-nav inherits the old
   pill treatment, so its resting state looks permanently hovered. "Website
   style" is first now - give it the same three fixes Included/About already
   carry, so all five read identically until you actually hover. */
#navStyleLink:not(:hover):not(:focus-visible){
  background:transparent !important;
  border-color:transparent !important;
  box-shadow:none !important;
}
html body .wg-topbar .wg-nav a#navStyleLink:hover,
html body .wg-topbar .wg-nav a#navStyleLink:focus-visible{
  color:#3a3f42 !important;
  background:rgba(0,0,0,.06) !important;
  border-color:transparent !important;border:0 !important;
  outline:none !important;box-shadow:none !important;
}
html body .wg-topbar .wg-nav a#navStyleLink{ letter-spacing:.22px !important; }

/* and the jump landed with the eyebrow and headline tucked under the sticky
   bar - reserve the bar's height plus air, same as the other anchors. */
#foundationsIntro{ scroll-margin-top:90px; }

/* ---- "Reset colors" (Dave 8/31) -----------------------------------------
   Sits under the two colour fields, aligned with them. Quiet at rest so it
   never competes with the fields; gold on hover, with the note explaining
   what it puts back. */
#webyayTunnel .fdn-color-reset{
  display:inline-flex !important;
  align-items:center !important;
  gap:5px !important;
  margin:9px 0 0 auto !important;
  padding:0 10px !important;
  height:24px !important;
  border:1px solid #e3e6ea !important;
  border-radius:999px !important;
  background:#f7f8fa !important;
  color:#8a9199 !important;
  font:300 10.5px/1 'Plus Jakarta Sans',system-ui,sans-serif !important;
  letter-spacing:.01em !important;
  cursor:pointer !important;
  box-shadow:none !important;
  transition:background .16s ease,color .16s ease,border-color .16s ease !important;
}
#webyayTunnel .fdn-color-reset__icon{ display:inline-flex; align-items:center; }
#webyayTunnel .fdn-color-reset:hover,
#webyayTunnel .fdn-color-reset:focus-visible{
  background:#d4a017 !important;
  border-color:#d4a017 !important;
  color:#fff !important;
  outline:none !important;
  box-shadow:none !important;
}
/* the note, on hover only */
#webyayTunnel .fdn-color-reset::after{
  content:"Reset to the original colors for this style";
  position:absolute;
  transform:translate(-50%,-34px);
  left:50%;
  padding:5px 9px;
  border-radius:6px;
  background:#3a3f42;
  color:#fff;
  font:300 10.5px/1.25 'Plus Jakarta Sans',system-ui,sans-serif;
  white-space:nowrap;
  opacity:0;
  pointer-events:none;
  transition:opacity .16s ease;
  box-shadow:none;
}
#webyayTunnel .fdn-color-reset{ position:relative !important; }
#webyayTunnel .fdn-color-reset:hover::after,
#webyayTunnel .fdn-color-reset:focus-visible::after{ opacity:1; }
/* the two fields stack in a column - let the button sit at their right edge */
#webyayTunnel .tunnel-color-stack{ display:flex !important; flex-direction:column !important; }

/* Payment plan pills read too heavy at 400 (Dave 8/31) - thin them to 300.
   The 300 weight is already pulled in for Plus Jakarta Sans. */
html body .payment-list__link,
html body .payment-list__link *,
html body .payment-options .payment-list__link{ font-weight:300 !important; }
/* the reset pill was still landing on 400 - the shorthand lost to a later
   weight rule, so set it on its own. */
#webyayTunnel .fdn-color-reset,
#webyayTunnel .fdn-color-reset span{ font-weight:300 !important; }

/* ---- investment headline (Dave 8/31) ------------------------------------
   Two lines, and neither is allowed to break mid-sentence: "Everything you
   need in a website." on top, "Nothing you're overpaying for." under it. A
   <br> alone doesn't do that - the first line still wrapped once the column
   got narrow. So each sentence is its own nowrap block, and the type SHRINKS
   with the column instead of wrapping. Sized in cqw off the copy column, so
   it tracks the real available width, not the viewport. */
.investment-copy{ container-type:inline-size; }
html body .investment-copy h2.investment-h2{
  font-weight:400 !important;
  line-height:1.12 !important;
  text-wrap:nowrap !important;
}
html body .investment-copy h2.investment-h2 .investment-h2__line{
  display:block !important;
  white-space:nowrap !important;
  font-size:min(46px, 5.55cqw) !important;
}
@supports not (width: 1cqw){
  /* older engines: fall back to the viewport, same intent */
  html body .investment-copy h2.investment-h2 .investment-h2__line{
    font-size:clamp(19px, 3.1vw, 46px) !important;
  }
}

/* ---- the three pills go slightly translucent (Dave 8/31) ----------------
   80% opaque, so a little of the scene reads through without costing any
   legibility. Gold states stay solid - selection should not be ambiguous. */
.fdn-lightbox__device, .fdn-lightbox__choose,
#webyayShotgun .fdn-lightbox__close, .fdn-lightbox__close{
  background:rgba(85,88,94,.8) !important;
}

/* ---- X close, phone view only (Dave 8/31) -------------------------------
   Far upper right. Hidden on desktop, where it would land on the site's own
   nav bar. The Back pill stays either way. */
.fdn-phone__close{
  position:fixed !important;
  top:26px !important;
  right:30px !important;
  z-index:10001 !important;
  display:none !important;
  align-items:center !important;
  justify-content:center !important;
  width:34px !important;
  height:34px !important;
  padding:0 !important;
  border:0 !important;
  border-radius:999px !important;
  background:rgba(85,88,94,.8) !important;
  color:#fff !important;
  cursor:pointer !important;
  text-shadow:none !important;
  box-shadow:none !important;
  backdrop-filter:none !important;
  transition:background .16s ease !important;
}
.fdn-phone__close.is-on{ display:inline-flex !important; }
.fdn-phone__close:hover,
.fdn-phone__close:focus-visible{
  background:#d4a017 !important;
  outline:none !important;
  box-shadow:none !important;
}

/* ---- web address moves up onto the pill row (Dave 8/31) ------------------
   Two cells, same grid as the pills above it: "Transition Questions?" on the
   left, the address field on the right, identical size. No label - the
   placeholder does that job. */
#webyayTunnel .fdn-weburl-row{
  display:grid !important;
  grid-template-columns:1fr 1fr !important;
  gap:8px !important;
  align-items:stretch !important;
  margin:8px 0 0 !important;
  width:100% !important;
}
#webyayTunnel .fdn-weburl-row > .tunnel-transition-faq-btn{
  width:100% !important;
  margin:0 !important;
}
#webyayTunnel .fdn-weburl__input{
  /* match .tunnel-foundation-pill exactly */
  display:block !important;
  width:100% !important;
  margin:0 !important;
  padding:0 14px !important;
  border:1px solid #dfe2e6;
  border-radius:999px !important;
  background:#fff;
  color:#3a3f42 !important;
  font:300 12.5px/1 'Plus Jakarta Sans',system-ui,sans-serif !important;
  letter-spacing:.01em !important;
  outline:none !important;
  /* NB: this !important was overriding the pulse keyframe - the ring is the
     effect Dave asked for, so it stays off only when not pulsing. */
  box-shadow:none;
  text-shadow:none !important;
}
#webyayTunnel .fdn-weburl__input::placeholder{ color:#9aa1a9 !important; opacity:1 !important; }
#webyayTunnel .fdn-weburl__input:focus{ border-color:#d4a017 !important; }

/* the throb: border and fill only - no shadows anywhere near it */
@keyframes fdnWeburlPulse{
  0%,100%{ border-color:#dfe2e6; background:#fff; }
  50%    { border-color:#d4a017; background:#fdf6e6; }
}
#webyayTunnel .fdn-weburl__input.is-pulsing{
  animation:fdnWeburlPulse 1.6s ease-in-out infinite !important;
}
@media (prefers-reduced-motion: reduce){
  #webyayTunnel .fdn-weburl__input.is-pulsing{
    animation:none !important; border-color:#d4a017 !important;
  }
}
/* the old stacked label/row is gone */
#webyayTunnel .fdn-weburl__label{ display:none !important; }

/* ---- "A Couple Quick Questions" panel (Dave 8/31) ------------------------
   Two problems: the whole block sat far too low in the window, and the gap
   between the heading and "Let's figure this out later" was enormous - which
   is also what pushed the content tall enough to need a scrollbar. Lift the
   block, and cap that gap at 15px. */
#webyayTunnel .tunnel-care-access__flow{
  padding-top:0 !important;
  margin-top:-25px !important;
}
#webyayTunnel .tunnel-care-access__head{
  margin-top:0 !important;
  margin-bottom:15px !important;
  padding-top:0 !important;
}
/* Dave 9/3 - THE BUG, finally: padding-top:0 was set here on 8/31 to close
   the gap ABOVE this pill. But padding on a button is INSIDE it, so it did not
   touch the gap at all - it crushed the pill from 29px to 22px and jammed the
   label against the top edge. Every "centre the text" attempt since has been
   stacked on top of that instead of removing it. margin-top:0 is what actually
   closes the external gap; the pill keeps its own 7px/16px padding and its
   normal 29px shape, and the label sits centred with no nudging at all. */
#webyayTunnel .tunnel-care-access__skip{
  margin-top:0 !important;
  padding:7px 16px !important;
  box-sizing:border-box !important;
  display:inline-flex !important;
  align-items:center !important;
  justify-content:center !important;
  line-height:13px !important;
}
/* whatever sits between them must not reintroduce the gap */
#webyayTunnel .tunnel-care-access__head + *{ margin-top:0 !important; }

/* ---- reset pill + its note (Dave 8/31) ----------------------------------
   It was drifting toward the Social block instead of sitting with Colour.
   Pull it up tight under the Accent row; the right edge is aligned to the
   colour chips at runtime (alignResetColors). And the note was falling off
   the right edge of the panel - anchor it to the button's right edge instead
   of centring it, so it opens inward. */
#webyayTunnel .fdn-color-reset{ margin-top:4px !important; margin-bottom:0 !important; }
#webyayTunnel .fdn-color-reset::after{
  left:auto !important;
  right:0 !important;
  transform:translateY(-32px) !important;
  max-width:min(260px, 76vw) !important;
  white-space:normal !important;
  text-align:right !important;
}

/* ---- fixes for the round of 8/31 ---------------------------------------- */

/* 1. THE PULSE WAS NEVER VISIBLE. The base rule set background and border with
      !important, and an !important declaration beats a keyframe - so the
      animation ran the whole time and repainted nothing. Those two properties
      drop their !important here so the throb can actually take. */
#webyayTunnel .fdn-weburl__input{
  background:#fff;
  border:1px solid #dfe2e6;
}
@keyframes fdnWeburlPulse{
  0%,100%{ border-color:#e6c98a; background:#fffdf6; }
  50%    { border-color:#d4a017; background:#fdf0d2; }
}

/* 2. NO HORIZONTAL SCROLL. The culprit was the logo marquee: its track is
      4383px wide and nothing was clipping it, so the whole panel scrolled
      sideways. Clip it at every level that can leak. */
#webyayTunnel .tunnel-logo-marquee,
#webyayTunnel [class*="logo-marquee"]:not([class*="track"]):not([class*="img"]){
  overflow:hidden !important;
  max-width:100% !important;
}
#webyayTunnel .tunnel-mid,
#webyayTunnel .tunnel-mid__content,
#webyayTunnel .tunnel-detail,
#webyayTunnel .tunnel-card{
  overflow-x:hidden !important;
  max-width:100% !important;
}

/* 3. reset pill up another 6px */
#webyayTunnel .fdn-color-reset{ margin-top:-2px !important; }

/* 4. the note: left-justified, clear of the button, two lines not three */
#webyayTunnel .fdn-color-reset::after{
  transform:translateY(-42px) !important;
  width:max-content !important;
  max-width:210px !important;
  text-align:left !important;
  line-height:1.35 !important;
  padding:6px 10px !important;
}

/* nav items read heavy at 400 - thin them (Dave 8/31) */
html body .wg-topbar .wg-nav a.nav-btn,
html body .wg-topbar .wg-nav a.nav-contact,
html body .wg-topbar .wg-nav a.nav-btn:link,
html body .wg-topbar .wg-nav a.nav-btn:visited{ font-weight:300 !important; }
/* FAQ and Contact carry their own weight rule elsewhere - match them too */
html body .wg-topbar .wg-nav a#navFaqLink,
html body .wg-topbar .wg-nav a#navContactLink,
html body .wg-topbar .wg-nav a.nav-faq,
html body header.wg-topbar nav.wg-nav a{ font-weight:300 !important; }
/* FAQ/Contact carry a triple-class + id rule at 400 - match its specificity */
html body .wg-topbar.wg-topbar.wg-topbar #navFaqLink,
html body .wg-topbar.wg-topbar.wg-topbar #navContactLink,
html body .wg-topbar.wg-topbar.wg-topbar #navStyleLink,
html body .wg-topbar.wg-topbar.wg-topbar #navIncludedLink,
html body .wg-topbar.wg-topbar.wg-topbar #navAboutLink{ font-weight:300 !important; }

/* the lead block sat too far under the laptop - lift it 25px (Dave 8/31) */
html body .lead.lead--below-compare.fdn-lead{ margin-top:-90px !important; }

/* ---- the throb, redone (Dave 8/31) --------------------------------------
   Not a fill wash - the fill stays white. It is the OUTLINE that breathes,
   the way the Start button does: the ring thickens and warms, then settles.
   Border-width alone would reflow the row, so the growth rides on an inset
   ring drawn with outline, which costs no layout. No shadows. */
/* Dave 8/31: far too subtle next to the Start button. Same ring idea, much
   stronger - the ring starts thick and opaque then expands and fades, which
   is what reads as a throb. Still outline, not a shadow. */
/* Dave 8/31, third go: outline gives a hard edge that snaps - it physically
   cannot do the soft ring the Start button has. That button uses an expanding
   box-shadow (see tunnelNextPulse in the shared sheet):
       0 0 0 0 rgba(94,115,135,.55)  ->  0 0 0 6px rgba(94,115,135,0)
   i.e. a ring that grows outward from nothing and fades to clear. Same
   technique here, in gold and thicker. This is a glow ring, not a drop
   shadow - it is the effect Dave pointed at as the reference. */
@keyframes fdnWeburlPulse{
  0%   { box-shadow:0 0 0 0 rgba(212,160,23,.48); border-color:#d4a017; }
  70%  { box-shadow:0 0 0 5.5px rgba(212,160,23,0); border-color:#e3c37a; }
  100% { box-shadow:0 0 0 0 rgba(212,160,23,0); border-color:#d4a017; }
}
#webyayTunnel .fdn-weburl__input,
#webyayTunnel .fdn-weburl__input.is-pulsing{
  background:#fff !important;          /* fill never changes */
  outline:none !important;
}
#webyayTunnel .fdn-weburl__input.is-pulsing{
  animation:fdnWeburlPulse 1.9s cubic-bezier(.22,.61,.36,1) infinite !important;
  border-width:1.5px !important;
}
/* the ring bleeds outside the field, so nothing on the way up may clip it */
#webyayTunnel .fdn-weburl-row,
#webyayTunnel .fdn-weburl-row--full,
#webyayTunnel .tunnel-info-card{ overflow:visible !important; }
#webyayTunnel .fdn-weburl__input:focus{
  outline:none !important;
  border-color:#d4a017 !important;
}

/* the colour swatches need a real, unobstructed hit target */
#webyayTunnel input[type="color"].tunnel-color-picker{
  pointer-events:auto !important;
  position:relative !important;
  z-index:5 !important;
  cursor:pointer !important;
}
#webyayTunnel .tunnel-color-field__inputs,
#webyayTunnel .tunnel-color-field{ pointer-events:auto !important; }

/* The style headline was rendering all-lowercase (Dave 8/31). The TEXT was
   right all along - "Friendly style" - so my earlier check passed: textContent
   ignores text-transform. The band applies lowercase in CSS. Turn it off and
   the initial cap comes back, matching every other header. */
html body .tunnel-top__headline h2.is-style-headline,
html body .tunnel-top__headline h2.is-style-headline *,
html body [data-tunnel-headline].is-style-headline{
  text-transform:none !important;
}

/* ---- email options: matched type + a tick on the selected one (8/31) -----
   Both pills carry their label in <strong>, so they share size and weight.
   The selected one gets white type and a checkmark on the right, the same
   cue the style pills use. */
#webyayTunnel .tunnel-email-choice{
  position:relative !important;
  padding-right:42px !important;
}
#webyayTunnel .tunnel-email-choice strong{
  font-weight:400 !important;
  font-size:15px !important;
  letter-spacing:.01em !important;
}
#webyayTunnel .tunnel-email-choice.is-selected strong,
#webyayTunnel .tunnel-email-choice.is-active strong,
#webyayTunnel .tunnel-email-choice[aria-pressed="true"] strong,
#webyayTunnel .tunnel-email-choice.is-selected,
#webyayTunnel .tunnel-email-choice.is-active,
#webyayTunnel .tunnel-email-choice[aria-pressed="true"]{
  color:#fff !important;
}
/* the tick, right side, only when chosen */
#webyayTunnel .tunnel-email-choice::after{
  content:"";
  position:absolute;
  top:50%;
  right:18px;
  /* Dave 8/31: was far too big - matched to the payment-plan tick */
  width:10px;
  height:5.5px;
  margin-top:-4px;
  border-left:1.6px solid #fff;
  border-bottom:1.6px solid #fff;
  transform:rotate(-45deg);
  opacity:0;
  transition:opacity .16s ease;
}
#webyayTunnel .tunnel-email-choice.is-selected::after,
#webyayTunnel .tunnel-email-choice.is-active::after,
#webyayTunnel .tunnel-email-choice[aria-pressed="true"]::after{ opacity:1; }

/* ---- pin panel content to the top (Dave 8/31) ---------------------------
   The mid column was centring its content, so on a tall panel the header sat
   ~300px below the grey bar and the rest was pushed past the fold into a
   scrollbar. Start at the top with a modest, consistent gap instead. */
/* NB: an earlier attempt added padding here and made the gap WORSE - the
   space is not from centring, it is the card's own top padding plus the
   detail block's margin. Halve those instead. */
#webyayTunnel .tunnel-card{ padding-top:7px !important; }
#webyayTunnel .tunnel-detail{ margin-top:7px !important; }
#webyayTunnel .tunnel-card__eyebrow{ margin-top:8px !important; margin-bottom:5px !important; }
#webyayTunnel .tunnel-card__question{ margin-bottom:10px !important; }
#webyayTunnel .tunnel-card__stepnum{ margin-top:4px !important; margin-bottom:10px !important; }

/* the forms textarea was taller than it needs to be - 15% off */
#webyayTunnel [data-3tile-panel="forms"] textarea,
#webyayTunnel .tunnel-forms-flow textarea{
  height:var(--fdn-ta-h, auto) !important;
}

/* ---- the OK pill was clipped on the left (Dave 8/31) --------------------
   It animates larger than its resting size and the row had no room on that
   edge, so the throb got cut off. Give the row left padding and stop it
   clipping; the pill keeps its place, the growth has somewhere to go. */
#webyayTunnel .tunnel-3tile-ok-row{
  overflow:visible !important;
  /* [Dave 9/9] the 14px I put here to give the throb room pushed the OK out of
     line with the six tiles above it. Zero - the ring has room outside the row
     because the row's own overflow is open. */
  padding-left:0 !important;
}
#webyayTunnel .tunnel-3tile-ok{
  overflow:visible !important;
  transform-origin:center center !important;
}
/* (panel overflow left alone - opening it reintroduced sideways scroll) */
/* NB: opening .tunnel-detail's overflow brought horizontal scrolling back,
   which is worse. Keep it clipped and give the pill its room INSIDE the row
   instead (padding-left above), so the throb never reaches the edge. */

/* "Your foundation" eyebrow was jammed against the grey bar - 15px of air. */
#webyayTunnel .tunnel-card__eyebrow{ margin-top:23px !important; }

/* the Fast / Affordable / Gorgeous / Functional strip (Dave 8/31):
   words 10% darker, gold dividers dropped 2px to sit on the type's centre. */
#webyayTunnel .tunnel-mid__tagline-word{ color:#8b8f93 !important; }
#webyayTunnel .tunnel-mid__tagline-sep{ position:relative !important; top:2px !important; }

/* chat launcher: white glyph on the gold circle (Dave 8/31). The icon is
   stroke="currentColor", so setting color is all it takes. */
#wgChatBubble{ color:#fff !important; }
#wgChatBubble svg{ stroke:#fff !important; color:#fff !important; }

/* the gold tab marker over the current step: 3px taller, growing downward so
   its top edge stays on the divider and the labels do not move (Dave 8/31). */
/* It is .tunnel-active-indicator - a 2px absolutely-positioned bar pinned at
   top:0. Growing it downward leaves its top edge on the divider and never
   moves the labels. */
#webyayTunnel .tunnel-active-indicator{
  height:4px !important;
  top:0 !important;
  bottom:auto !important;
}

/* Send button in the chat widget: white type on the gold (Dave 8/31) */
#wgChatSend, #wgChatSend *{ color:#fff !important; }

/* ---- the topbar is invisible until you scroll (Dave 8/31) ---------------
   Nothing but the laptop and the price on first paint. The bar and its
   background fade in together once the page moves. Kept clickable only when
   visible, so an invisible bar can never eat a click on the hero. */
/* opacity is driven per-frame from the scroll position in foundations.js,
   so no CSS transition here - a transition would fight the scroll and make
   it lag. The gradual feel comes from the scroll mapping itself. */
html body .wg-topbar.fdn-topbar-auto{
  opacity:0 !important;
  pointer-events:none !important;
  transition:none !important;
  /* NB: will-change:opacity was here and it silently killed the backdrop
     blur - it promotes the bar to its own compositing layer, so there is
     nothing behind it left to sample. */
}
/* and the hero comes up 40px now that nothing sits above it. The template
   sets this at triple-class strength (html body section.hero.hero.hero), so
   match it or the rule never lands - the last value there is
   calc(170px + clamp(6px,2.4vw,42px)); take 40 off the fixed part. */
html body section.hero.hero.hero{
  padding-top:calc(113px + clamp(6px, 2.4vw, 42px)) !important;
}

/* "Your next clinic website starts here." 15% larger (Dave 8/31). Nothing else. */
html body .fdn-lead .fdn-lead__in{
  font-size:clamp(39px, 2.93vw, 47px) !important;
}

/* the lead-in above the hero price (Dave 8/31) */
#compare .comparison-price-tag .comparison-price-lead,
.comparison-price-tag .comparison-price-lead{
  display:block !important;
  margin:0 0 6px !important;
  font:300 clamp(13px, 1.05vw, 16px)/1.32 'Plus Jakarta Sans',system-ui,sans-serif !important;
  letter-spacing:.005em !important;
  color:#5b6169 !important;
  text-shadow:none !important;
}

/* ---- hero price block + laptop screen (Dave 8/31) -----------------------
   1. The whole price tag rides up 25px - the new lead-in pushed the block
      down into the phone below it. margin-top works here even though the
      element is absolutely positioned: it offsets from its `top`. */
#compare .comparison-price-tag,
.comparison-price-tag{ margin-top:-25px !important; }

/* 2. lead-in a step larger */
#compare .comparison-price-tag .comparison-price-lead,
.comparison-price-tag .comparison-price-lead{
  font-size:clamp(17px, 1.44vw, 22px) !important;
  margin-bottom:7px !important;
}

/* 3. NB: the white strip was in the scene artwork itself, not the iframe -
      pulling the frame up did nothing. Dave supplied a corrected scene
      image instead; this override is reverted. */
.screen.laptop-screen.after-screen{ overflow:hidden !important; }

/* tighten the gap between the intro copy and the eight style cards
   (Dave 8/31) - it was reading as a hole in the section. */
html body #foundations.fdn-grid{ margin-top:10px !important; }
/* the grid's own margin was not the driver - the intro block's bottom margin
   is. Trim it. */
html body #foundationsIntro.value-intro{ margin-bottom:28px !important; padding-bottom:0 !important; }

/* ---- phone scene fits the window, always centred (Dave 8/31) -------------
   The stage was sized to COVER (height clamped to at least 100vh), so on a
   short browser the bottom of the scene - and the phone with it - fell off
   the screen. Size it to CONTAIN instead: whichever of width or height runs
   out first decides, and the leftover is the black veil. The screen
   percentages are relative to the stage, so the phone stays registered. */
/* CORRECTION (Dave 8/31): I read this as "fit inside" and letterboxed it -
   wrong. It must COVER the window edge to edge, with whatever spills over
   cropped EQUALLY off the top and bottom, so the phone never drifts toward
   an edge and never falls off. max() on both axes = cover; centring the
   oversized stage inside an overflow:hidden parent = symmetric crop. */
html body .fdn-phone__stage{
  /* cover, but never so large that the phone itself gets cut: the screen is
     screen sits from 17.79% to 78.89% of the scene height, so the binding
     constraint is its TOP edge: a scene taller than ~155vh pushes
     the phone past the edges. In ordinary window shapes the cover value wins
     and the scene runs edge to edge; only in an extreme short-and-wide window
     does the cap bite, leaving a thin margin rather than a cropped phone. */
  width:min(max(100vw, calc(100vh * 1400 / 933)), calc(152vh * 1400 / 933)) !important;
  height:min(max(100vh, calc(100vw * 933 / 1400)), 152vh) !important;
  max-width:none !important;
  max-height:none !important;
  min-width:0 !important;
  min-height:0 !important;
  aspect-ratio:auto !important;
  margin:auto !important;
  flex:none !important;
}
html body .fdn-phone{
  display:grid !important;
  place-items:center !important;
  place-content:center !important;
  overflow:hidden !important;
}

/* ---- narrow windows: stop the hero text colliding with the laptop -------
   (Dave 8/31) At full width the lead block rides up 105px under the laptop
   and the price tag sits beside it. Once the column narrows, both land ON
   the laptop, and the enlarged headline runs off the right edge. Below
   1100px the lift is given back progressively and the headline is allowed
   to shrink to a size that actually fits the column. */
@media (max-width: 1100px){
  html body .lead.lead--below-compare.fdn-lead{ margin-top:-40px !important; }
  html body .fdn-lead .fdn-lead__in{ font-size:clamp(26px, 4.2vw, 39px) !important; }
  #compare .comparison-price-tag,
  .comparison-price-tag{ margin-top:0 !important; }
}
@media (max-width: 900px){
  html body .lead.lead--below-compare.fdn-lead{ margin-top:8px !important; }
  html body .fdn-lead .fdn-lead__in{ font-size:clamp(23px, 4.6vw, 32px) !important; }
  #compare .comparison-price-tag,
  .comparison-price-tag{ margin-top:6px !important; }
  #compare .comparison-price-tag .comparison-price-lead,
  .comparison-price-tag .comparison-price-lead{ font-size:clamp(12px, 1.7vw, 15px) !important; }
}
/* and the headline may never overflow its column at any width */
html body .fdn-lead .fdn-lead__in{
  max-width:100% !important;
  overflow-wrap:break-word !important;
  text-wrap:balance;
}

/* the lead block had a fixed width that outgrew narrow viewports and pushed
   the whole page into sideways scroll - cap it. */
html body .lead.lead--below-compare.fdn-lead{
  box-sizing:border-box !important;
  max-width:min(100%, calc(100vw - 48px)) !important;
}
/* and on a genuinely narrow window the price tag stops floating over the
   laptop and simply sits under the devices, centred. */
/* NB: an earlier attempt made this static below 950px. That dropped it into
   the flow and it landed on top of "Your next clinic website starts here."
   It stays absolutely positioned at every width; it just gets smaller. */
@media (max-width: 1000px){
  #compare .comparison-price-tag .comparison-price-lead,
  .comparison-price-tag .comparison-price-lead{
    font-size:clamp(11px, 1.5vw, 15px) !important;
    margin-bottom:4px !important;
  }
  #compare .comparison-price-tag strong,
  .comparison-price-tag strong{ font-size:clamp(22px, 3.4vw, 34px) !important; }
  #compare .comparison-price-tag em,
  .comparison-price-tag em{ font-size:clamp(9px, 1.1vw, 12px) !important; }
}
/* the lead block is offset inside .compare-layout, so capping it against the
   viewport still let it run past the right edge - cap the parent too, and
   clip the section so nothing can force sideways scroll. */
html body .compare-layout{ max-width:100% !important; box-sizing:border-box !important; }
html body section.hero{ overflow-x:clip !important; }

/* ---- rebuilt INCLUDED block (Dave 8/31) --------------------------------- */
/* the badge and the transition link share one row */
#webyayTunnel .fdn-included-row{
  display:flex !important;
  align-items:center !important;
  gap:14px !important;
  flex-wrap:wrap !important;
  margin:0 0 10px !important;
}
#webyayTunnel .fdn-included-row .tunnel-info-card__badge{ margin:0 !important; }

/* Transition Questions: no pill, just the words and a tucked-in plus */
#webyayTunnel .tunnel-transition-faq-btn.fdn-faq-plain{
  background:transparent !important;
  border:0 !important;
  border-radius:0 !important;
  padding:0 !important;
  margin:0 !important;
  width:auto !important;
  min-width:0 !important;
  height:auto !important;
  color:#5b6169 !important;
  font-weight:300 !important;
  box-shadow:none !important;
  display:inline-flex !important;
  align-items:center !important;
  gap:3px !important;
  cursor:pointer !important;
}
#webyayTunnel .tunnel-transition-faq-btn.fdn-faq-plain .tunnel-foundation-pill__plus{
  margin-left:1px !important;
  transform:translateX(-1px) !important;
  opacity:.85 !important;
}
#webyayTunnel .tunnel-transition-faq-btn.fdn-faq-plain:hover{
  background:transparent !important;
  color:#d4a017 !important;
}

/* the two new white pills sit in the grid like the other six */
#webyayTunnel .fdn-feature-pill{ text-align:center !important; justify-content:center !important; }

/* the address field is now the full-width row under the grid */
#webyayTunnel .fdn-weburl-row--full{
  display:block !important;
  width:100% !important;
}
#webyayTunnel .fdn-weburl-row--full .fdn-weburl__input{
  width:100% !important;
  grid-column:auto !important;
}

/* the feature modal reuses the FAQ shell, so it needs no new styling beyond
   making sure it sits above the tunnel */
.fdn-feature-modal{ z-index:100000 !important; }

/* at narrow widths the hero's clamp shrinks and the laptop rode up into the
   browser edge - give it a floor. */
@media (max-width: 1050px){
  html body section.hero.hero.hero{
    padding-top:calc(135px + clamp(6px, 2.4vw, 42px)) !important;
  }
}
/* below 950 the column is tight enough that the tag clipped the laptop -
   shrink it a touch more and lift it clear. */
@media (max-width: 950px){
  #compare .comparison-price-tag,
  .comparison-price-tag{ margin-top:-38px !important; }
  #compare .comparison-price-tag .comparison-price-lead,
  .comparison-price-tag .comparison-price-lead{ font-size:12px !important; }
  #compare .comparison-price-tag strong,
  .comparison-price-tag strong{ font-size:24px !important; }
}
/* under ~880 the devices fill the width and there is genuinely nowhere beside
   them for the tag - hide it there rather than let it sit on the laptop. The
   same price is stated in full a few hundred pixels further down the page. */
@media (max-width: 880px){
  #compare .comparison-price-tag,
  .comparison-price-tag{ display:none !important; }
}

/* ---- the pill grid stays 2 columns (Dave 8/31) --------------------------
   Adding the two longer labels let the auto-flow grid reflow into three
   columns and wrap the text onto three lines. Pin it: two columns, four
   rows, column-first order (that is how the original six were laid out),
   single-line labels at the original pill height. */
#webyayTunnel .tunnel-foundation-pills{
  grid-template-columns:1fr 1fr !important;
  grid-template-rows:repeat(4, auto) !important;
  grid-auto-flow:column !important;
  grid-auto-columns:0 !important;
}
#webyayTunnel .tunnel-foundation-pill{
  white-space:nowrap !important;
  min-height:0 !important;
  padding-left:12px !important;
  padding-right:10px !important;
}
#webyayTunnel .tunnel-foundation-pill.fdn-feature-pill{
  letter-spacing:-.01em !important;
}

/* the topbar reads as clear glass over the hero - give it a real frosted
   blur so the laptop behind it goes soft (Dave 8/31). */
html body .wg-topbar.fdn-topbar-auto{
  background:rgba(255,255,255,.72) !important;
  -webkit-backdrop-filter:blur(16px) saturate(1.25) !important;
  backdrop-filter:blur(16px) saturate(1.25) !important;
}
/* the price block drifted down toward the phone - lift it 28px (Dave 8/31) */
#compare .comparison-price-tag,
.comparison-price-tag{ margin-top:-53px !important; }
@media (max-width: 950px){
  #compare .comparison-price-tag,
  .comparison-price-tag{ margin-top:-66px !important; }
}
/* the drift is transform-driven; keep it smooth and never let it clip */
#foundations .fdn-card{ will-change:opacity; transition:opacity .18s linear; }
#foundations .fdn-card__monitor{ will-change:transform; }

/* the imagery popup's media column: a real looping clip on top, two stills
   beneath it (Dave 8/31 - play badges on a static jpeg were dishonest). */
#fdnExtraFeatureModal .tunnel-feature-modal__media.fdn-xf-media{
  background-image:none !important;
  background:#101112 !important;
  display:flex !important;
  flex-direction:column !important;
  gap:4px !important;
  padding:0 !important;
  overflow:hidden !important;
}
#fdnExtraFeatureModal .fdn-xf-video{
  width:100% !important;
  flex:1 1 62% !important;
  min-height:0 !important;
  object-fit:cover !important;
  display:block !important;
  background:#101112 !important;
}
#fdnExtraFeatureModal .fdn-xf-stills{
  flex:0 0 38% !important;
  display:grid !important;
  grid-template-rows:1fr 1fr !important;
  gap:4px !important;
  min-height:0 !important;
}
#fdnExtraFeatureModal .fdn-xf-stills img{
  width:100% !important;
  height:100% !important;
  object-fit:cover !important;
  display:block !important;
}
/* nudge the Transition Questions link: down 4, right 15 (Dave 8/31) */
#webyayTunnel .tunnel-transition-faq-btn.fdn-faq-plain{
  position:relative !important;
  top:4px !important;
  margin-left:15px !important;
}
/* the pill grid drifted away from the INCLUDED row - pull it back up 15px
   (the badge row's own bottom margin was doing it). */
/* was 17px, my fix took it to 2px - too far. Split it. */
#webyayTunnel .fdn-included-row{ margin-bottom:2px !important; }
#webyayTunnel .tunnel-foundation-pills{ margin-top:0 !important; }
/* the address field does not need to span both columns - two thirds, left
   aligned, deliberately staggered against the grid above (Dave 8/31) */
#webyayTunnel .fdn-weburl-row--full{
  display:block !important;
  width:100% !important;
}
#webyayTunnel .fdn-weburl-row--full .fdn-weburl__input{
  width:66% !important;
  margin-right:auto !important;
}

/* the whole INCLUDED block was crowding the price above it - drop it 25px
   (Dave 9/1) */
#webyayTunnel .fdn-included-row{ margin-top:15px !important;   /* Dave 9/2: 10px tighter to the price above */ }

/* Dave 9/1: the ring was three times fatter than the Start button's and the
   left + bottom of it were being clipped. .tunnel-detail is a scroll column
   (overflow-x:hidden / overflow-y:auto) whose box sits exactly on the field's
   left and bottom edges, so the ring had nowhere to paint. Give it 7px of
   paint room on those two sides and cancel the shift with a negative margin,
   so the content column lands in exactly the same place at every breakpoint. */
#webyayTunnel .tunnel-detail{
  width:auto !important;
  margin-left:-7px !important;
  padding-left:7px !important;
  padding-bottom:7px !important;
}

/* Dave 9/1: going from panel 1 to panel 2 the top gray band grew ~10px, which
   pushed the monitor down and shrank it - a visible jerk. Cause: panel 1's
   headline is PLAIN TEXT at the smaller style-name size (clamp .. 44px);
   every later panel's headline is an inline SVG at the template size
   (clamp .. 48px) whose box is 1.4em tall. Different box, different band
   height, everything below moves. Reserve the taller box on the headline at
   all times so the band is the same height on every panel. Text position is
   unchanged - the h2 only stops collapsing. */
#webyayTunnel .tunnel-top__headline h2{
  min-height:calc(1.4 * clamp(26px, 3.4vw, 48px)) !important;
}
@media (max-width: 767px){
  #webyayTunnel .tunnel-top__headline h2{
    min-height:calc(1.4 * clamp(31px, 8.3vw, 38px)) !important;
  }
}

/* Dave 9/1: the "Choose a look" lead was breaking to three lines with a
   two-word widow on the last one, which pushed the whole grid down. The
   block had room to spare (the column is ~1350px and the text was capped at
   850px), so widen the measure rather than shrink the type - it fits on two
   lines from 1024px up. text-wrap:pretty keeps a lone word off the last line
   at the narrow widths where two lines are not possible. */
#foundationsIntro p{ text-wrap:pretty; }
@media (min-width:1150px){
  #foundationsIntro p{
    width:min(1000px, 100%) !important;
    max-width:min(1000px, 100%) !important;
  }
}
@media (min-width:1024px) and (max-width:1149px){
  #foundationsIntro p{
    width:min(1000px, 100%) !important;
    max-width:min(1000px, 100%) !important;
    font-size:14px !important;
    line-height:1.55 !important;
  }
}

/* Dave 9/1: the chosen style card gets a small gold pill under its
   description - "Let's build it! ->" - that opens Start Project. Hidden on
   every card that is not the chosen one, so unselecting removes it. */
#foundations .fdn-card .fdn-build-btn{
  display:none;
}
#foundations .fdn-card.is-chosen .fdn-build-btn{
  display:inline-flex;
  align-items:center;
  gap:6px;
  grid-column:1 / -1;
  justify-self:center;
  /* the label has 10px of left padding and 2px of right, so a plain centre
     lands 4px right of the card's true middle - cancel it. */
  margin:11px 8px 2px 0;
  padding:6px 14px 7px;
  border:0;
  border-radius:999px;
  background:#EFAA15;
  color:#fff;
  font-family:"Plus Jakarta Sans",Arial,sans-serif;
  font-size:11.5px;
  font-weight:400;
  letter-spacing:.005em;
  line-height:1;
  cursor:pointer;
  transition:background .2s ease, transform .2s ease;
}
#foundations .fdn-card.is-chosen .fdn-build-btn:hover{
  background:#d4930c;
  transform:translateY(-1px);
}
#foundations .fdn-card.is-chosen .fdn-build-btn__arrow{
  font-size:12.5px;
  line-height:1;
  position:relative;
  top:-.5px;
  transition:transform .2s ease;
}
#foundations .fdn-card.is-chosen .fdn-build-btn:hover .fdn-build-btn__arrow{
  transform:translateX(2px);
}

/* Dave 9/1: give the build pill the same breathing ring as the address field
   in the tunnel - same box-shadow technique as the Start button. */
/* gold-on-charcoal reads far weaker than gold-on-white did in the tunnel,
   so this ring is opened up and brightened to actually be visible here. */
/* Dave 9/1 (round 2): good, but dial it back - ring 25% smaller and 25% more
   transparent so it reads as a hint rather than a flare. */
@keyframes fdnBuildPulse{
  0%   { box-shadow:0 0 0 0    rgba(239,170,21,.68); }
  45%  { box-shadow:0 0 0 4.5px rgba(239,170,21,.38); }
  80%  { box-shadow:0 0 0 9px  rgba(239,170,21,0); }
  100% { box-shadow:0 0 0 0    rgba(239,170,21,0); }
}
/* Dave 9/1: it should not pop in - fade it up over 1.5s when the style is
   switched on, then let the ring start breathing once it has arrived. */
@keyframes fdnBuildIn{
  from { opacity:0; }
  to   { opacity:1; }
}
#foundations .fdn-card.is-chosen .fdn-build-btn{
  animation:fdnBuildIn 1.5s cubic-bezier(.33,.0,.2,1) both,
            fdnBuildPulse 1.9s cubic-bezier(.22,.61,.36,1) 1.5s infinite;
}
/* the ring needs room to paint */
#foundations .fdn-card,
#foundations .fdn-card__label{ overflow:visible !important; }

/* ---- Design + Content: "That was easy! Next ->" ------------------------
   Dave 9/1: switching "pull from current site" on answers the whole panel,
   so confirm it under the field and move them along instead of leaving them
   parked on a screen with nothing left to do. */
/* Dave 9/1 (round 2): it must NEVER be on screen unless the toggle is on -
   visibility is driven by the row's own class, not just the hidden attribute,
   so a stale one can't survive a Back. It also sat 32px under the field (the
   row's 14px grid gap plus its own margin); pull it up tight underneath. And
   it takes the same ink as the field labels, not gold. */
#webyayTunnel .fdn-usecurrent__done{ display:none !important; }
#webyayTunnel .fdn-usecurrent.is-done .fdn-usecurrent__done{
  /* Dave 9/1 (round 3): in 25px from the field's left edge, a touch smaller,
     thinner and softer so it reads as a quiet confirmation. */
  margin:-10px 0 0 25px !important;   /* Dave 9/1: down 5px, it was crowding the field above */
  padding:0 !important;
  grid-column:2 / -1;
  display:inline-flex !important;
  align-items:center;
  gap:7px;
  font-size:12.5px !important;
  line-height:1.4 !important;
  font-weight:300 !important;
  letter-spacing:.01em;
  color:rgba(28,36,42,.62) !important;
  animation:fdnDoneIn .5s cubic-bezier(.33,0,.2,1) both;
}
@keyframes fdnDoneIn{
  from { opacity:0; transform:translateY(3px); }
  to   { opacity:1; transform:translateY(0); }
}
#webyayTunnel .fdn-usecurrent.is-done .fdn-usecurrent__done-arrow{
  font-size:14px;
  line-height:1;
  position:relative;
  /* the arrow glyph sits low in its em box - lift it 5px (Dave 9/1) */
  top:-3.5px;
  animation:fdnDoneArrow 1.05s ease-in-out infinite;
}
@keyframes fdnDoneArrow{
  0%,100% { transform:translateX(0); }
  50%     { transform:translateX(4px); }
}
#webyayTunnel .fdn-usecurrent.is-done .fdn-usecurrent__input{
  border-color:rgba(212,160,23,.85) !important;
}

/* the OK -> Next handoff, hidden behind a short fade of the right column */
#webyayTunnel .tunnel-track{ transition:opacity .2s ease; }
#webyayTunnel.is-fdn-handoff .tunnel-track{ opacity:0 !important; }

/* Dave 9/1: the review page's first line - the website itself - was showing
   only a sliver. The shared sheet pulls .tunnel-summary up 20px ("keep the
   review above the fold", from the sniper template), which on this page puts
   the first row 20px ABOVE .tunnel-detail's top edge - and that column clips.
   Zero it here. Measured after: the row sits fully inside, the checkout block
   still clears the bottom by 50px, and nothing has to scroll. */
#webyayTunnel .tunnel-summary{ margin-top:0 !important; }

/* ---- Design + Content: collapsible categories (Dave 9/1) ---------------
   Collapsed by default: only the label and its on/off switch show. The row
   is a 2-column grid, so the switch lands in column 2 row 1 and the control
   flows to column 2 row 2 - no change to where anything sits when open. */
#webyayTunnel .tunnel-3row.fdn-collapse{
  align-items:center !important;
}
#webyayTunnel .fdn-collapse .fdn-collapse__toggle{
  justify-self:start !important;
  align-self:center !important;
}
#webyayTunnel .fdn-collapse > .tunnel-3row__control{
  display:none !important;
}
#webyayTunnel .fdn-collapse.is-open > .tunnel-3row__control{
  display:block !important;
  /* Dave 9/1 (round 3): flush left with its own section header, not indented
     into the old label/control column. The label is the heading now, so the
     content sits directly under it and uses the whole width. */
  grid-column:1 / -1 !important;
  width:100% !important;
  min-width:0 !important;
  animation:fdnSectionIn .28s cubic-bezier(.33,0,.2,1) both;
}
@keyframes fdnSectionIn{
  from { opacity:0; transform:translateY(-4px); }
  to   { opacity:1; transform:translateY(0); }
}
/* the label reads as the section heading now */
#webyayTunnel .fdn-collapse > .tunnel-3row__label{
  /* [Dave 9/5] tapping the title opens the row now, so it reads as tappable */
  cursor:pointer;
}
/* each open section's own OK - small, quiet, folds the section back up */
#webyayTunnel .fdn-collapse__ok{
  display:none;
}
#webyayTunnel .fdn-collapse.is-open .fdn-collapse__ok{
  display:inline-flex !important;
  align-items:center;
  justify-content:center;
  margin:12px 0 2px !important;
  padding:6px 20px 7px !important;
  border:1px solid rgba(28,36,42,.18) !important;
  border-radius:999px !important;
  background:#fff !important;
  color:#1c242a !important;
  font-family:"Plus Jakarta Sans",Arial,sans-serif !important;
  font-size:12px !important;
  font-weight:400 !important;
  letter-spacing:.02em;
  line-height:1 !important;
  cursor:pointer;
  transition:background .18s ease, border-color .18s ease;
}
#webyayTunnel .fdn-collapse.is-open .fdn-collapse__ok:hover{
  background:#EFAA15 !important;
  border-color:#EFAA15 !important;
  color:#fff !important;
}
/* the reset pill was wrapping to two lines once the section folded/unfolded */
#webyayTunnel .fdn-color-reset{ white-space:nowrap !important; }

/* Dave 9/1: the tile OK pill carries a slate-gray attention ring
   (tunnelNewSitePulse, rgba(94,115,135,...)) that reads as a smudge behind
   the gold pill. Re-cut the same ring in the page's own gold so it matches
   the Start button and the build pill instead of fighting them. */
@keyframes fdnTileOkPulse{
  0%,100% { box-shadow:0 0 0 0   rgba(239,170,21,.42); }
  50%     { box-shadow:0 0 0 7px rgba(239,170,21,0); }
}
#webyayTunnel .tunnel-3tile-ok.is-pulsing,
#webyayTunnel .tunnel-3tile-ok{
  animation-name:fdnTileOkPulse !important;
}

/* ---- Design + Content: switches in one left column (Dave 9/1) ----------
   All five rows - the "pull from current site" shortcut and the four folded
   categories - put their switch in column 1 and their heading in column 2, so
   the switches line up and the headings share one indent. Column 2 takes the
   rest of the row, which is wider than the old fixed 316px content column, so
   every heading now holds a single line. */
#webyayTunnel .tunnel-3row.fdn-collapse{
  grid-template-columns:auto minmax(0,1fr) !important;
  align-items:center !important;
  column-gap:14px !important;
}
/* Dave 9/1: the shortcut row keeps its field ALONGSIDE the heading, all on
   one line - the heading may wrap to two lines to make room. Three columns:
   switch, heading, field. */
#webyayTunnel .tunnel-3row.fdn-usecurrent{
  grid-template-columns:auto auto minmax(0,1fr) !important;
  align-items:center !important;
  /* same gap as the folded rows so all five headings share one left edge */
  column-gap:14px !important;
}
#webyayTunnel .fdn-collapse > .tunnel-3row__label{
  grid-column:2 !important;
  grid-row:1 !important;
  white-space:nowrap !important;
  max-width:none !important;
}
#webyayTunnel .fdn-usecurrent > .tunnel-3row__label{
  grid-column:2 !important;
  grid-row:1 !important;
  white-space:normal !important;
  max-width:none !important;
}
#webyayTunnel .fdn-collapse > .fdn-collapse__toggle,
#webyayTunnel .fdn-usecurrent > .fdn-usecurrent__toggle{
  grid-column:1 !important;
  grid-row:1 !important;
  justify-self:start !important;
  align-self:center !important;
  margin:0 !important;
}
/* the open section's content sits under its heading, flush with it */
#webyayTunnel .fdn-collapse.is-open > .tunnel-3row__control{
  grid-column:2 / -1 !important;
  grid-row:2 !important;
}
/* the address field and its messages line up under the heading too */
#webyayTunnel .fdn-usecurrent > .fdn-usecurrent__control{
  grid-column:3 !important;
  grid-row:1 !important;
  display:block !important;
  margin:0 !important;
}
#webyayTunnel .fdn-usecurrent > .fdn-usecurrent__nudge,
#webyayTunnel .fdn-usecurrent > .fdn-usecurrent__done{
  grid-column:3 / -1 !important;
  grid-row:2 !important;
}
#webyayTunnel .fdn-usecurrent .fdn-usecurrent__input{
  width:100% !important;
}
/* the social intro reads better on a narrower measure (Dave 9/1) */
#webyayTunnel [data-3tile-panel="overall"] .tunnel-3tile-panel__intro{
  max-width:min(390px, 100%) !important;
}
/* Dave 9/1: nudge the style pill up 2px and right 10px. A transform rather
   than touching the percentages, so it stays anchored to the monitor art at
   every size and the offset is exact. */
#webyayTunnel .fdn-stylepick{ transform:translate(10px, -2px) !important; }

/* ---- "View <Style> style" pill inside the tunnel (Dave 9/1) ------------
   Sits on the monitor artwork, mirroring the style picker on the left, and
   opens the same full-screen preview the foundation cards use. */
/* Dave 9/1 (round 2): not a pill and not a mirror of the picker opposite it -
   plain gold text, ~20% smaller, 20px further right. Quiet on purpose. */
#webyayTunnel .fdn-tunnelview{
  position:absolute;
  z-index:8;
  top:84.9%;
  right:8.9%;
  transform:translate(10px, -2px);
  display:inline-flex;
  align-items:center;
  gap:5px;
  height:auto;
  margin:0;
  padding:6px 2px;
  border:0;
  border-radius:0;
  background:transparent;
  color:#d4a017;
  font-family:"Plus Jakarta Sans",Inter,ui-sans-serif,system-ui,sans-serif;
  font-size:10.5px;
  font-weight:400;
  letter-spacing:.015em;
  line-height:1;
  cursor:pointer;
  transition:color .18s ease;
}
#webyayTunnel .fdn-tunnelview:hover{
  background:transparent;
  border:0;
  color:#b07f0d;
}
#webyayTunnel .fdn-tunnelview__chev{
  font-size:13px;
  line-height:1;
  position:relative;
  top:-.5px;
  transition:transform .18s ease;
}
#webyayTunnel .fdn-tunnelview:hover .fdn-tunnelview__chev{ transform:translateX(2px); }

/* The tunnel paints far above the lightbox's normal stacking, so lift the
   whole preview above it while it is open FROM the tunnel. Relative order
   inside the group is preserved. */
html.fdn-lb-over-tunnel .fdn-scrim{ z-index:2147483597 !important; }
html.fdn-lb-over-tunnel .fdn-lightbox{ z-index:2147483598 !important; }
html.fdn-lb-over-tunnel .fdn-phone{ z-index:2147483599 !important; }
html.fdn-lb-over-tunnel .fdn-lightbox__close,
html.fdn-lb-over-tunnel .fdn-lightbox__device,
html.fdn-lb-over-tunnel .fdn-lightbox__choose,
html.fdn-lb-over-tunnel .fdn-lightbox__cursor,
html.fdn-lb-over-tunnel .fdn-phone__close{ z-index:2147483600 !important; }
/* Dave 9/1: keep the middle pill - it names the style and carries the tick,
   the same as it does from the foundation page. It is already their chosen
   style in here, so it renders in the ticked state and just closes. */
/* the monitor's downward nudge on narrow windows (set in foundations.js) */
#webyayTunnel .tunnel-intro__visual{
  --fdn-intro-drop:0px;
  transform:translateY(var(--fdn-intro-drop));
}
/* Below ~1100px the monitor is too narrow to carry both controls - the style
   picker and the "View X style" link land on top of each other. The picker is
   the one that does something you cannot do elsewhere, so it stays and the
   link steps aside at these widths. */
@media (max-width: 1099px){
  #webyayTunnel .fdn-tunnelview{ display:none !important; }
}

/* ---- "Let's figure this out later": centre the label (Dave 9/1) --------
   The text sat high in the pill. Grow the pill 4px UPWARD only - the extra
   height is cancelled by a matching negative top margin so the bottom edge
   never moves, and the matching top padding keeps the label exactly where
   it already was. Net effect: 4px more room above the text. */
#webyayTunnel .fdn-later-btn{
  height:39px !important;
  margin-top:-4px !important;
  padding-top:4px !important;
}

/* ---- select chevrons need breathing room (Dave 9/1) -------------------
   These were native selects, so the arrow was drawn by the browser hard
   against the right edge and no amount of padding could move it. Draw our
   own instead and set it 15px in, mirroring the text inset on the left. */
#webyayTunnel select.tunnel-page-panel__select,
#webyayTunnel .tunnel-3row__control select,
#webyayTunnel .tunnel-detail select{
  appearance:none !important;
  -webkit-appearance:none !important;
  -moz-appearance:none !important;
  background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='11' height='7' viewBox='0 0 11 7' fill='none'><path d='M1 1l4.5 4.5L10 1' stroke='%231c242a' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/></svg>") !important;
  background-repeat:no-repeat !important;
  background-position:right 15px center !important;
  padding-right:36px !important;
}

/* the tunnel top-bar mark: icon only, 15% larger, 50px right (Dave 9/2) */
#webyayTunnel .tunnel-top__logo{
  height:65.5px !important;      /* was 57px */
  width:auto !important;
  max-width:none !important;
  transform:translateX(50px) !important;
}

/* ---- "Back to checkout" (Dave 9/2) ------------------------------------
   Shown only while an Edit from the review is open, so a change never costs
   them the walk back through the steps in between. */
#webyayTunnel .fdn-backcheckout{
  display:none;
  position:absolute;
  right:28px;
  top:50%;
  transform:translateY(-50%);
  z-index:14;
  align-items:center;
  gap:8px;
  padding:9px 18px 10px;
  border:0;
  border-radius:999px;
  background:#EFAA15;
  color:#fff;
  font-family:"Plus Jakarta Sans",Inter,ui-sans-serif,system-ui,sans-serif;
  font-size:12.5px;
  font-weight:400;
  letter-spacing:.01em;
  line-height:1;
  cursor:pointer;
  transition:background .18s ease, transform .18s ease;
}
#webyayTunnel .fdn-backcheckout.is-on{ display:inline-flex; }
#webyayTunnel .fdn-backcheckout:hover{ background:#d4930c; }
@media (max-width: 900px){
  #webyayTunnel .fdn-backcheckout{ right:14px; font-size:11.5px; padding:8px 14px 9px; }
}

/* ---- the bottom estimate strip (Dave 9/2) -----------------------------
   Those amounts were reading as headlines - 19px and near-black - louder
   than the price they belong to. Smaller and mid gray. */
#webyayTunnel .estimate-breakdown .estimate-part strong{
  font-size:16px !important;
  color:#6a6b6d !important;
  font-weight:400 !important;
}

/* Close button up 10px (Dave 9/2) */
#webyayTunnel .tunnel-top__close{
  margin-top:4px !important;   /* was 14px */
}

/* Dave 9/2: the mid band's diagonal wash, 4% darker at the top-left corner
   and still pure white at the bottom-right. Was #efeff0 -> #fff.
   [Dave 9/7, TRIAL] another 4% on the top-left corner only, bottom-right left
   pure white: 229 x 0.96 = 220. He wants to see it and may want it back.
   REVERT = change rgb(220,220,222) below to rgb(229,229,231). One value. */
#webyayTunnel .tunnel-mid{
  background-image:linear-gradient(135deg, rgb(229,229,231) 0%, rgb(255,255,255) 100%) !important;
}

/* Dave 9/2: drop the "Briefly, what do you want on this page?" line from the
   Additional Pages panel - the content box below it already covers it. */
#webyayTunnel .tunnel-page-panel__field:has([data-tile-page-summary]){
  display:none !important;
}
#webyayTunnel .tunnel-page-panel__field.fdn-hide-summary{
  display:none !important;
}

/* ---- microphone in the chat widget (Dave 9/2) -------------------------- */
#wgChatForm .fdn-chat-mic{
  flex:0 0 auto;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  width:36px;
  height:36px;
  margin:0 8px 0 0;
  padding:0;
  border:1px solid rgba(28,36,42,.18);
  border-radius:999px;
  background:#fff;
  color:#6a6b6d;
  cursor:pointer;
  transition:background .18s ease, color .18s ease, border-color .18s ease;
}
#wgChatForm .fdn-chat-mic:hover{
  border-color:#EFAA15;
  color:#EFAA15;
}
#wgChatForm .fdn-chat-mic.is-live{
  background:#EFAA15;
  border-color:#EFAA15;
  color:#fff;
  animation:fdnMicPulse 1.5s ease-in-out infinite;
}
@keyframes fdnMicPulse{
  0%,100% { box-shadow:0 0 0 0 rgba(239,170,21,.55); }
  60%     { box-shadow:0 0 0 8px rgba(239,170,21,0); }
}

/* Dave 9/2: Login / Create Account and the Close button all up 6px together */
#webyayTunnel .tunnel-top__actions{
  transform:translateY(-6px) !important;
}

/* ================= panel 1: flat INCLUDED block (Dave 9/2) =============
   No pills. "Included:" is gold type, the eight items are plain text in two
   columns of four with a gold plus, hover turns the label gold. */
#webyayTunnel .fdn-included-row .tunnel-info-card__badge{
  background:transparent !important;
  border:0 !important;
  border-radius:0 !important;
  padding:0 !important;
  color:#EFAA15 !important;
  font-size:13px !important;
  font-weight:400 !important;
  letter-spacing:.06em !important;
  text-transform:uppercase !important;
}
#webyayTunnel .tunnel-foundation-pills{
  grid-template-columns:1fr 1fr !important;
  grid-template-rows:repeat(4, auto) !important;
  grid-auto-flow:column !important;
  gap:5px 26px !important;
  margin-top:8px !important;
}
#webyayTunnel .tunnel-foundation-pill{
  display:inline-flex !important;
  align-items:baseline !important;
  justify-content:flex-start !important;
  gap:7px !important;
  width:auto !important;
  min-width:0 !important;
  height:auto !important;
  margin:0 !important;
  padding:2px 0 !important;
  border:0 !important;
  border-radius:0 !important;
  background:transparent !important;
  box-shadow:none !important;
  color:#3a3f42 !important;
  font-family:"Plus Jakarta Sans",Inter,ui-sans-serif,system-ui,sans-serif !important;
  font-size:11.2px !important;   /* Dave 9/2: 20% down from 14px */
  font-weight:300 !important;
  line-height:1.6 !important;
  text-align:left !important;
  cursor:pointer;
  transition:color .16s ease;
}
#webyayTunnel .tunnel-foundation-pill:hover,
#webyayTunnel .tunnel-foundation-pill:focus-visible{
  background:transparent !important;
  border:0 !important;
  color:#EFAA15 !important;
  outline:none;
}
/* The template draws this plus as two little bars (::before + ::after), so
   adding a "+" character on top of it gave every row two. Keep the drawn one,
   colour it gold, and sit it in the line next to the words. */
#webyayTunnel .tunnel-foundation-pill .tunnel-foundation-pill__plus{
  position:relative !important;
  top:auto !important;
  right:auto !important;
  transform:none !important;
  display:inline-block !important;
  width:7px !important;
  height:7px !important;
  margin:0 0 0 1px !important;
  flex:0 0 auto !important;
  opacity:1 !important;
}
#webyayTunnel .tunnel-foundation-pill .tunnel-foundation-pill__plus::before,
#webyayTunnel .tunnel-foundation-pill .tunnel-foundation-pill__plus::after{
  background:#EFAA15 !important;
}
/* [Dave 9/8] "these + signs are too thick here, make them a bit thinner."
   The stroke is the only dimension that reads as weight - 1.3 -> 0.9px, a
   third off. The 7px arm length is untouched so they keep the same size. */
#webyayTunnel .tunnel-foundation-pill .tunnel-foundation-pill__plus::before{
  width:7px !important; height:0.9px !important;
}
#webyayTunnel .tunnel-foundation-pill .tunnel-foundation-pill__plus::after{
  width:0.9px !important; height:7px !important;
}

/* ---- the two fields, under a hairline ---- */
#webyayTunnel .fdn-contact-row{
  display:grid !important;
  grid-template-columns:1fr 1fr !important;
  gap:0 22px !important;
  /* Dave 9/2: 15px from the last row of items down to the rule */
  margin-top:15px !important;
  padding-top:18px !important;
  border-top:1px solid rgba(28,36,42,.14) !important;
}
#webyayTunnel .fdn-field{
  display:flex !important;
  flex-direction:column !important;
  gap:6px !important;
  min-width:0 !important;
}
#webyayTunnel .fdn-field__label{
  color:#EFAA15 !important;
  font-family:"Plus Jakarta Sans",Inter,ui-sans-serif,system-ui,sans-serif !important;
  font-size:11px !important;
  font-weight:400 !important;
  letter-spacing:.07em !important;
  text-transform:uppercase !important;
  line-height:1 !important;
}
#webyayTunnel .fdn-contact-row .fdn-weburl__input{
  width:100% !important;
  margin:0 !important;
  height:38px !important;
  padding:0 14px !important;
  border:1px solid rgba(28,36,42,.20) !important;
  border-radius:999px !important;
  background:#fff !important;
  font-family:"Plus Jakarta Sans",Inter,ui-sans-serif,system-ui,sans-serif !important;
  font-size:13.5px !important;
  font-weight:300 !important;
  color:#1c242a !important;
}
#webyayTunnel .fdn-contact-row .fdn-weburl__input::placeholder{
  color:rgba(28,36,42,.42) !important;
}

/* ---- Transition Questions, bottom right under the fields ---- */
#webyayTunnel .fdn-contact-foot{
  display:flex !important;
  justify-content:flex-end !important;
  margin-top:12px !important;
}
#webyayTunnel .fdn-contact-foot .tunnel-transition-faq-btn{
  position:static !important;
  top:auto !important;
  margin:0 !important;
  padding:0 !important;
  border:0 !important;
  background:transparent !important;
  color:#6a6b6d !important;
  font-size:13px !important;
  font-weight:300 !important;
  cursor:pointer;
  transition:color .16s ease;
}
#webyayTunnel .fdn-contact-foot .tunnel-transition-faq-btn:hover{
  color:#EFAA15 !important;
}
#webyayTunnel .fdn-contact-foot .tunnel-foundation-pill__plus::before{
  content:" >";
  color:inherit;
}
/* the transition button's old inline plus has no job in the new footer */
#webyayTunnel .fdn-contact-foot .tunnel-foundation-pill__plus{ display:none !important; }
#webyayTunnel .fdn-contact-foot .tunnel-transition-faq-btn::after{ content:" \203A"; }

/* ---- final spacing + weight on the flat INCLUDED list (Dave 9/2) ------- */
#webyayTunnel .tunnel-foundation-pills.tunnel-foundation-pills{
  margin-top:0 !important;      /* half the old gap under "Included:" */
  margin-bottom:0 !important;   /* the rule's own margin sets the distance */
}
#webyayTunnel .fdn-contact-row.fdn-contact-row{
  margin-top:8px !important;    /* lands 15px from the last item to the rule */
}
/* something downstream was re-asserting 400 - out-specify it */
#webyayTunnel .tunnel-foundation-pill.tunnel-foundation-pill{
  font-weight:300 !important;
}

/* Transition Questions matches the "View X style" link exactly (Dave 9/2) */
#webyayTunnel .fdn-contact-foot .tunnel-transition-faq-btn{
  color:#d4a017 !important;
  font-family:"Plus Jakarta Sans",Inter,ui-sans-serif,system-ui,sans-serif !important;
  font-size:10.5px !important;
  font-weight:400 !important;
  letter-spacing:.015em !important;
  line-height:1 !important;
}
#webyayTunnel .fdn-contact-foot .tunnel-transition-faq-btn:hover{
  color:#b07f0d !important;
}
#webyayTunnel .fdn-contact-foot .tunnel-transition-faq-btn::after{
  content:" \203A";
  font-size:13px;
  line-height:1;
}

/* ---- tighter leading + the plus turns to an X on hover (Dave 9/2) ------ */
#webyayTunnel .tunnel-foundation-pill.tunnel-foundation-pill{
  line-height:1.36 !important;   /* ~15% less than 1.6 */
  padding:1px 0 !important;
}
#webyayTunnel .tunnel-foundation-pills.tunnel-foundation-pills{
  row-gap:4px !important;
}
#webyayTunnel .tunnel-foundation-pill:hover .tunnel-foundation-pill__plus,
#webyayTunnel .tunnel-foundation-pill:focus-visible .tunnel-foundation-pill__plus{
  transform:rotate(45deg) !important;
}

/* ---- left padding inside the contact pills + nudge the link (Dave 9/2) -- */
#webyayTunnel .fdn-contact-row .fdn-weburl__input,
#webyayTunnel .fdn-contact-row input.fdn-weburl__input{
  padding:0 14px 0 20px !important;
  text-indent:0 !important;
}
#webyayTunnel .fdn-contact-foot .tunnel-transition-faq-btn{
  position:relative !important;
  top:-6px !important;
  right:20px !important;
}

/* ---- both contact fields identical, block shifted left 10px (Dave 9/2) ---
   The URL field was carrying inline !important metrics copied off a pill
   (matchPillMetrics), which is why it ran smaller, shorter and flush-left
   while the email looked right. JS now strips those; this locks both to one
   spec so they can never drift apart again. */
#webyayTunnel .fdn-contact-row .fdn-field > input,
#webyayTunnel .fdn-contact-row input#fdnWebAddress,
#webyayTunnel .fdn-contact-row input#fdnEmailAddress{
  box-sizing:border-box !important;
  display:block !important;
  width:100% !important;
  margin:0 !important;
  height:38px !important;
  padding:0 16px 0 20px !important;
  text-indent:0 !important;
  border:1px solid rgba(28,36,42,.20) !important;
  border-radius:999px !important;
  background:#fff !important;
  font-family:"Plus Jakarta Sans",Inter,ui-sans-serif,system-ui,sans-serif !important;
  font-size:13.5px !important;
  font-weight:300 !important;
  line-height:36px !important;
  letter-spacing:.01em !important;
  color:#1c242a !important;
}
/* Chrome tints an autofilled field (the mint fill on the email). Paint it back
   to white so the two pills always read as one pair. */
#webyayTunnel .fdn-contact-row input:-webkit-autofill,
#webyayTunnel .fdn-contact-row input:-webkit-autofill:hover,
#webyayTunnel .fdn-contact-row input:-webkit-autofill:focus{
  -webkit-box-shadow:0 0 0 40px #fff inset !important;
  box-shadow:0 0 0 40px #fff inset !important;
  -webkit-text-fill-color:#1c242a !important;
  caret-color:#1c242a;
  transition:background-color 9999s ease-out 0s;
}
/* Dave 9/2: back 10px right - the block left-aligns with the 8 items above */
#webyayTunnel .fdn-contact-row.fdn-contact-row,
#webyayTunnel .fdn-contact-foot.fdn-contact-foot{
  position:relative !important;
  left:0 !important;
}

/* Dave 9/2: the contact pill's left edge was being shaved by .tunnel-detail's
   scroll box. The paint room above was 7px, which the 10px shift used up.
   Widen it to 16px - the negative margin cancels it, so nothing moves. */
#webyayTunnel .tunnel-detail{
  margin-left:-16px !important;
  padding-left:16px !important;
}
#webyayTunnel .fdn-contact-row,
#webyayTunnel .fdn-contact-row .fdn-field,
#webyayTunnel .fdn-included-row,
#webyayTunnel .tunnel-info-card{ overflow:visible !important; }

/* Dave 9/2: both contact pills 10% smaller - box and type together */
#webyayTunnel .fdn-contact-row .fdn-field > input,
#webyayTunnel .fdn-contact-row input#fdnWebAddress,
#webyayTunnel .fdn-contact-row input#fdnEmailAddress{
  height:34px !important;
  line-height:32px !important;
  font-size:12.2px !important;
  padding:0 15px 0 18px !important;
}

/* Dave 9/2: 12px less air between the price and INCLUDED: */
#webyayTunnel .fdn-included-row{ margin-top:3px !important; }

/* Dave 9/2: "Pull from current site" answers everything at once - the four
   manual choices below it are a separate proposition. Same hairline we use
   above the contact fields on the foundation panel. */
#webyayTunnel [data-3tile-panel="overall"] .fdn-usecurrent{
  border-bottom:1px solid rgba(28,36,42,.14) !important;
  padding-bottom:13px !important;
  margin-bottom:13px !important;
}

/* Dave 9/2: Reset fonts - identical pill to Reset colors, its own note */
#webyayTunnel .fdn-font-reset::after{
  content:"Reset to the original fonts for this style";
}

/* Dave 9/2: one Reset fonts button only, bottom of the panel, right of OK */
#webyayTunnel .tunnel-3tile-ok-row--font{
  position:relative !important;
}
#webyayTunnel .fdn-font-reset{
  position:absolute !important;
  right:0 !important;
  top:50% !important;
  transform:translateY(-50%) !important;
  margin:0 !important;
}

/* Dave 9/2: touch-action:none here was mine, and it can intersect with the
   style site's own touch-action across the frame boundary in Chrome/Firefox.
   The overlay does not need it - keep only the scroll-chaining guard. */
.fdn-phone{ overscroll-behavior:contain !important; }
.fdn-phone__screen{ cursor:grab; }
.fdn-phone__screen:active{ cursor:grabbing; }

/* ---- hero device framing (Dave 9/3) --------------------------------------
   Two problems, both from overrides that were written when the framed site
   was Fabrizio on ANOTHER domain. It is now /styles/light/ on this one.

   PHONE: the 408px width was added to shove a scrollbar gutter past the mask.
   A 390px mobile viewport uses OVERLAY scrollbars, which reserve zero layout
   width - so there was no gutter to hide, and those extra 18px were just
   real content being pushed off the right edge. That is the lavender button
   running off the side. Back to a true 390px iPhone viewport: 390 x .559 =
   218.01px, which is exactly the mask width, so the whole page is visible
   with its own margins intact and nothing skewed.

   LAPTOP: the site's y=0 lands flush against the bezel, so its header had no
   air above the logo. Nudge the render down ~10 painted pixels (13 x .7583)
   so the top of the site clears the frame. */
#heroCompare .phone-screen.after-screen iframe,
.phone-screen.after-screen iframe{
  width:390px !important;
  transform:scale(.559) !important;
  transform-origin:0 0 !important;
}
.laptop-screen.after-screen iframe{
  width:1464px !important;
  transform:scale(.7583) translateY(13px) !important;
  transform-origin:0 0 !important;
}

/* ---- device toggle: two icons, not a pill (Dave 9/3) --------------------
   "more symbolic and clean, less buttonie." The plate, the label and the
   fixed width all come off; what is left is a monitor and a phone sitting
   side by side, centred over the two pills below. The view you are in is
   gold, the other is grey, and hovering the grey one previews gold. Wins
   over the shared pill block by coming last in the file. */
.fdn-lightbox__device{
  width:136px !important;
  min-width:136px !important;
  height:28px !important;
  padding:0 !important;
  gap:14px !important;
  background:transparent !important;
  border:0 !important;
  border-radius:0 !important;
  justify-content:center !important;
  transition:opacity .2s ease !important;
  bottom:153px !important;
}
.fdn-lightbox__device:hover{
  background:transparent !important;
  transform:none !important;
}
.fdn-lightbox__device:focus-visible{
  outline:1px solid rgba(212,160,23,.75) !important;
  outline-offset:4px !important;
}
.fdn-lightbox__device .fdn-dev-ico{
  display:inline-flex !important;
  align-items:center;
  justify-content:center;
  line-height:0;
  padding:2px;
  color:#b4b8bd;
  cursor:pointer;
  transition:color .16s ease;
}
/* the view you are in */
.fdn-lightbox__device:not(.is-mobile) .fdn-dev-ico[data-dev="desktop"],
.fdn-lightbox__device.is-mobile      .fdn-dev-ico[data-dev="mobile"]{
  color:#d4a017;
}
/* hovering the other one previews it */
.fdn-lightbox__device:not(.is-mobile) .fdn-dev-ico[data-dev="mobile"]:hover,
.fdn-lightbox__device.is-mobile      .fdn-dev-ico[data-dev="desktop"]:hover{
  color:#d4a017;
}
@media (max-width:760px){
  .fdn-lightbox__device{
    width:156px !important; min-width:156px !important;
    bottom:168px !important;
  }
}

/* ---- the control rail (Dave 9/3) ---------------------------------------
   "something iconic like that for the 2 buttons below it, and maybe have a
   translucent background behind them for them to read ok (embedded/bleeding
   on right browser border)."

   So the three pills become four glyphs - monitor, phone, check, arrow -
   stacked in one frosted plate that is rounded on the left and runs straight
   off the right edge of the window, like a control tucked into the browser
   chrome. Grey until you are on it or in it; gold when it is yours. The words
   are not gone, they slide out to the left on hover, so nothing is a guess.
   Everything here comes last in the file on purpose - it has to win over the
   old pill block above. */
.fdn-rail{
  position:fixed !important;
  right:0 !important;
  bottom:78px !important;
  z-index:10000 !important;
  display:flex !important;
  flex-direction:column;
  align-items:center;
  box-sizing:border-box;
  padding:11px 16px 11px 14px;
  border-radius:16px 0 0 16px;
  background:rgba(18,23,29,.65);
  -webkit-backdrop-filter:blur(16px) saturate(1.3);
  backdrop-filter:blur(16px) saturate(1.3);
  opacity:0;
  visibility:hidden;
  transition:opacity .22s ease, visibility .22s ease;
}
.fdn-rail.is-on{ opacity:1; visibility:visible; }

/* strip every trace of the old pill off the three buttons */
.fdn-rail .fdn-lightbox__device,
.fdn-rail .fdn-lightbox__choose,
.fdn-rail .fdn-lightbox__close,
#webyayShotgun .fdn-rail .fdn-lightbox__close{
  position:relative !important;
  right:auto !important; left:auto !important;
  top:auto !important; bottom:auto !important;
  width:auto !important; min-width:0 !important; height:auto !important;
  margin:0 !important; padding:0 !important;
  border:0 !important; border-radius:0 !important;
  background:transparent !important;
  opacity:1 !important; visibility:visible !important;
  display:flex !important;
  align-items:center; justify-content:center;
  gap:14px !important;
  transform:none !important;
  box-shadow:none !important;
  transition:none !important;
  cursor:pointer !important;
}
.fdn-rail .fdn-lightbox__device:hover,
.fdn-rail .fdn-lightbox__choose:hover,
.fdn-rail .fdn-lightbox__close:hover{
  background:transparent !important;
  transform:none !important;
}
.fdn-rail button:focus-visible{
  outline:1px solid rgba(212,160,23,.75) !important;
  outline-offset:4px !important;
}

/* hairline between the rows. The reset above zeroes border and margin at
   (0,2,0) - and (1,2,0) for Back - so this has to be addressed by id to win,
   not just placed later. */
#fdnRail > #fdnChoose,
#fdnRail > #fdnClose{
  border-top:1px solid rgba(255,255,255,.17) !important;
  margin-top:9px !important;
  padding-top:9px !important;
  align-self:stretch !important;
}

/* the glyphs */
.fdn-rail .fdn-dev-ico,
.fdn-rail .fdn-rail__ico{
  display:inline-flex !important;
  align-items:center; justify-content:center;
  line-height:0;
  padding:1px;
  /* Dave 9/3: 5% lighter again - at .65 the plate is darker, so the grey can
     lift and the unselected icon + back arrow read better against it. */
  color:#d8dce1;
  cursor:pointer;
  transition:color .16s ease;
}
/* the view you are in */
.fdn-rail .fdn-lightbox__device:not(.is-mobile) .fdn-dev-ico[data-dev="desktop"],
.fdn-rail .fdn-lightbox__device.is-mobile      .fdn-dev-ico[data-dev="mobile"]{
  color:#d4a017;
}
/* hovering the other one previews it */
.fdn-rail .fdn-lightbox__device:not(.is-mobile) .fdn-dev-ico[data-dev="mobile"]:hover,
.fdn-rail .fdn-lightbox__device.is-mobile      .fdn-dev-ico[data-dev="desktop"]:hover{
  color:#d4a017;
}
.fdn-rail .fdn-lightbox__choose:hover .fdn-rail__ico,
.fdn-rail .fdn-lightbox__close:hover  .fdn-rail__ico{ color:#d4a017; }
/* already theirs: the check sits gold without being hovered */
.fdn-rail .fdn-lightbox__choose.is-chosen .fdn-rail__ico{ color:#d4a017; }

/* the word, sliding out to the left */
.fdn-rail .fdn-rail__tip{
  position:absolute !important;
  right:calc(100% + 21px);
  top:50%;
  transform:translateY(-50%) translateX(5px);
  white-space:nowrap;
  height:23px;
  padding:0 11px;
  border-radius:999px;
  background:rgba(18,23,29,.72);
  -webkit-backdrop-filter:blur(14px) saturate(1.3);
  backdrop-filter:blur(14px) saturate(1.3);
  color:#fff !important;
  font:300 11px/23px 'Plus Jakarta Sans',system-ui,sans-serif !important;
  letter-spacing:.02em;
  opacity:0;
  pointer-events:none;
  transition:opacity .16s ease, transform .16s ease;
}
.fdn-rail .fdn-lightbox__choose:hover .fdn-rail__tip,
.fdn-rail .fdn-lightbox__close:hover  .fdn-rail__tip,
.fdn-rail .fdn-dev-ico[data-dev="desktop"]:hover ~ .fdn-rail__tip[data-for="desktop"],
.fdn-rail .fdn-dev-ico[data-dev="mobile"]:hover  ~ .fdn-rail__tip[data-for="mobile"]{
  opacity:1;
  transform:translateY(-50%) translateX(0);
}

/* lift with the rest of the preview when it opens over the tunnel */
html.fdn-lb-over-tunnel .fdn-rail{ z-index:2147483600 !important; }

@media (max-width:760px){
  .fdn-rail{
    bottom:64px !important;
    padding:10px 13px 10px 11px;
    border-radius:14px 0 0 14px;
  }
  .fdn-rail .fdn-rail__tip{ right:calc(100% + 16px); }
}

/* ---- no scrollbar on the landing page itself (Dave 9/3) -----------------
   "I just think it's not necessary to have it, and it definitely takes away
   from the aesthetics." The page still scrolls exactly as it did - wheel,
   trackpad, keys, touch - the trough is just not painted. Applied to the
   shotgun page only; the eight style sites get theirs stripped by the
   injection in foundations.js. */
html, body{
  scrollbar-width:none !important;
  -ms-overflow-style:none !important;
}
html::-webkit-scrollbar,
body::-webkit-scrollbar{
  width:0 !important;
  height:0 !important;
  display:none !important;
}
/* the tunnel's own scrolling panes too */
#webyayTunnel *{ scrollbar-width:none !important; }
#webyayTunnel *::-webkit-scrollbar{ width:0 !important; height:0 !important; display:none !important; }

/* ---- the two-second word after "Let's figure this out later" is pressed,
   in place of the modal that used to ask for an email we already have. */
.fdn-later-toast{
  position:fixed !important;
  left:50% !important;
  top:50% !important;
  transform:translate(-50%,-50%) scale(.96) !important;
  z-index:2147483601 !important;
  max-width:min(430px, calc(100vw - 44px)) !important;
  box-sizing:border-box !important;
  padding:19px 26px !important;
  border-radius:14px !important;
  /* [Dave 9/7] "make the background mid grey not black." */
  background:rgba(88,93,99,.94) !important;
  -webkit-backdrop-filter:blur(16px) saturate(1.3) !important;
  backdrop-filter:blur(16px) saturate(1.3) !important;
  color:#fff !important;
  font:300 14px/1.55 'Plus Jakarta Sans',system-ui,sans-serif !important;
  letter-spacing:.01em !important;
  text-align:center !important;
  opacity:0 !important;
  visibility:hidden !important;
  pointer-events:none !important;
  transition:opacity .18s ease, transform .18s ease, visibility .18s ease !important;
}
.fdn-later-toast.is-on{
  opacity:1 !important;
  visibility:visible !important;
  transform:translate(-50%,-50%) scale(1) !important;
}

/* ---- the lead block's measure (Dave 9/3) --------------------------------
   "this text block just exploded... bleeding at the edge of the right page.
   Please make that text block narrower... the left side would remain with the
   same margin."

   Cause: the cap added earlier to stop sideways scroll on narrow windows -
   max-width:min(100%, calc(100vw - 48px)) at (0,3,0)+html body - outranked
   the 80ch measure set on .fdn-lead, so on any window wider than ~700px the
   block simply grew with the viewport. At 1440 that is a 1392px box and a
   ~175-character line. The narrow-window protection is still wanted, so keep
   it and put a real ceiling beside it.

   920px is not arbitrary: the headline tops out at 47px, needs 760px to stay
   on one line, and the block carries ~138px of horizontal padding - 920 leaves
   ~780px of content, so it never wraps at any width. The paragraphs are capped
   tighter again, at a readable measure. Left padding untouched. */
html body .lead.lead--below-compare.fdn-lead{
  max-width:min(920px, calc(100vw - 48px)) !important;
}
html body .lead.lead--below-compare.fdn-lead p{
  max-width:740px !important;
}
@media (max-width:900px){
  html body .lead.lead--below-compare.fdn-lead p{ max-width:100% !important; }
}

/* a modal we are taking over must never paint, not even for one frame */
#webyayShotgun .tunnel-pdf-modal.fdn-suppressed,
.tunnel-pdf-modal.fdn-suppressed{
  opacity:0 !important;
  visibility:hidden !important;
  pointer-events:none !important;
  transition:none !important;
}

/* ---- "more below" cue inside the tunnel (Dave 9/3) ----------------------
   Replaces the thin scrollbars that were removed: a circled down arrow at the
   bottom of whichever pane actually overflows. No shadow - a hairline ring and
   a solid white fill do the separating instead. Fades out at the end of the
   scroll, and a slow bob keeps it noticeable without being a nuisance. */
.fdn-scroll-cue{
  position:fixed !important;
  z-index:2147483599 !important;
  transform:translate(-50%,0) !important;
  width:30px !important;
  height:30px !important;
  padding:0 !important;
  display:inline-flex !important;
  align-items:center !important;
  justify-content:center !important;
  border:1px solid rgba(28,36,42,.16) !important;
  border-radius:999px !important;
  background:#fff !important;
  color:rgba(28,36,42,.62) !important;
  box-shadow:none !important;
  filter:none !important;
  cursor:pointer !important;
  opacity:0;
  visibility:hidden;
  pointer-events:none;
  /* Dave 9/3: it was snapping off. The arrival can stay quick; the leaving
     is what he sees, so opacity eases out over 1.1s and visibility waits for
     it. (Two transition lists, because visibility must not interpolate.) */
  transition:opacity 1.1s ease, visibility 0s linear 1.1s, color .16s ease,
             border-color .16s ease, background .16s ease !important;
}
.fdn-scroll-cue.is-on{
  opacity:1;
  visibility:visible;
  pointer-events:auto;
  transition:opacity .3s ease, visibility 0s linear 0s, color .16s ease,
             border-color .16s ease, background .16s ease !important;
}
.fdn-scroll-cue:hover{
  background:#d4a017 !important;
  border-color:#d4a017 !important;
  color:#fff !important;
}
.fdn-scroll-cue:focus-visible{
  outline:2px solid rgba(212,160,23,.8) !important;
  outline-offset:2px !important;
}

/* Dave 9/3: "it needs to have a downward motion" - not a bob. The glyph
   enters just above centre, travels down through the circle and fades as it
   goes, then restarts from the top. One direction only, so it reads as "keep
   going down" rather than something twitching in place. The circle itself
   never moves, which keeps the animation off the property the show/hide fade
   is using. */
.fdn-scroll-cue .fdn-cue-ink{
  display:inline-flex;
  line-height:0;
  will-change:transform, opacity;
}
.fdn-scroll-cue.is-on .fdn-cue-ink{
  animation:fdnCueDrift 1.9s cubic-bezier(.36,0,.5,1) infinite;
}
.fdn-scroll-cue:hover .fdn-cue-ink{
  animation-play-state:paused;
  opacity:1;
  transform:none;
}
@keyframes fdnCueDrift{
  /* Dave 9/3: travel trimmed ~20% (12px -> 9.6px) - the drift should read,
     not perform. */
  0%   { transform:translateY(-4px);   opacity:0; }
  22%  { opacity:1; }
  62%  { opacity:1; }
  100% { transform:translateY(5.6px);  opacity:0; }
}
@media (prefers-reduced-motion: reduce){
  .fdn-scroll-cue.is-on .fdn-cue-ink{ animation:none; opacity:1; transform:none; }
}

/* ---- unselected = concept, selected = real (Dave 9/3) ------------------
   "unselected is the concept view, which is an SVG outline of the monitor and
   not a photograph of the monitor... when they select it, the actual photo of
   the monitor with a silver base and black bezel fades into place."

   So the ghosted photograph is gone. Three layers now live in every card and
   only their opacities move:

       state              outline   photo (silver)
       idle, unselected     12%          0
       hover, unselected    50%          0
       chosen                0          100%

   The outline traces the silver monitor's own alpha channel, so it lands
   exactly on the photo it replaces - same 587x435 box, same silhouette, plus
   the bezel line at the screen opening. Pure white; the card sets the mood.
   Everything cross-fades - nothing snaps. */
.fdn-card__frame--outline{
  opacity:.12 !important;
  z-index:2 !important;
  transition:opacity .45s ease !important;
}
.fdn-card__monitor:hover .fdn-card__frame--outline{ opacity:.5 !important; }
.fdn-card.is-chosen .fdn-card__frame--outline,
.fdn-card.is-chosen .fdn-card__monitor:hover .fdn-card__frame--outline{ opacity:0 !important; }

/* the photograph is now selection-only - no longer a hover state */
.fdn-card__frame--dark,
.fdn-card__monitor:hover .fdn-card__frame--dark,
.fdn-card.is-chosen .fdn-card__frame--dark{ opacity:0 !important; }

.fdn-card__frame--silver,
.fdn-card__monitor:hover .fdn-card__frame--silver{ opacity:0 !important; }
.fdn-card.is-chosen .fdn-card__frame--silver,
.fdn-card.is-chosen .fdn-card__monitor:hover .fdn-card__frame--silver{
  opacity:1 !important;
  transition:opacity .5s ease !important;
}

/* ---- tighter under the monitor + outline levels (Dave 9/3) --------------
   "the space between the bottom of the monitor and the content below it
   should be about half of what you have... they all have to be cohesive."
   One rule, so all eight move together. Measured: art-bottom to name-top was
   20px (14px label margin + 2px leading + ~4px of transparent PNG below the
   base). Halving the visible gap means a 4px margin, not 7 - the other 6px
   are baked into the artwork and the type. */
#foundations .fdn-card__label,
.fdn-card__label{ margin-top:clamp(3px,.3vw,5px) !important; }

/* outline levels: idle 12% -> 20%, hover 50% -> 40% */
.fdn-card__frame--outline{ opacity:.20 !important; }
.fdn-card__monitor:hover .fdn-card__frame--outline{ opacity:.40 !important; }
.fdn-card.is-chosen .fdn-card__frame--outline,
.fdn-card.is-chosen .fdn-card__monitor:hover .fdn-card__frame--outline{ opacity:0 !important; }

/* Dave 9/3: "when you click the toggle... have it fade in about half a second
   slower, a little more gradual." The photograph now takes 1s (was .5s) on a
   slow-start curve, and the outline takes .7s to clear so the two genuinely
   cross-fade instead of one vanishing before the other lands. Fading OUT on
   unselect stays quicker - going back to concept should feel immediate. */
.fdn-card.is-chosen .fdn-card__frame--silver,
.fdn-card.is-chosen .fdn-card__monitor:hover .fdn-card__frame--silver{
  transition:opacity 1s cubic-bezier(.35,0,.25,1) !important;
}
.fdn-card.is-chosen .fdn-card__frame--outline,
.fdn-card.is-chosen .fdn-card__monitor:hover .fdn-card__frame--outline{
  transition:opacity .7s cubic-bezier(.35,0,.25,1) !important;
}

/* ---- tighten the label stack (Dave 9/3) ---------------------------------
   "Move the Let's build it button closer to the sentence above it by six
   pixels, and move the sentence that explains the style up about four pixels
   on all eight." Both are single rules, so the eight stay in step.
   desc margin-top 3px -> -1px; build-btn margin-top 11px -> 5px. */
#foundations .fdn-card__desc,
.fdn-card__desc{ margin-top:-1px !important; }

#foundations .fdn-card.is-chosen .fdn-build-btn{
  margin-top:5px !important;
}

/* ---- lead block: wider measure, lifted (Dave 9/3) -----------------------
   "make the text block about 30 pixels wider... and move that header and all
   that content and everything below it up by 30 pixels."
   Paragraphs 740 -> 770 (the block itself already allows ~782 of content, so
   this only spends room that was already there - the right edge moves out,
   the left is untouched). Block lifted 30px: margin-top -90 -> -120. */
html body .lead.lead--below-compare.fdn-lead p{
  max-width:770px !important;
}
html body .lead.lead--below-compare.fdn-lead{
  margin-top:-120px !important;
}

/* ---- hover: hold still, name the style (Dave 9/3) ----------------------
   "on hover I would like them to stay exactly where they are in position and
   in size." The 6px lift is off - only the outline brightens now. The hover
   label names the actual style ("View Boutique style") instead of the generic
   "View Site Style"; the text itself is set per card in index.html. */
.fdn-card:hover .fdn-card__monitor,
#foundations .fdn-card:hover .fdn-card__monitor{
  transform:none !important;
}

/* ---- both lead blocks 60px further in (Dave 9/3) ------------------------
   "Increase left margin for this text content by 60 pixels." The screenshot
   spans BOTH blocks - the light hero lead and the dark "Choose a look" intro -
   and they are deliberately flush with each other (see the 8/26 note above),
   so they move together or the alignment breaks. 90px -> 150px on each.

   The lead block's cap grows by the same 60 (920 -> 980) so the content keeps
   its full 780px width - otherwise the extra padding would eat into the
   measure and wrap the headline onto two lines. */
#foundationsIntro{ padding-left:150px !important; }
html body .lead.lead--below-compare.fdn-lead{
  padding-left:150px !important;
  max-width:min(980px, calc(100vw - 48px)) !important;
}

/* ---- selected style name in brand gold (Dave 9/3, trying it) ------------
   #EFAA15 - the same gold as the toggle it sits beside and the "Let's build
   it!" pill below, so the three read as one signal instead of three. Only the
   chosen card; every other name stays #f6f1e8. Easy to pull back out. */
#foundations .fdn-card.is-chosen .fdn-card__name,
.fdn-card.is-chosen .fdn-card__name{ color:#EFAA15 !important; }

/* ---- half the run-out under the lead (Dave 9/3) -------------------------
   "half as much space between this text and the black background below it."
   Measured 73px from the bottom of "Explore the foundations..." to where the
   light section ends and the dark body shows through: 43px of slack inside
   .compare-layout plus the hero's own 30px padding-bottom. Take the padding
   to zero and pull the section up the rest of the way. */
#webyayShotgun section.hero#compare,
html body section.hero#compare{
  padding-bottom:0 !important;
}

/* outline on hover: 40% -> 32% (Dave 9/3, 8% less) */
.fdn-card__monitor:hover .fdn-card__frame--outline{ opacity:.32 !important; }

/* ---- everything above was written for the desktop layout (Dave 9/3) ------
   "you have all the text margin enormous... you decided to do it on the iPhone
   for some reason." Correct - the 150px left padding and the 980/770 measures
   were meant for the wide layout and had no business firing on a phone. Scope
   them: below 900px both blocks go back to a normal phone inset and the caps
   come off entirely. */
@media (max-width:900px){
  #foundationsIntro{ padding-left:22px !important; padding-right:22px !important; }
  html body .lead.lead--below-compare.fdn-lead{
    padding-left:22px !important;
    padding-right:22px !important;
    max-width:100% !important;
  }
  html body .lead.lead--below-compare.fdn-lead p{ max-width:100% !important; }
}

/* ---- lift the phone mockup on mobile (Dave 9/3) -------------------------
   "the whole thing needs to move way up so the top of the iPhone is about
   15px from the top." The hero carried 144px of padding-top on a phone while
   also being pulled up 64px under the sticky topbar, leaving the mockup
   sitting 143px down with nothing above it. 80px puts the frame ~15px under
   the 64px topbar, which is as high as it can go without sliding beneath it. */
@media (max-width:900px){
  html body section.hero.hero.hero{ padding-top:80px !important; }
}

/* ---- Dave's own SVGs, finally in (9/3) ----------------------------------
   The two files never survived the upload as loose .svg - they arrived zipped.
   Path data is his, untouched; only the plumbing below is mine.

   The card outline (dave-desktop-outline.svg?v=4) has a 267.13 x 199.652 viewBox
   against the photo's 587 x 435 - close but not identical - so it is mapped
   corner to corner with object-fit:fill rather than letterboxed by contain,
   which is what keeps it registered on the photograph it cross-fades to. */
.fdn-card__frame--outline{ object-fit:fill !important; }

/* The rail glyphs are his phone and monitor, split into one file each and
   painted with mask-image so they inherit currentColor - that is what lets the
   active one go gold and the other stay grey. */
.fdn-rail .fdn-dev-glyph{
  display:block;
  /* Dave 9/4 pm: monitor +15%, phone -10%. This was applied in the phone query
     only, so the desktop rail kept the old 23/14 - his screenshot caught it.
     The sizes live on the base rule now, so both breakpoints get them. */
  width:26.5px;
  height:26.5px;
  background:currentColor;
  -webkit-mask-repeat:no-repeat; mask-repeat:no-repeat;
  -webkit-mask-position:center;  mask-position:center;
  -webkit-mask-size:contain;     mask-size:contain;
}
.fdn-rail .fdn-dev-glyph--desktop{
  -webkit-mask-image:url("assets/img/dave-icon-monitor.svg");
  mask-image:url("assets/img/dave-icon-monitor.svg");
}
.fdn-rail .fdn-dev-glyph--phone{
  width:12.6px;
  height:20.7px;
  -webkit-mask-image:url("assets/img/dave-icon-phone.svg");
  mask-image:url("assets/img/dave-icon-phone.svg");
}

/* ---- fit the screenshot to Dave's frame, not the other way round --------
   His outline is the design, so it does not get edited. What moves is the
   screenshot inside it. His body runs x 7.37..262.54 and y 5.77..161.36 in a
   267.13 x 199.652 viewBox; an 8-unit inset on every side puts the shot dead
   centre with an equal bezel all round. Expressed as percentages because the
   outline is mapped corner-to-corner onto the same box. */
.fdn-card__screen{
  left:5.754% !important;
  top:6.897% !important;
  width:89.531% !important;
  height:69.917% !important;
}

/* ==========================================================================
   MOBILE ONLY (Dave 9/3). Everything in this block is inside a max-width
   query - the desktop layout is not touched by any of it.
   ========================================================================== */

/* the line break in "Choose a look. / We make it yours." exists in the markup
   but only paints on a phone */
.fdn-h2__mobr{ display:none; }

@media (max-width:900px){
  /* 1. phone mockup up 40px (hero padding-top 80 -> 40) */
  html body section.hero.hero.hero{ padding-top:40px !important; }

  /* 2. and everything under the mockup back down 40px. The lead carries
        -120px of negative top margin from the desktop rule; +40 of that
        here lands the copy 40px lower than it sits now. */
  html body .lead.lead--below-compare.fdn-lead{ margin-top:-40px !important; }

  /* 3. no sideways movement, at all */
  html, body{
    overflow-x:hidden !important;
    max-width:100% !important;
    overscroll-behavior-x:none !important;
  }
  #webyayShotgun, main{ overflow-x:clip !important; max-width:100% !important; }

  /* 4. "Choose a look." / "We make it yours." on two lines */
  .fdn-h2__mobr{ display:inline !important; }
  html body .fdn-h2{ text-wrap:initial !important; }

  /* 5. the eight style toggles 25% bigger - 34x19 -> 42x24, knob 15 -> 19,
        and the travel grows with it so the ON state still lands flush. */
  #foundations .fdn-toggle{
    width:42px !important;
    height:24px !important;
    border-radius:24px !important;
  }
  #foundations .fdn-toggle .fdn-toggle__knob{
    width:19px !important;
    height:19px !important;
    top:2.5px !important;
    left:2.5px !important;
  }
  #foundations .fdn-toggle[aria-pressed="true"] .fdn-toggle__knob{
    transform:translateX(18px) !important;
  }
}

/* ---- tunnel top bar, phone only (Dave 9/3) ------------------------------
   "move the WG icon down 12px, the Login / Create Account text down 10px, the
   Close button down 15px - mobile view only, don't affect desktop."
   translate rather than margin so nothing around them reflows. */
@media (max-width:900px){
  #webyayTunnel .tunnel-top__logo{
    /* Dave 9/3: 15% smaller (65.5 -> 55.7px) and up 8px, so the 12px drop from
       earlier today becomes 4px. Mobile only - desktop keeps 65.5px. */
    height:55.7px !important;
    transform:translateX(50px) translateY(4px) !important;
  }
  #webyayTunnel .tunnel-top__auth-links,
  #webyayTunnel .tunnel-top__greeting{
    transform:translateY(10px) !important;
  }
  #webyayTunnel .tunnel-top__close{
    transform:translateY(15px) !important;
  }
}

/* and belt-and-braces: the mockup clips its own contents no matter what the
   iframe's transform is doing */
.mobile-phone-screen,
.mobile-phone-after{
  overflow:hidden !important;
  contain:paint !important;
}
.mobile-phone-after iframe{ transform-origin:0 0 !important; }

/* ---- breathing room under the sub-header, phone only (Dave 9/3) ---------
   "way more padding between the bottom of this sub-header and the black
   background below it - at least 20px, on mobile only." It measured 6px.
   28px gives the 20+ he asked for with a little margin. Desktop keeps its
   own 43px run-out from the rule above - this only fires under 900px. */
@media (max-width:900px){
  html body section.hero#compare,
  #webyayShotgun section.hero#compare{
    padding-bottom:28px !important;
  }
}

/* ---- desktop view inside a monitor, on a phone (Dave 9/3) ---------------
   Only ever built and shown on a phone; on desktop the preview is already
   full-screen and this never appears. */
.fdn-deskshell{
  position:fixed;
  left:50%;
  top:50%;
  transform:translate(-50%,-50%);
  z-index:9997;
  opacity:0;
  visibility:hidden;
  pointer-events:none;
  transition:opacity .3s ease, visibility .3s ease;
}
.fdn-deskshell.is-on{ opacity:1; visibility:visible; }
.fdn-deskshell__frame{
  position:absolute; inset:0; width:100%; height:100%;
  object-fit:contain; display:block;
}
/* the site sits above the black slab of the monitor art, below its bezel */
.fdn-lightbox.is-navstrip .fdn-deskshell{ display:none; }

/* ---- no scroll cue on a phone (Dave 9/3) --------------------------------
   Scrolling is the phone's primary gesture - nobody needs telling. The cue
   earns its place on desktop, where a bounded pane inside a scrolling page is
   genuinely ambiguous about which one the wheel will move. Desktop untouched. */
@media (max-width:900px){
  .fdn-scroll-cue,
  .fdn-scroll-cue.is-on{
    display:none !important;
    animation:none !important;
  }
}

/* ---- Close button +15%, phone only (Dave 9/3) --------------------------
   Scoped to mobile because that is the view in the screenshot and the rest of
   this top bar's adjustments today were mobile-only. Mobile base is
   10px/8px 18px; +15% gives 11.5px type and 9px 21px padding. Desktop keeps
   its 11px / 10px 22px untouched. */
@media (max-width:900px){
  #webyayTunnel .tunnel-top__close{
    font-size:11.5px !important;
    padding:9px 21px !important;
    border-radius:999px !important;
  }
}

/* the tunnel's monitor is the tap target on a phone - show it is live */
@media (max-width:900px){
  #webyayTunnel .tunnel-intro__screen,
  #webyayTunnel .tunnel-intro__mask,
  #webyayTunnel .tunnel-intro__device{
    cursor:pointer !important;
    -webkit-tap-highlight-color:transparent;
  }
}

/* ---- tunnel switches, phone only (Dave 9/3) -----------------------------
   "at least 15% larger on mobile, it is too tiny, my finger doesn't work on
   them." Two separate problems, so two fixes.

   Size: 34x19 -> 44x25 (+29% wide), knob 15 -> 20, travel grown to match.

   Target: a 25px-tall control is under half Apple's 44px minimum, which is
   why a fingertip misses even when the aim is right. The ::after below throws
   an invisible 44x44 pad around each switch - the finger gets a real target
   while the visible pill stays the size it looks. Zero layout change.
   Scoped to the tunnel and to phones; the eight style toggles were handled
   separately, and desktop is untouched. */
@media (max-width:900px){
  #webyayTunnel .fdn-toggle{
    width:44px !important;
    height:25px !important;
    border-radius:25px !important;
    position:relative !important;
    overflow:visible !important;
  }
  #webyayTunnel .fdn-toggle .fdn-toggle__knob{
    width:20px !important;
    height:20px !important;
    top:2.5px !important;
    left:2.5px !important;
  }
  #webyayTunnel .fdn-toggle[aria-pressed="true"] .fdn-toggle__knob{
    transform:translateX(19px) !important;
  }
  #webyayTunnel .fdn-toggle::after{
    content:"";
    position:absolute;
    left:50%; top:50%;
    width:44px; height:44px;
    transform:translate(-50%,-50%);
    border-radius:50%;
  }
}

/* ---- the tunnel monitor is a picture, not a live site (Dave 9/3) --------
   "if I click certain buttons it just toggles instantly to a client URL I
   never clicked on." The address bar showed /styles/traditional/?no_track=1 -
   that is this monitor's own iframe src.

   That iframe carries NO sandbox attribute and is same-origin, so a tap that
   lands inside it is a real tap on a real website: its nav links, its buttons,
   its "Request a visit". On desktop the mask sits over it and nobody notices.
   On a phone - especially now the monitor is a tap target - a fingertip goes
   straight through to the live page underneath and follows whatever it hits.

   pointer-events:none turns it back into what it is meant to be: a picture.
   Every tap on the monitor now reaches our own handler, which opens the
   proper full-screen preview with the rail and a way back. Phones only;
   desktop scroll/interaction inside that frame is unchanged. */
@media (max-width:900px){
  #webyayTunnel .tunnel-intro__screen iframe,
  #webyayTunnel [data-tunnel-proposed-site-frame],
  #webyayTunnel .tunnel-mid__preview iframe,
  #webyayTunnel .tunnel-monitor__screen iframe{
    pointer-events:none !important;
    touch-action:none !important;
  }
  #webyayTunnel .tunnel-intro__screen,
  #webyayTunnel .tunnel-intro__mask{
    pointer-events:auto !important;
  }
}

/* Same treatment for every OTHER device mockup on a phone. The template has
   two competing rules for the hero phone (pointer-events:none in one place,
   auto in another) - whichever wins, a tap must never reach the live site
   inside a thumbnail. The full-screen preview frames are excluded: those ARE
   meant to be used, and they are sandboxed without allow-top-navigation so
   they cannot take the tab with them. */
@media (max-width:900px){
  .mobile-phone-after iframe,
  .after-screen iframe,
  .phone-screen iframe,
  .laptop-screen iframe,
  .plan-modal-preview__screen iframe,
  .fdn-card__screen iframe{
    pointer-events:none !important;
    touch-action:none !important;
  }
  /* the two real previews stay interactive */
  #fdnLightboxFrame,
  #fdnPhoneFrame{
    pointer-events:auto !important;
    touch-action:auto !important;
  }
}

/* ---- the eight style switches need a thumb-sized target (Dave 9/3) ------
   "six or seven touches to change one." Two causes, both fixed: the guard
   above was swallowing taps that landed on a switch (see foundations.js), and
   the switch itself is 42x24 with no padding around it - well under the 44px
   a fingertip actually needs. Same invisible 44x44 pad the tunnel switches
   got. Visible pill unchanged, layout unchanged, phones only. */
@media (max-width:900px){
  #foundations .fdn-toggle{
    position:relative !important;
    overflow:visible !important;
    z-index:7 !important;
  }
  #foundations .fdn-toggle::after{
    content:"";
    position:absolute;
    left:50%; top:50%;
    width:52px; height:48px;
    transform:translate(-50%,-50%);
    border-radius:26px;
  }
  /* and nothing above it may intercept that pad */
  #foundations .fdn-card__label{ position:relative; z-index:8 !important; }
}

/* ---- "Let's build it!" +20%, phone only (Dave 9/3) ---------------------- */
@media (max-width:900px){
  #foundations .fdn-card.is-chosen .fdn-build-btn{
    font-size:13.8px !important;
    padding:7px 17px 8px !important;
    gap:7px !important;
  }
  #foundations .fdn-card.is-chosen .fdn-build-btn svg,
  #foundations .fdn-card.is-chosen .fdn-build-btn .fdn-build-btn__arrow{
    transform:scale(1.2) !important;
  }
}

/* And a hard second gate in CSS: the little monitor presentation can only
   ever paint on a device with a coarse pointer. Even if the JS above were
   wrong again, a mouse-driven browser cannot show it. (Dave 9/3) */
@media (hover: hover) and (pointer: fine){
  .fdn-deskshell,
  .fdn-deskshell.is-on{ display:none !important; }
}


/* ---- the iMac shell: TOUCH DEVICES ONLY (Dave 9/3) ---------------------
   Hidden by default, everywhere. It can only paint inside the coarse-pointer
   query below - a mouse-driven browser at ANY width will never render it,
   which is the second of the two gates protecting desktop. */
.fdn-deskshell,
.fdn-deskshell.is-on,
#fdnDeskShell{ display:none !important; }

@media (pointer: coarse) and (max-width: 900px){
  /* the id is required here: the "off" rule above lists #fdnDeskShell, and an
     id out-ranks a class no matter which comes later in the file. */
  #fdnDeskShell.fdn-deskshell{
    display:block !important;
    position:fixed;
    left:50%; top:50%;
    transform:translate(-50%,-50%);
    z-index:9997;
    opacity:0;
    visibility:hidden;
    pointer-events:none;
    transition:opacity .3s ease, visibility .3s ease;
  }
  #fdnDeskShell.fdn-deskshell.is-on{
    display:block !important;
    opacity:1;
    visibility:visible;
  }
  .fdn-deskshell__frame{
    position:absolute; inset:0; width:100%; height:100%;
    object-fit:contain; display:block;
  }
  /* black behind the monitor while the desktop view is showing */
  .fdn-lightbox{ background:#000 !important; }
  /* the hand-held phone scene is a desktop idea - never on a phone */
  .fdn-phone,
  .fdn-phone.is-on{ display:none !important; }
}

/* and on a phone no thumbnail frame is touchable at all - the font examples
   and the two hero device frames were missing from the earlier list */
@media (max-width:900px){
  #fontExampleFrameDesktop,
  #fontExampleFrameMobile,
  #fontExampleFrameMobileFull,
  .compare-main iframe,
  .comparison-card iframe,
  .tunnel-mid__preview iframe{
    pointer-events:none !important;
    touch-action:none !important;
  }
}

/* ---- stop iOS zooming the page on every field (Dave 9/3) ----------------
   "The screen blows up when I hit Pull from current site on my phone."
   Not a crash - iOS Safari AUTO-ZOOMS the whole page whenever focus lands on
   a text field whose font-size is under 16px, and 70 of the fields on this
   page are 12-15px. Tapping that switch focuses the URL field, the keyboard
   comes up, and Safari scales the layout to make the small text legible.
   It has done this since iOS 5 and it cannot be turned off from the viewport
   tag (maximum-scale has been ignored since iOS 10) - the only real fix is to
   stop giving it a reason: 16px on anything focusable, phones only.
   Fields grow slightly to carry the larger text; nothing else moves. */
@media (max-width:900px){
  input[type="text"], input[type="email"], input[type="url"],
  input[type="tel"], input[type="number"], input[type="search"],
  input[type="password"], input:not([type]), textarea, select,
  /* the social URL fields carry their own id-level size, so name them */
  #webyayTunnel input[id^="social"],
  #webyayShotgun input[id^="social"],
  input[id^="social"]{
    font-size:16px !important;
  }
  #webyayTunnel .fdn-contact-row .fdn-field > input,
  #webyayTunnel .fdn-contact-row input#fdnWebAddress,
  #webyayTunnel .fdn-contact-row input#fdnEmailAddress,
  #webyayTunnel .fdn-usecurrent__input{
    height:42px !important;
    line-height:40px !important;
  }
  #webyayTunnel select.tunnel-page-panel__select,
  #webyayTunnel .tunnel-3row__control select,
  #webyayTunnel .tunnel-detail select{
    height:42px !important;
  }
}

/* The social URL fields are held at 13px by
   `.start-modal .social-url-field input{font-size:13px !important}` in the
   template - higher specificity than any of the 16px rules, including the
   template's own. So they still triggered the iOS zoom. Out-specify it.
   (Dave 9/3) */
@media (max-width:900px){
  html body .start-modal .social-url-field input,
  html body .social-url-field input,
  html body input[id^="social"]{
    font-size:16px !important;
  }
}

/* ---- two spacing tweaks inside the tunnel, PHONE ONLY (Dave 9/3) --------
   1. The gap between the panel header and the price measured 15px; halved.
   2. The panel content sat hard up under the monitor - everything from the
      heading down moves 20px lower. Applied to the heading, so the copy,
      the choices and the OK button all follow it in normal flow.
   Both inside the phone query; desktop keeps its own spacing. */
@media (max-width:900px){
  #webyayTunnel .tunnel-total__amount{ margin-top:8px !important; }
  #webyayTunnel .tunnel-card__question{ margin-top:20px !important; }
}

/* ---- Email Services: folded sections (Dave 9/3) ------------------------
   Same shape as the Design + Content rows - switch in column one, heading in
   column two, body folded underneath - so the two panels read as one system.
   Applies on desktop AND mobile, which is what he asked for here. */
#webyayTunnel .tunnel-payment-option.fdn-ecollapse{
  display:grid !important;
  grid-template-columns:auto minmax(0,1fr) !important;
  align-items:center !important;
  column-gap:14px !important;
  margin:0 0 14px !important;
  padding:0 !important;
  border:0 !important;
  background:none !important;
}
/* the original pill still does the work - it just does not show */
#webyayTunnel .fdn-ecollapse .tunnel-email-choice{ display:none !important; }

#webyayTunnel .fdn-ecollapse > .fdn-ecollapse__toggle{
  grid-column:1 !important; grid-row:1 !important;
  justify-self:start !important; align-self:center !important;
  margin:0 !important;
}
#webyayTunnel .fdn-ecollapse > .fdn-ecollapse__label{
  grid-column:2 !important; grid-row:1 !important;
  font-family:"Plus Jakarta Sans",Arial,sans-serif !important;
  font-size:14px !important;
  font-weight:400 !important;
  color:#1c242a !important;
  line-height:1.3 !important;
}
#webyayTunnel .fdn-ecollapse > .fdn-ecollapse__body{
  display:none !important;
  grid-column:2 / -1 !important;
  grid-row:2 !important;
  width:100% !important;
  min-width:0 !important;
}
#webyayTunnel .fdn-ecollapse.is-open > .fdn-ecollapse__body{
  display:block !important;
  animation:fdnSectionIn .28s cubic-bezier(.33,0,.2,1) both;
}
#webyayTunnel .fdn-ecollapse .tunnel-payment-caption{
  margin:6px 0 0 !important;
  display:block !important;
}
/* the fold-back OK, identical to the Design + Content one */
#webyayTunnel .fdn-ecollapse__ok{ display:none; }
#webyayTunnel .fdn-ecollapse.is-open .fdn-ecollapse__ok{
  display:inline-flex !important;
  align-items:center; justify-content:center;
  margin:12px 0 2px !important;
  padding:6px 20px 7px !important;
  border:1px solid rgba(28,36,42,.18) !important;
  border-radius:999px !important;
  background:#fff !important;
  font:400 11.5px/1 "Plus Jakarta Sans",Arial,sans-serif !important;
  color:#1c242a !important;
  cursor:pointer !important;
}
#webyayTunnel .fdn-ecollapse.is-open .fdn-ecollapse__ok:hover{
  background:#EFAA15 !important; border-color:#EFAA15 !important; color:#fff !important;
}

/* ---- MOBILE ONLY: the step header was crashing into the monitor (Dave 9/4)
   "The header is so high it's touching the monitor above it... needs at
    least 20 pixels of breathing room... it was perfect before."

   Two separate things, both phones only, desktop untouched:

   1. Real space under the monitor before the step heading starts. The
      heading, its "reset" arrow and the sub-line all sit in the detail
      column, so the gap goes on the column itself rather than on each
      heading - that way it holds on every step (What do you need?, Design +
      Content, Fonts, Email Services) instead of only the ones I happen to
      name.

   2. The style pill moves to the right side so it stops competing with the
      heading for the left edge, and up 2px. It is absolutely placed against
      the monitor artwork, so right/left are percentages of the same box. */
@media (max-width: 900px){
  #webyayTunnel .tunnel-intro__visual,
  #webyayTunnel .tunnel-mid__preview{
    margin-bottom: 22px !important;
  }
  #webyayTunnel .tunnel-detail,
  #webyayTunnel .tunnel-card__body,
  #webyayTunnel .tunnel-intro__info{
    padding-top: 4px !important;
  }

  /* the pill: right-hand side of the monitor, 2px higher */
  #webyayTunnel .fdn-stylepick{
    left: auto !important;
    right: 6.5% !important;
    top: 84.9% !important;
    transform: translateY(-2px) !important;
  }
}

/* ---- MOBILE ONLY: expanded collapse rows must use the full column (Dave 9/4)
   "When I expand them the sentence gets pushed over to the right" - the copy
   was rendering as a one-character-wide vertical strip at the edge of the
   screen.

   Cause: the folded row is a two-column grid (switch | label), and the body
   is placed with grid-column:2/-1. On a 390px phone that second track has
   almost nothing left after the switch and the gap, so any long line inside
   the body gets squeezed into a sliver and wraps one letter at a time.

   On a phone there is no room for a two-column row anyway. Flex instead:
   switch and label share line one, and the body and its OK button each take
   the full width of the card on their own line. Grid-column / grid-row are
   simply ignored in a flex container, so nothing has to be un-set.
   Desktop keeps the grid exactly as it is. */
@media (max-width: 900px){
  #webyayTunnel .tunnel-payment-option.fdn-ecollapse,
  #webyayTunnel .tunnel-3row.fdn-collapse{
    display: flex !important;
    flex-wrap: wrap !important;
    align-items: center !important;
    gap: 0 12px !important;
    width: 100% !important;
    max-width: 100% !important;
    min-width: 0 !important;
  }
  #webyayTunnel .fdn-ecollapse > .fdn-ecollapse__toggle,
  #webyayTunnel .fdn-collapse > .fdn-collapse__toggle{
    flex: 0 0 auto !important;
  }
  #webyayTunnel .fdn-ecollapse > .fdn-ecollapse__label,
  #webyayTunnel .fdn-collapse > .tunnel-3row__label{
    flex: 1 1 auto !important;
    min-width: 0 !important;
  }
  #webyayTunnel .fdn-ecollapse > .fdn-ecollapse__body,
  #webyayTunnel .fdn-ecollapse > .fdn-ecollapse__ok,
  #webyayTunnel .fdn-collapse > .fdn-collapse__body,
  #webyayTunnel .fdn-collapse > .fdn-collapse__ok,
  #webyayTunnel .fdn-collapse > .tunnel-3row__control{
    flex: 0 0 100% !important;
    width: 100% !important;
    max-width: 100% !important;
    min-width: 0 !important;
    margin-top: 12px !important;
  }
  /* and nothing inside the body may be narrower than the card */
  #webyayTunnel .fdn-ecollapse .tunnel-payment-caption,
  #webyayTunnel .fdn-ecollapse [data-tunnel-email-addresses],
  #webyayTunnel .fdn-ecollapse .tunnel-email-address-row,
  #webyayTunnel .fdn-collapse .tunnel-3row__control > *{
    width: 100% !important;
    max-width: 100% !important;
    min-width: 0 !important;
    writing-mode: horizontal-tb !important;
  }
}

/* ---- MOBILE ONLY: the step number and the header block (Dave 9/4) ---------
   Asked for on 01 and again on 03, so it goes on every step rather than any
   one of them: the little numbered badge drops 10px, and the header and
   everything under it comes up 20px. Two separate moves, which is why the
   number is nudged on its own and the gap it leaves is taken back off the
   block below it rather than being cancelled out. Phones only. */
@media (max-width: 900px){
  /* the number moves with a transform, not a margin, so it shifts on its own
     and nothing below it is dragged along - 01, 03 and 04 all want the number
     down and only some of them want the content moved. */
  #webyayTunnel .tunnel-card__stepnum{
    transform: translateY(10px) !important;
  }
  /* ...and the 20px comes off the header ONLY where the header follows the
     number directly (01, 03). On steps that carry an eyebrow between the two
     (04 "Review and/or confirm") the spacing is already right, so this simply
     does not match and that step is left alone. */
  #webyayTunnel .tunnel-card__stepnum + .tunnel-card__question,
  #webyayTunnel .tunnel-card__stepnum + .tunnel-detail__heading{
    margin-top: -20px !important;
  }
}

/* ---- MOBILE ONLY: Dave's desk scene replaces the floating iMac (9/4) -------
   "Replace that floating iMac on a black background with this image that
    covers the entire screen, and pose the HTML frame so it looks real."

   The shell stops being a small centred box and becomes the whole viewport;
   the photograph fills it with object-fit:cover and foundations.js works out
   exactly what cover did, so the page lands on the screen in the picture at
   any phone size. Touch devices only - the desktop lightbox is untouched. */
@media (pointer: coarse) and (max-width: 900px){
  #fdnDeskShell.fdn-deskshell{
    left: 0 !important;
    top: 0 !important;
    width: 100vw !important;
    height: 100vh !important;
    height: 100dvh !important;
    transform: none !important;
    margin: 0 !important;
  }
  #fdnDeskShell.fdn-deskshell .fdn-deskshell__frame{
    width: 100% !important;
    height: 100% !important;
    max-width: none !important;
    max-height: none !important;
    object-fit: cover !important;
    object-position: center center !important;
    display: block !important;
  }
  /* the scene is the background now, so the lightbox behind it stays black and
     nothing else shows through at the edges */
  .fdn-lightbox{ background:#000 !important; }
}

/* ---- MOBILE ONLY: the "View X style" overlay left a white halo (Dave 9/4) --
   "That darken/blur overlay on the first click isn't covering the whole
    screen - you get a white halo around it. A pixel or two past is fine."

   Measured against the screen it is meant to cover:
     screen   left 5.754%  top 6.897%  width 89.531%  height 69.917%
     overlay  left 6.170%  top 5.600%  width 88.000%  height 70.600%
   So the overlay sat ~0.4% inside on the left, 1.1% short on the right and
   0.6% short at the bottom - the bright page underneath showing through those
   gaps is the halo. Matched to the screen and bled 0.4% past on every edge, so
   it always overshoots rather than undershoots. Phones only. */
@media (max-width: 900px){
  .fdn-card__view{
    left: 5.354% !important;
    top: 6.497% !important;
    width: 90.331% !important;
    height: 70.717% !important;
    border-radius: 3px !important;
  }
}

/* ---- MOBILE ONLY: the monitor scrolls through the catcher (Dave 9/4) ------
   "Of course it's not scrolling in that panel like I've said 500 times."

   This block used to force pointer-events:auto onto the monitor frames. That
   was me, this morning, and it broke the thing it was meant to fix.

   The template's design is deliberate: the iframe is pointer-events:none so
   the finger passes THROUGH it to .tunnel-intro__touchcatch - a transparent
   layer sitting on top at z-index 6 - which reads the drag and drives the
   iframe's scrollTop by hand. It has to work that way because iOS will not
   touch-scroll an iframe under a CSS transform, and this one is scaled to
   about a third.

   Setting the iframe to pointer-events:auto meant the iframe swallowed the
   touch instead. iOS then could not scroll it, so nothing happened at all.

   Back to the template's intent: frames stay dead to touch, the catcher stays
   live and on top. */
@media (max-width: 900px){
  #webyayTunnel .tunnel-intro__screen iframe,
  #webyayTunnel .tunnel-mid__preview iframe,
  #webyayTunnel .tunnel-monitor__screen iframe,
  #webyayTunnel [data-tunnel-proposed-site-frame]{
    pointer-events: none !important;
  }
  #webyayTunnel .tunnel-intro__touchcatch,
  #webyayTunnel [data-tunnel-intro-touchcatch]{
    pointer-events: auto !important;
    touch-action: none !important;
    display: block !important;
    z-index: 6 !important;
  }
  /* the boxes around them must not eat the gesture before it reaches the catcher */
  #webyayTunnel .tunnel-intro__screen,
  #webyayTunnel .tunnel-intro__stage,
  #webyayTunnel .tunnel-intro__visual{
    pointer-events: auto !important;
  }
}

/* ---- MOBILE ONLY: the row switches go back to the left (Dave 9/4) ---------
   "These were all aligned left until last night you shifted them to the right.
    Put them back, justified left with the first one."

   My doing, tonight. I made these rows flex so an expanded body could use the
   full width - but the markup order is label-then-control, so flex laid the
   label first and pushed every switch to the right edge. "Pull from current
   site" is a different row type, which is why that one stayed left and the
   four below it did not.

   Order only - the switch is pulled to the front of the row and the label
   follows it, matching the row above. No sizes, no spacing, no desktop. */
@media (max-width: 900px){
  #webyayTunnel .tunnel-3row.fdn-collapse > .fdn-collapse__toggle,
  #webyayTunnel .tunnel-3row.fdn-collapse > .tunnel-3row__control{
    order: -1 !important;
    margin-right: 14px !important;
    flex: 0 0 auto !important;
  }
  #webyayTunnel .tunnel-3row.fdn-collapse > .tunnel-3row__label{
    order: 0 !important;
    text-align: left !important;
    flex: 1 1 auto !important;
  }
}

/* ---- MOBILE ONLY: the header block sits at a fixed height (Dave 9/4) ------
   "You pushed the headers and the buttons way down - they were positioned
    perfectly just under the monitor. They need to be at the same level and
    not get pushed around by whatever else is on the step."

   Measured on this step: 48px of dead space between the numbered badge and
   the heading - 28px above the question block and another 20px of margin on
   the heading itself. Multiply that by a three-line question and the Yes/No
   buttons fall under the tab bar.

   Collapsed to a fixed 14px on every step, so the heading always starts the
   same distance below the number no matter how long the question is or what
   the step happens to contain. Phones only. */
@media (max-width: 900px){
  /* the badge is nudged down with a transform, which moves it visually but
     leaves its layout box where it was - so the gap under it reads 10px
     bigger than it measures. That, its own bottom margin and the block's own
     spacing added up to 42px. Pulled back to a flat 14px. */
  /* [Dave 9/5 1:45pm] The -28 is gone. It was asked for on 9/4, when the
     header sat too far below the monitor; since then the monitor and the
     content block both moved, and this pull is what is now burying the
     header of every panel - Fonts, Email, Design + Content, Inside pages -
     underneath the monitor. Zero here puts the header back below the art on
     every step at once, rather than nudging them one panel at a time. */
  #webyayTunnel .tunnel-qa,
  #webyayTunnel .tunnel-detail{
    margin-top: 0 !important;
    padding-top: 0 !important;
  }
  #webyayTunnel .tunnel-card__question,
  #webyayTunnel .tunnel-detail__heading{
    margin-top: 14px !important;
  }
  #webyayTunnel .tunnel-card__stepnum + .tunnel-card__question,
  #webyayTunnel .tunnel-card__stepnum + .tunnel-detail__heading{
    margin-top: 0 !important;
  }
}

/* ---- MOBILE ONLY: the style's name on the scene (Dave 9/4) ----------------
   "The name of the style shown in the screens, lower left, thinnest Jakarta,
    white." 200 is the lightest weight Plus Jakarta Sans has, and it is now
    loaded for this one use - well under his 400 ceiling. */
.fdn-scenename{
  position: fixed;
  left: 22px;
  bottom: 26px;
  z-index: 10001;
  font-family: "Plus Jakarta Sans", Inter, ui-sans-serif, system-ui, sans-serif;
  font-weight: 200;
  font-size: 19px;
  letter-spacing: .06em;
  color: #fff;
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
  transition: opacity .3s ease, visibility .3s ease;
}
.fdn-scenename.is-on{ opacity: .92; visibility: visible; }

/* ---- MOBILE ONLY: the preview rail, 25% bigger and 30px higher (Dave 9/4) --
   Scaled from its bottom-right corner so it stays welded to the screen edge
   the way it is designed to - growing it by width/padding would have pushed
   it off the right side. A transform also keeps the glyphs crisp, since they
   are SVG masks rather than bitmaps. Desktop untouched. */
@media (max-width: 900px){
  .fdn-rail{
    /* Dave 9/4 pm: down another 20px. 108 - 20 = 88. */
    bottom: 88px !important;
    transform: scale(1.25) !important;
    transform-origin: 100% 100% !important;
  }
}

/* ---- MOBILE ONLY: rail icon sizes + tap targets (Dave 9/4 pm) -------------
   "make the desktop icon 15% larger and the mobile icon 10% smaller, make sure
    the target press is easy and not difficult to toggle"

   Base glyph is 23x23, with the phone narrowed to 14 wide. So:
     monitor  23    -> 26.5  (+15%)
     phone    14x23 -> 12.6 x 20.7  (-10%)

   The press target is separate from the glyph. Each icon gets an invisible
   38x38 pad centred on it, which the rail's own scale(1.25) turns into ~47
   real pixels - comfortably past the 44px Apple asks for. The gap between the
   two goes 14 -> 20 so the two pads sit side by side instead of overlapping,
   which is what makes a toggle feel like it ignored you. Desktop untouched. */
@media (max-width: 900px){
  /* the glyph sizes now live on the base rule so desktop gets them too */
  .fdn-rail .fdn-lightbox__device{
    /* Dave 9/5: 4px closer together */
    gap: 16px !important;
  }
  /* Dave 9/5: and 7% larger, phones only - the base sizes stay for desktop */
  .fdn-rail .fdn-dev-glyph--desktop{
    width: 28.4px !important;
    height: 28.4px !important;
  }
  .fdn-rail .fdn-dev-glyph--phone{
    width: 13.5px !important;
    height: 22.2px !important;
  }
  .fdn-rail .fdn-dev-ico{
    position: relative !important;
  }
  .fdn-rail .fdn-dev-ico::after{
    content: '';
    position: absolute;
    left: 50%;
    top: 50%;
    /* 36 now the gap is 16 and the glyphs are bigger - the two pads still sit
       side by side without overlapping, which is what makes the toggle land */
    width: 36px;
    height: 36px;
    transform: translate(-50%, -50%);
    border-radius: 50%;
    /* invisible, but it is what the finger actually lands on */
    background: transparent;
  }
}

/* ---- MOBILE ONLY: chat bubble up 10px (Dave 9/4 pm) ----------------------
   The widget injects its own <style> into the head at runtime, which lands
   after this file, so an equal-weight rule would lose on order alone. Its own
   rule carries no !important, so one here wins outright. 14 + 10 = 24. */
@media (max-width: 900px){
  #wgChatBubble{ bottom: 24px !important; }
}

/* and belt-and-braces: whatever else is on, a focused-away tile row stays gone */
@media (max-width: 900px){
  #webyayTunnel .tunnel-3tiles.is-hidden-focused,
  #webyayTunnel .tunnel-3tile-row.is-hidden-focused,
  #webyayTunnel [data-3tile-grid].is-hidden-focused{
    display: none !important;
  }
}

/* ---- MOBILE ONLY: the row switches were rendering squat (Dave 9/4) --------
   "They appear scaled horizontally, the knob is oval not round, squished."
   Measured on a phone: 34x19 with a 15px knob - the base size, not the 44x25
   these were supposed to get on mobile. The earlier mobile rule targeted
   #webyayTunnel .fdn-toggle, but these switches are built by my own collapse
   passes and carry .fdn-collapse__toggle / .fdn-ecollapse__toggle, which the
   flex row was then free to squeeze.

   Explicit box, locked against flex shrink, and the knob given a fixed square
   so it can never go oval no matter what the row does. */
@media (max-width: 900px){
  #webyayTunnel .fdn-collapse__toggle,
  #webyayTunnel .fdn-ecollapse__toggle,
  #webyayTunnel .fdn-usecurrent__toggle{
    width: 46px !important;
    min-width: 46px !important;
    max-width: 46px !important;
    height: 26px !important;
    min-height: 26px !important;
    flex: 0 0 46px !important;
    border-radius: 999px !important;
    box-sizing: border-box !important;
  }
  #webyayTunnel .fdn-collapse__toggle .fdn-toggle__knob,
  #webyayTunnel .fdn-ecollapse__toggle .fdn-toggle__knob,
  #webyayTunnel .fdn-usecurrent__toggle .fdn-toggle__knob{
    width: 20px !important;
    height: 20px !important;
    min-width: 20px !important;
    top: 3px !important;
    left: 3px !important;
    border-radius: 50% !important;
    aspect-ratio: 1 / 1 !important;
  }
  #webyayTunnel .fdn-collapse__toggle[aria-pressed="true"] .fdn-toggle__knob,
  #webyayTunnel .fdn-ecollapse__toggle[aria-pressed="true"] .fdn-toggle__knob,
  #webyayTunnel .fdn-usecurrent__toggle[aria-pressed="true"] .fdn-toggle__knob{
    transform: translateX(20px) !important;
  }

  /* ---- "Pull from current site" over two lines, wider URL field ----------
     Dave: two lines frees the width the address field needs on a phone. */
  #webyayTunnel .fdn-usecurrent .tunnel-3row__label{
    flex: 0 0 auto !important;
    width: 92px !important;
    white-space: normal !important;
    line-height: 1.25 !important;
  }
  #webyayTunnel .fdn-usecurrent .fdn-usecurrent__control,
  #webyayTunnel .fdn-usecurrent #fdnUseCurrentUrl{
    flex: 1 1 auto !important;
    min-width: 0 !important;
    width: 100% !important;
  }
}

/* Desktop: the span is just the word space, so the label reads normally on one
   line. Phone: the same span goes block-level, which forces the break, and its
   zero height means the space itself never shows. One element, both jobs, and
   the text stays selectable either way. */
.fdn-uc__br{ display:inline; }
@media (max-width: 900px){
  .fdn-uc__br{ display:block; height:0; overflow:hidden; }
}

/* ---- DESKTOP ONLY: panel headers at 60% (Dave 9/4, trial) -----------------
   "This dark grey header and the white one above it are basically the same
    size and competing. Let's see them 40% smaller - 60% to scale - desktop
    only, don't touch mobile. We might revert if I don't like it."

   Measured before: .tunnel-card__question 38px / 43.7px, .tunnel-detail__
   heading 34px / 41.5px. At 60%: 23px / 26px and 20px / 25px. Line-height
   scaled with the type so the two-line headers keep their proportion rather
   than going airy. Nothing else moves.

   TO REVERT: delete this whole block. Nothing else was changed for it. */
@media (min-width: 901px){
  #webyayTunnel .tunnel-card__question{
    font-size: 23px !important;
    line-height: 26px !important;
  }
  #webyayTunnel .tunnel-detail__heading,
  #webyayTunnel .tunnel-3tile-panel__title{
    font-size: 20px !important;
    line-height: 25px !important;
  }
}

/* ---- MOBILE ONLY: desk scene as the hero (Dave 9/4 pm) --------------------
   Replaces the hand-holding-a-phone shot on first load. The photograph runs at
   its natural aspect so the glass can be placed as flat percentages of the
   picture - the same measured box used by the style view. Heading sits on top
   in white, the lead paragraph under the desk in white, style name lower left
   in the thin Jakarta. The toggle keeps the monitor/phone pair and nothing
   else - no checkmark, no back arrow; those belong to the style view.
   Desktop is untouched: every rule here is inside the phone query. */
@media (max-width: 900px){
  /* [Dave 9/4 pm] Framed exactly like the style-view pop-up: the scene fills
     the viewport and object-fit:cover decides the crop. foundations.js works
     out what cover did and places the glass and the copy against that. */
  .fdn-herodesk{
    position: relative;
    display: none;
    width: 100vw;
    height: 100vh;
    height: 100dvh;
    margin-left: calc(50% - 50vw);
    margin-right: calc(50% - 50vw);
    overflow: hidden;
    background: #0b0c0e;
  }
  .fdn-herodesk.is-on{ display: block; }

  .fdn-herodesk__scene{
    display: block;
    width: 100%;
    height: 100%;
    max-width: none;
    object-fit: cover;
    object-position: center center;
  }

  /* The glass, measured off the 1290x2796 file, then inset so real black
     bezel shows on all four sides - Dave 9/4: "there is zero black bezel
     showing on the computer." The inset is 22px of the original photograph,
     the same figure the style view uses, expressed here as a percentage of
     each axis: 22/1290 = 1.706% across, 22/2796 = 0.787% down. */
  .fdn-herodesk__screen{
    position: absolute;
    /* left/top/width/height are written by fitHeroFrame from the cover box.
       No clip: the frame is sized to land exactly on the glass, the same way
       the style view does it, and a clipping ancestor is one of the things
       that stops iOS scrolling aframe natively. */
    background: #000;
  }
  /* [FIX] 2026-09-04 late, Dave: "the style view desktop scrolls flawlessly -
     can't you just use the exact same thing?"

     Yes, and it turns out the answer was to use LESS, not more. That view has
     no touch catcher at all. Its frame is simply pointer-events:auto with
     touch-action:auto, sized to the glass and transform-scaled, and iOS scrolls
     it natively - which also disproves the belief I built the catcher on.
     The hero now matches it exactly: the finger lands on the iframe, iOS does
     the scrolling, and there is no hand-written driver to fight the heartbeat,
     no velocity maths, no ghost-click swallower. The catcher element stays in
     the markup but is switched off, so nothing else has to change. */
  .fdn-herodesk__frame{
    border: 0;
    display: block;
    background: #000;
    position: relative;
    z-index: 1;
    pointer-events: auto !important;
    touch-action: auto !important;
  }
  .fdn-herodesk__catch{ display: none !important; }

  /* ---- the hand scene, Dave's own photograph (9/4 late) -------------------
     Same treatment as the desk scene: fills the viewport with object-fit
     cover, and foundations.js places the frame against the box cover actually
     produced. The picture has the screen cut out of it - a real transparent
     hole - so the site sits BEHIND the photograph and shows through, which is
     why there is no separate black screen div here. */
  /* the copy, name and toggle all ride above the photograph */
  .fdn-herodesk__head,
  .fdn-herodesk__body,
  .fdn-herodesk__name,
  .fdn-herodesk__toggle{ z-index: 6; }
  /* Dave 9/4 late: "let's not worry about the white header and body copy on the
     mobile view - it fits nicely on the desktop one, that's where it shows."
     The phone fills this frame, so the copy had nowhere honest to sit. */
  /* [MY BUG, 9/5 10:50pm] The header, the body copy and the name were ONE rule
     sharing display:none. When I made the name visible in the hand view I
     changed that rule's declaration, which turned the header and body copy
     back on with it - exactly what Dave did NOT want there. Split in two: the
     copy stays hidden, only the price block shows. */
  .fdn-herodesk.is-phoneview .fdn-herodesk__head,
  .fdn-herodesk.is-phoneview .fdn-herodesk__body{ display: none !important; }
  .fdn-herodesk.is-phoneview .fdn-herodesk__name{ display: block !important; }

  .fdn-herodesk__phonescene{
    position: absolute;
    /* Dave 9/4 late: the 35px shift is gone. It was only ever compensating for
       the cover crop, and the picture is no longer cropped - it renders at its
       own ratio, which is within a pixel of the phone's. So zero was flush.
       Dave 9/4 late: up 30 from there, then 15 more. */
    top: -45px;
    /* [Dave 9/5] "the iPhone is skewed to the right - it needs the same space
       left and right." Measured, not eyeballed: the cut-out in his file runs
       282..981 of 1200, so its centre sits 31.5px right of the picture's own
       centre - 2.625% of the width. Shifting the whole layer left by that puts
       the phone dead centre, and the site moves with it because both live in
       this box. */
    left: -2.625%;
    right: auto;
    width: 100%;
    /* height comes from the photograph itself - see the note in foundations.js:
       1200x2600 is almost exactly a phone's own ratio, so it needs no cropping
       and the glass can be placed as flat percentages that never drift. */
    display: none;
  }
  .fdn-herodesk.is-phoneview .fdn-herodesk__phonescene{ display: block; }
  .fdn-herodesk__hand{
    position: relative;
    display: block;
    width: 100%;
    height: auto;
    pointer-events: none;   /* the finger must reach the site underneath */
    z-index: 2;
  }
  /* Dave 9/5: new photograph, phone sits 15px higher in it. The glass box is
     read from the new file's own alpha channel rather than guessed - the
     cut-out is 282,235 to 981,1702 of 1200x2600, identical size to the last
     one and 45 image pixels higher, which is exactly the 15 he measured. So
     only `top` changes and the site follows the phone automatically. */
  .fdn-herodesk__phoneglass{
    position: absolute;
    left: 23.5000%;
    top: 9.0385%;
    width: 58.3333%;
    height: 56.4615%;
    overflow: hidden;
    z-index: 1;
    background: #fff;
  }
  .fdn-herodesk__phoneframe{
    position: absolute;
    left: 0;
    top: 0;
    border: 0;
    display: block;
    background: #fff;
    pointer-events: auto;
    touch-action: auto;
  }

  /* heading, on top, white */
  .fdn-herodesk__head{
    position: absolute;
    /* left/right/top written by fitHeroFrame */
    margin: 0;
    color: #fff !important;
    font-weight: 400 !important;
    /* Dave 9/4 pm: 15% larger, leading loosened; then 10% more */
    font-size: clamp(29.2px, 7.84vw, 40.5px) !important;
    /* Dave 9/5: tighter leading - 1.26 -> 1.13 */
    line-height: 1.13 !important;
    letter-spacing: -0.01em;
    text-align: left;
  }

  /* lead paragraph, under the desk, white */
  .fdn-herodesk__body{
    position: absolute;
    /* left/right/top written by fitHeroFrame */
    margin: 0;
    color: #fff !important;
    font-weight: 400;
    font-size: clamp(14px, 3.7vw, 16.5px);
    line-height: 1.55;
  }
  .fdn-herodesk__body strong{ font-weight: 600; color: #fff; }

  /* the style's name, lower left - same treatment as the style view */
  .fdn-herodesk__name{
    position: absolute;
    left: 6.9767%;
    /* Dave 9/4 pm: up 25px from where it was.
       Dave 9/5 10:50pm: down 15 from there - 25 -> 10. */
    bottom: calc(4.2% + 10px);
    font-family: 'Plus Jakarta Sans', system-ui, -apple-system, sans-serif;
    font-weight: 200;
    font-size: 19px;
    letter-spacing: .06em;
    color: #fff;
    opacity: .92;
  }
  /* [Dave 9/5] the price replaces the style name in this slot. All white,
     nothing heavier than 400. */
  .fdn-herodesk__name .fdn-herodesk__price{
    display: block;
    /* Dave 9/5: 15% larger. 26 -> 30. */
    font-size: 30px;
    font-weight: 400;
    letter-spacing: .01em;
    line-height: 1.05;
    color: #fff;
  }
  .fdn-herodesk__name .fdn-herodesk__terms{
    display: block;
    margin-top: 3px;
    /* 15% larger with it: 11.5 -> 13.2 */
    font-size: 13.2px;
    font-weight: 300;
    letter-spacing: .06em;
    color: #fff;
  }

  /* the toggle - monitor + phone only */
  .fdn-herodesk__toggle{
    position: absolute;
    /* Dave 9/4 pm: same treatment as the pop-up rail - bled off the right edge
       with only the two left corners rounded, not a floating pill. */
    right: 0;
    /* clear of the chat bubble, which sits 24px off the bottom and is 44 tall */
    bottom: 11%;
    display: flex;
    align-items: center;
    /* Dave 9/4 pm: "icons too small and too spread out, box too large - make it
       more concise." Tighter box, no gap between the two buttons (their own
       48px boxes are the spacing), bigger glyphs inside them. 48 still clears
       Apple's 44, so the target stays honest. */
    gap: 0;
    /* Dave 9/4 pm: box about 10% shorter, still centred on the icons - the
       48px button boxes are unchanged, so this comes out of the padding
       equally top and bottom. 48 + 5 + 5 = 58 -> 48 + 2 + 2 = 52. */
    padding: 2px 10px 2px 8px;
    border-radius: 13px 0 0 13px;
    background: rgba(18,20,24,.62);
    -webkit-backdrop-filter: blur(16px) saturate(1.3);
    backdrop-filter: blur(16px) saturate(1.3);
  }
  /* [FIX] Dave 9/4 pm: "the target is terrible - it looks like 10 finger
     clicks to get from one to the other."
     It was a 46px pseudo-element pad on each button, and with only 20px
     between the glyphs the two pads OVERLAPPED by about six pixels. In the
     overlap the second button wins, so taps aimed at the monitor kept landing
     on the phone and reading as nothing happening.
     The pad is gone. Each button is now a real 56x56 box - past Apple's 44 -
     and they cannot overlap because the box IS the button. touch-action
     manipulation kills the double-tap wait so the first tap registers. */
  .fdn-herodesk__dev{
    position: relative;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 48px;
    min-height: 48px;
    padding: 0;
    margin: 0;
    border: 0;
    background: transparent;
    color: #d8dce1;
    cursor: pointer;
    touch-action: manipulation;
    -webkit-tap-highlight-color: transparent;
  }
  .fdn-herodesk__dev.is-on{ color: #d4a017; }
  .fdn-herodesk__dev .fdn-dev-glyph{
    display: block;
    background: currentColor;
    -webkit-mask-repeat: no-repeat; mask-repeat: no-repeat;
    -webkit-mask-position: center;  mask-position: center;
    -webkit-mask-size: contain;     mask-size: contain;
  }
  .fdn-herodesk__dev .fdn-dev-glyph--desktop{
    /* Dave 9/4 pm: another 10% - 32 -> 35.2 */
    width: 35.2px; height: 35.2px;
    -webkit-mask-image: url("assets/img/dave-icon-monitor.svg");
    mask-image: url("assets/img/dave-icon-monitor.svg");
  }
  .fdn-herodesk__dev .fdn-dev-glyph--phone{
    /* Dave 9/4 pm: another 10% - 15.2x25 -> 16.7x27.5 */
    width: 16.7px; height: 27.5px;
    -webkit-mask-image: url("assets/img/dave-icon-phone.svg");
    mask-image: url("assets/img/dave-icon-phone.svg");
  }

  /* while the desk scene is the hero, the hand-and-phone shot and the two
     paragraphs it used to sit above stand down. Toggling to the phone icon
     puts the hand shot back and hides the desk scene - nothing is destroyed,
     only swapped. */

  /* [Dave 9/4 late] Phone view is now his own hand photograph, treated exactly
     like the desk scene - full bleed, heading on top, copy under it, style name
     lower left, all in white. Only the desk-scene layer stands down; the hero
     keeps its full height and everything else stays where it is. */
  html.fdn-herodesk-phone .fdn-herodesk__scene,
  html.fdn-herodesk-phone .fdn-herodesk__screen{ display: none !important; }
  html.fdn-herodesk-phone .fdn-herodesk{
    background: #0b0c0e !important;
    /* [FIX] Dave 9/5: "I don't want this black gap - the dark background and
       everything below the fold has to butt up against the iPhone image."
       The hero was a full 100dvh while the photograph, at its own ratio, ends
       short of that - and the strip between the two was the hero's own black.
       Height is the picture's height now (1200x2600, so 2.1667 x the width)
       less the 45 it is shifted up by, so the photo's bottom edge IS the end
       of the hero and the next section starts exactly there. */
    height: calc(100vw * 2.16667 - 45px) !important;
    min-height: 0 !important;
  }
  /* the old hand-and-phone block stays out of the way in both views now */
  /* [FIX] Dave 9/4 late: "the old white-background image flashes on refresh."
     It was gated on a class that JavaScript adds, so between first paint and
     the script running the old hand-and-phone shot was on screen. Both hero
     views are his own photographs now, so the old block is simply gone on
     mobile from the first frame - no class, no timing, nothing to flash. */
  .mobile-phone-compare{ display: none !important; }
  /* the heading and lead now live on the picture, so the copy block below the
     hero drops its duplicate of them */
  html.fdn-herodesk-on .lead--below-compare .fdn-lead__in,
  html.fdn-herodesk-on .lead--below-compare p:first-of-type{
    display: none !important;
  }
}

/* ---- MOBILE ONLY: close the white strip above the desk hero (Dave 9/4 pm) --
   "big old white space/gap at the top on mobile."
   The scene is full-bleed, but .hero carries 40px of top padding on its own
   near-white background and the card/layout add a few more - so the picture
   started ~39px down with the page showing above it. While the desk hero is
   the hero, those go to zero; toggling to the hand-phone view puts them back,
   because that view is a normal in-flow visual that needs the air. */
@media (max-width: 900px){
  /* the existing rule is html body section.hero.hero.hero (0,4,2) with
     !important, so this has to out-rank it, not merely follow it */
  html.fdn-herodesk-on body section.hero#compare{
    padding-top: 0 !important;
  }
  html.fdn-herodesk-on .comparison-card{ padding-top: 0 !important; }
  html.fdn-herodesk-on .compare-layout{ margin-top: 0 !important; }
  html.fdn-herodesk-on .mobile-safe-preview{ margin-top: 0 !important; }
}

/* ---- DESKTOP ONLY: the style label on the hand-phone scene (Dave 9/4 pm) ---
   "move it 100px up and 100px to the right, not tucked way over to the corner;
    2x as large; thinner type."
   22 + 100 = 122 from the left, 26 + 100 = 126 from the bottom, 19px -> 38px.
   200 is the thinnest weight Plus Jakarta Sans has - it has no 100 - so the
   extra lightness at this size comes from opening the letterspacing and easing
   the opacity, which is what reads as "thinner" at display size.
   Mobile keeps its own placement inside the phone query below. */
@media (min-width: 901px){
  .fdn-scenename{
    /* Dave 9/4 pm: left 25 and down 25. 122 - 25 = 97, 166 - 25 = 141. */
    left: 97px !important;
    bottom: 141px !important;
    font-size: 38px !important;
    /* Back to Jakarta. He caught the swap instantly - Inter's o is an oval and
       narrower; Jakarta's is round. 200 is the floor of Plus Jakarta Sans, so
       this is as light as the real face goes. */
    font-family: "Plus Jakarta Sans", Inter, ui-sans-serif, system-ui, sans-serif !important;
    font-weight: 200 !important;
    letter-spacing: .10em !important;
  }
  /* Dave 9/4 pm: "is the gold in the chevron the real gold and solid opaque?
     it seems like it's fading into the background." It was - not the gold, the
     group: the whole label ran at .82 opacity so the chevron inherited it. The
     group is fully opaque now and the softness moved onto the WORD, leaving
     the chevron at true #d4a017 with nothing taken off it. */
  .fdn-scenename.is-on{ opacity: 1 !important; }
  .fdn-scenename .fdn-scenename__word{ color: rgba(255,255,255,.82); }
}

/* ---- DESKTOP + hand-phone view: the style word is the style switcher -------
   Dave 9/4 pm: "a thin gold chevron pointing up to the right of the style word,
   and on hover the other seven appear - dropping UP. Not a button or a bubble
   or a pull-down effect. The others slightly greyed unless hovered, then white.
   Only in this iPhone toggle mode, not the desktop."
   So there is no panel here at all - no background, no border, no radius, no
   shadow. Just words stacked above the word. */
.fdn-scenename__list{ display:none; }
.fdn-scenename__cur{
  all: unset;
  display: inline-flex;
  align-items: center;
  gap: .42em;
  font: inherit;
  color: inherit;
  cursor: default;
}
.fdn-scenename__chev{ display: none; }

@media (min-width: 901px){
  .fdn-scenename.is-switchable .fdn-scenename__cur{ cursor: pointer; }
  .fdn-scenename.is-switchable{ pointer-events: auto; }

  /* the chevron: thin, gold, pointing up, to the right of the word */
  .fdn-scenename.is-switchable .fdn-scenename__chev{
    display: block;
    /* Dave 9/4 pm: 20% larger - .52em -> .624em, then 8% more -> .674em */
    width: .674em;
    height: .674em;
    color: #d4a017;
    opacity: 1;
    /* and sitting 4px lower than the word beside it */
    transform: translateY(4px);
    transition: transform .22s ease;
  }
  .fdn-scenename.is-switchable:hover .fdn-scenename__chev{ transform: translateY(-1px); }

  /* the seven others, stacked upward from the word */
  .fdn-scenename.is-switchable .fdn-scenename__list{
    display: flex;
    flex-direction: column-reverse;   /* nearest the word first, going up */
    align-items: flex-start;
    position: absolute;
    left: 0;
    bottom: 100%;
    padding-bottom: .34em;
    gap: .30em;
    opacity: 0;
    visibility: hidden;
    transform: translateY(6px);
    transition: opacity .2s ease, transform .2s ease, visibility .2s ease;
  }
  .fdn-scenename.is-switchable:hover .fdn-scenename__list,
  .fdn-scenename.is-switchable.is-open .fdn-scenename__list,
  .fdn-scenename.is-switchable:focus-within .fdn-scenename__list{
    opacity: 1;
    visibility: visible;
    transform: translateY(0);
  }
  .fdn-scenename.is-switchable .fdn-scenename__opt{
    all: unset;
    display: block;
    font: inherit;
    /* Dave 9/4 pm: "the seven options shouldn't be the same huge size as the
       chosen one - maybe about 60%." 38px * .6 = 22.8px. The chosen style
       stays at full size, so the one you are on always reads as the heading
       and the alternatives read as a list. */
    font-size: 22.8px;
    letter-spacing: inherit;
    white-space: nowrap;
    cursor: pointer;
    color: rgba(255,255,255,.42);
    transition: color .16s ease;
  }
  .fdn-scenename.is-switchable .fdn-scenename__opt:hover,
  .fdn-scenename.is-switchable .fdn-scenename__opt:focus-visible{
    color: #fff;
  }
  /* the group needs a hit area that spans word + list, or the list closes as
     the cursor travels up to it */
  .fdn-scenename.is-switchable{ padding: .2em .6em .2em 0; }
}

/* ---- DESKTOP ONLY: the rail 12% larger and 10px higher (Dave 9/4 pm) -------
   Scaled from its bottom-right corner so it stays welded to the window edge
   and keeps its two rounded left corners - growing padding instead would push
   it off the right side. Mobile is untouched: its own scale(1.25) and
   bottom:88px live in the max-width query and are not affected by this. */
@media (min-width: 901px){
  .fdn-rail{
    bottom: 88px !important;          /* 78 + 10 */
    transform: scale(1.12) !important;
    transform-origin: 100% 100% !important;
  }
}

/* ---- DESKTOP ONLY: thinner rail icons (Dave 9/4 pm) -----------------------
   "With the nav larger the icons look thick and horsey - make all four
    thinner." Desktop only; mobile keeps exactly what it has.

   The monitor and phone are Dave's own artwork, drawn as filled outlines, so
   there is no stroke-width to turn down. Rather than redraw his paths, the
   desktop rail points at -thin copies of the same files: identical path data
   with an feMorphology erode that shaves the outline from both sides. His
   originals are untouched and are still what mobile loads.
   The check and the back arrow are real stroked SVGs, so those just take a
   lighter stroke-width. */
@media (min-width: 901px){
  /* The monitor and phone are back on Dave's original files. The erode trick
     is a dead end at this size: WebKit rounds the morphology radius to whole
     device pixels, so at 26px the icon either looks unchanged (radius under
     one pixel) or falls apart (radius two). Rendered every step from 0 to 5
     and there is nothing usable in between. Thinning those two properly means
     redrawing them as stroked paths - a change to his artwork, so it waits for
     him to say go. The check and the arrow ARE stroked, so they thin freely. */
  .fdn-rail .fdn-rail__ico svg{
    stroke-width: 0.85 !important;
  }
}

/* ---- the hidden rail must not eat taps (Dave 9/4 pm) ----------------------
   "the target is terrible, it looks like 10 finger clicks to get from one to
    the other."

   Found by hit-testing the hero toggle: elementFromPoint at the phone icon
   returned .fdn-lightbox__close - the RAIL's back arrow, sitting invisibly on
   top of it. The rail hides with opacity:0 + visibility:hidden, but the reset
   that strips the old pill styling forces visibility:visible !important onto
   its three buttons, and a visible child of a hidden parent is still hit
   tested. So the rail was invisible and still catching fingers.
   Nothing that is not on can be touched. */
.fdn-rail:not(.is-on),
.fdn-rail:not(.is-on) *{ pointer-events: none !important; }

/* ---- MOBILE ONLY: the hero runs straight into "Design style" (Dave 9/4 pm) -
   "Remove this whole section and that white background from the mobile view.
    Bring the category below it up so it's touching the bottom of the image
    above it - no gap with that base colour. Only on mobile, don't touch
    desktop."
   So while the desk scene is the hero, the lead block under it goes, and every
   piece of vertical space between the photograph and the dark Design style
   band goes with it. Desktop is untouched - all of this is inside the phone
   query and gated on the desk hero being the one showing. */
@media (max-width: 900px){
  html.fdn-herodesk-on .lead--below-compare{
    display: none !important;
  }
  /* the "See a Finished Site" pill under the visual belongs to the before/after
     layout, not to this hero - it was the 38px band under the photograph */
  /* the template's own rule is html body .comparison-side-cta.comparison-side-cta--mobile,
     which out-ranks a shorter selector even with !important - match its weight */
  html.fdn-herodesk-on body .comparison-side-cta.comparison-side-cta--mobile{
    display: none !important;
  }
  /* NB the rule that was winning here is html body section.hero#compare - an
     ID, which out-ranks any number of classes. Matching the id is the only way
     to beat it; adding more .hero repeats never would. */
  html.fdn-herodesk-on body section.hero#compare{
    padding-bottom: 0 !important;
    margin-bottom: 0 !important;
    /* transparent, not a colour of its own - so the photograph runs straight
       into the page's own dark ground with nothing between them */
    background: transparent !important;
  }
  html.fdn-herodesk-on .comparison-card,
  html.fdn-herodesk-on .compare-layout,
  html.fdn-herodesk-on .mobile-safe-preview{
    padding-bottom: 0 !important;
    margin-bottom: 0 !important;
  }
  html.fdn-herodesk-on .value-intro{
    margin-top: 0 !important;
    padding-top: clamp(26px, 7vw, 40px) !important;
  }
}

/* ---- MOBILE ONLY: the eight cards (Dave 9/5) -----------------------------
   "Increase the on/off toggles by 15%. Move the text below each monitor down
    about 7 pixels farther from the monitor. And make the white style names
    20-25% larger - they're pretty small."

   Toggles: the phone size is 42x24 with a 19px knob and 18px of travel, so
   +15% gives 48x28, knob 22, travel 21 - the ON state still lands flush.
   The 52x48 invisible finger pad above stays as it is; it was already bigger
   than the pill and does not need to grow with it.
   Names: 12px -> 14.75px, which is the 23% he asked for, rounded to land on a
   clean half pixel at 2x. Desktop is untouched throughout. */
@media (max-width: 900px){
  #foundations .fdn-toggle{
    width: 48px !important;
    height: 28px !important;
    border-radius: 28px !important;
  }
  #foundations .fdn-toggle .fdn-toggle__knob{
    width: 22px !important;
    height: 22px !important;
    top: 3px !important;
    left: 3px !important;
  }
  #foundations .fdn-toggle[aria-pressed="true"] .fdn-toggle__knob{
    transform: translateX(21px) !important;
  }

  /* the whole caption block sits 7px farther off the monitor */
  #foundations .fdn-card__label{
    margin-top: calc(clamp(3px, .3vw, 5px) + 7px) !important;
  }

  #foundations .fdn-card__name{
    font-size: 14.75px !important;
  }
}


/* ---- MOBILE: the style word is the style switcher in the DESK view -------
   Dave 9/5: "on a handheld, when they go into a style and click the desktop
   icon, I want the style names there like the desktop has - orange chevron,
   the others glide up, and they can pick from inside the modal."

   Same component, same look, one difference: a finger cannot hover, so the
   word is a tap target and the list opens on `.is-open`. foundations.js only
   puts `is-switchable` on the desk scene here - never on the hand-phone view,
   which is the mirror of how it behaves on a desktop. */
@media (max-width: 900px){
  .fdn-scenename.is-switchable{
    pointer-events: auto;
    padding: .2em .6em .2em 0;
  }
  .fdn-scenename.is-switchable .fdn-scenename__cur{
    cursor: pointer;
    /* a real finger target around the word */
    padding: 6px 2px 6px 0;
    touch-action: manipulation;
    -webkit-tap-highlight-color: transparent;
  }
  .fdn-scenename.is-switchable .fdn-scenename__chev{
    display: block;
    /* Dave 9/5: 10% bigger on mobile - .674em -> .741em */
    width: .741em;
    height: .741em;
    color: #d4a017;
    opacity: 1;
    transform: translateY(2px);
    transition: transform .22s ease;
  }
  .fdn-scenename.is-switchable.is-open .fdn-scenename__chev{
    transform: translateY(-2px) rotate(180deg);
  }
  .fdn-scenename.is-switchable .fdn-scenename__list{
    display: flex;
    flex-direction: column-reverse;   /* nearest the word first, going up */
    align-items: flex-start;
    position: absolute;
    left: 0;
    bottom: 100%;
    padding-bottom: .40em;
    gap: .34em;
    opacity: 0;
    visibility: hidden;
    transform: translateY(6px);
    transition: opacity .2s ease, transform .2s ease, visibility .2s ease;
  }
  .fdn-scenename.is-switchable.is-open .fdn-scenename__list{
    opacity: 1;
    visibility: visible;
    transform: translateY(0);
  }
  .fdn-scenename.is-switchable .fdn-scenename__opt{
    all: unset;
    display: block;
    font: inherit;
    /* the chosen style stays full size; the alternatives read as a list.
       Dave 9/5: a bit larger and a bit less grey so they actually read -
       .62em -> .72em, 52% white -> 68%. */
    font-size: 0.72em;
    letter-spacing: inherit;
    white-space: nowrap;
    cursor: pointer;
    color: rgba(255,255,255,.68);
    /* each one still needs a thumb-sized row */
    padding: 5px 10px 5px 0;
    touch-action: manipulation;
    -webkit-tap-highlight-color: transparent;
  }
  .fdn-scenename.is-switchable .fdn-scenename__opt:active{ color: #fff; }
}

/* ---- the style's name in the rail, under the checkmark (Dave 9/5) --------
   "I want the style name in thin font UNDERNEATH the checkmark, and it takes
    the place of the second separator line. The first separator stays. Same
    colour as the unselected icons, and when they click the checkmark it goes
    gold along with it. Closer to the checkmark than to the arrow below —
    it's part of the checkmark in essence."
   Both breakpoints. */
/* Dave 9/5: the divider between the name and the back arrow goes back in -
   same hairline as the one above the checkmark, so the name reads as part of
   the checkmark block rather than floating. */
#fdnRail > #fdnClose{
  border-top: 1px solid rgba(255,255,255,.17) !important;
  margin-top: 9px !important;
  padding-top: 9px !important;
}
.fdn-rail__style{
  font-family: "Plus Jakarta Sans", Inter, ui-sans-serif, system-ui, sans-serif;
  font-weight: 200;
  /* Dave 9/5: ALL CAPS, smaller again (10 -> 8.5), and 2px closer to the tick.
     Caps need more air between letters or they read as a block, hence .14em. */
  text-transform: uppercase;
  font-size: 8.5px;
  letter-spacing: .14em;
  line-height: 1;
  color: #d8dce1;                /* the unselected-icon grey */
  /* Dave 9/5: 3px more air between the tick and the word */
  margin: 3px 0 3px !important;
  text-align: center;
  white-space: nowrap;
  pointer-events: none;
  transition: color .16s ease;
}
.fdn-rail__style.is-chosen{ color: #d4a017; }

/* ---- "Everything you need in a website." kerning (Dave 9/5) --------------
   "the letters are literally overlapping - loosen it."
   They were: -0.045em at the large sizes, which at 78-82px is several pixels
   of overlap per pair. Brought back to a hair under normal. */
html body .investment-copy h2.investment-h2,
html body .investment-copy h2.investment-h2 .investment-h2__line{
  letter-spacing: -0.005em !important;
}

/* ---- MOBILE ONLY: the checkmark ring a touch thinner (Dave 9/5) ----------
   The rail is scaled 1.25 on phones, so the 1.6 stroke in the markup renders
   heavier there than the same icon does on a desktop. 1.6 -> 1.25 brings it
   back in line. Only the checkmark, and only on phones - the desktop rail has
   its own 0.85 and is untouched. */
@media (max-width: 900px){
  .fdn-rail #fdnChoose .fdn-rail__ico svg{
    stroke-width: 1.25 !important;
  }
}

/* ---- MOBILE ONLY: tunnel top bar re-laid out (Dave 9/5) ------------------
   "Close all the way up, about 8px from the top of the browser. Login /
    Create Account moved left so it doesn't overlap it - six or seven pixels
    to its left. WG logo 31.5px tall, width proportional. Monitor and the
    style pulldown up 30px."

   Measured first, then moved - every number below is the difference between
   where the element actually sat and where he asked for it:
     close  y 33.0 -> 8      => translateY(-10)   (base was 18)
     auth   right 375.5 -> 291.3 (7px left of the close pill) => translateX(-84)
            and centred on the close button vertically       => translateY(16)
     logo   55.7px tall -> 31.5, width follows (80.1 -> ~45)
     stage  y 86.3 -> 56.3                                    => translateY(-30)
   Desktop is untouched - this whole block is inside the phone query. */
@media (max-width: 900px){
  #webyayTunnel .tunnel-top__logo{
    height: 31.5px !important;
    width: auto !important;
    /* Dave 9/5: logo up 4 (4 -> 0) */
    transform: translateX(50px) translateY(0) !important;
  }
  #webyayTunnel .tunnel-top__auth-links,
  #webyayTunnel .tunnel-top__greeting{
    /* Dave 9/5: 10px further left (-84 -> -94) */
    transform: translateX(-94px) translateY(16px) !important;
  }
  #webyayTunnel .tunnel-top__close{
    transform: translateY(-10px) !important;
  }
  /* [FIX] Dave 9/5: this was `transform: translateY(-30px)` and it destroyed
     the monitor - a transform on the stage makes it a containing block, which
     breaks the fixed positioning and the scale maths the preview inside it
     depends on. Measured: the stage went from 372px wide to 594. Margin moves
     it without changing what it is. */
  /* Dave 9/5: the monitor must START about 10px below the concealing bar and
     only slide under it as you scroll. Giving the bar a z-index (so the account
     form would pass beneath it) is what put the monitor behind it, so the
     content moves down to clear it: -30 -> +31. */
  /* Dave 9/5: -30 -> -15 -> -7 -> +1 */
  /* [Dave 9/5 - measured, not guessed] The "shortest opaque bar at the top"
     is not a bar. There is exactly ONE grey element up there: .tunnel-top,
     0 -> 177.2, one smooth gradient, no seam (a pixel column at x=10, clear of
     the monitor, walks 97 -> 139 continuously all the way down and never
     steps). What makes it LOOK like two bars is the monitor: its top edge sits
     at y 93, i.e. 84px INSIDE the bar, so the top ~93px has nothing behind the
     80% layer and reads solid, and everything below it reads darker where the
     monitor shows through. That step at y 93 is the top of the computer, and
     it is also why the top of the monitor has looked "cropped out" every time.
     8 and 15px nudges were never going to clear it - the gap is 94px. The
     monitor now starts 10px BELOW the bar, whole, and slides under it on
     scroll, which is the behaviour asked for. */
  #webyayTunnel .tunnel-intro__stage,
  #webyayTunnel .fdn-stylepick{
    margin-top: 1px !important;
  }

  /* ---- the nav strip 80% translucent, the rest of the bar opaque ----------
     There is only one grey element here - .tunnel-top, a single 135deg
     gradient about 177px tall - so "the short bar" and "the one that comes
     further down" are the top and bottom of the same box. Painting alpha into
     the gradient would only tint it against itself; what actually makes the
     top band see-through is a mask, which takes the element's own paint down
     to 80% for the first 85px and leaves the rest solid. One property, no
     stacking changes, nothing lifted above the monitor - which is what went
     wrong every other way I tried this. */
  /* ---- the concealing band, done properly (Dave 9/5) ---------------------
     "They're supposed to blend together so it looks like one bar, but there's
      an overlapping top one that is translucent that content flows under."

     Masking was the wrong tool both times - it makes the band a different
     colour, because 80% of the bar over a pale page is lighter than 100% of
     the bar. What he is describing needs two layers, not one:

       - the tall bar stays fully opaque and BEHIND the monitor, exactly as it
         always was, so the monitor overlaps it
       - an 85px band ON TOP of everything, carrying the same gradient at 80%

     Where nothing passes under that band you are seeing 80% of the gradient
     over 100% of the same gradient, which composites back to the identical
     colour - so it blends into one bar, no seam. Where the monitor slides
     under it, it reads through faintly. That is the effect he asked for.

     `background-image: inherit` with the pseudo-element at full height and
     clipped to the top 85px is what keeps the gradient geometry identical -
     drawing a fresh 85px-tall gradient would not line up. */
  /* [Dave 9/5] "Remove the opaque one of the two short bars, keep the
     translucent one."

     Right - in that top band there were two greys stacked: the tall bar's own
     paint underneath and the translucent band on top of it. The tall bar's
     paint is gone from that band now. It is drawn by ::before, clipped to
     START at 46.5px, so above that line there is nothing opaque at all - only
     the ::after band at 80%, and whatever passes under it.

     Both pseudo-elements carry the same gradient across the same full-size
     box, so where they meet there is no seam and no colour shift; only the
     clip differs. The bar's own background is off - if it painted, the opaque
     layer would be right back. */
  /* [Dave 9/5 - the seam, finally measured] Isolating the two layers one at a
     time proved what is actually happening. ::before (opaque) stops painting
     at y 155; ::after (80%) runs to 176. The 21px strip between them is the
     "second bar of a different colour" - there, the 80% layer is sitting on
     .tunnel-mid's near-white gradient instead of on the opaque grey, so it
     goes pale. Cause: .tunnel-mid carries z-index 2 and ::before carries 0, so
     the mid's own background paints OVER the opaque layer near the bottom of
     the bar. The bar wins the stacking now, which puts the opaque grey behind
     the whole 177px and everything in the mid travels beneath it. */
  #webyayTunnel .tunnel-top{
    position: relative;
    background-image: none !important;
  }
  #webyayTunnel .tunnel-top::before{
    content: '';
    position: absolute;
    inset: 0;
    background-image: linear-gradient(135deg,
      rgb(97,97,99) 0%, rgb(153,154,155) 100%);
    /* full height: this is the opaque backdrop, behind everything */
    z-index: 0;
    pointer-events: none;
  }
  /* [Dave 9/5 12:35] "Make that top shorter opaque cover-up bar 80%
     translucent, and 4px taller."

     The short cover-up strip is the band above where .tunnel-mid starts
     (42.5) - that is the line content gets clipped at when it scrolls up.
     It runs at 80% now and is 46.5 tall (42.5 + his 4), so scrolled content
     reads faintly through the last 4px instead of vanishing at a hard edge.
     Same gradient across the same full-size box, clipped rather than resized,
     so it still composites to exactly the bar colour where nothing is behind
     it - no seam, no second tone. */
  #webyayTunnel .tunnel-top::after{
    content: '';
    position: absolute;
    inset: 0;
    background-image: linear-gradient(135deg,
      rgb(97,97,99) 0%, rgb(153,154,155) 100%);
    clip-path: inset(0 0 calc(100% - 46.5px) 0);
    opacity: 1;   /* [Dave 9/5 12:47] opaque - no translucency anywhere */
    z-index: 30;
    pointer-events: none;
  }
  /* the nav row rides above both */
  #webyayTunnel .tunnel-top__bar{
    position: relative;
    z-index: 31 !important;
  }
  /* "I'd like that upper concealing bar about 80% opacity, so you can just
     barely see the content flowing up underneath it." Same gradient, 80%
     alpha, with a light blur so what shows through reads as depth rather than
     as a mistake. */
  /* [REVERTED 9/5 4am] Everything I did to this bar tonight is out. I tried it
     three ways - lifting the main bar, making it see-through, moving the
     monitor to clear it, then a sticky translucent nav strip - and each pass
     broke something else: the monitor ended up behind the bar, and the bottom
     of the monitor and the styles pulldown got clipped. The tunnel is back to
     the way it looked before I started. The Create Account overlap is still
     open; it gets done properly, once, rather than in another three passes. */
}

/* ---- MOBILE: the hero toggle must stay on screen in phone view (Dave 9/5) -
   "when I switch to the mobile view those two toggles disappear."

   Cause: the phone-view hero is sized from the photograph (100vw x 2.1667),
   which comes out taller than the visible window once Safari's chrome is
   showing. The toggle was anchored to the hero's bottom, so it sat below the
   fold. Anchor it to the viewport instead - it now sits ~52px up from the
   bottom of whatever is actually visible, in both orientations and whether
   or not the URL bar is up. The desk view is unaffected: its hero is exactly
   one viewport tall, so its own bottom:11% already lands on screen. */
@media (max-width: 900px){
  /* [FIX] Dave 9/5: "it jumps about 20px when I toggle - it must be the exact
     same spot for either one."
     It was: the desk view anchored the toggle to the hero's bottom (11% of a
     one-viewport-tall box) and the phone view anchored it to the viewport, and
     the two only agreed when the hero was exactly a viewport tall. BOTH views
     use the same viewport anchor now, so the control cannot move when you
     switch. 145 = the 92.8px the desk view used to sit off the bottom, plus
     the 52px the toggle is tall. */
  .fdn-herodesk__toggle{
    bottom: auto !important;
    top: calc(100vh - 145px) !important;
    top: calc(100dvh - 145px) !important;
  }
}

/* ---- new monitor artwork (Dave 9/5) --------------------------------------
   "the stand's shadow was left as a white clipped background instead of a real
    translucent shadow - replace it, desktop and mobile."

   His new file is 958x710 with a genuine alpha shadow (18,810 partially
   transparent pixels where the old one had none), so the shadow now darkens
   whatever is behind it instead of punching a white hole in the dark band.

   Its bezel is thinner than the old art, so the screen box moves with it -
   read from the file's own transparent hole, not guessed: 22,23 to 930,555 of
   958x710. The hover overlay is that same box bled 0.8% past on every edge,
   the way it already was. Both breakpoints, and the two frame layers now use
   one file so the hover crossfade is a no-op rather than a jump.

   [reverted] I moved the screen box to the new file's hole and it was wrong:
   the card's visible frame is Dave's own outline SVG, not this PNG, and the
   screen box is tuned to THAT. Changing it pushed the render past his outline.
   The box stays where it was; only the artwork behind it changes. */
/* [reverted 9/5] The swap is not a drop-in: his new file has a much thinner
   bezel and a different stand, so on the dark band the monitor reads as an
   outline with two pale curves where the stand should be - worse than the
   halo it was meant to fix. The card's visible frame is his outline SVG and
   the screen box is tuned to that, so the artwork behind it has to match that
   geometry. Original artwork restored; this needs a proper pass, not a
   3am file rename. */

/* ---- MOBILE ONLY: Create Account content sits under the top bar (Dave 9/5) -
   "it's way too high and overlapping the top grey bar - it should start about
    20px below it, and scroll UNDER it, not over it."

   Measured: the bar runs 0 to 177.2 and the account step starts at y 92, so
   85px of the form is behind the header. Two parts: the header paints above
   the content (it had no z-index at all, while the card below it has 3, which
   is why the form was on top), and the step gets clearance so its first line
   starts below the bar rather than inside it. */
@media (max-width: 900px){
  /* [CORRECTED 9/5] I had this backwards. .tunnel-top IS the main grey bar,
     and Dave never wanted that one lifted or made see-through - the monitor is
     supposed to overlap it, the way it always did. What he asked for is the
     SHORT nav strip inside it (logo / Login / Close) to be the translucent
     concealing layer that content slides under. So the main bar goes back to
     no z-index, and the strip below gets the treatment instead. */
  /* NB the account flow is NOT inside #webyayTunnel - it lives in its own
     #accountFlowModal. My first two attempts scoped it to the tunnel and
     matched nothing, which is why the padding kept reading 0. */
  html body #accountFlowModal .account-flow-step[data-account-step="form"]{
    padding-top: 0 !important;       /* nothing forced while this is unresolved */
  }
}

/* ---- MOBILE ONLY: the bottom bar 13px shorter (Dave 9/5) -----------------
   "shorten that lower faint grey bar by about 13px, and the wizard attached to
    its top edge moves down 13 with it. The START button and the chat bubble
    stay exactly where they are."
   The bar is anchored to the bottom of the window, so taking 13 off its top
   padding moves its top edge - and the wizard chips riding it - down by 13,
   with the bottom edge unmoved. START is pulled back up by the same 13 so it
   does not travel with them; the chat bubble is a separate fixed element and
   was never affected. */
@media (max-width: 900px){
  #webyayTunnel .tunnel-bottom{
    padding-top: 7px !important;      /* 20 - 13 */
  }
  /* [checked] START needed no correction - shortening the top padding moves the
     bar's top edge and the chips, and the nav row keeps its own distance from
     the bottom. Measured: chips 739.3 -> 752.3 (down 13), START 786 -> 786. */
}

/* ---- MOBILE ONLY: the six option tiles back to two columns (Dave 9/5) -----
   These were a 2-up grid on phones and had gone back to one column. Nothing
   was reverted - the rest of the day's work is intact - but this rule is not
   in the file any more, and the likeliest explanation is one of my own
   block-replacements earlier tonight taking neighbouring lines with it.
   Re-stated here, guarded so a focused-away row still disappears rather than
   being forced back into view by the display:grid. */
@media (max-width: 900px){
  #webyayTunnel .tunnel-3tiles:not(.is-hidden-focused),
  #webyayTunnel [data-tunnel-3tiles]:not(.is-hidden-focused){
    display: grid !important;
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
    gap: 10px !important;
    align-items: stretch !important;
  }
  #webyayTunnel .tunnel-3tiles > *{ min-width: 0 !important; }
}

/* ---- new monitor + outline: NOT swapped, and here is why (Dave 9/5) ------
   I put both new files in, rendered the eight cards, and they do not register
   on each other. The outline SVG's viewBox is 118.378 x 85.913 - an aspect of
   1.378 - and the PNG is 958 x 710, an aspect of 1.349. The card stretches
   both corner-to-corner onto the same box, so at any size one of them is
   about 2% taller than the other and the screen box can only line up with one.
   On screen that shows as the site render pushing past the outline's corners.

   Not a code problem and not something to solve with more percentages: the
   two files need to come out of Illustrator at the same proportion. Export the
   outline on a 958 x 710 artboard (or the PNG at 118.378 x 85.913's ratio) and
   this becomes a two-line change. Original artwork left in place meanwhile;
   the new files are on the server as desktop-monitor-v4.png and
   desktop-outline-v9.svg, ready to point at. */

/* ---- MOBILE ONLY: the offer panel up 25px (Dave 9/5) ---------------------
   "Move all of this content together up about 25 pixels."
   .tunnel-mid__content is the block that holds the headline, the price, the
   included list and the two fields - moving it moves them as one, and nothing
   above it (the monitor, the style pulldown) shifts. Its own margin-top is
   -20, so -45 is the 25 he asked for. */
/* [Dave 9/5 1:05pm] Scoped. The -45 was meant for the offer panel only, but
   .tunnel-mid__content is the single shared box every wizard step renders
   into, so it was pulling the Email / Content / Logo steps up 25px too - which
   is why their text and toggles ran over the monitor. It now applies only
   while the FIRST .tunnel-card (the offer) is the current one; every other
   step keeps the template's own -20. */
@media (max-width: 900px){
  #webyayTunnel .tunnel-mid__content:has(> .tunnel-track > .tunnel-card:first-child.is-current){
    /* Dave 9/5 10:45pm: up another 25 on the first tile. -45 -> -70.
       Dave 9/5 11:35pm: the headline was overlapping the monitor - down 12.
       -70 -> -58. */
    margin-top: -58px !important;
  }
}

/* ==========================================================================
   NEW MONITOR ARTWORK ON THE EIGHT CARDS (Dave 9/5) — mobile and desktop
   "you screwed up the shadow so we need to swap."

   His two files, shipped byte-for-byte: dave-monitor-v10.png (958x710, the
   no-shadow cut-out) and dave-outline-v10.svg (his 118.378 x 85.913 path,
   untouched apart from a stroke-width so it carries the same visual weight as
   the outline it replaces).

   The reason this swap failed twice before: the two files do NOT share the
   same internal geometry, so stretching both corner-to-corner onto one card
   box leaves the outline about 2.7% narrower than the photograph and 3%
   shorter — the outline floats inside the monitor instead of tracing it.
   Measured from the files themselves:

       PNG body      x 0.104% .. 99.791%   y 0.141% .. 82.113%
       SVG body      x 2.761% .. 98.010%   y 3.189% .. 83.153%

   So the outline gets its own box, solved from those two pairs, which lands
   its body exactly on the photograph's body. The screen opening is the PNG's
   real transparent hole (x 22..930, y 23..555 of 958x710), so the site
   preview fills the glass with no bezel creep.

   Opacity behaviour is unchanged: outline 20% idle / 40% hover / 0 when
   chosen, photograph only when chosen. Same on both breakpoints. */
html body .fdn-card__frame--outline{
  inset: auto !important;          /* must come FIRST - the shorthand resets left/top */
  left: -2.786% !important;
  top:  -3.128% !important;
  width:  104.660% !important;
  height: 102.511% !important;
  object-fit: fill !important;
}
html body .fdn-card__screen{
  left:    2.296% !important;
  top:     3.239% !important;
  width:  94.885% !important;
  height: 75.070% !important;
}

/* ---- MOBILE ONLY: wizard steps down 10px + the clipped 'g' (Dave 9/5 1:30) */
@media (max-width: 900px){
  /* "lower all content 10px" - the offer panel keeps its own -45 (rule above);
     every other step moves from the template's -20 to -10. */
  #webyayTunnel .tunnel-mid__content:not(:has(> .tunnel-track > .tunnel-card:first-child.is-current)){
    margin-top: -10px !important;
  }

  /* "fix the cropped out bottom of the 'g'". The panel header is capped with
     max-height + overflow:hidden so it can collapse when a tile opens; at the
     top of its clamp range the descenders sit right on that cap and get shaved.
     The cap is only needed for the collapsed state, so the open state gets no
     cap and no clipping. The .is-collapsed rules are untouched, so the
     collapse behaviour is exactly as it was. */
  #webyayTunnel .tunnel-detail__heading--subquestion:not(.is-collapsed){
    max-height: none !important;
    overflow: visible !important;
    padding-bottom: 4px !important;
  }
}

/* [REVERTED 9/5 1:55pm] I disabled the .is-collapsed rules on phones so the
   panel header would stay visible. Wrong header: what that kept on screen was
   the step's own Yes/No question and its buttons, which are SUPPOSED to fold
   away the moment you answer Yes and drop into the category. Dave's missing
   header is the row label inside the panel, not this one. Collapse behaviour
   restored exactly as the template had it, both breakpoints. */

/* ---- MOBILE ONLY: step 04 up 10px (Dave 9/5 2:00pm) ----------------------
   "Move all content up 10 pixels on mobile here."
   04 is the one step that carries an eyebrow between the numbered badge and
   the headline, so it was deliberately excluded from the earlier header
   adjustments and now sits 10px lower than the rest. Pulling the eyebrow up
   takes the whole block with it; no other step matches this selector. */
@media (max-width: 900px){
  #webyayTunnel .tunnel-card__stepnum + .tunnel-card__eyebrow{
    margin-top: -10px !important;
  }
}

/* ---- MOBILE ONLY: the email rows go label-left / switch-right (Dave 9/5) --
   "It's supposed to be justified left with the on/off buttons at the same eye
    level as the headers on the left side. Nothing is supposed to be centered."

   Measured on the Email panel: the row is flex-wrap:wrap and the switch was
   landing at x299 with the label wrapping underneath it at x266 - both shoved
   to the right half and stacked, which is the "centered" look. The row itself
   inherits justify-content from .tunnel-payment-option, so the two children
   were being packed instead of spread.

   Label first and greedy, switch pinned to the right edge with margin-left
   auto, both on line one at the same centre line. The body and its OK keep
   their own full-width line underneath. Phones only. */
@media (max-width: 900px){
  /* the actual cause: .tunnel-email-choices is a GRID and each row was landing
     in a narrow right-hand track - measured 153px wide starting at x246, which
     is why the label and switch stacked and read as centered. One full-width
     column on a phone. */
  #webyayTunnel .tunnel-choices.tunnel-email-choices,
  #webyayTunnel .tunnel-choices{
    display: block !important;
  }
  /* Grid, not flex. As a flex row the label kept taking its own line and
     landing at x111 instead of x33 no matter how the ordering was set; a
     two-track grid places both explicitly and cannot wrap them apart:
     label in column 1 at the left edge, switch in column 2 at the right,
     vertically centred on each other. The body and its OK span both tracks
     on row 2. */
  /* [Dave 9/5 5:00pm] Switch FIRST, hard left - same as every other row on the
     page - with the label beside it. (I had these the other way round; his
     screenshot has them out at the far right.) Two tracks: the switch takes
     its own width in column 1, the label fills column 2. */
  #webyayTunnel .tunnel-payment-option.fdn-ecollapse{
    display: grid !important;
    grid-template-columns: auto 1fr !important;
    align-items: center !important;
    justify-items: start !important;
    column-gap: 14px !important;
    width: 100% !important;
    max-width: 100% !important;
  }
  #webyayTunnel .fdn-ecollapse > .fdn-ecollapse__toggle{
    grid-column: 1 !important;
    grid-row: 1 !important;
    justify-self: start !important;
    margin: 0 !important;
  }
  #webyayTunnel .fdn-ecollapse > .fdn-ecollapse__label{
    grid-column: 2 !important;
    grid-row: 1 !important;
    text-align: left !important;
    justify-self: start !important;
    margin: 0 !important;
    min-width: 0 !important;
  }
  #webyayTunnel .fdn-ecollapse > .fdn-ecollapse__body,
  #webyayTunnel .fdn-ecollapse > .fdn-ecollapse__ok,
  #webyayTunnel .fdn-ecollapse > .tunnel-choice{
    grid-column: 1 / -1 !important;
    width: 100% !important;
  }
}

/* ---- MOBILE ONLY: an expanded row must keep its label on top (Dave 9/5) ---
   "When you click yes on any of these they expand, but the title/header
    disappears - the very important header like 'Design + content notes'."

   It wasn't disappearing, it was being thrown to the bottom: measured, the
   label for 'Social media links' jumps from y933 to y1246 the moment the row
   opens - underneath the whole expanded body, off the visible area.

   Cause is mine. The rule that pulls the switch to the left edge of the row
   (9/4, "put the switches back, justified left") lists .tunnel-3row__control
   alongside the switch at order:-1, because on some row types the switch sits
   inside the control. On a row that OPENS, that same control is the expanded
   body - so the body was being ordered ahead of its own heading.
   Closed rows keep order:-1; an open row's body goes after the label. */
@media (max-width: 900px){
  #webyayTunnel .tunnel-3row.fdn-collapse.is-open > .tunnel-3row__control{
    order: 1 !important;
    margin-right: 0 !important;
  }
}

/* ---- the "view style" overlay follows the new screen box (Dave 9/5) -------
   "The blur and darkening isn't covering the video HTML - mobile halo fix."

   Same defect as 9/4, new cause: swapping in Dave's monitor artwork moved the
   screen opening to the PNG's own transparent hole (left 2.296% top 3.239%
   width 94.885% height 75.070%), but the overlay was still sized to the OLD
   screen box, so it sat inside the glass and the site showed around it.

   Re-derived from the current screen box, bled 0.4% past on every edge so it
   always overshoots onto the black bezel rather than undershooting. Both
   breakpoints - the mobile rule from 9/4 carried the old numbers too. */
html body .fdn-card__view,
html body #foundations .fdn-card__view{
  left:   1.896% !important;
  top:    2.839% !important;
  width:  95.685% !important;
  height: 75.870% !important;
  border-radius: 3px !important;
}

/* ---- MOBILE ONLY: the eight style captions (Dave 9/5 7:00pm) -------------
   "Move the title, description and on/off up about 8px so it sits closer to
    the bottom of the monitor; make the title about 15% larger; and put a thin
    horizontal gold separator line between each of the eight categories."

   Measured: .fdn-card__label carries margin-top:10px, so 2px is his 8 up and
   moves the whole caption block (name, switch, description) as one. The name
   is 14.75px, so +15% is 16.96 -> 17px. The separator is a hairline on the
   card itself, which puts it in the 22px grid gap, centred between one
   caption and the next monitor; the last card doesn't get one. */
@media (max-width: 900px){
  #foundations .fdn-card__label,
  html body .fdn-card__label{
    margin-top: 2px !important;
  }
  /* NB an earlier mobile rule sets this as #foundations .fdn-card__name
     (14.75px). An ID beats html+body no matter how many !importants are on
     it, so this has to carry the ID too - measured 14.75 -> 17. */
  #foundations .fdn-card__name,
  html body .fdn-card__name{
    font-size: 17px !important;
  }
  /* [Dave 9/5 11pm] "15px shorter on both ends." A border-bottom always spans
     the full box, so the line is drawn as a background instead - one pixel
     tall, inset 15px left and right, pinned to the bottom edge. .fdn-card
     already uses ::after for something else, so this deliberately avoids it. */
  html body .fdn-grid > .fdn-card{
    padding-bottom: 20px !important;
    border-bottom: 0 !important;
    background-image: linear-gradient(rgba(239,170,21,.55), rgba(239,170,21,.55)) !important;
    background-repeat: no-repeat !important;
    background-position: 15px 100% !important;
    background-size: calc(100% - 30px) 1px !important;
  }
  html body .fdn-grid > .fdn-card:last-child{
    background-image: none !important;
    padding-bottom: 0 !important;
  }
}

/* ---- MOBILE ONLY: the eight monitors sit 14px left of centre (Dave 9/5) --
   Measured at 430 wide: the card is centred inside its own box (26px each
   side), but #foundations.fdn-grid resolves margin-left to -14px against
   main's 14px padding and nothing balances it on the right - so the whole
   column, monitors and captions together, is pulled 14px left. Painted
   content ran x26..389.5 in a 430 viewport: 26 left, 40.5 right.
   Symmetric auto margins put the overflow evenly on both sides. */
@media (max-width: 900px){
  /* [Dave 9/5, second pass] -7/-7 centred it at 430 in my harness but not on
     his phone: it only cancels the -14 that main's 14px padding happens to
     produce at that one width, and the grid also carries width:82vw and
     max-width:430px, so the numbers move with the device.

     Deterministic instead: no negative margins, no vw width - the grid simply
     fills main's content box, and main's own padding is already equal on both
     sides. That centres at any width without arithmetic. The card ends up
     402 wide instead of 416 at a 430 viewport (~3% narrower monitors), which
     is the price of it actually being centred on every device. */
  html body #foundations.fdn-grid{
    width: 100% !important;
    max-width: 100% !important;
    margin-left: 0 !important;
    margin-right: 0 !important;
  }
}

/* ---- MOBILE ONLY: the per-row OK is a button, not a bar (Dave 9/5) -------
   "I don't want these OK buttons to be the full width of the browser - normal
    size, a little larger than the word OK, solid gold with white text,
    centred."

   They were full width because of my own rule from earlier tonight: to stop
   an expanded row's body being squeezed into a sliver I gave every child of
   an open row flex:0 0 100%. That was right for the body and the fields and
   wrong for the OK. It gets its own width back here, plus the gold fill.
   Desktop keeps its quiet white pill. */
@media (max-width: 900px){
  #webyayTunnel .fdn-collapse.is-open .fdn-collapse__ok,
  #webyayTunnel .fdn-ecollapse.is-open .fdn-ecollapse__ok,
  #webyayTunnel .fdn-collapse > .fdn-collapse__ok,
  #webyayTunnel .fdn-ecollapse > .fdn-ecollapse__ok{
    /* [measured] auto margins computed to 0 here: the OK is inline-flex and
       its parent (.tunnel-3row__control) is a plain block, and auto margins
       on an inline-level box resolve to zero. Block-level flex with a
       fit-content width is what actually lets them centre it. */
    display: flex !important;
    flex: 0 0 auto !important;
    width: fit-content !important;
    max-width: none !important;
    min-width: 0 !important;
    margin-left: auto !important;
    margin-right: auto !important;
    padding: 8px 30px 9px !important;
    background: #EFAA15 !important;
    border: 0 !important;
    border-radius: 999px !important;
    color: #fff !important;
    font-weight: 400 !important;
    text-align: center !important;
    justify-content: center !important;
    align-self: center !important;
    justify-self: center !important;
  }
  /* the grid rows need it told which track to sit in, or auto margins have
     nothing to centre against */
  #webyayTunnel .fdn-ecollapse > .fdn-ecollapse__ok{
    grid-column: 1 / -1 !important;
  }
}

/* ---- MOBILE ONLY: rail down 10, icons 3 closer, and the black right edge --
   (Dave 9/5 9:20pm)

   1. Rail bottom 88 -> 78 (down 10 on screen).
   2. The two glyphs 3px closer. The rail carries transform:scale(1.25), so a
      3px change on screen is 2.4px of gap: 16 -> 13.6.
   3. "A black gap all the way up the right side in the phone-in-hand view
      that isn't there in the desktop view." That is mine and it is exactly the
      centring shift: the scene is pulled left 2.625% (to put the cut-out phone
      dead centre) but kept width:100%, so its right edge stopped 2.625% short
      and the black shell showed through. Width goes to 102.625% - the same
      amount it was shifted - so it reaches the right edge again with the phone
      still centred. */
/* [CORRECTED 9/5 9:35pm] I moved the wrong control. The nav Dave is looking at
   in the hero is .fdn-herodesk__toggle - measured, .fdn-rail is
   visibility:hidden / opacity:0 in that view, so my change to it did nothing
   at all (which is why it read as "the opposite"). The rail's own numbers are
   put back exactly as they were, and the adjustments go on the toggle:

     down 20px   - it is anchored top: calc(100dvh - 145px); a SMALLER
                   subtrahend moves it DOWN, so 145 -> 125.
     3px closer  - the two buttons are flush (gap:0) and each is 48px wide,
                   so the spacing lives in their padding: measured glyph-to-
                   glyph 22.06, take 3 off with -1.5px of inline padding each. */
@media (max-width: 900px){
  html body .fdn-herodesk__toggle{
    top: calc(100vh - 125px) !important;
    top: calc(100dvh - 125px) !important;
  }
  html body .fdn-herodesk__toggle .fdn-herodesk__dev{
    padding-left: 0 !important;
    padding-right: 0 !important;
    margin-left: -1.5px !important;
    margin-right: -1.5px !important;
  }
  html body .fdn-herodesk__phonescene{
    width: 102.625% !important;
  }
}

/* ---- MOBILE ONLY: kill iOS's focus zoom (Dave 9/5 10:30pm) ---------------
   "Eliminate any and all of the auto zoom when the keyboard comes up - it
    completely ruins everything, they're lost and have to pinch back out."

   iOS Safari zooms the page whenever a text control it is focusing has a
   computed font-size UNDER 16px. There is no other switch: user-scalable=no
   has been ignored since iOS 10, and maximum-scale is unreliable. 16px on the
   control is the fix, and it is the only reliable one.

   Audited every field on the page at 430px wide. These were under the line and
   were each a zoom trigger:
       .fdn-weburl__input        12.20px   <- the web address / email row he tapped
       .file-field__input        12.00px
       (unclassed inputs)        12.00px
       .font-choice-radio et al  15.00px
       misc unstyled inputs      13.33px
   Checkboxes, radios and range sliders are excluded - they take no text entry
   and never trigger the zoom, so their sizing is untouched. Note this does
   make the text inside the smallest fields render larger; that is the trade
   for never zooming. Phones only - desktop is not affected at all. */
@media (max-width: 900px){
  html body input:not([type="checkbox"]):not([type="radio"]):not([type="range"]):not([type="color"]):not([type="hidden"]),
  html body textarea,
  html body select{
    font-size: 16px !important;
  }
  /* [measured] These two were still 12.20px after the rule above: they are set
     as #webyayTunnel .fdn-weburl__input, and an ID beats html+body no matter
     how many !importants are on it. Same cascade trap as the card name
     earlier. This is the one field in his screenshot. */
  #webyayTunnel input,
  #webyayTunnel textarea,
  #webyayTunnel select,
  #accountFlowModal input,
  #accountFlowModal textarea,
  #accountFlowModal select{
    font-size: 16px !important;
  }
  #webyayTunnel input[type="checkbox"],
  #webyayTunnel input[type="radio"],
  #webyayTunnel input[type="range"],
  #accountFlowModal input[type="checkbox"],
  #accountFlowModal input[type="radio"]{
    font-size: inherit !important;
  }
}

/* [measured, third pass] The web-address / email row is set by
   `#webyayTunnel .fdn-contact-row .fdn-field > input` at 12.2px !important -
   specificity (1 id, 3 classes), which beats `#webyayTunnel input` (1 id, 1
   element) however many !importants it carries. Matching its shape and adding
   html+body puts this above it. This is the exact field in the screenshot. */
@media (max-width: 900px){
  html body #webyayTunnel .fdn-contact-row .fdn-field > input,
  html body #webyayTunnel .fdn-contact-row .fdn-field > textarea,
  html body #webyayTunnel .fdn-weburl__input,
  html body #accountFlowModal .account-flow-step input,
  html body #accountFlowModal .account-flow-step textarea{
    font-size: 16px !important;
  }
}

/* ---- MOBILE ONLY: an expanded email row must not crush its own label ------
   (Dave 9/5 10:40pm)  "Clicking yes totally screws up the formatting - the
   header gets pushed way over into a five-pixel-wide column."

   Measured, closed vs open:
       closed   grid-template-columns: 46px 300px    label x93  w112
       open     grid-template-columns: 346px 0px     label x393 w49
   Opening adds a fifth child (.tunnel-email-addresses) that carries
   grid-column:auto, so it drops into column ONE and its 346px of content
   forces that column wide - leaving 0px for the label's column, which is the
   sliver of vertical letters. Only the toggle and the label belong in the two
   tracks; everything else spans the full row. Stated as a blanket rule so a
   child the template adds later cannot do this again. */
@media (max-width: 900px){
  #webyayTunnel .tunnel-payment-option.fdn-ecollapse{
    grid-template-columns: auto minmax(0, 1fr) !important;
  }
  #webyayTunnel .fdn-ecollapse > *:not(.fdn-ecollapse__toggle):not(.fdn-ecollapse__label){
    grid-column: 1 / -1 !important;
    grid-row: auto !important;
    width: 100% !important;
    min-width: 0 !important;
  }
  #webyayTunnel .fdn-ecollapse > .fdn-ecollapse__label{
    grid-column: 2 !important;
    grid-row: 1 !important;
    min-width: 0 !important;
    white-space: normal !important;
  }
}

/* ---- MOBILE ONLY: the plan captions belong to the button ABOVE them -------
   (Dave 9/5 10:45pm) "The descriptor under each button is sitting on top of
   the button below it - it reads as if it belongs to that one."

   Measured on the care plans: pill -> its caption was 5px, caption -> the next
   pill was 12px. Close enough that the eye groups it downward. Tightened to 3
   above and opened to 24 below, so each caption is unmistakably part of the
   button it describes. Phones only. */
@media (max-width: 900px){
  #webyayTunnel .tunnel-payment-caption{
    margin-top: 3px !important;
  }
  #webyayTunnel .tunnel-payment-option + .tunnel-payment-option,
  #webyayTunnel .tunnel-choices > .tunnel-payment-option + .tunnel-payment-option,
  /* [measured] "Files Only" carries .tunnel-care-hand with its own 12px, so it
     needed naming or it stayed tight against the caption above it. */
  #webyayTunnel .tunnel-payment-option.tunnel-care-handoff-option,
  #webyayTunnel .tunnel-payment-option.tunnel-care-hand{
    /* Dave 9/5 11:10pm: 5px tighter between the buttons. 24 -> 19. */
    margin-top: 19px !important;
  }
  /* and half the space between the heading and the first button: 22 -> 11 */
  #webyayTunnel .tunnel-detail__heading--subquestion,
  #webyayTunnel .tunnel-detail__heading--sub{
    margin-bottom: 11px !important;
  }
}

/* ---- MOBILE ONLY: the hero headline (Dave 9/5 11pm) ----------------------
   "Slightly heavier and open the kerning a bit - not drastic."
   Measured: weight 400, letter-spacing -1.348px (a tight negative track, which
   is what made it read cramped). 400 -> 450 and -1.348 -> -0.55.

   NB you set a standing rule that nothing on this page goes heavier than 400.
   450 is only reachable because Plus Jakarta Sans is loaded as a variable
   font, and it is a half-step, not a jump to 500 - but it IS above your
   ceiling, so say the word and I'll put it back to 400 and open the kerning
   further instead. */
@media (max-width: 900px){
  html body .fdn-herodesk__head{
    font-weight: 450 !important;
    letter-spacing: -0.55px !important;
  }
}

/* ---- MOBILE ONLY: drop the 01 / 02 step badges (Dave 9/5 11:05pm) --------
   "Remove all the numbers in circles on mobile, keep desktop untouched, and
    move the headers and content up to compensate."

   Measured: the badge is 24.9px tall with a 10px bottom margin, so display:none
   reclaims 34.9px on its own and everything below rises by exactly that. The
   badge stays in the DOM (display, not removal) so the sibling selectors that
   position the 04 eyebrow and the question still match. Desktop is untouched -
   this whole block is inside the phone query. */
@media (max-width: 900px){
  html body #webyayTunnel .tunnel-card__stepnum{
    display: none !important;
  }
}

/* ---- MOBILE ONLY: the two contact fields go nearly full width (Dave 9/5) --
   "Make them wider - about 6px apart in the middle and 7-8px from each edge of
    the phone browser, responsive to whatever phone it is."

   The row sits inside the tunnel's padded content column, so reaching the
   screen edges takes the full-bleed trick rather than a fixed negative margin:
   margin-left: calc(50% - 50vw + 8px) puts the left edge exactly 8px from the
   viewport whatever the container padding is, and width: calc(100vw - 16px)
   does the same on the right. Works at 360, 390, 430 or anything else without
   a single hard-coded number. Column gap 6px. Phones only. */
@media (max-width: 900px){
  html body #webyayTunnel .fdn-contact-row{
    width: calc(100vw - 16px) !important;
    max-width: calc(100vw - 16px) !important;
    margin-left: calc(50% - 50vw + 8px) !important;
    margin-right: 0 !important;
    column-gap: 6px !important;
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
  }
  html body #webyayTunnel .fdn-contact-row > *{
    min-width: 0 !important;
  }
  html body #webyayTunnel .fdn-contact-row .fdn-field > input{
    width: 100% !important;
    max-width: 100% !important;
    box-sizing: border-box !important;
  }
}

/* ---- MOBILE ONLY: pay-plan buttons tighter than care plans (Dave 9/5) -----
   The 19px sits right for the CARE plans, because each of those has a caption
   between it and the next button. The PAY PLAN buttons have no captions, so
   the same 19 reads as far too much air. Scoped by what the option contains:
   .tunnel-payment-choice = the pay plan list -> 10px. The care list is
   untouched at 19. */
@media (max-width: 900px){
  html body #webyayTunnel .tunnel-payment-option:has(> .tunnel-payment-choice)
    + .tunnel-payment-option:has(> .tunnel-payment-choice){
    margin-top: 10px !important;
  }
}

/* ---- MOBILE ONLY: tighten the final review slide (Dave 9/5 11:20pm) -------
   "Way too spread out - make the padding between these areas half of what you
    have." Measured on step 04: .tunnel-summary row-gap 6, item padding 4/4,
    list-bottom to total 39px, total to checkout 14px. Everything the summary
    controls is halved; the numbers the shared template owns for desktop are
    untouched because this is inside the phone query. */
@media (max-width: 900px){
  html body #webyayTunnel .tunnel-summary{ row-gap: 3px !important; }
  html body #webyayTunnel .tunnel-summary__item{
    padding-top: 2px !important;
    padding-bottom: 2px !important;
  }
  html body #webyayTunnel .tunnel-summary__list{
    row-gap: 0 !important;
    margin-bottom: 0 !important;
  }
  html body #webyayTunnel .tunnel-summary__total{
    margin-top: 0 !important;
    padding-top: 0 !important;
  }
  html body #webyayTunnel .tunnel-summary__checkout-cta{ row-gap: 4px !important; }
  html body #webyayTunnel .tunnel-summary hr,
  html body #webyayTunnel .tunnel-summary__rule,
  html body #webyayTunnel .tunnel-summary [class*="divider"]{
    margin-top: 6px !important;
    margin-bottom: 6px !important;
  }
}

/* ---- MOBILE ONLY: the hero headline back to two lines (Dave 9/5 11:30pm) --
   Measured: the block is capped at max-width 292.8px inside a 367px slot
   (left 30, right 33 of a 430 viewport), so opening the kerning tipped
   "here." onto a third line. The cap is removed and the left/right anchors
   define the width instead - which stays responsive at any phone size. */
@media (max-width: 900px){
  html body .fdn-herodesk__head{
    max-width: none !important;
    width: auto !important;
  }
}

/* ---- MOBILE ONLY: the two gold field labels line up with the copy above ---
   (Dave 9/5 11:30pm) Measured: the copy above the row starts at x33; after the
   fields went nearly full-bleed their labels sit at x8.5 and x218.5. The
   labels alone are indented by the 24.5px difference - the inputs are not
   touched, so the fields stay exactly where they are. */
@media (max-width: 900px){
  html body #webyayTunnel .fdn-contact-row .fdn-field__label{
    /* margin, not padding: padding moves the text but leaves the box where it
       was, so it could not be verified by measurement. */
    margin-left: 24.5px !important;
  }
}

/* ---- MOBILE ONLY: a uniform 5.4px black bezel (Dave 9/5 11:40pm) ---------
   Painted as an inset ring over the render rather than left as empty space,
   which is the only way it can be identical on all four sides given the page
   and the screen opening are different aspect ratios. 7.7 - 30% = 5.4. */
/* [REVERTED 9/5 11:55pm] The painted ring covered the style site's own top
   nav inside the frame. Removed - nothing is drawn over the render. */

/* ---- MOBILE ONLY: monitor + style pulldown up 5px (Dave 9/5 11:45pm) -----
   The pair is positioned by .tunnel-intro__stage / .fdn-stylepick margin-top,
   measured at 1px. 1 -> -4. Nothing else moves. */
@media (max-width: 900px){
  html body #webyayTunnel .tunnel-intro__stage,
  html body #webyayTunnel .fdn-stylepick{
    /* Dave 9/6: monitor, its frame and the style pull-down all down 8. -4 -> 4 */
    margin-top: 4px !important;
  }
}

/* ---- the WebYay wordmark replaces the WG mark in the tunnel (Dave 9/5) ----
   His file is a horizontal lockup, 288.165 x 66.646 = 4.32:1, where the old
   WG mark was roughly square. Height has to come down or the same 31.5px would
   render 136px wide and run into Login / Create Account. Sized so the wordmark
   occupies a similar footprint to the mark it replaces. */
#webyayTunnel .tunnel-top__logo{
  height: 26px !important;
  width: auto !important;
}
@media (max-width: 900px){
  html body #webyayTunnel .tunnel-top__logo{
    height: 17px !important;
    width: auto !important;
    transform: translateX(50px) translateY(0) !important;
  }
}

/* ---- MOBILE ONLY: the offer headline and the block under it (Dave 9/6 12am)
   Two separate moves, measured on the offer card:
     .tunnel-card__question  margin-top 14 -> 24   (headline DOWN 10, it was
                             still crowding the monitor above it)
     .tunnel-detail          margin-top  0 -> -20  (the $57/mo block, the
                             INCLUDED list and the two fields UP 20)
   Scoped to the first tile so the wizard steps keep their own spacing. */
@media (max-width: 900px){
  html body #webyayTunnel .tunnel-card:first-child .tunnel-card__question{
    /* Dave 9/6: the monitor went down 8, so the headline follows it down 8
       to keep the 4.9px gap it was signed off at. 24 -> 32.1. */
    margin-top: 32.1px !important;
  }
  html body #webyayTunnel .tunnel-card:first-child > .tunnel-detail{
    margin-top: -20px !important;
  }
}

/* ---- MOBILE ONLY: one spec for every wizard step header (Dave 9/6) --------
   He handed back the measured spec off the offer card and asked for it on the
   other step headers. Measured before, at 430px, on .tunnel-card__question:

     font-family    "Plus Jakarta Sans"   already matched
     font-weight    400                   already matched
     letter-spacing 0.192px               already matched
     colour         rgb(106,107,109)      already matched
     text-align     start / no transform  already matched
     font-size      30px on most cards, 30.53px on the pay-plan and the
                    review card (they carry their own clamp)
     line-height    33.9px / 34.4989px on those same two
     max-width      none, except 560px on the review card
     margin-top     24px on the first card only; 14px on every other card
     margin-bottom  10px                   already matched
     left edge      x = 33px               already matched on all

   So the only live deltas are size on two cards, max-width on one, and the
   24px top on the rest. Everything is stated explicitly anyway so the four
   headers cannot drift apart again.

   Specificity: html body + #webyayTunnel + two classes beats both the
   #webyayTunnel 14px rule above and .tunnel-card[data-summary-detail] on the
   review card. The desktop 60% trial block lives in min-width:901px and is
   not touched. */
@media (max-width: 900px){
  html body #webyayTunnel .tunnel-card .tunnel-card__question{
    font-family: "Plus Jakarta Sans", Arial, sans-serif !important;
    font-size: 30px !important;
    font-weight: 400 !important;
    letter-spacing: 0.192px !important;
    line-height: 33.9px !important;
    color: rgb(106, 107, 109) !important;
    text-align: start !important;
    text-transform: none !important;
    max-width: none !important;
    margin: 24px 0 10px !important;
  }
}

/* ---- MOBILE ONLY: offer card content up another 10 (Dave 9/6) ------------
   The $57/mo block, the INCLUDED list and the two fields. Measured
   .tunnel-card:first-child > .tunnel-detail margin-top -20px -> -30px. */
@media (max-width: 900px){
  html body #webyayTunnel .tunnel-card:first-child > .tunnel-detail{
    margin-top: -30px !important;
  }
}

/* ---- MOBILE ONLY: Transition Questions up 6 (Dave 9/6) -------------------
   Measured .fdn-contact-foot margin-top 12px -> 6px. Nothing else moves;
   it is the last thing in the card so nothing follows it. */
@media (max-width: 900px){
  html body #webyayTunnel .fdn-contact-foot{
    margin-top: 6px !important;
  }
}

/* ---- MOBILE ONLY: INCLUDED block and everything under it up 4 (Dave 9/6) --
   His crop starts at INCLUDED, not at $57/mo, so the price stays put and the
   move starts one element lower than the last one did. Measured
   .fdn-included-row margin-top 3px -> -1px; the pill grid, the two fields and
   Transition Questions all follow it in normal flow. */
@media (max-width: 900px){
  html body #webyayTunnel .tunnel-card:first-child .fdn-included-row{
    margin-top: -1px !important;
  }
}

/* ---- MOBILE ONLY: put every step header at tile 1's height (Dave 9/6) -----
   He said the other headers sit "way too low", and he is right - the blanket
   margin:24px above overrode an older rule that used to zero the top margin
   on the cards that carry a (now hidden) 01/02 step number. Measured at 430px,
   gap between the art above and the top of the header:

     tile 1 (the offer card)          4.9px    <- the reference
     cards 1-4 (.tunnel-qa)          16.6px    11.7 too low
     card 5 (payment)                11.6px     6.7 too low
     card 6 (summary)                27.6px    22.7 too low

   Every one of those cards starts at the same y (417.6) with the same 7px
   pad; the spread comes from what sits between the pad and the header:
   .tunnel-qa adds a wrapper, the payment card has a zero-height eyebrow, and
   the summary card's eyebrow is a real 16px tall. So the top margin absorbs
   the difference and all four land on 4.9px, matching tile 1 exactly.
   Type spec, colour, left edge and bottom margin are unchanged. */
@media (max-width: 900px){
  html body #webyayTunnel .tunnel-qa .tunnel-card__question{
    margin-top: 12.3px !important;
  }
  html body #webyayTunnel .tunnel-card[data-cat-id="payment"] .tunnel-card__question{
    margin-top: 17.3px !important;
  }
  html body #webyayTunnel .tunnel-card[data-summary-detail="true"] .tunnel-card__question{
    margin-top: 1.3px !important;
  }
}

/* ---- MOBILE ONLY: the same spec on the section headers (Dave 9/6) --------
   The six he sent: Smart forms, Custom logo, Choose your additional inside
   pages, Email Services, Choose your Fonts, Choose your Design + Content.
   Measured before, at 430px:
     .tunnel-detail__heading--subquestion   28px / 33.6px / mt 14 / mb 5-11
     .tunnel-detail__heading--logohead      20px / 26px   / mt 14 / mb 8
   Both already at 400 weight, 0.192px tracking, #6A6B6D and x = 33. Size,
   leading, max-width and margin are what change. */
@media (max-width: 900px){
  html body #webyayTunnel .tunnel-detail__heading,
  html body #webyayTunnel .tunnel-3tile-panel__title{
    font-family: "Plus Jakarta Sans", Arial, sans-serif !important;
    font-size: 30px !important;
    font-weight: 400 !important;
    letter-spacing: 0.192px !important;
    line-height: 33.9px !important;
    color: rgb(106, 107, 109) !important;
    text-align: start !important;
    text-transform: none !important;
    max-width: none !important;
    margin: 24px 0 10px !important;
  }
}

/* ---- MOBILE ONLY: the WebYay wordmark in the tunnel bar (Dave 9/6) -------
   Measured: height 17px, transform translateX(50px) translateY(0).
   10% larger -> 18.7px; left 15 -> translateX(35px); down 8 -> translateY(8px). */
@media (max-width: 900px){
  html body #webyayTunnel .tunnel-top__logo{
    height: 18.7px !important;
    width: auto !important;
    transform: translateX(35px) translateY(8px) !important;
  }
}

/* ---- MOBILE ONLY: the Create Account panel starts BELOW the grey bar ------
   Dave 9/6, and he is right that this has been asked repeatedly. Here is what
   was actually wrong, measured this time instead of guessed:

     .tunnel-top (the grey bar)   y 0 -> bottom 195.7,  z-index auto,
                                  inside #webyayTunnel  (fixed, z-index 99999)
     #accountFlowModal            fixed, z-index 100000, a sibling of the
                                  tunnel on BODY - one layer ABOVE it
     .account-flow-modal__panel   fixed, top 69px, padding-top 0, transparent
     the gold CREATE ACCOUNT      y 73  - i.e. 122px INSIDE the bar

   So the form was never "a bit high": its scroll box literally starts 126px
   up inside the bar, and because the modal outranks the whole tunnel on z,
   every line painted on top of the bar instead of under it. Raising the bar
   cannot fix that - it lives inside a 99999 stacking context, so a descendant
   can never climb past the modal's 100000.

   The fix needs no z-index at all: move the scroll box itself down to the
   bar's bottom edge. top 69 -> 195.7 puts the panel's top exactly on the seam,
   padding-top 15 puts the gold eyebrow 15px below it as asked, and because the
   panel is overflow:auto anything scrolled past the top is clipped at that
   same seam - which reads as the text sliding under the bar, permanently,
   with nothing left to fight over stacking order.

   The bar, the monitor and the tunnel's own layering are untouched.

   [9/6, second pass] The hard 195.7px lived here for one build and was wrong:
   the bar measures 195.7 at 430px but 178.9 at 393px. seatAccountPanel() in
   foundations.js measures it instead and owns top / height / padding, so this
   rule is deliberately empty - the only thing left here is the note. */
@media (max-width: 900px){
  html body #accountFlowModal .account-flow-step > *:first-child{
    margin-top: 0 !important;
  }
}

/* ---- MOBILE ONLY: "Back to checkout" centred, lifted, arrow right --------
   Dave 9/6. Measured before: position absolute, right 14px, top 50%,
   translateY(-50%), flex-direction row with the arrow first - so it sat hard
   right, level with NEXT, and landed on top of both NEXT and the chat bubble.

   Centred on .tunnel-bottom (which measures 433px wide starting at x -3 on a
   430px screen, so the +1.5px puts the pill on the SCREEN centre, not the
   host's), lifted 25, and the row reversed so the arrow trails the label.
   The glyph in the markup is a left arrow and is shared with desktop, so it
   is mirrored here rather than swapped - scaleX(-1) on an arrow is exactly
   the right-pointing one. Desktop keeps right:28px and the leading arrow. */
@media (max-width: 900px){
  html body #webyayTunnel .fdn-backcheckout{
    right: auto !important;
    left: calc(50% + 1.5px) !important;
    transform: translate(-50%, calc(-50% - 25px)) !important;
    flex-direction: row-reverse !important;
  }
  html body #webyayTunnel .fdn-backcheckout > span[aria-hidden="true"]{
    display: inline-block !important;
    transform: scaleX(-1) !important;
  }
}

/* ---- MOBILE ONLY: the eight panel groups up 25 (Dave 9/6) ----------------
   Smart forms, Custom logo, Additional Page 1 of 1, Choose your additional
   inside pages, Email Services, Choose your Fonts, Choose your Design +
   Content, What do you need?. Every one of them lives inside that card's
   .tunnel-detail - the 3tile panels are nested in it - so one move on the
   detail box carries the whole group and leaves the card's own question
   where seatStepHeaders put it. Measured margin-top 0 -> -25.
   Scoped by cat-id to the four cards he sent: the payment and review cards
   were not in the screenshots and are not touched. */
@media (max-width: 900px){
  html body #webyayTunnel .tunnel-card[data-cat-id="changes"] > .tunnel-detail,
  html body #webyayTunnel .tunnel-card[data-cat-id="pages"] > .tunnel-detail,
  html body #webyayTunnel .tunnel-card[data-cat-id="logo"] > .tunnel-detail,
  html body #webyayTunnel .tunnel-card[data-cat-id="care"] > .tunnel-detail{
    margin-top: -25px !important;
  }
}

/* ---- MOBILE ONLY: the checkout block up 20 (Dave 9/6) -------------------
   The price, the Secure Checkout button, the Stripe line and the card marks
   all sit in .tunnel-summary__checkout-row, which carries the gap under the
   gold rule as padding. Measured padding-top 30.5px -> 10.5px. */
@media (max-width: 900px){
  html body #webyayTunnel .tunnel-summary__checkout-row{
    padding-top: 10.5px !important;
  }
}

/* ---- MOBILE ONLY: Secure Checkout dead centre on the screen (Dave 9/6) ---
   Measured: button centre 209.5 against a screen centre of 215 - 5.5px left.
   Its row starts at x 33 but ends 54px short of the right edge, so the whole
   block was off-centre and the button inherited it. Rather than nudge it by a
   number that only holds at 430px, the pill is given symmetric insets off the
   viewport itself - the same full-bleed maths used on the contact fields - so
   it centres on any phone. 48.5px each side reproduces the current 333px
   width exactly at 430.

   [second pass] The calc(50% - 50vw) full-bleed idiom only centres when the
   PARENT is centred in the viewport, and this row is not - it starts at x 33
   and stops 54px short of the right edge. Applying it moved the pill from
   5.5px left of centre to 10.5px left of centre. Removed; centreCheckoutBtn()
   in foundations.js measures the pill against the screen and nudges it, which
   holds at any width. This block is left empty on purpose. */

/* ---- MOBILE ONLY: "Let's figure this out later" is not a full-width bar ---
   Dave 9/6. Measured: .tunnel-care-access__skip sits in a display:grid parent
   with no justify-self, so it stretched the full 365px column and read as a
   primary action. Half width, hard left - which is also how its twin on the
   tile grid already behaves. Desktop keeps the full-width treatment. */
@media (max-width: 900px){
  html body #webyayTunnel .tunnel-care-access__skip{
    justify-self: start !important;
    /* [CORRECTED - Dave 9/7] width:50% was his 9/6 ask ("not a full-width
       bar"). Since then the pill gained the right-facing arrow, and 50% is no
       longer wide enough for the label - it broke to two lines.
       width:auto keeps it content-sized, which is still nothing like a
       full-width bar, and nowrap guarantees the one line he wants. max-width
       caps it so a long label can never overrun the card. */
    width: auto !important;
    max-width: 100% !important;
    white-space: nowrap !important;
    min-width: 0 !important;
  }
}

/* ---- MOBILE ONLY: the scroll-in top nav, rebuilt (Dave 9/6) ---------------
   "Not sure where it went, but you got rid of it?"  It was never removed -
   the markup, the hamburger, the search and the fade are all still in the
   page. Measured what actually happens on a phone:

     .wg-topbar   position sticky, opacity 0 at rest, opacity 1 and
                  rgba(255,255,255,.78) + blur(20px) once scrolled - all
                  correct - but at scrollY 400 its top measured y = -400.

   It scrolls straight off the screen. position:sticky is cancelled by an
   ancestor that clips, and BODY on this page is overflow hidden on both
   axes, so the bar could never stick no matter what the fade did. That is
   the whole bug. Fixed on mobile, which sticky was only ever approximating.

   The rest is what he asked for on top of that: nothing at all before the
   scroll, a clear glass bar fading in gradually after 100px, the small
   WebYay wordmark at tunnel size on the left in white, and the magnifying
   glass and hamburger together in the top right corner - search first,
   hamburger hard right. The long text links have no room on a phone and
   stay in the hamburger menu where they already live.

   The white marks come from a filter, not from new artwork - his files are
   never re-cut. Desktop keeps sticky, the full link row and the gold
   wordmark; every rule here is inside the phone query. */
/* [Dave 9/6, REGRESSION FIX] The first version of this block set
   position:fixed, height:56px, its own padding and its own margin on the
   header, inside a max-width:900px query. All four were wrong:

     - the template ALREADY runs a fixed 64px header below 760px, and pairs
       it with a self-cancelling compensation on the hero
       (margin-top:-64px / padding-top:calc(64px + ...)) sized to exactly
       64px. Re-declaring position and forcing 56px broke the pair, which is
       what threw the whole page up off the top of the screen on a real
       device while a desktop window at phone width still looked fine.
     - 900px straddles two different header systems: the template switches
       at 760. Matching its breakpoint means never fighting it.

   So nothing structural is set here any more - no position, height, padding
   or margin. The template owns the box; this block only paints it and
   arranges what is inside. */
@media (max-width: 760px){
  html body .wg-topbar.fdn-topbar-auto,
  html body header.wg-topbar{
    align-items: center !important;
    background: rgba(16, 18, 20, .30) !important;
    -webkit-backdrop-filter: blur(18px) saturate(1.3) !important;
    backdrop-filter: blur(18px) saturate(1.3) !important;
    border: 0 !important;
    box-shadow: none !important;
  }

  /* the wordmark: left, tunnel size, white */
  html body .wg-topbar .wg-logo-link{
    position: relative !important;
    top: 0 !important;
    margin: 0 auto 0 0 !important;
    display: flex !important;
    align-items: center !important;
    line-height: 0 !important;
  }
  html body .wg-topbar .wg-logo{
    height: 18.7px !important;
    width: auto !important;
    transform: none !important;
    filter: brightness(0) invert(1) !important;
  }

  /* search then hamburger, hard right */
  html body .wg-topbar .wg-nav{
    display: flex !important;
    align-items: center !important;
    gap: 4px !important;
    margin-left: auto !important;
    padding: 0 !important;
  }
  html body .wg-topbar .wg-nav .site-search{
    display: block !important;
    order: 2 !important;
    position: relative !important;
  }
  html body .wg-topbar .wg-nav #mobileNavToggle{
    order: 3 !important;
    margin: 0 !important;
  }
  /* the text links have no room at this width - they live in the hamburger */
  html body .wg-topbar .wg-nav > a.nav-btn,
  html body .wg-topbar .wg-nav > button#navStartBtn{
    display: none !important;
  }

  /* white marks on the glass */
  html body .wg-topbar .wg-nav #mobileNavToggle,
  html body .wg-topbar .wg-nav .search-toggle{
    width: 34px !important;
    height: 34px !important;
    padding: 0 !important;
    border: 0 !important;
    border-radius: 999px !important;
    background: transparent !important;
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    color: #fff !important;
  }
  html body .wg-topbar .wg-nav #mobileNavToggle svg,
  html body .wg-topbar .wg-nav .search-toggle svg{
    width: 19px !important;
    height: 19px !important;
    stroke: #fff !important;
    color: #fff !important;
    fill: none !important;
  }
  html body .wg-topbar .wg-nav .search-toggle svg circle,
  html body .wg-topbar .wg-nav .search-toggle svg path{
    stroke: #fff !important;
    stroke-width: 2 !important;
    fill: none !important;
  }

  /* [Dave 9/6, REGRESSION FIX] This rule gave the panel a width outright,
     so it painted itself open on every scroll instead of waiting for the
     magnifier. Worse, an unscoped template rule further up
     (html body .site-search .search-panel{left:auto;right:100%}) overrides
     the mobile centring, which is what walked it off the left edge. Width
     is zero until .is-search-open, and the centring is restored. */
  html body .wg-topbar .wg-nav .search-panel,
  html body .site-search .search-panel{
    position: fixed !important;
    top: 70px !important;
    left: 50vw !important;
    right: auto !important;
    transform: translateX(-50%) !important;
    width: 0 !important;
    overflow: hidden !important;
  }
  html body .wg-topbar .wg-nav .site-search.is-search-open .search-panel,
  html body .site-search.is-search-open .search-panel{
    width: min(300px, calc(100vw - 48px)) !important;
  }

  /* the menu hangs off the bar, not off the top of the document */
  html body .wg-topbar #mobileNavMenu{
    top: 56px !important;
    right: 10px !important;
  }
}

/* ---- MOBILE nav, corrections after measuring (Dave 9/6) ------------------
   Two things the first pass got wrong, both found on the phone:

   1. The three text links stayed on. .wg-nav > a.nav-btn was not enough -
      each of them is targeted by an ID rule earlier in this file, and an ID
      beats any number of classes no matter how many !importants are on it.
      Repeated here at ID strength. With them gone the nav measured 395.5px
      wide starting at x 209.8, which is what threw the search and hamburger
      off the right edge of a 430px screen.

   2. The wordmark rendered 185.75px wide at 18.7px tall - a 9.94:1 ratio,
      which is the WG mark's, not WebYay's 4.32:1. width:auto was resolving
      against the wrong intrinsic box, so the width is stated outright:
      288.165 / 66.646 x 18.7 = 80.9. */
@media (max-width: 760px){
  html body .wg-topbar .wg-nav a#navStyleLink,
  html body .wg-topbar .wg-nav a#navIncludedLink,
  html body .wg-topbar .wg-nav a#navAboutLink,
  html body .wg-topbar .wg-nav a#navFaqLink,
  html body .wg-topbar .wg-nav a#navContactLink,
  html body .wg-topbar .wg-nav button#navStartBtn{
    display: none !important;
  }
  html body .wg-topbar .wg-logo-link .wg-logo,
  html body .wg-topbar img.wg-logo{
    height: 18.7px !important;
    width: 80.9px !important;
    max-width: 80.9px !important;
    object-fit: contain !important;
  }
  html body .wg-topbar .wg-logo-link{
    width: 80.9px !important;
    flex: 0 0 80.9px !important;
  }
}

/* ---- MOBILE nav, the glass itself (Dave 9/6) -----------------------------
   "a clear, transparent, glassy blur bar" with the wordmark in white. The
   template paints it rgba(255,255,255,.78) once scrolled, from
   html body .wg-topbar.wg-topbar.wg-topbar.is-topbar-scrolled - four classes
   deep, which is why the plain rule above never landed. Matched here at the
   same strength so it wins on order.

   White glass would swallow a white wordmark, so the phone bar carries a
   light dark tint instead: mostly the blurred page showing through, enough
   body that white marks read over both the dark hero and the pale sections
   further down. Desktop keeps the white glass exactly as it was. */
@media (max-width: 760px){
  html body header.wg-topbar.wg-topbar.wg-topbar,
  html body header.wg-topbar.wg-topbar.wg-topbar.is-topbar-scrolled,
  html body .wg-topbar.wg-topbar.wg-topbar.is-topbar-scrolled{
    background: rgba(16, 18, 20, .32) !important;
    -webkit-backdrop-filter: blur(18px) saturate(1.3) !important;
    backdrop-filter: blur(18px) saturate(1.3) !important;
    border-bottom: 0 !important;
    box-shadow: none !important;
  }
}

/* ---- DESKTOP: his new lockup in the topbar slot (Dave 9/6) ---------------
   The old WG mark rendered 256.6 x 57 because the stylesheet pins the WIDTH
   and lets height follow. His new file is 288.165 x 79.549 - 3.62:1 where the
   old was 4.5:1 - so keeping the width pinned made it 70.8px tall inside a
   53px bar. "Same size and position" means the same height in that slot, so
   the height is pinned instead and the width follows: 57 x 3.62 = 206.4.
   Mobile is not touched - it runs the white wordmark at 18.7px. */
@media (min-width: 901px){
  html body .wg-topbar .wg-logo,
  html body .wg-topbar img.wg-logo{
    height: 57px !important;
    width: auto !important;
    max-width: none !important;
  }
}

/* ---- MOBILE: pin the bar without moving the page (Dave 9/6) --------------
   The template's mobile bar is sticky and in flow at 64px, and the hero
   cancels it with margin-top:-64px so the content starts at y0 and slides
   under the bar. Sticky cannot work here - BODY is overflow:hidden on both
   axes, which disables it - so at scrollY 400 the bar measured y = -400 and
   scrolled off, which is what "you got rid of it" actually was.

   Fixed pins it, but fixed also takes its 64px out of the flow, and then the
   hero's -64px margin has nothing left to cancel and drags the page up - the
   80-100px shift he saw on the device. So the pair is rewritten together:
   the margin goes to zero and the hero's own top padding absorbs the 64
   instead. Net position of every pixel below the bar is unchanged; only the
   bar stops moving. Measured against a build with these rules stripped out.

   Scoped to the template's own 760px breakpoint, not 900 - straddling the
   two header systems is what broke this the first time. */
@media (max-width: 760px){
  html body header.wg-topbar.wg-topbar.wg-topbar{
    position: fixed !important;
    top: 0 !important;
    left: 0 !important;
    right: 0 !important;
    width: 100% !important;
    z-index: 60 !important;
  }
  html body section.hero.hero.hero{
    margin-top: 0 !important;
    padding-top: calc(49px + clamp(6px, 2.4vw, 42px)) !important;
  }
}

/* ---- MOBILE ONLY: air above the About eyebrow (Dave 9/6) -----------------
   "ABOUT WALTERSGROUP CREATIVE" was all but touching the top edge of the
   black band. Measured at 430px: the section carries 30.1px of top padding,
   but .credentials-intro__copy sits on margin-top:-30px (an unscoped desktop
   rule from 8/27), which cancels it exactly - the eyebrow measured 1.8px
   ABOVE the section's own top edge, and 2.7px above it at 393.
   Zeroing that pull returns the section's own padding, plus 6 for margin:
   eyebrow lands 34.2px below the edge at 430 and 33.3 at 393.
   Desktop keeps the -30 and its existing 60.1px gap. */
@media (max-width: 900px){
  html body .credentials-intro .credentials-intro__copy{
    margin-top: 6px !important;
  }
}

/* ---- the "+" beside the style name (Dave 9/6) ---------------------------
   Measured: .fdn-card__plus renders rgba(255,255,255,.9) at 15px, and its
   baseline sits 6.3px ABOVE the label it belongs to - which is the misalignment
   he is seeing.

   [CORRECTED] The base rule already carries position:relative; top:-4px (an
   8/26 lift). Writing top:3px REPLACED that -4 instead of adding to it, so the
   glyph moved 7px, not 3 - "you're going to extreme again", and he was right.
   Down 3 from where it sat means -4 + 3 = -1. */
#foundations .fdn-card__plus,
.fdn-card__view .fdn-card__plus{
  color: #EFAA15 !important;
  position: relative !important;
  top: -1px !important;
}

/* ---- DESKTOP: the topbar lockup at half size (Dave 9/6) ------------------
   Measured: height 57px, rendering 227.1 x 62.7 on screen. Half -> 28.5px. */
@media (min-width: 901px){
  html body .wg-topbar .wg-logo,
  html body .wg-topbar img.wg-logo{
    height: 28.5px !important;
    width: auto !important;
    max-width: none !important;
  }
}

/* ---- DESKTOP: the tunnel wordmark 25px in from the window edge (Dave 9/6)
   Measured at 1440: left edge x = 108, carried there by translateX(50px).
   Target 25, so the shift is 108 - 25 = 83px left: 50 -> -33. Desktop only;
   the phone bar keeps its own placement. */
@media (min-width: 901px){
  html body #webyayTunnel .tunnel-top__logo{
    /* [Dave 9/7] up 5px and right 5px: -33 -> -28 across, 0 -> -5 down
       [Dave 9/8] right 7px more: -28 -> -21. Desktop only; the phone bar
       keeps its own translate(35px, 8px) rule further down. */
    transform: translate(-21px, -5px) !important;
  }
}

/* ---- no scrollbar on the full-screen preview (Dave 9/6) -----------------
   "That white vertical scrollbar on the right edge of the phone is there for
   about five seconds, looks absolutely horrible, then finally goes away."
   Our own lightbox shell is the other half of it - the injected rule in
   foundations.js covers the previewed site's document, this covers the
   container it sits in. Scrolling is untouched; only the bar stops painting. */
#fdnLightbox, #fdnLightbox *,
.fdn-lightbox, .fdn-lightbox *,
#fdnLightboxFrame, #fdnPhoneFrame{
  scrollbar-width: none !important;
  -ms-overflow-style: none !important;
}
#fdnLightbox::-webkit-scrollbar,
#fdnLightbox *::-webkit-scrollbar,
.fdn-lightbox::-webkit-scrollbar,
.fdn-lightbox *::-webkit-scrollbar{
  width: 0 !important;
  height: 0 !important;
  display: none !important;
  background: transparent !important;
}

/* ---- MOBILE: the Create Account panel appears already in place (Dave 9/6)
   It used to paint high inside the grey bar and snap down a frame later, once
   seatAccountPanel() had measured the bar. Held invisible until that pass
   stamps data-fdn-seated, so the wrong position is never drawn. Visibility
   only - it still lays out, so the measurement it needs is available. */
@media (max-width: 760px){
  html body .account-flow-modal__panel:not([data-fdn-seated="1"]){
    opacity: 0 !important;
    transition: none !important;
  }
  html body .account-flow-modal__panel[data-fdn-seated="1"]{
    opacity: 1 !important;
  }
}

/* ---- DESKTOP: the review card sits level with the others (Dave 9/6) ------
   Measured at 1440: every step's eyebrow lands at y 251.8 - except the review
   card, at 272.8. 21px lower, which is what reads as "lower than the other
   categories". Its eyebrow carries the same 23px top margin as the rest, so
   the difference comes from the 04 step number above it; the margin absorbs
   it. 23 -> 2. He asked for "at least 12 or 13"; 21 is what makes it level.
   Mobile is untouched - the step numbers are hidden there already. */
@media (min-width: 901px){
  html body #webyayTunnel .tunnel-card[data-summary-detail="true"] .tunnel-card__eyebrow{
    /* [Dave 9/6, 2nd pass] Level with the others was still reading low to him
       by about 12px, so the whole block comes up another 12: 2 -> -10. */
    margin-top: -10px !important;
  }
}

/* ---- "Back to checkout": arrow right, and inside the card on desktop -----
   Dave 9/6. The arrow now trails the label and points right on BOTH breakpoints
   (it was mobile-only before); the glyph in the markup is a left arrow shared
   with every other use, so it is mirrored rather than swapped.
   On desktop the pill also leaves the bottom bar and sits in the card, 25px
   under the Yes / No row - foundations.js moves it there while it is showing.
   The phone keeps the centred, lifted placement from earlier tonight. */
#webyayTunnel .fdn-backcheckout{
  flex-direction: row-reverse !important;
}
#webyayTunnel .fdn-backcheckout > span[aria-hidden="true"]{
  display: inline-block !important;
  transform: scaleX(-1) !important;
}
@media (min-width: 901px){
  html body #webyayTunnel .fdn-backcheckout.fdn-backcheckout--incard{
    position: static !important;
    top: auto !important;
    right: auto !important;
    left: auto !important;
    transform: none !important;
    display: inline-flex !important;
    margin: 25px 0 0 !important;
    align-self: flex-start !important;
  }
}

/* ---- the style pull-down 15% smaller (Dave 9/6) -------------------------
   Measured: height 34px, font-size 12px, padding 0 34 0 16, chevron 11px set
   14px in from the right. Every one of those at 0.85 so the pill scales as a
   whole rather than just shrinking the type: 28.9 / 10.2 / 0 28.9 0 13.6 /
   9.35 at 11.9. Scaled through its own metrics rather than a transform,
   because two existing rules already use transform to place it and a scale
   there would fight them. */
#webyayTunnel .fdn-stylepick__select{
  height: 28.9px !important;
  padding: 0 28.9px 0 13.6px !important;
  font-size: 10.2px !important;
  background-size: 9.35px !important;
  background-position: right 11.9px center !important;
}

/* ---- the control rail must not eat the scroll (Dave 9/6) ----------------
   "Some of them aren't scrolling at all and others scroll a few hundred
   pixels and then just freeze."  Measured in the full-screen preview at
   1440x900, wheeling four times from five different cursor positions:

     centre        600 -> 1200 -> 1800 -> 2400
     bottom edge   600 -> 1200 -> 1800 -> 2400
     top edge      600 -> 1200 -> 1800 -> 2400
     over the rail   0 ->    0 ->    0 ->    0     <-- dead

   #fdnRail is bled off the right edge and covers a tall strip of the frame.
   A wheel over it has nothing to scroll - the rail itself does not scroll and
   the event never reaches the site underneath - so the page stops the moment
   the pointer drifts into that column. Nothing to do with the eight styles;
   they all behave identically (verified on all eight).

   The rail becomes transparent to the pointer and its controls take it back,
   so the wheel passes straight through to the site while every button stays
   clickable. */
#fdnRail, .fdn-rail{
  pointer-events: none !important;
}
#fdnRail > *, .fdn-rail > *,
#fdnRail button, .fdn-rail button,
#fdnRail a, .fdn-rail a{
  pointer-events: auto !important;
}

/* ---- the outline 10% lighter (Dave 9/6) ---------------------------------
   The outline is a white stroke whose visibility is pure opacity. Measured
   effective values before this: .20 at rest, .32 on hover (later rules win
   over the .12/.5/.40 pairs earlier in the file). Both raised by 10% of
   themselves - .20 -> .22, .32 -> .352 - which is what "10% lighter" asks
   for literally. Say the word if you want it stronger; +10 percentage points
   (.20 -> .30) is a 50% jump and reads as a different design, so I did not
   assume it. The chosen-card rule that hides the outline entirely is left
   alone. Last in the file so it beats every earlier pair. */
/* [CORRECTED] "I don't mean thinner, I mean the colour lighter/brighter so
   there's more contrast to the background." The stroke is already #fff, so
   opacity IS the brightness against a dark ground - my first pass just moved
   it too little to see (.20 -> .22). For a white line on dark, "10% lighter"
   in the way a designer means it is ten POINTS of white, not a tenth of the
   existing value: .20 -> .32 at rest, and the hover state kept proportional
   at .45. Roughly 60% more white on the line. */
.fdn-card__frame--outline{ opacity: .32 !important; }
.fdn-card__monitor:hover .fdn-card__frame--outline{ opacity: .45 !important; }
.fdn-card.is-chosen .fdn-card__frame--outline,
.fdn-card.is-chosen .fdn-card__monitor:hover .fdn-card__frame--outline{ opacity: 0 !important; }

/* [Dave 9/6] DESKTOP ONLY - "that prev prompt was obv for only desktop,
   keep mobile un-changed". Everything below is inside min-width:901px, so
   the phone keeps the original two-device hero exactly as it was. */
@media (min-width: 901px){
/* ---- HERO VARIANT: the single-iMac desk photograph (Dave 9/6, trial) -----
   "I'd like to see how this hero looks with this image replacing the one
   there now; we would not need the iPhone iframe if we use this; the type
   over it would be white; and the video in it should be Modern, not Light.
   We may revert if I don't like it."

   His file is 2500 x 1401 and goes in byte for byte. The scene is laid out in
   a fixed 2000px-wide coordinate space, so the frame becomes 2000 x 1120.8
   (2500x1401 scaled to 2000 wide).

   The black glass was measured off the pixels, not eyeballed - longest run of
   near-zero pixels per row: L405 T82, 1617 x 836 in the 2500-wide file, which
   is left 16.20%, top 5.853%, width 64.68%, height 59.672%. In the 2000-wide
   space that is left 324, top 65.6, width 1293.6, height 668.8.

   The framed site keeps its 1464px render width; the scale becomes
   1293.6 / 1464 = 0.8836 so it lands exactly on the glass.

   EVERYTHING here is scoped to html.is-hero-v2. Remove that one class from
   the <html> tag in index.html and the old two-device scene returns. */
html.is-hero-v2 .device-frame{
  /* [measured] Setting the img's src from JS did not stick - something in the
     template rewrites .device-frame after every pass, and the swap kept being
     undone (the geometry below applied, the picture did not). CSS content:
     replaces the rendered image itself and no src write can override it. */
  /* [Dave 9/9] His new file with a longer tail: hero-desk-v5.jpg, 2500x2200,
     byte-for-byte as delivered (v4 was 2500x1800 - same top/left/right, 400px
     more at the bottom, exactly as he described).
     The scene is a fixed 2000px-wide space, so the scale stays 2500 -> 2000 =
     0.8 and the box grows 1440 -> 1760. Because only the BOTTOM grew and the
     scale is unchanged, every measured coordinate for the monitor glass below
     still lands exactly where it did - nothing needed re-measuring.
     Nothing is cropped and nothing is re-encoded; the extra tail simply gives
     the lead copy room to sit on the photograph instead of running off it. */
  content: url("assets/img/hero-desk-v5.jpg") !important;
  width: 2000px !important;
  height: 1760px !important;
  object-fit: fill !important;
}
html.is-hero-v2 .scene,
html.is-hero-v2 .stage-holder,
html.is-hero-v2 .stage-fixed{
  height: 1760px !important;
}
/* no phone in this version */
html.is-hero-v2 .phone-screen,
html.is-hero-v2 .screen.phone-screen{
  display: none !important;
}
/* the monitor glass, measured */
/* [Dave 9/7] New artwork (hero-desk-v3.jpg, 2500x1401, his bytes untouched).
   The black screen was measured out of the file itself rather than eyeballed:
   the dark rectangle runs x 463-1969, y 69-850 in the 2500-wide original,
   i.e. 18.520% / 4.925% / 60.280% / 55.817% of the image. The CSS artwork box
   is 2000 x 1120.8, so that lands at 370.4 / 55.2 / 1205.6 / 625.6. */
html.is-hero-v2 .laptop-screen,
html.is-hero-v2 .screen.laptop-screen{
  /* [CORRECTED - Dave 9/7] "still zero black bezel???? wow". Found it, and
     it was my measurement that was wrong, not the placement. I detected the
     screen by looking for black pixels - but in this photograph the bezel is
     black TOO, and reads as a single uniform rectangle (every pixel from the
     outer rim to the middle of the glass is literally 0). So I had sized the
     live site to the screen PLUS its bezel, which is exactly why no bezel
     ever showed: the site was painted over it.
     Inset 22px on all four sides so the rim stays black and visible. */
  left: 392.4px !important;
  top: 76.4px !important;
  width: 1161.6px !important;
  height: 581.6px !important;
  border-radius: 6px !important;
  overflow: hidden !important;
}
/* [Dave 9/7] THE BLACK SCREEN, found. Measured z-index: .device-frame 5,
   .laptop-screen 1. The old artwork was a WEBP with a transparent hole cut
   where the glass is, so a frame painted on top of the screen worked. His
   photograph is an opaque JPEG - the black screen in the picture was covering
   the live site completely. The screen goes above the photograph instead. */
/* [CORRECTED] Raising .laptop-screen alone did nothing: .scene-after carries
   z-index 2 and is therefore its own stacking context, so nothing inside it
   can ever out-rank the frame at 5 no matter what number it is given. The
   SCENE has to go above the photograph. */
html.is-hero-v2 .scene-after{
  z-index: 6 !important;
}
html.is-hero-v2 .laptop-screen,
html.is-hero-v2 .screen.laptop-screen,
html.is-hero-v2 .laptop-screen.after-screen{
  z-index: 2 !important;
}
/* [Dave 9/7] THE CROP. Measured: .stage-fixed sits at y -169.4 because the
   hero carries margin-top:-200px paired with a padding-top that assumed the
   OLD 2000x1402 artwork (1009px tall once scaled 0.72). His file scales to
   807, so that 169px pull now drags the top of the monitor off the screen.
   The pair is neutralised for the variant and the scene starts at the top. */
html.is-hero-v2 section.hero.hero.hero{
  /* [CORRECTED] padding-top:0 collapsed the hero and dropped the lead copy on
     top of the photograph. The padding stays; only the negative pull goes. */
  margin-top: 0 !important;
}
/* [Dave 9/7] "why do you have zero black bezle showing on the computer
   screen??" - measured, and he is right. The scene is scaled by viewport
   WIDTH (scale = W/2000) but this box was a fixed 807px, tuned at 1440. On a
   bigger display the scaled artwork outgrows the box and the overflow is
   split above and below, so the top of the monitor - bezel and all - walks
   off the top of the screen:
       1440  frame top  +30.6   (correct)
       1680  frame top   +8
       1920  frame top  -22
       2560  frame top -105     (glass itself cropped at -21)
   807/1440 = 0.5605, so the box tracks the artwork at every width instead of
   only at 1440, and nothing overflows to be split. */
html.is-hero-v2 .stage-holder,
html.is-hero-v2 .compare-shell{
  /* [Dave 9/7] taller artwork (2500x1800), so the box grows with it:
     1440 / 2000 = 0.72 of the viewport width. */
  height: 72vw !important;
  min-height: 0 !important;
}
/* zeroing the hero's own pull recovered 52.5 of the 169.4; the remaining
   116.9 is carried further up the stack, so the stage is pushed down by the
   measured remainder to land the top of the monitor exactly on the top of
   the viewport. */
html.is-hero-v2 .compare-shell{
  /* [re-measured after restoring the hero padding] the stage landed at
     y 147.6 with the 117px push, so the push comes back out entirely and the
     scene sits at the top of the hero on its own. */
  margin-top: 0 !important;
}
/* [Dave 9/7] "have all of this content show in full when it first starts -
   right now you're cutting that category in the middle and none of the
   buttons show." The glass is 2:1 (1161.6 x 581.6) but the framed site was
   rendering at 1464 wide, which makes its own viewport only 733 tall - and
   the demo's opening section needs about 800. Measured the button row against
   several render widths:
       1464 -> viewport 733, buttons end at 730   (1px to spare, i.e. cut)
       1700 -> viewport 851, buttons end at 796   (55px clear)
       1900 -> viewport 951, buttons end at 889
   1700 is the smallest that shows the whole opening section, so the type stays
   as large as it can while everything fits. Height is set explicitly rather
   than left at 100%, or the frame renders short and the overflow is cropped -
   which is what was cutting the buttons off. */
html.is-hero-v2 .laptop-screen.after-screen iframe{
  width: 1700px !important;
  height: 851.2px !important;
  transform: scale(.68329) !important;
  transform-origin: 0 0 !important;
}
/* White type over the photograph ONLY. [CORRECTED] The first version of this
   rule also caught .fdn-lead, which is the headline BELOW the hero on a pale
   background - white on near-white, unreadable. Scoped to the copy that
   actually sits on the photo. */
html.is-hero-v2 .hero .copy-block,
html.is-hero-v2 .hero .copy-block h1,
html.is-hero-v2 .hero .copy-block p,
html.is-hero-v2 .hero .comparison-price-tag,
html.is-hero-v2 .hero .comparison-price-tag *{
  color: #fff !important;
}

/* [Dave 9/6] The before/after slider is SNIPER-only - this page never uses it,
   and .scene-before was still sitting there at full opacity with no clip
   (measured: opacity 1, clip-path none) on top of the scene that matters.
   Hidden in the variant so only the new photograph and the live Modern site
   are in play. */
html.is-hero-v2 .scene-before,
html.is-hero-v2 .before-screen{
  display: none !important;
}
}

/* ---- DESKTOP: topbar logo placement + lead measure (Dave 9/6) ------------
   Measured at 1440 after the hero variant went in:
     .wg-logo-link   x 40, top 8px   -> down 22 (top 30), left 10 (x 30)
     .lead p         max-width 770px -> 730px, the 40px he asked for to pull
                     "page." back up off its own line
   Desktop only; the phone keeps what it has. */
@media (min-width: 901px){
  html body .wg-topbar .wg-logo-link{
    top: 24px !important;
    margin-left: 20px !important;   /* [Dave 9/7] back right 30px */
  }
  /* [CORRECTED] the live value comes from
     html body .lead.lead--below-compare.fdn-lead p (three classes, set 9/3),
     which outranked a plainer selector - matched here so 730 actually lands. */
  html body .lead.lead--below-compare.fdn-lead p,
  html body .lead p,
  html body .fdn-lead p{
    max-width: 730px !important;
  }
}

/* [Dave 9/7] The lead block carries margin-top:-120px (set 9/3 against the
   old, taller artwork). His photograph is shorter, so that pull now drops the
   copy on top of the desk. Zeroed for the variant only. Desktop hero variant
   is the only thing this touches. */
@media (min-width: 901px){
  html.is-hero-v2 .lead.lead--below-compare.fdn-lead{
    /* zero cleared most of it; the headline still kissed the desk, so 60px
       of real clearance below the photograph. */
    margin-top: 60px !important;
  }
}

/* ---- [Dave 9/7] HERO VARIANT: the price tag ------------------------------
   Fault 3 - "Custom-designed. / Not templated." was still grey. Measured:
   #compare .comparison-price-tag .comparison-price-lead sets color #5b6169,
   and that ID beats the three-class white rule above no matter how many
   classes it carries. Matched at the same ID strength here.

   Fault 4 - the tag has to sit INSIDE the monitor. Measured at 1440:
     glass   x 233.3 -> 1164.7,  y 77.9 -> 559.4
     tag     x 1119.8 -> 1310.1, y 290.2 -> 408      (185px out the right side)
   The tag lives in .compare-layout, which is NOT inside the scaled scene, so
   a fixed pixel nudge only lands at one width. The scene is a 2000px artwork
   scaled to the viewport (scale = W/2000), so the glass edges are pure
   fractions of viewport width:
     glass right = (324 + 1293.6) * W/2000 = 0.8088W
     glass top   = 30.6 + 65.6 * W/2000
     glass height= 668.8 * W/2000 = 0.3344W
   Anchoring the tag's right edge 50px inside that, and its top at 42% down
   the glass, keeps it inside the monitor at every desktop width instead of
   only at 1440. */
@media (min-width: 901px){
  html.is-hero-v2 #compare .comparison-price-tag .comparison-price-lead,
  html.is-hero-v2 .comparison-price-tag .comparison-price-lead{
    color: #fff !important;
  }
  /* [CORRECTED - Dave 9/7] "Why did you make the weird decision to place the
     price and that head are inside the computer screen? It's always been
     outside the screen on the right side." Right - that was my misreading of
     "all tags go inside the monitor image", and it was wrong. Back outside,
     to the right of the glass, where it has always lived.
     New artwork: the screen ends at (370.4 + 1205.6) / 2000 = 78.8% of the
     frame width, so the tag is anchored 30px clear of that edge and rides
     the same fraction at every display size. */
  html.is-hero-v2 #compare .comparison-price-tag,
  html.is-hero-v2 .comparison-price-tag{
    /* [Dave 9/7] up 70, then up 70 again. [Dave 9/8] up 30 more: -67 -> -97 */
    top: calc(16.8vw - 97px) !important;
    left: calc(78.8vw + 30px) !important;
    right: auto !important;
    margin: 0 !important;
    transform: none !important;
  }
}

/* ---- [Dave 9/7] THE REAL CROP DRIVER, traced ----------------------------
   Walking the chain from .device-frame upward at 1920 found it three levels
   above where I had been looking:
       SECTION.hero            y  73, padding-top 155
       SECTION.comparison-card margin-top -249.6   <-- here
       .device-frame           y -21.6
   That pull is viewport-relative, so it grows with the display: -200 at
   1440, -249.6 at 1920, and past -330 at 2560, which is why the bezel and
   the top of the monitor walk off a big screen and Dave sees the site
   filling edge to edge with no black bezel at all. The earlier hero
   margin-top fix only ever cancelled the 1440 case.
   For the variant the pull and the padding it was pulling against are both
   zeroed, so the scene simply starts under the top bar at every width. */
@media (min-width: 901px){
  /* [Dave 9/7] "that image has to fill the page and it has to bleed off the
     top and the left and the right and the bottom." Measured: the scene was
     starting at y 65-73 depending on width - that gap is the top bar plus
     main's own padding, and it was reading as a black bar above the photo.
     Pulled up 80px so the photograph runs under the bar and off the top. */
  html.is-hero-v2 section.comparison-card{
    margin-top: -80px !important;
  }
  html.is-hero-v2 section.hero.hero.hero{
    padding-top: 0 !important;
  }
}

/* ---- [Dave 9/7] the lead copy moves onto the photograph -----------------
   "the text you put in a white backgrnd below the new image is supposed to
   be inside the computer image in white text w/ no white background."
   Chosen placement: over the desk, below the monitor, so the live Pulse
   demo in the glass is never covered.
   The photograph runs from the top of the hero down 56.05vw. The desk
   surface starts at about 80% of that, so the block is seated there and the
   white band underneath disappears because the block no longer takes space
   in the flow. */
@media (min-width: 901px){
  html.is-hero-v2 .lead.lead--below-compare.fdn-lead{
    position: absolute !important;
    left: 0 !important;
    right: 0 !important;
    /* [Dave 9/7] "I made it taller with more room under the keyboard ... so it
       doesn't blow out of the bottom." The block is a fixed height (the type
       does not scale) while the photograph scales with viewport width, so a
       top-anchored figure blows out the bottom on smaller screens - measured
       -28px of clearance at 1024. Anchored to the BOTTOM of the photograph
       instead: frame bottom is 73 + 72vw, less 40px of breathing room and the
       block's own 290px, so the copy always lands inside the art.
       Measured clearance: 1024 +73, 1280 +76, 1440 +63, 1920 +46. */
    top: calc(72vw - 283px) !important;
    margin-top: 0 !important;
    z-index: 7 !important;
    pointer-events: none;
  }
  html.is-hero-v2 .lead.lead--below-compare.fdn-lead *{
    color: #fff !important;
  }
}

/* [Dave 9/7] The new headline ("Your practice deserves a better website.") is
   longer than the old one and was wrapping to two lines, which pushed the
   whole block up over the keyboard. The measure is only constrained for the
   old pale-background layout; over the photograph it can run full width. */
@media (min-width: 901px){
  html.is-hero-v2 .fdn-lead .fdn-lead__in,
  html.is-hero-v2 .lead.lead--below-compare.fdn-lead h2{
    max-width: none !important;
    white-space: nowrap !important;
  }
}

/* ---- [Dave 9/7] THE BLACK BAR DOWN THE RIGHT SIDE, found -----------------
   Not the hero at all - it is the whole page being wider than the window.
   Measured: document scrollWidth 1541 against a 1512 window, i.e. 29px of
   horizontal overflow, and the strip past the window edge is just the body
   colour (#2C3136) showing top to bottom. With a real scrollbar on his
   machine that strip reads wider still, which is the 40-50px he sees.
   The culprit is .included-benefits (the 4-card feature row inside #start).
   It full-bleeds with the usual width:100vw / margin-left:50% /
   translateX(-50%) trick, which only centres if the parent's padding is
   symmetric. It is not:
       padding-left  134px  (fixed, every width)
       padding-right 5vw, capped at 90px
   so the row lands half the difference to the RIGHT at every size, and hangs
   off the edge by exactly that much:  2560 +22, 1920 +22, 1512 +29,
   1280 +35, 1024 +41.
   Solved exactly rather than clipped: the row starts at the parent's
   content edge (134px), and the transform pulls it back 50vw, so the margin
   that lands it on the window's left edge is 50vw - 134px. Zero overflow at
   every width, and nothing is cropped. */
html body .included-benefits{
  margin-left: calc(50vw - 134px) !important;
  margin-right: 0 !important;
}
/* belt and braces: clip, NOT hidden - hidden would make html a scroll
   container and kill position:sticky elsewhere on the page. */
html, html body{ overflow-x: clip !important; }

/* [Dave 9/7] "You have a white gap showing between these two backgrounds."
   Sampled down the seam at 1512: SECTION#compare.hero paints rgb(246,247,248)
   - a near-white left over from the old pale hero - and the photograph is
   laid on top of it. Any rounding between the photo's height (72vw) and the
   section's own box leaves that pale colour showing as a band right under the
   image, with the dark grey section starting below it.
   The hero takes the same dark grey as the section beneath it, so the two
   butt together and no sliver can ever show. Desktop variant only. */
@media (min-width: 901px){
  html.is-hero-v2 section.hero,
  html.is-hero-v2 section#compare.hero{
    background: #2C3136 !important;
    padding-bottom: 0 !important;
  }
}

/* ---- [Dave 9/7] desktop hero: the lower-right device toggle --------------
   Same pill as the hand-held view - same classes, same glyphs, same gold -
   bled off the right edge with only the left corners rounded, sitting clear
   of the chat bubble. The phone-in-hand scene reuses phone-hand-portrait-v3
   and the glass box read from that file's own alpha channel:
     282,235 -> 981,1702 of 1200x2600  =  23.5% / 9.0385% / 58.25% / 56.4615%
   Desktop hero variant only; the phone hero is untouched. */
@media (min-width: 901px){
  html.is-hero-v2 section.hero{ position: relative; }

  /* [Dave 9/7] "it's hiding under the chatbot ... needs to be pinned maybe
     25px above the chat bubble, non-scrollable. when they scroll out of the
     above fold it fades to clear."
     Measured #wgChatBubble: 44x44, 22px off the bottom and 22px off the right.
     So its top edge is 66px up, and 25px of clearance puts this at 91px.
     Pinned, not scrolled - and faded out once the hero has left the screen. */
  html.is-hero-v2 .fdn-herov2__toggle{
    position: fixed;
    right: 0;
    bottom: 83px;   /* measured: puts exactly 25px between the pill and the chat bubble */
    top: auto;
    transition: opacity .25s ease;
    display: flex;
    align-items: center;
    gap: 0;
    padding: 2px 10px 2px 8px;
    border-radius: 13px 0 0 13px;
    background: rgba(18,20,24,.62);
    -webkit-backdrop-filter: blur(16px) saturate(1.3);
    backdrop-filter: blur(16px) saturate(1.3);
    /* under the chat bubble's own layer, over everything else */
    z-index: 2147483000;
  }
  /* the ramp is driven from JS as an inline opacity; this only guarantees the
     fully-faded end state stays click-through. */
  html.is-hero-v2 .fdn-herov2__toggle.is-gone{
    pointer-events: none !important;
  }
  html.is-hero-v2 .fdn-herov2__toggle .fdn-herodesk__dev{
    position: relative;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 48px;
    min-height: 48px;
    padding: 0; margin: 0; border: 0;
    background: transparent;
    color: #d8dce1;
    cursor: pointer;
    touch-action: manipulation;
    -webkit-tap-highlight-color: transparent;
  }
  html.is-hero-v2 .fdn-herov2__toggle .fdn-herodesk__dev.is-on{ color: #EFAA15; }
  html.is-hero-v2 .fdn-herov2__toggle .fdn-dev-glyph{
    display: block;
    background: currentColor;
    -webkit-mask-repeat: no-repeat; mask-repeat: no-repeat;
    -webkit-mask-position: center;  mask-position: center;
    -webkit-mask-size: contain;     mask-size: contain;
  }
  html.is-hero-v2 .fdn-herov2__toggle .fdn-dev-glyph--desktop{
    width: 35.2px; height: 35.2px;
    -webkit-mask-image: url("assets/img/dave-icon-monitor.svg");
    mask-image: url("assets/img/dave-icon-monitor.svg");
  }
  html.is-hero-v2 .fdn-herov2__toggle .fdn-dev-glyph--phone{
    width: 16.7px; height: 27.5px;
    -webkit-mask-image: url("assets/img/dave-icon-phone.svg");
    mask-image: url("assets/img/dave-icon-phone.svg");
  }

  /* the phone-in-hand scene: off until the toggle asks for it */
  /* [CORRECTED - Dave 9/7] "you put the vertical mobile image in here for the
     desktop view, wrong - we want the horizontal image holding the iphone."
     That is assets/foundations/phone-hand.webp (1400x933), the same landscape
     shot the style presentation uses, and its glass box is the one already
     measured off that file's own alpha channel:
       left 40.429%  top 17.792%  width 19.357%  height 61.093%
     Landscape now, so the scene is sized off the width and centred in the
     hero: 100vw wide is 66.64vw tall against a 72vw hero, so 2.7vw of margin
     top and bottom. */
  /* [CORRECTED - Dave 9/7] "treat this landscape background image and the HTML
     exactly like you do in other places ... it's really low in the screen, we
     had it forced to be centre top-bottom and centre left-right ... plus you
     have a black gap at the top."
     Right - I had sized it off the width and pinned it 2.7vw down, so the
     bottom fell out of the hero and the hero's own background showed above it.
     Same treatment as .fdn-phone__stage now: the box carries the photograph's
     exact 1400x933 aspect so the glass percentages below stay true, and it is
     sized to COVER the hero and centred on both axes, so whatever overflows is
     cropped equally on both sides and nothing creeps out of the bottom.
     The hero is 100vw x 72vw. At 72vw tall the photo is 108.04vw wide, which
     covers the width with room to spare, so the crop lands left and right and
     the full height of the picture always shows. */
  html.is-hero-v2 .fdn-herov2__phonescene{
    position: absolute;
    inset: 0;
    overflow: hidden;          /* the SCENE clips, not the hero */
    opacity: 0;
    visibility: hidden;
    transition: opacity .28s ease;
    z-index: 20;
    pointer-events: none;
  }
  html.is-hero-phone.is-hero-v2 .fdn-herov2__phonescene{
    opacity: 1;
    visibility: visible;
    pointer-events: auto;
  }
  /* the photograph's own box: exact 1400x933 aspect, sized to COVER the hero
     and centred by the grid above, so the crop lands equally on both sides. */
  /* [CORRECTED - Dave 9/7] "the mobile photo in the hero still is not cropped
     equally top and bottom - the iPhone screen has to be centred top-bottom as
     well as left-right."
     Measured: as a grid item the stage was being stretched to the hero's
     height (1009) instead of holding its own 72vw (1088), so the picture was
     squashed to the box and the phone drifted low. Centred by hand instead -
     top/left 50% with a -50%/-50% translate - which cannot be stretched, so
     the box always carries the photograph's exact 1400x933 aspect and the
     overflow is split evenly on all four sides. */
  html.is-hero-v2 .fdn-herov2__stage{
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    width: 108.04vw;
    height: 72vw;
    aspect-ratio: 1400 / 933;
  }
  html.is-hero-v2 .fdn-herov2__hand{
    position: absolute;
    inset: 0;
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: center center;
    pointer-events: none;   /* the finger must not block the site underneath */
    z-index: 2;
  }
  html.is-hero-v2 .fdn-herov2__phoneglass{
    position: absolute;
    left: 40.429%;
    top: 17.792%;
    width: 19.357%;
    height: 61.093%;
    overflow: hidden;
    z-index: 1;
    background: #fff;
    border-radius: 3px;
  }
  html.is-hero-v2 .fdn-herov2__phoneframe{
    position: absolute;
    left: 0; top: 0;
    border: 0;
    background: #fff;
  }
  /* in phone view the monitor's live site steps aside so the screen reads as
     off and the phone is the only thing running */
  /* [Dave 9/7] the toggle swaps the whole scene, exactly as it does on the
     phone hero - the desk photograph steps aside so the hand-held shot is the
     hero, rather than a rectangle pasted on top of the desk. */
  html.is-hero-phone.is-hero-v2 .laptop-screen,
  html.is-hero-phone.is-hero-v2 .screen.laptop-screen{
    opacity: 0 !important;
    pointer-events: none !important;
  }
  html.is-hero-phone.is-hero-v2 .device-frame{
    opacity: 0 !important;
  }
  /* the price block belongs to the desktop shot - it goes with it */
  html.is-hero-phone.is-hero-v2 .comparison-price-tag{
    opacity: 0 !important;
  }
}

/* [Dave 9/7] "thinner type in looser kerning" - the installments line under
   the price. It was the only bold thing left in that block. */
@media (min-width: 901px){
  html.is-hero-v2 #compare .comparison-price-tag em,
  html.is-hero-v2 .comparison-price-tag em{
    font-weight: 300 !important;
    /* [CORRECTED - Dave 9/7] "slight loosening ... you did extreme again."
       Measured: it was letter-spacing normal (0px) before I touched it, and I
       took it to .085em = 0.935px at 11px. Halfway between the two. */
    letter-spacing: .04em !important;
    font-style: normal !important;
  }
}

/* [Dave 9/7] "have this checkmark in the circle pulsing back and forth,
   translucent 50% to 100%, gradually and gently - static it almost looks like
   it's already checked, and that's not the impression we want."
   So it breathes only while it is offered and not yet taken: the animation
   stops dead the moment it is hovered (they've found it) or chosen (it IS
   checked now), which keeps the pulse meaning "you can click this". */
@keyframes wyChoosePulse{
  0%   { opacity: .5; }
  50%  { opacity: 1; }
  100% { opacity: .5; }
}
html body #fdnChoose.is-on:not(.is-chosen) .fdn-rail__ico{
  animation: wyChoosePulse 2.4s ease-in-out infinite !important;
  will-change: opacity;
}
html body #fdnChoose:hover .fdn-rail__ico,
html body #fdnChoose.is-chosen .fdn-rail__ico{
  animation: none !important;
  opacity: 1 !important;
}
@media (prefers-reduced-motion: reduce){
  html body #fdnChoose .fdn-rail__ico{ animation: none !important; opacity: 1 !important; }
}

/* [Dave 9/7] "move the eye line of these reverse white headers down about 12
   pixels on desktop - there's five or six of them."
   Measured: they are all ONE element - H2.is-style-headline inside
   .tunnel-top__headline, sitting at y 108 in the grey bar. The text changes
   per step ("Modern style", "Build your site", "Pay plan", "Let's go!"), so a
   single rule covers every one of them. Nudged with position/top rather than
   margin so the grey bar's own height and everything under it stay put.
   Desktop only - the phone keeps what it has. */
@media (min-width: 901px){
  html body #webyayTunnel .tunnel-top__headline h2,
  html body .tunnel-top__headline h2.is-style-headline{
    position: relative;
    top: 12px;
  }
}

/* [Dave 9/7] the "what's inside this category" line, under the Yes/No.
   Thinnest Jakarta we load is 200 - the family is requested with
   wght@200;300;400;500;600;700, so 200 is real here, not a synthesised light.
   Left edge matches the question above it (x=0 of the card's text column), and
   it is hidden outright below 901px so the phone layout is untouched. */
.fdn-catlist{
  display: none;
}
@media (min-width: 901px){
  html body #webyayTunnel .tunnel-card .fdn-catlist{
    display: block;
    /* [Dave 9/7] "why are you cropping out the bottom of this text block?"
       position:relative top:10px shifts it visually but adds nothing to the
       parent's scroll height, and the leading went 1.8 -> 2.05 (about +15px
       over six lines). Between them the last line fell past the card's clip.
       28px of bottom margin gives the container the room both changes need. */
    margin: 14px 0 28px;
    padding: 0;
    max-width: 430px;
    /* [CORRECTED] measured 400 on the first pass - a template rule was winning,
       so the weight and family are forced here. 200 is the thinnest cut we
       actually load (wght@200;300;400;...), not a synthesised light. */
    font-family: 'Plus Jakarta Sans', system-ui, sans-serif !important;
    font-weight: 200 !important;
    /* [Dave 9/7] "about 20% smaller - too big and distracting." 12.5 -> 10 */
    font-size: 10px !important;
    /* [Dave 9/7] "slightly more leading" - 1.8 -> 2.05 */
    line-height: 2.05 !important;
    letter-spacing: .012em !important;
    color: rgba(106, 107, 109, .82) !important;
    text-align: left;
    text-transform: none;
  }
  /* [Dave 9/7] "like bullet points, but no bullet markers - each item on its
     own line." Each item is its own block span, no marker, no indent. */
  html body #webyayTunnel .tunnel-card .fdn-catlist .fdn-catlist__line{
    display: block !important;
    list-style: none !important;
  }
}

/* [Dave 9/7] "I hate that it glides in all the way from the left - have it
   stay stationary and fade in over a second or two."
   The base rule transitions `transform`, and the placement pass rewrites
   transform (translateY(-50%) -> none) at the same moment it rewrites left,
   so the pill animated its way into position. Motion is off entirely here:
   it is always laid out, always in place, and only its opacity changes. */
#webyayTunnel .fdn-backcheckout{
  display: inline-flex !important;
  opacity: 0;
  pointer-events: none;
  transition: opacity 1.1s ease, background .18s ease !important;
}
#webyayTunnel .fdn-backcheckout.is-on{
  opacity: 1;
  pointer-events: auto;
}

/* [Dave 9/7] "make all these headers about 20% larger (120% to scale) on
   desktop and make sure they're all the exact same size."
   Measured first: all seven were already identical at 23px / 26px / 400 -
   website, changes, pages, logo, care, payment and summary - so there was
   nothing uneven to chase, only the scale. 23 x 1.2 = 27.6, 26 x 1.2 = 31.2.
   Pinned with !important so every card keeps landing on the same number, and
   scoped to desktop - the phone keeps its own 30px spec untouched. */
@media (min-width: 901px){
  html body #webyayTunnel .tunnel-card .tunnel-card__question,
  html body #webyayTunnel .tunnel-card__question{
    font-size: 27.6px !important;
    line-height: 31.2px !important;
  }
}

/* [Dave 9/7] "move this number and the circle around it up 25 pixels -
   surgically, not extreme - it's touching the eyebrow now."
   Nudged with position/top so nothing below it reflows: the eyebrow, the
   header and the buttons all stay exactly where they are, only the numbered
   circle moves. Desktop only. */
@media (min-width: 901px){
  /* [REVERTED - Dave 9/7] "the number with the circle scooted up underneath
     the top grey bar - put it back where it belongs." The -25px nudge is out.
     What made it look tight against the eyebrow was the header going up to
     120% in the same build, not the number's own position. */
  html body #webyayTunnel .tunnel-card .tunnel-card__stepnum{
    position: relative;
    /* [REVERTED - Dave 9/7] -30px hid it. The number sits close to the top of
       the card, and the card clips at the grey bar, so 30px up puts the whole
       circle behind the bar - it does not move, it disappears. Same reason -25
       failed earlier. Back to 0 until we pick a number that fits. */
    top: 0;
  }
}

/* [Dave 9/7] "make all these reverse white headers a thinner Jakarta - at
   least 60 or 70 weight thinner than it currently is."
   Measured at 400. The page loads Plus Jakarta Sans at 300/400/500/600/700,
   so 300 is the real cut below it - 100 thinner, and an actual drawn weight
   rather than a browser-faked light. */
@media (min-width: 901px){
  html body #webyayTunnel .tunnel-top__headline h2,
  html body .tunnel-top__headline h2.is-style-headline{
    font-weight: 200 !important;
  }
}

/* [CORRECTED - Dave 9/7] "I asked you to move this content down 25px on
   desktop, still no change." Right - I had moved .tunnel-bottom__main, which
   is the bottom BAR, and the Secure Checkout block is not in it. Found the
   real markup in the template: the button, the Stripe line and the price sit
   in .tunnel-summary__checkout-row, with the card marks in
   .tunnel-summary__payment-icons directly under it, both inside the summary
   card. Those two are the block he means, so those two move - and the bottom
   bar goes back to where it was, since it was never what he was pointing at. */
@media (min-width: 901px){
  html body #webyayTunnel .tunnel-summary__checkout-row,
  html body #webyayTunnel .tunnel-summary__payment-icons{
    position: relative;
    top: 25px;
  }
}

/* ---- [Dave 9/7] THE PHONE HERO, fourth pass - measured, and I had the wrong
   box the whole time. At his window (1268 x 746) the hero is 913px tall
   because it is sized at 72vw, so the scene I was centring is TALLER THAN HIS
   SCREEN: the crop was symmetric inside that 913px box, but he only ever sees
   the top 746 of it, which reads as a gap at the top and the phone running off
   the bottom. Centring the photo in a box he cannot see all of is useless.
   In phone view the scene is now exactly one screenful tall, and the
   photograph is sized to COVER that screen and centred, so whatever spills
   crops evenly on both sides of whichever axis overflows - at any window
   shape. aspect-ratio + height gives the width automatically at the picture's
   true 1400:933, and max(100vh, 66.64vw) guarantees it covers both ways. */
@media (min-width: 901px){
  html.is-hero-phone.is-hero-v2 .stage-holder,
  html.is-hero-phone.is-hero-v2 .compare-shell{
    height: 100vh !important;
  }
  html.is-hero-phone.is-hero-v2 .fdn-herov2__stage{
    width: auto;
    height: max(100vh, 66.64vw);
    aspect-ratio: 1400 / 933;
  }
}

/* ---- [Dave 9/7] "don't you dare touch the mobile view - I'm only looking at
   and talking about the desktop view." Understood. Two of tonight's changes
   were written on base rules with no breakpoint, so they were reaching the
   phone as well: the tunnel wash and the style-picker chevron. Both are put
   back to their original values above and re-applied here, desktop only. */
@media (min-width: 901px){
  /* the mid band's wash, 4% darker at the top-left (TRIAL - revert by
     deleting this rule; the base above is the original) */
  html body #webyayTunnel .tunnel-mid{
    /* [Dave 9/7] another 3% on the top-left: 220 x 0.97 = 213.
       Trail of values, so a revert is one number:
         original 229,229,231  ->  first pass 220,220,222  ->  now 213,213,215 */
    background-image:linear-gradient(135deg, rgb(213,213,215) 0%, rgb(255,255,255) 100%) !important;
  }
  /* gold chevron on the style select, type and button unchanged */
  html body #webyayTunnel .fdn-stylepick__select{
    background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 8'><path d='M1 1.5 6 6.5 11 1.5' fill='none' stroke='%23EFAA15' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/></svg>") !important;
  }
}

/* ---- [Dave 9/7] two floating things that must not appear over the tunnel's
   full-screen presentation.

   1. The scroll cue. #fdnScrollCue is position:fixed on document.body at
      z-index 2147483599, so it floats over the presentation exactly the way
      my own toggle pill did. He asked for it to sit behind the website layer
      if it is a layering problem - it is, so it goes behind AND dark.
   2. The style chooser label. It was flashing on for a second in the DESKTOP
      view before a pass corrected it, and not appearing at all on the phone
      view. Gated on a root class now, set the instant the device toggle is
      clicked, so it is right from the first painted frame. */
html.fdn-lb-over-tunnel #fdnScrollCue,
html.fdn-lb-over-tunnel .fdn-scroll-cue{
  opacity: 0 !important;
  pointer-events: none !important;
  z-index: -1 !important;
}
html.fdn-lb-over-tunnel .fdn-scenename{
  opacity: 0 !important;
  pointer-events: none !important;
}
html.fdn-lb-over-tunnel.fdn-lb-phoneview .fdn-scenename{
  opacity: 1 !important;
  pointer-events: auto !important;
}
/* [Dave 9/7] "do you have it at a lower layer than that photo - maybe the
   photo is covering it up?" That is exactly it, and it is why my own checks
   kept passing: I was reading the label's computed style (visible, opacity 1)
   without asking what was PAINTED on top of it.
   Over the tunnel everything gets lifted above the tunnel's own 99999:
     .fdn-scrim          2147483597
     .fdn-lightbox       2147483598
     .fdn-phone          2147483599   <-- the hand-held photograph
     the rail + controls 2147483600
   .fdn-scenename was never on that list, so it stayed at 10001 - underneath
   the photograph. Lifted to the control layer where it belongs. */
html.fdn-lb-over-tunnel .fdn-scenename{
  z-index: 2147483600 !important;
}

/* ---- [Dave 9/7] phone view: the below-the-fold copy comes off entirely ----
   "we decided that the lead-in paragraph and the header and subheader would
   not show at all if they toggled over to the hand-held view - that is where
   the price shows too, on the desktop toggle."
   It also fixes the overlap: that block is absolutely positioned against the
   DESKTOP hero's height (72vw), and the phone view is now one screenful tall,
   so it was landing on top of the photograph and the section under it. Off in
   phone view, back on the moment they toggle to desktop. display:none rather
   than opacity so it cannot affect anything below it either. */
@media (min-width: 901px){
  html.is-hero-phone.is-hero-v2 .lead.lead--below-compare.fdn-lead,
  html.is-hero-phone.is-hero-v2 #compare .comparison-price-tag,
  html.is-hero-phone.is-hero-v2 .comparison-price-tag{
    display: none !important;
  }
}

/* [Dave 9/7] the step trail (chips + the gold underline that rides with the
   active one) moves right 20px. It all lives inside .tunnel-trail, so one
   offset carries the bar with it. Desktop only. */
@media (min-width: 901px){
  html body #webyayTunnel .tunnel-trail{
    position: relative;
    left: 20px;
  }
}

/* [Dave 9/7] the handoff block - "Let's figure this out later", the host
   select, the access notes and the OK button - up 20px; it was hanging low.
   Moved as one group with position/top so nothing inside it reflows.
   Desktop only. */
@media (min-width: 901px){
  /* [REVERTED - Dave 9/7] -20px pulled "A Couple Quick Questions" up under the
     grey bar and clipped its top. Same cause as the step number above. */
  html body #webyayTunnel .tunnel-care-access__flow{
    position: relative;
    top: 0;
  }
}

/* ---- [Dave 9/7] why "thinner" kept not happening -------------------------
   Found it, and it was never the CSS. The shared template self-hosts Plus
   Jakarta Sans as FIVE STATIC FACES - 300, 400, 500, 600, 700 - so
   font-weight:200 had no 200 to match and the browser fell back to the
   nearest one it had: 300. Every "make it thinner" I applied was landing on
   the same 300 face, which is why some headers looked no different at all.
   The real ExtraLight was already sitting on the server unused:
   assets/fonts/PlusJakartaSans-Variable.woff2, a variable font covering the
   whole 200-800 range. Declared here so 200 is a genuine weight - no new
   download, no dependency on Google Fonts loading. */
@font-face{
  font-family: "Plus Jakarta Sans";
  src: url("/assets/fonts/PlusJakartaSans-Variable.woff2") format("woff2-variations"),
       url("/assets/fonts/PlusJakartaSans-Variable.woff2") format("woff2");
  font-weight: 200 800;
  font-style: normal;
  font-display: swap;
}

/* [Dave 9/7] "thinner type weight here" - the View <style> style link.
   Measured at 400. Now that the variable face is declared at 200-800 this is
   a real ExtraLight rather than a fallback to 300. Desktop only; the link is
   hidden on the phone anyway (display:none under 760), so nothing changes
   there either way. */
@media (min-width: 901px){
  html body #webyayTunnel .fdn-tunnelview,
  html body #webyayTunnel .fdn-tunnelview__txt{
    font-weight: 200 !important;
  }
}

/* [Dave 9/7] the scroll cue: circle 30% smaller, arrow 20% smaller, fill 80%
   opaque, and the whole thing 7px to the left.
     circle 30 x 30  ->  21 x 21   (30% off)
     arrow  15 x 15  ->  12 x 12   (20% off)
     fill   #fff     ->  rgba(255,255,255,.8)
     x      translate(-50%,0)  ->  translate(calc(-50% - 7px), 0)
   The transform is where its horizontal position lives, so the 7px rides
   inside it rather than fighting the centring. */
html body .fdn-scroll-cue{
  width: 21px !important;
  height: 21px !important;
  background: rgba(255,255,255,.8) !important;
  transform: translate(calc(-50% - 7px), 0) !important;
}
html body .fdn-scroll-cue:hover{
  background: rgba(212,160,23,.8) !important;
}
html body .fdn-scroll-cue .fdn-cue-ink svg,
html body .fdn-scroll-cue svg{
  width: 12px !important;
  height: 12px !important;
}

/* [Dave 9/7] the category contents list: right 6px, up 5px on desktop.
   position/top-left rather than margins, so the Yes/No row above it and
   anything under it stay exactly where they are. */
@media (min-width: 901px){
  /* [Dave 9/7] "move this content down 25px from here on desktop"
     -5 -> 20. position/top, so nothing below it reflows. */
  html body #webyayTunnel .tunnel-card .fdn-catlist{
    position: relative;
    left: 6px;
    /* [Dave 9/7] down 25 (from -5), then up 10 -> 10.
       [Dave 9/8] up 6 more -> 4 */
    top: 4px;
  }
}

/* [Dave 9/7] the little reset arrow beside the panel heading: down 4px,
   left 5px on desktop. It is BUTTON.tunnel-stepback-btn sitting next to the
   [data-3tile-subquestion-text] span. */
@media (min-width: 901px){
  html body #webyayTunnel .tunnel-detail__heading .tunnel-stepback-btn{
    position: relative;
    top: 4px;
    left: -5px;
  }
}

/* [Dave 9/7] swap the two controls under the monitor: the style pull-down
   moves to the right, the gold "View <style> style" link to the left. Same
   eye line - both already sit at top 84.9%, so only the horizontal anchor
   changes. Desktop only; on the phone the link is hidden anyway. */
@media (min-width: 901px){
  html body #webyayTunnel .fdn-stylepick{
    left: auto !important;
    right: 8.9% !important;
  }
  html body #webyayTunnel .fdn-tunnelview{
    right: auto !important;
    left: 8.9% !important;
  }
}

/* [Dave 9/7] "you blew up the email category - the text shifts all the way
   over to the right in a super narrow column."
   The collapsed email option lays out as a two-column grid,
   `auto minmax(0,1fr)`, and a 0 minimum lets the text column be squeezed to
   almost nothing when the first column grows - which is exactly the one-word-
   per-line stack in his screenshot. A real minimum on the text column can
   only ever make it wider, never narrower, so this cannot disturb anything
   that is already laying out correctly. */
/* [CORRECTED - Dave 9/7] "The email category is still totally screwed up on
   desktop. When you expand either of them it skews the text way to the right
   and tries to go side-by-side with the email fill-in field, which is never
   what we wanted. I want the fill-in blank BELOW the text, not competing with
   it, for both of them."

   Measured, closed vs open, at 1440:
       closed   grid-template-columns: 34px  312px    label x1999 w312
       open     grid-template-columns: 126px 220px    label x2091 w220

   Opening adds .tunnel-email-addresses - the fill-in field - and it carries
   grid-column:auto, so it lands in column ONE, forces that track to 126px and
   leaves the label and its description 220px, pushed 92px to the right. The
   field is not beside the text by design; it fell there.

   This is the SAME bug the mobile block above already fixes (see "Opening adds
   a fifth child ... that carries grid-column:auto"). That fix was written
   under @media (max-width:900) and desktop never got it - my earlier
   minmax(220px,1fr) "fix" only hard-coded the squashed width. Same rule now,
   spanning column 2 to the end so the body and the field stay indented under
   the label the way they were, each on its own row, stacked. */
@media (min-width: 901px){
  html body #webyayTunnel .tunnel-payment-option.fdn-ecollapse{
    grid-template-columns: auto minmax(0, 1fr) !important;
  }
  /* [CORRECTED - Dave 9/7 later] "why is the 'Use email for...' button cropped
     out on the right? You have all that stuff in a container that crops things
     and does NOT need to be that narrow. And increase the width of that body
     text so it is two lines, not three with a widow."
     Measured: grid 360px, columns "34px 312px", so column 2 gave the body and
     the field row 312px - but .tunnel-email-row is 374px wide and its parent
     .tunnel-email-addresses is overflow:hidden. That 62px difference IS the
     crop. Indenting into column 2 also squeezed the caption to three lines.
     So these span the WHOLE row (1 / -1, 360px) instead of column 2 - same as
     the mobile treatment - and the field row is allowed to shrink to fit
     rather than overflow a clipped box. */
  html body #webyayTunnel .fdn-ecollapse > *:not(.fdn-ecollapse__toggle):not(.fdn-ecollapse__label){
    grid-column: 1 / -1 !important;
    grid-row: auto !important;
    width: 100% !important;
    min-width: 0 !important;
  }
  /* nothing inside the field row may be wider than the row it sits in */
  html body #webyayTunnel .tunnel-email-rows,
  html body #webyayTunnel .tunnel-email-row,
  html body #webyayTunnel .tunnel-email-row__main{
    width: 100% !important;
    max-width: 100% !important;
    min-width: 0 !important;
  }
  html body #webyayTunnel .tunnel-email-row__main > *{
    min-width: 0 !important;
  }
  /* [Dave 9/7] the white OK, moved by fixEmailPanel() into the addresses block,
     sits beside "+ Add another email" - below the fields, tucked to its right. */
  html body #webyayTunnel .tunnel-email-addresses:has(.fdn-ok-moved){
    display: flex !important;
    flex-wrap: wrap !important;
    align-items: center !important;
    gap: 10px !important;
  }
  html body #webyayTunnel .tunnel-email-addresses:has(.fdn-ok-moved) > .tunnel-email-rows{
    flex: 0 0 100% !important;
  }
  html body #webyayTunnel .tunnel-email-addresses:has(.fdn-ok-moved) > .tunnel-email-add-btn,
  html body #webyayTunnel .tunnel-email-addresses:has(.fdn-ok-moved) > .fdn-ok-moved{
    flex: 0 0 auto !important;
    margin: 0 !important;
  }
  /* [Dave 9/7] "the price $4.90/mo needs to be bold." Deliberate exception to
     the standing nothing-heavier-than-400 rule, on his explicit ask. */
  html body #webyayTunnel .tunnel-payment-caption .fdn-price-bold{
    font-weight: 600 !important;
  }
}

/* [Dave 9/7] Monthly website care: whole block up 15px on desktop.
   Measured the headroom first this time - the eyebrow sits 63px below the
   card's clip edge, so 15px is well inside it and nothing can end up tucked
   under the grey bar the way the numbered circle did. Moved with position/top
   so nothing below it reflows. */
@media (min-width: 901px){
  html body #webyayTunnel .tunnel-card[data-cat-id="care"] .tunnel-card__eyebrow,
  html body #webyayTunnel .tunnel-card[data-cat-id="care"] .tunnel-qa{
    position: relative;
    top: -15px;
  }
}

/* [Dave 9/7] "Your content" block up 15px on desktop. Headroom measured
   first: the eyebrow sits 63px below the card's clip edge, same as the care
   card, so 15px is comfortably inside it. */
@media (min-width: 901px){
  html body #webyayTunnel .tunnel-card[data-cat-id="changes"] .tunnel-card__eyebrow,
  html body #webyayTunnel .tunnel-card[data-cat-id="changes"] .tunnel-qa{
    position: relative;
    top: -15px;
  }
}

/* [Dave 9/7] "On desktop these collapsed categories these four categories are
   too spread out vertically. I need to be closer by about half that much
   space on desktop."
   Measured first: .tunnel-3row.fdn-collapse rows are 25px tall with
   margin-bottom:16px, giving a uniform 41px pitch and a 16px gap. Half that
   gap is 8px -> pitch 33px. Desktop only; the mobile flex layout at
   max-width:900 is untouched. */
@media (min-width: 901px){
  html body #webyayTunnel .tunnel-3row.fdn-collapse{
    margin-bottom: 8px !important;
  }
}

/* [Dave 9/7] "On this lower faint gray bar can it be slightly translucent
   with a glassy blurry effect so that when content is below it there's a hint
   of that content scrolling up? I'd like to see that on mobile and desktop."
   Explicitly BOTH breakpoints this time, so this block is unguarded.

   Two halves, because translucency alone would have shown nothing: measured
   the bar at a solid rgb(236,236,237) sitting at y752-900, and the scrolling
   card (.tunnel-card, the real scroller) ending at exactly 752 - content was
   clipped at the bar's top edge, so there was nothing behind the glass to
   see.

   1. The bar is pulled up 46px with a negative margin so the card grows 46px
      taller underneath it and its content genuinely slides beneath the glass.
      The bar's own top/bottom edges do not move: .tunnel-mid is flex:1 1 auto
      and simply absorbs the 46px, so the bar still runs 752-900.
   2. The card's padding-bottom is raised by the same 46px (14 -> 60) so the
      last item can still scroll fully clear of the bar. Adding the same 46 to
      both the box height and the bottom padding leaves the content box
      unchanged, so vertically centred cards do not shift - checked, not
      assumed. */
/* [Dave 9/7, REVERTED] The glassy bottom bar attempt. Pulling the bar up 46px
   so content could scroll under it did NOT put the content under it - it put
   it OVER it: the card's own stacking context outranks the bar, so the web
   address / email fields painted straight across the wizard chips. Dave:
   "content goes UNDER bottom faint gray bar not over."
   Reverted whole - bar back to its solid rgb(236,236,237), card back to its
   14px bottom padding - rather than left half-fixed. */

/* [Dave 9/7] "this button can be a bit shorter (top/bottom) while keeping the
   text and chevron unchanged."  The style pill under the monitor.
   Measured: height 28.9px, font-size 10.2px, chevron 9.35px, padding
   0 28.9 0 13.6. Only the height moves - 28.9 -> 24px, about 17% shorter -
   so the type, the chevron and the horizontal padding are all untouched and
   the label still centres itself in the shorter pill.
   Desktop only; the mobile pill keeps its 28.9px. */
@media (min-width: 901px){
  html body #webyayTunnel .fdn-stylepick__select{
    height: 24px !important;
  }
}

/* [Dave 9/7, round 2] The glassy bottom bar, done right.
   Round 1 put the content OVER the bar instead of under it. Root cause found
   by measuring the stacking, not guessing: .tunnel-card is
   position:absolute with z-index:3, while .tunnel-bottom sat at z-index:auto.
   A positioned element with a z-index outranks a later sibling with none, so
   the card painted straight across the wizard chips. The overlap was never
   the problem - the paint order was.
   So: same 46px overlap, plus the bar lifted above the card. The bar's own
   top and bottom edges do not move (.tunnel-mid is flex:1 1 auto and absorbs
   the 46px), and each breakpoint's card padding-bottom grows by the same 46
   so the last item still scrolls fully clear of the glass:
     desktop 14 -> 60,  mobile 40 -> 86. */
#webyayTunnel .tunnel-bottom{
  position: relative !important;
  z-index: 10 !important;
  margin-top: -46px !important;
  background: rgba(236, 236, 237, .38) !important;
  -webkit-backdrop-filter: blur(11.2px) saturate(1.3) !important;
  backdrop-filter: blur(11.2px) saturate(1.3) !important;
}
@media (min-width: 901px){
  /* [Dave 9/9] "this is the furthest this will scroll and it's not enough -
     the gold button won't scroll above the bottom faint grey bar."
     The card deliberately runs 46px UNDER the glass bar, so 60px of bottom
     padding left the last element only 14px of clear once scrolled - which is
     no clear at all. 110px gives it 64px above the bar's top edge. */
  #webyayTunnel .tunnel-card{ padding-bottom: 110px !important; }
}
@media (max-width: 900px){
  #webyayTunnel .tunnel-card{ padding-bottom: 86px !important; }
}

/* [Dave 9/7] "the handoff content up 15px on desktop."
   Careful this time: an earlier -20px on .tunnel-care-access__flow pulled the
   heading ("A Couple Quick Questions") up under the grey bar and clipped it,
   and that revert is still in the file above. So this moves everything inside
   the flow EXCEPT .tunnel-care-access__head - the skip pill, the four selects
   and the access notes - which structurally cannot touch the heading: the
   heading is excluded, and position/top reflows nothing. */
@media (min-width: 901px){
  html body #webyayTunnel .tunnel-care-access__flow > *:not(.tunnel-care-access__head){
    position: relative;
    top: -15px;
  }
}

/* [Dave 9/7] "the info button and the reverse button are way off in outer
   space on the right side. They are always supposed to be part of the same
   component as the headline. The information bubble goes on the same eye line
   as the SECOND line of the header, about 20px to the right of it, and the
   reverse button about 20px to the right of the info button."

   Measured the heading: display:flex, gap 6px, justify-content:normal, with
   three children - SPAN (display:block, flex 0 1 auto), BUTTON.tunnel-info-btn
   (ml 5px), BUTTON.tunnel-stepback-btn (ml 15px). Nothing pushes the buttons
   right; the SPAN does it. As a flex item its base size is max-content - the
   full one-line width of the heading - so it claims the whole row, wraps its
   text to two lines INSIDE that wide box, and leaves the buttons parked at the
   far right edge of it.

   So stop treating the text as a flex item. The heading becomes a block and
   the two buttons become inline-flex, which makes them flow as part of the
   text - landing right after the last word on the second line, on its own eye
   line, which is exactly what he described. 20px of separation each, per the
   ask, replacing the 5px/15px margins.

   Scoped with :has() to headings that actually carry an info button, so every
   other heading on the page keeps the flex row it has now. */
@media (min-width: 901px){
  html body #webyayTunnel .tunnel-detail__heading:has(.tunnel-info-btn){
    display: block !important;
  }
  html body #webyayTunnel .tunnel-detail__heading:has(.tunnel-info-btn) > span:first-child{
    display: inline !important;
  }
  html body #webyayTunnel .tunnel-detail__heading:has(.tunnel-info-btn) .tunnel-info-btn,
  html body #webyayTunnel .tunnel-detail__heading:has(.tunnel-info-btn) .tunnel-stepback-btn{
    display: inline-flex !important;
    vertical-align: middle !important;
    margin-left: 20px !important;
    position: static !important;   /* clears the earlier top:4px/left:-5px nudge */
    top: auto !important;
    left: auto !important;
  }
}

/* [Dave 9/7] "'Who else has access to your website?' does not have to be huge
   and all the way across - same size as the buttons above it, tucked into the
   space to the right, adjacent to and level with Domain / DNS company. That
   saves us real estate."
   Found it in the shared sheet, dated 8/21: that field was given
   grid-column:1/-1 back when it was the ONLY question left in the access grid
   ("there is no longer a second column for it to share"). There are four
   questions again, so the full-width span now strands an empty half-slot
   beside Domain / DNS and pushes this one onto a row of its own.
   Put it back in a single column - it lands row 2, column 2 - and let its
   label wrap instead of forcing one line, since the column is half as wide.
   align-self:end keeps its select on the same eye line as the Domain / DNS
   select when the label takes two lines. Desktop only. */
@media (min-width: 901px){
  html body #webyayTunnel .tunnel-access-grid > .tunnel-page-panel__field:has(select[name="current_site_manager"]){
    grid-column: auto !important;
    align-self: end !important;
  }
  /* [Dave 9/7, follow-up] "get this on one line instead of two with a widow -
     change website to just site, and increase that text block a bit."
     The label is now "Who else has access to your site?" (relabelled in
     foundations.js), and column two is given ~18% more width than column one
     so it fits without wrapping. Column one holds "Website platform" and
     "Domain / DNS company", both short, so they lose nothing they were using.
     nowrap restored now that the string is shorter. */
  html body #webyayTunnel .tunnel-access-grid{
    grid-template-columns: minmax(0, 1fr) minmax(0, 1.18fr) !important;
  }
  html body #webyayTunnel .tunnel-access-grid > .tunnel-page-panel__field:has(select[name="current_site_manager"]) > span{
    white-space: nowrap !important;
  }
}

/* [Dave 9/7] the gold "Let's build it!" pill on the chosen style card - 15%
   larger on desktop. Measured first: font-size 11.5px, padding 6/14/7, gap 6px,
   arrow 12.5px. Everything x1.15 - 13.2 / 6.9-16.1-8.05 / 6.9 / 14.4 - scaled
   through its own metrics rather than a transform, so it stays crisp and its
   hover translateY is untouched. Desktop only. */
@media (min-width: 901px){
  html body #foundations .fdn-card.is-chosen .fdn-build-btn{
    font-size: 13.2px !important;
    padding: 6.9px 16.1px 8.05px !important;
    gap: 6.9px !important;
  }
  html body #foundations .fdn-card.is-chosen .fdn-build-btn__arrow{
    font-size: 14.4px !important;
  }
}

/* [Dave 9/7] the tiny white + on the two colour swatches - the affordance that
   says "click me to open a picker", not just "here is the colour you typed".
   The wrapper is added by markColorSwatches(); it sizes to the 34px swatch so
   the "Choose" label above it stays aligned, and the + is pointer-events:none
   so every click still lands on the input itself.
   No shadow behind it, per the standing rule - it reads against the swatch on
   its own. */
#webyayTunnel .fdn-swatchwrap{
  position: relative;
  display: inline-flex;
  flex: 0 0 auto;
  line-height: 0;
}
#webyayTunnel .fdn-swatchplus{
  position: absolute;
  z-index: 3;
  right: 4px;
  bottom: 1px;
  font-family: "Montserrat", "Plus Jakarta Sans", Arial, sans-serif;
  font-size: 12px;
  font-weight: 400;
  line-height: 1;
  color: #fff;
  pointer-events: none;
}

/* [Dave 9/7] "On the wizard I'd like the previous categories to be the solid
   black text that matches what the current category looks like, instead of
   going gray - and of course the future ones stay ghosted."
   Measured the three states on the trail:
     is-done     rgba(28,36,42,.62)                      <- grey
     is-current  rgb(28,36,42)                           <- solid
     is-future   rgba(28,36,42,.43) at .68 chip opacity  <- ghosted
   Done now matches current exactly. Future is deliberately untouched, and so
   is the orange checkmark. Both breakpoints - this is a colour parity fix, not
   a layout one, and the trail is the same component on each. */
#webyayTunnel .tunnel-chip.is-done .tunnel-chip__label{
  color: rgb(28, 36, 42) !important;
}

/* [Dave 9/7] arrow inside the "Let's figure out later" pill, right of the text.
   Same glyph as the "Let's build it!" pill so the two read as one family. */
#webyayTunnel .tunnel-care-access__skip::after{
  content: "\2192";
  margin-left: 8px;
  font-size: 1.05em;
  line-height: 1;
}


/* [Dave 9/7] "why two OK buttons on New email setup? Remove the top/left one,
   keep the bottom right one." The kept one is .fdn-ok-moved, seated beside
   "+ Add another email". Anything else inside the open group that renders an
   OK is the redundant one. */
#webyayTunnel .fdn-ecollapse.is-open .fdn-ecollapse__ok:not(.fdn-ok-moved),
#webyayTunnel .fdn-ecollapse.is-open .fdn-collapse__ok:not(.fdn-ok-moved),
#webyayTunnel .fdn-ecollapse.is-open .tunnel-3tile-ok,
#webyayTunnel .fdn-ecollapse.is-open .tunnel-3tile-ok-row{
  display: none !important;
}

/* ===== [Dave 9/7] MONTSERRAT TRIAL =======================================
   "I'm not crazy about the font style on these main reverse headers in white,
   or the sub headers in the gray. I'd like to see what all of that looks like
   on the foundation page and the tunnel page in Montserrat, kinda thinner."

   A TRIAL BLOCK - everything is in here, nothing else in the file was touched,
   so reverting is deleting from this comment to the end marker below.
   Montserrat 200/300 added to the existing Google Fonts request (it was
   already loading 400-700 for the style picker, so only the thin weights are
   new). 200 on the big white reverse headers, 300 on the grey sub-heads -
   Montserrat 200 is genuinely thin and the sub-heads are body-sized.
   Both breakpoints, since he wants to see the whole treatment. */

/* --- the big white reverse header, tunnel top band ("Maintenance") --- */
html body #webyayTunnel .tunnel-top__headline h2,
html body #webyayTunnel .tunnel-top__headline h2 *{
  font-family: "Montserrat", "Plus Jakarta Sans", Arial, sans-serif !important;
  letter-spacing: -.005em !important;
}

/* --- the grey sub-heads ("Would you like help hosting...") --- */
html body #webyayTunnel .tunnel-card__question,
html body #webyayTunnel .tunnel-detail__heading,
html body #webyayTunnel .tunnel-detail__heading--subquestion,
html body #webyayTunnel .tunnel-card__question *,
html body #webyayTunnel .tunnel-detail__heading > span:first-child{
  font-family: "Montserrat", "Plus Jakarta Sans", Arial, sans-serif !important;
  font-weight: 200 !important;  /* [Dave 9/7] "I love this weight - needs to be this throughout." 300 -> 200 */
  letter-spacing: -.004em !important;
}

/* --- foundation page: its headers and the eight style names --- */
/* [CORRECTED - Dave 9/7] "why did you update some headers and not others?
   What's your strategy having a different [weight] for every single element?
   Sounds pretty stupid to me."
   He is right - I was adding one selector at a time as he spotted each miss,
   instead of just treating every header on the page. The reason it looked
   arbitrary: almost none of these headings carry a class (checked - h2/h3
   throughout the page are bare tags), so selector-by-selector was always going
   to leave holes.
   So this is by TAG for everything outside the tunnel, plus the handful of
   headers that are spans rather than headings (.investment-h2__line,
   .fdn-lead__in / __out). One rule, no holes, nothing to keep chasing. */
html body h1:not(#webyayTunnel h1),
html body h2:not(#webyayTunnel h2),
html body h3:not(#webyayTunnel h3),
html body .fdn-h2,
html body .fdn-lead__in,
html body .fdn-lead__out,
html body .investment-h2__line,
html body .section-title,
html body #foundations .fdn-card__name{
  font-family: "Montserrat", "Plus Jakarta Sans", Arial, sans-serif !important;
  font-weight: 200 !important;  /* [Dave 9/7] "I love this weight - needs to be this throughout." 300 -> 200 */
}
/* ===== end Montserrat trial ============================================== */

/* [Dave 9/7] "the iframe is not centered here - the HTML needs to shift up two
   pixels and into the left three pixels."
   Margins, not top/left: the frame is position:absolute with its top/left
   already set, and fitMonitorPreview() owns its transform - a margin offsets
   it cleanly without touching either. Desktop only. */
@media (min-width: 901px){
  html body #webyayTunnel .tunnel-intro__screen iframe{
    margin-top: -2px !important;
    margin-left: -3px !important;
  }
}

/* [Dave 9/7] "these four toggles are not aligned with the text next to them -
   they sit too high. Shift them down about four pixels on desktop."
   The collapse switches on the Design + content rows. position/top so only the
   switch moves and the row's grid is untouched. Desktop only. */
@media (min-width: 901px){
  html body #webyayTunnel .tunnel-3row.fdn-collapse > .fdn-collapse__toggle{
    position: relative;
    top: 4px;
  }
}

/* [Dave 9/7] "the OK buttons should be justified left on all the categories
   rather than centered?" Agreed - the heading, the switches, the labels and
   the URL field are all on one left edge, so a centred OK is the only thing
   off that axis and reads as unattached to the list it closes.
   Every OK row in the panels goes flex-start. Desktop only. */
@media (min-width: 901px){
  html body #webyayTunnel .tunnel-3tile-ok-row,
  html body #webyayTunnel .tunnel-pages-count-row,
  html body #webyayTunnel .tunnel-forms-ok-row{
    justify-content: flex-start !important;
    text-align: left !important;
  }
  html body #webyayTunnel .tunnel-3tile-ok-row > .tunnel-3tile-ok,
  html body #webyayTunnel .tunnel-forms-ok-row > .tunnel-3tile-ok{
    margin-left: 0 !important;
    margin-right: auto !important;
  }
}

/* [Dave 9/7] the "View <style> style ›" link under the monitor:
   "slightly larger by maybe 10%, text dark gray, keep the chevron gold, turn
   bright gold on hover."
   Measured: text 10.5px, chevron 13px, whole thing #d4a017 with a #b07f0d
   hover. So: 10.5 -> 11.55, chevron 13 -> 14.3, text to the page's dark grey
   with the chevron left gold, and BOTH to bright gold on hover. */
@media (min-width: 901px){
  html body #webyayTunnel .fdn-tunnelview{
    font-size: 11.55px !important;
    color: #6a6b6d !important;
  }
  html body #webyayTunnel .fdn-tunnelview__txt{
    color: #6a6b6d !important;
    transition: color .18s ease;
  }
  html body #webyayTunnel .fdn-tunnelview__chev{
    font-size: 14.3px !important;
    color: #d4a017 !important;
    transition: color .18s ease, transform .18s ease;
  }
  html body #webyayTunnel .fdn-tunnelview:hover,
  html body #webyayTunnel .fdn-tunnelview:hover .fdn-tunnelview__txt,
  html body #webyayTunnel .fdn-tunnelview:hover .fdn-tunnelview__chev{
    color: #EFAA15 !important;
  }
}

/* [Dave 9/7] "that font weight is what I want for ALL the reverse white titles
   in the gray bar, for every style option and every category - and it still is
   not."
   Root cause, measured stepping through the tunnel: the style-name step renders
   the title as plain <h2> text, which my inline 200 was reaching. Every OTHER
   category renders it as an SVG - <svg><text><tspan> per letter - and those
   tspans measured font-weight 400. So "Traditional style" looked right and
   nothing else did.
   The SVG text gets the same family and weight here. CSS beats an SVG
   presentation attribute, so this reaches it even where the markup sets its
   own font-weight. */
html body #webyayTunnel .tunnel-top__headline svg,
html body #webyayTunnel .tunnel-top__headline svg text,
html body #webyayTunnel .tunnel-top__headline svg tspan{
  font-family: "Montserrat", "Plus Jakarta Sans", Arial, sans-serif !important;
  font-weight: 200 !important;
}

/* [CORRECTED - Dave 9/7] the arrow went on the wrong button. There are TWO
   "figure out later" pills: .tunnel-care-access__skip (the handoff card, which
   I styled) and .fdn-later-btn, built in addLaterButton() and sitting beside
   the tile grid's OK - which is the one in his screenshot. Both get it. */
#webyayTunnel .fdn-later-btn::after{
  content: "\2192";
  margin-left: 8px;
  font-size: 1.05em;
  line-height: 1;
}

/* [CORRECTED - Dave 9/7] "the reverse button is not supposed to be on its own
   dedicated line - it goes up adjacent, just right of the info button, on the
   same eye line."
   It was wrapping because 20px + 20px of margin left it needing ~46px more
   than the line had. Margins cut to 10px, and the heading is held to one line
   so the pair can never be pushed down again. Scoped with :has() to headings
   that actually carry an info button, so no other heading is affected. */
@media (min-width: 901px){
  /* [REVERTED - Dave 9/7] the nowrap that was meant to keep the reverse button
     on the heading's line took the whole subhead out of view instead - a
     heading wider than its container with nowrap gets pushed out and clipped.
     The 10px margins below are enough on their own. */
  html body #webyayTunnel .tunnel-detail__heading:has(.tunnel-info-btn) .tunnel-info-btn,
  html body #webyayTunnel .tunnel-detail__heading:has(.tunnel-info-btn) .tunnel-stepback-btn{
    margin-left: 10px !important;
  }
}

/* [Dave 9/7] "there are a ton of subheads and sub-subheads that have not
   changed - they ALL need the new type setting and weight."
   Stopping the selector-by-selector chase for good: the family goes on the
   whole tunnel, and the weight goes on every heading-shaped thing in it.

   Exclusions are deliberate and narrow: the font picker must keep rendering
   each option in its own typeface (.tunnel-font-pill / [data-font-option] and
   their children), or the picker stops being a picker. Preview iframes are
   separate documents and are unaffected by any of this. */


/* every heading, subhead and sub-subhead in the tunnel at the weight he
   picked off "Traditional style" */
#webyayTunnel h1, #webyayTunnel h2, #webyayTunnel h3,
#webyayTunnel h4, #webyayTunnel h5, #webyayTunnel h6,
#webyayTunnel .tunnel-card__eyebrow,
#webyayTunnel .tunnel-detail__heading--subquestion,
#webyayTunnel .tunnel-detail__heading--sub,
#webyayTunnel .tunnel-detail__heading > span,
#webyayTunnel .tunnel-3row__label,
#webyayTunnel .fdn-ecollapse__label,
#webyayTunnel .tunnel-3tile__label,
#webyayTunnel .tunnel-choice__label,
#webyayTunnel .tunnel-care-access__head,
#webyayTunnel .tunnel-care-access__skip,
#webyayTunnel .fdn-later-btn,
#webyayTunnel .tunnel-top__headline h2{
  font-weight: 200 !important;
}

/* [Dave 9/7] "you keep moving this number with the circle up and down - it is
   now touching the eyebrow, move it back where it belongs."
   Measured every card: the number sits at y202 on all of them EXCEPT the
   summary card, where it sits at y223 with its eyebrow at 240 - a gap of 0,
   against 18-33 everywhere else. So this is the summary card alone, 21px low.
   -21px puts it at 202, exactly level with every other card's number, which is
   a position already proven not to clip. */
@media (min-width: 901px){
  html body #webyayTunnel .tunnel-card[data-cat-id="summary"] .tunnel-card__stepnum{
    position: relative;
    /* [Dave 9/7 round 2] "it's resting on top of the eyebrow - it belongs a
       little closer to the top gray bar." -21 put it level with the other
       cards (y202) but only 21px above its eyebrow, where untouched cards have
       33. -31 puts it at y192 for a 31px gap, and the card clips at 189 so
       there are still 3px of headroom - measured, not guessed. */
    /* [Dave 9/7] "move down 7px on desktop" - -31 becomes -24. */
    top: -24px;
  }
}

/* [Dave 9/7] "the bottom credit card images are getting cropped and messed up."
   Same cause as the category list earlier: .tunnel-summary__checkout-row and
   .tunnel-summary__payment-icons carry position:relative top:25px, which moves
   them visually but adds NOTHING to the card's scroll height - so the last
   25px of the icon row falls past the card's clip. Bottom margin gives the
   container the room the shift needs. */
@media (min-width: 901px){
  html body #webyayTunnel .tunnel-summary__payment-icons{
    margin-bottom: 32px !important;
    overflow: visible !important;
  }
}

/* [Dave 9/7] "change the font to Montserrat THINNER" - said repeatedly, so
   stop hedging: the subheads go to Montserrat 100, the thinnest cut the family
   has, loaded alongside 200 in the Google request. The big reverse headers stay
   at the 200 he picked off "Traditional style". */
#webyayTunnel .tunnel-card__question,
#webyayTunnel .tunnel-detail__heading,
#webyayTunnel .tunnel-detail__heading--subquestion,
#webyayTunnel .tunnel-detail__heading--sub,
#webyayTunnel .tunnel-detail__heading > span{
  font-weight: 100 !important;
}

/* [Dave 9/7] "no horizontal padding/spacing between these four tally items -
   there is way too much. Needs to be almost half of what's showing." Desktop.
   Measured the space between two items as three stacked values:
     .estimate-breakdown  gap           25px
     .estimate-part       margin-right  16px
     .estimate-part       padding-left   8px
                                        ---- 49px total
   Each halved -> 12 + 8 + 4 = 24px. The divider rule below keeps its equal
   16/16 either side of the gold line by scaling with them. */
@media (min-width: 901px){
  html body #webyayTunnel .tunnel-total__amount .estimate-breakdown{
    gap: 12px !important;
  }
  html body #webyayTunnel .tunnel-total__amount .estimate-part{
    /* [Dave 9/8] "about 6px LESS horiz for all of them except where the vert
       line is separating the subscriptions from the 1-offs, keep that as it is."
       The space between two neighbouring items is three stacked values:
         gap 12 + margin-right 8 + padding-left 4 = 24px
       Taking the 6 off margin-right (8 -> 2) makes it 18px and leaves the gold
       divider alone, because the item sitting immediately before the divider
       already carries margin-right:0 (see the --care/--email rule above) and
       the divider's own side is the website part's padding-left:9px. So the
       divider's 21px is untouched and only the plain gaps tighten. */
    margin-right: 2px !important;
    padding-left: 4px !important;
  }
  html body #webyayTunnel .tunnel-total__amount .estimate-breakdown:has(.estimate-part--care) .estimate-part--website,
  html body #webyayTunnel .tunnel-total__amount .estimate-breakdown:has(.estimate-part--email) .estimate-part--website{
    padding-left: 9px !important;
  }
}

/* [Dave 9/7] "is this the new Montserrat?" - measured, and no: the hero price
   block was still Plus Jakarta Sans. .comparison-price-tag / -price-lead are
   not headings, so nothing in the heading rules reached them.
   Rather than add a seventh selector and wait to be caught again, the family
   goes on the WHOLE page, exactly as it already does inside the tunnel. Same
   two exclusions as there - the font picker must keep showing each option in
   its own typeface. Preview iframes are separate documents and unaffected.
   Weights are untouched here; only the typeface changes. */
/* [CORRECTED - Dave 9/7] "they're STILL Jakarta." Found the mechanism.
   I had been writing this rule as
     html body *:not(.tunnel-font-pill):not(.tunnel-font-pill *):not(...)
   A COMPLEX selector inside :not() is Selectors Level 4. If the browser does
   not support it the ENTIRE rule is invalid and dropped - so on his machine
   nothing changed at all, while my test browser (very recent Chromium) applied
   it perfectly and I kept reporting it verified. His Chrome is showing
   "Relaunch to update", i.e. it is behind.
   Same trap in the :has() rules elsewhere.
   So the typeface is now set with plain CSS that every browser understands,
   and the font picker's own faces are restored from JS (inline !important
   beats a stylesheet !important), which needs no selector support at all. */
html body *{
  font-family: "Montserrat", "Plus Jakarta Sans", Arial, sans-serif !important;
}
/* the price lead resisted the page-wide rule (it sits under an id-scoped
   ancestor chain); named explicitly so it cannot hold out. */
html body #compare .comparison-price-tag .comparison-price-lead,
html body .comparison-price-tag .comparison-price-lead,
html body .comparison-price-lead{
  font-family: "Montserrat", "Plus Jakarta Sans", Arial, sans-serif !important;
}

/* ===== [Dave 9/7] MONTSERRAT, SELF-HOSTED ================================
   "STILL no change on the font." Two independent changes went invisible at
   once tonight, which is what finally pointed at the real cause: the font
   stack reads "Montserrat", "Plus Jakarta Sans", Arial - so if Montserrat
   never DOWNLOADS, the browser silently falls back to the next family, which
   is Jakarta. Every measurement I took said "Montserrat" because that is what
   the CSS declares; none of them could tell me whether the file arrived, since
   my test browser has no network for fonts at all.
   Google is serving it correctly (checked: 100-900 variable, HTTP 200), so
   something between his browser and fonts.gstatic.com is dropping it - an
   extension, a blocker, DNS, take your pick. Rather than diagnose his machine,
   the font now ships from this site. 35KB, latin subset, full 100-900 axis, no
   third party involved. Declared before any use so it wins the race. */
@font-face{
  font-family: "Montserrat";
  /* [Dave 9/7] Two footguns removed at once:
     1. the first src used format("woff2-variations"), a legacy string
        some browsers reject outright rather than skipping past;
     2. the file was a separate request, which anything on his machine
        could still block.
     The font is now INLINE as a data URI - no request to block, and
     only the standard format("woff2"). Verified variable: fvar wght
     axis 100-900. */
  src: url(data:font/woff2;base64,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) format("woff2");
  font-weight: 100 900;
  font-style: normal;
  font-display: swap;
}

/* [Dave 9/7] the pay tunnel's top bar gradient - DESKTOP.
   My first attempt edited the .tunnel-top::before / ::after rules, which sit
   inside @media (max-width:900px) - so it only ever touched mobile, and he saw
   zero change (that mobile edit is reverted). Measured at 1440: the desktop bar
   is painted on .tunnel-top ITSELF, background-image
   linear-gradient(135deg, rgb(97,97,99), rgb(153,154,155)).
   135deg is what makes it uneven left-to-right. 180deg gives one tone at every
   height; top goes to rgb(26,26,26) - 90% black - and the bottom stays exactly
   as it was. */
@media (min-width: 901px){
  html body #webyayTunnel .tunnel-top{
    /* [CORRECTED - Dave 9/7] I changed the ANGLE, which was never the ask.
       It has always been 135deg: dark in the upper-left corner running down to
       the light colour in the lower-right. Only the dark END was meant to
       change. Angle restored to 135deg; rgb(97,97,99) -> rgb(26,26,26) is the
       only difference from the original. */
    /* [Dave 9/7] "make the upper left 10% lighter, too blackish."
       26 + (255-26)*0.10 = 49. Angle and the light end are untouched. */
    background-image: linear-gradient(135deg,
      rgb(49,49,49) 0%, rgb(153,154,155) 100%) !important;
  }
}

/* ===== [Dave 9/7] THE WEIGHT, VIA THE AXIS ================================
   Comparing his screenshots against a control strip I rendered: the FAMILY is
   landing (his price block matches my confirmed-Montserrat render exactly).
   What is not landing is the WEIGHT - his subheads draw at roughly 400 while
   every computed-style reading I take says 100.
   So stop asking for the weight by name. Montserrat here is a variable font
   with a real wght axis (verified: fvar wght 100-900), and
   font-variation-settings drives that axis DIRECTLY - it is not the same code
   path as font-weight and cannot be normalised, synthesised or overridden by
   another font-weight rule.
   font-synthesis:none on top, so the browser is never allowed to fake a weight
   it thinks is missing. */
#webyayTunnel .tunnel-card__question,
#webyayTunnel .tunnel-detail__heading,
#webyayTunnel .tunnel-detail__heading--subquestion,
#webyayTunnel .tunnel-detail__heading--sub,
#webyayTunnel .tunnel-detail__heading > span,
#webyayTunnel .tunnel-3row__label,
#webyayTunnel .fdn-ecollapse__label,
#webyayTunnel .tunnel-care-access__head,
html body .fdn-h2,
html body .fdn-lead__in,
html body .fdn-lead__out,
html body .investment-h2__line,
html body .comparison-price-lead{
  /* [Dave 9/7] 100 -> 150 ("too thin at that size") -> 200 ("still very thin
     on the smaller subheads"). Same as the big reverse titles now. */
  font-variation-settings: "wght" 200 !important;
  font-synthesis: none !important;
  font-weight: 200 !important;
}

/* the big reverse titles keep the 200 he picked off "Traditional style" */
#webyayTunnel .tunnel-top__headline h2,
#webyayTunnel .tunnel-top__headline h2 *,
#webyayTunnel .tunnel-top__headline svg,
#webyayTunnel .tunnel-top__headline svg text,
#webyayTunnel .tunnel-top__headline svg tspan{
  font-variation-settings: "wght" 200 !important;
  font-synthesis: none !important;
  font-weight: 200 !important;
}

/* [Dave 9/7] "make this text block 60px narrower (from the right)."
   The intro paragraph under "Choose a look. We make it yours."
   Measured: max-width min(1000px, 100%), rendering 1000px wide from x245 to
   x1245. 1000 - 60 = 940, so the left edge does not move and only the right
   edge pulls in. Desktop only. */
@media (min-width: 901px){
  html body .value-intro p{
    max-width: min(940px, 100%) !important;
  }
}

/* [Dave 9/7] the wizard chips: weight 350 (not 200) and 10% larger, both
   breakpoints. Measured: Montserrat, font-weight 400, 13px, with
   font-variation-settings still "normal" - they were the last text on the page
   never given the axis treatment, which is why they read heavier than
   everything around them. 13 x 1.10 = 14.3px.
   The gold indicator is sized from the active chip by syncActiveIndicator(),
   so it re-measures and follows the new width on its own. */
#webyayTunnel .tunnel-chip .tunnel-chip__label{
  font-variation-settings: "wght" 350 !important;
  font-synthesis: none !important;
  font-weight: 350 !important;
  font-size: 14.3px !important;
}

/* [Dave 9/8] the gold "for 12 installments" was touching the dark "$57/mo"
   beside it - my halving of the tally spacing yesterday took the breathing
   room with it. 8px of left margin on the em only; the price and the item
   spacing are untouched. Desktop. */
@media (min-width: 901px){
  html body #webyayTunnel .tunnel-total__amount .estimate-part em{
    margin-left: 8px !important;
  }
}


/* ---- [Dave 9/8] the summary's Edit buttons and the gold "Back to checkout" -
   "get rid of the edit buttons and the gold 'return to checkout' buttons
    completely EXCEPT for the Payment Plan edit button; keep that one, as it
    just goes back 1 tile; the others you never figured out how to get working
    correctly."
   The Payment Plan row is the only jump that lands one tile back, so it is the
   only one that survives. Its button carries data-jump-category="payment".
   The gold return pill exists only to get back from those other jumps, so it
   goes with them. Both breakpoints - this is a behaviour change, not a layout
   one. */
#webyayTunnel .tunnel-summary__edit-btn:not([data-jump-category="payment"]){
  display: none !important;
}
#webyayTunnel .fdn-backcheckout,
#webyayTunnel #fdnBackToCheckout,
#fdnBackToCheckout{
  display: none !important;
}


/* ---- [Dave 9/8] the final tile stops scrolling before the card logos ------
   "this is the farthest that I could scroll on the final tile ... it stops
    before those credit cards are showing so the scrolling needs to loosen up a
    little bit so that it could scroll another 25 or 30 pixels at least."
   The summary card carries the same 86px of bottom padding every card got when
   the glassy bar went in, and on that one card the Visa/Mastercard/Amex row is
   the last thing in the stack, so it lands underneath the bar with nothing left
   to scroll. 36px more of scroll travel on the summary card only - the other
   cards are untouched. Mobile only. */
@media (max-width: 900px){
  html body #webyayTunnel .tunnel-card[data-cat-id="summary"]{
    padding-bottom: 122px !important;
  }
}

/* ---- [Dave 9/8] the wizard trail, 3px tighter -----------------------------
   "3px less horiz padding/space between each of these wizard categories,
    moving data to the left, keep the left / first cat in same place."
   The trail is a flex row and the space between two chips is a single 16px
   column-gap (the .tunnel-trail__seg between them is absolutely positioned, so
   it takes no room of its own). 16 -> 13. A gap change pulls everything left
   and leaves the first chip exactly where it is. Desktop only. */
@media (min-width: 901px){
  html body #webyayTunnel [data-tunnel-trail]{
    gap: 13px !important;
    column-gap: 13px !important;
  }
}

/* ---- [Dave 9/8] the checkout block up 25px --------------------------------
   "move this content UP 25px in desktop" - the gold rule, Secure Checkout, the
   total, and the card logos.
   They are one flow: .tunnel-summary__checkout-row carries the gold rule as its
   own border-top and .tunnel-summary__payment-icons sits directly under it, so
   pulling the row up takes the icons with it. Measured margin-top 2px -> -23px
   is exactly 25 painted pixels, and it leaves 8px of clear under the last
   summary line. Desktop only. */
@media (min-width: 901px){
  html body #webyayTunnel .tunnel-summary__checkout-row{
    /* [Dave 9/9] back down 10: -23 -> -13 */
    margin-top: -13px !important;
  }
}


/* ---- [Dave 9/8] lift the wizard above the grey bar BEFORE it collides -----
   "there's a window size where it starts colliding ... break that a little bit
    sooner than you do, it's just a little bit too late."

   The shared template already moves the trail up out of the grey bar, but on a
   fixed breakpoint - @media (max-width:1148px). A fixed width cannot be right,
   because the thing it has to clear is the running tally, and the tally grows
   every time the visitor adds a page, a logo, a form or an email account. With
   six items in it the two meet at ~1184px, well before 1148 ever fires - which
   is exactly the overlap he photographed.

   So the same layout is available as a class, and foundations.js turns it on by
   MEASUREMENT: trail width + tally width + 40px inset + 40px of clearance
   against the row's real width. It fires the moment they would touch, at any
   window size and with any number of items, and there is 40px of hysteresis so
   it cannot flicker while dragging the window edge. Below 1148 the template's
   own media query still does the same thing; the two agree, so nothing fights. */
#webyayTunnel.fdn-trail-up .tunnel-bottom__header{
  justify-content: flex-end !important;
}
#webyayTunnel.fdn-trail-up .tunnel-bottom__header .tunnel-trail{
  position: absolute !important;
  left: 20px !important;
  right: auto !important;
  bottom: 100% !important;
  margin-bottom: 16px !important;
  width: auto !important;
}
#webyayTunnel.fdn-trail-up .tunnel-active-indicator{
  top: auto !important;
  bottom: 100% !important;
}


/* ---- [Dave 9/8] the foundations sub-header, 20% larger -------------------
   "make subheader 20% larger, keep all in one line."
   Measured 18.432px in a 980px column, rendering 782px wide on one line.
   x1.2 = 22.12px, which takes the line to ~938px - still inside the column, so
   it holds one line without a nowrap (a nowrap wider than its box clips the
   text outright, which is what wiped the sub-heads out on 9/7). Desktop only. */
@media (min-width: 901px){
  html body .fdn-lead__out{
    font-size: 22.1px !important;
    line-height: 1.35 !important;
  }
}


/* ---- [Dave 9/8] the eight style toggles are miserable to tap on a phone ---
   "I had to click about 12 times to get one of them to turn on and then
    they're not easy to turn back off again ... way more sensitive or way more
    responsive. All 8."

   Two causes, both mobile-only:
   1. The target. Painted 48x28 - Apple's own floor is 44x44, and 28px tall
      means a finger landing a few pixels high or low misses the control
      entirely. A ::before extends the TOUCH area to 76x60 without changing a
      single painted pixel: the switch looks exactly the same, it is just no
      longer a sliver.
   2. touch-action:auto. Safari holds every tap on a scrolling page while it
      decides whether the finger is starting a scroll, and cancels the tap
      outright if the finger drifts. On a long scroller with a 28px target that
      is most taps. `manipulation` tells it there is no double-tap zoom here, so
      the tap fires immediately.
   foundations.js adds the third piece - a touch handler with a real slop
   tolerance, so a tap that drifts a few pixels still counts. */
@media (max-width: 900px){
  html body #foundations .fdn-toggle{
    touch-action: manipulation !important;
    -webkit-tap-highlight-color: rgba(239,170,21,.25);
  }
  html body #foundations .fdn-toggle::before{
    content: "";
    position: absolute;
    top: -16px; bottom: -16px; left: -14px; right: -14px;
    border-radius: 40px;
    background: transparent;
    z-index: 0;
  }
  /* the knob has to stay above that pad or it swallows nothing but paints under */
  html body #foundations .fdn-toggle .fdn-toggle__knob{ z-index: 1; }
  /* the pad must not be clipped by the row it sits in */
  html body #foundations .fdn-card__label{ overflow: visible !important; }
}

/* ---- [Dave 9/8] the style list is grey and hard to read on a phone --------
   "these smaller categories for style in this style selector on mobile should
    be pure white not gray to see better."

   The picker is a native <select>, so iOS draws the open list itself - the only
   things CSS can reach inside it are the <option>'s own colour and background.
   The pill's colour is #1c242a (near-black, correct against the white pill),
   and iOS was painting the option text in that same near-black over its dark
   popover - which is exactly the grey he is seeing. Setting the options
   explicitly: pure white on a dark ground, so the list reads at a glance.
   Scoped to this one select by id - the intake form's dropdowns sit on white
   and must keep their dark text. Mobile only. */
@media (max-width: 900px){
  html body #fdnStylePick option,
  html body #webyayTunnel .fdn-stylepick__select option{
    color: #ffffff !important;
    background-color: #24282c !important;
  }
  /* the wheel/list inherits the select's own colour on some iOS builds, so the
     dark scheme is declared too - it makes iOS render the popover chrome dark
     and keeps the white text legible either way. The closed pill keeps its own
     near-black label, set on the select itself above. */
}


/* ---- [Dave 9/8] the style switcher's text, pure white on mobile ----------
   "I asked you to make all this text, including the smaller choices, pure
    white, and it looks like you did the opposite ... make the main chosen
    style and the smaller choices pure white text so it's readable."

   My last pass aimed at the wrong control - I styled the native <select>'s
   options, and this is not that select. It is .fdn-scenename, the style
   switcher that sits over the desk scene in the full-screen preview, built in
   foundations.js. Both of its colours were deliberately knocked back:
     the chosen word   rgba(255,255,255,.82)
     the seven options rgba(255,255,255,.68)
   Over a dark photo that reads as grey, which is exactly what he is seeing.
   Both to pure #fff. Mobile only - the desktop switcher keeps its .42/hover
   treatment, which works against its own background. */
@media (max-width: 900px){
  html body .fdn-scenename .fdn-scenename__word,
  html body .fdn-scenename.is-switchable .fdn-scenename__cur{
    color: #ffffff !important;
  }
  html body .fdn-scenename.is-switchable .fdn-scenename__opt,
  html body .fdn-scenename.is-switchable .fdn-scenename__opt:active{
    color: #ffffff !important;
  }
}

/* ---- [Dave 9/8] the eight style titles, 15% larger on mobile -------------
   "those should all be about 15% larger."
   Measured 17px on a phone (set by the #foundations rule near line 5549, which
   carries an ID so it beats html+body). 17 x 1.15 = 19.55px. Carrying the same
   ID here so it wins in turn. Letter-spacing is in em, so the tracking grows
   with it and the caps keep their proportion. Mobile only. */
@media (max-width: 900px){
  html body #foundations .fdn-card__name{
    font-size: 19.55px !important;
  }
}


/* ---- [Dave 9/8] style titles pure white -----------------------------------
   "the text for the style titles should be pure white and larger like I said."
   They were #F6F1E8, a warm off-white. Pure #fff, both breakpoints. The gold
   for a chosen style still wins - that rule carries an ID and !important. */
html body #foundations .fdn-card__name,
html body .fdn-card__name{
  color: #ffffff !important;
}

/* ---- [Dave 9/8] same switcher on desktop: options pure white -------------
   "make these smaller selection options pure white too - this is in 2 places
    (in the view styles on foundation, and in the pay tunnel view xx style
    button)."
   Both places are the same element, .fdn-scenename. Mobile was done; the
   desktop rule still held the options at rgba(255,255,255,.42). Pure #fff. */
html body .fdn-scenename .fdn-scenename__word,
html body .fdn-scenename .fdn-scenename__cur,
html body .fdn-scenename .fdn-scenename__opt{
  color: #ffffff !important;
}
/* [Dave 9/9] "gold on hover for the smaller selectable text links; this is in
   several places." Same element in both spots - the foundation page's View
   style view and the pay tunnel's View XX style view - so one rule covers
   both. :active carries it to a finger on a phone, where there is no hover. */
html body .fdn-scenename .fdn-scenename__opt:hover,
html body .fdn-scenename .fdn-scenename__opt:focus-visible,
html body .fdn-scenename .fdn-scenename__opt:active{
  color: #EFAA15 !important;
}

/* ---- [Dave 9/8] kill the two widows in the intro copy --------------------
   "widen text block to get rid of these 2 widows."
   Both paragraphs were capped far narrower than the column they sit in
   (340px and 315px inside a 517px parent), which is what dropped "full." and
   "have." onto lines of their own. Widened to 430px - still inside the column,
   with both last lines carrying real text now. Desktop. */
@media (min-width: 901px){
  /* the shared sheet sets these with an ID (#investmentEntry .investment-
     entry__compare), and an ID beats html+body however many !importants are on
     it - so this has to carry the ID too. */
  html body #investmentEntry .investment-entry__compare,
  html body #investmentEntry .investment-entry__desc,
  html body .investment-entry__compare,
  html body .investment-entry__desc{
    max-width: 430px !important;
  }
}

/* ---- [Dave 9/9] drop the second sub-head on desktop ----------------------
   "the sub-head and text is bleeding out of the above-fold hero image into the
    2nd category ... i guess we can get rid of this sub-header if we don't have
    room on desktop view."
   "Explore the foundations and choose the one that fits your practice." is the
   last line of the hero's lead block, and it was the part running past the
   photo's bottom edge onto the dark band below. Hidden on desktop; the phone
   keeps it (there is room there, and it was made 20% larger yesterday). */
@media (min-width: 901px){
  html body .fdn-lead__out{
    display: none !important;
  }
}


/* [Dave 9/9] the lifted back-arrow was being clipped at the top of the panel.
   Nothing about the heading needs to clip, so it stops clipping. */
#webyayTunnel .tunnel-detail__heading{
  overflow: visible !important;
}
#webyayTunnel .tunnel-detail__heading .tunnel-stepback-btn{
  position: relative;
  z-index: 3;
}

/* ---- [Dave 9/9] the six tiles: solid white on hover ----------------------
   "opaque white fill on hover, not the light grey. desktop."
   The shared sheet fills them with a translucent teal wash on hover, which
   over the panel's grey reads as light grey. Solid #fff instead. Desktop only -
   there is no hover on a phone. */
@media (min-width: 901px){
  /* [CORRECTED - Dave 9/9] a chosen tile is gold with white type (.is-done),
     and the white hover was turning it white-on-white - the label vanished.
     The white hover is now for UNchosen tiles only; a chosen one just darkens
     its gold and keeps its white type. */
  html body #webyayTunnel .tunnel-3tile:not(.is-done):hover{
    background: #ffffff !important;
    background-color: #ffffff !important;
  }
  html body #webyayTunnel .tunnel-3tile.is-done:hover{
    background: #d4930c !important;
    background-color: #d4930c !important;
    border-color: #d4930c !important;
    color: #ffffff !important;
  }
  html body #webyayTunnel .tunnel-3tile.is-done:hover .tunnel-3tile__check,
  html body #webyayTunnel .tunnel-3tile.is-done:hover *{
    color: #ffffff !important;
  }
}

/* ---- [Dave 9/9] the two email rows: closer together, lower ---------------
   "these 2 categories on desktop are too far apart, have them half as far
    apart; and move the 2 cats together down away from the sentence above by
    10px lower."
   Measured on desktop: row 1 ends at 863, row 2 starts at 889 - a 26px gap,
   of which 14 is this margin-bottom. Halving the GAP means taking 13 off, so
   14 -> 1. The pair also drops 10px away from the caption above it. */
@media (min-width: 901px){
  html body #webyayTunnel .tunnel-payment-option.fdn-ecollapse{
    margin-bottom: 1px !important;
  }
  html body #webyayTunnel .tunnel-payment-option.fdn-ecollapse:first-of-type{
    margin-top: 10px !important;
  }
}

/* ---- [Dave 9/9] the eight hover overlays: blur only, no darkening --------
   "just go blur/glassy effect without the darkening on hover on these 8, not
    the darkening on hover; desktop, only blur."
   The overlay was doing both - a 52% black wash plus a 2px backdrop blur. The
   wash is gone and the blur is raised so the glass still reads on its own.
   Desktop only; phones keep the darkened version, which is what makes the
   label legible on a small screen. */
@media (min-width: 901px){
  html body .fdn-card__view,
  html body #foundations .fdn-card__view{
    background: transparent !important;
    backdrop-filter: blur(6px) saturate(1.05) !important;
    -webkit-backdrop-filter: blur(6px) saturate(1.05) !important;
  }
}


/* ---- [Dave 9/9] the hero artwork's taller tail, and the outline monitors ---
   1) The shared main-v114.js writes #stageHolder's height inline as
      1300px * --stage-scale, which is why the picture box grew to 1760 but the
      section stayed 1037 tall - the holder clipped it. Same formula, new base,
      as a stylesheet !important so it outranks that inline write.
   2) "slightly thinner and slightly more translucent on the svg outline
      images round desktop computers; desktop."
      Stroke 0.4235 -> 0.35 (a new file, his path data untouched) and the two
      opacity levels eased: idle .20 -> .15, hover .40 -> .32. */
@media (min-width: 901px){
  html.is-hero-v2 body .stage-holder,
  html.is-hero-v2 body #stageHolder,
  /* .compare-shell wraps the holder and carries the same 1300-based height -
     it was clipping the taller picture right back off again. */
  html.is-hero-v2 body .compare-shell{
    height: calc(1760px * var(--stage-scale)) !important;
  }
  html body #foundations .fdn-card__frame--outline,
  html body .fdn-card__frame--outline{
    content: url("assets/img/dave-outline-v10-desk.svg") !important;
    opacity: .15 !important;
  }
  /* [Dave 9/9] "the outline monitor svg is supposed to be more apparent on
     hover - 10% more opaque." .32 -> .42. Idle stays at .15. */
  html body .fdn-card__monitor:hover .fdn-card__frame--outline{
    opacity: .42 !important;
  }
  html body .fdn-card.is-chosen .fdn-card__frame--outline,
  html body .fdn-card.is-chosen .fdn-card__monitor:hover .fdn-card__frame--outline{
    opacity: 0 !important;
  }
}

/* ---- [Dave 9/9] the hero price, a touch looser --------------------------
   "just slightly more kerning here, NOT extreme, surgical; 5 and 7 almost
    touching currently."
   Measured -1.87px of NEGATIVE tracking at 41.6px type, which is what jams the
   5 into the 7. Halved to -0.022em (~-0.92px) - about a pixel of air back per
   gap, nothing else about the block changes. */
html body .comparison-price-tag strong,
html body #compare .comparison-price-tag strong{
  letter-spacing: -0.022em !important;
}

/* ---- [Dave 9/9] a little darkening back, on the two light ones only ------
   "I'd like it for six of the eight, but these two with the lighter colours
    need a little bit of darkening on hover - not as much as you had."
   Sage and Light are pale enough that white label type on plain blur has
   nothing to sit against. 28% black instead of the old 52%; the other six stay
   blur-only. Desktop. */
@media (min-width: 901px){
  html body .fdn-card[data-foundation="sage"] .fdn-card__view,
  html body .fdn-card[data-foundation="light"] .fdn-card__view,
  html body #foundations .fdn-card[data-foundation="sage"] .fdn-card__view,
  html body #foundations .fdn-card[data-foundation="light"] .fdn-card__view{
    background: rgba(10, 12, 14, .28) !important;
  }
}


/* [Dave 9/9] the lifted back-arrow was still clipping at the top of the panel.
   The heading's own paint box ended right at the text, so anything nudged above
   it got cut. 6px of top padding pulled straight back out with a matching
   negative margin: the box is 6px taller upward, nothing on screen moves, and
   the circle has room to sit in. */
/* [CORRECTED] a blanket margin-top here would have replaced whatever margin
   each heading already had and shifted every one of them - not surgical. The
   lift is small enough now (-2px) that only the clipping needed fixing, and
   that is what overflow does on its own. */
#webyayTunnel .tunnel-detail__heading{
  overflow: visible !important;
}
#webyayTunnel .tunnel-detail__heading .tunnel-stepback-btn{
  position: relative;
  z-index: 3;
}


/* [Dave 9/9] the cloned back arrow on the Maintenance heading sits adjacent to
   the words, not against them. */
#webyayTunnel .tunnel-detail__heading--planhead .fdn-planhead-stepback{
  margin-left: 14px !important;
  vertical-align: middle;
}

/* ---- [Dave 9/9] the four plan captions ----------------------------------
   "make all the text below the button be 10% smaller than it is, and move all
    4 of those text blocks UP 2px."
   Measured 12px. 12 x 0.9 = 10.8px, and 2px up as a transform so nothing around
   them reflows. Scoped to the Maintenance plan list so the email captions,
   which are the same class, keep their own size. Desktop. */
@media (min-width: 901px){
  html body #webyayTunnel .tunnel-care-choices-wrap .tunnel-payment-caption{
    font-size: 10.8px !important;
    transform: translateY(-2px) !important;
  }
}

/* ---- [Dave 9/9] close the gap under the review heading -------------------
   "WAY too much space between the header and the line-items; make about half
    that much space on review / confirm card on desktop."
   Measured heading bottom 289, first row top 321 - a 32px gap. Halved to 16 by
   pulling .tunnel-detail up 16px on this card only, so no other step moves. */
@media (min-width: 901px){
  html body #webyayTunnel .tunnel-card[data-cat-id="summary"] .tunnel-detail{
    margin-top: -16px !important;
  }
}

/* ---- [Dave 9/9] drop the gold step numbers on desktop too ----------------
   "let's remove ALL these 01, 02 numbers w/ circles (gold) on the desktop too
    (already removed from mobile); they don't add anything."
   display:none removes the whole box - the circle plus its 4px top and 10px
   bottom margins - so everything below rises by that full amount on its own. */
@media (min-width: 901px){
  html body #webyayTunnel .tunnel-card__stepnum{
    display: none !important;
  }
}

/* ---- [Dave 9/9] give 10px back at the top of the cards ------------------
   "now I think that content is crowding too high on that upper gray bar, so
    move all four of those main ones down 10 pixels back down."
   The eyebrow carried margin-top:-10px, which existed to tuck it under the
   gold step number. With that number gone the pull has nothing to tuck under,
   so zeroing it hands back exactly the 10px he asked for - no new number
   invented, just the old one retired. Desktop. */
/* [CORRECTED] zeroing the eyebrow margin did nothing - each of the four cards
   carries its OWN offset (the summary uses margin-top:-10px, care and changes
   use top:-15px), and those are more specific. Chasing them one by one is how
   these end up disagreeing with each other. Instead the whole card's contents
   move down together with 10px of padding at the top: every card shifts by
   exactly 10, and not one of the existing per-card offsets is disturbed. */
@media (min-width: 901px){
  /* measured: the card's padding-top computes to 28px, and a plain
     "#webyayTunnel .tunnel-card" rule loses to whatever sets it. The class is
     repeated to out-rank that without having to hunt it down. 28 + 10 = 38. */
  html body #webyayTunnel .tunnel-card.tunnel-card.tunnel-card{
    padding-top: 38px !important;
  }
}

/* ---- [Dave 9/9] two nudges on the monitor's two pills --------------------
   Both sit on the artwork with transform:translate(10px,-2px) from 9/1.
     "View <style> style"  -> 12px LEFT  : 10 -> -2
     the style pull-down   -> 10px RIGHT : 10 -> 20
   The vertical -2px is left exactly as it was in both. Desktop only; the phone
   keeps its own placement. */
@media (min-width: 901px){
  html body #webyayTunnel .fdn-tunnelview{
    transform: translate(-2px, -2px) !important;
  }
  html body #webyayTunnel .fdn-stylepick{
    transform: translate(20px, -2px) !important;
  }
}

/* ---- [Dave 9/9] the tile panels up 12px ---------------------------------
   "move up 12px on desktop" (shown on the Custom logo panel).
   These panels sit inside the cards that just took 10px of top padding, so
   they all dropped together - fixing only the one he screenshotted would leave
   the other five sitting differently. Applied to every tile panel so they stay
   cohesive. position/top, so nothing below reflows. */
@media (min-width: 901px){
  html body #webyayTunnel [data-3tile-panel]{
    position: relative;
    /* [Dave 9/9] up 12, then 10 more, then back down - and at -16 the headings
       at the top of these panels were landing past the card's clip edge and
       losing their tops. Backed off to -6, which is clear of it. */
    /* [Dave 9/9 - REVERTED] -16 was wrong and I should have caught it: these
       panels have their own opaque background, so lifting them does not move
       the heading above them - it PAINTS OVER it. Design + content and Fonts
       lost their headers entirely, Smart forms lost the top of its. Back to
       -6; the extra 10px is taken out of the gap below the heading instead
       (rule right below), which moves the same content up without any overlap. */
    top: -6px;
  }
}

/* [Dave 9/9] the Add-pages heading is the one place the back arrow renders
   BEFORE the words - it is the first child in that panel's markup, so it lands
   on top of "Choose". Laying the heading out as a row and giving the button
   order:2 puts it after the text without JS moving nodes around (which is what
   caused the dancing last time). Scoped to this one panel. */
@media (min-width: 901px){
  html body #webyayTunnel [data-3tile-panel="pages"] .tunnel-detail__heading{
    display: flex !important;
    align-items: center !important;
    gap: 14px !important;
  }
  html body #webyayTunnel [data-3tile-panel="pages"] .tunnel-detail__heading .tunnel-stepback-btn{
    position: static !important;
    left: auto !important;
    top: auto !important;
    margin: 0 !important;
    order: 2;
    flex: 0 0 auto;
  }
}

/* ---- [Dave 9/9] the Website access panel up 10px ------------------------
   "move all this content up 10px on desktop."
   This one is .tunnel-care-access, not a [data-3tile-panel], so the shared
   nudge above never reached it. position/top so nothing below reflows. */
@media (min-width: 901px){
  html body #webyayTunnel .tunnel-care-access__flow{
    position: relative;
    top: -10px;
  }
}


/* ---- [Dave 9/9] scale the tunnel card up on big monitors ----------------
   "on a 5k monitor that text seems too small by like 8% or 10%. Would it be a
    pain to increase the size of this content throughout the desktop on all the
    tiles and all the inside modals? I don't want to blow everything up."

   zoom, not font-size: zoom scales the card and everything inside it - type,
   fields, pills, the tile panels, every modal that lives in the card - as one
   piece, so nothing re-wraps and no spacing decision made over the last week is
   disturbed. It also participates in layout, unlike transform:scale, so the
   measured passes in foundations.js keep reading true numbers.

   The one thing it changes that something else depends on is the card's width
   (465 -> 502 at 1.08). computeMonitorScale() no longer trusts that constant -
   it measures the card - so the monitor gives up exactly the right amount of
   room and the two never collide.

   Gated at 1800px so 1440 and every normal laptop render exactly as today. */
/* [CORRECTED - Dave 9/9] "refreshed, zero change in the size." Of course:
   his window measured ~1775px in the screenshot and the first step was gated
   at 1800, so it never fired. Ladder lowered and given a rung he actually
   lands on. 1440 and narrower are still untouched. */
/* [Dave 9/9, 2nd pass] "looks larger everywhere all the time" - the first rung
   was at 1500, which most of his windows clear, so it read as one flat change
   rather than a ladder. First rung raised to 1600 so ordinary windows sit at
   plain 1.0, and the top two rungs get his extra 5% for the 5K. */
/* [Dave 9/9, 3rd pass] The stepped bands are gone. He has measured three of
   these rounds against stickies on his screen and twice landed in a band I had
   not moved - that is a design flaw in stepping it at all. foundations.js now
   scales the card CONTINUOUSLY from the real window width, so any width above
   1400 gets a proportional size and there is no band left to miss. */

/* ---- [Dave 9/9] the monitor halving across a 30px window change ----------
   "two screenshots about 5px apart - the larger is good, the slightly smaller
    pops the monitor to almost half. There's NO reason. Glitch; fix it."

   Traced it and the monitor was the symptom, not the cause. Measured either
   side of the boundary:
        window 1145 -> card 465 wide, monitor 491
        window 1176 -> card 372 wide, monitor 785
   The CARD is what jumps - it gets NARROWER as the window gets WIDER, crossing
   the template's 1148px layout breakpoint. computeMonitorScale() gives the
   monitor whatever the card leaves over, so a 93px swing in the card threw the
   monitor by nearly 300.
   Pinning the card to its designed 465px across all desktop widths removes the
   swing at source, so the monitor now changes smoothly through that boundary
   instead of falling off it. (Above 1450 the zoom scales this 465 as one piece,
   which is a proportional change, not a jump.) */
@media (min-width: 901px){
  html body #webyayTunnel .tunnel-card.tunnel-card{
    width: 465px !important;
    max-width: 465px !important;
  }
}
/* [Dave 9/9] "this monitor and iframe needs to be 8-10% larger at this browser
   size." Measured at 1171x873: the monitor is WIDTH-bound, not height-bound -
   the row is 1163 and monitor 678 + gap 24 + card 465 already spends all of it.
   At these widths the monitor and the card are trading pixels directly, so the
   only way to give the monitor 10% is to let the card give it up.
   The card now tapers smoothly from 465 at 1450 down to 390 at 1100 instead of
   holding 465 all the way down. Smooth on purpose - a step here is exactly the
   jump he caught earlier. At 1171 that hands the monitor ~735px, about 9% more,
   and at 1450 and above the card is its full 465 again. */
@media (min-width: 901px) and (max-width: 1449px){
  html body #webyayTunnel .tunnel-card.tunnel-card{
    width: clamp(390px, calc(390px + (100vw - 1100px) * 0.2143), 465px) !important;
    max-width: 465px !important;
  }
}


/* [Dave 9/9] "raise this sentence up 20 pixels on desktop" - the
   "Fill in only what you'd like" line under the Design + Content header. */
@media (min-width: 901px){
  html body #webyayTunnel .fdn-focus-note{
    /* [Dave 9/9] up 20, now back down 10 -> -10 */
    position: relative;
    top: -10px;
  }
  /* and whatever follows it comes up 10 */
  html body #webyayTunnel .fdn-focus-note + *{
    position: relative;
    top: -10px;
  }
}


/* [REVERTED - Dave 9/9] The -18px lift on every --subquestion header is gone.
   It cropped the tops of "Custom logo", "Smart forms" and "Additional Page 1
   of 1" clean off, because it stacked on top of the panel offset below and
   pushed those headings past the card's own top edge. Two regressions from one
   blanket rule on a shared class - not worth defending. */

/* ---- [Dave 9/9] the logo panel's body up 5px ----------------------------
   "move all this content UP 5px on desktop" - the intro line down to the OK
   button, i.e. everything AFTER the Custom logo header.
   Deliberately not moving the panel itself: that carries the header with it,
   and the header is what was getting its top clipped earlier tonight. Only the
   siblings after the header move. */
@media (min-width: 901px){
  html body #webyayTunnel [data-3tile-panel="logo"] .tunnel-detail__heading--logohead ~ *{
    position: relative;
    top: -5px;
  }
}

/* [Dave 9/9] same treatment on the Smart forms panel - everything after its
   header up 6px, header itself left where it is. */
@media (min-width: 901px){
  html body #webyayTunnel [data-3tile-panel="forms"] .tunnel-detail__heading--logohead ~ *{
    position: relative;
    top: -6px;
  }
}

/* [Dave 9/9] the six tile buttons down 10px on desktop. Applied to the tiles
   themselves rather than a wrapper, so nothing above or below them reflows. */
@media (min-width: 901px){
  html body #webyayTunnel .tunnel-3tile{
    position: relative;
    top: 10px;
  }
}


/* ---- [Dave 9/9] the six tiles: fit the check AND the label --------------
   "text and the checkmark need to fit inside the button - preferably pill
    shapes a bit wider."
   Measured: pill 136px, 6px padding each side, 12px type, and the selected
   tile adds a 14px check plus a 6px gap - which is exactly what pushes
   "Design + content" past its own edge.
   Room is reclaimed from three places rather than shrinking the type: the row
   gap 6 -> 3 (wider pills), the pill padding 6 -> 4, and the check 14 -> 11
   with a 4px gap. That is ~13px back on the tightest tile, which fits it. */
@media (min-width: 901px){
  html body #webyayTunnel .tunnel-3tile{
    padding-left: 4px !important;
    padding-right: 4px !important;
    gap: 4px !important;
  }
  html body #webyayTunnel .tunnel-3tile__check{
    width: 11px !important;
    height: 11px !important;
  }
  /* [Dave 9/9] the tightened gap was meant to buy WIDTH; it took the vertical
     space with it. Columns stay at 3px, rows go to 12 (his +6 on the original
     6px) so the two rows breathe again. */
  html body #webyayTunnel .tunnel-3tile-row,
  html body #webyayTunnel .tunnel-3tiles{
    /* [Dave 9/9] 3px less vertically, 3px more horizontally: 12 -> 9, 3 -> 6 */
    column-gap: 6px !important;
    row-gap: 7px !important;   /* [Dave 9/9] 2px tighter between the two tile rows */
  }
}

/* ---- [Dave 9/9] match Maintenance's Yes/No to Build's -------------------
   "too far apart and not justified left to the content above it, like the
    Build category before it - must match."
   Measured, Build vs Maintenance:
     Build   Yes x1951 (flush with the question), 14px between the buttons
     Maint.  Yes x1962 (11px indented),           35px between
   The indent and the wider gap both come from the extra column wrapper this
   card uses for its caption. Zeroed and matched to Build's 14. */
@media (min-width: 901px){
  html body #webyayTunnel .tunnel-card[data-cat-id="care"] .tunnel-yesno{
    gap: 14px !important;
    column-gap: 14px !important;
    justify-content: flex-start !important;
    padding-left: 0 !important;
    margin-left: 0 !important;
  }
  /* [Dave 9/9 - FOUND IT] Each Yes/No sits in a .tunnel-yesno__col, and that
     column measured 154px against a 132px button. The extra 22 is the caption
     "(handoff finished web files)", which is wider than the button and was
     stretching its own column - so the columns, and therefore the buttons,
     were pushed 22px further apart than Build's.
     The caption is taken out of the column's width calculation (absolute, so it
     still prints exactly where it did) and the columns shrink to their buttons.
     14px between them, same as Build. */
  html body #webyayTunnel .tunnel-card[data-cat-id="care"] .tunnel-yesno__col{
    gap: 6px !important;
    padding-left: 0 !important;
    margin-left: 0 !important;
    align-items: flex-start !important;
    position: relative !important;
    width: auto !important;
    min-width: 0 !important;
    flex: 0 0 auto !important;
  }
  html body #webyayTunnel .tunnel-card[data-cat-id="care"] .tunnel-yesno__col > :not(.tunnel-yesno__btn){
    position: absolute !important;
    top: 100% !important;
    left: 0 !important;
    margin-top: 6px !important;
    white-space: nowrap !important;
  }
  html body #webyayTunnel .tunnel-card[data-cat-id="care"] .tunnel-yesno__col > .tunnel-yesno__btn{
    margin-left: 0 !important;
  }
}

/* ---- [Dave 9/9] the lifted wizard is too big ----------------------------
   "when the browser is this size the wizard is way too big - on top of the grey
    bar which is good, but too big; should be 30% smaller, and moved right 20px."
   Only in the lifted state (the template's own <=1148 layout, and the measured
   .fdn-trail-up class). scale() rather than font sizes so the chips, dots and
   connector lines all come down together and nothing reflows; origin bottom-left
   so it stays anchored where it sits. left 20 -> 40 is his 20px right. */
@media (min-width: 901px) and (max-width: 1148px){
  html body #webyayTunnel .tunnel-bottom__header .tunnel-trail{
    left: 40px !important;
    transform: scale(0.7) !important;
    transform-origin: left bottom !important;
  }
}
html body #webyayTunnel.fdn-trail-up .tunnel-bottom__header .tunnel-trail{
  left: 40px !important;
  transform: scale(0.7) !important;
  transform-origin: left bottom !important;
}

/* [Dave 9/9] Maintenance Yes/No - the 36px measured between them was coming
   from the buttons' own margins, not the row gap. Zeroed so the row's 14px is
   the only spacing, matching Build exactly. */
@media (min-width: 901px){
  html body #webyayTunnel .tunnel-card[data-cat-id="care"] .tunnel-yesno .tunnel-yesno__btn{
    margin: 0 !important;
  }
}

/* ---- [Dave 9/9] make the six tiles' outline match the Yes/No pills -------
   "the thinness of the yes/no is right; the six buttons are too thick."
   Measured: both are already 1px solid. The difference is not the width, it is
   what is behind it - the Yes/No pills are filled WHITE, so their edge reads as
   the boundary of a light shape; the tiles are transparent on the same grey, so
   the line is the only thing there and reads heavier at identical width.
   Matching the colour exactly (.20 -> .18, the Yes/No value) and easing it to
   .12 so it carries the same visual weight against a transparent fill. */
@media (min-width: 901px){
  html body #webyayTunnel .tunnel-3tile:not(.is-done){
    border-width: 1px !important;
    border-style: solid !important;
    border-color: rgba(28, 36, 42, .12) !important;
  }
}


/* [Dave 9/9] the pay-plan OK: left-justified under the four options, with the
   same air above it the other OK buttons have. Both breakpoints. */
#webyayTunnel .tunnel-choices > .fdn-payok{
  display: inline-flex !important;
  /* [Dave 9/9] .tunnel-choices is a GRID, so align-self only governed the
     block axis and the pill stretched the full 224px column. justify-self +
     width:auto shrink it back to the same 75px pill every other OK is. */
  justify-self: start !important;
  align-self: start !important;
  width: auto !important;
  max-width: max-content !important;
  margin-top: 14px !important;
  margin-left: 0 !important;
}


/* [Dave 9/9] the font list: down 7px, and 3px tighter between each row. */
@media (min-width: 901px){
  /* [Dave 9/9] the 7px belongs on the LIST, not the first row: the rows are
     grid items and :first-of-type matched only Jakarta, which knocked it out
     of line with Garamond beside it. */
  html body #webyayTunnel [data-3tile-panel="font"] .tunnel-font-list{
    /* padding, not margin - the list is the panel's first child so a top
       margin collapses straight through it and moves nothing. */
    padding-top: 7px !important;
  }
  html body #webyayTunnel [data-3tile-panel="font"] .tunnel-font-row:first-of-type{
    margin-top: 0 !important;
  }
  html body #webyayTunnel [data-3tile-panel="font"] .tunnel-font-row{
    margin-bottom: -3px !important;
  }
}

/* [Dave 9/9] the hero price block 10% larger on desktop. scale() with the
   origin at its top-left, so the block grows right and down from exactly where
   it is anchored now (its position is set by top/left, which stay untouched)
   and every part of it - the two lines, the price and the installments note -
   grows together. */
@media (min-width: 901px){
  html body html.is-hero-v2 .comparison-price-tag,
  html.is-hero-v2 body .comparison-price-tag,
  html.is-hero-v2 #compare .comparison-price-tag{
    transform: scale(1.1) !important;
    transform-origin: left top !important;
  }
}

/* [Dave 9/9] the "Transition Questions?" chevron sits 2-3px low against the
   text. It is a ::after glyph, so it rides the baseline rather than the
   text's optical centre - lifted 2.5px to line up. Desktop. */
@media (min-width: 901px){
  html body #webyayTunnel .fdn-contact-foot .tunnel-transition-faq-btn::after{
    position: relative;
    top: -2.5px;
  }
}


/* [Dave 9/9] the auth links in the top bar were touching the window edge on a
   narrower desktop (measured y=0 at 940 and 1101, y=16 at 1280+). Give that
   band the same air the wide layout already has. */
@media (min-width: 901px) and (max-width: 1279px){
  html body #webyayTunnel .tunnel-top__actions{
    position: relative;
    top: 20px;
  }
}

/* [Dave 9/9] "can these pill shapes be 12px wider and still fit in the card?"
   Yes - 6px of padding on each side. */
@media (min-width: 901px){
  html body #webyayTunnel .tunnel-3tile{
    padding-left: 10px !important;
    padding-right: 10px !important;
  }
}

/* [Dave 9/9] the foundation card's content up 15px on desktop. Taken off the
   card's own top padding so the whole block moves together and nothing below
   it reflows. */
@media (min-width: 901px){
  /* [Dave 9/9] 15px, then another 10 - taken off the card's own top padding so
     the whole block travels together. */
  html body #webyayTunnel .tunnel-card[data-cat-id="website"].tunnel-card.tunnel-card{
    padding-top: 13px !important;
  }
  /* [Dave 9/9] "Here's what we can build in." - the six-tile card up 10px. */
  html body #webyayTunnel .tunnel-card[data-cat-id="changes"].tunnel-card.tunnel-card{
    padding-top: 28px !important;
  }
}

/* [Dave 9/9] "eliminate the widow." text-wrap:pretty tells the browser to
   avoid leaving a single word on the last line - it re-balances instead of
   needing a hand-tuned width for every panel. */
#webyayTunnel .tunnel-3tile-panel__intro,
#webyayTunnel .tunnel-detail__lead,
#webyayTunnel .tunnel-3tile-panel p{
  text-wrap: pretty;
}

/* [Dave 9/9] the headers added to the Fonts / Email / Design + content panels
   sit on the same line as their back arrow, like every other panel head. */
#webyayTunnel .fdn-panelhead{
  margin-top: 0 !important;
  margin-bottom: 10px !important;
}
#webyayTunnel .fdn-panelhead .fdn-panelhead-stepback{
  margin-left: 14px !important;
  vertical-align: middle;
}


/* [Dave 9/9] "sentence text box much wider so it's not jammed up, and
   eliminate the widow." The handoff host question sat in one narrow grid
   column, so a 6-word question broke over three lines with "(host)?" alone on
   the last. It takes the full row now. */
@media (min-width: 901px){
  html body #webyayTunnel [data-access-fields-handoff]{
    grid-template-columns: 1fr !important;
  }
  html body #webyayTunnel [data-access-fields-handoff] .tunnel-page-panel__field{
    grid-column: 1 / -1 !important;
  }
  html body #webyayTunnel [data-access-fields-handoff] .tunnel-page-panel__field > span{
    max-width: none !important;
    white-space: normal !important;
    text-wrap: pretty;
  }
}

/* [Dave 9/9] the pay-plan card's content up 15px on desktop - same as the
   foundation card, taken off the card's own top padding. */
@media (min-width: 901px){
  html body #webyayTunnel .tunnel-card[data-cat-id="payment"].tunnel-card.tunnel-card{
    padding-top: 23px !important;
  }
}


/* [Dave 9/9] "this tagline needs to be responsive to browser width - smaller
   when the browser is this small so it doesn't collide with the Next button."
   The strip held one fixed size at every width. It now shrinks smoothly from
   its full size at 1280 down to ~78% at 940, which clears the button. */
@media (min-width: 901px) and (max-width: 1279px){
  html body #webyayTunnel .tunnel-mid__tagline,
  html body #webyayTunnel .tunnel-mid__tagline-word,
  html body #webyayTunnel .tunnel-mid__tagline-sep{
    font-size: clamp(10px, calc(10px + (100vw - 940px) * 0.0088), 13px) !important;
  }
  html body #webyayTunnel .tunnel-mid__tagline{
    gap: clamp(6px, calc(6px + (100vw - 940px) * 0.0176), 12px) !important;
  }
}


/* [Dave 9/9] "these counters for forms and additional pages are way too large -
   reduce the counter and button by 30% and keep the two consistent." One rule
   on the stepper itself, so both panels get exactly the same 70%. zoom (not
   transform) so the row's layout closes up around it instead of leaving a hole
   where the full-size control used to be. */
#webyayTunnel .tunnel-stepper{
  zoom: 0.7;
}


/* [Dave 9/9] the logo check reads as a switch: gold = in the tally, ghosted =
   not chosen. */
#webyayTunnel .tunnel-logohead-check{
  cursor: pointer;
  transition: opacity .18s ease, filter .18s ease;
}
#webyayTunnel .tunnel-logohead-check.fdn-check-off{
  opacity: .3 !important;
  filter: grayscale(1) !important;
}


/* [Dave 9/9] "what is the weight of these headers and sub-headers? They need
   to be 50 more - a bit thin for someone who can't see well." Measured at 200
   (Montserrat variable, "wght" 200). Both the card question and the panel
   headings go to 250. The variation setting has to move with the weight -
   on a variable font it is what actually paints the stroke. */
#webyayTunnel .tunnel-card__question,
#webyayTunnel .tunnel-detail__heading,
#webyayTunnel .tunnel-detail__heading--subquestion,
#webyayTunnel .tunnel-detail__heading--logohead,
#webyayTunnel .tunnel-detail__heading--planhead{
  font-weight: 250 !important;
  font-variation-settings: "wght" 250 !important;
}


/* [Dave 9/9] "just remove this reverse button on the additional inside pages."
   Only the panel's own heading - the "Additional Page 1 of 1" arrow inside the
   page flow stays. */
@media (min-width: 901px){
  html body #webyayTunnel [data-3tile-panel="pages"] .tunnel-pages-setup .tunnel-stepback-btn,
  html body #webyayTunnel [data-3tile-panel="pages"] > .tunnel-detail__heading .tunnel-stepback-btn{
    display: none !important;
  }
}

/* [Dave 9/9] "$190" bold on the additional-pages line. */
#webyayTunnel .fdn-pgprice,
#webyayTunnel .tunnel-3tile-panel__intro strong,
#webyayTunnel .tunnel-detail__label strong{
  font-weight: 700 !important;
  font-variation-settings: "wght" 700 !important;
}

/* the smart-forms check reads as the same switch as the logo one */
#webyayTunnel .tunnel-formshead-check{
  cursor: pointer;
  transition: opacity .18s ease, filter .18s ease;
}
#webyayTunnel .tunnel-formshead-check.fdn-check-off{
  opacity: .3 !important;
  filter: grayscale(1) !important;
}


/* [Dave 9/9] Smart forms is the one panel whose own heading is its first line,
   so it sits closest to the card's clip edge - measured 5px of headroom at -6,
   which is where the crop on its title came from. This panel alone stays at 0,
   which puts it 11px clear. */
@media (min-width: 901px){
  html body #webyayTunnel [data-3tile-panel="forms"]{
    top: 0 !important;
  }
}


/* [Dave 9/9] "Professional Website - Modern Style" was breaking onto two lines
   with empty space to spare. Measured: the review list renders 379px wide
   inside a 463px card - 84px of the card was simply unused. The list and its
   rows now fill the card, which is where the name column gets its room; the
   price column keeps its own place at the right edge. */
@media (min-width: 901px){
  /* the list sits inside .tunnel-summary, which was 38px narrower than the
     panel it lives in, and the card itself reserved 36px on the right. Both
     recovered here - about 60px back into the name column. */
  html body #webyayTunnel .tunnel-card[data-cat-id="summary"] .tunnel-summary{
    width: 100% !important;
    max-width: none !important;
    margin-right: 0 !important;
    padding-right: 0 !important;
  }
  html body #webyayTunnel .tunnel-card[data-cat-id="summary"].tunnel-card.tunnel-card{
    padding-right: 14px !important;
  }
  html body #webyayTunnel .tunnel-card[data-cat-id="summary"] .tunnel-summary__list,
  html body #webyayTunnel .tunnel-card[data-cat-id="summary"] .tunnel-summary__item,
  html body #webyayTunnel .tunnel-card[data-cat-id="summary"] .tunnel-summary__checkout-row{
    width: 100% !important;
    max-width: none !important;
  }
}


/* [Dave 9/9] the reverse arrow is held invisible until the measurement has put
   it on the header's line, so its one correction never shows as a hop. Opacity
   only - it keeps its space, so nothing else moves. Desktop only; on a phone
   the seating pass does not run, so they are never hidden there. */
@media (min-width: 901px){
  html body #webyayTunnel .tunnel-stepback-btn{
    opacity: 0;
    transition: opacity .16s ease;
  }
  html body #webyayTunnel .tunnel-stepback-btn.fdn-back-seated{
    opacity: 1;
  }
}


/* [Dave 9/9] no select in the website-access grid may outgrow its column - a
   <select> otherwise takes the width of its longest option, which is what
   pushed the "Who else has access" column off the right edge of the card. */
@media (min-width: 901px){
  html body #webyayTunnel .tunnel-access-grid:not([data-access-fields-handoff]){
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr) !important;
  }
  html body #webyayTunnel .tunnel-access-grid .tunnel-page-panel__field{
    min-width: 0 !important;
  }
  html body #webyayTunnel .tunnel-access-grid .tunnel-page-panel__select,
  html body #webyayTunnel .tunnel-access-grid select{
    width: 100% !important;
    min-width: 0 !important;
    max-width: 100% !important;
  }
  html body #webyayTunnel .tunnel-access-grid .tunnel-page-panel__field > span{
    min-width: 0 !important;
    overflow-wrap: break-word;
  }
}
