/* Colour: this sheet always loads after pv8-modernist.css, which owns the
   single --pv8-primary token (UI audit F16). No literal primary here. */
/* PV8 public acquisition page
   The signed-in product keeps the original modernist design system. This
   stylesheet is scoped to .pv8-welcome and creates one continuous visitor
   journey without changing registration, login or screening behaviour. */

.pv8-welcome {
  --landing-max:1180px;
  background:var(--surface-0);
  color:var(--text-primary);
  font-family:var(--pv8-github-sans),var(--pv8-github-sans),system-ui,-apple-system,BlinkMacSystemFont,sans-serif;
}
.pv8-welcome * { scroll-margin-top:84px; }
.pv8-welcome .pv8-skip-link {
  background:#fff;
  border:2px solid var(--pv8-primary);
  color:#101e2a;
  left:14px;
  padding:10px 14px;
  position:fixed;
  top:12px;
  transform:translateY(-160%);
  z-index:10000;
}
.pv8-welcome .pv8-skip-link:focus { transform:translateY(0); }

/* Public header styles live in public-header.css and are shared by public_shell. */

/* First screen: one narrative, one action, no left-card/right-card framing. */
.pv8-welcome .hero {
  background:var(--surface-0);
  border-bottom:0;
  padding:clamp(44px,5.5vw,74px) max(20px,calc((100vw - var(--landing-max))/2)) clamp(24px,2vw,32px);
}
.pv8-welcome .hero-grid { display:block; }
.pv8-welcome .hero-copy {
  display:block;
  max-width:var(--landing-max);
}
.pv8-welcome .hero-opening {
  display:block;
}
.pv8-welcome .hero-opening-copy { max-width:1100px; min-width:0; }
.pv8-welcome .hero h1 {
  color:#101e2a;
  font-family:var(--pv8-github-sans),var(--pv8-github-sans),system-ui,sans-serif;
  font-size:clamp(46px,5.8vw,74px);
  font-weight:520;
  letter-spacing:-.055em;
  line-height:.98;
  margin:0 0 24px;
  max-width:1080px;
  text-wrap:balance;
}
.pv8-welcome .hero p.hero-lede {
  color:#455057;
  font-size:clamp(17px,2vw,21px);
  line-height:1.55;
  max-width:860px;
}
.pv8-welcome .hero-route-line {
  color:#31495b;
  display:flex;
  flex-wrap:wrap;
  font-size:12px;
  font-weight:650;
  gap:8px 20px;
  margin-top:20px;
}
/* The hero now carries one explicit ".route-plus" element per block (static,
   not animated — only the word flips). The old span::before "+" added a ghost
   plus to EVERY span in the row (block, plus, word, even PV), rendering "+ + +".
   Removed 2026-09-04; the single separator lives in the markup/JS. */
