/*
 * Scoped styling for the paid landing pages.
 *
 * David supplied the NOVA "card scanner" template as the visual target. The
 * devices worth having are reproduced here in CSS and inline SVG only. The
 * template's runtime is not:
 *
 *   - It loads GSAP + ScrollTrigger + three.js from cdnjs: 701 KB of extra
 *     JavaScript against this page's current 98 KB total.
 *   - cdnjs.cloudflare.com is absent from script-src in next.config.mjs, so
 *     all three would be blocked outright and the page would render as a
 *     broken skeleton with no visible error.
 *   - LCP and INP are Quality Score inputs, and Quality Score is a direct
 *     CPC discount. A WebGL particle field and a 2,500-particle canvas on a
 *     page bought by the click is a tax paid on every visit.
 *   - Its pinned horizontal scroll hijacks the scrollbar, which on cold paid
 *     traffic costs more conversions than it wins attention.
 *
 * What IS taken, all of it free: the gradient-clipped display headline, the
 * glass tile with a hairline gradient border, HUD corner brackets, the faint
 * engineering grid, the scan line, and the split wordmark. Palette is mapped
 * off NOVA's violet onto the ClinicAds teal in globals.css, so this reads as
 * the same brand rather than a borrowed one.
 */

.lp-root {
  --lp-line: rgb(var(--surgery-accent) / 0.26);
  --lp-glow: rgb(var(--surgery-accent) / 0.16);
}

