/* Hallmark · shape: catalogue · genre: editorial · theme: Ink (deal 1/3, seed local-exterior-cleaning-service-d221·6b44e0af·2026-11-03·r0) · job: hire · draw: catalogue
 * hero: Stage · nav: edge-aligned · footer: mast · imagery: existing water photograph · signature: the water-in-motion hero image · ink: restrained paper, blue signal, hairline rules
 * axes: light/grotesk-sans/chromatic-teal · posture: restrained · contrast: pass · fold: pass · v2.0.0 */
/* Hallmark · pre-emit critique: P_ H_ E_ S_ R_ V_ · weakest: proof, kept honest by using only supplied claims and assets */
@import url("./tokens.css");
@import url("./base.css");

:root {
    --brand-blue: #087bb5;
    --brand-blue-dark: #07577f;
    --brand-blue-soft: #e6f5fa;
    --paper-warm: #fbfaf7;
    --paper-cool: #f1f5f4;
    --ink-soft: #42505a;
    --rule-soft: #d9e0df;
    --white: oklch(98% 0.005 188);
    --focus-ring: #07577f;
    --hero-tint: oklch(16% 0 0 / 0.16);
    --font-display: "Epilogue", ui-sans-serif, system-ui, sans-serif;
    --font-body: var(--font-display);
}

html, body { overflow-x: clip; }
body { background: var(--paper-warm); color: var(--color-ink); }
a { color: inherit; }
.container { max-width: 1440px; }

.site-header { border-bottom: 1px solid var(--rule-soft); background: var(--paper-warm); }
.nav-wrap { min-height: 76px; display: flex; align-items: center; justify-content: space-between; gap: var(--space-lg); }
.brand { display: inline-flex; align-items: center; min-width: 0; text-decoration: none; }
.logo { width: 132px; height: auto; }
.logo-fallback { display: none; font-weight: 700; letter-spacing: -0.04em; }
.nav-links { display: flex; align-items: center; gap: var(--space-xl); font-size: var(--text-sm); }
.nav-links a { text-decoration: none; }
.nav-links a:not(.nav-cta):hover, .nav-links a:not(.nav-cta):focus-visible { color: var(--brand-blue-dark); }
.nav-cta, .button { min-height: 48px; display: inline-flex; align-items: center; justify-content: center; border: 1px solid var(--brand-blue-dark); border-radius: 4px; padding: 0 var(--space-lg); font-size: var(--text-sm); font-weight: 700; text-decoration: none; white-space: nowrap; }
.nav-cta { background: var(--brand-blue-dark); color: var(--white); }
.nav-cta:hover, .nav-cta:focus-visible { background: var(--color-ink); border-color: var(--color-ink); }

.hero { padding: var(--space-2xl) 0 var(--space-3xl); }
.hero-grid { display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); gap: var(--space-3xl); align-items: center; }
.hero-copy { max-width: 560px; }
.hero-kicker, .section-label { margin-bottom: var(--space-lg); color: var(--brand-blue-dark); font-size: var(--text-sm); font-weight: 700; }
.hero h1 { max-width: 9ch; font-size: clamp(3.2rem, 6vw, 5.25rem); }
.hero .lead { margin-top: var(--space-lg); color: var(--ink-soft); }
.hero-actions { display: flex; align-items: center; flex-wrap: wrap; gap: var(--space-lg); margin-top: var(--space-2xl); }
.button-primary { background: var(--brand-blue-dark); color: var(--white); }
.button-primary:hover, .button-primary:focus-visible { background: var(--color-ink); border-color: var(--color-ink); }
.button-secondary { background: transparent; color: var(--color-ink); border-color: var(--color-ink); }
.button-secondary:hover, .button-secondary:focus-visible { background: var(--color-ink); color: var(--white); }
.text-link { font-weight: 700; text-underline-offset: 0.2em; }
.text-link:hover, .text-link:focus-visible { color: var(--brand-blue-dark); }
.hero-note { max-width: 42ch; margin-top: var(--space-xl); color: var(--color-muted); font-size: var(--text-sm); }
.hero-image { position: relative; margin: 0; min-height: 480px; overflow: hidden; border-radius: var(--radius-card); background: var(--brand-blue-soft); }
.hero-image::after { position: absolute; inset: 0; content: ""; background: var(--hero-tint); pointer-events: none; }
.hero-image img { width: 100%; height: 100%; min-height: 480px; object-fit: cover; }

