/* Move Forward — shared typography and virtual-service components
   Loaded last so the Coaching type system can travel across retained pages
   without replacing page-specific layout, image, or brand treatments. */

:root {
  --type-display: Georgia, 'Times New Roman', serif;
  --type-body: 'Lato', Arial, sans-serif;
  --type-forest: #355e3b;
  --type-forest-deep: #294630;
  --type-cream: #f8f7f2;
  --type-sage-pale: #edf2eb;
  --type-line: rgba(53, 94, 59, .2);
}

/* Coaching's core type system ---------------------------------------- */

body {
  font-family: var(--type-body);
  font-weight: 400;
}

/* Keep each page's established display sizes and line heights; only the
   family, weight, and editorial tracking are shared here. */
main h1,
main h2,
main h3,
main h4 {
  font-family: var(--type-display) !important;
  font-weight: 400 !important;
  letter-spacing: -.045em !important;
}

/* Ordinary content paragraphs use the Coaching reading measure. Lead,
   kicker, quote, and small-print classes retain their intentional display
   scale or compact treatment. */
main p:not(.hero-kicker):not(.hero-lead):not(.hero-note):not(.home-eyebrow):not(.home-hero-lead):not(.home-quote-text):not(.home-quote-support):not(.counseling-eyebrow):not(.counseling-lead):not(.counseling-eligibility):not(.about-eyebrow):not(.coaching-boundary-note):not(.privacy-note):not(.virtual-status) {
  font-family: var(--type-body);
  font-size: 1rem;
  font-weight: 400;
  line-height: 1.82;
}

main strong {
  font-weight: 700;
}

/* Labels, navigation, links used as controls, and buttons stay sans-serif. */
.site-header .nav-link,
.site-header .services-nav > summary,
.site-header .button,
.site-header .menu-toggle,
.mobile-nav a,
.mobile-nav summary,
.eyebrow,
.hero-kicker,
.home-eyebrow,
.counseling-eyebrow,
.about-eyebrow,
.button,
.home-button,
.counseling-button,
.about-button,
.about-phone,
.counseling-phone,
.text-link,
.coaching-link,
.counseling-link,
.home-path-link,
.footer-nav h3,
.footer-nav a,
.footer-contact h3,
.footer-contact a,
.footer-bottom,
.virtual-service-note,
.session-callout,
.virtual-status,
.contact-request-link {
  font-family: var(--type-body) !important;
}

/* Small, legible control type shared by the different page-specific
   button implementations. Existing padding, shape, and color remain intact. */
.button,
.home-button,
.counseling-button,
.about-button,
.about-phone,
.contact-request-link {
  font-size: .72rem;
  font-weight: 700;
  letter-spacing: .11em;
  line-height: 1.35;
}

/* The header/footer wordmark remains an editorial serif in the existing
   clay-red palette; the image symbol is deliberately untouched. */
.site-header .brand-words,
.site-footer .brand-words,
.site-header .brand-primary-name,
.site-header .brand-secondary-name,
.site-header .brand-credential,
.site-footer .brand-primary-name,
.site-footer .brand-secondary-name,
.site-footer .brand-credential {
  font-family: var(--type-display) !important;
  font-weight: 400 !important;
}

.site-header .brand-primary-name,
.site-header .brand-secondary-name,
.site-header .brand-credential,
.site-footer .brand-primary-name,
.site-footer .brand-secondary-name,
.site-footer .brand-credential {
  color: #b45540;
}

/* FAQ questions and other disclosure labels are display text, not controls. */
main .faq-item summary,
main .about-bio-details summary {
  font-family: var(--type-display) !important;
  font-weight: 400 !important;
  letter-spacing: -.045em !important;
}

/* Online-only service note ------------------------------------------- */

.virtual-service-note {
  display: flex;
  align-items: center;
  justify-content: center;
  flex-wrap: wrap;
  gap: .65rem 1rem;
  width: 100%;
  padding: .82rem var(--gutter, 1.25rem);
  border-top: 1px solid rgba(53, 94, 59, .12);
  border-bottom: 1px solid rgba(53, 94, 59, .16);
  background-color: var(--type-sage-pale);
  background-image:
    repeating-linear-gradient(120deg, transparent 0 31px, rgba(53, 94, 59, .055) 32px 33px, transparent 34px 66px),
    repeating-radial-gradient(ellipse at 14% 28%, transparent 0 21px, rgba(53, 94, 59, .045) 22px 23px, transparent 24px 52px);
  color: var(--type-forest-deep);
  font-size: .82rem;
  font-weight: 700;
  line-height: 1.45;
  text-align: center;
}

.virtual-service-note > span {
  display: inline-flex;
  min-width: 0;
  align-items: center;
  justify-content: center;
  gap: .55rem;
}

.virtual-service-note svg {
  flex: 0 0 24px;
  width: 24px;
  height: 24px;
  color: var(--type-forest);
  stroke: currentColor;
}

