/* Enzo: shared type system. Keep this stylesheet after each page's layout CSS.
   Licensed local font files and provenance are in /fonts/. */
@font-face {
  font-family: Cardo;
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('/fonts/cardo-regular-latin.woff2') format('woff2');
}
@font-face {
  font-family: Cardo;
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url('/fonts/cardo-bold-latin.woff2') format('woff2');
}
@font-face {
  font-family: Cardo;
  font-style: italic;
  font-weight: 400;
  font-display: swap;
  src: url('/fonts/cardo-italic-latin.woff2') format('woff2');
}
@font-face {
  font-family: Montserrat;
  font-style: normal;
  font-weight: 400 800;
  font-display: swap;
  src: url('/fonts/montserrat-variable-latin.woff2') format('woff2');
}

:root {
  --font-display: 'Cardo', Georgia, serif;
  --font-serif: 'Cardo', Georgia, serif;
  --font-body: 'Montserrat', Arial, sans-serif;
  --type-caption: .75rem;
  --type-small: .875rem;
  --type-body: 1rem;
  --type-section: clamp(2rem, 3.7vw, 3.5rem);
  --type-card: clamp(1.35rem, 2vw, 1.65rem);
  --type-label-spacing: .12em;
}
body { font-family: var(--font-body); font-weight: 400; }
button, input, select, textarea { font-family: var(--font-body); }

/* Navigation remains compact, with the same voice on every page. */
.nav-links a,
.nav-services summary,
.nav-links .service-submenu a,
.service-menu a,
.menu-toggle {
  font-family: var(--font-body);
  font-size: var(--type-small);
  font-weight: 600;
  line-height: 1.5;
  letter-spacing: 0;
  text-transform: none;
}
@media (min-width: 701px) and (max-width: 900px) {
  .service-menu a { font-size: .8125rem; padding-inline: 9px; }
}
@media (max-width: 768px) {
  .nav-links a, .nav-services summary, .nav-links .service-submenu a { font-size: .9375rem; }
}
@media (max-width: 700px) {
  .service-menu a { font-size: .9375rem; }
}

