/* NexVerto premium website: one stylesheet for every marketing page, plus the shared shell on blog and error pages. */
a { text-decoration: none !important; }

@font-face {font-family:"Fraunces";src:url("/static/fonts/fraunces-latin.woff2") format("woff2");font-style:normal;font-weight:400 600;font-display:swap;}
@font-face {font-family:"IBM Plex Sans";src:url("/static/fonts/ibm-plex-sans.woff2") format("woff2");font-style:normal;font-weight:100 700;font-display:swap;}
@font-face {font-family:"IBM Plex Fallback";src:local("Liberation Sans"),local("Arial");font-style:normal;font-weight:400;size-adjust:97.66802%;ascent-override:104.94735%;descent-override:28.15661%;line-gap-override:0%;}
@font-face {font-family:"IBM Plex Fallback";src:local("Liberation Sans Bold"),local("Arial Bold");font-style:normal;font-weight:600 700;size-adjust:97.66802%;ascent-override:104.94735%;descent-override:28.15661%;line-gap-override:0%;}
@font-face {font-family:"Fraunces Fallback";src:local("Georgia"),local("DejaVu Serif");font-style:normal;font-weight:400 600;size-adjust:96%;ascent-override:92%;descent-override:24%;line-gap-override:0%;}

/* Tokens: dark is the default, light follows the visitor's choice. Legacy names keep blog styles working. */
:root,html[data-theme=dark] {
  --bg:#10191f; --surface:#152029; --surface-2:#1a2731; --surface-3:#22313d;
  --ink:#f3f3ed; --ink-muted:#b9c5cc; --ink-dim:#97a7b1;
  --border:#263540; --border-strong:#3b4d5a;
  --brand:#104fb6; --brand-hover:#104fb6; --brand-ink:#ffffff;
  --accent:#8cbfff; --verto:#2D6FD9; --tint:var(--surface-3); --tint-strong:var(--surface-3);
  --shadow:0 1px 0 rgba(255,255,255,.04) inset,0 14px 34px rgba(0,0,0,.32);
  --shadow-lift:0 1px 0 rgba(255,255,255,.05) inset,0 20px 44px rgba(0,0,0,.42);
  --header-bg:#10191f;
  --surface-100:var(--bg); --surface-200:var(--surface); --surface-300:var(--surface-3);
  --primary:var(--brand); --primary-strong:var(--accent); --primary-ink:#fff; --primary-glow:var(--surface-3);
  --sans:"IBM Plex Sans","IBM Plex Fallback",-apple-system,BlinkMacSystemFont,"Segoe UI",Arial,sans-serif;
  --serif:"Fraunces","Fraunces Fallback",Georgia,serif;
  --mono:"IBM Plex Mono",ui-monospace,Consolas,monospace;
  color-scheme:dark;
}
html[data-theme=light] {
  --bg:#faf9f5; --surface:#ffffff; --surface-2:#f1f0ea; --surface-3:#e8e7e0;
  --ink:#132430; --ink-muted:#475863; --ink-dim:#5a6a75;
  --border:#e1dfd7; --border-strong:#c4c1b7;
  --brand:#104fb6; --brand-hover:#104fb6; --brand-ink:#ffffff;
  --accent:#104fb6; --verto:#2D6FD9; --tint:var(--surface-2); --tint-strong:var(--surface-3);
  --shadow:0 1px 2px rgba(19,36,48,.05),0 10px 28px rgba(19,36,48,.07);
  --shadow-lift:0 2px 4px rgba(19,36,48,.06),0 18px 40px rgba(19,36,48,.11);
  --header-bg:#faf9f5;
  --surface-100:var(--bg); --surface-200:var(--surface); --surface-300:var(--surface-3);
  --primary:var(--brand); --primary-strong:var(--accent); --primary-ink:#fff; --primary-glow:var(--surface-3);
  color-scheme:light;
}

