/* =========================
   Pro Plumbing — Utopia Base
   ========================= */
:root {
    color-scheme: light dark;

    /* Realtime Colors
     https://www.realtimecolors.com/?colors=030b0c-f3fbfc-32a4ce-e59194-dac964&fonts=Roboto%20Slab-Lato */
    --contrast: light-dark(#030b0c, #f3fbfc);
    --background: light-dark(#f3fbfc, #030b0c);
    --primary: #32a4ce;
    /* action */
    --secondary: #e59194;
    /* accent surface */
    --accent: #dac964;
    /* highlight */

    /* Typography tokens (Utopia.fyi-esque scale) */
    --font-sans: "Lato", system-ui, -apple-system, "Segoe UI", Roboto, Arial, sans-serif;
    --font-serif: "Roboto Slab", ui-serif, Georgia, serif;

    --step--1: clamp(0.83rem, 0.82rem + 0.1vw, 0.9rem);
    --step-0: clamp(1rem, 0.98rem + 0.2vw, 1.125rem);
    --step-1: clamp(1.25rem, 1.18rem + 0.45vw, 1.5rem);
    --step-2: clamp(1.563rem, 1.44rem + 0.75vw, 1.95rem);
    --step-3: clamp(1.953rem, 1.75rem + 1.2vw, 2.6rem);
    --step-4: clamp(2.441rem, 2.1rem + 1.8vw, 3.4rem);

    /* Space scale */
    --space-2xs: clamp(0.375rem, 0.3rem + 0.6vw, 0.625rem);
    --space-xs: clamp(0.75rem, 0.6rem + 0.8vw, 1rem);
    --space-s: clamp(1rem, 0.8rem + 1vw, 1.5rem);
    --space-m: clamp(1.5rem, 1rem + 1.5vw, 2.25rem);
    --space-l: clamp(2rem, 1.5rem + 2vw, 3rem);
    --space-xl: clamp(3rem, 2rem + 3vw, 4.5rem);

    /* Layout */
    --radius: 8px;
    --shadow-1: 0 6px 24px rgba(0, 0, 0, .08), 0 2px 8px rgba(0, 0, 0, .06);
    --container: min(1240px, 92vw);
}

/* Base */
* {
    box-sizing: border-box;
}

html {
    scroll-behavior: smooth;
}

body {
    margin: 0;
    font: 400 var(--step-0)/1.55 var(--font-sans);
    color: var(--contrast);
    background: var(--background);
}

img,
svg {
    max-width: 100%;
    display: block;
}

img {
    border-radius: var(--radius);
    box-shadow: var(--shadow-1);

}

a {
    color: var(--primary);
    text-decoration: none;
}

a:hover {
    text-decoration: underline;
}

.small {
    font-size: var(--step--1);
    opacity: .85;
}

.center {
    text-align: center;
}

.container {
    width: var(--container);
    margin-inline: auto;
    padding: 0 var(--space-s);
}

h2 {
    font-size: var(--step-3);
}

/* Skip link */
.skip-link {
    position: absolute;
    inset-inline: var(--space-s) auto;
    top: 0;
    transform: translateY(-120%);
    transition: transform .2s ease;
    background: var(--primary);
    color: #fff;
    padding: .5rem .75rem;
    border-radius: 8px;
}

.skip-link:focus {
    transform: translateY(0);
    outline: none;
}

/* Header */
.site-header {
    position: sticky;
    top: 0;
    backdrop-filter: saturate(180%) blur(8px);
    background: color-mix(in oklab, var(--background) 92%, transparent);
    border-bottom: 1px solid color-mix(in oklab, var(--contrast) 10%, transparent);
    z-index: 10;
}

.site-header .container {
    padding: var(--space-xs) 0;
}

.header-grid {
    display: grid;
    place-items: center;
    grid-template-columns: 1fr;
    gap: var(--space-2xs);
    /* padding: var(--space-xs) */
}

.brand {
    /* place-self: left; */
    display: inline-flex;
    align-items: center;
    justify-content: flex-start;
    gap: .6rem;
    font-weight: 800;
    color: inherit;
}

.brand-mark {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 36px;
    height: 36px;
    border-radius: var(--radius);
    background:
        radial-gradient(60% 60% at 30% 30%, color-mix(in oklab, var(--primary) 70%, var(--accent)) 0 40%, transparent 41%),
        conic-gradient(from 210deg at 70% 70%, var(--primary), var(--accent), var(--secondary));
    box-shadow: inset 0 0 0 2px color-mix(in oklab, var(--contrast) 12%, transparent);
}

.brand-mark img {
    align-self: center;
}

.brand-name {
    font-family: var(--font-serif);
    font-size: 1.125rem;
    letter-spacing: .2px;
}

.site-nav ul {
    list-style: none;
    padding: 0;
    margin: 0;
    display: flex;
    gap: var(--space-2xs);
    flex-wrap: wrap;
    align-items: center;
    justify-content: center;
}

.site-nav a {
    padding: var(--space-2xs) var(--space-2xs);
    border-radius: var(--radius);
    font-weight: 700;
}

.site-nav a:hover {
    text-decoration: none;
}

.header-cta {
    display: none;
    /* gap: var(--space-2xs); */
}

.header-cta a {
    display: inline-flex;
    align-items: center;
    gap: var(--space-2xs);
    font-weight: 700;
}

.header-cta svg {
    width: 18px;
    height: 18px;
}

@media (min-width: 960px) {
    .header-grid {
        grid-template-columns: 170px 55% 225px;
    }
    .header-cta {
        display: flex;
        align-items: center;
        flex-flow: row wrap;
    }
}

/* Buttons */
.btn {
    --btn-bg: var(--primary);
    --btn-fg: #fff;
    display: inline-block;
    background: var(--btn-bg);
    color: var(--btn-fg);
    padding: var(--space-xs) var(--space-s);
    border-radius: var(--radius);
    font-weight: 800;
    margin: var(--space-xs) 0;
    ;
    box-shadow: var(--shadow-1);
    transition: transform .15s ease;
}

.btn:hover {
    text-decoration: none;
    transform: scale(1.03);
}

.btn--ghost {
    --btn-bg: color-mix(in oklab, var(--primary) 25%, transparent);
    --btn-fg: var(--contrast);
}

.btn--small {
    padding: var(--space-xs) var(--space-s);
    font-weight: 700;
}

/* Hero */
.hero {
    padding: var(--space-xl) var(--space-m);
    background:
        radial-gradient(1200px 600px at 20% -10%, color-mix(in oklab, var(--primary) 16%, transparent), transparent),
        radial-gradient(900px 500px at 120% 20%, color-mix(in oklab, var(--secondary) 18%, transparent), transparent);
}

.hero-grid {
    display: grid;
    width: var(--container);
    grid-template-columns: repeat(auto-fit, minmax(min(300px, 50vw), 1fr));
    gap: var(--space-s);
    margin-inline: auto;
    padding: 0 var(--space-s);
}

.hero h1 {
    font-family: var(--font-serif);
    font-size: var(--step-4);
    line-height: 1.1;
    margin: 0 0 var(--space-s);
    text-wrap-style: balance;
}

.lead {
    font-size: var(--step-1);
    margin: 0 0 var(--space-m);
    max-width: 60ch;
    text-wrap-style: balance;
}

.hero .actions {
    display: flex;
    gap: var(--space-s);
    flex-wrap: wrap;
    margin-top: var(--space-m);
    margin-bottom: var(--space-m);
}

.trust-badges {
    list-style: none;
    padding: 0;
    margin: 0;
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(min(180px,50vw), 1fr));
    gap: var(--space-2xs);
}

.trust-badges li {
    display: inline-flex;
    align-items: center;
    gap: .5rem;
}

.trust-badges svg {
    width: 18px;
    height: 18px;
    color: var(--primary);
}

/* Sections */
.section {
    padding-block: var(--space-xl);
}

.section.alt {
    background: color-mix(in oklab, var(--secondary) 9%, transparent);
}

/* Cards grid */
.cards {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(min(50vw, 300px), 1fr));
    gap: var(--space-s);
    margin-top: var(--space-m);
}

