/* Therapy Visibility, late 2026. The style of the Practice Visibility page, shared by the other public pages:
   big type, a faint 16px dot grid, flat sections, square markers, one clear next step.
   Load it after the older stylesheets and add class="tv-page" to <body>. Pair with tv-pixels.js for data-cells. */
.tv-page {
  --tv-ink:#142744;
  --tv-soft:#4b5a72;
  --tv-blue:#164de5;
  --tv-blue-hover:#1143cc;
  --tv-line:#cdd7e7;
  --tv-paper:#f7f9fc;
  --tv-card:#ffffff;
  --tv-night:#142d58;
  --tv-night-ink:#eef3fc;
  --tv-night-soft:#a9b8cd;
  --tv-band:#164de5;
  --tv-dots:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16'%3E%3Crect width='2' height='2' fill='%23164de5' fill-opacity='.11'/%3E%3C/svg%3E");
  --tv-cell:#164de5;
  --tv-hero-end:clamp(88px,9vw,136px);
  /* The system: two h1 sizes, four h2 roles, one large h3, one column split. Pages use these, never their own sizes. */
  --tv-h1-flagship:clamp(3.4rem,7.4vw,7.25rem);
  --tv-h1-inner:clamp(3.1rem,6.6vw,6.75rem);
  --tv-h2-display:clamp(2.75rem,5.6vw,5.25rem);
  --tv-h2-section:clamp(2.25rem,4.2vw,3.75rem);
  --tv-h2-statement:clamp(1.875rem,3.7vw,3.5rem);
  --tv-h2-reading:clamp(1.75rem,2.6vw,2.25rem);
  --tv-h3-lg:clamp(1.625rem,2.4vw,2.125rem);
  --tv-split:minmax(0,1.2fr) minmax(0,.8fr);
  --tv-split-mirror:minmax(0,.8fr) minmax(0,1.2fr);
  --tv-split-gap:6%;
  --tv-field-line:#8a97aa;
  background:var(--tv-paper);
  color:var(--tv-ink);
}
@media screen and (prefers-color-scheme:dark) {
  .tv-page {
    --tv-ink:#eef3fc;
    --tv-soft:#b3c1d5;
    --tv-blue:#8eafff;
    --tv-blue-hover:#a9c2ff;
    --tv-line:#34455d;
    --tv-paper:#0e1724;
    --tv-card:#142034;
    --tv-band:#1c44b8;
    --tv-night:#172438;
    --tv-dots:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16'%3E%3Crect width='2' height='2' fill='%238eafff' fill-opacity='.11'/%3E%3C/svg%3E");
    --tv-cell:#8eafff;
    --tv-field-line:#5d6f89;
  }
}
.tv-page main { overflow-x:clip; }

/* Surfaces. Only heroes and the blue and navy bands reveal a dot grid, under a mouse (tv-pixels.js); each band holds its own canvas. */
.tv-dark, .tv-band { position:relative; isolation:isolate; }
.tv-dark {
  --tv-dots:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16'%3E%3Crect width='2' height='2' fill='%23ffffff' fill-opacity='.13'/%3E%3C/svg%3E");
  --tv-cell:#ffffff;
  background-color:var(--tv-night); color:var(--tv-night-ink);
}
.tv-band {
  --tv-dots:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16'%3E%3Crect width='2' height='2' fill='%23ffffff' fill-opacity='.12'/%3E%3C/svg%3E");
  --tv-cell:#ffffff;
  background-color:var(--tv-band); color:#fff;
}
.tv-page [data-cells] { position:relative; isolation:isolate; overflow:clip; background-position:0 100%; }
/* No divider lines between sections (Diego, 22 October 2026). Older stylesheets still draw some. */
.tv-page :is(.feature-collection, .about-block, .fair-terms, .start-doors, .faq-signpost, .review-scope) { border-top:0; }