/* Base */
*,*::before,*::after {box-sizing:border-box;}
html {scroll-padding-top:96px;-webkit-text-size-adjust:100%;}
body {margin:0;background:var(--bg);color:var(--ink);--link-ink:var(--ink);font:400 17px/1.65 var(--sans);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;}
h1,h2,h3,p,ul,ol,dl,dd,figure {margin:0;}
h1,h2,h3 {text-wrap:balance;color:var(--ink);--link-ink:var(--ink);}
p,li,dd {text-wrap:pretty;}
p {color:var(--ink-muted);--link-ink:var(--ink-muted);}
button,input,textarea,select {font:inherit;color:inherit;}
button {cursor:pointer;}
button,a,input,textarea,select {-webkit-tap-highlight-color:transparent;}
img,svg {max-width:100%;}
[hidden] {display:none!important;}
::selection {background:var(--brand);color:#fff;--link-ink:#fff;}
:focus-visible {outline:3px solid var(--accent);outline-offset:3px;}
.skip {position:absolute;left:16px;top:-120px;z-index:100;padding:12px 18px;border-radius:10px;background:var(--surface);}
.skip:focus {top:12px;}

/* Links: the anchor itself is always transparent so a browser-forced underline is invisible.
   Visible text sits in a child that carries the colour; the underline only draws on hover or focus. */
a {color:transparent!important;text-decoration:none!important;--link-ink:var(--accent);}
a > * {color:var(--link-ink,var(--accent))!important;}
a:focus-visible {outline:3px solid var(--accent)!important;outline-offset:3px;border-radius:6px;}
a > .t {background-image:linear-gradient(var(--link-ink),var(--link-ink));background-position:left bottom;background-repeat:no-repeat;background-size:0 1px;transition:background-size 180ms ease-out;}
a:is(:hover,:focus-visible) > .t {background-size:100% 1px;}
.btn > .t,.mark > .t,.p-card-link > .t {background-image:none;}

/* Layout */
.wrap {width:min(1200px,calc(100% - 64px));margin-inline:auto;}
main {display:block;min-width:0;min-height:50vh;}
.p-section {padding-block:104px;}
.p-section + .p-section {padding-top:0;}
.p-band {padding-block:104px;background:var(--surface-2);box-shadow:0 0 0 100vmax var(--surface-2);clip-path:inset(0 -100vmax);}
.p-band + .p-section {padding-top:104px;}
/* The tinted band stays only on Consulting's process and Pricing's rates (visual lift, Joe 2026-10-15); these sections become plain
   sections in the normal rhythm. */
body:has(#voice-title) section.p-band[aria-labelledby=built-title],body:has(.nv-ws) section.p-band[aria-labelledby=built-title],body:has(.nv-devices) section.p-band[aria-labelledby=built-title],body:has(#offer-title) section.p-band[aria-labelledby=how-title] {padding-top:0;background:none;box-shadow:none;}
body:has(#voice-title) section.p-band[aria-labelledby=built-title] + .p-section,body:has(.nv-ws) section.p-band[aria-labelledby=built-title] + .p-section,body:has(.nv-devices) section.p-band[aria-labelledby=built-title] + .p-section,body:has(#offer-title) section.p-band[aria-labelledby=how-title] + .p-section {padding-top:0;}
.p-head {max-width:720px;margin-bottom:48px;}
.p-head h2 {font:500 clamp(32px,3.6vw,48px)/1.1 var(--serif);letter-spacing:-.025em;font-optical-sizing:auto;}
.p-head p {margin-top:16px;font-size:19px;max-width:60ch;}
.p-grid {display:grid;gap:24px;}
.p-grid-2 {grid-template-columns:repeat(2,minmax(0,1fr));}
.p-grid-3 {grid-template-columns:repeat(3,minmax(0,1fr));}
.p-grid-4 {grid-template-columns:repeat(4,minmax(0,1fr));}

/* Buttons */
.btn {display:inline-flex;align-items:center;justify-content:center;gap:10px;min-height:50px;padding:12px 22px;border:1px solid var(--border-strong);border-radius:10px;background:transparent;--link-ink:var(--ink);font-size:16px;line-height:1.3;font-weight:600;white-space:nowrap;transition:transform 120ms ease-out,box-shadow 120ms ease-out,background-color 150ms,border-color 150ms;}
.btn:hover {background:var(--surface-3);border-color:var(--border-strong);transform:translateY(-1px);}
.btn.primary {background:var(--brand);border-color:var(--brand);--link-ink:var(--brand-ink);box-shadow:0 6px 16px rgba(0,0,0,.18);}
.btn.primary:hover {background:var(--brand);border-color:var(--brand);box-shadow:0 10px 22px rgba(0,0,0,.24);}
.btn:active,button.btn:active {transform:translateY(1px);box-shadow:none;}
button.btn {color:var(--link-ink);}
.btn:focus-visible {outline:3px solid var(--accent)!important;outline-offset:3px;}
.p-actions {display:flex;flex-wrap:wrap;align-items:center;gap:12px 16px;margin-top:32px;}

/* Header */
.top {position:sticky;top:0;z-index:40;display:grid;grid-template-columns:auto minmax(0,1fr) 44px auto;align-items:center;gap:8px 16px;min-height:84px;padding-block:14px;background:var(--header-bg);box-shadow:0 0 0 100vmax var(--header-bg);clip-path:inset(0 -100vmax);border-bottom:1px solid var(--border);}
.mark {font:650 28px/1 var(--sans);letter-spacing:-.04em;white-space:nowrap;--link-ink:var(--ink);}
.mark > .t {color:var(--ink)!important;}
.mark b {font-weight:650;color:var(--verto)!important;--link-ink:var(--verto);}
.top .mark {grid-column:1;}
.top nav {grid-column:2;display:flex;align-items:center;justify-content:flex-end;gap:2px;}
.top nav a {display:inline-flex;align-items:center;min-height:44px;padding:8px 12px;border-radius:8px;font-size:15px;font-weight:500;--link-ink:var(--ink-muted);transition:background-color 150ms;}
.top nav a:hover {background:var(--surface-3);--link-ink:var(--ink);}
.top nav a[aria-current=page] {--link-ink:var(--ink);background:var(--tint);}
.top .theme {grid-column:3;display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;padding:0;border:1px solid transparent;border-radius:10px;background:transparent;color:var(--ink);cursor:pointer;transition:background-color 150ms;}
.top .theme:hover {background:var(--surface-3);}
.theme svg {fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round;}
html[data-theme=dark] .theme-moon,html[data-theme=light] .theme-sun {display:none;}
.top .intro-header {grid-column:4;min-height:44px;padding:10px 16px;font-size:15px;}
.top .menu-toggle {display:none;}

/* Phone navigation sheet (built by site.js) */
.navigation-sheet {position:fixed;inset:0;margin:0;padding:20px 24px 40px;width:100%;height:100dvh;max-width:none;max-height:none;border:0;background:var(--bg);color:var(--ink);overscroll-behavior:contain;overflow-y:auto;}
.navigation-sheet::backdrop {background:rgb(0 0 0 / .3);}
.sheet-heading {display:flex;align-items:center;justify-content:space-between;gap:24px;margin-bottom:24px;}
.navigation-sheet .sheet-heading .mark {font-size:24px;}
.sheet-close {min-height:44px;padding:8px 14px;border:1px solid var(--border-strong);border-radius:10px;background:var(--surface);color:var(--ink);font-size:15px;font-weight:600;}
.navigation-sheet nav {display:flex;flex-direction:column;gap:4px;max-width:560px;margin:0 auto;}
.navigation-sheet nav a {display:flex;align-items:center;min-height:56px;padding:8px 14px;border-radius:12px;font:500 24px/1.25 var(--sans);letter-spacing:-.02em;--link-ink:var(--ink);}
.navigation-sheet nav a:hover,.navigation-sheet nav a[aria-current=page] {background:var(--surface-3);}
.navigation-sheet[popover] {opacity:0;translate:24px 0;transition:opacity 220ms cubic-bezier(.16,1,.3,1),translate 220ms cubic-bezier(.16,1,.3,1),display 220ms allow-discrete,overlay 220ms allow-discrete;}
.navigation-sheet[popover]:popover-open {opacity:1;translate:0 0;}
@starting-style {.navigation-sheet[popover]:popover-open {opacity:0;translate:24px 0;}}

/* Hero */
.p-hero {display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,.85fr);gap:64px;align-items:center;padding-block:88px 104px;}
.p-hero h1 {font:500 clamp(42px,5.4vw,72px)/1.04 var(--serif);letter-spacing:-.035em;font-optical-sizing:auto;max-width:13ch;}
.p-hero .p-lede {margin-top:24px;font-size:20px;line-height:1.6;max-width:44ch;}
.p-hero .p-lede + .p-lede {margin-top:12px;}
.p-call {display:inline-flex;align-items:center;gap:10px;min-height:50px;font-weight:600;font-size:16px;--link-ink:var(--ink);}
.p-call .ico {width:20px;height:20px;color:var(--accent);}
.p-hero-note {margin-top:20px;font-size:15px;color:var(--ink-dim);}

/* Panel: the hero's "what we handle" module */
.p-panel {position:relative;padding:28px;border:1px solid var(--border);border-radius:20px;background:var(--surface);box-shadow:var(--shadow);}
.p-panel::before {content:"";position:absolute;inset:-1px -1px auto;height:3px;border-radius:20px 20px 0 0;background:var(--brand);}
.p-panel-title {display:flex;align-items:center;justify-content:space-between;gap:16px;padding-bottom:16px;margin-bottom:8px;border-bottom:1px solid var(--border);font-size:15px;font-weight:600;color:var(--ink);}
.p-panel-title span {font-weight:500;font-size:13px;color:var(--ink-dim);}
.p-panel ul {list-style:none;padding:0;}
.p-panel li {display:flex;align-items:center;gap:14px;padding:12px 0;color:var(--ink);font-weight:500;}
.p-panel li + li {border-top:1px dashed var(--border);}
.p-panel li .p-ico {width:40px;height:40px;border-radius:11px;flex:none;}
.p-panel-foot {display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:12px;padding-top:16px;border-top:1px solid var(--border);font-size:14px;color:var(--ink-dim);}
/* Consulting's hero panel and "Fractional technology leadership" panel as a ruled sheet (visual lift, Joe 2026-10-15): no shadow and no
   brand edge; a stronger border, a 2 px ink rule under the title, solid hairline rows and bare line icons. */
body:has(#leaks-title) .p-hero > .p-panel,.p-offer-panel {border-color:var(--border-strong);border-radius:12px;box-shadow:none;}
body:has(#leaks-title) .p-hero > .p-panel::before,.p-offer-panel::before {content:none;}
body:has(#leaks-title) .p-hero > .p-panel .p-panel-title,.p-offer-panel .p-panel-title {border-bottom:2px solid var(--ink);}
body:has(#leaks-title) .p-hero > .p-panel li + li,.p-offer-panel li + li {border-top-style:solid;}
body:has(#leaks-title) .p-hero > .p-panel li .p-ico {width:28px;height:28px;border-radius:0;background:none;}
/* Training's and Automation's hero panels as open icon lists (visual lift, Joe 2026-10-15): no box, no brand edge and no row rules;
   the icons sit in tinted circles. */
body:has(#offer-title) .p-hero > .p-panel,body:has(#voice-title) .p-hero > .p-panel {padding:0;border:0;border-radius:0;background:none;box-shadow:none;}
body:has(#offer-title) .p-hero > .p-panel::before,body:has(#voice-title) .p-hero > .p-panel::before {content:none;}
body:has(#offer-title) .p-hero > .p-panel li + li,body:has(#voice-title) .p-hero > .p-panel li + li {border-top:0;}
body:has(#offer-title) .p-hero > .p-panel li .p-ico,body:has(#voice-title) .p-hero > .p-panel li .p-ico {border-radius:50%;}
/* Home (and /start): the NexVerto line (visual lift, Joe 2026-10-15). The signature panel keeps its card, title, tinted icon tiles, words
   and foot; its brand top edge and dashed row rules give way to one 2 px brand line that joins the five icon tiles and draws once on
   load. With reduced motion the line is simply there. */
.p-signature::before {content:none;}
.p-signature ul {position:relative;}
.p-signature li + li {border-top:0;}
.p-signature li .p-ico {position:relative;z-index:1;}
.p-signature ul::before {content:"";position:absolute;left:19px;top:32px;bottom:32px;width:2px;border-radius:2px;background:var(--brand);transform-origin:top;animation:nv-draw-y .9s var(--ease-out) .2s both;}
@keyframes nv-draw-y {from {transform:scaleY(0);}}

/* Icons */
.ico {display:block;width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.75;stroke-linecap:round;stroke-linejoin:round;}
.p-ico {display:grid;place-items:center;width:48px;height:48px;border-radius:13px;background:var(--tint);color:var(--accent);flex:none;}

/* Cards */
.p-card {position:relative;display:flex;flex-direction:column;gap:12px;padding:28px;border:1px solid var(--border);border-radius:18px;background:var(--surface);box-shadow:var(--shadow);}
.p-card h3 {margin-top:8px;font:600 20px/1.3 var(--sans);letter-spacing:-.01em;}
.p-card p {font-size:16px;line-height:1.6;}
a.p-card {transition:transform 160ms ease-out,box-shadow 160ms ease-out,border-color 160ms;}
a.p-card:hover {transform:translateY(-3px);box-shadow:var(--shadow-lift);border-color:var(--border-strong);}
a.p-card > h3 {--link-ink:var(--ink);}
a.p-card > p {--link-ink:var(--ink-muted);}
a.p-card > .p-ico {--link-ink:var(--accent);}
.p-more {margin-top:auto;padding-top:12px;font-size:15px;font-weight:600;}
a.p-card > .p-more {--link-ink:var(--accent);}
a.p-card:hover > .p-more {--link-ink:var(--ink);}
/* Type columns (visual lift, Joe 2026-10-15): Pricing "When something gets built" and Automation "What gets built". No boxes, a bare
   28 px icon above each title and generous gaps. Three columns down to 901 px, then one stacked column (never a swipe row). */
section[aria-labelledby=levels-title] .p-grid-3,body:has(#voice-title) section[aria-labelledby=built-title] .p-grid-3 {gap:40px 48px;}
section[aria-labelledby=levels-title] .p-grid-3 > .p-card,body:has(#voice-title) section[aria-labelledby=built-title] .p-grid-3 > .p-card {padding:0;border:0;border-radius:0;background:none;box-shadow:none;}
section[aria-labelledby=levels-title] .p-grid-3 .p-ico,body:has(#voice-title) section[aria-labelledby=built-title] .p-grid-3 .p-ico {width:28px;height:28px;border-radius:0;background:none;place-items:start;}
section[aria-labelledby=levels-title] .p-grid-3 .p-ico .ico,body:has(#voice-title) section[aria-labelledby=built-title] .p-grid-3 .p-ico .ico {width:28px;height:28px;}
@media (max-width:1100px) {section[aria-labelledby=levels-title] .p-grid-3,body:has(#voice-title) section[aria-labelledby=built-title] .p-grid-3 {grid-template-columns:repeat(3,minmax(0,1fr));gap:32px;}}
@media (max-width:900px) {main section[aria-labelledby=levels-title] .p-grid-3:has(> .p-card),body:has(#voice-title) section[aria-labelledby=built-title] .p-grid-3 {grid-template-columns:minmax(0,1fr);grid-auto-flow:row;grid-auto-columns:auto;gap:32px;overflow:visible;scroll-snap-type:none;margin-inline:0;padding:0;}}
/* Consulting "Where the hours go": the classic card at rest, with a bare icon (visual lift, Joe 2026-10-15). Tinted icon tiles stay only
   on Home's signature panel and About's lab. */
section[aria-labelledby=leaks-title] .p-card .p-ico {width:28px;height:28px;border-radius:0;background:none;place-items:start;}
section[aria-labelledby=leaks-title] .p-card .p-ico .ico {width:28px;height:28px;}
/* Cross-ruled 2 x 2 (visual lift, Joe 2026-10-15): Automation "Where the routine work piles up" and Studio "When custom makes sense".
   No boxes, inner hairlines only and ring icons; on a fine pointer the ring fills as a reading aid (no lift). One column on phones. */
body:has(#voice-title) section[aria-labelledby=need-title] .p-grid-2,body:has(.nv-devices) section[aria-labelledby=need-title] .p-grid-2 {gap:0;}
body:has(#voice-title) section[aria-labelledby=need-title] .p-grid-2 > .p-card,body:has(.nv-devices) section[aria-labelledby=need-title] .p-grid-2 > .p-card {display:grid;grid-template-columns:44px minmax(0,1fr);column-gap:20px;row-gap:6px;align-content:start;padding:28px 32px;border:0;border-radius:0;background:none;box-shadow:none;}
body:has(#voice-title) section[aria-labelledby=need-title] .p-grid-2 > .p-card:nth-child(odd),body:has(.nv-devices) section[aria-labelledby=need-title] .p-grid-2 > .p-card:nth-child(odd) {padding-left:0;}
body:has(#voice-title) section[aria-labelledby=need-title] .p-grid-2 > .p-card:nth-child(even),body:has(.nv-devices) section[aria-labelledby=need-title] .p-grid-2 > .p-card:nth-child(even) {border-left:1px solid var(--border);}
body:has(#voice-title) section[aria-labelledby=need-title] .p-grid-2 > .p-card:nth-child(-n+2),body:has(.nv-devices) section[aria-labelledby=need-title] .p-grid-2 > .p-card:nth-child(-n+2) {padding-top:0;}
body:has(#voice-title) section[aria-labelledby=need-title] .p-grid-2 > .p-card:nth-child(n+3),body:has(.nv-devices) section[aria-labelledby=need-title] .p-grid-2 > .p-card:nth-child(n+3) {padding-bottom:0;border-top:1px solid var(--border);}
body:has(#voice-title) section[aria-labelledby=need-title] .p-grid-2 > .p-card .p-ico,body:has(.nv-devices) section[aria-labelledby=need-title] .p-grid-2 > .p-card .p-ico {grid-row:1 / span 2;width:44px;height:44px;border-radius:50%;background:none;box-shadow:inset 0 0 0 1px var(--border-strong);transition:background-color .2s ease,box-shadow .2s ease;}
@media (hover:hover) and (pointer:fine) {body:has(#voice-title) section[aria-labelledby=need-title] .p-grid-2 > .p-card:hover .p-ico,body:has(.nv-devices) section[aria-labelledby=need-title] .p-grid-2 > .p-card:hover .p-ico {background:color-mix(in srgb,var(--brand) 12%,transparent);box-shadow:inset 0 0 0 1px var(--accent);}}
@media (max-width:700px) {
  body:has(#voice-title) section[aria-labelledby=need-title] .p-grid-2 > .p-card:nth-child(n),body:has(.nv-devices) section[aria-labelledby=need-title] .p-grid-2 > .p-card:nth-child(n) {padding:24px 0;border-left:0;}
  body:has(#voice-title) section[aria-labelledby=need-title] .p-grid-2 > .p-card + .p-card,body:has(.nv-devices) section[aria-labelledby=need-title] .p-grid-2 > .p-card + .p-card {border-top:1px solid var(--border);}
  body:has(#voice-title) section[aria-labelledby=need-title] .p-grid-2 > .p-card:first-child,body:has(.nv-devices) section[aria-labelledby=need-title] .p-grid-2 > .p-card:first-child {padding-top:0;}
  body:has(#voice-title) section[aria-labelledby=need-title] .p-grid-2 > .p-card:last-child,body:has(.nv-devices) section[aria-labelledby=need-title] .p-grid-2 > .p-card:last-child {padding-bottom:0;}
}
/* Module tray (visual lift, Joe 2026-10-15): Platform "What is inside" and Studio "What gets built". Flat tiles with bare icons on one
   tinted tray; Studio's five tiles sit 2 + 3 (2 + 2 + 1 across on tablets), so no row ends with an orphan. One column on phones. */
body:has(.nv-ws) section[aria-labelledby=built-title] .p-grid-3,body:has(.nv-devices) section[aria-labelledby=built-title] .p-grid-3 {gap:12px;padding:12px;border:1px solid var(--border);border-radius:22px;background:var(--surface);}
html[data-theme=light] body:has(.nv-ws) section[aria-labelledby=built-title] .p-grid-3,html[data-theme=light] body:has(.nv-devices) section[aria-labelledby=built-title] .p-grid-3 {background:var(--surface-2);}
body:has(.nv-ws) section[aria-labelledby=built-title] .p-grid-3 > .p-card,body:has(.nv-devices) section[aria-labelledby=built-title] .p-grid-3 > .p-card {padding:22px;border-radius:14px;background:var(--surface-2);box-shadow:none;}
html[data-theme=light] body:has(.nv-ws) section[aria-labelledby=built-title] .p-grid-3 > .p-card,html[data-theme=light] body:has(.nv-devices) section[aria-labelledby=built-title] .p-grid-3 > .p-card {background:var(--surface);}
body:has(.nv-ws) section[aria-labelledby=built-title] .p-grid-3 .p-ico,body:has(.nv-devices) section[aria-labelledby=built-title] .p-grid-3 .p-ico {width:24px;height:24px;border-radius:0;background:none;place-items:start;}
body:has(.nv-ws) section[aria-labelledby=built-title] .p-grid-3 .p-ico .ico,body:has(.nv-devices) section[aria-labelledby=built-title] .p-grid-3 .p-ico .ico {width:24px;height:24px;}
body:has(.nv-devices) section[aria-labelledby=built-title] .p-grid-3 {grid-template-columns:repeat(6,minmax(0,1fr));}
body:has(.nv-devices) section[aria-labelledby=built-title] .p-grid-3 > .p-card {grid-column:span 2;}
body:has(.nv-devices) section[aria-labelledby=built-title] .p-grid-3 > .p-card:nth-child(-n+2) {grid-column:span 3;}
@media (max-width:1100px) {
  body:has(.nv-ws) section[aria-labelledby=built-title] .p-grid-3,body:has(.nv-devices) section[aria-labelledby=built-title] .p-grid-3 {grid-template-columns:repeat(2,minmax(0,1fr));}
  body:has(.nv-devices) section[aria-labelledby=built-title] .p-grid-3 > .p-card:nth-child(n) {grid-column:auto;}
  body:has(.nv-devices) section[aria-labelledby=built-title] .p-grid-3 > .p-card:nth-child(5) {grid-column:1 / -1;}
}
@media (max-width:700px) {
  body:has(.nv-ws) section[aria-labelledby=built-title] .p-grid-3,body:has(.nv-devices) section[aria-labelledby=built-title] .p-grid-3 {grid-template-columns:minmax(0,1fr);}
  body:has(.nv-devices) section[aria-labelledby=built-title] .p-grid-3 > .p-card:nth-child(5) {grid-column:auto;}
}

/* Service cards on Home */
.p-service h3 {font:500 26px/1.2 var(--serif);letter-spacing:-.02em;margin-top:12px;}
.p-service ul {list-style:none;padding:0;margin-top:8px;display:grid;gap:8px;}
.p-service li {display:flex;gap:10px;align-items:flex-start;font-size:15px;line-height:1.5;color:var(--ink-muted);}
a.p-service > ul {--link-ink:var(--ink-muted);}
.p-service li .ico {width:18px;height:18px;margin-top:2px;color:var(--accent);flex:none;}

/* Problem cards */
.p-problem {padding:26px 26px 28px;}
.p-problem h3 {margin-top:4px;}

/* Process: three stages joined by a line, no numbers */
.p-steps {position:relative;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:24px;}
.p-step {position:relative;z-index:1;}
.p-step-top {display:flex;align-items:center;justify-content:space-between;gap:12px;}
.p-step .p-tag {align-self:flex-start;}
.p-levels {display:flex;flex-wrap:wrap;gap:8px;margin-top:4px;}

/* Tags and chips */
.p-tag {display:inline-flex;align-items:center;min-height:30px;padding:4px 12px;border-radius:999px;background:var(--tint);color:var(--accent);font-size:13px;font-weight:600;line-height:1.2;}
.p-chips {display:flex;flex-wrap:wrap;gap:12px;}
.p-chip {display:inline-flex;align-items:center;gap:10px;min-height:48px;padding:10px 18px 10px 12px;border:1px solid var(--border);border-radius:999px;background:var(--surface);color:var(--ink);font-weight:500;font-size:16px;box-shadow:var(--shadow);}
.p-chip .ico {width:20px;height:20px;color:var(--accent);}

/* Rate cards */
.p-rates-head {display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:16px 32px;margin-bottom:40px;}
.p-rates-head .p-head {margin-bottom:0;}
.p-rate {gap:10px;}
.p-rate h3 {margin-top:0;font-size:18px;}
@media (min-width:1101px) {.p-rate h3 {min-height:2.6em;}}
.p-rate .p-for {font-size:15px;}
.p-price {display:flex;align-items:baseline;flex-wrap:wrap;gap:4px 12px;margin-top:12px;color:var(--ink);}
.p-price s {position:relative;font:500 22px/1 var(--serif);color:var(--ink-dim);text-decoration:none;}
/* The old price is struck by a drawn line (visual lift, Joe 2026-10-15): it draws across, left to right, as each rate card scrolls in
   (site.js marks cards below the fold). Cards already in view, no script, reduced motion and forced colours show it struck at rest. */
.p-price s::after {content:"";position:absolute;left:-2px;right:-2px;top:50%;height:2px;margin-top:-1px;border-radius:2px;background:var(--ink-dim);transform-origin:left center;}
@media (prefers-reduced-motion:no-preference) {
  .nv-pre:not(.is-in) .p-price s::after {transform:scaleX(0);}
  .nv-pre.is-in .p-price s::after {transition:transform .6s var(--ease-out) calc(var(--i,0) * 90ms + .2s);}
}
@media (forced-colors:active) {.p-price s {text-decoration:line-through;}.p-price s::after {display:none;}}
.p-price strong {font:500 54px/1 var(--serif);letter-spacing:-.03em;color:var(--ink);font-variant-numeric:tabular-nums lining-nums;}
.p-price span {font-size:15px;color:var(--ink-muted);}
.p-save {align-self:flex-start;margin-top:4px;}
.p-rate .p-note {font-size:14px;line-height:1.55;color:var(--ink-dim);padding-top:14px;margin-top:6px;border-top:1px solid var(--border);}
.p-rate .btn {margin-top:auto;}
.p-rate .p-spacer {flex:1;}
.p-fine {margin-top:24px;font-size:15px;color:var(--ink-dim);}

.p-sub {margin:8px 0 24px;font:500 clamp(22px,2.2vw,28px)/1.25 var(--serif);letter-spacing:-.015em;color:var(--ink);}
.p-panel-foot a {font-weight:600;--link-ink:var(--accent);white-space:nowrap;}
.p-cta {align-items:center;}
.p-cta .p-actions {justify-content:flex-end;margin-top:0;}
.p-step h3 {margin-top:4px;}
.p-step p a {font-weight:600;--link-ink:var(--accent);}

.nowrap {white-space:nowrap;}
.p-founder .p-grid-2 {align-items:start;}
.p-founder-copy p {font-size:18px;line-height:1.65;max-width:62ch;}
.p-founder-copy p + p {margin-top:16px;}
.p-founder-story h3 {margin-bottom:8px;}
.p-founder-side {display:grid;gap:24px;align-content:start;}
.p-founder-story p + p {margin-top:12px;}
.p-head + .btn {margin:0 0 32px;}
.p-chips {list-style:none;padding:0;margin:0;}
.p-proof {margin-bottom:32px;}
.p-proof .p-figure {font:500 clamp(28px,2.6vw,36px)/1.15 var(--serif);letter-spacing:-.02em;color:var(--ink);}
.p-offer {display:inline-flex;align-items:center;margin:0 0 24px;padding:8px 16px;border-radius:999px;border:1px solid var(--border-strong);background:var(--surface);color:var(--accent);--link-ink:var(--accent);font-weight:600;font-size:15px;line-height:1.4;}
.p-head .p-offer {margin:16px 0 0;font-size:15px;}
.p-what {margin-top:12px;font-size:15px;line-height:1.55;color:var(--ink-muted);}
/* One blue: blog article links use the same text blue as the rest of the site. */
html[data-theme=dark] #content > .cms-post .cms-post-body a,html:not([data-theme=light]) #content > .cms-post .cms-post-body a {--link-ink:var(--accent);}

/* Feature band: new business */
.p-feature {display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);gap:56px;align-items:center;padding:56px;border-radius:24px;background:var(--brand);color:#fff;box-shadow:var(--shadow-lift);}
.p-feature h2 {font:500 clamp(30px,3.2vw,42px)/1.12 var(--serif);letter-spacing:-.025em;color:#fff;}
.p-feature > div > p {color:#fff;font-size:18px;margin-top:16px;--link-ink:#fff;}
.p-feature .btn {margin-top:28px;background:#fff;border-color:#fff;--link-ink:#104fb6;box-shadow:0 8px 20px rgba(0,0,0,.2);}
.p-feature .btn:hover {background:#fff;border-color:#fff;}
.p-options {display:grid;gap:12px;}
.p-option {display:flex;gap:16px;align-items:flex-start;padding:20px;border-radius:16px;background:var(--surface);border:1px solid var(--border);}
.p-option .p-ico {width:44px;height:44px;}
.p-option h3 {font:600 17px/1.3 var(--sans);color:var(--ink);}
.p-option p {margin-top:4px;font-size:15px;color:var(--ink-muted);}

/* Questions: one hairline list across the content width, not a stack of cards (visual lift, Joe 2026-10-15). A row tints with
   5 % brand on hover and its mark turns brand blue; open rows keep the blue mark. Answers keep a 64-character line. */
.p-faq {display:grid;gap:0;border-top:1px solid var(--border);}
.p-faq details {border-bottom:1px solid var(--border);}
.p-faq summary {display:flex;align-items:center;justify-content:space-between;gap:16px;min-height:64px;padding:16px 4px;cursor:pointer;list-style:none;font-weight:600;font-size:18px;color:var(--ink);--mark:var(--ink-dim);transition:background-color .15s ease;}
.p-faq summary::-webkit-details-marker {display:none;}
.p-faq summary::after {content:"";flex:none;width:14px;height:14px;background:linear-gradient(var(--mark),var(--mark)) center/14px 2px no-repeat,linear-gradient(var(--mark),var(--mark)) center/2px 14px no-repeat;transition:transform 160ms ease-out;}
.p-faq details[open] summary::after {background:linear-gradient(var(--mark),var(--mark)) center/14px 2px no-repeat;}
.p-faq summary:hover {background:color-mix(in srgb,var(--brand) 5%,transparent);}
.p-faq summary:is(:hover,:focus-visible),.p-faq details[open] > summary {--mark:var(--accent);}
.p-faq details p {padding:0 4px 22px;max-width:64ch;}

/* Booking */
.p-book {display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);gap:56px;align-items:start;padding:56px;border:1px solid var(--border);border-radius:24px;background:var(--surface);box-shadow:var(--shadow-lift);}
.p-book h2 {font:500 clamp(32px,3.4vw,46px)/1.1 var(--serif);letter-spacing:-.025em;}
.p-book .p-book-copy p {margin-top:16px;font-size:18px;max-width:42ch;}
.p-book-points {list-style:none;padding:0;margin-top:28px;display:grid;gap:14px;}
.p-book-points li {display:flex;gap:12px;align-items:flex-start;color:var(--ink);font-weight:500;}
.p-book-points .ico {width:20px;height:20px;margin-top:3px;color:var(--accent);flex:none;}
.p-book .signup-panel {padding:32px;border-radius:18px;background:var(--surface-2);border:1px solid var(--border);}
/* Booking, shared by every page that has it: one clean form surface (visual lift, Joe 2026-10-15). The outer card goes and the form panel
   is the single raised surface. The CTA card on About and Pricing (.p-book.p-cta) is unchanged. */
.p-book:not(.p-cta) {padding:0;border:0;border-radius:0;background:none;box-shadow:none;}
.p-book .signup-panel {background:var(--surface);border-color:var(--border);box-shadow:var(--shadow-lift);}
.lead-field {position:relative;margin-bottom:18px;}
.lead-field label {display:block;margin-bottom:8px;font-size:15px;font-weight:600;color:var(--ink);}
.lead-field input {display:block;width:100%;min-height:52px;padding:12px 16px;border:1px solid var(--border-strong);border-radius:10px;background:var(--bg);color:var(--ink);font-size:17px;transition:border-color 150ms,box-shadow 150ms;}
.lead-field input:hover {border-color:var(--ink-dim);}
.lead-field input:focus {outline:none;border-color:var(--accent);box-shadow:0 0 0 4px var(--surface-3);}
.lead-field input:focus-visible {outline:2px solid var(--accent);outline-offset:2px;}
.lead-field [aria-invalid=true] {border-width:2px;border-color:#d4483c;}
.lead-error {display:block;margin-top:6px;font-size:14px;font-weight:500;color:var(--ink);}
.lead-error:empty {display:none;}
.hp {position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;}
/* Stay informed opt-in (issue #8): one quiet box above the submit button, unchecked by default; the whole line is the target. */
.lead-optin {display:flex;align-items:flex-start;gap:12px;margin:-6px 0 12px;padding:8px 0;font-size:15px;line-height:1.5;color:var(--ink-muted);cursor:pointer;transition:color 150ms;}
.lead-optin:hover {color:var(--ink);}
.lead-optin input {flex:none;width:20px;height:20px;margin:1px 0 0;accent-color:var(--brand);cursor:pointer;}
#lead-submit {width:100%;min-height:54px;margin-top:6px;font-size:17px;}
#lead-submit:disabled {opacity:.75;cursor:wait;}
.lead-permission {margin-top:16px;font-size:14px;line-height:1.5;}
.lead-permission a {--link-ink:var(--ink-dim);font-weight:400;}
#lead-status {margin-top:12px;font-size:16px;line-height:1.5;color:var(--ink);}
#lead-status:empty {margin:0;}
.lead-received {padding:24px 0;font:500 26px/1.3 var(--serif);color:var(--ink);}
.call-option {margin-top:20px;padding-top:18px;border-top:1px solid var(--border);font-size:16px;color:var(--ink-muted);}
.call-option a {font-weight:600;--link-ink:var(--accent);}

/* Page heroes for inner pages */
.p-page-hero {padding-block:80px 72px;max-width:820px;}
.p-page-hero .p-ico {width:56px;height:56px;border-radius:15px;margin-bottom:24px;}
.p-page-hero .p-ico .ico {width:26px;height:26px;}
.p-page-hero h1 {font:500 clamp(40px,5vw,64px)/1.06 var(--serif);letter-spacing:-.03em;}
.p-page-hero .p-lede {margin-top:20px;font-size:21px;line-height:1.55;max-width:46ch;color:var(--ink-muted);}
.p-page-hero .p-lede + .p-lede {margin-top:10px;font-size:18px;}

/* Document pages (privacy, 404) */
.p-doc {max-width:760px;padding-block:80px 32px;}
.p-doc h1 {font:500 clamp(38px,4.6vw,56px)/1.08 var(--serif);letter-spacing:-.03em;}
.p-doc .p-doc-body {margin-top:32px;padding:36px;border:1px solid var(--border);border-radius:20px;background:var(--surface);box-shadow:var(--shadow);}
.p-doc .p-doc-body p + p {margin-top:16px;}
.p-doc .p-doc-body h2 {font:600 18px/1.3 var(--sans);margin:28px 0 8px;}
.p-doc .p-doc-body h2:first-child {margin-top:0;}
.p-doc .p-date {margin-top:28px;font-size:14px;color:var(--ink-dim);}
/* Privacy and Terms read as plain documents (visual lift, Joe 2026-10-15): no card, a hairline top rule and the reading measure. */
body.p-privacy .p-doc-body,body.p-terms .p-doc-body {max-width:62ch;padding:32px 0 0;border:0;border-top:1px solid var(--border);border-radius:0;background:none;box-shadow:none;}
main > .message {max-width:720px;padding-block:96px 64px;}
main > .message h1 {font:500 clamp(40px,5vw,60px)/1.06 var(--serif);letter-spacing:-.03em;}
main > .message p {margin-top:16px;font-size:19px;}
main > .message .row {display:flex;flex-wrap:wrap;align-items:center;gap:16px;margin-top:32px;}
main > .message .row > a:not(.btn) {display:inline-flex;align-items:center;min-height:50px;font-weight:600;--link-ink:var(--accent);}

/* Footer (Joe, 2026-10-15: shorter). Every link stays. Two rows on a desktop, the brand row and the links row with the
   copyright at its end; a short stack on a phone. Only height and layout changed. */
footer {display:flex;flex-wrap:wrap;align-items:center;gap:0 16px;margin-top:96px;padding-block:24px 20px;border-top:1px solid var(--border);}
.f-grid {display:contents;}
.f-brand {display:flex;flex:1 1 100%;flex-wrap:wrap;align-items:center;gap:4px 24px;margin-bottom:4px;}
.f-brand p {margin:0;max-width:none;font-size:15px;}
.f-brand .f-phone {order:2;margin:0 0 0 auto;}
.f-brand .btn {order:3;margin:0;min-height:44px;padding:8px 18px;font-size:15px;}
.f-phone {display:inline-flex;align-items:center;min-height:44px;font-weight:600;--link-ink:var(--ink);}
.f-col {display:flex;flex-wrap:wrap;align-items:center;gap:0 12px;}
.f-col h2 {margin:0;font:600 13px/1.4 var(--sans);color:var(--ink-dim);}
.f-col a {display:inline-flex;align-items:center;min-height:44px;font-size:14px;--link-ink:var(--ink-muted);}
.f-col a:hover {--link-ink:var(--ink);}
footer .mark {font-size:24px;}
footer .copyright {margin:0 0 0 auto;padding:0;border:0;font-size:13px;color:var(--ink-dim);}
/* Tablets and phones (Joe, 2026-10-15: tidy the mobile footer and keep it short): the brand rows, then Services and Company
   as labelled columns of 32 px rows; the phone version is in the Phone block. Desktop above 1024 px is unchanged. */
@media (max-width:1024px) {
  footer {padding-block:24px 16px;}
  .f-grid {display:grid;flex:1 1 100%;grid-template-columns:minmax(0,1fr) auto auto;gap:24px 32px;align-items:start;}
  .f-brand {gap:4px 16px;margin:0;}
  .f-brand::after {content:"";order:1;flex-basis:100%;}
  .f-brand p {line-height:1.5;}
  .f-brand .f-phone,.f-brand .btn {margin:0;}
  footer .mark {padding-block:4px;margin-block:-4px;}
  .f-col {flex-direction:column;flex-wrap:nowrap;align-items:flex-start;gap:0;}
  .f-col a {min-height:32px;font-size:15px;}
  footer .copyright {flex:1 1 100%;margin:8px 0 0;line-height:1.5;}
}

/* Blog pages keep their own article styles; the shared shell and colours come from this file. */
body.architecture-blog main {padding-top:24px;}
/* Blog index (visual lift, Joe 2026-10-15): a 2 px brand tick draws down beside a post while its title is hovered or focused. */
@media (hover:hover) and (min-width:1101px) {
  body.architecture-blog #content > .cms-blog > .cms-post {position:relative;}
  body.architecture-blog #content > .cms-blog > .cms-post::before {content:"";position:absolute;left:-24px;top:36px;bottom:36px;width:2px;border-radius:2px;background:var(--brand);transform:scaleY(0);transform-origin:top;transition:transform .25s var(--ease-out);pointer-events:none;}
  body.architecture-blog #content > .cms-blog > .cms-post:has(h2 a:is(:hover,:focus-visible))::before {transform:scaleY(1);}
}

/* Tablet */
@media (max-width:1100px) {
  .wrap {width:calc(100% - 48px);}
  .top {grid-template-columns:minmax(0,1fr) 44px auto 44px;gap:8px;min-height:76px;}
  .mark {font-size:24px;}
  html[data-navigation=enhanced] .top nav {display:none;}
  html:not([data-navigation=enhanced]) .top nav {grid-column:1/-1;grid-row:2;justify-content:flex-start;flex-wrap:wrap;}
  .top .theme {grid-column:2;grid-row:1;}
  .top .intro-header {grid-column:3;grid-row:1;padding-inline:14px;font-size:14px;}
  .top .menu-toggle {grid-column:4;grid-row:1;display:inline-flex;align-items:center;justify-content:center;position:relative;width:44px;height:44px;padding:0;border:1px solid var(--border-strong);border-radius:10px;background:var(--surface);color:transparent;font-size:0;}
  .top .menu-toggle::before,.top .menu-toggle::after {content:"";position:absolute;left:12px;right:12px;height:2px;border-radius:2px;background:var(--ink);}
  .top .menu-toggle::before {top:15px;box-shadow:0 6px 0 var(--ink);}
  .top .menu-toggle::after {top:27px;}
  html:not([data-navigation=enhanced]) .top .menu-toggle {display:none;}
  .p-hero {grid-template-columns:minmax(0,1fr);gap:48px;padding-block:56px 80px;}
  .p-hero h1 {max-width:15ch;}
  .p-grid-4 {grid-template-columns:repeat(2,minmax(0,1fr));}
  .p-grid-3 {grid-template-columns:repeat(2,minmax(0,1fr));}
  .p-steps {grid-template-columns:minmax(0,1fr);}
    .p-feature,.p-book {grid-template-columns:minmax(0,1fr);gap:36px;padding:40px;}
}

/* Phone */
@media (max-width:700px) {
  body {font-size:17px;}
  .wrap {width:calc(100% - 32px);}
  .p-section,.p-band {padding-block:72px;}
  .p-band + .p-section {padding-top:72px;}
  .p-head {margin-bottom:32px;}
  .p-head p {font-size:18px;}
  .p-hero {padding-block:40px 64px;}
  .p-hero .p-lede {font-size:18px;}
  .p-panel {padding:22px;}
  .p-grid-2,.p-grid-3,.p-grid-4 {grid-template-columns:minmax(0,1fr);}
  .p-card {padding:24px;}
  .p-feature,.p-book {padding:28px 22px;border-radius:20px;}
  .p-book .signup-panel {padding:22px;}
  .p-page-hero {padding-block:48px 48px;}
  .p-page-hero .p-lede {font-size:19px;}
  .p-doc {padding-block:48px 16px;}
  .p-doc .p-doc-body {padding:24px;}
  body.p-privacy .p-doc-body,body.p-terms .p-doc-body {padding:24px 0 0;}
  .p-actions .btn {flex:1 1 220px;}
  .p-price strong {font-size:46px;}
  footer {margin-top:64px;}
  .f-grid {grid-template-columns:repeat(2,minmax(0,1fr));gap:24px 16px;}
  .f-brand {grid-column:1/-1;}
}
@media (max-width:380px) {
  .top {grid-template-columns:minmax(0,1fr) 44px 44px;grid-template-rows:auto auto;}
  .top .theme {grid-column:2;}
  .top .menu-toggle {grid-column:3;}
  .top .intro-header {grid-column:1/-1;grid-row:2;width:100%;}
  .mark {font-size:22px;}
}

@media (prefers-reduced-motion:reduce) {
  *,*::before,*::after {transition:none!important;animation:none!important;scroll-behavior:auto!important;}
  .btn:hover,a.p-card:hover {transform:none;}
}

/* Original NexVerto wordmark (docs/WORDMARK-RESTORE.md, Joe 2026-10-11): Nex #F2F5F9 on dark and #0B1220 on light, Verto #2D6FD9 always; IBM Plex Sans 700, 20px, line-height 1, -0.02em. */
.mark,.top .mark,footer .mark,.navigation-sheet .sheet-heading .mark {font:700 20px/1 var(--sans)!important;letter-spacing:-.02em!important;}
.mark > .t {color:#F2F5F9!important;}
html[data-theme=light] .mark > .t {color:#0B1220!important;}
.mark b {font-weight:700!important;color:#2D6FD9!important;--link-ink:#2D6FD9;}
/* About: two collapsed sections (Joe 2026-10-13). */
/* Scoped to content: the About body carries .p-about, and padding on the body pushed the header below every other page (2026-10-15). */
main .p-about {padding-top:24px;}
.p-fold {border:1px solid var(--border-strong);border-radius:18px;background:var(--surface);}
.p-fold + .p-fold {margin-top:16px;}
.p-fold > summary {display:grid;grid-template-columns:1fr auto;align-items:center;column-gap:24px;padding:28px 32px;cursor:pointer;list-style:none;}
.p-fold > summary::-webkit-details-marker {display:none;}
.p-fold > summary:focus-visible {outline:3px solid var(--accent);outline-offset:4px;}
.p-fold-h {grid-column:1;font:500 clamp(26px,2.6vw,34px)/1.15 var(--serif);letter-spacing:-.02em;}
.p-fold-sub {grid-column:1;margin-top:6px;font-size:16px;color:var(--ink-muted);}
.p-fold-icon {grid-column:2;grid-row:1 / span 2;width:44px;height:44px;border-radius:999px;border:1px solid var(--border-strong);display:grid;place-items:center;transition:transform .2s ease;}
.p-fold[open] .p-fold-icon {transform:rotate(45deg);}
.p-fold-body {padding:0 32px 32px;}
.p-fold-body p {font-size:18px;line-height:1.65;max-width:64ch;}
.p-fold-body p + p {margin-top:16px;}
.p-work {display:grid;grid-template-columns:minmax(160px,220px) 1fr;gap:18px 32px;margin:0;}
.p-work dt {font-weight:600;color:var(--ink);}
.p-work dd {margin:0;color:var(--ink-muted);line-height:1.6;}
@media (max-width:640px) {.p-fold > summary {padding:22px 20px;}.p-fold-body {padding:0 20px 24px;}.p-work {grid-template-columns:1fr;gap:4px;}.p-work dd {margin-bottom:14px;}}
@media (prefers-reduced-motion:reduce) {.p-fold-icon {transition:none;}}
/* Where to start: three numbered ways in (Joe 2026-10-13). */
ol.p-start-steps {list-style:none;margin:0 0 72px;padding:0;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:24px;}
.p-start-step {display:flex;flex-direction:column;gap:12px;}
.p-start-n {width:36px;height:36px;border-radius:999px;display:grid;place-items:center;background:var(--brand);color:#fff;font:600 16px/1 var(--sans);}
.p-start-step h3 {margin-top:4px;}
.p-start-step p {flex:1;}
.p-start-step .btn {align-self:stretch;}
@media (max-width:900px) {ol.p-start-steps {grid-template-columns:1fr;margin-bottom:56px;}}

/* About: hero panel plus two accordions in the Questions style (Joe 2026-10-13). */
.p-about-more {padding-top:0;}
.p-about-faq {max-width:none;}
.p-about-faq summary {font:500 clamp(22px,2.2vw,28px)/1.2 var(--serif);letter-spacing:-.015em;}
.p-about-faq .p-faq-body {padding:4px 4px 26px;}
.p-about-faq .p-faq-body p {padding:0;font-size:18px;line-height:1.65;max-width:68ch;}
.p-about-faq .p-faq-body p + p {margin-top:14px;}
/* About "Experience" (visual lift, Joe 2026-10-15): the roles stack in one column inside the accordion, each led by a short brand tick,
   with its description indented to the role and kept to a reading measure. The accordion itself is unchanged. */
#experience .p-work {grid-template-columns:minmax(0,1fr);gap:0;}
#experience .p-work dt {display:flex;align-items:flex-start;gap:12px;margin-top:20px;}
#experience .p-work dt:first-child {margin-top:0;}
#experience .p-work dt::before {content:"";flex:none;width:16px;height:2px;margin-top:calc(.825em - 1px);border-radius:2px;background:var(--accent);}
#experience .p-work dd {max-width:68ch;margin:4px 0 0;padding-left:28px;}
/* About hero without the founder card (Joe, 2026-10-15): the heading holds the left column, the introduction and its actions the
   right, both ending on one line, so neither half is empty; on tablets and phones it stacks with the spacing it had. */
body.p-about .p-hero {align-items:end;}
body.p-about .p-hero .p-lede {margin-top:0;}
@media (max-width:1100px) {body.p-about .p-hero {row-gap:24px;}}
/* About in two parts (Joe, 2026-10-15). Part 1: the hero, NexVerto's story and Joe's experience. Part 2, below a drawn rule: what is live
   today, then the lab with each item's status. The page's one motion is a line ruled from the left as it enters (the rule, then the live
   panel's brand edge); reduced motion shows both finished. Status is always written out; the dot only repeats it. */
body.p-about .p-story {padding-block:0 56px;}
.p-story h2 {font:600 clamp(28px,3vw,40px)/1.1 var(--serif);letter-spacing:-.03em;}
.p-story-copy {max-width:66ch;margin-top:20px;}
.p-story-copy p {font-size:18px;line-height:1.65;}
.p-story-copy p + p {margin-top:14px;}
.p-rule {height:3px;margin:0;border:0;background:linear-gradient(var(--brand),var(--brand)) left top/72px 3px no-repeat,linear-gradient(var(--border-strong),var(--border-strong)) left center/100% 1px no-repeat;transform-origin:left;}
.p-rule[data-reveal] {transition:transform 900ms var(--ease-out);}
.p-capabilities .p-head {margin-bottom:32px;}
.p-cap-h {font:600 clamp(22px,2.2vw,28px)/1.2 var(--serif);letter-spacing:-.02em;margin-bottom:16px;}
.p-live {position:relative;display:grid;grid-template-columns:minmax(0,1.3fr) minmax(0,1fr);margin:0 0 72px;padding:0;list-style:none;border:1px solid var(--border);border-radius:20px;background:var(--surface);box-shadow:var(--shadow);}
.p-live::before {content:"";position:absolute;inset:-1px -1px auto;height:3px;border-radius:20px 20px 0 0;background:var(--brand);transform-origin:left;transition:transform 900ms var(--ease-out) 120ms;}
.p-live li {display:grid;grid-template-columns:auto minmax(0,1fr);align-items:center;gap:20px;padding:28px 32px;}
.p-live li + li {border-left:1px solid var(--border);}
.p-live strong {font:600 clamp(40px,4vw,56px)/1 var(--serif);letter-spacing:-.035em;color:var(--ink);font-variant-numeric:tabular-nums lining-nums;white-space:nowrap;}
.p-live .p-plus {margin-left:.04em;font-size:.55em;vertical-align:.6em;color:var(--accent);}
.p-live li > span {font-size:16px;line-height:1.5;color:var(--ink-muted);max-width:30ch;}
@media (scripting: enabled) and (prefers-reduced-motion: no-preference) {
  .p-live:not(.is-in)::before,.p-rule[data-reveal]:not(.is-in) {transform:scaleX(0);}
  .p-rule[data-reveal]:not(.is-in) {opacity:1;}
  html:not(.nv-motion) .p-live:not(.is-in)::before {animation:nv-failsafe 0s 2.5s forwards;}
}
.p-lab-head {max-width:68ch;margin-bottom:28px;}
.p-lab-head p {font-size:18px;line-height:1.6;}
.p-lab-head p + p {margin-top:12px;}
.p-lab-grid {display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin:0;padding:0;list-style:none;}
.p-lab-grid li {display:flex;flex-direction:column;align-items:flex-start;gap:14px;padding:24px;border:1px solid var(--border);border-radius:14px;background:var(--surface);overflow-wrap:break-word;}
.p-lab-grid .p-ico {width:40px;height:40px;border-radius:11px;}
.p-lab-name {font-weight:500;font-size:16px;line-height:1.45;color:var(--ink);}
.p-status {display:inline-flex;align-items:center;gap:8px;margin-top:auto;padding-top:2px;font-size:13px;font-weight:600;line-height:1.3;color:var(--ink-muted);}
.p-status::before {content:"";flex:none;width:8px;height:8px;border-radius:50%;box-sizing:border-box;}
.p-status[data-status=live]::before {background:#2fbf71;box-shadow:0 0 0 3px color-mix(in srgb,#2fbf71 22%,transparent);}
.p-status[data-status=qualifying]::before {background:#d9971c;}
.p-status[data-status=development]::before {border:1.5px solid var(--ink-dim);}
.p-lab-more {margin-top:20px;font-size:16px;color:var(--ink-muted);}
@media (max-width:1100px) {.p-lab-grid {grid-template-columns:repeat(3,minmax(0,1fr));}}
@media (max-width:860px) {.p-live {grid-template-columns:minmax(0,1fr);}.p-live li + li {border-left:0;border-top:1px solid var(--border);}}
@media (max-width:700px) {body.p-about .p-story {padding-bottom:40px;}.p-live {margin-bottom:56px;}.p-live li {padding:20px;gap:16px;}.p-live strong {font-size:40px;}.p-lab-grid {grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;}.p-lab-grid li {gap:12px;padding:16px;}.p-lab-name {font-size:15px;}}
@media (max-width:360px) {.p-lab-grid {grid-template-columns:minmax(0,1fr);}.p-lab-grid li {display:grid;grid-template-columns:40px minmax(0,1fr);column-gap:14px;row-gap:4px;align-items:center;}.p-lab-grid .p-ico {grid-row:1 / span 2;}.p-status {margin-top:0;}}
.p-panel-foot span + span {text-align:right;}
@media (max-width:640px) {.p-panel-foot {flex-direction:column;align-items:flex-start;}.p-panel-foot span + span {text-align:left;}}

/* Consulting: four-step process, offer panels (Joe 2026-10-13). */
ol.p-start-steps.p-steps-4 {grid-template-columns:repeat(4,minmax(0,1fr));}
@media (max-width:1100px) {ol.p-start-steps.p-steps-4 {grid-template-columns:repeat(2,minmax(0,1fr));}}
@media (max-width:640px) {ol.p-start-steps.p-steps-4 {grid-template-columns:1fr;}}
/* Process steps as a timeline (visual lift, Joe 2026-10-15): Consulting and Training. No card boxes; the number discs sit on a 2 px brand
   connector that draws as the steps scroll into view (a CSS view timeline inside @supports). Without support or with reduced motion the
   line is simply there. It shows only while the steps sit in one row. */
ol.p-start-steps {position:relative;--n:3;}
ol.p-start-steps.p-steps-4 {--n:4;}
ol.p-start-steps > .p-card {padding:0;border:0;border-radius:0;background:none;box-shadow:none;}
.p-start-n {position:relative;z-index:1;box-shadow:0 0 0 6px var(--ring-bg,var(--bg));}
.p-band ol.p-start-steps {--ring-bg:var(--surface-2);}
body:has(#offer-title) section.p-band[aria-labelledby=how-title] ol.p-start-steps {--ring-bg:var(--bg);}
ol.p-start-steps::before {content:"";position:absolute;top:17px;left:18px;right:calc((100% - (var(--n) - 1) * 24px) / var(--n) - 18px);height:2px;border-radius:2px;background:var(--brand);transform-origin:left center;}
@media (max-width:1100px) {ol.p-start-steps.p-steps-4::before {content:none;}}
@media (max-width:900px) {ol.p-start-steps::before {content:none;}}
@keyframes nv-draw-x {from {transform:scaleX(0);}}
@supports (animation-timeline:view()) {
  @media (prefers-reduced-motion:no-preference) {
    ol.p-start-steps::before {animation:nv-draw-x linear both;animation-timeline:view();animation-range:entry 30% cover 40%;}
  }
}
.p-offer-panel .p-panel-copy {margin:12px 0 4px;font-size:16px;line-height:1.6;color:var(--ink-muted);}
.p-offer-panel li .p-ico {width:28px;height:28px;border-radius:0;background:none;}

/* ===== Joe, 2026-10-13: type pairing, header, routes, rhythm, micro-details and motion ===== */
@font-face {font-family:"Geist";src:url("/static/fonts/geist-latin.woff2") format("woff2");font-weight:100 900;font-style:normal;font-display:swap;}
@font-face {font-family:"Inter";src:url("/static/fonts/inter-latin.woff2") format("woff2");font-weight:400 600;font-style:normal;font-display:swap;}
:root,html[data-theme=dark],html[data-theme=light] {--serif:"Geist","Geist Fallback",-apple-system,BlinkMacSystemFont,"Segoe UI",Arial,sans-serif;--sans:"Inter","Inter Fallback",-apple-system,BlinkMacSystemFont,"Segoe UI",Arial,sans-serif;interpolate-size:allow-keywords;}
.mark,.top .mark,footer .mark,.navigation-sheet .sheet-heading .mark {font-family:"IBM Plex Sans","IBM Plex Fallback",Arial,sans-serif!important;}
h1,h2,.p-hero h1,.p-page-hero h1,.p-head h2,.p-sub,.p-figure,.p-price strong,.p-fold-h,.p-about-faq summary,.p-route-q {font-family:var(--serif);font-weight:600!important;letter-spacing:-.032em!important;text-wrap:balance;}
p,dd,li {text-wrap:pretty;}
.p-price strong {font-variant-numeric:tabular-nums;}
/* Header: Services menu and About, centred; theme and primary action at the end. Plain links in the HTML (tests), menu opens on hover and focus. */
.top nav {justify-content:center;}
.nav-group {position:relative;}
.nav-group-label {display:inline-flex;align-items:center;gap:8px;min-height:44px;padding:8px 12px;border:0;border-radius:8px;background:transparent;font:500 15px/1 var(--sans);color:var(--ink-muted);cursor:pointer;transition:background-color .15s,color .15s;}
.nav-group-label::after {content:"";width:7px;height:7px;border-right:1.5px solid currentColor;border-bottom:1.5px solid currentColor;transform:translateY(-2px) rotate(45deg);transition:transform .18s ease;}
.nav-group:hover .nav-group-label,.nav-group:focus-within .nav-group-label,.nav-group:has([aria-current=page]) .nav-group-label {background:var(--surface-3);color:var(--ink);}
.nav-group:hover .nav-group-label::after,.nav-group:focus-within .nav-group-label::after {transform:translateY(1px) rotate(225deg);}
.nav-group .services-menu {position:absolute;top:100%;left:50%;z-index:60;display:grid;gap:2px;min-width:248px;margin-top:8px;padding:8px;border:1px solid var(--border);border-radius:14px;background:var(--surface);box-shadow:var(--shadow);opacity:0;visibility:hidden;transform:translate(-50%,-6px);transition:opacity .18s ease,transform .18s ease,visibility 0s linear .18s;}
.nav-group .services-menu::before {content:"";position:absolute;inset:-12px 0 auto;height:12px;}
.nav-group:hover .services-menu,.nav-group:focus-within .services-menu {opacity:1;visibility:visible;transform:translate(-50%,0);transition-delay:0s;}
.top nav .services-menu a {display:flex;width:100%;min-height:44px;padding:10px 12px;border-radius:10px;font-size:15px;font-weight:500;--link-ink:var(--ink);transition:background-color .15s;}
.top nav .services-menu a:hover {background:var(--surface-3);}
.top nav .services-menu a[aria-current=page] {background:var(--tint);}
/* Rhythm on an 8 px scale */
.p-section,.p-band {padding-block:88px;}
.p-section + .p-section {padding-top:0;}
.p-band + .p-section {padding-top:88px;}
.p-head {margin-bottom:40px;}
@media (max-width:640px) {.p-section,.p-band {padding-block:64px;}.p-band + .p-section {padding-top:64px;}.p-head {margin-bottom:32px;}}
.p-proof-link {margin-top:24px;}
.p-proof-link a {font-weight:600;--link-ink:var(--accent);}
.p-inline-link {padding-bottom:8px;}
/* Home: routes, proof line, signature */
/* Home: "Where are you right now?" (Joe, 2026-10-15: rebuilt in the hero panel's language; copy and links unchanged). One panel holds
   the five routes and each route is one link. A dashed leader runs from the visitor's question to its destination, as in a table of
   contents, so the eye can cross a wide row; on hover or keyboard focus it draws as the brand-blue route and the arrow tile fills.
   The leaders draw once as the rows arrive; with reduced motion they are simply there. */
.p-routes {position:relative;list-style:none;margin:0;padding:8px;border:1px solid var(--border);border-radius:20px;background:var(--surface);box-shadow:var(--shadow);}
.p-routes::before {content:"";position:absolute;inset:-1px;border-top:3px solid var(--brand);border-radius:20px;pointer-events:none;}
.p-routes li {position:relative;}
.p-routes li + li::before {content:"";position:absolute;top:0;left:20px;right:20px;height:1px;background:var(--border);transition:opacity .2s ease;}
.p-routes a {position:relative;display:grid;grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"q q" "a a" "line go";align-items:center;gap:8px 16px;padding:24px 20px;border-radius:14px;--link-ink:var(--ink);transition:background-color .2s ease,transform .1s ease;}
.p-routes a > .t {display:contents;}
.p-route-q {grid-area:q;font-size:clamp(22px,.9vw + 15px,28px);line-height:1.2;--link-ink:var(--ink);}
.p-route-a {grid-area:a;max-width:60ch;margin-bottom:8px;font-size:17px;line-height:1.55;--link-ink:var(--ink-muted);}
.p-route-go {grid-area:go;display:inline-flex;align-items:center;gap:14px;font:600 16px/1.3 var(--sans);white-space:nowrap;--link-ink:var(--accent);}
.p-route-go .ico {width:44px;height:44px;padding:11px;border:1px solid var(--border-strong);border-radius:12px;color:var(--accent);stroke-width:2;transition:background-color .2s ease,border-color .2s ease,color .2s ease,transform .1s ease;}
.p-route-go .ico path {transition:transform .22s var(--ease-out);}
.p-routes a::before,.p-routes a::after {content:"";grid-area:line;align-self:center;height:1px;transform-origin:left center;}
.p-routes a::before {background:linear-gradient(90deg,var(--border-strong) 0 4px,transparent 4px 8px) left center/8px 1px repeat-x;}
.p-routes a::after {height:2px;border-radius:2px;background:var(--brand);transform:scaleX(0);transform-origin:right center;transition:transform .45s var(--ease-out);}
@media (hover:hover) {
  .p-routes a:hover {background:color-mix(in srgb,var(--brand) 6%,var(--surface));}
  .p-routes a:hover::after {transform:scaleX(1);transform-origin:left center;}
  .p-routes a:hover .p-route-go .ico {background:var(--brand);border-color:var(--brand);color:#fff;}
  .p-routes a:hover .p-route-go .ico path {transform:translateX(4px);}
  .p-routes li:hover::before,.p-routes li:hover + li::before {opacity:0;}
}
.p-routes a:focus-visible {outline-offset:-3px;border-radius:14px;background:color-mix(in srgb,var(--brand) 6%,var(--surface));}
.p-routes a:focus-visible::after {transform:scaleX(1);transform-origin:left center;}
.p-routes a:focus-visible .p-route-go .ico {background:var(--brand);border-color:var(--brand);color:#fff;}
.p-routes a:focus-visible .p-route-go .ico path {transform:translateX(4px);}
.p-routes li:focus-within::before,.p-routes li:focus-within + li::before {opacity:0;}
.p-routes a:active {transform:translateY(1px);}
.p-routes a:active .p-route-go .ico {transform:scale(.94);}
@media (prefers-reduced-motion:no-preference) {
  .p-routes .nv-pre a::before {transition:transform .6s var(--ease-out) calc(var(--i,0) * 70ms + 120ms);}
  .p-routes .nv-pre:not(.is-in) a::before {transform:scaleX(0);}
}
@media (min-width:1101px) {
  .p-routes a {grid-template-columns:max-content minmax(48px,1fr) auto;grid-template-areas:"q line go" "a a .";column-gap:24px;padding:24px 28px;}
  .p-route-a {margin-bottom:0;}
  .p-routes li + li::before {left:28px;right:28px;}
}
@media (max-width:700px) {
  .p-routes {padding:6px;}
  .p-routes a {padding:20px 16px;column-gap:12px;}
  .p-routes li + li::before {left:16px;right:16px;}
  .p-route-go .ico {width:40px;height:40px;padding:10px;}
}
.p-proof-strip {padding-top:0;}
.p-proofline {list-style:none;margin:0;padding:24px 0;display:flex;flex-wrap:wrap;gap:16px 40px;border-block:1px solid var(--border);color:var(--ink-muted);}
.p-proofline strong {display:block;font:600 clamp(28px,3vw,40px)/1.1 var(--serif);letter-spacing:-.03em;color:var(--ink);}
.p-sig {display:block;width:100%;height:auto;margin:-4px 0 16px;}
.p-sig .p-sig-box,.p-sig .p-sig-dev {fill:none;stroke:var(--ink-dim);stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round;}
.p-sig .p-sig-line {fill:none;stroke:var(--brand);stroke-width:2;stroke-linecap:round;stroke-dasharray:200;stroke-dashoffset:200;animation:sig-draw .95s cubic-bezier(.2,.7,.2,1) forwards;}
.p-sig .p-sig-line:nth-of-type(2) {animation-delay:.08s;}
.p-sig .p-sig-line:nth-of-type(3) {animation-delay:.16s;}
.p-sig .p-sig-line:nth-of-type(4) {animation-delay:.24s;}
.p-sig .p-sig-dev {opacity:0;animation:sig-in .4s ease-out .7s forwards;}
@keyframes sig-draw {to {stroke-dashoffset:0;}}
@keyframes sig-in {to {opacity:1;}}
/* Lists that are not cards */
.p-checks {list-style:none;margin:0 0 32px;padding:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px 32px;}
.p-checks li {display:flex;gap:12px;align-items:flex-start;color:var(--ink);}
.p-checks .ico {flex:none;width:20px;height:20px;margin-top:3px;color:var(--accent);}
@media (max-width:700px) {.p-checks {grid-template-columns:1fr;}}
.p-work-wide {grid-template-columns:minmax(200px,280px) 1fr;}
/* Controls: press, hover, focus */
.btn {transition:transform .1s ease,box-shadow .12s ease,background-color .15s ease,border-color .15s ease;}
.btn:hover {transform:translateY(-1px);}
.btn:active {transform:translateY(1px);box-shadow:none;}
:focus-visible {outline:3px solid var(--accent);outline-offset:3px;}
/* Cards that are not links do not lift on hover (visual lift, Joe 2026-10-15); a card that is a link keeps its lift (a.p-card above). */
/* Scrolling, expansion and page transitions */
html {scroll-behavior:smooth;}
[id] {scroll-margin-top:104px;}
details::details-content {block-size:0;overflow:clip;transition:block-size .25s ease,content-visibility .25s allow-discrete;}
details[open]::details-content {block-size:auto;}
@view-transition {navigation:auto;}
::view-transition-old(root),::view-transition-new(root) {animation-duration:180ms;}
@media (prefers-reduced-motion:reduce) {
  html {scroll-behavior:auto;}
  *,*::before,*::after {animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;}
  .p-sig .p-sig-line {stroke-dashoffset:0;}
  .p-sig .p-sig-dev {opacity:1;}
  .btn:hover,.btn:active {transform:none;}
  .p-signature ul::before {animation:none;}
}

/* Who NexVerto supports (Joe, 2026-10-13) */
.p-proof-note {margin:16px 0 0;color:var(--ink-muted);font-size:1rem;line-height:1.6;}

/* ---- Visual production layer (skill nexverto-visual-production, 2026-10-13) ---- */
:root {--dur-1:160ms;--dur-2:240ms;--dur-3:400ms;--dur-4:700ms;--ease-out:cubic-bezier(.2,.7,.2,1);}
[data-reveal] {transition:opacity var(--dur-3) var(--ease-out),transform var(--dur-3) var(--ease-out);}
@media (scripting: enabled) and (prefers-reduced-motion: no-preference) {
  [data-reveal]:not(.is-in) {opacity:0;transform:translateY(14px);}
  .nv-ws:not(.is-in) .nv-ws-cards li {opacity:0;transform:translateY(10px);}
  html:not(.nv-motion) [data-reveal]:not(.is-in), html:not(.nv-motion) .nv-ws:not(.is-in) .nv-ws-cards li {animation:nv-failsafe 0s 2.5s forwards;}
}
@keyframes nv-failsafe {to {opacity:1;transform:none;}}
/* The Platform and Studio mocks no longer fade in as a block (visual lift, Joe 2026-10-15); the workspace tiles still rise and the phone
   still rises into place. */
@media (scripting: enabled) and (prefers-reduced-motion: no-preference) {
  .nv-ws[data-reveal]:not(.is-in),.nv-devices[data-reveal]:not(.is-in) {opacity:1;transform:none;}
}

/* Home hero: live status cards and a soft screen glow around the panel */
.nv-hero-stage {position:relative;isolation:isolate;}
.nv-toast {position:absolute;z-index:2;display:flex;align-items:center;gap:12px;padding:10px 16px 10px 10px;border:1px solid var(--border-strong);border-radius:14px;background:var(--surface);box-shadow:var(--shadow);pointer-events:none;white-space:nowrap;}
.nv-toast b {display:block;font-weight:600;font-size:14px;line-height:1.3;color:var(--ink);}
.nv-toast small {display:block;font-size:13px;line-height:1.35;color:var(--ink-muted);}
.nv-toast-ico {display:grid;place-items:center;width:36px;height:36px;border-radius:10px;background:color-mix(in srgb,var(--brand) 20%,transparent);color:var(--accent);flex:none;}
.nv-toast-ico .ico {width:18px;height:18px;}
.nv-toast-call {top:-48px;left:-56px;}
.nv-toast-check {bottom:-48px;right:-24px;}
/* The toasts are solid (no glass, no glow) and no longer fade in (visual lift, Joe 2026-10-15): each is written in from the left once the
   NexVerto line has drawn, at 1.1 s and 1.4 s. They wait hidden (visibility, so site.js still sees them arrive) and the wipe runs only
   once they are in view; when it ends they rest unclipped. No script, a failed script and reduced motion show them in place. */
@media (scripting: enabled) and (prefers-reduced-motion: no-preference) {
  .nv-toast[data-reveal]:not(.is-in) {opacity:1;transform:none;visibility:hidden;}
  .nv-toast-call[data-reveal].is-in {animation:nv-toast-in .45s var(--ease-out) 1.1s backwards;}
  .nv-toast-check[data-reveal].is-in {animation:nv-toast-in .45s var(--ease-out) 1.4s backwards;}
  html:not(.nv-motion) .nv-toast[data-reveal]:not(.is-in) {animation:nv-failsafe-show 0s 2.5s forwards;}
}
@keyframes nv-toast-in {from {clip-path:inset(0 100% 0 0 round 14px);} to {clip-path:inset(-40px -40px -56px -40px round 14px);}}
@keyframes nv-failsafe-show {to {visibility:visible;}}
@media (max-width:1023px) {.nv-toast {display:none;}}

/* Automation: an example call, scripted from the real main line */
.nv-voice {display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);gap:clamp(32px,6vw,88px);align-items:center;}
.nv-voice-copy p {margin-top:16px;font-size:18px;line-height:1.6;color:var(--ink-muted);max-width:40ch;}
.nv-voice-copy .p-actions {margin-top:24px;}
.nv-voice-copy .btn .ico {width:18px;height:18px;}
.nv-demo {margin:0;padding:20px;border:1px solid var(--border-strong);border-radius:20px;background:var(--surface);box-shadow:var(--shadow-lift);}
.nv-demo-cap {display:flex;align-items:center;gap:10px;margin-bottom:16px;font-size:14px;font-weight:600;color:var(--ink-muted);}
.nv-live {width:8px;height:8px;border-radius:50%;background:#2fbf71;box-shadow:0 0 0 4px color-mix(in srgb,#2fbf71 22%,transparent);flex:none;}
.nv-demo-steps {list-style:none;margin:0;padding:0;display:grid;gap:10px;}
.nv-demo-steps li {display:grid;grid-template-columns:88px minmax(0,1fr);gap:12px;align-items:baseline;padding:12px 14px;border:1px solid var(--border);border-radius:12px;background:color-mix(in srgb,var(--bg) 45%,var(--surface));font-size:15px;line-height:1.5;color:var(--ink);transition:opacity var(--dur-2) var(--ease-out),transform var(--dur-2) var(--ease-out);}
.nv-demo-steps li.nv-demo-out {border-color:color-mix(in srgb,var(--brand) 60%,var(--border));}
.nv-demo-who {font-size:12px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--accent);}
.nv-demo.is-live [data-at]:not(.is-on) {opacity:0;transform:translateY(8px);}
.nv-demo-controls {display:flex;gap:8px;margin-top:16px;}
.nv-demo:not(.is-live) .nv-demo-controls {display:none;}
@media (max-width:899px) {.nv-voice {grid-template-columns:minmax(0,1fr);}}
@media (max-width:479px) {.nv-demo-steps li {grid-template-columns:minmax(0,1fr);gap:2px;}}

/* Business platform: the workspace, recreated from the real portal layout */
.nv-ws {overflow:hidden;border:1px solid var(--border-strong);border-radius:18px;background:var(--surface);box-shadow:var(--shadow-lift);}
.nv-ws-bar {display:flex;align-items:center;gap:14px;padding:10px 14px;border-bottom:1px solid var(--border);}
.nv-ws-dots {display:flex;gap:6px;}
.nv-ws-dots i {width:9px;height:9px;border-radius:50%;background:var(--border-strong);}
.nv-ws-lock {display:inline-flex;align-items:center;gap:6px;padding:4px 10px;border-radius:999px;background:color-mix(in srgb,var(--ink) 7%,transparent);font-size:13px;color:var(--ink-muted);}
.nv-ws-lock .ico {width:14px;height:14px;}
.nv-ws-body {display:grid;grid-template-columns:72px minmax(0,1fr);}
.nv-ws-side {display:grid;align-content:start;gap:10px;padding:16px 14px;border-right:1px solid var(--border);}
.nv-ws-side i {height:8px;border-radius:4px;background:var(--border);}
.nv-ws-side i.is-on {background:color-mix(in srgb,var(--brand) 70%,transparent);}
.nv-ws-cards {list-style:none;margin:0;padding:14px;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;}
.nv-ws-cards li {padding:14px;border:1px solid var(--border);border-radius:12px;background:color-mix(in srgb,var(--bg) 40%,var(--surface));transition:opacity var(--dur-3) var(--ease-out),transform var(--dur-3) var(--ease-out);}
.nv-ws-cards li:nth-child(2) {transition-delay:.1s;} .nv-ws-cards li:nth-child(3) {transition-delay:.2s;} .nv-ws-cards li:nth-child(4) {transition-delay:.3s;}
.nv-ws-cards b {display:block;font-weight:600;font-size:14px;line-height:1.3;color:var(--ink);}
.nv-ws-cards span {display:block;margin-top:6px;font-size:13px;line-height:1.45;color:var(--ink-muted);}
.nv-ws-cards .nv-ws-add {border-style:dashed;background:transparent;}
.nv-ws-foot {display:flex;align-items:center;justify-content:space-between;gap:12px;margin:0;padding:12px 16px;border-top:1px solid var(--border);font-size:14px;color:var(--ink-dim);}
.nv-ws-foot a {font-weight:600;--link-ink:var(--accent);white-space:nowrap;}
@media (max-width:639px) {.nv-ws-body {grid-template-columns:minmax(0,1fr);}.nv-ws-side {display:none;}.nv-ws-cards {grid-template-columns:minmax(0,1fr);}}

/* Custom systems: NexVerto's own website and phone line */
.nv-devices {position:relative;margin:0;padding:0 0 56px;}
.nv-browser {overflow:hidden;margin-right:72px;border:1px solid var(--border-strong);border-radius:16px;background:var(--surface);box-shadow:var(--shadow-lift);}
.nv-browser-bar {display:flex;align-items:center;gap:14px;padding:10px 14px;border-bottom:1px solid var(--border);}
.nv-browser-url {padding:4px 12px;border-radius:999px;background:color-mix(in srgb,var(--ink) 7%,transparent);font-size:13px;color:var(--ink-muted);}
.nv-browser-page {display:grid;gap:10px;justify-items:start;padding:24px 22px 28px;}
.nv-mini-h {margin:4px 0;font:500 24px/1.15 var(--serif);letter-spacing:-.02em;color:var(--ink);max-width:16ch;}
.nv-sk {display:block;width:78%;height:8px;border-radius:4px;background:var(--border);}
.nv-sk-short {width:52%;}
.nv-sk-mark {width:64px;height:10px;background:color-mix(in srgb,var(--verto) 70%,transparent);}
.nv-mini-btn {margin-top:6px;padding:8px 14px;border-radius:10px;background:var(--brand);color:#fff;font-size:13px;font-weight:600;}
.nv-phone {position:absolute;right:0;bottom:0;width:200px;padding:16px 14px 18px;border:1px solid var(--border-strong);border-radius:26px;background:var(--bg);box-shadow:var(--shadow-lift);}
.nv-phone-title {margin:0 0 10px;font-size:13px;font-weight:600;color:var(--ink-muted);text-align:center;}
.nv-phone ol {list-style:none;margin:0;padding:0;display:grid;gap:6px;}
.nv-phone li {display:flex;align-items:center;gap:10px;padding:8px 10px;border:1px solid var(--border);border-radius:10px;font-size:13px;color:var(--ink);}
.nv-phone li b {display:grid;place-items:center;width:22px;height:22px;border-radius:50%;background:color-mix(in srgb,var(--brand) 22%,transparent);color:var(--accent);font-size:12px;}
.nv-devices-cap {margin:14px 0 0;font-size:14px;color:var(--ink-dim);}
.nv-devices[data-reveal] .nv-phone {transition:transform var(--dur-4) var(--ease-out) .15s;}
@media (scripting: enabled) and (prefers-reduced-motion: no-preference) {.nv-devices:not(.is-in) .nv-phone {transform:translateY(18px);}}
@media (max-width:479px) {.nv-browser {margin-right:0;}.nv-phone {position:relative;width:min(220px,80%);margin:-36px 0 0 auto;}.nv-devices {padding-bottom:0;}}
.nv-voice-copy h2 {font-size:clamp(32px,3.6vw,48px);line-height:1.1;}
.nv-devices-cap {max-width:calc(100% - 232px);}
@media (max-width:479px) {.nv-devices-cap {max-width:none;}}

/* Business in a box (Joe, 2026-10-15): the ad landing page /business-in-a-box. Every rule is scoped to body.p-biab and kept in this
   one block. The page's one motion is the box opening as it comes into view: the lid lifts on its hinge, the five pieces rise, and the lid
   settles flush again. At rest the lid is a flush 7 px brand edge that never passes the box edges; reduced motion, or no script,
   shows only that resting state. The box is one surface whose pieces share
   hairline walls, never a row of separate cards. */
body.p-biab .biab-hero {padding-block:80px 56px;}
body.p-biab .biab-hero h1 {font-size:clamp(38px,4.8vw,68px);line-height:1.05;}
body.p-biab .biab-hero h1 span {display:block;}
body.p-biab .biab-hero h1 .biab-h-two {color:var(--accent);}
body.p-biab .biab-hero-foot {display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:end;gap:24px 64px;margin-top:40px;padding-top:32px;border-top:1px solid var(--border);}
body.p-biab .biab-hero .p-lede {max-width:46ch;font-size:20px;line-height:1.6;}
body.p-biab .biab-act {display:grid;justify-items:start;gap:12px;}
body.p-biab .biab-note {font-size:15px;line-height:1.5;color:var(--ink-dim);}
body.p-biab .biab-inside {padding-top:32px;}
body.p-biab .biab-head {display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:end;gap:12px 64px;margin-bottom:56px;}
body.p-biab .biab-head h2 {font-size:clamp(32px,3.6vw,48px);line-height:1.1;}
body.p-biab .biab-head p {justify-self:end;max-width:44ch;font-size:18px;line-height:1.6;}
body.p-biab .biab-box {position:relative;border:1px solid var(--border-strong);border-radius:6px 6px 24px 24px;background:var(--surface);box-shadow:var(--shadow-lift);}
body.p-biab .biab-lid {position:absolute;top:-1px;left:-1px;right:-1px;height:7px;border-radius:6px 6px 0 0;background:var(--ink);transform-origin:0 100%;}
body.p-biab .biab-contents {list-style:none;margin:0;padding:8px 0 0;display:grid;grid-template-columns:minmax(0,1fr);}
body.p-biab .biab-contents li {display:grid;grid-template-columns:28px minmax(0,1fr);align-content:start;gap:8px 16px;padding:24px 20px;transition:opacity 520ms var(--ease-out),transform 520ms var(--ease-out);}
body.p-biab .biab-contents li + li {border-top:1px solid var(--border);}
body.p-biab .biab-contents li > .ico {grid-row:1 / span 3;width:28px;height:28px;color:var(--accent);}
body.p-biab .biab-contents h3 {font:600 21px/1.25 var(--serif);letter-spacing:-.02em;}
body.p-biab .biab-contents p {font-size:16px;line-height:1.6;max-width:44ch;}
body.p-biab .biab-more {display:inline-flex;align-items:center;justify-self:start;gap:8px;min-height:44px;font-size:15px;font-weight:600;--link-ink:var(--accent);}
body.p-biab .biab-more .ico {width:18px;height:18px;transition:transform .2s var(--ease-out);}
body.p-biab .biab-more:is(:hover,:focus-visible) .ico {transform:translateX(4px);}
body.p-biab .biab-more:active .ico {transform:translateX(6px);}
@media (min-width:700px) and (max-width:1023px) {
  body.p-biab .biab-contents {grid-template-columns:repeat(2,minmax(0,1fr));}
  body.p-biab .biab-contents li:nth-child(2) {border-top:0;}
  body.p-biab .biab-contents li:nth-child(even) {border-left:1px solid var(--border);}
  body.p-biab .biab-contents li:nth-child(5) {grid-column:1 / -1;}
}
@media (min-width:700px) {
  body.p-biab .biab-contents li {grid-template-columns:minmax(0,1fr);gap:12px;padding:32px 32px 24px;}
  body.p-biab .biab-contents li > .ico {grid-row:auto;margin-bottom:4px;}
  body.p-biab .biab-contents h3 {font-size:22px;}
}
@media (min-width:1024px) {
  body.p-biab .biab-contents {grid-template-columns:repeat(6,minmax(0,1fr));}
  body.p-biab .biab-contents li {grid-column:span 2;grid-template-rows:auto auto 1fr auto;}
  body.p-biab .biab-contents li:nth-child(n+4) {grid-column:span 3;}
  body.p-biab .biab-contents li:nth-child(2),body.p-biab .biab-contents li:nth-child(3) {border-top:0;}
  body.p-biab .biab-contents li:nth-child(2),body.p-biab .biab-contents li:nth-child(3),body.p-biab .biab-contents li:nth-child(5) {border-left:1px solid var(--border);}
}
@media (scripting: enabled) and (prefers-reduced-motion: no-preference) {
  body.p-biab .biab-box[data-reveal]:not(.is-in) {opacity:1;transform:none;animation:none;}
  html.nv-motion body.p-biab .biab-box.is-in .biab-lid {animation:biab-lid 1000ms var(--ease-out) both;}
  html.nv-motion body.p-biab .biab-box:not(.is-in) .biab-contents > li {opacity:0;transform:translateY(16px);}
  html.nv-motion body.p-biab .biab-box.is-in .biab-contents > li:nth-child(n) {transition-delay:calc(280ms + 40ms * var(--biab-i,0));}
}
@keyframes biab-lid {0%,100% {transform:none;} 40% {transform:translateY(-12px) rotate(-1.2deg);}}
body.p-biab .biab-contents > li:nth-child(2) {--biab-i:1;}
body.p-biab .biab-contents > li:nth-child(3) {--biab-i:2;}
body.p-biab .biab-contents > li:nth-child(4) {--biab-i:3;}
body.p-biab .biab-contents > li:nth-child(5) {--biab-i:4;}
body.p-biab .biab-start {display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);gap:48px 72px;align-items:start;}
body.p-biab .biab-start h2 {max-width:14ch;font-size:clamp(32px,3.4vw,46px);line-height:1.1;}
body.p-biab .biab-path {list-style:none;display:grid;gap:32px;margin:40px 0 0;padding:0;}
body.p-biab .biab-path li {position:relative;padding-left:40px;}
body.p-biab .biab-path li::before {content:"";position:absolute;left:0;top:4px;width:16px;height:16px;border:2px solid var(--accent);border-radius:50%;background:var(--bg);}
body.p-biab .biab-path li:first-child::before {background:var(--accent);}
body.p-biab .biab-path li:not(:last-child)::after {content:"";position:absolute;left:7px;top:22px;bottom:-34px;width:2px;border-radius:2px;background:linear-gradient(var(--accent),var(--border-strong));}
body.p-biab .biab-path b {display:block;font:600 18px/1.4 var(--sans);color:var(--ink);}
body.p-biab .biab-path span {display:block;margin-top:4px;max-width:40ch;font-size:16px;line-height:1.6;color:var(--ink-muted);}
body.p-biab .biab-start .signup-panel {padding:32px;border:1px solid var(--border-strong);border-radius:20px;background:var(--surface);box-shadow:var(--shadow);}
body.p-biab .lead-permission a,body.p-biab .call-option a {display:inline-flex;align-items:center;min-height:24px;}
@media (max-width:1023px) {
  body.p-biab .biab-hero-foot,body.p-biab .biab-head,body.p-biab .biab-start {grid-template-columns:minmax(0,1fr);}
  body.p-biab .biab-head p {justify-self:start;}
}
@media (max-width:700px) {
  body.p-biab .biab-hero {padding-block:48px 40px;}
  body.p-biab .biab-hero-foot {margin-top:28px;padding-top:24px;}
  body.p-biab .biab-hero .p-lede {font-size:18px;}
  body.p-biab .biab-act,body.p-biab .biab-act .btn {width:100%;}
  body.p-biab .biab-head {margin-bottom:40px;}
  body.p-biab .biab-start .signup-panel {padding:22px;}
}

/* ---- Interaction polish (2026-10-13): reveals, pointer light, accordions, snap rows ---- */
@media (prefers-reduced-motion: no-preference) {
  .nv-pre {transition:opacity .55s var(--ease-out) calc(var(--i,0) * 70ms),transform .55s var(--ease-out) calc(var(--i,0) * 70ms);}
  .nv-pre:not(.is-in) {opacity:0;transform:translateY(18px);}
  /* Visual lift (Joe, 2026-10-15): the fade-up belongs to Home (and /start) alone; on every other page each block is simply there. */
  body:not(.p-home,.p-start) .nv-pre:not(.is-in) {opacity:1;transform:none;}
  /* On Home (and /start) the booking block is simply there too; only the protected routes section keeps its arrival (visual lift, Joe 2026-10-15). */
  .p-book.nv-pre:not(.is-in) {opacity:1;transform:none;}
  .p-faq details[open] > :not(summary) {animation:nv-open .35s var(--ease-out);}
}
@keyframes nv-open {from {opacity:0;transform:translateY(-4px);} to {opacity:1;transform:none;}}
/* Pointer light only on the product mocks: the workspace tiles and the call transcript rows (visual lift, Joe 2026-10-15). */
@media (hover:hover) and (pointer:fine) {
  .nv-ws-cards li:hover,.nv-demo-steps li:hover {background-image:radial-gradient(380px circle at var(--mx,50%) var(--my,50%),color-mix(in srgb,var(--accent) 9%,transparent),transparent 64%);}
  .nv-ws-cards li:hover {border-color:var(--border-strong);}
}
.p-faq summary::after {transition:transform .28s var(--ease-out);}
.p-faq details[open] summary::after {transform:rotate(180deg);}
.p-faq summary:focus-visible {outline:3px solid var(--accent);outline-offset:3px;border-radius:12px;}
@media (max-width:640px) {
  /* Visual lift (Joe, 2026-10-15): the swipe row is Pricing's rate cards alone; every other grid stacks on phones. */
  #rates .p-grid-3:has(> .p-card:nth-child(3)) {grid-template-columns:none;grid-auto-flow:column;grid-auto-columns:84%;gap:14px;overflow-x:auto;overscroll-behavior-x:contain;scroll-snap-type:x mandatory;scroll-padding-inline:16px;margin-inline:-16px;padding:4px 16px 14px;scrollbar-width:none;}
  #rates .p-grid-3:has(> .p-card:nth-child(3))::-webkit-scrollbar {display:none;}
  #rates .p-grid-3:has(> .p-card:nth-child(3)) > .p-card {scroll-snap-align:start;}
}

/* What each rate covers (issue #7) */
.p-incl {list-style:none;margin:4px 0 0;padding:0;display:grid;gap:8px;}
.p-incl li {display:flex;gap:10px;align-items:flex-start;font-size:15px;line-height:1.5;color:var(--ink);}
/* Pilot inclusions as short brand dashes instead of check marks (visual lift, Joe 2026-10-15); the dash sits on the first line's middle. */
.p-incl .ico {display:none;}
.p-incl li::before {content:"";flex:none;width:10px;height:2px;margin-top:calc(.75em - 1px);border-radius:2px;background:var(--accent);}

/* October special and typical build ranges (Joe, issue #7) */
.p-special {display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 14px;max-width:680px;margin-top:24px;padding:14px 18px;border:1px solid var(--border-strong);border-radius:14px;background:var(--surface);color:var(--ink-muted);font-size:16px;line-height:1.5;}
.p-special strong {color:var(--accent);font-weight:600;white-space:nowrap;}
.p-ranges {margin:0;border-top:1px solid var(--border);}
.p-range {display:grid;grid-template-columns:minmax(0,1fr) minmax(200px,auto);gap:6px 40px;align-items:center;padding:22px 0;border-bottom:1px solid var(--border);}
.p-range dt {grid-column:1;font-weight:600;font-size:18px;line-height:1.35;color:var(--ink);}
.p-range .p-range-what {grid-column:1;margin:0;font-size:16px;line-height:1.55;color:var(--ink-muted);}
.p-range .p-range-price {grid-column:2;grid-row:1 / span 2;margin:0;text-align:right;font:500 clamp(22px,2.2vw,28px)/1.2 var(--serif);letter-spacing:-.02em;color:var(--ink);font-variant-numeric:tabular-nums lining-nums;}
.p-range .p-range-price span {display:block;font:400 14px/1.45 var(--sans);letter-spacing:0;color:var(--ink-dim);}
.p-scale-note {max-width:720px;margin-top:24px;font-size:16px;line-height:1.6;color:var(--ink-muted);}
@media (max-width:640px) {
  .p-range {grid-template-columns:minmax(0,1fr);gap:6px;padding:18px 0;}
  .p-range .p-range-price {grid-column:1;grid-row:auto;margin-top:6px;text-align:left;}
}

/* Two-column definition lists fold to one column on phones (320 px reflow, issue #7) */
@media (max-width:640px) {.p-work-wide {grid-template-columns:1fr;}}

/* Standalone links meet the 24 px target size (issue #7) */
.p-panel-foot a,.p-proof-link a {display:inline-flex;align-items:center;min-height:24px;}

/* Services menu (Joe, issue #7): its own panel in the top layer, never clipped by the header; solid surface, border and shadow in both themes */
.services-menu[popover] {position:fixed;inset:auto;top:var(--menu-top,76px);left:var(--menu-left,16px);margin:0;min-width:248px;padding:8px;border:1px solid var(--border-strong);border-radius:14px;background:var(--surface);color:var(--ink);box-shadow:0 18px 48px rgb(0 0 0 / .18),0 2px 6px rgb(0 0 0 / .08);overflow:visible;}
.services-menu[popover]:popover-open {display:grid;gap:2px;}
.services-menu[popover] a {display:flex;align-items:center;width:100%;min-height:44px;padding:10px 12px;border-radius:10px;font-size:15px;font-weight:500;--link-ink:var(--ink);transition:background-color .15s;}
.services-menu[popover] a:hover,.services-menu[popover] a:focus-visible {background:var(--surface-3);}
.services-menu[popover] a[aria-current=page] {background:var(--tint);}
@media (prefers-reduced-motion:no-preference) {
  .services-menu[popover] {opacity:0;translate:0 -6px;transition:opacity .18s ease,translate .18s ease,display .18s allow-discrete,overlay .18s allow-discrete;}
  .services-menu[popover]:popover-open {opacity:1;translate:0 0;}
  @starting-style {.services-menu[popover]:popover-open {opacity:0;translate:0 -6px;}}
}
.nav-group-label[aria-expanded=true] {background:var(--surface-3);color:var(--ink);}
.nav-group-label[aria-expanded=true]::after {transform:translateY(1px) rotate(225deg);}
/* Phone menu: services grouped under their own label */
.navigation-sheet nav .sheet-group {display:flex;flex-direction:column;gap:4px;padding-bottom:12px;margin-bottom:8px;border-bottom:1px solid var(--border);}
.navigation-sheet nav .sheet-label {margin:0;padding:12px 14px 4px;font:600 14px/1.4 var(--sans);letter-spacing:0;color:var(--ink-dim);}
.navigation-sheet nav a.sheet-child {min-height:52px;font-size:21px;}

/* Arial-matched fallbacks for Geist and Inter, measured on the site's own text, so line breaks hold if the web fonts arrive late (issue #7) */
@font-face {font-family:"Geist Fallback";src:local("Liberation Sans"),local("Arial");font-style:normal;font-weight:100 500;size-adjust:105.8%;ascent-override:94.99%;descent-override:27.88%;line-gap-override:0%;}
@font-face {font-family:"Geist Fallback";src:local("Liberation Sans Bold"),local("Arial Bold");font-style:normal;font-weight:600 900;size-adjust:100.6%;ascent-override:99.91%;descent-override:29.33%;line-gap-override:0%;}
@font-face {font-family:"Inter Fallback";src:local("Liberation Sans"),local("Arial");font-style:normal;font-weight:100 400;size-adjust:106.9%;ascent-override:90.64%;descent-override:22.54%;line-gap-override:0%;}
@font-face {font-family:"Inter Fallback";src:local("Liberation Sans"),local("Arial");font-style:normal;font-weight:500;size-adjust:108.13%;ascent-override:89.62%;descent-override:22.29%;line-gap-override:0%;}
@font-face {font-family:"Inter Fallback";src:local("Liberation Sans Bold"),local("Arial Bold");font-style:normal;font-weight:600 900;size-adjust:101.38%;ascent-override:95.58%;descent-override:23.77%;line-gap-override:0%;}

/* Section snapping on the marketing pages (Joe, 2026-10-15). Proximity, never mandatory: a long section is never trapped or cut and a
   visitor who stops between sections stays where they stopped. Section tops land just below the sticky header (scroll-padding-top).
   A page opts in with body.snap; the blog, policy and terms pages, text alerts and the forms do not. Smooth anchor scrolling is the
   html rule above, off under prefers-reduced-motion. */
html:has(body.snap) {scroll-snap-type:y proximity;}
body.snap main > section {scroll-snap-align:start;}
body.snap main > section,body.snap [id] {scroll-margin-top:0;}
@media (max-width:380px) {html {scroll-padding-top:148px;}}