.pv8-welcome .landing-proofline {
  color:#606a70;
  display:flex;
  flex-wrap:wrap;
  font-size:12px;
  gap:8px 22px;
  margin-top:18px;
}
.pv8-welcome .landing-proofline span::before {
  color:var(--good);
  content:"✓";
  font-weight:800;
  margin-right:7px;
}
.pv8-welcome .teaser-embed {
  background:transparent !important;
  border:0 !important;
  border-radius:0 !important;
  box-shadow:none !important;
  color:var(--text-primary);
  margin-top:clamp(22px,3vw,34px);
  overflow:visible !important;
  padding:0 !important;
}
.pv8-welcome .teaser-embed::after { display:none !important; }
.pv8-welcome .teaser-embed h2 {
  color:#101e2a !important;
  font-family:var(--pv8-github-sans),var(--pv8-github-sans),system-ui,sans-serif;
  font-size:clamp(26px,3vw,36px) !important;
  font-weight:540;
  letter-spacing:-.045em !important;
  line-height:1.05 !important;
  max-width:800px !important;
}
.pv8-welcome .teaser-embed > .muted-line {
  color:var(--text-secondary) !important;
  font-size:15px !important;
  max-width:790px !important;
}
.pv8-welcome .teaser-embed > .muted-line strong { color:#172c3d !important; }
.pv8-welcome .teaser-form {
  background:#fff !important;
  border:1px solid #aeb8be !important;
  border-radius:10px !important;
  box-shadow:0 14px 38px rgba(15,30,42,.09) !important;
  margin:25px 0 10px !important;
  max-width:900px;
  padding:7px !important;
}
.pv8-welcome .teaser-form:focus-within {
  border-color:var(--pv8-primary) !important;
  box-shadow:0 0 0 4px rgba(17,66,107,.10),0 14px 38px rgba(15,30,42,.09) !important;
}
.pv8-welcome .teaser-example {
  background:#fff;
  border:1px solid #aeb8be;
  border-radius:7px;
  color:var(--pv8-primary);
  cursor:pointer;
  font:650 12.5px var(--pv8-github-sans),system-ui,sans-serif;
  min-height:40px;
  padding:9px 13px;
  text-decoration:none;
}
.pv8-welcome .teaser-example:hover { border-color:var(--pv8-primary); }
.pv8-welcome .teaser-example:disabled { cursor:wait; opacity:.65; }
.pv8-welcome .teaser-demo {
  align-items:end;
  display:flex;
  gap:18px;
  justify-content:space-between;
  margin-top:15px;
  max-width:900px;
}
.pv8-welcome .teaser-demo>label { color:#273947; display:grid; gap:2px; }
.pv8-welcome .teaser-demo>label b { font-size:13.5px; }
.pv8-welcome .teaser-demo>label span { color:#606a70; font-size:12px; line-height:1.4; }
.pv8-welcome .teaser-demo-controls { display:flex; flex:0 0 auto; gap:7px; }
.pv8-welcome .teaser-demo select {
  background:#fff;
  border:1px solid #aeb8be;
  border-radius:7px;
  color:#273947;
  font:600 12.5px var(--pv8-github-sans),system-ui,sans-serif;
  min-height:40px;
  padding:8px 34px 8px 11px;
}
.pv8-welcome #teaserResults {
  border-radius:12px !important;
  box-shadow:0 16px 42px rgba(15,30,42,.08) !important;
}

/* The visitor journey reads as one document. Structure comes from rhythm and
   dividers, not disconnected panels. */
.pv8-welcome .modules,
.pv8-welcome #accountPanel {
  border-bottom:0;
  padding:clamp(58px,8vw,102px) max(20px,calc((100vw - var(--landing-max))/2));
}
.pv8-welcome .modules h2 {
  font-family:var(--pv8-github-sans),var(--pv8-github-sans),system-ui,sans-serif;
  font-size:clamp(32px,4.5vw,54px);
  font-weight:530;
  letter-spacing:-.045em;
  line-height:1.05;
  max-width:850px;
  text-wrap:balance;
}
.pv8-welcome .modules { background:var(--surface-0); }
.pv8-welcome #opportunities { padding-top:clamp(28px,2.5vw,36px); }
.pv8-welcome .modules:nth-of-type(even) { background:#fff; }
.pv8-welcome .modules > .muted-line,
.pv8-welcome .modules > p { color:var(--text-secondary); font-size:15px; line-height:1.65; margin:16px 0 28px !important; max-width:820px; }
.pv8-welcome .mod-grid {
  border-top:1px solid #cdd4d8;
  display:grid;
  gap:0;
  grid-template-columns:repeat(2,minmax(0,1fr));
}
.pv8-welcome .mod {
  background:transparent;
  border:0;
  border-bottom:1px solid #cdd4d8;
  border-radius:0;
  box-shadow:none;
  min-height:0;
  padding:24px 28px 24px 0;
}
.pv8-welcome .mod:nth-child(even) { border-left:1px solid #cdd4d8; padding-left:28px; }
.pv8-welcome .mod .mod-ico { height:22px; margin-bottom:12px; width:22px; }
.pv8-welcome .mod b { color:#172c3d; font-size:15px; }
.pv8-welcome .mod p { color:#606a70; font-size:13px; line-height:1.55; }
.pv8-welcome .landing-inline-cta {
  align-items:center;
  border-bottom:1px solid #cdd4d8;
  display:flex;
  gap:20px;
  justify-content:space-between;
  padding:24px 0;
}
.pv8-welcome .landing-inline-cta p { color:var(--text-secondary); font-size:13px; max-width:700px; }

/* Pricing stays scannable as a conventional side-by-side comparison. */
/* Every landing section shares the page's measure; the inline .modules rule
   in welcome.html pads to 1080px, which left pricing visibly narrower. */
.pv8-welcome .modules {
  padding-left:max(20px,calc((100vw - var(--landing-max))/2));
  padding-right:max(20px,calc((100vw - var(--landing-max))/2));
}
.pv8-welcome #pricing { background:#eaf0f4; padding-bottom:clamp(42px,6vw,76px); }
.pv8-welcome .price-grid {
  align-items:stretch;
  display:grid;
  gap:14px;
  grid-template-columns:minmax(0,1fr) minmax(0,2fr) minmax(0,1fr);
}
.pv8-welcome .price-card,
.pv8-welcome .price-card.featured {
  align-items:stretch;
  background:#fff;
  border:1px solid #b8c4cb;
  border-radius:10px;
  box-shadow:0 8px 24px rgba(16,30,42,.06);
  display:flex;
  gap:0;
  padding:22px 18px;
}
.pv8-welcome .price-card.featured { border:2px solid var(--pv8-primary); box-shadow:0 10px 28px rgba(17,66,107,.12); }
/* Basic and Standard are one product at two fleet sizes: one shared feature
   list over both, and only the scope line differs beneath each price. */
.pv8-welcome .price-pair {
  background:#fff; border:1px solid #b8c4cb; border-radius:10px;
  box-shadow:0 8px 24px rgba(16,30,42,.06); display:flex; flex-direction:column; padding:22px 18px 18px;
}
.pv8-welcome .price-pair-head { display:flex; flex-direction:column; gap:4px; margin-bottom:12px; min-height:58px; }
.pv8-welcome .price-pair-head b { font-size:16px; }
.pv8-welcome .price-pair-head span { color:var(--text-secondary); font-size:13px; }
/* The shared list keeps the same marker inset as the Trial and Portfolio
   lists beside it; zero side padding hung its bullets outside the card's
   text column. */
.pv8-welcome .price-pair-shared { border-bottom:1px solid #d7dcdf; margin:0 0 16px; padding:0 0 14px 18px; }
.pv8-welcome .price-pair-tiers { display:grid; gap:14px; grid-template-columns:repeat(2,minmax(0,1fr)); }
.pv8-welcome .price-tier { box-shadow:none; padding:16px 14px; }
.pv8-welcome .price-tier > b { min-height:0; }
.pv8-welcome .price-tier .price { min-height:0; }
.pv8-welcome .price-scope { color:#273947; flex:1; font-size:14px; line-height:1.45; margin:0 0 16px; }
.pv8-welcome .price-scope b { color:var(--pv8-primary); }
.pv8-welcome .price-card > b { font-size:16px; min-height:58px; }
.pv8-welcome .price-card .price { margin:12px 0 10px; min-height:63px; }
.pv8-welcome .price-card .price span { font-size:25px; }
.pv8-welcome .price-card ul { flex:1; margin:0 0 18px; }
.pv8-welcome .price-card .cta { align-self:stretch; max-width:none; padding:11px 14px; }

/* Account creation is the natural final chapter of the page. */
.pv8-welcome #accountPanel { background:#fff; }
.pv8-welcome #accountPanel .panel-cols { gap:clamp(38px,6vw,82px); }
.pv8-welcome #accountPanel .panel-cols > div + div {
  border-left:1px solid #d7dcdf;
  padding-left:clamp(32px,5vw,70px);
}
.pv8-welcome #accountPanel h3 { color:#101e2a; font-size:clamp(22px,3vw,34px); letter-spacing:-.03em; }
.pv8-welcome #accountPanel form input,
.pv8-welcome #accountPanel form select { border:1px solid #aeb8be; border-radius:7px; min-height:44px; }
.pv8-welcome footer { background:#101e2a; color:#a9b7c0; padding:32px 20px; }
.pv8-welcome footer a { color:#d7e3eb; }

@media (max-width:1120px) {
  .pv8-welcome .price-grid { grid-template-columns:1fr; }
  .pv8-welcome .price-pair-tiers { grid-template-columns:repeat(2,minmax(0,1fr)); }
}

@media (max-width:980px) {
  .pv8-welcome .hero-opening-copy { max-width:860px; }
}

@media (max-width:900px) {
  .pv8-welcome .conversion-steps { grid-template-columns:1fr; }
  .pv8-welcome .conversion-step {
    border-left:0;
    border-top:1px solid #cdd4d8;
    padding-left:0;
  }
  .pv8-welcome .conversion-step:first-child { border-top:0; }
  .pv8-welcome .conversion-step { border-top-color:rgba(255,255,255,.2); }
  .pv8-welcome .price-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
}

@media (max-width:680px) {
  .pv8-welcome .price-pair-tiers { grid-template-columns:1fr; }
  .pv8-welcome .hero { padding-left:18px; padding-right:18px; padding-top:48px; }
  .pv8-welcome .hero-grid { display:block !important; }
  .pv8-welcome .hero-copy { display:block !important; }
  .pv8-welcome .hero h1 { font-size:clamp(42px,13vw,60px); }
  .pv8-welcome .hero-opening { gap:22px; }
  .pv8-welcome .teaser-form { grid-template-columns:1fr !important; }
  .pv8-welcome .teaser-demo { align-items:stretch; flex-direction:column; gap:9px; }
  .pv8-welcome .teaser-demo-controls { display:grid; grid-template-columns:1fr; }
  .pv8-welcome .teaser-demo select,
  .pv8-welcome .teaser-example { width:100%; }
  .pv8-welcome .conversion-action,
  .pv8-welcome .landing-inline-cta { align-items:flex-start; flex-direction:column; }
  .pv8-welcome .mod-grid { grid-template-columns:1fr; }
  .pv8-welcome .mod:nth-child(even) { border-left:0; padding-left:0; }
  .pv8-welcome .price-grid { grid-template-columns:1fr; }
  .pv8-welcome .price-card,
  .pv8-welcome .price-card.featured { padding:20px; }
  .pv8-welcome .price-card > b,
  .pv8-welcome .price-card .price { min-height:0; }
  .pv8-welcome #accountPanel .panel-cols > div + div { border-left:0; border-top:1px solid #d7dcdf; padding-left:0; padding-top:34px; }
}

@media (prefers-reduced-motion:reduce) {
  .pv8-welcome * { scroll-behavior:auto !important; }
}

/* ============ Module value-route bar ====================================== */
/* The opportunity cards are the hero. A quiet poly-Si cell field fades out
   from each card's top-right corner, connecting every route to the underlying
   PV asset without obscuring the copy or spending half the viewport on a
   separate foreground photograph. */
.pv8-welcome .module-bar { margin:10px 0 6px; position:relative; }
.pv8-welcome .module-bar-stage {
  isolation:isolate; overflow:hidden; position:relative;
}
.pv8-welcome .module-bar-ambience {
  background:
    radial-gradient(ellipse 58% 85% at 82% 25%,rgba(68,104,119,.07),transparent 76%);
  inset:0; pointer-events:none; position:absolute; z-index:0;
}
.pv8-welcome .mbf-track { padding-left:0; }
.pv8-welcome .mbf-head {
  align-items:center; display:flex; justify-content:flex-end; margin-top:2px;
}
.pv8-welcome .mbf-count { color:var(--text-secondary); font-size:13px; font-weight:600; }
.pv8-welcome .mbf-count b { color:var(--pv8-primary); font-variant-numeric:tabular-nums; }
.pv8-welcome .mbf-ctrls { display:flex; gap:3px; }
/* Vertical-rail controls live in the rail's right gutter and only exist there. */
.pv8-welcome .mbf-rail-nav { display:none; }
.pv8-welcome .mbf-btn {
  align-items:center; aspect-ratio:1; background:#fff; border:1px solid #cfd6da; border-radius:6px;
  color:var(--pv8-primary); cursor:pointer; display:inline-flex; font-size:14px; height:28px;
  justify-content:center; line-height:1; padding:0; transition:background .15s,border-color .15s; width:28px;
}
.pv8-welcome .mbf-btn:hover { background:#eaf0f4; border-color:var(--pv8-primary); }
.pv8-welcome .mbf-btn:focus-visible { outline:2px solid var(--pv8-primary); outline-offset:2px; }
/* Clip only sideways; let cards keep their hover-lift + shadow top and bottom
   (overflow-x:clip does not force the y-axis to auto the way hidden does). */
.pv8-welcome .mbf-viewport { overflow-x:clip; overflow-y:visible; padding:10px 0 28px; position:relative; z-index:1; }
.pv8-welcome .mbf-viewport::before,
.pv8-welcome .mbf-viewport::after {
  bottom:0; content:""; pointer-events:none; position:absolute; top:0; width:40px; z-index:2;
}
.pv8-welcome .mbf-viewport::before { background:linear-gradient(90deg,rgba(246,247,248,.44),rgba(246,247,248,0)); left:0; width:clamp(130px,16%,220px); }
.pv8-welcome .mbf-viewport::after  { background:linear-gradient(270deg,#f6f7f8,rgba(246,247,248,0)); right:0; }
/* even-index sibling on a white section still needs a matching fade */
.pv8-welcome .modules:nth-of-type(even) .mbf-viewport::before { background:linear-gradient(90deg,#fff 52%,rgba(255,255,255,0)); }
.pv8-welcome .modules:nth-of-type(even) .mbf-viewport::after  { background:linear-gradient(270deg,#fff,rgba(255,255,255,0)); }
.pv8-welcome .mbf-track { display:flex; gap:14px; will-change:transform; border-top:0; }
/* deep selectors so these beat the base .mod / .mod:nth-child(even) grid rules */
.pv8-welcome .module-bar-stage .mbf-track .mbf-card {
  background:#fff; border:1px solid #dde3e6; border-radius:12px; box-shadow:none;
  box-sizing:border-box; color:inherit; display:flex; flex:0 0 258px; flex-direction:column;
  gap:6px; min-height:0; padding:16px 16px 14px; text-decoration:none;
  position:relative; z-index:3;
  transition:transform .25s ease, box-shadow .25s ease, border-color .2s ease;
  overflow:hidden;
}
.pv8-welcome .module-bar-stage .mbf-track .mbf-card::before {
  background:
    repeating-linear-gradient(90deg,rgba(255,255,255,.34) 0 1px,transparent 1px 18px),
    repeating-linear-gradient(0deg,rgba(255,255,255,.28) 0 1px,transparent 1px 13px),
    linear-gradient(145deg,#195b91 0%,#0d477a 58%,#0a365f 100%);
  content:"";
  bottom:0;
  height:70%;
  -webkit-mask-image:linear-gradient(0deg,#000 0%,rgba(0,0,0,.65) 30%,transparent 85%);
  mask-image:linear-gradient(0deg,#000 0%,rgba(0,0,0,.65) 30%,transparent 85%);
  opacity:.16;
  pointer-events:none;
  position:absolute;
  right:0;
  width:100%;
  z-index:0;
}
.pv8-welcome .module-bar-stage .mbf-track .mbf-card > * { position:relative; z-index:1; }
.pv8-welcome .module-bar-stage .mbf-track .mbf-card:nth-child(even) {
  border-left:1px solid #dde3e6; padding-left:16px;      /* neutralise the grid divider rule */
}
.pv8-welcome .module-bar-stage .mbf-track .mbf-card:hover,
.pv8-welcome .module-bar-stage .mbf-track .mbf-card.mbf-focused {
  border-color:var(--pv8-primary); transform:translateY(-3px); box-shadow:0 14px 30px rgba(12,27,39,.13);
}
.pv8-welcome .mbf-card .mod-ico { margin-bottom:4px; }
.pv8-welcome .mbf-card b { color:#172c3d; font-size:14px; }
.pv8-welcome .mbf-card p { color:#606a70; flex:none; font-size:12.5px; line-height:1.5; margin:0; }
.pv8-welcome .mbf-card .mbf-sample {
  border-top:1px solid #dce2e6; color:var(--pv8-primary); display:block; font-size:12px;
  /* Keep the label midway between its divider and the card's bottom edge.
     Spare height belongs above the divider, not below the link. */
  font-weight:700; letter-spacing:.01em; margin-top:auto; padding-top:14px;
}
.pv8-welcome .mbf-card:hover .mbf-sample { text-decoration:underline; }
.pv8-welcome .mbf-hint { color:#7c858b; font-size:11px; margin-top:10px; }

/* The film and route rail share one row. One site-screen block spans beneath
   both, matching the reading order after the pre-paint reparenting. */
.pv8-welcome .hero { background:var(--surface-0); display:flow-root; padding:50px clamp(18px,2vw,34px) 128px; border:0; }
@media (max-width:350px) { .pv8-welcome .hero { padding-top:56px; } }
/* The hero is a background, not a hover target. Keep focus-visible rings on
   its interactive children (and on the section if it becomes focusable). */
.pv8-welcome .hero:hover:not(:focus-visible) { outline:none; box-shadow:none; }
.pv8-welcome .hero-copy { display:block !important; max-width:none; }
.pv8-welcome .landing-sr-only {
  position:absolute; width:1px; height:1px; padding:0; margin:-1px;
  overflow:hidden; clip-path:inset(50%); white-space:nowrap; border:0;
}
.pv8-welcome .hero-motion { position:relative; width:100%; max-width:none; margin:0 0 4px; background:transparent; border:0; outline:0; box-shadow:none; }
.pv8-welcome .hero-system-video { display:block; width:100%; height:auto; background:var(--surface-0); border:0; outline:0; box-shadow:none; cursor:pointer; }
.pv8-welcome .hero-system-video:focus-visible { outline:2px solid var(--pv8-primary); outline-offset:2px; }
.pv8-welcome .hero-motion:hover:not(:focus-visible),
.pv8-welcome .hero-system-video:hover:not(:focus-visible) { border:0; outline:0; box-shadow:none; }
.pv8-welcome .hero-grid > .teaser-embed { grid-column:1/-1; justify-self:center; margin:0 auto; width:83.333%; }
.pv8-welcome .teaser-form { max-width:none; margin-top:4px !important; }
.pv8-welcome .teaser-demo { margin-top:30px; max-width:none; }
.pv8-welcome .activation-objective { margin-top:28px; }
.pv8-welcome .activation-objective { color:#606a70; font-weight:500; }
.pv8-welcome .activation-objective-title { align-items:baseline; color:#606a70; display:flex; flex-wrap:wrap; gap:6px; }
.pv8-welcome .activation-objective-title span { color:#606a70; }
.pv8-welcome .activation-objective select,
.pv8-welcome .teaser-demo select,
.pv8-welcome .teaser-example,
.pv8-welcome .teaser-demo>label b,
.pv8-welcome .teaser-demo>label span { color:#606a70; }
.pv8-welcome #teaserMsg:empty { min-height:0 !important; margin:0; }
.pv8-welcome .modules.landing-routes { background:transparent; padding:0 0 12px; }
.pv8-welcome .module-bar { margin:0; min-width:0; }
.pv8-welcome .mbf-viewport {
  overflow-x:auto; overflow-y:hidden; overscroll-behavior-x:contain;
  scrollbar-width:thin; padding:10px 2px 20px; scroll-behavior:auto;
}
.pv8-welcome .mbf-viewport:focus-visible { outline:2px solid var(--pv8-primary); outline-offset:-2px; }
.pv8-welcome .mbf-card:focus-visible { outline:2px solid var(--pv8-primary); outline-offset:2px; }
.pv8-welcome .mbf-viewport::before, .pv8-welcome .mbf-viewport::after { display:none; }
.pv8-welcome .mbf-track { flex-direction:row; width:max-content; will-change:auto; }
.pv8-welcome .module-bar-stage .mbf-track .mbf-card {
  flex:0 0 clamp(250px,28vw,330px); width:clamp(250px,28vw,330px); min-height:188px;
}
.pv8-welcome .mbf-btn {
  background:transparent; border-color:transparent; color:var(--pv8-primary);
  font-size:10px; height:44px; isolation:isolate; opacity:.34;
  position:relative; width:44px;
}
.pv8-welcome .mbf-btn::before {
  background:rgba(255,255,255,.36); border:1px solid rgba(17,66,107,.25);
  border-radius:4px; box-sizing:border-box; content:""; height:22px;
  position:absolute; width:22px; z-index:-1;
}
.pv8-welcome .mbf-btn:hover { background:transparent; border-color:transparent; opacity:1; }
.pv8-welcome .mbf-btn:focus-visible { opacity:1; }
.pv8-welcome .mbf-ctrls { gap:0; }
.pv8-welcome .mbf-head { display:flex; justify-content:flex-end; margin-top:4px; }
@media (min-width:981px) {
  .pv8-welcome .mbf-ctrls .mbf-btn { width:28px; }
  .pv8-welcome .hero-grid {
    align-items:center; display:grid; column-gap:clamp(16px,2vw,30px); row-gap:4px;
    grid-template-columns:minmax(0,1fr) minmax(300px,34%);
    margin-left:auto; margin-right:auto; width:88%;
  }
  /* Shift the picture 12px below the visible cards' centre without changing
     its size or the row height; keep the teaser close beneath both columns. */
  .pv8-welcome .hero-copy { padding-top:24px; padding-bottom:36px; }
  .pv8-welcome .hero-motion { margin:0; }
  .pv8-welcome .modules.landing-routes { min-width:0; padding-top:12px; padding-bottom:0; }
  .pv8-welcome .mbf-viewport {
    /* Shorter cards keep the sample link beside its description, not stranded below it. */
    --rail-height:clamp(255px,22vw,300px);
    height:var(--rail-height); overflow-x:hidden; overflow-y:auto;
    overscroll-behavior-y:auto; padding:0; scrollbar-width:none;
  }
  .pv8-welcome .mbf-viewport::-webkit-scrollbar { display:none; }
  .pv8-welcome .mbf-track { flex-direction:column; gap:12px; width:100%; }
  .pv8-welcome .module-bar-stage .mbf-track .mbf-card {
    flex:0 0 auto; width:100%; height:auto; min-height:175px; padding:13px 15px 12px; gap:5px;
  }
  .pv8-welcome .mbf-card p { font-size:11.8px; line-height:1.38; }
  .pv8-welcome .mbf-card .mbf-sample { padding-top:12px; }
  .pv8-welcome .mbf-head { margin-top:4px; }
}
@media (min-width:981px) and (any-pointer:coarse) {
  .pv8-welcome .mbf-ctrls .mbf-btn { width:44px; }
}
@media (max-width:980px) {
  .pv8-welcome .hero-grid { display:block; margin:0; width:100%; }
  .pv8-welcome .hero-grid > .teaser-embed { width:min(100%,640px); }
  .pv8-welcome .modules.landing-routes { margin-top:4px; }
}
@media (max-width:560px) {
  .pv8-welcome .hero-motion { width:100%; max-width:none; margin-top:0; margin-bottom:3px; }
  .pv8-welcome .teaser-demo { align-items:stretch; flex-direction:column; gap:10px; }
  .pv8-welcome .teaser-demo-controls { display:grid; grid-template-columns:minmax(0,1fr); }
  .pv8-welcome .teaser-demo-controls select, .pv8-welcome .teaser-example { width:100%; min-height:44px; }
}

/* Downstairs: four catchy feature blocks. */
.pv8-welcome .feature-bar {
  border-top:1px solid #cdd4d8; display:grid; grid-template-columns:repeat(4,1fr); margin-top:26px;
}
.pv8-welcome .feature { border-right:1px solid #cdd4d8; padding:20px 22px 18px 0; }
.pv8-welcome .feature:last-child { border-right:0; }
.pv8-welcome .feature:not(:first-child) { padding-left:22px; }
.pv8-welcome .feature .f-ico {
  display:block; fill:none; height:22px; margin-bottom:10px; stroke:var(--pv8-primary);
  stroke-linecap:round; stroke-linejoin:round; stroke-width:1.7; width:22px;
}
.pv8-welcome .feature b { color:#172c3d; display:block; font-size:14px; margin-bottom:5px; }
.pv8-welcome .feature p { color:#606a70; font-size:12.5px; line-height:1.5; margin:0; }

@media (max-width:820px) {
  .pv8-welcome .mbf-viewport::before { width:17%; }
  .pv8-welcome .feature-bar { grid-template-columns:1fr 1fr; }
  .pv8-welcome .feature:nth-child(2) { border-right:0; }
  .pv8-welcome .feature { padding-right:18px; }
}
@media (max-width:560px) {
  .pv8-welcome .module-bar-stage { min-height:0; overflow:visible; }
  .pv8-welcome .module-bar-ambience { display:none; }
  .pv8-welcome .mbf-viewport::before { width:40px; background:linear-gradient(90deg,var(--surface-0),rgba(243,245,246,0)); }
  .pv8-welcome .modules:nth-of-type(even) .mbf-viewport::before { background:linear-gradient(90deg,#fff,rgba(255,255,255,0)); }
  .pv8-welcome .mbf-track { padding-left:0; }
  .pv8-welcome .feature-bar { grid-template-columns:1fr; }
  .pv8-welcome .feature { border-right:0; padding:16px 0; border-bottom:1px solid #cdd4d8; }
  .pv8-welcome .feature:last-child { border-bottom:0; }
}
@media (prefers-reduced-motion:reduce) {
  .pv8-welcome .module-bar-stage .mbf-track .mbf-card { transition:none; }
}

/* ============ PV8 Watch — retention section on the landing ============= */
.pv8-welcome .watch-landing .watch-land-grid {
  display:grid; gap:20px; grid-template-columns:1fr 1fr; margin:6px 0 18px;
}
.pv8-welcome .watch-land-msg, .pv8-welcome .watch-land-loop {
  background:#fff; border:1px solid #dde3e6; border-radius:14px; padding:20px 22px;
}
.pv8-welcome .watch-eyebrow {
  color:var(--pv8-primary); font-size:11px; font-weight:700; letter-spacing:.08em;
  text-transform:uppercase;
}
.pv8-welcome .watch-big { color:#121d24; font-size:19px; line-height:1.4; margin:10px 0 12px; }
.pv8-welcome .watch-big b { color:var(--pv8-primary); }
.pv8-welcome .watch-counts { list-style:none; margin:0; padding:0; display:grid; gap:6px; }
.pv8-welcome .watch-counts li { color:#3a444a; font-size:14px; }
.pv8-welcome .watch-counts b { color:#121d24; font-variant-numeric:tabular-nums; }
.pv8-welcome .watch-note { color:#7c858b; display:block; font-size:11.5px; margin-top:12px; }
.pv8-welcome .watch-land-loop ol { margin:10px 0 0; padding-left:20px; }
.pv8-welcome .watch-land-loop li { color:#455057; font-size:14px; line-height:1.5; margin:7px 0; }
.pv8-welcome .watch-land-loop em { color:#121d24; font-style:normal; font-weight:650; }
.pv8-welcome .watch-families { display:flex; flex-wrap:wrap; gap:8px; margin:4px 0 16px; }
.pv8-welcome .watch-families span {
  background:#eef2f4; border:1px solid #d7e0e4; border-radius:999px; color:#2b4253;
  font-size:12px; font-weight:600; padding:5px 12px;
}
.pv8-welcome .watch-close {
  border-left:3px solid var(--pv8-primary); color:#3a444a; font-size:15px; line-height:1.55;
  max-width:820px; padding:4px 0 4px 16px;
}
@media (max-width:760px) { .pv8-welcome .watch-landing .watch-land-grid { grid-template-columns:1fr; } }

/* Market brief — the edition's own story, above the demo (2026-09-14) */
.pv8-welcome .market-brief { max-width:1180px; margin:0 auto; padding:clamp(20px,3vw,36px) clamp(16px,4vw,40px) 0; }
.pv8-welcome .market-brief h2 { font-size:clamp(20px,2.4vw,26px); margin:0 0 6px; letter-spacing:-.01em; }
.pv8-welcome .market-brief .brief-lead { color:var(--text-secondary,#535c63); margin:0 0 16px; max-width:70ch; }
.pv8-welcome .brief-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:12px; }
.pv8-welcome .brief-item { background:var(--surface-1,#fff); border:1px solid var(--border,#d7dcdf); border-radius:12px; padding:14px 16px; }
.pv8-welcome .brief-item h3 { font-size:14.5px; margin:0 0 6px; line-height:1.3; }
.pv8-welcome .brief-item p { font-size:13px; line-height:1.5; color:var(--text-secondary,#535c63); margin:0; }
.pv8-welcome .brief-institutions { display:flex; flex-wrap:wrap; gap:6px; margin:14px 0 0; padding:0; list-style:none; }
.pv8-welcome .brief-institutions li { font-size:11.5px; font-weight:650; letter-spacing:.03em; padding:4px 10px; border:1px solid var(--border,#d7dcdf); border-radius:999px; color:var(--series-4,#082e4f); }
@media (max-width:900px) { .pv8-welcome .brief-grid { grid-template-columns:1fr 1fr; } }
@media (max-width:600px) { .pv8-welcome .brief-grid { grid-template-columns:1fr; } }
/* Optional objective and the full ranked investigation catalogue. */
/* below the address form: #724 keeps the film 8-16px above the form itself */
.activation-objective{display:grid;gap:8px;margin-top:12px;color:var(--text-primary);font-weight:600}
.activation-objective span{color:var(--text-secondary);font-weight:400;font-size:13px}
.activation-objective select{width:100%;min-width:0;min-height:44px;padding:10px;border:1px solid var(--border);border-radius:8px;background:var(--surface-1);color:var(--text-primary);font:inherit}
.teaser-card [data-continue-route]{min-height:44px;white-space:normal;text-align:left}