/* Faint engineering grid, masked so it fades rather than ending on a seam. */
.lp-grid::before {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
  background:
    repeating-linear-gradient(90deg, rgb(var(--surgery-accent) / 0.05) 0 1px, transparent 1px 120px),
    repeating-linear-gradient(0deg, rgb(var(--surgery-accent) / 0.035) 0 1px, transparent 1px 120px);
  -webkit-mask-image: radial-gradient(ellipse 70% 65% at 60% 40%, #000 15%, transparent 78%);
  mask-image: radial-gradient(ellipse 70% 65% at 60% 40%, #000 15%, transparent 78%);
}

/* Soft accent bloom behind the hero. */
.lp-bloom::after {
  content: "";
  position: absolute;
  inset: -20% -10% auto -15%;
  height: 90%;
  pointer-events: none;
  background:
    radial-gradient(ellipse 42% 52% at 68% 38%, rgb(var(--surgery-accent) / 0.16), transparent 70%),
    radial-gradient(ellipse 55% 40% at 5% 95%, rgb(var(--surgery-accent) / 0.08), transparent 70%);
}

/*
 * The display headline. Radial gradient clipped to the glyphs — the single
 * most characteristic thing about the reference and it costs nothing.
 * `width: fit-content` matters: without it the gradient box is measured from
 * the block, not the text, and the longest line clips.
 */
.lp-display {
  font-weight: 800;
  line-height: 0.92;
  letter-spacing: -0.04em;
  text-wrap: balance;
  /* The padding exists so the gradient fill is not clipped; the negative
     margins cancel it again. Longhand on purpose: the `margin` shorthand
     also wrote margin-top, which silently beat every `mt-*` utility on
     these headings — the eyebrow above sat 2px INSIDE the headline. */
  padding: 0.08em 0.06em 0.12em;
  margin-right: -0.06em;
  margin-bottom: -0.12em;
  margin-left: -0.06em;
  color: rgb(var(--surgery-text));
}

@supports ((background-clip: text) or (-webkit-background-clip: text)) and (color: oklch(0 0 0)) {
  .lp-display {
    width: fit-content;
    max-width: 100%;
    color: transparent;
    -webkit-text-fill-color: transparent;
    -webkit-background-clip: text;
    background-clip: text;
    background-image: radial-gradient(
      circle at 50% var(--lp-gy, 42%),
      oklch(0.97 0.03 185) 0%,
      oklch(0.84 0.12 182) 32%,
      oklch(0.6 0.13 190) 66%,
      oklch(0.34 0.06 200) 100%
    );
    filter: drop-shadow(0 0 28px var(--lp-glow));
  }
}

/* Uppercase only where it earns it: the H1 is the keyword match, section
   headings read as shouting if they get the same treatment. */
.lp-display-caps { text-transform: uppercase; letter-spacing: -0.045em; }

/* Glass tile: hairline gradient border via a masked ::before ring. */
.lp-tile {
  position: relative;
  isolation: isolate;
  border-radius: 20px;
  background: linear-gradient(
    180deg,
    rgb(var(--surgery-surface) / 0.92),
    rgb(var(--surgery-bg) / 0.92)
  );
  box-shadow: 0 30px 80px rgb(0 0 0 / 0.45), inset 0 1px 0 rgb(255 255 255 / 0.04);
}
.lp-tile::before {
  content: "";
  position: absolute;
  inset: 0;
  padding: 1px;
  border-radius: inherit;
  background: linear-gradient(
    150deg,
    rgb(var(--surgery-accent) / 0.55),
    rgb(var(--surgery-accent) / 0.06) 38%,
    rgb(var(--surgery-accent) / 0.04) 64%,
    rgb(var(--surgery-accent) / 0.4)
  );
  -webkit-mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
  -webkit-mask-composite: xor;
  mask-composite: exclude;
  pointer-events: none;
  z-index: 2;
}

/* HUD corner brackets. */
.lp-hud { position: absolute; width: 14px; height: 14px; border: 0 solid var(--lp-line); z-index: 3; pointer-events: none; }
.lp-hud-tl { top: 14px; left: 14px; border-width: 1px 0 0 1px; }
.lp-hud-tr { top: 14px; right: 14px; border-width: 1px 1px 0 0; }
.lp-hud-bl { bottom: 14px; left: 14px; border-width: 0 0 1px 1px; }
.lp-hud-br { bottom: 14px; right: 14px; border-width: 0 1px 1px 0; }

/* Horizon rule, echoing the reference's water line. */
.lp-horizon {
  position: absolute;
  top: 0;
  left: 50%;
  width: 72%;
  height: 1px;
  transform: translateX(-50%);
  background: linear-gradient(
    90deg,
    transparent,
    rgb(var(--surgery-accent) / 0.7),
    #fff,
    rgb(var(--surgery-accent) / 0.7),
    transparent
  );
  box-shadow: 0 0 22px rgb(var(--surgery-accent) / 0.65);
}

/* Scan line sweeping the artifact row. Decorative; stopped under reduced motion. */
.lp-scan {
  position: absolute;
  top: 0;
  bottom: 0;
  width: 2px;
  background: linear-gradient(180deg, transparent, #fff 18%, rgb(var(--surgery-accent)) 82%, transparent);
  box-shadow: 0 0 14px rgb(var(--surgery-accent) / 0.9), 0 0 36px rgb(var(--surgery-accent) / 0.5);
  animation: lpScan 7s cubic-bezier(0.6, 0, 0.4, 1) infinite alternate;
  pointer-events: none;
}
@keyframes lpScan { from { left: 3%; } to { left: 97%; } }

.lp-pulse { animation: lpPulse 1.8s ease-in-out infinite; }
@keyframes lpPulse { 50% { opacity: 0.35; } }

/*
 * Split wordmark: solid one side of the line, wireframe the other. The
 * reference animates this with @property; the same effect here is a plain
 * keyframe on clip-path, which needs no registered custom property and
 * degrades to a static split where @property is unsupported.
 */
.lp-mark { position: relative; overflow: hidden; line-height: 0.82; }
.lp-mark-solid,
.lp-mark-wire {
  display: block;
  font-weight: 900;
  letter-spacing: -0.06em;
  text-align: center;
}
.lp-mark-solid {
  color: rgb(var(--surgery-text) / 0.1);
  animation: lpMarkSolid 9s ease-in-out infinite alternate;
}
.lp-mark-wire {
  position: absolute;
  inset: 0;
  color: transparent;
  -webkit-text-stroke: 1.5px rgb(var(--surgery-accent) / 0.45);
  animation: lpMarkWire 9s ease-in-out infinite alternate;
}
@keyframes lpMarkSolid { from { clip-path: inset(0 0 0 8%); } to { clip-path: inset(0 0 0 92%); } }
@keyframes lpMarkWire { from { clip-path: inset(0 92% 0 0); } to { clip-path: inset(0 8% 0 0); } }

@media (prefers-reduced-motion: reduce) {
  .lp-scan,
  .lp-pulse,
  .lp-mark-solid,
  .lp-mark-wire {
    animation: none !important;
  }
  .lp-mark-solid { clip-path: inset(0 0 0 50%); }
  .lp-mark-wire { clip-path: inset(0 50% 0 0); }
}

/* =========================================================
   AURORA  — ported from FirmAEO's WaveBackground, retuned to teal.
   Animates transform/opacity only, so the blur rasterises once and the
   motion runs on the compositor. See components/landing/AuroraBackground.
   ========================================================= */
.lp-aurora {
  position: absolute;
  inset: 0;
  z-index: 0;
  overflow: hidden;
  pointer-events: none;
}

.lp-wave {
  position: absolute;
  border-radius: 50%;
  mix-blend-mode: screen;
  will-change: transform, opacity;
  animation-timing-function: ease-in-out;
  animation-iteration-count: infinite;
  animation-direction: alternate;
}
.lp-wave-1 {
  width: 60vw;
  height: 60vw;
  left: -22vw;
  top: -18vh;
  background: radial-gradient(closest-side, rgb(42 208 187 / 0.26), rgb(42 208 187 / 0.08) 45%, transparent 72%);
  animation-name: lpWaveDrift1;
  animation-duration: 26s;
}
.lp-wave-2 {
  width: 70vw;
  height: 45vw;
  right: -20vw;
  bottom: -18vh;
  background: radial-gradient(closest-side, rgb(42 167 196 / 0.14), rgb(42 167 196 / 0.05) 45%, transparent 72%);
  animation-name: lpWaveDrift2;
  animation-duration: 34s;
}

/* Blur sits on the whole SVG so the stroke edge reads as light, not paint. */
.lp-ribbon {
  position: absolute;
  left: -14vw;
  top: -12vh;
  width: 72vw;
  height: 124vh;
  mix-blend-mode: screen;
  filter: blur(34px);
  will-change: transform, opacity;
  transform-origin: 40% 40%;
  animation-timing-function: ease-in-out;
  animation-iteration-count: infinite;
  animation-direction: alternate;
}
.lp-ribbon-1 { opacity: 0.72; animation-name: lpRibbonSway1; animation-duration: 24s; }
.lp-ribbon-2 { filter: blur(22px); opacity: 0.45; animation-name: lpRibbonSway2; animation-duration: 31s; }

@keyframes lpRibbonSway1 {
  0%   { transform: translate3d(-4vw, -2vh, 0) rotate(-6deg) scale(1.02); opacity: 0.62; }
  50%  { transform: translate3d(2vw, 3vh, 0) rotate(1deg) scale(1.08);    opacity: 0.8; }
  100% { transform: translate3d(7vw, -1vh, 0) rotate(5deg) scale(1);      opacity: 0.7; }
}
@keyframes lpRibbonSway2 {
  0%   { transform: translate3d(5vw, 2vh, 0) rotate(4deg) scale(1.05);    opacity: 0.28; }
  100% { transform: translate3d(-6vw, -3vh, 0) rotate(-5deg) scale(1.12); opacity: 0.5; }
}
@keyframes lpWaveDrift1 {
  0%   { transform: translate3d(0, 0, 0) scale(1);       opacity: 0.75; }
  100% { transform: translate3d(14%, 12%, 0) scale(1.2); opacity: 1; }
}
@keyframes lpWaveDrift2 {
  0%   { transform: translate3d(0, 0, 0) scale(1);         opacity: 0.65; }
  100% { transform: translate3d(-12%, -10%, 0) scale(1.18); opacity: 1; }
}

@media (max-width: 768px) {
  .lp-ribbon { left: -40vw; width: 130vw; }
}

@media (prefers-reduced-motion: reduce) {
  .lp-wave, .lp-ribbon { animation: none !important; }
}

/* =========================================================
   HERO BACKDROP
   David's pick: a dark operating theatre, teal-tinted, light source on
   the left, falling to near-black on the right — which is where the form
   sits, so the photo does half the scrim work on its own.

   46 KB WebP at 2000x667. It is a CSS background rather than <Image>
   because it is decoration, not content, and a background cannot become
   the LCP element — the headline stays the thing being measured. It is
   preloaded in the page so the late CSS discovery does not stall paint.
   ========================================================= */
.lp-theatre::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 0;
  pointer-events: none;
  background-image:
    /* scrim first: readable text over the lit left side, solid under the form */
    linear-gradient(
      90deg,
      rgb(var(--surgery-bg) / 0) 0%,
      rgb(var(--surgery-bg) / 0.12) 26%,
      rgb(var(--surgery-bg) / 0.55) 48%,
      rgb(var(--surgery-bg) / 0.92) 68%,
      rgb(var(--surgery-bg)) 84%
    ),
    /* and a vertical fade so it dissolves into the stat bar */
    linear-gradient(
      180deg,
      transparent 0%,
      transparent 42%,
      rgb(var(--surgery-bg) / 0.55) 66%,
      rgb(var(--surgery-bg) / 0.92) 86%,
      rgb(var(--surgery-bg)) 100%
    ),
    var(--lp-theatre, url("/images/surgery/lp-theatre.webp"));
  /* The photo is 3:1 and this hero is nearer 1.7:1. `cover` scales to fill
     the height, which zoomed the image ~1.65x and turned the operating lamp
     into an unreadable blur. Sizing it to the full WIDTH instead keeps it
     near its native ratio as a band across the top; the vertical scrim
     below closes out the space it no longer reaches. */
  background-size: cover, cover, 100% auto;
  background-position: center, center, left top;
  background-repeat: no-repeat;
}

/* The photo carries the atmosphere now; the aurora drops back to a hint
   so the two are not competing for the same left-hand space. */
.lp-theatre .lp-wave-1 { opacity: 0.12; }
.lp-theatre .lp-wave-2 { opacity: 0.5; }
.lp-theatre .lp-ribbon-1 { opacity: 0.14; }
.lp-theatre .lp-ribbon-2 { opacity: 0.08; }


/* =========================================================
   SECTION STYLE  — the language from David's reference:
   mono eyebrow with a trailing rule, two-tone headlines (statement in
   light, payoff in accent), a bordered pull-quote, icon cards with an
   arrow affordance, panel header chips, and corner brackets.
   Everything below is tokens + CSS; no new JS.
   ========================================================= */

/* eyebrow: MONO LABEL ———— */
.lp-eyebrow {
  display: flex;
  align-items: center;
  gap: 0.9rem;
  font-family: var(--font-plex-mono), ui-monospace, monospace;
  font-size: 10.5px;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: rgb(var(--surgery-accent));
}
.lp-eyebrow::after {
  content: "";
  width: clamp(28px, 4vw, 64px);
  height: 1px;
  background: linear-gradient(90deg, rgb(var(--surgery-accent) / 0.8), transparent);
}

/* two-tone headline: the payoff clause carries the accent */
.lp-accent { color: rgb(var(--surgery-accent)); }

/* pull-quote with a left rule */
.lp-quote {
  border-left: 2px solid rgb(var(--surgery-accent));
  padding-left: 1.25rem;
}

/* icon card: bordered square, mono label, arrow affordance */
.lp-card {
  position: relative;
  display: grid;
  grid-template-columns: auto 1fr auto;
  align-items: center;
  gap: 1.1rem;
  padding: 1.15rem 1.25rem;
  border-radius: 14px;
  border: 1px solid rgb(var(--surgery-accent) / 0.22);
  background: linear-gradient(
    110deg,
    rgb(var(--surgery-accent) / 0.07),
    rgb(var(--surgery-surface) / 0.75) 45%
  );
  transition: border-color 0.25s, transform 0.25s;
}
.lp-card:hover { border-color: rgb(var(--surgery-accent) / 0.5); transform: translateY(-2px); }
.lp-card-icon {
  display: grid;
  place-items: center;
  width: 46px;
  height: 46px;
  border-radius: 11px;
  border: 1px solid rgb(var(--surgery-accent) / 0.35);
  background: rgb(var(--surgery-accent) / 0.08);
  color: rgb(var(--surgery-accent));
}
.lp-card-label {
  font-family: var(--font-plex-mono), ui-monospace, monospace;
  font-size: 11px;
  letter-spacing: 0.17em;
  text-transform: uppercase;
  color: rgb(var(--surgery-accent));
}
.lp-card-arrow {
  display: grid;
  place-items: center;
  width: 28px;
  height: 28px;
  border-radius: 50%;
  border: 1px solid rgb(var(--surgery-accent) / 0.3);
  color: rgb(var(--surgery-accent));
  transition: background 0.25s, transform 0.25s;
}
.lp-card:hover .lp-card-arrow {
  background: rgb(var(--surgery-accent) / 0.14);
  transform: translateX(2px);
}

/* panel header chip: REAL EXAMPLE / ILLUSTRATIVE / SERVER-SIDE */
.lp-chip {
  margin-left: auto;
  flex-shrink: 0;
  padding: 4px 8px;
  border-radius: 5px;
  border: 1px solid rgb(var(--surgery-accent) / 0.28);
  background: rgb(var(--surgery-accent) / 0.07);
  font-family: var(--font-plex-mono), ui-monospace, monospace;
  font-size: 9px;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: rgb(var(--surgery-accent) / 0.9);
}

/* corner brackets, drawn not imaged */
.lp-corners::before,
.lp-corners::after {
  content: "";
  position: absolute;
  width: 54px;
  height: 54px;
  pointer-events: none;
  border: 0 solid rgb(var(--surgery-accent) / 0.35);
}
.lp-corners::before { top: 18px; left: 18px; border-width: 1px 0 0 1px; border-radius: 4px 0 0 0; }
.lp-corners::after { bottom: 18px; right: 18px; border-width: 0 1px 1px 0; border-radius: 0 0 4px 0; }

/* centered closing CTA + mono strapline */
.lp-strapline {
  font-family: var(--font-plex-mono), ui-monospace, monospace;
  font-size: 10px;
  letter-spacing: 0.26em;
  text-transform: uppercase;
  color: rgb(var(--surgery-textMuted) / 0.65);
}

/* Hero H1 is solid light, not the clipped gradient. The gradient runs
   light-teal to dark-teal, which at this size painted the whole headline
   teal — too much colour for five lines, and it loses the contrast the
   accent is meant to provide elsewhere on the page. */
.lp-h1,
.lp-h1.lp-display {
  color: #eef3f5;
  -webkit-text-fill-color: #eef3f5;
  background-image: none;
  filter: none;
}

/* Hero headline rhythm. Three separate statements, so each gets its own
   line box with space under it — at 0.92 leading and no gaps they ran
   together into a single wall of caps. */
.lp-h1 { line-height: 1.02; letter-spacing: -0.035em; margin-top: -0.08em; }
.lp-h1 > span { margin-bottom: 0.14em; }
.lp-h1 > span:last-child { margin-bottom: 0; }

/* =========================================================
   BODY LAYOUT  — to David's spec. Wide editorial container,
   vertically compressed sections, horizontal balance, and UI objects
   doing the anchoring rather than text alone.
   ========================================================= */
/* The scale, declared once. Every size below references it rather than
   restating a literal, so changing the rhythm is a single edit. */
:root {
  --display-xl: clamp(2.1rem, 4.2vw, 60px);
  --display-lg: clamp(2rem, 4vw, 58px);
  --body-lg: 21px;
  --body-md: 18px;
  --body-sm: 15px;
  --eyebrow: 12px;
}

.lp-container {
  width: 100%;
  max-width: 1440px;
  margin: 0 auto;
  padding-left: 56px;
  padding-right: 56px;
}
@media (min-width: 1600px) {
  .lp-container { max-width: 1520px; padding-left: 72px; padding-right: 72px; }
}
@media (max-width: 720px) {
  .lp-container { padding-left: 22px; padding-right: 22px; }
}

/* sections are compressed vertically on purpose; the density is the point */
.lp-section { padding-top: clamp(64px, 8vw, 110px); padding-bottom: clamp(60px, 7vw, 100px); }
.lp-section-proof {
  padding-top: clamp(60px, 7vw, 100px);
  padding-bottom: clamp(72px, 9vw, 120px);
  border-top: 1px solid rgb(var(--surgery-border));
}

/* left a little more dominant than right */
.lp-split {
  display: grid;
  grid-template-columns: minmax(0, 1.05fr) minmax(0, 0.95fr);
  column-gap: 56px;
  align-items: start;
}
@media (max-width: 1080px) { .lp-split { grid-template-columns: 1fr; row-gap: 40px; } }

.lp-eyebrow-lg {
  font-size: var(--eyebrow);
  letter-spacing: 0.22em;
  text-transform: uppercase;
  font-weight: 600;
  opacity: 0.9;
  margin-bottom: 18px;
}
.lp-h2 {
  font-size: var(--display-xl);
  line-height: 0.98;
  font-weight: 700;
  letter-spacing: -0.04em;
  max-width: 760px;
  margin-bottom: 28px;
}
.lp-body {
  font-size: var(--body-md);
  line-height: 1.65;
  max-width: 620px;
  color: rgb(var(--surgery-text-muted));
  margin-bottom: 22px;
}
/* the emphasis statement sits under the copy, not adrift below it */
.lp-emphasis {
  margin-top: 34px;
  padding-left: 22px;
  border-left: 3px solid rgb(var(--surgery-accent));
  font-size: 20px;
  line-height: 1.4;
  font-weight: 600;
  max-width: 560px;
}

/* three feature cards, sized to hold an icon, a title and a sentence */
.lp-cards { display: flex; flex-direction: column; gap: 18px; }
.lp-feature {
  display: grid;
  grid-template-columns: 64px 1fr 28px;
  align-items: center;
  column-gap: 18px;
  min-height: 118px;
  padding: 24px 26px;
  border-radius: 18px;
  border: 1px solid rgb(24 210 212 / 0.22);
  background: linear-gradient(180deg, rgb(var(--surgery-tint) / 0.03), rgb(var(--surgery-tint) / 0.012));
  box-shadow: inset 0 0 0 1px rgb(var(--surgery-tint) / 0.03);
  transition: border-color 0.25s, transform 0.25s;
}
.lp-feature:hover { border-color: rgb(24 210 212 / 0.45); transform: translateY(-2px); }
.lp-feature-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 56px;
  height: 56px;
  border-radius: 14px;
  border: 1px solid rgb(24 210 212 / 0.35);
  color: rgb(var(--surgery-accent));
}
.lp-feature-title {
  font-size: 18px;
  font-weight: 600;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  margin-bottom: 6px;
}
.lp-feature-body {
  font-size: var(--body-sm);
  line-height: 1.5;
  color: rgb(var(--surgery-text-muted));
  max-width: 360px;
}

/* proof headline block */
.lp-h2-wide {
  font-size: var(--display-lg);
  line-height: 1.02;
  font-weight: 700;
  letter-spacing: -0.04em;
  max-width: 1100px;
  margin-bottom: 14px;
}
.lp-subhead {
  font-size: var(--body-lg);
  line-height: 1.5;
  color: rgb(var(--surgery-text-muted));
  max-width: 760px;
  margin-bottom: 42px;
}

/* four dashboard cards, deliberately unequal so they read as modules */
.lp-dash {
  display: grid;
  grid-template-columns: 1.15fr 0.95fr 0.95fr 0.85fr;
  gap: 18px;
  align-items: stretch;
}
@media (max-width: 1240px) { .lp-dash { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 680px) { .lp-dash { grid-template-columns: 1fr; } }

.lp-dash-card {
  display: flex;
  flex-direction: column;
  padding: 22px;
  border-radius: 18px;
  border: 1px solid rgb(24 210 212 / 0.16);
  background: rgb(var(--surgery-tint) / 0.03);
  backdrop-filter: blur(8px);
  min-height: 320px;
  position: relative;
  overflow: hidden;
}
.lp-dash-head {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 10px;
  margin-bottom: 18px;
}
.lp-dash-label { font-size: 18px; font-weight: 600; }
.lp-tag {
  flex-shrink: 0;
  padding: 7px 10px;
  border-radius: 999px;
  border: 1px solid rgb(var(--surgery-border));
  font-family: var(--font-plex-mono), ui-monospace, monospace;
  font-size: 11px;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: rgb(var(--surgery-text-muted));
}

/* platform strip: infrastructure we actually run on, not sponsor logos */
.lp-platforms { display: flex; flex-wrap: wrap; gap: 14px; margin-top: 22px; opacity: 0.78; }
.lp-platform {
  padding: 10px 14px;
  border: 1px solid rgb(var(--surgery-border));
  border-radius: 999px;
  font-size: 13px;
}

/* At 375px the 56px icon and the arrow together took half the row, leaving
   the sentence 149px to wrap in. The icon shrinks and the arrow — which is
   decorative, these are not links — goes. */
@media (max-width: 720px) {
  .lp-feature { grid-template-columns: 46px 1fr; column-gap: 14px; padding: 20px; }
  .lp-feature-icon { width: 42px; height: 42px; border-radius: 11px; }
  .lp-feature .lp-card-arrow { display: none; }
  .lp-feature-body { max-width: none; }
}

/* The ask, as one panel. Two loose buttons at the wider measure read as
   leftovers; a bordered card holds the CTAs, what the call is, what the
   caller is agreeing to, and the number worth leading with. */
.lp-rail {
  border: 1px solid rgb(var(--surgery-border));
  border-radius: 22px;
  padding: 26px;
  background: rgb(var(--surgery-surface) / 0.72);
  backdrop-filter: blur(10px);
  box-shadow: 0 28px 70px -40px rgb(0 0 0 / 0.65);
}
@media (min-width: 1024px) { .lp-rail { padding: 30px; } }
.lp-rail-icon {
  display: grid;
  place-items: center;
  width: 54px;
  height: 54px;
  flex-shrink: 0;
  border-radius: 14px;
  border: 1px solid rgb(var(--surgery-accent) / 0.3);
  background: rgb(var(--surgery-accent) / 0.08);
  color: rgb(var(--surgery-accent));
}
.lp-rail-eyebrow {
  font-family: var(--font-plex-mono), ui-monospace, monospace;
  font-size: 11.5px;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color: rgb(var(--surgery-accent));
}
.lp-rail-rule {
  margin: 22px 0;
  border: 0;
  border-top: 1px solid rgb(var(--surgery-border));
}

/* Three statements, read as three. The old rhythm ran them together. */
.lp-h1 > span { margin-bottom: 0.4em; }
.lp-h1 > span:last-child { margin-bottom: 0; }

/* HERO GRID
   Desktop: pitch top-left, proof under it, the ask holding the right rail
   across both rows. Mobile: pitch, then the ask, then the proof — stacked
   in source order the rail landed at 777px on an 812px viewport, which put
   the entire ask below the fold on the traffic we pay for. */
.lp-hero-grid {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: 34px;
  align-items: start;
}
.lp-hero-head { order: 1; }
.lp-hero-grid > .lp-rail { order: 2; }
.lp-hero-support { order: 3; }

@media (min-width: 1024px) {
  .lp-hero-grid {
    grid-template-columns: minmax(0, 1fr) minmax(0, 440px);
    grid-template-areas:
      "head rail"
      "support rail";
    column-gap: 56px;
    row-gap: 28px;
  }
  .lp-hero-head { grid-area: head; }
  .lp-hero-support { grid-area: support; }
  .lp-hero-grid > .lp-rail { grid-area: rail; align-self: start; }
}

/* MOBILE PASS
   Everything below is sized for a 375px viewport and only applies there. */
@media (max-width: 720px) {
  /* The trailing rule has nowhere to go at this width, and the tracking
     is what pushed a 41-character label onto a second line. */
  .lp-eyebrow { flex-wrap: wrap; row-gap: 0.3rem; letter-spacing: 0.14em; }
  .lp-eyebrow::after { display: none; }

  /* The hero ran ~1600px before the stat bar. Tighter blocks, same copy. */
  .lp-h1 { letter-spacing: -0.03em; }
  .lp-h1 > span { margin-bottom: 0.3em; }

  .lp-rail { padding: 22px; border-radius: 18px; }
  .lp-rail-rule { margin: 18px 0; }
  .lp-rail-icon { width: 46px; height: 46px; border-radius: 12px; }

  /* 12px is too small for the one line that says what the call costs. */
  .lp-rail .lp-assurance-title { font-size: 13.5px; }
  .lp-rail .lp-assurance-body { font-size: 12.5px; }

  .lp-dash-card { min-height: 0; padding: 20px; }
  .lp-section { padding-top: 56px; padding-bottom: 52px; }
  .lp-section-proof { padding-top: 52px; padding-bottom: 60px; }
  .lp-emphasis { margin-top: 26px; padding-left: 18px; }
  .lp-subhead { font-size: 17px; margin-bottom: 30px; }
  .lp-body { font-size: 16px; }
}