.card {
    background: color-mix(in oklab, var(--background) 85%, var(--secondary) 15%);
    border: 1px solid color-mix(in oklab, var(--contrast) 12%, transparent);
    border-radius: var(--radius);
    padding: var(--space-m);
    box-shadow: var(--shadow-1);
}

.card h3 {
    font-family: var(--font-serif);
    margin-top: 0;
    font-size: var(--step-2);
}

/* Feature list */
.feature-list {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(min(200px,50%), 1fr));
    gap: var(--space-m);
    margin-top: var(--space-s);
    list-style: "✓  ";
    padding-left: var(--space-s);
    text-wrap-style: pretty;
}

.feature-list strong {
    display: block;
}

/* Pricing */
.price-grid {
    display: grid;
    gap: var(--space-s);
    grid-template-columns: repeat(auto-fit, minmax(min(100%, 250px), 1fr));
    margin-top: var(--space-m);
    margin-bottom: var(--space-s);
}

.plan {
    padding: var(--space-m);
    border-radius: var(--radius);
    border: 1px solid color-mix(in oklab, var(--contrast) 12%, transparent);
    background: color-mix(in oklab, var(--background) 90%, var(--accent) 10%);
    box-shadow: var(--shadow-1);
}

.plan.popular {
    outline: 3px solid color-mix(in oklab, var(--primary) 40%, transparent);
}