.virtual-service-note a {
  color: var(--type-forest-deep);
  font-size: .72rem;
  font-weight: 700;
  letter-spacing: .08em;
  line-height: 1.4;
  text-decoration-thickness: .08em;
  text-transform: uppercase;
  overflow-wrap: anywhere;
}

.virtual-service-note a:hover,
.virtual-service-note a:focus-visible {
  color: var(--type-forest);
}

/* Timing/cost panel --------------------------------------------------- */

.session-callout {
  padding: 1.5rem;
  border: 1px solid rgba(53, 94, 59, .16);
  background-color: var(--type-sage-pale);
  background-image:
    repeating-linear-gradient(120deg, transparent 0 31px, rgba(53, 94, 59, .05) 32px 33px, transparent 34px 66px),
    repeating-radial-gradient(ellipse at 86% 18%, transparent 0 21px, rgba(53, 94, 59, .045) 22px 23px, transparent 24px 52px);
  color: var(--type-forest-deep);
}

.session-callout h2,
.session-callout h3,
.session-callout h4 {
  color: var(--type-forest-deep);
}

.session-callout p:last-child {
  margin-bottom: 0;
}

.session-callout a {
  color: var(--type-forest-deep);
}

/* Short virtual-service badge used beside FAQ/contact details. */

.virtual-status {
  display: inline-block;
  max-width: 100%;
  margin: .5rem 0 0;
  padding: .35rem .65rem;
  border: 1px solid rgba(53, 94, 59, .24);
  border-radius: 999px;
  background: rgba(225, 232, 223, .72);
  color: var(--type-forest-deep);
  font-size: .82rem;
  font-weight: 700;
  line-height: 1.45;
  overflow-wrap: anywhere;
}

/* Appointment links can be long (especially email or descriptive labels). */

.contact-request-link {
  display: inline-flex;
  max-width: 100%;
  min-width: 0;
  align-items: center;
  justify-content: center;
  white-space: normal;
  overflow-wrap: anywhere;
  word-break: break-word;
  text-align: center;
  text-decoration: none;
}

@media (max-width: 390px) {
  .virtual-service-note {
    flex-direction: column;
    gap: .45rem;
    padding-block: .75rem;
  }

  .virtual-service-note > span {
    max-width: 100%;
  }

  .virtual-service-note a {
    max-width: 100%;
  }
}

/* Approved services disclosure and two-list footer -------------------- */

.desktop-nav .services-menu {
  position: absolute;
  z-index: 30;
  top: calc(100% + .4rem);
  left: 50%;
  display: grid;
  min-width: 235px;
  max-width: calc(100vw - 2rem);
  padding: .45rem;
  border: 1px solid var(--line);
  border-radius: 6px;
  background: var(--white);
  box-shadow: var(--shadow-md);
  transform: translateX(-50%);
}

.desktop-nav .services-menu .nav-link {
  display: flex;
  min-height: 44px;
  align-items: center;
  padding: .65rem .75rem;
  border-radius: 3px;
  color: var(--charcoal);
  font-size: .88rem;
  text-decoration: none;
}

.desktop-nav .services-menu .nav-link:hover,
.desktop-nav .services-menu .nav-link:focus-visible,
.desktop-nav .services-menu .nav-link[aria-current='page'] {
  background: var(--sand);
  color: var(--clay-dark);
}

.site-header .services-nav > summary:focus-visible,
.site-header .services-menu .nav-link:focus-visible {
  border-radius: 3px;
}

.mobile-nav .services-menu {
  padding: 0 0 .35rem 1rem;
}

.mobile-nav .services-menu .nav-link {
  min-height: 44px;
  padding: .55rem .25rem .55rem .35rem;
  border-bottom: 1px solid var(--line);
  font-size: .92rem;
}

.mobile-nav .services-menu .nav-link:last-child {
  border-bottom: 0;
}

.mobile-nav .services-menu .nav-link:hover,
.mobile-nav .services-menu .nav-link:focus-visible,
.mobile-nav .services-menu .nav-link[aria-current='page'] {
  color: var(--clay);
}

.mobile-nav .services-nav > summary:focus-visible,
.mobile-nav .services-menu .nav-link:focus-visible {
  border-radius: 3px;
}

.footer-links {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 2rem;
  min-width: 0;
}

.footer-links .footer-nav {
  min-width: 0;
}

.footer-links .footer-nav h3 {
  margin-bottom: .75rem;
}

.footer-links .footer-nav li + li {
  margin-top: .55rem;
}

.footer-links .footer-nav a {
  display: inline-block;
  max-width: 100%;
  overflow-wrap: anywhere;
}

.footer-contact .contact-virtual-line {
  font-style: italic;
}

@media (max-width: 560px) {
  .footer-links {
    grid-template-columns: 1fr;
    gap: 1.35rem;
  }
}


/* Contact intro matches the Coaching display/body font families and weights. */
.contact-page .hero-page h1 {
  font-family: var(--type-display) !important;
  font-weight: 400 !important;
}