/* Home: Cardo for editorial headings, Montserrat for information and actions. */
[data-page='home'] :is(.section-title, .pdr-title, .map-title, .form-title, .form-success-title, .interior-label, .footer-heading, .gallery-vehicle, .lightbox-vehicle) {
  font-family: var(--font-display);
  font-weight: 700;
  letter-spacing: -.015em;
  text-transform: none;
  line-height: 1.15;
}
[data-page='home'] .section-title { font-size: var(--type-section); }
[data-page='home'] .service-directory-name { font-size: var(--type-card); font-weight: 700; letter-spacing: -.015em; line-height: 1.2; }
[data-page='home'] :is(.section-tag, .phase-tag, .pdr-exclusive-badge, .map-tag) {
  font-size: var(--type-caption);
  font-weight: 600;
  letter-spacing: var(--type-label-spacing);
  line-height: 1.5;
}
[data-page='home'] :is(.btn, .pdr-cta) {
  font-family: var(--font-body);
  font-size: var(--type-small);
  font-weight: 600;
  letter-spacing: 0;
  line-height: 1.5;
  text-transform: none;
}
[data-page='home'] :is(.hero-logo-tagline, .pdr-subtitle, .ba-quote, .testi-text) { font-weight: 400; font-style: italic; letter-spacing: 0; }
[data-page='home'] .hero-logo-tagline { font-size: clamp(.9375rem, 1.8vw, 1.125rem); letter-spacing: .035em; }
[data-page='home'] :is(.section-desc, .service-directory-intro, .booking-desc, .map-subtitle) { font-size: var(--type-body); line-height: 1.7; }
[data-page='home'] .pdr-desc { font-size: .9375rem; line-height: 1.7; }
[data-page='home'] :is(.interior-desc, .ppf-feature span, .booking-feature, .footer-tagline, .footer-links a, .footer-contact li, .testi-name) { font-size: var(--type-small); line-height: 1.6; }
[data-page='home'] .testi-text { font-size: 1.0625rem; line-height: 1.65; }
[data-page='home'] :is(.testi-vehicle, .testi-service, .gallery-service, .lightbox-service, .ba-label, .ba-hint, .footer-copy, .footer-dev, .footer-bottom p, .footer-bottom a, .hero-scroll-indicator span) { font-size: var(--type-caption); letter-spacing: .04em; line-height: 1.5; }
[data-page='home'] :is(.testi-service, .gallery-service, .lightbox-service) { text-transform: none; }
[data-page='home'] .ba-hint { animation-name: enzo-hint-pulse; }
@keyframes enzo-hint-pulse { 0%, 100% { opacity: .85; } 50% { opacity: 1; } }
[data-page='home'] .form-group label { font-size: var(--type-small); font-weight: 600; letter-spacing: 0; text-transform: none; }
[data-page='home'] .form-group :is(input, select) { font-size: var(--type-body); }
[data-page='home'] :is(.form-note, .form-consent, .form-error, .form-submit-error, .form-success-sub, #bookingCoverageHelp) { font-size: var(--type-caption); line-height: 1.6; letter-spacing: 0; }

/* Four service pages share one scale; sizes stay independent of the photo layout. */
[data-service-page] :is(h1, h2, h3) { font-family: var(--font-display); font-weight: 700; letter-spacing: -.015em; line-height: 1.15; }
[data-service-page] .hero-copy h1 { font-size: clamp(3.2rem, 6.2vw, 5.5rem); letter-spacing: -.025em; line-height: 1.08; }
[data-service-page] h2 { font-size: var(--type-section); }
[data-service-page] h3 { font-size: var(--type-card); }
[data-service-page] :is(.eyebrow, .brand-tag, .coverage-group, .metric, .tser-explainer .metric, .recognition .eyebrow, .info-card .number, .process-visual-step .number) {
  font-size: var(--type-caption);
  font-weight: 600;
  letter-spacing: var(--type-label-spacing);
  line-height: 1.5;
}
[data-service-page] .hero-copy p { font-size: var(--type-body); line-height: 1.7; }
[data-service-page] :is(.section-heading p, .info-card p, .note, .coverage-copy p, .faq p, .split-photo p, .steps p, .service-cta p, .brand-proof p, .benefit-card p, .process-visual-step p, .tser-explainer p, .recognition p, .pdr-case-description, .tser-example span) { font-size: .9375rem; line-height: 1.7; }
[data-service-page] :is(.button, .text-link, .section-nav, .coverage-option, .coverage-controls legend, .coverage-mobile label, .coverage-fallback a, .brand-proof p a, .recognition .text-link, .footer-links, .pdr-comparison-controls label, .ceramic-rotation-range label) { font-size: var(--type-small); line-height: 1.5; letter-spacing: 0; }
[data-service-page] :is(.button, .text-link, .section-nav a) { font-weight: 600; }
[data-service-page] .button { font-family: var(--font-body); min-height: 44px; }
[data-service-page] .faq summary { font-size: 1rem; line-height: 1.5; }
[data-service-page] :is(.small, .sources, .coverage-view figcaption, .process-visual-step figcaption, .hero-visual-note, .hero-index, .footer-bottom, .comparison-pair figcaption, .ceramic-result figcaption, .ceramic-rotation-note, .ceramic-rotation-meta, .pdr-comparison-scale, .pdr-comparison.is-enhanced .pdr-comparison-view figcaption, .tser-explainer p.small) { font-size: var(--type-caption); line-height: 1.6; letter-spacing: 0; }
[data-service-page] .comparison { font-size: var(--type-small); line-height: 1.6; }
[data-service-page] :is(.comparison caption, .comparison thead) { font-size: var(--type-caption); line-height: 1.6; }
[data-service-page] .film-name { letter-spacing: 0; }
[data-service-page] .tint-tone-card figcaption span { font-size: var(--type-caption); }
[data-service-page] .service-cta h2 { font-size: clamp(2rem, 3vw, 2.9rem); }
[data-service-page] .ceramic-rotation-heading h3 { font-size: clamp(1.9rem, 3vw, 2.8rem); }
@media (max-width: 700px) {
  [data-service-page] .hero-copy h1 { font-size: clamp(2.6rem, 10vw, 4rem); }
  [data-service-page] :is(.benefit-card p, .process-visual-step p) { font-size: var(--type-small); line-height: 1.6; }
  [data-service-page] .ceramic-rotation-meta { flex-direction: column; gap: 2px; text-align: center; }
  [data-service-page] .ceramic-rotation-meta output { text-align: center; }
}
@media (max-width: 370px) {
  [data-page='home'] .section-tag { padding-inline: 14px; letter-spacing: .08em; }
  [data-service-page] .benefit-grid { grid-template-columns: 1fr; }
}