.price {
    font-family: var(--font-serif);
    font-size: var(--step-2);
    margin: var(--space-2xs) 0 var(--space-xs);
}

/* Quotes */
.quotes {
    display: grid;
    gap: var(--space-s);
    grid-template-columns: repeat(auto-fit, minmax(min(100%, 260px), 1fr));
    margin-top: var(--space-m);
}

blockquote {
    margin: 0;
    font-size: var(--step-0);
    font-style: italic;
}

figcaption {
    margin-top: var(--space-2xs);
    margin-left: var(--space-2xs);
    opacity: .8;
}

/* FAQ (CSS only) */
details {
    border: 1px solid color-mix(in oklab, var(--contrast) 12%, transparent);
    border-radius: var(--radius);
    padding: .75rem 1rem;
    margin-bottom: .6rem;
    background: color-mix(in oklab, var(--background) 92%, var(--secondary) 8%);
}

details[open] {
    background: color-mix(in oklab, var(--background) 86%, var(--secondary) 14%);
}

summary {
    cursor: pointer;
    font-weight: 800;
}

summary::marker {
    color: var(--primary);
}

/* Contact */
.contact .grid {
    display: grid;
    gap: var(--space-s);
    grid-template-columns: 1fr;
}

@media (min-width: 780px) {
    .contact .grid {
        grid-template-columns: 1fr 1fr;
    }

    .contact .grid label:first-child {
        grid-column: 1 / 3;
    }

    .contact .grid label:last-child {
        grid-column: 1 / 3;
    }
}

.contact label {
    display: grid;
    gap: .45rem;
    font-weight: 700;
}

.contact input,
.contact textarea {
    font: inherit;
    padding: .8rem .9rem;
    border-radius: var(--radius);
    border: 1px solid color-mix(in oklab, var(--contrast) 14%, transparent);
    background: color-mix(in oklab, var(--background) 96%, var(--secondary) 4%);
    outline-offset: 2px;
}

.contact input:focus,
.contact textarea:focus {
    outline: 3px solid color-mix(in oklab, var(--primary) 35%, transparent);
}

.contact .btn {
    margin: var(--space-m) 0 var(--space-s);
    width: 100%;
}

.socials {
    display: flex;
    gap: .8rem;
    justify-content: center;
    margin-top: var(--space-m);
}

.socials .social {
    width: 44px;
    height: 44px;
    display: grid;
    place-items: center;
    border-radius: 50%;
    background: color-mix(in oklab, var(--primary) 20%, transparent);
    border: 1px solid color-mix(in oklab, var(--contrast) 12%, transparent);
}

.socials svg {
    width: 20px;
    height: 20px;
}

/* Footer */
.site-footer {
    padding-block: var(--space-l);
    border-top: 1px solid color-mix(in oklab, var(--contrast) 10%, transparent);
}

.footer-grid {
    display: grid;
    gap: var(--space-xs);
    place-items: center;
    grid-template-columns: 1fr;
    text-align: center;
}

@media (min-width: 960px) {
    .footer-grid {
        grid-template-columns: auto 1fr auto;
        text-align: center;
    }
}

/* Reduce motion */
@media (prefers-reduced-motion: reduce) {
    html:focus-within {
        scroll-behavior: auto;
    }

    * {
        transition: none !important;
    }
}