.service-section { padding: var(--section-gap) 0; border-top: 1px solid var(--rule-soft); }
.section-heading { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: var(--space-3xl); align-items: end; margin-bottom: var(--space-2xl); }
.section-heading .lead { color: var(--ink-soft); }
.services-list { border-top: 1px solid var(--color-ink); }
.service-card { border-bottom: 1px solid var(--rule-soft); }
.service-header { width: 100%; min-height: 52px; display: grid; grid-template-columns: 32px minmax(0, 1fr) 24px; gap: var(--space-lg); align-items: center; padding: 0; border: 0; background: transparent; color: var(--color-ink); text-align: left; cursor: pointer; white-space: nowrap; }
.service-header:hover, .service-header:focus-visible { color: var(--brand-blue-dark); }
.service-icon { color: var(--brand-blue); font-size: var(--text-lg); }
.service-name { font-size: var(--text-title); font-weight: 700; white-space: nowrap; }
.expand-icon { color: var(--brand-blue-dark); font-size: var(--text-sm); transition: transform var(--dur-short) var(--ease-out); }
.service-details { max-width: 620px; padding: 0 56px var(--space-lg); color: var(--ink-soft); }
html.js .service-details { max-height: 0; padding-bottom: 0; overflow: hidden; opacity: 0; transition: max-height var(--dur-short) var(--ease-out), opacity var(--dur-short) var(--ease-out); }
html.js .service-card.expanded .service-details { max-height: 120px; padding-bottom: var(--space-lg); opacity: 1; }
html.js .service-card.expanded .expand-icon { transform: rotate(45deg); }

.approach-section { padding: var(--section-gap) 0; background: var(--paper-cool); }
.approach-grid { display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); gap: var(--space-3xl); }
.approach-statement h2 { max-width: 18ch; }
.approach-points { border-top: 1px solid var(--color-ink); }
.approach-point { display: grid; grid-template-columns: 48px minmax(0, 1fr); gap: var(--space-lg); padding: var(--space-lg) 0; border-bottom: 1px solid var(--rule-soft); }
.approach-point span { color: var(--brand-blue-dark); font-size: var(--text-sm); font-weight: 700; }
.approach-point p { max-width: 42ch; color: var(--ink-soft); }

.quote-section { padding: var(--section-gap) 0; background: var(--brand-blue-dark); color: var(--white); }
.quote-grid { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: var(--space-3xl); align-items: end; }
.quote-section .section-label { color: var(--brand-blue-soft); }
.quote-section h2 { max-width: 20ch; }
.quote-actions { display: flex; flex-wrap: wrap; gap: var(--space-md); }
.quote-section .button-primary { background: var(--white); border-color: var(--white); color: var(--brand-blue-dark); }
.quote-section .button-primary:hover, .quote-section .button-primary:focus-visible { background: var(--brand-blue-soft); border-color: var(--brand-blue-soft); }
.quote-section .button-secondary { border-color: var(--white); color: var(--white); }
.quote-section .button-secondary:hover, .quote-section .button-secondary:focus-visible { background: var(--white); color: var(--brand-blue-dark); }

.site-footer { padding: var(--space-3xl) 0 var(--space-xl); background: var(--color-ink); color: var(--white); }
.footer-grid { display: grid; grid-template-columns: minmax(0, 2fr) minmax(0, 1fr) minmax(0, auto); gap: var(--space-3xl); align-items: end; }
.footer-logo { width: 124px; filter: grayscale(1) brightness(0) invert(1); }
.site-footer p { margin-top: var(--space-lg); color: var(--rule-soft); font-size: var(--text-sm); }
.footer-contact { display: flex; flex-direction: column; gap: var(--space-sm); }
.footer-contact a { color: var(--white); text-underline-offset: 0.2em; }
.footer-contact a:hover, .footer-contact a:focus-visible { color: var(--brand-blue-soft); }
.copyright { align-self: end; white-space: nowrap; }

:focus-visible { outline: 3px solid var(--focus-ring); outline-offset: 4px; }
.quote-section :focus-visible { outline-color: var(--brand-blue-soft); }
.site-footer :focus-visible { outline-color: var(--white); }
a:active, button:active { transform: translateY(1px); }
button:disabled { opacity: 0.55; cursor: not-allowed; }
@media (max-width: 60rem) {
    .hero-grid, .approach-grid, .quote-grid { grid-template-columns: minmax(0, 1fr); gap: var(--space-2xl); }
    .hero { padding: var(--space-2xl) 0 var(--section-gap); }
    .hero-image, .hero-image img { min-height: 420px; }
    .approach-statement h2, .quote-section h2 { max-width: 18ch; }
    .footer-grid { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: var(--space-2xl); }
    .copyright { grid-column: 1 / -1; }
}
@media (max-width: 40rem) {
    .nav-wrap { min-height: 68px; }
    .nav-links { gap: var(--space-md); }
    .nav-links a:not(.nav-cta) { display: none; }
    .nav-cta { min-height: 44px; padding-inline: var(--space-md); }
    .hero h1 { font-size: clamp(2.75rem, 13vw, 4rem); }
    .hero-image, .hero-image img { min-height: 300px; }
    .section-heading { grid-template-columns: minmax(0, 1fr); gap: var(--space-lg); }
    .service-header { grid-template-columns: 28px minmax(0, 1fr) 20px; gap: var(--space-sm); min-height: 52px; }
    .service-name { font-size: var(--text-lg); white-space: nowrap; }
    .service-details { padding-left: 44px; }
    .footer-grid { grid-template-columns: minmax(0, 1fr); gap: var(--space-xl); }
    .copyright { grid-column: auto; }
}
@media (prefers-reduced-motion: reduce) {
    *, *::before, *::after { animation-duration: 0.01ms !important; animation-iteration-count: 1 !important; transition-duration: 0.01ms !important; }
}
