/**
 * Global fluid typography — readable on phones through large / ultrawide displays.
 * Root html scales 16px → 28px; components inherit or use --fluid-* tokens.
 */

:root {
    --fluid-base: 1rem;
    --fluid-xs: clamp(0.9em, 0.84em + 0.12vi, 1em);
    --fluid-sm: clamp(0.9625em, 0.9em + 0.18vi, 1.0875em);
    --fluid-md: clamp(1em, 0.94em + 0.22vi, 1.1875em);
    --fluid-lg: clamp(1.0875em, 1em + 0.32vi, 1.375em);
    --fluid-xl: clamp(1.2em, 1.05em + 0.5vi, 1.75em);
    --fluid-h1: clamp(2rem, 1.1rem + 3.5vi, 3.5rem);
    --fluid-h2: clamp(1.5rem, 1.05rem + 1.75vi, 2.625rem);
    --fluid-h3: clamp(1.125rem, 1em + 0.65vi, 1.75rem);
    --fluid-display: clamp(2.25rem, 1.25rem + 4vi, 4rem);
    --footer-text: var(--fluid-sm);
    --footer-icon-btn: clamp(2.75rem, 2.2rem + 1.1vi, 3.75rem);
    --footer-icon-size: clamp(1.4rem, 1.1rem + 0.85vi, 2rem);
}

html {
    font-size: clamp(16px, 9px + 0.78vw, 28px);
    color-scheme: dark;
}

@media (min-width: 1920px) {
    html {
        font-size: clamp(20px, 12px + 0.55vw, 28px);
    }
}

@media (min-width: 2560px) {
    html {
        font-size: 28px;
    }
}

button,
input,
select,
textarea,
optgroup,
legend,
.btn {
    font: inherit;
    font-size: var(--fluid-md);
}

label,
label span {
    font-size: var(--fluid-sm);
}

small,
.hint,
.muted,
.subtitle,
.eyebrow,
.back-link,
.meta-card span,
.legal-updated,
.legal-backtop a,
.news-list time,
.meta-weather small,
.weather-attribution,
.checklist-stamp-sub,
.checklist-footnote,
.checklist-task-list,
.data-table th,
.data-table td,
.timeline li,
.login-footer,
.login-hint,
.nav-logout,
.stat-label,
.booking-wizard .hint,
.map-hint,
.membership-terms,
.pricing-detail-grid .choice-desc,
.lc-chat-msg,
.panel h3,
.services-grid h3,
.hook-row li,
.state-news-ticker,
.ticker-label,
.feature-grid p,
.feature-grid article p,
.hero-slideshow-footer,
.hero-slide-text,
.hero-slide-options,
.pricing-modes,
.meta-card,
.form-grid label,
.login-form label {
    font-size: var(--fluid-sm);
}

h1,
.hero h1,
.page-hero h1 {
    font-size: var(--fluid-h1);
}

h2,
.section-header h2,
.checklist-section-title,
.state-services h2,
.state-local h2,
.panel h2 {
    font-size: var(--fluid-h2);
}

h3,
.local-block h3,
.hook-row h3,
.checklist-card h3,
.feature-grid article h3 {
    font-size: var(--fluid-h3);
}

.lead,
.state-pitch,
.hero .lead {
    font-size: var(--fluid-lg);
}

.page-header h1 {
    font-size: var(--fluid-h2);
}

.stat-num {
    font-size: var(--fluid-display);
}

.quote-total {
    font-size: var(--fluid-xl);
}

.btn-lg {
    font-size: var(--fluid-lg);
}

.btn-sm {
    font-size: var(--fluid-xs);
}

.btn-xs {
    font-size: var(--fluid-xs);
}

.checklist-yes {
    font-size: var(--fluid-lg);
}

.checklist-stamp-label,
.legal-toc-title {
    font-size: var(--fluid-md);
}

.brand-name-main {
    font-size: clamp(0.85em, 0.75em + 0.35vi, 1.15em);
}

.booking-wizard .wizard-card h2,
.page-header .wizard-form-step,
.wizard-gate-toast,
.wizard-lead,
.choice-card h3,
.choice-card .choice-title,
.booking-wizard label,
.booking-wizard .bw-field label,
.booking-wizard input,
.booking-wizard select,
.booking-wizard textarea,
.booking-wizard .btn,
.booking-wizard .choice-card {
    font-size: var(--fluid-md);
}

.page-header .wizard-form-step {
    font-size: var(--fluid-lg);
}

.booking-wizard .wizard-card h2,
.choice-card h3 {
    font-size: var(--fluid-h3);
}

.wizard-gate-toast {
    font-size: var(--fluid-md);
}

p,
li,
td,
th,
input,
select,
textarea,
button {
    font-size: inherit;
}

h1 { line-height: 1.12; }
h2 { line-height: 1.2; }
h3 { line-height: 1.25; }

.flag-nav-toggle-text,
.flag-nav-label {
    font-size: var(--fluid-sm);
}