.contact-page .hero-page .hero-lead {
  font-family: var(--type-body) !important;
  font-weight: 400 !important;
}


/* 3 November 2026: Contact-reference typography shared across every page.
   Only font properties are changed. Third-party embed/chat styles are untouched. */

body {
  font-family: var(--type-body);
  font-weight: 400;
}

main :is(h1, h2, h3, h4):not(:where([id^="deardoc"] *, [id^="dib-"] *)) {
  font-family: var(--type-display) !important;
  font-style: normal !important;
  font-weight: 400 !important;
  letter-spacing: -.045em !important;
  line-height: 1.12 !important;
}

main h1:not(:where([id^="deardoc"] *, [id^="dib-"] *)) {
  font-size: clamp(2.4rem, 4.6vw, 3.5rem) !important;
}
main h2:not(:where([id^="deardoc"] *, [id^="dib-"] *)) {
  font-size: clamp(2.05rem, 4vw, 3.15rem) !important;
}
main h3:not(:where([id^="deardoc"] *, [id^="dib-"] *)) {
  font-size: clamp(1.35rem, 2.3vw, 1.75rem) !important;
}
main h4:not(:where([id^="deardoc"] *, [id^="dib-"] *)) {
  font-size: 1.1rem !important;
}

main :is(p, li, dd, dt, blockquote, figcaption):not(:where([id^="deardoc"] *, [id^="dib-"] *)) {
  font-family: var(--type-body) !important;
  font-size: 1rem !important;
  font-style: normal !important;
  font-weight: 400 !important;
  letter-spacing: normal !important;
  line-height: 1.82 !important;
}

/* Contact's lead and fine-print roles, consistently reused elsewhere. */
main :is(.hero-lead, .home-hero-lead, .counseling-lead) {
  font-family: var(--type-body) !important;
  font-size: clamp(1.06rem, 2vw, 1.3rem) !important;
  font-weight: 400 !important;
  line-height: 1.55 !important;
}
main .hero-kicker {
  font-family: var(--type-body) !important;
  font-size: .75rem !important;
  font-weight: 800 !important;
  letter-spacing: .18em !important;
  line-height: 1.65 !important;
}
main :is(.privacy-note, .coaching-boundary-note, .counseling-eligibility) {
  font-size: .83rem !important;
  line-height: 1.65 !important;
}
main .contact-card h3 { font-size: 1.05rem !important; }
main .detail-panel h3 { font-size: 1.12rem !important; }
main :is(.faq-item, .about-bio-details) > summary {
  font-family: var(--type-display) !important;
  font-size: 1.1rem !important;
  font-style: normal !important;
  font-weight: 400 !important;
  letter-spacing: -.045em !important;
  line-height: 1.65 !important;
}
main :is(strong, b):not(:where([id^="deardoc"] *, [id^="dib-"] *)) {
  font-family: var(--type-body);
  font-weight: 700 !important;
}

/* Contact uses semantic italic emphasis, not italic display typography. */
main :is(h1, h2, h3, h4) em { font-style: normal !important; }
main .contact-virtual-line em { font-style: italic; }

:is(.button, .home-button, .counseling-button, .counseling-phone, .about-button, .about-phone, .contact-request-link) {
  font-family: var(--type-body) !important;
  font-size: .72rem !important;
  font-style: normal !important;
  font-weight: 700 !important;
  letter-spacing: .11em !important;
  line-height: 1.35 !important;
}
:is(.text-link, .home-path-link, .coaching-link, .counseling-link) {
  font-family: var(--type-body) !important;
  font-size: .92rem !important;
  font-style: normal !important;
  font-weight: 800 !important;
  letter-spacing: normal !important;
  line-height: 1.65 !important;
}

.site-header :is(.nav-link, .services-nav > summary) {
  font-family: var(--type-body) !important;
  font-size: .78rem !important;
  font-style: normal !important;
  font-weight: 400 !important;
  letter-spacing: .025em !important;
  line-height: 1.65 !important;
}
.site-header .services-menu .nav-link { font-size: .88rem !important; }
.mobile-nav .services-menu .nav-link { font-size: .92rem !important; }
.site-header .header-actions .button {
  font-size: .65rem !important;
  letter-spacing: .14em !important;
}

/* Shared header/footer wordmark and footer already match Contact on every route. */
.site-footer :is(p, a, h3) { font-family: var(--type-body); }

@media (max-width: 1160px) {
  .site-header :is(.nav-link, .services-nav > summary) { font-size: .74rem !important; }
  .site-header .header-actions .button { font-size: .6rem !important; }
}
@media (max-width: 560px) {
  main h1:not(:where([id^="deardoc"] *, [id^="dib-"] *)) {
    font-size: clamp(2.2rem, 9vw, 2.7rem) !important;
  }
  main :is(.hero-lead, .home-hero-lead, .counseling-lead) {
    font-size: 1rem !important;
  }
}