/* Sections and type */
.tv-section { padding:clamp(80px,9vw,128px) var(--g); }
.tv-hero {
  display:grid; grid-template-columns:var(--tv-split); gap:var(--tv-split-gap); align-items:start;
  padding:clamp(40px,6vw,88px) var(--g) var(--tv-hero-end);
}
.tv-hero-solo { grid-template-columns:minmax(0,1fr); }
.tv-page .tv-h1 {
  margin:0 0 clamp(32px,4vw,52px);
  font-size:var(--tv-h1-inner); line-height:.95; font-weight:500; letter-spacing:-.055em; word-spacing:.06em;
  max-width:11em;
}
.tv-page .tv-h1-mid { font-size:var(--tv-h1-inner); line-height:.95; max-width:11em; }
.tv-mark {
  color:var(--tv-blue);
}
.tv-page .tv-h2 {
  margin:0;
  font-size:var(--tv-h2-display); line-height:.98; font-weight:500; letter-spacing:-.05em; word-spacing:.06em;
  max-width:14ch;
}
.tv-page .tv-statement {
  margin:0 0 clamp(48px,6vw,80px);
  font-size:var(--tv-h2-statement); line-height:1.1; font-weight:500; letter-spacing:-.035em; word-spacing:.04em;
  max-width:24ch;
}
.tv-page .tv-sub { margin:0 0 12px; font-size:clamp(1.25rem,1.7vw,1.5rem); line-height:1.3; font-weight:650; letter-spacing:-.02em; max-width:30ch; }
.tv-page .tv-lead { margin:0 0 18px; font-size:1.0625rem; line-height:1.6; color:var(--tv-soft); max-width:50ch; }
.tv-page .tv-note { margin:0; font-size:.875rem; line-height:1.55; color:var(--tv-soft); max-width:70ch; }
.tv-dark :is(.tv-lead,.tv-note) { color:var(--tv-night-soft); }
.tv-band :is(.tv-lead,.tv-note) { color:#dbe4ff; }
.tv-head {
  display:grid; grid-template-columns:var(--tv-split); gap:var(--tv-split-gap); align-items:end;
  margin-bottom:clamp(48px,6vw,80px);
}
.tv-page .tv-head > p { margin:0; font-size:1.0625rem; line-height:1.6; color:var(--tv-soft); max-width:44ch; }
.tv-dark .tv-head > p { color:var(--tv-night-soft); }
.tv-band .tv-head > p { color:#dbe4ff; }
.tv-actions { display:flex; flex-wrap:wrap; align-items:center; gap:22px 34px; }

/* Lists: name plus one sentence, with a small square marker */
.tv-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:clamp(40px,4.5vw,60px) 5%; margin:0; padding:0; list-style:none; }
.tv-grid-2 { grid-template-columns:repeat(2,minmax(0,1fr)); }
.tv-page .tv-grid h3 { margin:0 0 8px; font-size:1.4375rem; font-weight:600; letter-spacing:-.025em; line-height:1.2; }
.tv-grid h3::before { content:""; display:block; width:10px; height:10px; margin-bottom:16px; background:var(--tv-blue); }
:is(.tv-dark,.tv-band) .tv-grid h3::before { background:currentColor; }
.tv-page .tv-grid p { margin:0; font-size:.9688rem; line-height:1.55; color:var(--tv-soft); max-width:36ch; }
.tv-dark .tv-grid p { color:var(--tv-night-soft); }
.tv-band .tv-grid p { color:#dbe4ff; }
.tv-steps { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:32px 5%; margin:0; padding:0; list-style:none; }
.tv-steps li { border-top:1px solid var(--tv-line); padding-top:22px; }
.tv-band .tv-steps li { border-top-color:rgba(255,255,255,.3); }
.tv-dark .tv-steps li { border-top-color:#34455d; }
.tv-page .tv-when { display:flex; align-items:center; gap:10px; margin:0 0 14px; font-size:.8125rem; font-weight:700; color:var(--tv-blue); }
.tv-when::before { content:""; width:9px; height:9px; background:currentColor; flex:none; }
:is(.tv-dark,.tv-band) .tv-when { color:inherit; }
.tv-page .tv-steps h3 { margin:0 0 8px; font-size:1.4375rem; font-weight:600; letter-spacing:-.025em; line-height:1.2; }
.tv-page .tv-steps li > p:last-child { margin:0; font-size:.9688rem; line-height:1.55; color:var(--tv-soft); max-width:36ch; }
.tv-dark .tv-steps li > p:last-child { color:var(--tv-night-soft); }
.tv-band .tv-steps li > p:last-child { color:#dbe4ff; }
.tv-rows { margin:0; padding:0; list-style:none; }
.tv-rows > * { display:grid; grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr); gap:12px 6%; padding:26px 0; border-top:1px solid var(--tv-line); }
.tv-rows > :last-child { border-bottom:1px solid var(--tv-line); }
.tv-page .tv-rows :is(h3,dt) { margin:0; font-size:1.3125rem; font-weight:600; letter-spacing:-.02em; line-height:1.25; }
.tv-page .tv-rows :is(p,dd) { margin:0; font-size:1rem; line-height:1.6; color:var(--tv-soft); }

/* Buttons and links */
.tv-go {
  display:inline-flex; align-items:center; gap:18px;
  min-height:52px; box-sizing:border-box; padding:0 10px 0 22px;
  border:0; border-radius:4px;
  background:#164de5; color:#fff;
  font:inherit; font-size:1.0625rem; font-weight:650; letter-spacing:-.01em; line-height:1.2;
  text-decoration:none; cursor:pointer;
  transition:background-color var(--sc-d-fast,160ms) ease, transform var(--sc-d-fast,160ms) ease;
}
.tv-go:hover { background:#1143cc; color:#fff; }
.tv-go:active { transform:scale(.97); transition-duration:60ms; }
.tv-go-box { display:grid; place-items:center; flex:none; width:30px; height:30px; background:#fff; color:#164de5; border-radius:2px; }
.tv-go-box svg {
  width:12px; height:12px; fill:none; stroke:currentColor; stroke-width:1.7; stroke-linecap:square; stroke-linejoin:miter;
  transition:transform var(--sc-d-fast,160ms) cubic-bezier(.23,1,.32,1);
}
.tv-go:hover .tv-go-box svg { transform:translateX(2px); }
.tv-go-light { background:#fff; color:#123fbf; }
.tv-go-light:hover { background:#e8eeff; color:#123fbf; }
.tv-go-light .tv-go-box { background:#164de5; color:#fff; }
.tv-link {
  color:inherit; font-size:.9375rem; font-weight:650;
  text-decoration:underline; text-decoration-thickness:1px; text-underline-offset:.22em;
}
.tv-link:hover { color:var(--tv-blue); text-decoration-thickness:2px; }
:is(.tv-dark,.tv-band) .tv-link:hover { color:inherit; }
/* Links inside running copy, outside long reading pages */
.tv-inline-link { color:inherit; text-decoration:underline; text-decoration-thickness:1px; text-underline-offset:.2em; }
.tv-inline-link:hover { color:var(--tv-blue); text-decoration-thickness:2px; }
:is(.tv-dark,.tv-band) .tv-inline-link:hover { color:inherit; }
.tv-person { display:flex; align-items:center; gap:14px; }
.tv-person img { width:52px; height:52px; object-fit:cover; flex:none; background:#d8e1ef; }
.tv-page .tv-person p { display:grid; gap:2px; margin:0; font-size:.9375rem; line-height:1.35; }
.tv-person span { color:var(--tv-soft); font-size:.875rem; }
.tv-band .tv-person span { color:#d4defc; }
.tv-dark .tv-person span { color:var(--tv-night-soft); }
.tv-person a { color:inherit; font-weight:650; text-decoration:underline; text-decoration-thickness:1px; text-underline-offset:.22em; }
.tv-person a:hover { color:var(--tv-blue); }
:is(.tv-dark,.tv-band) .tv-person a:hover { color:inherit; text-decoration-thickness:2px; }

/* Long reading: blog posts and legal pages */
.tv-prose { max-width:68ch; font-size:1.125rem; line-height:1.7; }
.tv-page .tv-prose :is(h2,h3) { margin:2.2em 0 .6em; font-weight:500; letter-spacing:-.035em; line-height:1.15; }
.tv-page .tv-prose h2 { font-size:var(--tv-h2-reading); }
.tv-page .tv-prose h3 { font-size:1.375rem; letter-spacing:-.02em; }
.tv-page .tv-prose p { margin:0 0 1.1em; }
.tv-prose a { color:var(--tv-blue); text-decoration:underline; text-decoration-thickness:1px; text-underline-offset:.2em; }
.tv-prose ul { padding:0; list-style:none; }
.tv-prose ul > li { position:relative; padding-left:24px; margin:0 0 .5em; }
.tv-prose ul > li::before { content:""; position:absolute; left:2px; top:.62em; width:7px; height:7px; background:var(--tv-blue); }

/* Tablet */
@media (max-width:1000px) {
  .tv-hero, .tv-head { grid-template-columns:1fr; gap:40px; }
  .tv-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
}

/* Phone */
@media (max-width:640px) {
  .tv-page { --tv-hero-end:72px; --g:16px; --tv-h1-flagship:clamp(3.1rem,15.5vw,4.25rem); --tv-h1-inner:clamp(2.75rem,13vw,3.75rem); }
  .tv-hero { padding:24px 16px var(--tv-hero-end); }
  .tv-page .tv-h1 { margin-bottom:28px; }
  .tv-section { padding-left:16px; padding-right:16px; }
  .tv-grid, .tv-grid-2, .tv-steps { grid-template-columns:1fr; }
  .tv-rows > * { grid-template-columns:1fr; }
  .tv-actions { gap:22px; }
}

@media (prefers-reduced-motion:reduce) {
  .tv-go-box svg { transition:none; }
}

/* System rules that reach the older shared stylesheets (header, footer, plan prices). */
/* Header button: a compact solid button, so it reads as the one action in the header. */
body:is(.tv-page,.pv-page) .ap-header .nav-cta { background:#142744; border-color:#142744; color:#fff; }
body:is(.tv-page,.pv-page) .ap-header .nav-cta:hover { background:#164de5; border-color:#164de5; color:#fff; }
/* Footer: the Services column starts on the same line as every right-hand column (60% of the space after the 6% gap). */
body:is(.tv-page,.pv-page) .footer-main { grid-template-columns:56.4% minmax(0,1fr) minmax(0,1fr); column-gap:6%; }
/* Prices use proportional figures, so "$119" doesn't open up around each 1. */
body:is(.tv-page,.pv-page) :is(.tvc-price, .tv-start-price, .plan-rate) strong { font-variant-numeric:lining-nums proportional-nums; }
/* Phone: the header and footer share the content's gutter. */
@media (max-width:760px) {
  body:is(.tv-page,.pv-page) .ap-header { padding-left:var(--g); padding-right:var(--g); }
  body:is(.tv-page,.pv-page) .structure-footer { padding-left:var(--g); padding-right:var(--g); }
  body:is(.tv-page,.pv-page) .footer-main { grid-template-columns:repeat(2,minmax(0,1fr)); column-gap:24px; }
}
@media (max-width:640px) {
  .pv-page { --g:16px; }
}
@media screen and (prefers-color-scheme:dark) {
  body:is(.tv-page,.pv-page) .ap-header .nav-cta { background:#eef3fc; border-color:#eef3fc; color:#142744; }
  body:is(.tv-page,.pv-page) .ap-header .nav-cta:hover { background:#8eafff; border-color:#8eafff; color:#0e1724; }
  /* Photos and screenshots dim a little so they don't glare on the dark page. */
  body:is(.tv-page,.pv-page) main img { filter:brightness(.9); }
}

/* One closing band for every page that sells or informs: heading and line on the left, the next step on the right,
   the same padding above and below. The pricing band holds both ways to begin, each with its fine print. */
.tv-page .tv-close {
  display:grid; grid-template-columns:var(--tv-split); gap:40px var(--tv-split-gap); align-items:end;
  margin:0; padding:clamp(80px,9vw,128px) var(--g);
}
.tv-page .tv-close .tv-h2 { margin:0; max-width:11ch; color:#fff; }
.tv-page .tv-close-copy > p { margin:24px 0 0; max-width:44ch; font-size:1.0625rem; line-height:1.6; color:#dbe4ff; }
.tv-page .tv-close-copy > p a,
.tv-page .tv-close-link,
.tv-page .tv-close-door p a { color:#fff; font-weight:650; text-decoration:underline; text-decoration-thickness:1px; text-underline-offset:.22em; }
.tv-page .tv-close-copy > p a:hover,
.tv-page .tv-close-link:hover,
.tv-page .tv-close-door p a:hover { color:#fff; text-decoration-thickness:2px; }
.tv-close-act { display:flex; flex-wrap:wrap; align-items:flex-start; gap:20px 32px; }
.tv-close-act :is(form, .tv-start-link) { margin:0; }
.tv-page .tv-close-link { font-size:1rem; padding:12px 0; }
.tv-close-doors { display:grid; gap:28px; }
.tv-close-door + .tv-close-door { padding-top:28px; border-top:1px solid rgba(255,255,255,.3); }
.tv-close-door form { margin:0; }
.tv-page .tv-close-door p { margin:14px 0 0; max-width:46ch; font-size:.9375rem; line-height:1.6; color:#dbe4ff; }
.tv-page .tv-close-door .tv-close-link { display:inline-block; padding:0; }
.tv-page .tv-close:has(.tv-close-doors) { align-items:start; }
@media (max-width:760px) {
  .tv-page .tv-close { grid-template-columns:1fr; gap:32px; }
  .tv-close-act { display:grid; justify-items:start; gap:8px; }
  .tv-close-act :is(form, .tv-go), .tv-close-door :is(form, .tv-go) { width:100%; }
  .tv-page .tv-close .tv-go { justify-content:space-between; }
}

/* The fine print under a "Start your website" button: what the click commits you to. */
.tv-page .tv-fine { margin:12px 0 0; max-width:46ch; font-size:.875rem; line-height:1.55; color:var(--tv-soft); }
.tv-page .tv-fine a { color:inherit; text-decoration:underline; text-decoration-thickness:1px; text-underline-offset:.2em; }
.tv-page .tv-fine a:hover { color:var(--tv-blue); }
.tv-page :is(.tv-band,.tv-dark) .tv-fine { color:#dbe4ff; }
.tv-page :is(.tv-band,.tv-dark) .tv-fine a:hover { color:#fff; text-decoration-thickness:2px; }
.tv-page .tv-close-act :is(form, .tv-start-link) .tv-fine { max-width:30ch; }
