/* Shared public typography. Load last: older page-local styles contain
   important display rules. Keep this scale authoritative across those pages. */
:root {
  --type-sans: 'Geist', ui-sans-serif, system-ui, -apple-system, sans-serif;
  --type-mono: 'Geist Mono', ui-monospace, monospace;
  --type-title: clamp(2.125rem, 1.5rem + 2.5vw, 3.625rem);
  --type-section: clamp(1.625rem, 1.4rem + 1vw, 2rem);
  --type-panel: 1.375rem;
  --type-card: 1.125rem;
  --type-lead: clamp(1rem, .94rem + .3vw, 1.125rem);
  --type-body: 1rem;
  --type-small: .875rem;
  --type-label: .75rem;
  --type-nav: .8125rem;
  --type-heading-line: 1.15;
  --type-body-line: 1.65;
  --fs-hero: var(--type-title);
  --fs-display: var(--type-section);
  --fs-h2: var(--type-panel);
  --fs-h3: var(--type-card);
  --fs-body: var(--type-body);
  --fs-micro: var(--type-label);
}
html { font-size:100%; -webkit-text-size-adjust:100%; }
body.public-type {
  font-family:var(--type-sans);
  font-size:var(--type-body);
  font-weight:400;
  line-height:var(--type-body-line);
  letter-spacing:-.005em;
}
body.public-type :is(h1,h2,h3,h4,h5,h6) {
  font-family:var(--type-sans);
  font-weight:500;
  overflow-wrap:break-word;
}
body.public-type :is(h1,.hero-title,.vx-h1,.about-h1) {
  font-size:var(--type-title)!important;
  line-height:var(--type-heading-line)!important;
  font-weight:500!important;
  letter-spacing:-.04em!important;
}
body.public-type h2 {
  font-size:var(--type-section)!important;
  line-height:1.2!important;
  font-weight:500!important;
  letter-spacing:-.03em!important;
}
body.public-type :is(h3,h4) {
  font-size:var(--type-card)!important;
  line-height:1.35!important;
  letter-spacing:-.015em!important;
}
/* Compact panels and document sections share the same intermediate scale. */
body.public-type :is(.form-step-head,.booking-details,.booking-panel,.legal-content,dialog) h2,
body.public-type .booking-appointment h3 {
  font-size:var(--type-panel)!important;
  line-height:1.3!important;
  letter-spacing:-.02em!important;
}
body.public-type :is(.hero-title,.vx-h1,.about-h1) { max-width:20ch; }
body.public-type :is(p,li,.faq-answer,.faq-a) {
  font-family:var(--type-sans);
  font-size:var(--type-body)!important;
  line-height:var(--type-body-line)!important;
  letter-spacing:-.005em;
}
body.public-type :is(.hero-sub,.vx-sub,.about-sub,.man-lead,.booking-intro > p) {
  font-size:var(--type-lead)!important;
  line-height:var(--type-body-line)!important;
  max-width:62ch;
}
body.public-type .statement-line {
  font-size:var(--type-section)!important;
  line-height:1.3!important;
  letter-spacing:-.025em;
}
body.public-type :is(.section-head p,.prod-desc,.pillar-lead,.frc-desc) {
  font-size:var(--type-body)!important;
  line-height:var(--type-body-line)!important;
}
body.public-type :is(.faq-item summary,.faq-q) {
  font-family:var(--type-sans);
  font-size:var(--type-body);
  font-weight:500;
  line-height:1.5;
  letter-spacing:-.005em;
}
body.public-type :is(.eyebrow,.pill,.foot-col h4,.form-progress-meta,.frc-tag) {
  font-family:var(--type-mono);
  font-size:var(--type-label)!important;
  font-weight:500;
  line-height:1.5!important;
  letter-spacing:.1em!important;
}
body.public-type :is(.nav-links,.nav-dropdown > button,.nav-login,.nav-cta .btn,.product-nav summary) {
  font-family:var(--type-sans);
  font-size:var(--type-nav);
  font-weight:500;
  line-height:1.4;
  letter-spacing:0;
}
body.public-type :is(.product-menu a span,.drop-menu a span.drop-sub) {
  font-size:var(--type-label);
  line-height:1.5;
}
body.public-type .mobile-menu :is(.m-link,a:not(.btn)) {
  font-size:var(--type-card);
  font-weight:500;
  line-height:1.5;
}
body.public-type :is(button,input,textarea,select,.btn,.button) { font-family:var(--type-sans); }
body.public-type :is(.btn,.button,.booking-slot) {
  font-size:var(--type-small);
  font-weight:500;
  line-height:1.4;
  letter-spacing:0;
}
body.public-type :is(input:not([type=checkbox]):not([type=radio]),textarea,select) {
  font-size:var(--type-body);
  line-height:1.5;
}
body.public-type :is(.form-label,.booking-fields label) {
  font-family:var(--type-sans);
  font-size:var(--type-small);
  font-weight:500;
  line-height:1.5;
  letter-spacing:0;
}
body.public-type :is(.form-hint,.booking-note,.form-note,.form-privacy,.foot-disclaimer,.help,.legal-meta,.h2-num) {
  font-size:var(--type-label)!important;
  line-height:1.65!important;
}
body.public-type :is(.booking-message,.booking-confirm p,.booking-day h3,.form-error,.intake-receipt,.contact-form-foot p) {
  font-size:var(--type-small)!important;
  line-height:1.6!important;
}
body.public-type :is(.arch-box .d,.verify-step span,.req-list .value,.ctx-value,.pillar-list li,.inc-list li) {
  font-size:var(--type-small)!important;
  line-height:1.6!important;
}
body.public-type :is(.arch-box .t,.verify-step strong,.frc-name,.req-list .label) {
  font-size:var(--type-body);
  line-height:1.5;
}
body.public-type :is(.hero-meta .val,.glance-grid .v,.prod-stats .v,.track-stats .v,.vx-visual-foot .v) {
  font-family:var(--type-mono);
  font-size:var(--type-small);
  line-height:1.5;
  letter-spacing:0;
}
body.public-type :is(.foot-brand p,.foot-col a) {
  font-family:var(--type-sans);
  font-size:var(--type-small)!important;
  line-height:1.6!important;
}
body.public-type .foot-bot {
  font-size:var(--type-label);
  line-height:1.6;
}
/* Use a comfortable reading measure without changing cards or artwork. */
body.public-type .legal-content :is(p,li) { max-width:72ch; }
/* Legacy page-specific labels use the same caption scale as shared labels. */
body.public-type :is(
  .about-eyebrow,.man-eyebrow,.bb-eyebrow,.cc-eyebrow,.pillar-eyebrow,.aside-eyebrow,
  .crumb,.prod-tag,.prod-foot .status,.track-live-badge,.step-n,.step-cell .n,
  .believe-num,.rule-num,.strat-point .num,.ah-trust-num,.cfw-trust-num,
  .vx-visual-bar,.vx-vh-sym .sub,.vx-vh-price .c,.sv-label,.ctx-label,
  .ml-meta,.ni-tag,.ni-time,.cap-label,.product-emblem small
) {
  font-family:var(--type-mono);
  font-size:var(--type-label)!important;
  font-weight:500;
  line-height:1.5;
  letter-spacing:.1em!important;
}
body.public-type :is(.prod-name,.track-name) {
  font-size:var(--type-panel);
  font-weight:500;
  line-height:1.3;
  letter-spacing:-.02em;
}
body.public-type :is(.inc-list strong,.step-list strong,.ah-trust-item strong,.vx-vh-sym) {
  font-size:var(--type-body);
  line-height:1.5;
}
body.public-type :is(.inc-list em,.step-list em,.ah-trust-item span,.ni-text,.cc-action,.cc-email,.form-checkbox-label) {
  font-size:var(--type-small);
  line-height:1.6;
}
body.public-type :is(.cap-desc,.dm-meta em,.aside-cta em,.form-label .optional) {
  font-size:var(--type-label);
  line-height:1.5;
}
