/* ==========================================================
   Fonts — self-hosted from public/fonts (same files Google Fonts served)
   Raleway is a variable font: one file covers weights 300–600.
   ========================================================== */
@font-face {
    font-family: "Raleway";
    src: url("public/fonts/raleway-variable-latin-ext.woff2") format("woff2");
    font-weight: 300 600;
    font-style: normal;
    font-display: swap;
    unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}

@font-face {
    font-family: "Raleway";
    src: url("public/fonts/raleway-variable-latin.woff2") format("woff2");
    font-weight: 300 600;
    font-style: normal;
    font-display: swap;
    unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

@font-face {
    font-family: "Cormorant Garamond";
    src: url("public/fonts/cormorant-garamond-500-italic-latin-ext.woff2") format("woff2");
    font-weight: 500;
    font-style: italic;
    font-display: swap;
    unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}

@font-face {
    font-family: "Cormorant Garamond";
    src: url("public/fonts/cormorant-garamond-500-italic-latin.woff2") format("woff2");
    font-weight: 500;
    font-style: italic;
    font-display: swap;
    unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

/* ==========================================================
   Lip Filler St. Pete — brand tokens (sampled from logo.png)
   ========================================================== */
:root {
    --lps-espresso: #3c2413;
    --lps-night: #22140a;
    --lps-bronze: #947253;
    --lps-bronze-soft: #c9a57f;
    --lps-ivory: #f3eadf;
    --lps-cream: #f8f3ec;
    --lps-ivory-muted: rgba(243, 234, 223, 0.78);
    --lps-hairline: rgba(201, 165, 127, 0.22);
    --lps-font-body: "Raleway", "Helvetica Neue", Arial, sans-serif;
    --lps-font-accent: "Cormorant Garamond", Georgia, "Times New Roman", serif;
    --lps-gutter: clamp(1.25rem, 5.5vw, 6rem);
    --lps-track-max: 1400px;
    --lps-masthead-h: 4.75rem;
    --lps-ease: cubic-bezier(0.22, 0.61, 0.36, 1);
}

@media (min-width: 1080px) {
    :root {
        --lps-masthead-h: 6.5rem;
    }
}

/* ==========================================================
   Base
   ========================================================== */
*,
*::before,
*::after {
    box-sizing: border-box;
}

html {
    -webkit-text-size-adjust: 100%;
    scroll-padding-top: 1.5rem;
}

@media (prefers-reduced-motion: no-preference) {
    html {
        scroll-behavior: smooth;
    }
}

.lps_body {
    margin: 0;
    background: var(--lps-cream);
    color: var(--lps-espresso);
    font-family: var(--lps-font-body);
    font-size: 1rem;
    line-height: 1.6;
    -webkit-font-smoothing: antialiased;
}

img {
    display: block;
    max-width: 100%;
    height: auto;
}

a {
    color: inherit;
}

:focus-visible {
    outline: 2px solid var(--lps-bronze-soft);
    outline-offset: 4px;
}

.lps_page_main:focus {
    outline: none;
}

.lps_visually_hidden {
    position: absolute;
    width: 1px;
    height: 1px;
    margin: -1px;
    padding: 0;
    overflow: hidden;
    clip: rect(0 0 0 0);
    white-space: nowrap;
    border: 0;
}

.lps_skip_link {
    position: absolute;
    top: 0.75rem;
    left: 0.75rem;
    z-index: 100;
    padding: 0.75rem 1.25rem;
    background: var(--lps-ivory);
    color: var(--lps-night);
    font-size: 0.875rem;
    font-weight: 600;
    text-decoration: none;
    transform: translateY(-160%);
    transition: transform 0.2s var(--lps-ease);
}

.lps_skip_link:focus {
    transform: translateY(0);
}

/* ==========================================================
   Masthead (header + primary navigation)
   ========================================================== */
.lps_masthead {
    position: relative;
    z-index: 50;
    background: var(--lps-night);
    color: var(--lps-ivory);
}

.lps_masthead_track {
    display: grid;
    grid-template-columns: 1fr auto;
    align-items: center;
    column-gap: 1.5rem;
    max-width: var(--lps-track-max);
    min-height: var(--lps-masthead-h);
    margin-inline: auto;
    padding-inline: var(--lps-gutter);
}

.lps_masthead_brand {
    justify-self: start;
    border-radius: 2px;
}

/* Logo boxes are fixed by CSS; contain keeps any replacement logo undistorted inside them */
.lps_masthead_wordmark {
    width: clamp(10rem, 44vw, 11.5rem);
    aspect-ratio: 600 / 121;
    object-fit: contain;
    object-position: left center;
}

.lps_masthead_monogram {
    display: none;
    aspect-ratio: 200 / 188;
    object-fit: contain;
}

/* ---------- Mobile toggle ---------- */
.lps_masthead_toggle {
    display: none;
    position: relative;
    width: 2.75rem;
    height: 2.75rem;
    margin-right: -0.5rem;
    padding: 0;
    background: none;
    border: 0;
    color: var(--lps-ivory);
    cursor: pointer;
}

.lps_js .lps_masthead_toggle {
    display: block;
}

.lps_toggle_lines,
.lps_toggle_lines::before,
.lps_toggle_lines::after {
    position: absolute;
    left: 50%;
    width: 1.5rem;
    height: 1px;
    background: currentColor;
    transition: transform 0.3s var(--lps-ease), background-color 0.2s linear;
}

.lps_toggle_lines {
    top: 50%;
    transform: translate(-50%, -50%);
}

.lps_toggle_lines::before,
.lps_toggle_lines::after {
    content: "";
    transform: translateX(-50%);
}

.lps_toggle_lines::before {
    top: -7px;
}

.lps_toggle_lines::after {
    top: 7px;
    width: 1rem;
    margin-left: 0.25rem;
}

.lps_masthead_toggle[aria-expanded="true"] .lps_toggle_lines {
    background: transparent;
}

.lps_masthead_toggle[aria-expanded="true"] .lps_toggle_lines::before {
    transform: translate(-50%, 7px) rotate(45deg);
}

.lps_masthead_toggle[aria-expanded="true"] .lps_toggle_lines::after {
    width: 1.5rem;
    margin-left: 0;
    transform: translate(-50%, -7px) rotate(-45deg);
}

/* ---------- Navigation: mobile panel ---------- */
.lps_masthead_nav {
    display: flex;
    flex-direction: column;
    gap: 1.75rem;
}

.lps_nav_list {
    display: flex;
    flex-direction: column;
    margin: 0;
    padding: 0;
    list-style: none;
}

.lps_nav_link {
    position: relative;
    display: inline-block;
    padding: 0.85rem 0;
    color: var(--lps-ivory);
    font-size: 1.0625rem;
    font-weight: 400;
    letter-spacing: 0.02em;
    text-decoration: none;
    transition: color 0.25s var(--lps-ease);
}

.lps_nav_link::after {
    content: "";
    position: absolute;
    left: 0;
    right: 0;
    bottom: 0.5rem;
    height: 1px;
    background: var(--lps-bronze-soft);
    transform: scaleX(0);
    transform-origin: left;
    transition: transform 0.35s var(--lps-ease);
}

.lps_nav_link:hover {
    color: var(--lps-bronze-soft);
}

.lps_nav_link:hover::after,
.lps_nav_link[aria-current="page"]::after {
    transform: scaleX(1);
}

.lps_masthead_cta {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 2.75rem;
    padding: 0.625rem 1.5rem;
    border: 1px solid var(--lps-bronze-soft);
    color: var(--lps-ivory);
    font-size: 0.75rem;
    font-weight: 600;
    letter-spacing: 0.18em;
    text-transform: uppercase;
    text-decoration: none;
    transition: background-color 0.3s var(--lps-ease), color 0.3s var(--lps-ease);
}

.lps_masthead_cta:hover {
    background: var(--lps-bronze-soft);
    color: var(--lps-night);
}

@media (max-width: 1079.98px) {
    .lps_js .lps_masthead_nav {
        position: absolute;
        top: 100%;
        left: 0;
        right: 0;
        padding: 0.5rem var(--lps-gutter) 2rem;
        background: var(--lps-night);
        border-top: 1px solid var(--lps-hairline);
        box-shadow: 0 30px 40px -24px rgba(0, 0, 0, 0.55);
        opacity: 0;
        visibility: hidden;
        transform: translateY(-0.5rem);
        transition: opacity 0.3s var(--lps-ease), transform 0.3s var(--lps-ease), visibility 0s linear 0.3s;
    }

    .lps_js .lps_masthead.lps_is_open .lps_masthead_nav {
        opacity: 1;
        visibility: visible;
        transform: none;
        transition-delay: 0s;
    }

    /* Without JS the links simply sit below the logo */
    html:not(.lps_js) .lps_masthead_nav {
        grid-column: 1 / -1;
        padding-bottom: 1.5rem;
    }

    .lps_nav_list li + li {
        border-top: 1px solid var(--lps-hairline);
    }
}

/* ---------- Navigation: desktop (wordmark | monogram | links) ---------- */
/* 1080–1359px: the links need more than half the row, so the three items are spaced
   evenly and the monogram sits midway between wordmark and links */
@media (min-width: 1080px) {
    .lps_masthead_track {
        grid-template-columns: auto auto auto;
        justify-content: space-between;
        column-gap: 2rem;
    }

    .lps_masthead_wordmark {
        width: 13.5rem;
    }

    .lps_masthead_monogram {
        display: block;
        width: auto;
        height: 3.75rem;
    }

    .lps_masthead_toggle,
    .lps_js .lps_masthead_toggle {
        display: none;
    }

    /* Gaps stop growing at the same point the 1400px track stops growing */
    .lps_masthead_nav {
        justify-self: end;
        flex-direction: row;
        align-items: center;
        gap: clamp(1.5rem, 2.4vw, 2rem);
    }

    .lps_nav_list {
        flex-direction: row;
        gap: clamp(1.25rem, 2.2vw, 1.875rem);
    }

    .lps_nav_link {
        padding: 0.5rem 0.125rem;
        font-size: 0.9375rem;
        white-space: nowrap;
    }

    .lps_nav_link::after {
        left: -0.375rem;
        right: -0.375rem;
        bottom: -0.25rem;
    }

    .lps_masthead_cta {
        white-space: nowrap;
    }
}

/* 1360px+: enough room for the monogram to sit at the exact centre of the row */
@media (min-width: 1360px) {
    .lps_masthead_track {
        grid-template-columns: 1fr auto 1fr;
    }
}

/* ==========================================================
   Hero stage — centered headline over a two-image diptych
   ========================================================== */
.lps_hero_stage {
    padding: clamp(2rem, 4.5vw, 3.5rem) var(--lps-gutter) clamp(2.5rem, 4.5vw, 4rem);
    background: var(--lps-night);
    color: var(--lps-ivory);
    text-align: center;
}

.lps_hero_copy {
    max-width: 72rem;
    margin-inline: auto;
}

.lps_hero_title {
    margin: 0;
    font-size: clamp(1.75rem, 0.85rem + 3.8vw, 3.9rem);
    font-weight: 300;
    line-height: 1.14;
    letter-spacing: 0.015em;
    text-transform: uppercase;
    text-wrap: balance;
}

.lps_hero_accent {
    font-family: var(--lps-font-accent);
    font-size: 1.14em;
    font-style: italic;
    font-weight: 500;
    letter-spacing: 0;
    line-height: 1;
    text-transform: none;
    white-space: nowrap;
    color: var(--lps-bronze-soft);
}

.lps_hero_lede {
    max-width: 40rem;
    margin: clamp(1.1rem, 2vw, 1.6rem) auto 0;
    color: var(--lps-ivory-muted);
    font-size: clamp(0.95rem, 0.9rem + 0.25vw, 1.0625rem);
    line-height: 1.7;
    text-wrap: pretty;
}

/* Same button as the header "Book Now" */
.lps_hero_cta {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 2.75rem;
    margin-top: clamp(1.5rem, 3vw, 2.25rem);
    padding: 0.625rem 1.75rem;
    border: 1px solid var(--lps-bronze-soft);
    color: var(--lps-ivory);
    font-size: 0.75rem;
    font-weight: 600;
    letter-spacing: 0.18em;
    text-transform: uppercase;
    text-decoration: none;
    transition: background-color 0.3s var(--lps-ease), color 0.3s var(--lps-ease);
}

.lps_hero_cta:hover {
    background: var(--lps-bronze-soft);
    color: var(--lps-night);
}

.lps_hero_diptych {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: clamp(0.5rem, 1.2vw, 1.125rem);
    max-width: calc(var(--lps-track-max) - 2 * var(--lps-gutter));
    margin: clamp(2rem, 4.5vw, 3.75rem) auto 0;
}

/* Frame shape comes from CSS, never from the file: any photo is cropped to fit, not stretched */
.lps_hero_shot {
    width: 100%;
    min-width: 0;
    aspect-ratio: 1000 / 980;
    object-fit: cover;
    object-position: 50% 50%;
    background: rgba(201, 165, 127, 0.12);
}

/* Landscape source: keep the face and syringe centred in the near-square crop */
.lps_hero_shot_treatment {
    object-position: 45% 50%;
}

/* ==========================================================
   About — editorial headline, layered espresso panel,
   copy column and an overlapping points card
   ========================================================== */
.lps_about {
    padding: clamp(4.5rem, 8vw, 7.5rem) var(--lps-gutter);
    background: var(--lps-cream);
    color: var(--lps-espresso);
}

.lps_about_shell {
    display: grid;
    gap: clamp(2.5rem, 5vw, 3.5rem);
    max-width: calc(var(--lps-track-max) - 2 * var(--lps-gutter));
    margin-inline: auto;
}

/* ---------- Label + heading ---------- */
.lps_about_label {
    display: flex;
    align-items: center;
    gap: 0.875rem;
    margin: 0 0 1.25rem;
    color: var(--lps-bronze);
    font-size: 0.75rem;
    font-weight: 600;
    letter-spacing: 0.24em;
    text-transform: uppercase;
}

.lps_about_index {
    display: inline-flex;
    align-items: center;
    gap: 0.875rem;
    color: var(--lps-espresso);
}

.lps_about_index::after {
    content: "";
    width: 2.5rem;
    height: 1px;
    background: var(--lps-bronze);
}

.lps_about_title {
    max-width: 22ch;
    margin: 0;
    font-size: clamp(1.85rem, 1.05rem + 2.7vw, 3.35rem);
    font-weight: 300;
    line-height: 1.14;
    letter-spacing: 0.01em;
    text-transform: uppercase;
    text-wrap: balance;
}

.lps_about_accent {
    font-family: var(--lps-font-accent);
    font-size: 1.14em;
    font-style: italic;
    font-weight: 500;
    letter-spacing: 0;
    line-height: 1;
    text-transform: none;
    color: var(--lps-bronze);
}

/* ---------- Photo panel with offset frame ---------- */
.lps_about_panel {
    position: relative;
    isolation: isolate;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: flex-end;
    gap: 1.5rem;
    min-height: 26rem;
    margin: 0 0.75rem 0.75rem 0;
    padding: clamp(2.75rem, 6vw, 4rem) clamp(1.75rem, 4vw, 3rem) clamp(2rem, 4vw, 2.75rem);
    background: var(--lps-night);
    color: var(--lps-ivory);
    text-align: center;
}

.lps_about_panel::before {
    content: "";
    position: absolute;
    inset: 0.75rem -0.75rem -0.75rem 0.75rem;
    z-index: -1;
    border: 1px solid var(--lps-bronze);
    opacity: 0.55;
}

/* Warm tint ties the monochrome photo to the espresso palette */
.lps_about_photo {
    position: absolute;
    inset: 0;
    z-index: -1;
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: 30% 0%;
    filter: sepia(0.35) brightness(0.92);
}

/* Shade for legible type over the photo, plus the inner hairline frame */
.lps_about_panel::after {
    content: "";
    position: absolute;
    inset: 0;
    z-index: -1;
    background: linear-gradient(to top, rgba(34, 20, 10, 0.92) 0%, rgba(34, 20, 10, 0.62) 38%, rgba(34, 20, 10, 0) 70%);
    outline: 1px solid var(--lps-hairline);
    outline-offset: -0.875rem;
    pointer-events: none;
}

.lps_about_statement {
    max-width: 17ch;
    margin: 0;
    font-family: var(--lps-font-accent);
    font-size: clamp(1.6rem, 1.15rem + 1.5vw, 2.35rem);
    font-style: italic;
    font-weight: 500;
    line-height: 1.25;
    text-wrap: balance;
}

.lps_about_place {
    display: flex;
    align-items: center;
    gap: 0.875rem;
    margin: 0;
    color: var(--lps-bronze-soft);
    font-size: 0.6875rem;
    font-weight: 600;
    letter-spacing: 0.26em;
    text-transform: uppercase;
}

.lps_about_place::before,
.lps_about_place::after {
    content: "";
    width: 1.75rem;
    height: 1px;
    background: currentColor;
    opacity: 0.6;
}

/* ---------- Copy column ---------- */
.lps_about_text {
    max-width: 36rem;
    margin: 0 0 1.25rem;
    color: rgba(60, 36, 19, 0.84);
    font-size: clamp(0.975rem, 0.94rem + 0.15vw, 1.0625rem);
    line-height: 1.8;
}

.lps_about_text:first-child::first-line {
    color: var(--lps-espresso);
    font-weight: 500;
}

.lps_about_link {
    display: inline-flex;
    align-items: center;
    gap: 0.75rem;
    margin-top: 1rem;
    padding-bottom: 0.5rem;
    border-bottom: 1px solid var(--lps-bronze);
    color: var(--lps-espresso);
    font-size: 0.75rem;
    font-weight: 600;
    letter-spacing: 0.18em;
    text-transform: uppercase;
    text-decoration: none;
    transition: border-color 0.3s var(--lps-ease);
}

.lps_about_arrow {
    width: 1.125rem;
    height: 1.125rem;
    transition: transform 0.35s var(--lps-ease);
}

.lps_about_link:hover {
    border-color: var(--lps-espresso);
}

.lps_about_link:hover .lps_about_arrow {
    transform: translateX(0.3rem);
}

.lps_about_link:focus-visible {
    outline-color: var(--lps-bronze);
}

/* ---------- Points card ---------- */
.lps_about_points {
    display: grid;
    gap: 1.75rem;
    margin: 0;
    padding: clamp(1.75rem, 3.5vw, 2.5rem);
    background: #fffdf9;
    border: 1px solid rgba(148, 114, 83, 0.18);
    box-shadow: 0 30px 60px -40px rgba(34, 20, 10, 0.35);
    list-style: none;
    counter-reset: lps-about-point;
}

.lps_about_point {
    counter-increment: lps-about-point;
}

.lps_about_point + .lps_about_point {
    padding-top: 1.75rem;
    border-top: 1px solid rgba(148, 114, 83, 0.18);
}

.lps_about_point::before {
    content: counter(lps-about-point, decimal-leading-zero);
    display: block;
    margin-bottom: 0.5rem;
    color: var(--lps-bronze);
    font-family: var(--lps-font-accent);
    font-size: 1.75rem;
    font-style: italic;
    font-weight: 500;
    line-height: 1;
}

.lps_about_point_title {
    margin: 0 0 0.4rem;
    font-size: 0.8125rem;
    font-weight: 600;
    letter-spacing: 0.16em;
    text-transform: uppercase;
}

.lps_about_point_text {
    margin: 0;
    color: rgba(60, 36, 19, 0.78);
    font-size: 0.9375rem;
    line-height: 1.65;
}

/* ---------- Tablet: points side by side ---------- */
@media (min-width: 720px) {
    .lps_about_panel {
        min-height: 32rem;
    }

    .lps_about_points {
        grid-template-columns: repeat(3, 1fr);
    }

    .lps_about_point + .lps_about_point {
        padding-top: 0;
        padding-left: 1.75rem;
        border-top: 0;
        border-left: 1px solid rgba(148, 114, 83, 0.18);
    }
}

/* ---------- Desktop: 12-column editorial grid ---------- */
@media (min-width: 1080px) {
    .lps_about_shell {
        grid-template-columns: repeat(12, 1fr);
        grid-template-rows: auto auto auto;
        column-gap: clamp(1.5rem, 2.5vw, 2.5rem);
        row-gap: 0;
    }

    .lps_about_head {
        grid-column: 1 / 10;
        grid-row: 1;
        margin-bottom: clamp(3rem, 5vw, 4.5rem);
    }

    .lps_about_panel {
        grid-column: 1 / 6;
        grid-row: 2 / 4;
        min-height: 34rem;
        margin: 0 1rem 1rem 0;
    }

    .lps_about_panel::before {
        inset: 1rem -1rem -1rem 1rem;
    }

    .lps_about_copy {
        grid-column: 7 / 13;
        grid-row: 2;
        padding-bottom: clamp(2.5rem, 4vw, 3.5rem);
    }

    .lps_about_points {
        position: relative;
        z-index: 1;
        grid-column: 5 / 13;
        grid-row: 3;
        align-self: end;
        margin-bottom: -2.5rem;
    }
}

/* ==========================================================
   What Is Lip Filler — split intro, can / can't comparison,
   filler reference table and closing note
   ========================================================== */
.lps_info {
    padding: clamp(4.5rem, 8vw, 7.5rem) var(--lps-gutter);
    background: #efe7dc;
    color: var(--lps-espresso);
}

.lps_info_shell {
    max-width: calc(var(--lps-track-max) - 2 * var(--lps-gutter));
    margin-inline: auto;
}

/* ---------- Intro ---------- */
.lps_info_intro {
    display: grid;
    gap: clamp(1.5rem, 3vw, 2rem);
}

.lps_info_eyebrow {
    display: flex;
    align-items: center;
    gap: 0.875rem;
    margin: 0 0 1.25rem;
    color: #7a5a3e;
    font-size: 0.75rem;
    font-weight: 600;
    letter-spacing: 0.24em;
    text-transform: uppercase;
}

.lps_info_index {
    display: inline-flex;
    align-items: center;
    gap: 0.875rem;
    color: var(--lps-espresso);
}

.lps_info_index::after {
    content: "";
    width: 2.5rem;
    height: 1px;
    background: var(--lps-bronze);
}

.lps_info_title {
    max-width: 18ch;
    margin: 0;
    font-size: clamp(1.85rem, 1.05rem + 2.7vw, 3.35rem);
    font-weight: 300;
    line-height: 1.14;
    letter-spacing: 0.01em;
    text-transform: uppercase;
    text-wrap: balance;
}

.lps_info_accent {
    font-family: var(--lps-font-accent);
    font-size: 1.14em;
    font-style: italic;
    font-weight: 500;
    letter-spacing: 0;
    line-height: 1;
    text-transform: none;
    white-space: nowrap;
    color: var(--lps-bronze);
}

.lps_info_text {
    max-width: 34rem;
    margin: 0 0 1.25rem;
    color: rgba(60, 36, 19, 0.84);
    font-size: clamp(0.975rem, 0.94rem + 0.15vw, 1.0625rem);
    line-height: 1.8;
}

.lps_info_text:last-child {
    margin-bottom: 0;
}

/* ---------- Can / can't ---------- */
.lps_info_compare {
    display: grid;
    margin-top: clamp(3rem, 6vw, 5rem);
    border-top: 1px solid rgba(60, 36, 19, 0.35);
}

.lps_info_can,
.lps_info_cant {
    padding: clamp(2rem, 4vw, 3.25rem) 0;
}

.lps_info_cant {
    margin-inline: calc(var(--lps-gutter) * -1);
    padding-inline: var(--lps-gutter);
    background: var(--lps-night);
    color: var(--lps-ivory);
}

.lps_info_compare_title {
    display: flex;
    align-items: baseline;
    gap: 0.6rem;
    margin: 0 0 1.5rem;
    font-size: 0.8125rem;
    font-weight: 600;
    letter-spacing: 0.2em;
    text-transform: uppercase;
}

.lps_info_compare_word {
    font-family: var(--lps-font-accent);
    font-size: 2.25rem;
    font-style: italic;
    font-weight: 500;
    letter-spacing: 0;
    line-height: 1;
    text-transform: none;
    color: var(--lps-bronze);
}

.lps_info_cant .lps_info_compare_word {
    color: var(--lps-bronze-soft);
}

.lps_info_list {
    margin: 0;
    padding: 0;
    list-style: none;
}

.lps_info_list li {
    position: relative;
    padding: 0.95rem 0 0.95rem 2rem;
    font-size: 1rem;
    line-height: 1.6;
}

.lps_info_list li + li {
    border-top: 1px solid rgba(148, 114, 83, 0.22);
}

.lps_info_list li::before {
    position: absolute;
    left: 0;
    top: 0.75rem;
    font-family: var(--lps-font-accent);
    font-size: 1.5rem;
    line-height: 1;
    color: var(--lps-bronze);
}

.lps_info_can .lps_info_list li::before {
    content: "+" / "";
}

.lps_info_cant .lps_info_list li {
    color: var(--lps-ivory-muted);
}

.lps_info_cant .lps_info_list li + li {
    border-top-color: var(--lps-hairline);
}

.lps_info_cant .lps_info_list li::before {
    content: "\2013" / "";
    color: var(--lps-bronze-soft);
}

.lps_info_cant strong {
    color: var(--lps-ivory);
    font-weight: 500;
}

/* ---------- Fillers ---------- */
.lps_info_fillers {
    margin-top: clamp(3.5rem, 7vw, 5.5rem);
}

.lps_info_fillers_head {
    display: grid;
    gap: 1rem;
    margin-bottom: clamp(1.5rem, 3vw, 2.25rem);
}

.lps_info_fillers_title {
    margin: 0;
    font-size: clamp(1.35rem, 1.05rem + 1vw, 1.9rem);
    font-weight: 300;
    letter-spacing: 0.04em;
    line-height: 1.2;
    text-transform: uppercase;
}

.lps_info_fillers_lead {
    max-width: 30rem;
    margin: 0;
    color: rgba(60, 36, 19, 0.78);
    font-size: 0.9375rem;
    line-height: 1.7;
}

/* ---------- Filler cards: 1 col → 2 col (tablet) → 3 + 2 (desktop) ---------- */
.lps_filler_grid {
    display: grid;
    gap: clamp(1rem, 1.6vw, 1.5rem);
}

.lps_filler_card {
    position: relative;
    display: flex;
    flex-direction: column;
    padding: clamp(1.75rem, 2.6vw, 2.375rem);
    background: #fbf8f3;
    border: 1px solid rgba(148, 114, 83, 0.24);
    transition: transform 0.4s var(--lps-ease), border-color 0.4s var(--lps-ease), box-shadow 0.4s var(--lps-ease);
}

/* Thin espresso accent along the top-left edge */
.lps_filler_card::before {
    content: "";
    position: absolute;
    top: -1px;
    left: -1px;
    width: 3rem;
    height: 1px;
    background: var(--lps-espresso);
    transition: width 0.5s var(--lps-ease);
}

.lps_filler_card:hover {
    transform: translateY(-3px);
    border-color: rgba(148, 114, 83, 0.5);
    box-shadow: 0 18px 36px -30px rgba(34, 20, 10, 0.45);
}

.lps_filler_card:hover::before {
    width: 5rem;
}

.lps_filler_number {
    display: flex;
    align-items: center;
    gap: 0.875rem;
    margin-bottom: clamp(1.5rem, 2.5vw, 2.25rem);
    color: var(--lps-bronze);
    font-family: var(--lps-font-accent);
    font-size: 1.375rem;
    font-style: italic;
    font-weight: 500;
    line-height: 1;
}

.lps_filler_number::after {
    content: "";
    flex: 1;
    height: 1px;
    background: rgba(148, 114, 83, 0.24);
}

.lps_filler_name {
    margin: 0 0 clamp(1.5rem, 2.5vw, 2rem);
    color: var(--lps-espresso);
    font-size: clamp(1.25rem, 1.1rem + 0.45vw, 1.5rem);
    font-weight: 500;
    line-height: 1.25;
    letter-spacing: 0.005em;
}

.lps_filler_specs {
    display: grid;
    align-items: start;
    margin: 0;
}

.lps_filler_detail + .lps_filler_detail {
    margin-top: 1.1rem;
    padding-top: 1.1rem;
    border-top: 1px solid rgba(148, 114, 83, 0.2);
}

.lps_filler_label {
    margin-bottom: 0.35rem;
    color: #7a5a3e;
    font-size: 0.6875rem;
    font-weight: 600;
    letter-spacing: 0.2em;
    text-transform: uppercase;
}

.lps_filler_value {
    margin: 0;
    color: rgba(60, 36, 19, 0.86);
    font-size: 0.975rem;
    line-height: 1.6;
}

.lps_filler_tag {
    display: inline-block;
    margin-top: 0.4rem;
    padding: 0.2rem 0.6rem;
    border: 1px solid rgba(148, 114, 83, 0.45);
    color: var(--lps-espresso);
    font-size: 0.75rem;
    font-weight: 500;
    letter-spacing: 0.04em;
}

@media (min-width: 720px) {
    .lps_filler_grid {
        grid-template-columns: repeat(2, 1fr);
    }

    .lps_filler_card:last-child {
        grid-column: 1 / -1;
    }
}

@media (min-width: 1080px) {
    .lps_filler_grid {
        grid-template-columns: repeat(6, 1fr);
    }

    .lps_filler_card {
        grid-column: span 2;
    }

    /* Second row: two wider cards fill the width, details sit side by side */
    .lps_filler_card:nth-child(n + 4),
    .lps_filler_card:last-child {
        grid-column: span 3;
    }

    .lps_filler_card:nth-child(n + 4) .lps_filler_specs {
        grid-template-columns: 1fr 1fr;
        column-gap: 2rem;
    }

    .lps_filler_card:nth-child(n + 4) .lps_filler_detail + .lps_filler_detail {
        margin-top: 0;
        padding-top: 0;
        padding-left: 2rem;
        border-top: 0;
        border-left: 1px solid rgba(148, 114, 83, 0.2);
    }
}

@media (prefers-reduced-motion: reduce) {
    .lps_filler_card:hover {
        transform: none;
    }
}

/* ---------- Closing note ---------- */
.lps_info_note {
    display: grid;
    grid-template-columns: auto 1fr;
    gap: 1.25rem;
    max-width: 48rem;
    margin: clamp(2rem, 4vw, 2.75rem) 0 0;
    color: var(--lps-espresso);
    font-size: 0.975rem;
    line-height: 1.75;
}

.lps_info_note::before {
    content: "";
    width: 2.5rem;
    height: 1px;
    margin-top: 0.85rem;
    background: var(--lps-bronze);
}

/* ---------- Tablet ---------- */
@media (min-width: 720px) {
    .lps_info_compare {
        grid-template-columns: 1fr 1fr;
    }

    .lps_info_can {
        padding-right: clamp(2rem, 4vw, 3.5rem);
    }

    .lps_info_cant {
        margin-inline: 0;
        padding-inline: clamp(2rem, 4vw, 3.5rem);
    }
}

/* ---------- Desktop ---------- */
@media (min-width: 1080px) {
    .lps_info_intro {
        grid-template-columns: repeat(12, 1fr);
        column-gap: clamp(1.5rem, 2.5vw, 2.5rem);
        align-items: end;
    }

    .lps_info_head {
        grid-column: 1 / 7;
    }

    .lps_info_body {
        grid-column: 8 / 13;
    }

    .lps_info_fillers_head {
        grid-template-columns: 1fr auto;
        align-items: end;
        gap: 2rem;
    }

    .lps_info_fillers_lead {
        text-align: right;
    }
}

/* ==========================================================
   Treatment Areas — dark editorial index: sticky intro beside
   a two-column numbered list separated by hairlines
   ========================================================== */
.lps_areas {
    padding: clamp(4.5rem, 8vw, 7.5rem) var(--lps-gutter);
    background: var(--lps-night);
    color: var(--lps-ivory);
}

.lps_areas_shell {
    display: grid;
    gap: clamp(2.75rem, 5vw, 4rem);
    max-width: calc(var(--lps-track-max) - 2 * var(--lps-gutter));
    margin-inline: auto;
}

/* ---------- Intro ---------- */
.lps_areas_eyebrow {
    display: flex;
    align-items: center;
    gap: 0.875rem;
    margin: 0 0 1.25rem;
    color: var(--lps-bronze-soft);
    font-size: 0.75rem;
    font-weight: 600;
    letter-spacing: 0.24em;
    text-transform: uppercase;
}

.lps_areas_index {
    display: inline-flex;
    align-items: center;
    gap: 0.875rem;
    color: var(--lps-ivory);
}

.lps_areas_index::after {
    content: "";
    width: 2.5rem;
    height: 1px;
    background: var(--lps-bronze-soft);
}

.lps_areas_title {
    max-width: 14ch;
    margin: 0;
    font-size: clamp(1.85rem, 1.05rem + 2.7vw, 3.35rem);
    font-weight: 300;
    line-height: 1.14;
    letter-spacing: 0.01em;
    text-transform: uppercase;
    text-wrap: balance;
}

.lps_areas_accent {
    font-family: var(--lps-font-accent);
    font-size: 1.14em;
    font-style: italic;
    font-weight: 500;
    letter-spacing: 0;
    line-height: 1;
    text-transform: none;
    color: var(--lps-bronze-soft);
}

.lps_areas_lede {
    max-width: 26rem;
    margin: clamp(1.25rem, 2.5vw, 1.75rem) 0 0;
    color: var(--lps-ivory-muted);
    font-size: clamp(0.975rem, 0.94rem + 0.15vw, 1.0625rem);
    line-height: 1.8;
}

/* ---------- Numbered list ---------- */
.lps_areas_grid {
    display: grid;
    column-gap: clamp(2rem, 4vw, 3.5rem);
    margin: 0;
    padding: 0;
    border-bottom: 1px solid var(--lps-hairline);
    list-style: none;
}

.lps_area_card {
    position: relative;
    display: grid;
    grid-template-columns: auto 1fr;
    column-gap: 1.25rem;
    align-content: start;
    padding: clamp(1.75rem, 3vw, 2.25rem) 0 clamp(1.9rem, 3.2vw, 2.5rem);
    border-top: 1px solid var(--lps-hairline);
}

/* Accent line that draws across the top edge on hover */
.lps_area_card::before {
    content: "";
    position: absolute;
    top: -1px;
    left: 0;
    width: 2.5rem;
    height: 1px;
    background: var(--lps-bronze-soft);
    transition: width 0.6s var(--lps-ease);
}

.lps_area_card:hover::before {
    width: 100%;
}

/* Line icons: one stroke weight for every icon, tinted fill marks the treated area */
.lps_area_icon {
    grid-row: 1 / span 2;
    width: clamp(3rem, 2.6rem + 1vw, 3.5rem);
    margin-top: -0.6rem;
    color: rgba(201, 165, 127, 0.75);
    transition: color 0.4s var(--lps-ease);
}

.lps_area_icon svg {
    display: block;
    width: 100%;
    aspect-ratio: 1;
    overflow: visible;
    fill: none;
    stroke: currentColor;
    stroke-width: 1.25px;
    stroke-linecap: round;
    stroke-linejoin: round;
}

.lps_area_icon svg * {
    vector-effect: non-scaling-stroke;
}

.lps_area_icon .lps_area_tint {
    fill: currentColor;
    fill-opacity: 0.2;
}

.lps_area_icon .lps_area_trace {
    stroke-dasharray: 1.5 3;
}

.lps_area_icon .lps_area_soft {
    opacity: 0.65;
}

.lps_area_card:hover .lps_area_icon {
    color: var(--lps-bronze-soft);
}

.lps_area_name {
    margin: 0.2rem 0 0.7rem;
    color: var(--lps-ivory);
    font-size: 0.875rem;
    font-weight: 600;
    letter-spacing: 0.16em;
    line-height: 1.5;
    text-transform: uppercase;
}

.lps_area_text {
    grid-column: 2;
    max-width: 30rem;
    margin: 0;
    color: var(--lps-ivory-muted);
    font-size: 0.975rem;
    line-height: 1.7;
}

/* ---------- Tablet: two-column list ---------- */
@media (min-width: 720px) {
    .lps_areas_grid {
        grid-template-columns: 1fr 1fr;
    }
}

/* ---------- Desktop: sticky intro beside the list ---------- */
@media (min-width: 1080px) {
    .lps_areas_shell {
        grid-template-columns: repeat(12, 1fr);
        column-gap: clamp(1.5rem, 2.5vw, 2.5rem);
    }

    .lps_areas_intro {
        position: sticky;
        top: 2.5rem;
        grid-column: 1 / 5;
        align-self: start;
    }

    .lps_areas_grid {
        grid-column: 6 / 13;
    }
}

/* Pricing */
.lps_pricing {
    --lps-pricing-line: rgba(148, 114, 83, 0.26);
    --lps-pricing-label: #7a5a3e;
    padding: clamp(4.5rem, 8vw, 7.5rem) var(--lps-gutter);
    background: var(--lps-cream);
    color: var(--lps-espresso);
}

.lps_pricing_shell {
    max-width: calc(var(--lps-track-max) - 2 * var(--lps-gutter));
    margin-inline: auto;
}

.lps_pricing_intro {
    max-width: 44rem;
    margin: 0 auto clamp(3rem, 6vw, 4.5rem);
    text-align: center;
}

.lps_pricing_eyebrow {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 0.875rem;
    margin: 0 0 1.25rem;
    color: var(--lps-pricing-label);
    font-size: 0.75rem;
    font-weight: 600;
    letter-spacing: 0.24em;
    text-transform: uppercase;
}

.lps_pricing_index {
    display: inline-flex;
    align-items: center;
    gap: 0.875rem;
    color: var(--lps-espresso);
}

.lps_pricing_index::after {
    content: "";
    width: 2.5rem;
    height: 1px;
    background: var(--lps-bronze);
}

.lps_pricing_title {
    margin: 0;
    font-size: clamp(1.85rem, 1.05rem + 2.7vw, 3.35rem);
    font-weight: 300;
    line-height: 1.14;
    letter-spacing: 0.01em;
    text-transform: uppercase;
}

.lps_pricing_accent {
    font-family: var(--lps-font-accent);
    font-size: 1.14em;
    font-style: italic;
    font-weight: 500;
    letter-spacing: 0;
    line-height: 1;
    text-transform: none;
    color: var(--lps-bronze);
}

.lps_pricing_text {
    max-width: 34rem;
    margin: clamp(1.1rem, 2vw, 1.5rem) auto 0;
    color: rgba(60, 36, 19, 0.84);
    font-size: clamp(0.975rem, 0.94rem + 0.15vw, 1.0625rem);
    line-height: 1.8;
}

/* ---------- Price cards ---------- */
.lps_pricing_grid {
    display: grid;
    gap: 1.25rem;
}

.lps_price_card {
    position: relative;
    display: flex;
    flex-direction: column;
    padding: clamp(2rem, 3.5vw, 2.75rem);
    background: #fffdf9;
    border: 1px solid var(--lps-pricing-line);
    text-align: center;
}

.lps_price_label {
    margin: 0;
    font-size: 0.8125rem;
    font-weight: 600;
    letter-spacing: 0.22em;
    line-height: 1.5;
    text-transform: uppercase;
}

.lps_price_volume {
    display: block;
    margin-top: 0.3rem;
    color: var(--lps-bronze);
    font-family: var(--lps-font-accent);
    font-size: 1.375rem;
    font-style: italic;
    font-weight: 500;
    letter-spacing: 0;
    text-transform: none;
}

.lps_price_amount {
    margin: clamp(1.25rem, 2.5vw, 1.75rem) 0 1rem;
    font-size: clamp(2.25rem, 1.8rem + 1.4vw, 3rem);
    font-weight: 300;
    letter-spacing: 0.04em;
    line-height: 1;
}

.lps_price_line {
    max-width: 18rem;
    min-height: 3.2em;
    margin: 0 auto;
    color: rgba(60, 36, 19, 0.8);
    font-size: 0.975rem;
    line-height: 1.6;
}

.lps_price_includes {
    display: flex;
    align-items: center;
    gap: 0.875rem;
    margin: clamp(1.5rem, 3vw, 2rem) 0 1rem;
    color: var(--lps-pricing-label);
    font-size: 0.6875rem;
    font-weight: 600;
    letter-spacing: 0.22em;
    text-transform: uppercase;
}

.lps_price_includes::before,
.lps_price_includes::after {
    content: "";
    flex: 1;
    height: 1px;
    background: var(--lps-pricing-line);
}

.lps_price_list {
    display: grid;
    justify-content: center;
    gap: 0.7rem;
    margin: 0 0 clamp(2rem, 3.5vw, 2.5rem);
    padding: 0;
    list-style: none;
    text-align: left;
}

.lps_price_item {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    font-size: 0.9375rem;
    line-height: 1.5;
}

.lps_price_check {
    flex-shrink: 0;
    width: 1rem;
    height: 1rem;
    fill: none;
    stroke: var(--lps-bronze);
    stroke-width: 1.4;
    stroke-linecap: round;
    stroke-linejoin: round;
}

/* Same shape, type and hover as the header button, recoloured for light cards */
.lps_price_button,
.lps_price_button:visited {
    position: relative;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 0.75rem;
    min-height: 2.75rem;
    margin-top: auto;
    padding: 0.625rem 1.5rem;
    border: 1px solid var(--lps-espresso);
    color: var(--lps-espresso);
    font-size: 0.75rem;
    font-weight: 600;
    letter-spacing: 0.18em;
    text-transform: uppercase;
    text-decoration: none;
    transition: background-color 0.3s var(--lps-ease), color 0.3s var(--lps-ease), border-color 0.3s var(--lps-ease);
}

.lps_price_button:hover {
    background: var(--lps-espresso);
    color: var(--lps-ivory);
}

.lps_price_button:focus-visible {
    outline-color: var(--lps-bronze);
}

.lps_price_arrow {
    width: 1rem;
    height: 1rem;
    fill: none;
    stroke: currentColor;
    stroke-width: 1.4;
    transition: transform 0.35s var(--lps-ease);
}

.lps_price_button:hover .lps_price_arrow {
    transform: translateX(0.25rem);
}

/* Full syringe: espresso panel using the header button colours */
.lps_price_card_featured {
    background: var(--lps-night);
    border-color: var(--lps-night);
    color: var(--lps-ivory);
}

.lps_price_card_featured::before {
    content: "";
    position: absolute;
    inset: 0.625rem;
    border: 1px solid var(--lps-hairline);
    pointer-events: none;
}

.lps_price_card_featured .lps_price_volume,
.lps_price_card_featured .lps_price_check {
    color: var(--lps-bronze-soft);
    stroke: var(--lps-bronze-soft);
}

.lps_price_card_featured .lps_price_line {
    color: var(--lps-ivory-muted);
}

.lps_price_card_featured .lps_price_includes {
    color: var(--lps-bronze-soft);
}

.lps_price_card_featured .lps_price_includes::before,
.lps_price_card_featured .lps_price_includes::after {
    background: var(--lps-hairline);
}

.lps_price_card_featured .lps_price_button,
.lps_price_card_featured .lps_price_button:visited {
    border-color: var(--lps-bronze-soft);
    color: var(--lps-ivory);
}

.lps_price_card_featured .lps_price_button:hover {
    background: var(--lps-bronze-soft);
    color: var(--lps-night);
}

.lps_price_card_featured .lps_price_button:focus-visible {
    outline-color: var(--lps-bronze-soft);
}

.lps_pricing_note {
    max-width: 40rem;
    margin: clamp(2rem, 4vw, 3rem) auto 0;
    color: rgba(60, 36, 19, 0.7);
    font-size: 0.8125rem;
    line-height: 1.7;
    text-align: center;
}

/* ---------- Tablet: two columns, third centred below ---------- */
@media (min-width: 720px) {
    .lps_pricing_grid {
        grid-template-columns: 1fr 1fr;
    }

    .lps_price_label {
        min-height: 3.6rem;
    }

    .lps_price_card:last-child {
        grid-column: 1 / -1;
        justify-self: center;
        width: calc(50% - 0.625rem);
    }
}

/* ---------- Desktop: three joined columns, centre panel raised ---------- */
@media (min-width: 1080px) {
    .lps_pricing_grid {
        grid-template-columns: repeat(3, 1fr);
        gap: 0;
        align-items: stretch;
        padding-block: 1.5rem;
    }

    .lps_price_card:last-child {
        grid-column: auto;
        justify-self: stretch;
        width: auto;
    }

    .lps_price_card + .lps_price_card {
        margin-left: -1px;
    }

    .lps_price_card_featured {
        z-index: 1;
        margin-block: -1.5rem;
        padding-block: calc(clamp(2rem, 3.5vw, 2.75rem) + 1.5rem);
    }
}

/* Why Choose Us */
.lps_why {
    padding: clamp(4.5rem, 8vw, 7.5rem) var(--lps-gutter);
    background: var(--lps-night);
    color: var(--lps-ivory);
}

.lps_why_shell {
    max-width: calc(var(--lps-track-max) - 2 * var(--lps-gutter));
    margin-inline: auto;
}

.lps_why_intro {
    display: grid;
    gap: clamp(1.25rem, 2.5vw, 1.75rem);
    margin-bottom: clamp(3rem, 6vw, 4.5rem);
}

.lps_why_eyebrow {
    display: flex;
    align-items: center;
    gap: 0.875rem;
    margin: 0 0 1.25rem;
    color: var(--lps-bronze-soft);
    font-size: 0.75rem;
    font-weight: 600;
    letter-spacing: 0.24em;
    text-transform: uppercase;
}

.lps_why_index {
    display: inline-flex;
    align-items: center;
    gap: 0.875rem;
    color: var(--lps-ivory);
}

.lps_why_index::after {
    content: "";
    width: 2.5rem;
    height: 1px;
    background: var(--lps-bronze-soft);
}

.lps_why_title {
    max-width: 16ch;
    margin: 0;
    font-size: clamp(1.85rem, 1.05rem + 2.7vw, 3.35rem);
    font-weight: 300;
    line-height: 1.14;
    letter-spacing: 0.01em;
    text-transform: uppercase;
    text-wrap: balance;
}

.lps_why_accent {
    font-family: var(--lps-font-accent);
    font-size: 1.14em;
    font-style: italic;
    font-weight: 500;
    letter-spacing: 0;
    line-height: 1;
    text-transform: none;
    white-space: nowrap;
    color: var(--lps-bronze-soft);
}

.lps_why_text {
    max-width: 26rem;
    margin: 0;
    color: var(--lps-ivory-muted);
    font-size: clamp(0.975rem, 0.94rem + 0.15vw, 1.0625rem);
    line-height: 1.8;
}

/* Ledger grid: 1px gaps over a hairline background draw the dividers */
.lps_why_grid {
    display: grid;
    gap: 1px;
    margin: 0;
    padding: 0;
    background: var(--lps-hairline);
    border-block: 1px solid var(--lps-hairline);
    list-style: none;
}

.lps_why_point {
    position: relative;
    padding: clamp(2rem, 3.5vw, 2.75rem) clamp(0rem, 2.5vw, 2.5rem) clamp(2rem, 3.5vw, 2.75rem) 0;
    background: var(--lps-night);
    transition: background-color 0.4s var(--lps-ease);
}

.lps_why_point::before {
    content: "";
    display: block;
    width: 1.75rem;
    height: 1px;
    margin-bottom: 1.5rem;
    background: var(--lps-bronze-soft);
    transition: width 0.5s var(--lps-ease);
}

.lps_why_point:hover::before {
    width: 3.5rem;
}

.lps_why_name {
    margin: 0 0 0.75rem;
    color: var(--lps-ivory);
    font-family: var(--lps-font-accent);
    font-size: clamp(1.55rem, 1.35rem + 0.6vw, 1.95rem);
    font-style: italic;
    font-weight: 500;
    line-height: 1.2;
}

.lps_why_copy {
    max-width: 24rem;
    margin: 0;
    color: var(--lps-ivory-muted);
    font-size: 0.975rem;
    line-height: 1.7;
}

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

    .lps_why_point {
        padding-inline: clamp(1.75rem, 3vw, 2.5rem);
    }

    .lps_why_point:hover {
        background: #26170c;
    }
}

@media (min-width: 1080px) {
    .lps_why_intro {
        grid-template-columns: repeat(12, 1fr);
        column-gap: clamp(1.5rem, 2.5vw, 2.5rem);
        align-items: end;
    }

    .lps_why_head {
        grid-column: 1 / 8;
    }

    .lps_why_text {
        grid-column: 9 / 13;
    }

    .lps_why_grid {
        grid-template-columns: repeat(3, 1fr);
    }

    .lps_why_point:nth-child(3n + 1) {
        padding-left: 0;
    }

    .lps_why_point:nth-child(3n) {
        padding-right: 0;
    }
}

@media (min-width: 720px) and (max-width: 1079.98px) {
    .lps_why_point:nth-child(odd) {
        padding-left: 0;
    }

    .lps_why_point:nth-child(even) {
        padding-right: 0;
    }
}

/* Our Process */
.lps_process {
    --lps-process-bg: #efe7dc;
    --lps-process-line: rgba(148, 114, 83, 0.3);
    --lps-process-label: #7a5a3e;
    --lps-step-icon: 3.25rem;
    padding: clamp(4.5rem, 8vw, 7.5rem) var(--lps-gutter);
    background: var(--lps-process-bg);
    color: var(--lps-espresso);
}

.lps_process_shell {
    max-width: calc(var(--lps-track-max) - 2 * var(--lps-gutter));
    margin-inline: auto;
}

/* ---------- Intro ---------- */
.lps_process_intro {
    display: grid;
    gap: clamp(1.25rem, 2.5vw, 1.75rem);
}

.lps_process_eyebrow {
    display: flex;
    align-items: center;
    gap: 0.875rem;
    margin: 0 0 1.25rem;
    color: var(--lps-process-label);
    font-size: 0.75rem;
    font-weight: 600;
    letter-spacing: 0.24em;
    text-transform: uppercase;
}

.lps_process_index {
    display: inline-flex;
    align-items: center;
    gap: 0.875rem;
    color: var(--lps-espresso);
}

.lps_process_index::after {
    content: "";
    width: 2.5rem;
    height: 1px;
    background: var(--lps-bronze);
}

.lps_process_title {
    margin: 0;
    font-size: clamp(1.85rem, 1.05rem + 2.7vw, 3.35rem);
    font-weight: 300;
    line-height: 1.14;
    letter-spacing: 0.01em;
    text-transform: uppercase;
    text-wrap: balance;
}

.lps_process_accent {
    font-family: var(--lps-font-accent);
    font-size: 1.14em;
    font-style: italic;
    font-weight: 500;
    letter-spacing: 0;
    line-height: 1;
    text-transform: none;
    color: var(--lps-bronze);
}

.lps_process_text {
    max-width: 28rem;
    margin: 0;
    color: rgba(60, 36, 19, 0.84);
    font-size: clamp(0.975rem, 0.94rem + 0.15vw, 1.0625rem);
    line-height: 1.8;
}

/* ---------- Steps: vertical rail with line icons ---------- */
.lps_process_steps {
    position: relative;
    margin: clamp(3rem, 6vw, 4.5rem) 0 0;
    padding: 0;
    list-style: none;
}

.lps_process_steps::before {
    content: "";
    position: absolute;
    top: 2.5rem;
    bottom: 2.5rem;
    left: calc(var(--lps-step-icon) / 2);
    width: 1px;
    background: var(--lps-process-line);
}

.lps_step {
    position: relative;
    display: grid;
    grid-template-columns: var(--lps-step-icon) 1fr;
    column-gap: clamp(1.25rem, 3vw, 2.5rem);
    padding-block: clamp(1.5rem, 3vw, 2.25rem);
}

.lps_step + .lps_step::after {
    content: "";
    position: absolute;
    top: 0;
    left: calc(var(--lps-step-icon) + clamp(1.25rem, 3vw, 2.5rem));
    right: 0;
    height: 1px;
    background: var(--lps-process-line);
}

.lps_step_icon {
    position: relative;
    grid-row: 1 / span 2;
    width: var(--lps-step-icon);
    padding-block: 0.4rem;
    background: var(--lps-process-bg);
    color: var(--lps-bronze);
    transition: color 0.4s var(--lps-ease);
}

.lps_step_icon svg {
    display: block;
    width: 100%;
    aspect-ratio: 1;
    fill: none;
    stroke: currentColor;
    stroke-width: 1.25px;
    stroke-linecap: round;
    stroke-linejoin: round;
}

.lps_step_icon svg * {
    vector-effect: non-scaling-stroke;
}

.lps_step_icon .lps_step_trace {
    stroke-dasharray: 1.5 3;
}

.lps_step_icon .lps_step_dot {
    fill: currentColor;
}

.lps_step:hover .lps_step_icon {
    color: var(--lps-espresso);
}

.lps_step_name {
    margin: 0.85rem 0 0.6rem;
    font-size: clamp(1.15rem, 1rem + 0.6vw, 1.5rem);
    font-weight: 300;
    letter-spacing: 0.06em;
    line-height: 1.25;
    text-transform: uppercase;
}

.lps_step_text {
    grid-column: 2;
    max-width: 36rem;
    margin: 0;
    color: rgba(60, 36, 19, 0.84);
    font-size: 0.975rem;
    line-height: 1.75;
}

/* ---------- Shared sub-headings ---------- */
.lps_process_subtitle {
    margin: 0 0 clamp(1.75rem, 3.5vw, 2.5rem);
    font-size: clamp(1.35rem, 1.05rem + 1vw, 1.9rem);
    font-weight: 300;
    letter-spacing: 0.04em;
    line-height: 1.2;
    text-transform: uppercase;
}

/* ---------- Healing timeline: vertical on small screens ---------- */
.lps_process_healing {
    margin-top: clamp(3.5rem, 7vw, 5.5rem);
    padding-top: clamp(3rem, 6vw, 4.5rem);
    border-top: 1px solid rgba(60, 36, 19, 0.35);
}

.lps_heal_line {
    position: relative;
    display: grid;
    gap: 1.75rem;
    margin: 0;
    padding: 0 0 0 2rem;
    list-style: none;
}

.lps_heal_line::before {
    content: "";
    position: absolute;
    top: 0.4rem;
    bottom: 0.4rem;
    left: 0.3rem;
    width: 1px;
    background: var(--lps-process-line);
}

.lps_heal_point {
    position: relative;
}

.lps_heal_point::before {
    content: "";
    position: absolute;
    top: 0.25rem;
    left: -2rem;
    width: 0.6875rem;
    height: 0.6875rem;
    border: 1px solid var(--lps-bronze);
    border-radius: 50%;
    background: var(--lps-process-bg);
}

.lps_heal_point_final::before {
    background: var(--lps-bronze);
    box-shadow: 0 0 0 4px rgba(148, 114, 83, 0.18);
}

.lps_heal_when {
    display: block;
    margin-bottom: 0.35rem;
    color: var(--lps-process-label);
    font-size: 0.75rem;
    font-weight: 600;
    letter-spacing: 0.18em;
    text-transform: uppercase;
}

.lps_heal_text {
    max-width: 22rem;
    margin: 0;
    color: rgba(60, 36, 19, 0.86);
    font-size: 0.975rem;
    line-height: 1.6;
}

/* ---------- Before your visit ---------- */
.lps_process_prep {
    margin-top: clamp(3.5rem, 7vw, 5rem);
}

.lps_prep_list {
    display: grid;
    column-gap: clamp(2rem, 4vw, 3.5rem);
    margin: 0;
    padding: 0;
    border-bottom: 1px solid var(--lps-process-line);
    list-style: none;
}

.lps_prep_point {
    display: flex;
    align-items: flex-start;
    gap: 0.875rem;
    padding: 1.1rem 0;
    border-top: 1px solid var(--lps-process-line);
    font-size: 0.975rem;
    line-height: 1.6;
}

.lps_prep_check {
    flex-shrink: 0;
    width: 1rem;
    height: 1rem;
    margin-top: 0.25rem;
    fill: none;
    stroke: var(--lps-bronze);
    stroke-width: 1.4;
    stroke-linecap: round;
    stroke-linejoin: round;
}

/* ---------- Safety note ---------- */
.lps_process_alert {
    display: flex;
    align-items: flex-start;
    gap: 1.25rem;
    margin-top: clamp(2.5rem, 5vw, 3.5rem);
    padding: clamp(1.4rem, 3vw, 1.9rem) clamp(1.4rem, 3vw, 2.25rem);
    background: var(--lps-night);
    border-left: 2px solid var(--lps-bronze-soft);
    color: var(--lps-ivory-muted);
}

.lps_alert_icon {
    flex-shrink: 0;
    width: 1.75rem;
    height: 1.75rem;
    fill: none;
    stroke: var(--lps-bronze-soft);
    stroke-width: 1.3;
    stroke-linecap: round;
    stroke-linejoin: round;
}

.lps_alert_icon circle {
    fill: var(--lps-bronze-soft);
}

.lps_alert_text {
    margin: 0;
    font-size: 0.975rem;
    line-height: 1.7;
}

.lps_alert_text strong {
    color: var(--lps-ivory);
    font-weight: 600;
}

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

/* ---------- Healing timeline: horizontal ---------- */
@media (min-width: 900px) {
    .lps_heal_line {
        grid-template-columns: repeat(5, 1fr);
        gap: clamp(1.25rem, 2.5vw, 2.5rem);
        padding: 2rem 0 0;
    }

    .lps_heal_line::before {
        top: 0.3rem;
        bottom: auto;
        left: 0;
        right: 0;
        width: auto;
        height: 1px;
    }

    .lps_heal_point::before {
        top: -2rem;
        left: 0;
    }
}

/* ---------- Desktop ---------- */
@media (min-width: 1080px) {
    .lps_process {
        --lps-step-icon: 4rem;
    }

    .lps_process_intro {
        grid-template-columns: repeat(12, 1fr);
        column-gap: clamp(1.5rem, 2.5vw, 2.5rem);
        align-items: end;
    }

    .lps_process_head {
        grid-column: 1 / 8;
    }

    .lps_process_text {
        grid-column: 9 / 13;
    }

    .lps_step {
        grid-template-columns: var(--lps-step-icon) minmax(0, 5fr) minmax(0, 6fr);
        align-items: center;
    }

    .lps_step_icon {
        grid-row: auto;
    }

    .lps_step_name {
        margin: 0;
    }

    .lps_step_text {
        grid-column: 3;
    }
}

/* Gallery */
.lps_gallery {
    --lps-gallery-line: rgba(148, 114, 83, 0.26);
    --lps-gallery-label: #7a5a3e;
    padding: clamp(4.5rem, 8vw, 7.5rem) var(--lps-gutter);
    background: var(--lps-cream);
    color: var(--lps-espresso);
}

.lps_gallery_shell {
    max-width: calc(var(--lps-track-max) - 2 * var(--lps-gutter));
    margin-inline: auto;
}

.lps_gallery_intro {
    max-width: 44rem;
    margin: 0 auto clamp(3rem, 6vw, 4.5rem);
    text-align: center;
}

.lps_gallery_eyebrow {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 0.875rem;
    margin: 0 0 1.25rem;
    color: var(--lps-gallery-label);
    font-size: 0.75rem;
    font-weight: 600;
    letter-spacing: 0.24em;
    text-transform: uppercase;
}

.lps_gallery_index {
    display: inline-flex;
    align-items: center;
    gap: 0.875rem;
    color: var(--lps-espresso);
}

.lps_gallery_index::after {
    content: "";
    width: 2.5rem;
    height: 1px;
    background: var(--lps-bronze);
}

.lps_gallery_title {
    margin: 0;
    font-size: clamp(1.85rem, 1.05rem + 2.7vw, 3.35rem);
    font-weight: 300;
    line-height: 1.14;
    letter-spacing: 0.01em;
    text-transform: uppercase;
    text-wrap: balance;
}

.lps_gallery_accent {
    font-family: var(--lps-font-accent);
    font-size: 1.14em;
    font-style: italic;
    font-weight: 500;
    letter-spacing: 0;
    line-height: 1;
    text-transform: none;
    color: var(--lps-bronze);
}

.lps_gallery_text {
    max-width: 36rem;
    margin: clamp(1.1rem, 2vw, 1.5rem) auto 0;
    color: rgba(60, 36, 19, 0.84);
    font-size: clamp(0.975rem, 0.94rem + 0.15vw, 1.0625rem);
    line-height: 1.8;
}

/* Staggered editorial grid: 2 columns on mobile, 3 on desktop with the centre column dropped */
.lps_gallery_grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    align-items: start;
    gap: clamp(1.5rem, 3vw, 2.5rem) clamp(0.75rem, 2.5vw, 2rem);
}

.lps_gallery_shot {
    min-width: 0;
    margin: 0;
}

/* Fixed 4:5 frame: any replacement photo is cropped to fit, never stretched */
.lps_gallery_photo {
    width: 100%;
    aspect-ratio: 4 / 5;
    object-fit: cover;
    object-position: 50% 50%;
    background: var(--lps-gallery-line);
    filter: saturate(0.92);
    transition: filter 0.5s var(--lps-ease);
}

.lps_gallery_shot:hover .lps_gallery_photo {
    filter: saturate(1);
}

.lps_gallery_caption {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    margin-top: 0.9rem;
    color: var(--lps-gallery-label);
    font-size: 0.6875rem;
    font-weight: 600;
    letter-spacing: 0.18em;
    line-height: 1.5;
    text-transform: uppercase;
}

.lps_gallery_caption::before {
    content: "";
    flex-shrink: 0;
    width: 1.5rem;
    height: 1px;
    background: var(--lps-bronze);
    transition: width 0.5s var(--lps-ease);
}

.lps_gallery_shot:hover .lps_gallery_caption::before {
    width: 2.75rem;
}

.lps_gallery_note {
    max-width: 40rem;
    margin: clamp(2.5rem, 5vw, 3.5rem) auto 0;
    color: rgba(60, 36, 19, 0.7);
    font-size: 0.8125rem;
    line-height: 1.7;
    text-align: center;
}

@media (min-width: 900px) {
    .lps_gallery_grid {
        grid-template-columns: repeat(3, 1fr);
    }

    .lps_gallery_shot:nth-child(3n + 2) {
        margin-top: clamp(2.5rem, 5vw, 4rem);
    }

    .lps_gallery_caption {
        font-size: 0.75rem;
    }
}

/* Safety & Medical Oversight */
.lps_safety {
    padding: clamp(4.5rem, 8vw, 7.5rem) var(--lps-gutter);
    background: var(--lps-night);
    color: var(--lps-ivory);
}

.lps_safety_shell {
    max-width: calc(var(--lps-track-max) - 2 * var(--lps-gutter));
    margin-inline: auto;
}

/* ---------- Intro ---------- */
.lps_safety_intro {
    display: grid;
    gap: clamp(1.25rem, 2.5vw, 1.75rem);
    margin-bottom: clamp(3rem, 6vw, 4.5rem);
}

.lps_safety_eyebrow {
    display: flex;
    align-items: center;
    gap: 0.875rem;
    margin: 0 0 1.25rem;
    color: var(--lps-bronze-soft);
    font-size: 0.75rem;
    font-weight: 600;
    letter-spacing: 0.24em;
    text-transform: uppercase;
}

.lps_safety_index {
    display: inline-flex;
    align-items: center;
    gap: 0.875rem;
    color: var(--lps-ivory);
}

.lps_safety_index::after {
    content: "";
    width: 2.5rem;
    height: 1px;
    background: var(--lps-bronze-soft);
}

.lps_safety_title {
    max-width: 16ch;
    margin: 0;
    font-size: clamp(1.85rem, 1.05rem + 2.7vw, 3.35rem);
    font-weight: 300;
    line-height: 1.14;
    letter-spacing: 0.01em;
    text-transform: uppercase;
    text-wrap: balance;
}

.lps_safety_accent {
    font-family: var(--lps-font-accent);
    font-size: 1.14em;
    font-style: italic;
    font-weight: 500;
    letter-spacing: 0;
    line-height: 1;
    text-transform: none;
    color: var(--lps-bronze-soft);
}

.lps_safety_text {
    max-width: 32rem;
    margin: 0;
    color: var(--lps-ivory-muted);
    font-size: clamp(0.975rem, 0.94rem + 0.15vw, 1.0625rem);
    line-height: 1.8;
}

/* ---------- Image blocks ---------- */
.lps_safety_grid {
    display: grid;
    gap: clamp(2.75rem, 5vw, 3.5rem) clamp(1.5rem, 4vw, 3.5rem);
    align-items: start;
}

.lps_safety_block {
    margin: 0;
}

.lps_safety_media {
    min-width: 0;
    overflow: hidden;
    background: rgba(201, 165, 127, 0.08);
}

/* Fixed 4:3 frame: any replacement photo is cropped to fit, never stretched */
.lps_safety_photo {
    width: 100%;
    aspect-ratio: 4 / 3;
    object-fit: cover;
    object-position: 50% 50%;
    filter: saturate(0.7) sepia(0.14);
    transition: transform 0.9s var(--lps-ease), filter 0.6s var(--lps-ease);
}

.lps_safety_photo_gloves {
    object-position: 50% 45%;
}

.lps_safety_photo_consult {
    object-position: 50% 30%;
}

.lps_safety_block:hover .lps_safety_photo {
    transform: scale(1.035);
    filter: saturate(0.95) sepia(0);
}

.lps_safety_name {
    display: flex;
    align-items: center;
    gap: 0.875rem;
    margin: clamp(1.4rem, 2.5vw, 1.75rem) 0 0.75rem;
    font-size: clamp(1.1rem, 1rem + 0.45vw, 1.35rem);
    font-weight: 300;
    letter-spacing: 0.06em;
    line-height: 1.3;
    text-transform: uppercase;
}

.lps_safety_name::before {
    content: "";
    flex-shrink: 0;
    width: 1.75rem;
    height: 1px;
    background: var(--lps-bronze-soft);
    transition: width 0.5s var(--lps-ease);
}

.lps_safety_block:hover .lps_safety_name::before {
    width: 2.75rem;
}

.lps_safety_copy {
    max-width: 34rem;
    margin: 0;
    color: var(--lps-ivory-muted);
    font-size: 0.975rem;
    line-height: 1.75;
}

/* ---------- Questions checklist ---------- */
.lps_safety_questions {
    display: grid;
    gap: clamp(1.5rem, 3vw, 2rem);
    margin-top: clamp(4rem, 8vw, 6rem);
    padding-top: clamp(3rem, 6vw, 4.5rem);
    border-top: 1px solid var(--lps-hairline);
}

.lps_safety_subtitle {
    max-width: 14ch;
    margin: 0;
    font-size: clamp(1.35rem, 1.05rem + 1vw, 1.9rem);
    font-weight: 300;
    letter-spacing: 0.04em;
    line-height: 1.2;
    text-transform: uppercase;
}

.lps_safety_list {
    margin: 0;
    padding: 0;
    border-bottom: 1px solid var(--lps-hairline);
    list-style: none;
}

.lps_safety_ask {
    display: flex;
    align-items: flex-start;
    gap: 1rem;
    padding: 1.05rem 0;
    border-top: 1px solid var(--lps-hairline);
    color: var(--lps-ivory);
    font-size: 0.975rem;
    line-height: 1.6;
}

.lps_safety_check {
    flex-shrink: 0;
    width: 1rem;
    height: 1rem;
    margin-top: 0.25rem;
    fill: none;
    stroke: var(--lps-bronze-soft);
    stroke-width: 1.4;
    stroke-linecap: round;
    stroke-linejoin: round;
}

/* ---------- Warning signs notice ---------- */
.lps_safety_notice {
    display: flex;
    align-items: flex-start;
    gap: clamp(1rem, 2.5vw, 1.5rem);
    margin-top: clamp(2.5rem, 5vw, 3.5rem);
    padding: clamp(1.5rem, 3vw, 2rem) clamp(1.4rem, 3vw, 2.25rem);
    background: var(--lps-ivory);
    border-left: 2px solid var(--lps-bronze);
    color: var(--lps-espresso);
}

.lps_safety_notice_icon {
    flex-shrink: 0;
    width: 2rem;
    height: 2rem;
    fill: none;
    stroke: var(--lps-bronze);
    stroke-width: 1.4;
    stroke-linecap: round;
}

.lps_safety_notice_icon .lps_safety_notice_dot {
    fill: var(--lps-bronze);
}

.lps_safety_notice_title {
    margin: 0.2rem 0 0.5rem;
    font-size: 0.8125rem;
    font-weight: 600;
    letter-spacing: 0.18em;
    text-transform: uppercase;
}

.lps_safety_notice_text {
    max-width: 52rem;
    margin: 0;
    color: rgba(60, 36, 19, 0.86);
    font-size: 0.975rem;
    line-height: 1.7;
}

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

@media (min-width: 1080px) {
    .lps_safety_intro,
    .lps_safety_questions {
        grid-template-columns: repeat(12, 1fr);
        column-gap: clamp(1.5rem, 2.5vw, 2.5rem);
    }

    .lps_safety_intro {
        align-items: end;
    }

    .lps_safety_head {
        grid-column: 1 / 8;
    }

    .lps_safety_text {
        grid-column: 8 / 13;
    }

    /* Right column drops for an editorial stagger */
    .lps_safety_grid {
        padding-bottom: clamp(3rem, 6vw, 5rem);
    }

    .lps_safety_block:nth-child(even) {
        transform: translateY(clamp(3rem, 6vw, 5rem));
    }

    .lps_safety_subtitle {
        grid-column: 1 / 5;
    }

    .lps_safety_list {
        grid-column: 6 / 13;
    }
}

@media (prefers-reduced-motion: reduce) {
    .lps_safety_block:hover .lps_safety_photo {
        transform: none;
    }
}

/* Testimonials */
.lps_voices {
    --lps-voices-line: rgba(148, 114, 83, 0.26);
    --lps-voices-label: #7a5a3e;
    --lps-voices-per: 1;
    --lps-voices-gap: clamp(1rem, 2.5vw, 1.75rem);
    padding: clamp(4.5rem, 8vw, 7.5rem) var(--lps-gutter);
    background: var(--lps-cream);
    color: var(--lps-espresso);
}

.lps_voices_shell {
    max-width: calc(var(--lps-track-max) - 2 * var(--lps-gutter));
    margin-inline: auto;
}

.lps_voices_intro {
    max-width: 44rem;
    margin: 0 auto clamp(3rem, 6vw, 4.5rem);
    text-align: center;
}

.lps_voices_eyebrow {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 0.875rem;
    margin: 0 0 1.25rem;
    color: var(--lps-voices-label);
    font-size: 0.75rem;
    font-weight: 600;
    letter-spacing: 0.24em;
    text-transform: uppercase;
}

.lps_voices_index {
    display: inline-flex;
    align-items: center;
    gap: 0.875rem;
    color: var(--lps-espresso);
}

.lps_voices_index::after {
    content: "";
    width: 2.5rem;
    height: 1px;
    background: var(--lps-bronze);
}

.lps_voices_title {
    margin: 0;
    font-size: clamp(1.85rem, 1.05rem + 2.7vw, 3.35rem);
    font-weight: 300;
    line-height: 1.14;
    letter-spacing: 0.01em;
    text-transform: uppercase;
    text-wrap: balance;
}

.lps_voices_accent {
    font-family: var(--lps-font-accent);
    font-size: 1.14em;
    font-style: italic;
    font-weight: 500;
    letter-spacing: 0;
    line-height: 1;
    text-transform: none;
    color: var(--lps-bronze);
}

/* ---------- Carousel: native scroll-snap track, so touch swipe works without a library ---------- */
.lps_voices_carousel {
    position: relative;
}

.lps_voices_track {
    display: flex;
    gap: var(--lps-voices-gap);
    margin: 0;
    padding: 0.5rem 0 2.5rem;
    overflow-x: auto;
    overscroll-behavior-x: contain;
    scroll-snap-type: x mandatory;
    scrollbar-width: none;
    list-style: none;
    -webkit-overflow-scrolling: touch;
}

.lps_voices_track::-webkit-scrollbar {
    display: none;
}

.lps_voices_track:focus-visible {
    outline-offset: 6px;
}

.lps_voices_slide {
    display: flex;
    flex: 0 0 calc((100% - (var(--lps-voices-per) - 1) * var(--lps-voices-gap)) / var(--lps-voices-per));
    min-width: 0;
    scroll-snap-align: start;
}

/* ---------- Review cards ---------- */
.lps_voices_review {
    position: relative;
    display: flex;
    flex: 1;
    flex-direction: column;
    min-height: clamp(20rem, 26vw, 23rem);
    padding: clamp(2rem, 3.5vw, 2.75rem) clamp(1.75rem, 3vw, 2.5rem);
    background: var(--lps-ivory);
    border: 1px solid var(--lps-voices-line);
    box-shadow: 0 1.5rem 2.5rem -2rem rgba(34, 20, 10, 0.35);
    transition: transform 0.5s var(--lps-ease), box-shadow 0.5s var(--lps-ease);
}

/* Inset hairline frame */
.lps_voices_review::before {
    content: "";
    position: absolute;
    inset: 0.55rem;
    border: 1px solid var(--lps-voices-line);
    pointer-events: none;
}

.lps_voices_review:hover {
    transform: translateY(-0.25rem);
    box-shadow: 0 2rem 3rem -2.25rem rgba(34, 20, 10, 0.45);
}

.lps_voices_tag {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    margin: 0;
    color: var(--lps-voices-label);
    font-size: 0.6875rem;
    font-weight: 600;
    letter-spacing: 0.2em;
    line-height: 1.5;
    text-transform: uppercase;
}

.lps_voices_tag::before {
    content: "";
    flex-shrink: 0;
    width: 1.5rem;
    height: 1px;
    background: currentColor;
}

.lps_voices_mark {
    display: block;
    height: 0.42em;
    margin-top: clamp(1.5rem, 3vw, 2rem);
    color: var(--lps-bronze);
    font-family: var(--lps-font-accent);
    font-size: clamp(4.5rem, 3.75rem + 2.5vw, 6rem);
    font-style: italic;
    font-weight: 500;
    line-height: 0.85;
    opacity: 0.55;
}

.lps_voices_quote {
    margin: 1rem 0 0;
    font-family: var(--lps-font-accent);
    font-size: clamp(1.4rem, 1.2rem + 0.6vw, 1.7rem);
    font-style: italic;
    font-weight: 500;
    line-height: 1.35;
    text-wrap: pretty;
}

.lps_voices_slot {
    margin: auto 0 0;
    padding-top: clamp(1.75rem, 3vw, 2.25rem);
    color: rgba(60, 36, 19, 0.62);
    font-size: 0.75rem;
    font-weight: 500;
    letter-spacing: 0.18em;
    text-transform: uppercase;
}

/* Espresso variant */
.lps_voices_review_dark {
    background: var(--lps-espresso);
    border-color: var(--lps-espresso);
    color: var(--lps-ivory);
}

.lps_voices_review_dark::before {
    border-color: var(--lps-hairline);
}

.lps_voices_review_dark .lps_voices_tag,
.lps_voices_review_dark .lps_voices_mark {
    color: var(--lps-bronze-soft);
}

.lps_voices_review_dark .lps_voices_slot {
    color: rgba(243, 234, 223, 0.62);
}

/* Centred variant */
.lps_voices_review_center {
    align-items: center;
    text-align: center;
}

.lps_voices_review_center .lps_voices_tag::after {
    content: "";
    flex-shrink: 0;
    width: 1.5rem;
    height: 1px;
    background: currentColor;
}

/* ---------- Controls: prev · dots · next ---------- */
.lps_voices_controls {
    display: none;
}

.lps_js .lps_voices_controls {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: clamp(1rem, 3vw, 1.75rem);
    margin-top: 0.5rem;
}

.lps_voices_arrow {
    display: grid;
    place-items: center;
    flex-shrink: 0;
    width: 3rem;
    height: 3rem;
    padding: 0;
    border: 1px solid rgba(148, 114, 83, 0.55);
    border-radius: 50%;
    background: transparent;
    color: var(--lps-espresso);
    cursor: pointer;
    transition: background-color 0.35s var(--lps-ease), border-color 0.35s var(--lps-ease), color 0.35s var(--lps-ease);
}

.lps_voices_arrow:hover {
    background: var(--lps-espresso);
    border-color: var(--lps-espresso);
    color: var(--lps-ivory);
}

.lps_voices_arrow svg {
    width: 1.1rem;
    height: 1.1rem;
    fill: none;
    stroke: currentColor;
    stroke-width: 1.25;
    stroke-linecap: round;
    stroke-linejoin: round;
    transition: transform 0.35s var(--lps-ease);
}

.lps_voices_arrow_prev svg {
    transform: scaleX(-1);
}

.lps_voices_arrow_next:hover svg {
    transform: translateX(2px);
}

.lps_voices_arrow_prev:hover svg {
    transform: scaleX(-1) translateX(2px);
}

.lps_voices_dots {
    display: flex;
    align-items: center;
}

.lps_voices_dot {
    display: grid;
    place-items: center;
    width: 1.5rem;
    height: 1.5rem;
    padding: 0;
    border: 0;
    background: none;
    cursor: pointer;
}

.lps_voices_dot[hidden] {
    display: none;
}

.lps_voices_dot::before {
    content: "";
    width: 0.4375rem;
    height: 0.4375rem;
    border: 1px solid var(--lps-bronze);
    border-radius: 999px;
    transition: width 0.4s var(--lps-ease), background-color 0.4s var(--lps-ease);
}

.lps_voices_dot:hover::before {
    background: rgba(148, 114, 83, 0.4);
}

.lps_voices_dot[aria-current="true"]::before {
    width: 1.25rem;
    background: var(--lps-bronze);
}

/* ---------- Tablet: 2 cards ---------- */
@media (min-width: 720px) {
    .lps_voices {
        --lps-voices-per: 2;
    }
}

/* ---------- Desktop: 3 cards ---------- */
@media (min-width: 1080px) {
    .lps_voices {
        --lps-voices-per: 3;
    }
}

@media (prefers-reduced-motion: reduce) {
    .lps_voices_review:hover {
        transform: none;
    }
}

/* FAQs */
.lps_faq {
    --lps-faq-bg: #efe7dc;
    --lps-faq-line: rgba(148, 114, 83, 0.3);
    --lps-faq-label: #7a5a3e;
    --lps-faq-num: 1.75rem;
    --lps-faq-icon: 2.25rem;
    --lps-faq-gap: clamp(0.75rem, 2vw, 1.5rem);
    --lps-faq-q: clamp(1.125rem, 0.98rem + 0.7vw, 1.6rem);
    padding: clamp(4.5rem, 8vw, 7.5rem) var(--lps-gutter);
    background: var(--lps-faq-bg);
    color: var(--lps-espresso);
}

.lps_faq_shell {
    max-width: calc(var(--lps-track-max) - 2 * var(--lps-gutter));
    margin-inline: auto;
}

/* ---------- Intro ---------- */
.lps_faq_intro {
    display: grid;
    gap: clamp(1.25rem, 2.5vw, 1.75rem);
    margin-bottom: clamp(2.5rem, 5vw, 3.5rem);
}

.lps_faq_eyebrow {
    display: flex;
    align-items: center;
    gap: 0.875rem;
    margin: 0;
    color: var(--lps-faq-label);
    font-size: 0.75rem;
    font-weight: 600;
    letter-spacing: 0.24em;
    text-transform: uppercase;
}

.lps_faq_index {
    display: inline-flex;
    align-items: center;
    gap: 0.875rem;
    color: var(--lps-espresso);
}

.lps_faq_index::after {
    content: "";
    width: 2.5rem;
    height: 1px;
    background: var(--lps-bronze);
}

.lps_faq_title {
    max-width: 16ch;
    margin: 0;
    font-size: clamp(1.85rem, 1.05rem + 2.7vw, 3.35rem);
    font-weight: 300;
    line-height: 1.14;
    letter-spacing: 0.01em;
    text-transform: uppercase;
    text-wrap: balance;
}

.lps_faq_accent {
    font-family: var(--lps-font-accent);
    font-size: 1.14em;
    font-style: italic;
    font-weight: 500;
    letter-spacing: 0;
    line-height: 1;
    text-transform: none;
    color: var(--lps-bronze);
}

.lps_faq_text {
    max-width: 26rem;
    margin: 0;
    color: rgba(60, 36, 19, 0.84);
    font-size: clamp(0.975rem, 0.94rem + 0.15vw, 1.0625rem);
    line-height: 1.8;
}

/* ---------- Accordion ---------- */
.lps_faq_list {
    border-bottom: 1px solid var(--lps-faq-line);
}

.lps_faq_entry {
    border-top: 1px solid var(--lps-faq-line);
}

.lps_faq_heading {
    margin: 0;
    font: inherit;
}

.lps_faq_trigger {
    display: grid;
    grid-template-columns: var(--lps-faq-num) minmax(0, 1fr) var(--lps-faq-icon);
    align-items: baseline;
    column-gap: var(--lps-faq-gap);
    width: 100%;
    padding: clamp(1.35rem, 2.6vw, 1.85rem) 0;
    border: 0;
    background: none;
    color: inherit;
    font: inherit;
    text-align: left;
    cursor: pointer;
    -webkit-tap-highlight-color: transparent;
}

.lps_faq_num {
    color: var(--lps-faq-label);
    font-size: 0.75rem;
    font-weight: 600;
    letter-spacing: 0.18em;
}

.lps_faq_question {
    font-size: var(--lps-faq-q);
    font-weight: 300;
    line-height: 1.35;
    letter-spacing: 0.005em;
    text-wrap: pretty;
    transition: color 0.3s var(--lps-ease);
}

.lps_faq_trigger:hover .lps_faq_question {
    color: var(--lps-faq-label);
}

/* Plus / minus: two hairlines in a thin ring; the vertical one rotates flat when open */
.lps_faq_icon {
    position: relative;
    align-self: start;
    width: var(--lps-faq-icon);
    height: var(--lps-faq-icon);
    margin-top: calc((var(--lps-faq-q) * 1.35 - var(--lps-faq-icon)) / 2);
    border: 1px solid rgba(148, 114, 83, 0.55);
    border-radius: 50%;
    transition: background-color 0.4s var(--lps-ease), border-color 0.4s var(--lps-ease);
}

.lps_faq_icon::before,
.lps_faq_icon::after {
    content: "";
    position: absolute;
    top: 50%;
    left: 50%;
    width: 0.75rem;
    height: 1px;
    background: var(--lps-espresso);
    transform: translate(-50%, -50%);
    transition: transform 0.45s var(--lps-ease), background-color 0.4s var(--lps-ease);
}

.lps_faq_icon::after {
    transform: translate(-50%, -50%) rotate(90deg);
}

.lps_faq_trigger:hover .lps_faq_icon {
    border-color: var(--lps-bronze);
}

.lps_faq_entry.lps_is_open .lps_faq_icon {
    background: var(--lps-espresso);
    border-color: var(--lps-espresso);
}

.lps_faq_entry.lps_is_open .lps_faq_icon::before,
.lps_faq_entry.lps_is_open .lps_faq_icon::after {
    background: var(--lps-ivory);
}

.lps_faq_entry.lps_is_open .lps_faq_icon::after {
    transform: translate(-50%, -50%) rotate(0deg);
}

/* Answers stay open without JavaScript; with it, rows animate from 0fr to 1fr */
.lps_faq_panel {
    display: grid;
    grid-template-rows: 1fr;
}

.lps_js .lps_faq_panel {
    grid-template-rows: 0fr;
    visibility: hidden;
    transition: grid-template-rows 0.55s var(--lps-ease), visibility 0s linear 0.55s;
}

.lps_js .lps_faq_entry.lps_is_open .lps_faq_panel {
    grid-template-rows: 1fr;
    visibility: visible;
    transition: grid-template-rows 0.55s var(--lps-ease), visibility 0s linear 0s;
}

.lps_faq_body {
    min-height: 0;
    overflow: hidden;
}

.lps_faq_answer {
    max-width: calc(40rem + var(--lps-faq-num) + var(--lps-faq-gap));
    margin: 0;
    padding: 0 0 clamp(1.5rem, 3vw, 2rem) calc(var(--lps-faq-num) + var(--lps-faq-gap));
    color: rgba(60, 36, 19, 0.84);
    font-size: clamp(0.975rem, 0.94rem + 0.15vw, 1.0625rem);
    line-height: 1.8;
}

.lps_js .lps_faq_answer {
    opacity: 0;
    transform: translateY(-0.4rem);
    transition: opacity 0.3s var(--lps-ease), transform 0.3s var(--lps-ease);
}

.lps_js .lps_faq_entry.lps_is_open .lps_faq_answer {
    opacity: 1;
    transform: none;
    transition: opacity 0.5s var(--lps-ease) 0.12s, transform 0.5s var(--lps-ease) 0.12s;
}

@media (min-width: 720px) {
    .lps_faq {
        --lps-faq-num: 2.5rem;
        --lps-faq-icon: 2.5rem;
    }
}

@media (min-width: 1080px) {
    .lps_faq_shell {
        display: grid;
        grid-template-columns: repeat(12, 1fr);
        column-gap: clamp(1.5rem, 2.5vw, 2.5rem);
        align-items: start;
    }

    .lps_faq_intro {
        position: sticky;
        top: 2rem;
        grid-column: 1 / 5;
        margin-bottom: 0;
    }

    .lps_faq_list {
        grid-column: 6 / 13;
    }
}

/* Book Consultation */
.lps_book {
    --lps-book-line: rgba(148, 114, 83, 0.32);
    --lps-book-label: #7a5a3e;
    isolation: isolate;
    padding: clamp(4.5rem, 8vw, 7.5rem) var(--lps-gutter);
    background:
        radial-gradient(circle at 12% 18%, rgba(201, 165, 127, 0.14), transparent 55%),
        var(--lps-espresso);
    color: var(--lps-ivory);
}

.lps_book_shell {
    display: grid;
    gap: clamp(3rem, 6vw, 4.5rem);
    max-width: calc(var(--lps-track-max) - 2 * var(--lps-gutter));
    margin-inline: auto;
}

/* ---------- Intro ---------- */
.lps_book_eyebrow {
    display: flex;
    align-items: center;
    gap: 0.875rem;
    margin: 0 0 1.25rem;
    color: var(--lps-bronze-soft);
    font-size: 0.75rem;
    font-weight: 600;
    letter-spacing: 0.24em;
    text-transform: uppercase;
}

.lps_book_index {
    display: inline-flex;
    align-items: center;
    gap: 0.875rem;
    color: var(--lps-ivory);
}

.lps_book_index::after {
    content: "";
    width: 2.5rem;
    height: 1px;
    background: var(--lps-bronze-soft);
}

.lps_book_title {
    max-width: 16ch;
    margin: 0;
    font-size: clamp(1.85rem, 1.05rem + 2.7vw, 3.35rem);
    font-weight: 300;
    line-height: 1.14;
    letter-spacing: 0.01em;
    text-transform: uppercase;
    text-wrap: balance;
}

.lps_book_accent {
    font-family: var(--lps-font-accent);
    font-size: 1.14em;
    font-style: italic;
    font-weight: 500;
    letter-spacing: 0;
    line-height: 1;
    text-transform: none;
    white-space: nowrap;
    color: var(--lps-bronze-soft);
}

.lps_book_text {
    max-width: 30rem;
    margin: clamp(1.25rem, 2.5vw, 1.75rem) 0 0;
    color: var(--lps-ivory-muted);
    font-size: clamp(0.975rem, 0.94rem + 0.15vw, 1.0625rem);
    line-height: 1.8;
}

/* What happens next: numbered hairline list */
.lps_book_steps {
    max-width: 30rem;
    margin: clamp(2.25rem, 4.5vw, 3rem) 0 0;
    padding: 0;
    border-bottom: 1px solid var(--lps-hairline);
    list-style: none;
}

.lps_book_step {
    display: flex;
    align-items: baseline;
    gap: 1.25rem;
    padding: 1.1rem 0;
    border-top: 1px solid var(--lps-hairline);
}

.lps_book_step_num {
    flex-shrink: 0;
    color: var(--lps-bronze-soft);
    font-family: var(--lps-font-accent);
    font-size: 1.35rem;
    font-style: italic;
    font-weight: 500;
    line-height: 1;
}

.lps_book_step_text {
    margin: 0;
    color: var(--lps-ivory-muted);
    font-size: 0.9375rem;
    line-height: 1.65;
}

.lps_book_step_text strong {
    color: var(--lps-ivory);
    font-weight: 600;
}

.lps_book_reassure {
    max-width: 30rem;
    margin: 1.75rem 0 0;
    padding-left: 1.25rem;
    border-left: 1px solid var(--lps-bronze-soft);
    color: var(--lps-ivory-muted);
    font-family: var(--lps-font-accent);
    font-size: clamp(1.15rem, 1.05rem + 0.35vw, 1.35rem);
    font-style: italic;
    font-weight: 500;
    line-height: 1.45;
}

/* ---------- Form card with offset frame ---------- */
/* The section is the stacking context, so the offset frame sits behind the card, not over it */
.lps_book_panel {
    position: relative;
    min-width: 0;
    margin: 0 0.75rem 0.75rem 0;
    padding: clamp(1.75rem, 4vw, 2rem);
    background: var(--lps-cream);
    color: var(--lps-espresso);
    box-shadow: 0 40px 70px -45px rgba(0, 0, 0, 0.6);
}

.lps_book_panel::before {
    content: "";
    position: absolute;
    inset: 0.75rem -0.75rem -0.75rem 0.75rem;
    z-index: -1;
    border: 1px solid var(--lps-bronze-soft);
    opacity: 0.45;
}

.lps_book_fields {
    display: grid;
    gap: 1.5rem clamp(1.25rem, 2.5vw, 1.75rem);
}

/* space-between keeps inputs aligned when a neighbouring label wraps to two lines */
.lps_book_field {
    display: grid;
    align-content: space-between;
    gap: 0.5rem;
    min-width: 0;
    margin: 0;
    padding: 0;
    border: 0;
}

.lps_book_label {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: 0.75rem;
    padding: 0;
    color: var(--lps-book-label);
    font-size: 0.6875rem;
    font-weight: 600;
    letter-spacing: 0.18em;
    text-transform: uppercase;
}

.lps_book_optional {
    color: rgba(60, 36, 19, 0.5);
    font-size: 0.625rem;
    font-weight: 500;
    letter-spacing: 0.14em;
}

/* Underlined editorial inputs */
.lps_book_input {
    width: 100%;
    min-width: 0;
    min-height: 2.75rem;
    padding: 0.5rem 0;
    border: 0;
    border-bottom: 1px solid var(--lps-book-line);
    border-radius: 0;
    background: transparent;
    color: var(--lps-espresso);
    font: inherit;
    font-size: 1rem;
    transition: border-color 0.3s var(--lps-ease);
}

.lps_book_input:hover {
    border-bottom-color: var(--lps-bronze);
}

.lps_book_input:focus {
    outline: none;
    border-bottom-color: var(--lps-espresso);
    box-shadow: 0 1px 0 var(--lps-espresso);
}

.lps_book_select {
    padding-right: 1.75rem;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M3.5 6l4.5 4.5L12.5 6' fill='none' stroke='%23947253' stroke-width='1.3'/%3E%3C/svg%3E");
    background-position: right 0.15rem center;
    background-repeat: no-repeat;
    background-size: 1rem;
    cursor: pointer;
    appearance: none;
    -webkit-appearance: none;
}

.lps_book_select:invalid {
    color: rgba(60, 36, 19, 0.55);
}

.lps_book_textarea {
    min-height: 7rem;
    line-height: 1.6;
    resize: vertical;
}

/* Contact method: pill toggles built on real radio buttons */
.lps_book_options {
    display: flex;
    flex-wrap: wrap;
    gap: 0.625rem;
    margin-top: 0.25rem;
}

.lps_book_option {
    position: relative;
    display: inline-flex;
    cursor: pointer;
}

.lps_book_radio {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    margin: 0;
    opacity: 0;
    cursor: pointer;
}

.lps_book_option_text {
    display: inline-flex;
    align-items: center;
    min-height: 2.5rem;
    padding: 0.5rem 1.35rem;
    border: 1px solid var(--lps-book-line);
    border-radius: 999px;
    color: var(--lps-espresso);
    font-size: 0.875rem;
    transition: background-color 0.3s var(--lps-ease), border-color 0.3s var(--lps-ease), color 0.3s var(--lps-ease);
}

.lps_book_option:hover .lps_book_option_text {
    border-color: var(--lps-bronze);
}

.lps_book_radio:checked + .lps_book_option_text {
    background: var(--lps-espresso);
    border-color: var(--lps-espresso);
    color: var(--lps-ivory);
}

.lps_book_radio:focus-visible + .lps_book_option_text {
    outline: 2px solid var(--lps-bronze);
    outline-offset: 3px;
}

/* Filled version of the site's outlined button, for the one primary action */
.lps_book_submit {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 0.75rem;
    width: 100%;
    min-height: 3.25rem;
    margin-top: clamp(2rem, 4vw, 2.5rem);
    padding: 0.75rem 1.75rem;
    border: 1px solid var(--lps-espresso);
    background: var(--lps-espresso);
    color: var(--lps-ivory);
    font: inherit;
    font-size: 0.75rem;
    font-weight: 600;
    letter-spacing: 0.18em;
    text-transform: uppercase;
    cursor: pointer;
    transition: background-color 0.3s var(--lps-ease), color 0.3s var(--lps-ease);
}

.lps_book_submit:hover {
    background: transparent;
    color: var(--lps-espresso);
}

.lps_book_submit:focus-visible {
    outline-color: var(--lps-bronze);
}

.lps_book_arrow {
    width: 1rem;
    height: 1rem;
    fill: none;
    stroke: currentColor;
    stroke-width: 1.4;
    transition: transform 0.35s var(--lps-ease);
}

.lps_book_submit:hover .lps_book_arrow {
    transform: translateX(0.25rem);
}

.lps_book_note {
    margin: 1rem 0 0;
    color: rgba(60, 36, 19, 0.66);
    font-size: 0.8125rem;
    line-height: 1.6;
    text-align: center;
}

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

    .lps_book_field_wide {
        grid-column: 1 / -1;
    }
}

@media (min-width: 1080px) {
    .lps_book_shell {
        grid-template-columns: repeat(12, 1fr);
        column-gap: clamp(1.5rem, 2.5vw, 2.5rem);
        align-items: start;
    }

    .lps_book_intro {
        grid-column: 1 / 6;
        padding-top: 1rem;
    }

    .lps_book_panel {
        grid-column: 7 / 13;
        margin: 0 1rem 1rem 0;
    }

    .lps_book_panel::before {
        inset: 1rem -1rem -1rem 1rem;
    }
}

/* Footer */
.lps_footer {
    padding: clamp(3rem, 6vw, 4.25rem) var(--lps-gutter) 1.75rem;
    background: var(--lps-night);
    color: var(--lps-ivory);
}

.lps_footer_shell {
    max-width: calc(var(--lps-track-max) - 2 * var(--lps-gutter));
    margin-inline: auto;
}

.lps_footer_top {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 2.25rem 1.5rem;
}

.lps_footer_brand {
    grid-column: 1 / -1;
}

/* Light wordmark; the aspect ratio reserves its space before the image loads */
.lps_footer_logo {
    width: 100%;
    max-width: clamp(10rem, 40vw, 11.5rem);
    height: auto;
    aspect-ratio: 600 / 121;
    margin: 0 0 0.9rem;
}

.lps_footer_blurb {
    max-width: 22rem;
    margin: 0;
    color: var(--lps-ivory-muted);
    font-size: 0.9rem;
    line-height: 1.7;
}

.lps_footer_heading {
    margin: 0 0 1rem;
    color: var(--lps-bronze-soft);
    font-size: 0.6875rem;
    font-weight: 600;
    letter-spacing: 0.24em;
    text-transform: uppercase;
}

.lps_footer_links {
    display: grid;
    gap: 0.6rem;
    margin: 0;
    padding: 0;
    list-style: none;
}

.lps_footer_link {
    color: var(--lps-ivory-muted);
    font-size: 0.9rem;
    line-height: 1.5;
    text-decoration: underline;
    text-decoration-color: transparent;
    text-decoration-thickness: 1px;
    text-underline-offset: 0.35em;
    transition: color 0.3s var(--lps-ease), text-decoration-color 0.3s var(--lps-ease);
}

.lps_footer_link:hover {
    color: var(--lps-ivory);
    text-decoration-color: var(--lps-bronze-soft);
}

.lps_footer_base {
    display: grid;
    gap: 0.5rem;
    margin-top: clamp(2.5rem, 5vw, 3.25rem);
    padding-top: 1.5rem;
    border-top: 1px solid var(--lps-hairline);
}

.lps_footer_copy {
    margin: 0;
    color: var(--lps-ivory-muted);
    font-size: 0.8125rem;
    letter-spacing: 0.02em;
}

.lps_footer_disclaimer {
    margin: 0;
    color: rgba(243, 234, 223, 0.62);
    font-size: 0.78rem;
    line-height: 1.6;
}

@media (min-width: 720px) {
    .lps_footer_top {
        grid-template-columns: minmax(0, 1.5fr) minmax(0, 1fr) minmax(0, 1fr);
        column-gap: clamp(2rem, 4vw, 3.5rem);
    }

    .lps_footer_brand {
        grid-column: auto;
    }

    .lps_footer_base {
        grid-template-columns: auto minmax(0, 1fr);
        column-gap: 2rem;
        align-items: baseline;
    }

    .lps_footer_disclaimer {
        text-align: right;
    }
}

@media (min-width: 1080px) {
    .lps_footer_top {
        grid-template-columns: minmax(0, 5fr) minmax(0, 4fr) minmax(0, 3fr);
    }

    .lps_footer_links_split {
        grid-template-columns: repeat(2, max-content);
        column-gap: clamp(2rem, 3.5vw, 3rem);
    }
}

/* 404 Page */
.lps_notfound_bar {
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: var(--lps-masthead-h);
    padding-inline: var(--lps-gutter);
    background: var(--lps-night);
}

.lps_notfound_brand {
    border-radius: 2px;
}

.lps_notfound_wordmark {
    width: clamp(10rem, 44vw, 12.5rem);
    aspect-ratio: 600 / 121;
    object-fit: contain;
}

.lps_notfound {
    display: grid;
    place-items: center;
    min-height: min(70vh, 44rem);
    padding: clamp(4.5rem, 8vw, 7.5rem) var(--lps-gutter);
    background: var(--lps-cream);
    color: var(--lps-espresso);
    text-align: center;
}

.lps_notfound_copy {
    max-width: 40rem;
}

.lps_notfound_code {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: clamp(1rem, 3vw, 1.75rem);
    margin: 0 0 clamp(1rem, 2.5vw, 1.5rem);
    color: var(--lps-bronze);
    font-family: var(--lps-font-accent);
    font-size: clamp(4.5rem, 3rem + 6vw, 8rem);
    font-style: italic;
    font-weight: 500;
    line-height: 1;
}

.lps_notfound_code::before,
.lps_notfound_code::after {
    content: "";
    width: clamp(2rem, 6vw, 3.5rem);
    height: 1px;
    background: var(--lps-bronze);
}

.lps_notfound_title {
    margin: 0;
    font-size: clamp(1.85rem, 1.05rem + 2.7vw, 3.35rem);
    font-weight: 300;
    line-height: 1.14;
    letter-spacing: 0.01em;
    text-transform: uppercase;
    text-wrap: balance;
}

.lps_notfound_accent {
    font-family: var(--lps-font-accent);
    font-size: 1.14em;
    font-style: italic;
    font-weight: 500;
    letter-spacing: 0;
    line-height: 1;
    text-transform: none;
    white-space: nowrap;
    color: var(--lps-bronze);
}

.lps_notfound_text {
    max-width: 30rem;
    margin: clamp(1.1rem, 2vw, 1.5rem) auto 0;
    color: rgba(60, 36, 19, 0.84);
    font-size: clamp(0.975rem, 0.94rem + 0.15vw, 1.0625rem);
    line-height: 1.8;
    text-wrap: pretty;
}

/* Same shape, type and hover as the site's outlined buttons */
.lps_notfound_button,
.lps_notfound_button:visited {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 0.75rem;
    min-height: 3rem;
    margin-top: clamp(2rem, 4vw, 2.75rem);
    padding: 0.75rem 1.75rem;
    border: 1px solid var(--lps-espresso);
    color: var(--lps-espresso);
    font-size: 0.75rem;
    font-weight: 600;
    letter-spacing: 0.18em;
    text-transform: uppercase;
    text-decoration: none;
    transition: background-color 0.3s var(--lps-ease), color 0.3s var(--lps-ease);
}

.lps_notfound_button:hover {
    background: var(--lps-espresso);
    color: var(--lps-ivory);
}

.lps_notfound_button:focus-visible {
    outline-color: var(--lps-bronze);
}

.lps_notfound_arrow {
    width: 1rem;
    height: 1rem;
    fill: none;
    stroke: currentColor;
    stroke-width: 1.4;
    transition: transform 0.35s var(--lps-ease);
}

.lps_notfound_button:hover .lps_notfound_arrow {
    transform: translateX(0.25rem);
}

@media (min-width: 1080px) {
    .lps_notfound_wordmark {
        width: 14rem;
    }
}

/* Thank You Page */
.lps_thanks_page {
    display: grid;
    grid-template-rows: auto 1fr auto;
    min-height: 100vh;
    min-height: 100dvh;
}

.lps_thanks_bar {
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: var(--lps-masthead-h);
    padding-inline: var(--lps-gutter);
    background: var(--lps-night);
}

.lps_thanks_brand {
    border-radius: 2px;
}

.lps_thanks_wordmark {
    width: clamp(10rem, 44vw, 12.5rem);
    aspect-ratio: 600 / 121;
    object-fit: contain;
}

.lps_thanks {
    display: grid;
    background: var(--lps-cream);
    color: var(--lps-espresso);
}

/* ---------- Message ---------- */
.lps_thanks_copy {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    padding: clamp(3rem, 8vw, 6rem) var(--lps-gutter);
    text-align: center;
}

.lps_thanks_eyebrow {
    margin: 0;
    color: #7a5a3e;
    font-size: 0.75rem;
    font-weight: 600;
    letter-spacing: 0.24em;
    text-transform: uppercase;
}

/* Brand detail: a fine lip outline between two hairlines */
.lps_thanks_mark {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: clamp(0.9rem, 2.5vw, 1.4rem);
    margin: clamp(1.5rem, 3vw, 2.25rem) 0;
    color: var(--lps-bronze);
}

.lps_thanks_mark::before,
.lps_thanks_mark::after {
    content: "";
    width: clamp(2.5rem, 8vw, 4.5rem);
    height: 1px;
    background: currentColor;
    opacity: 0.7;
}

.lps_thanks_lips {
    width: 2.75rem;
    aspect-ratio: 2;
    fill: none;
    stroke: currentColor;
    stroke-width: 1;
    stroke-linejoin: round;
}

.lps_thanks_title {
    max-width: 14ch;
    margin: 0;
    font-size: clamp(2rem, 1.1rem + 3.2vw, 3.75rem);
    font-weight: 300;
    line-height: 1.12;
    letter-spacing: 0.01em;
    text-transform: uppercase;
    text-wrap: balance;
}

.lps_thanks_accent {
    font-family: var(--lps-font-accent);
    font-size: 1.14em;
    font-style: italic;
    font-weight: 500;
    letter-spacing: 0;
    line-height: 1;
    text-transform: none;
    white-space: nowrap;
    color: var(--lps-bronze);
}

.lps_thanks_text {
    max-width: 30rem;
    margin: clamp(1.25rem, 2.5vw, 1.75rem) 0 0;
    color: rgba(60, 36, 19, 0.84);
    font-size: clamp(0.975rem, 0.94rem + 0.15vw, 1.0625rem);
    line-height: 1.8;
    text-wrap: pretty;
}

.lps_thanks_actions {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 1.25rem;
    margin-top: clamp(2rem, 4vw, 2.75rem);
}

/* Filled primary button, matching the booking form's submit */
.lps_thanks_button,
.lps_thanks_button:visited {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 0.75rem;
    min-width: 15rem;
    min-height: 3.25rem;
    padding: 0.75rem 1.75rem;
    border: 1px solid var(--lps-espresso);
    background: var(--lps-espresso);
    color: var(--lps-ivory);
    font-size: 0.75rem;
    font-weight: 600;
    letter-spacing: 0.18em;
    text-transform: uppercase;
    text-decoration: none;
    transition: background-color 0.3s var(--lps-ease), color 0.3s var(--lps-ease);
}

.lps_thanks_button:hover {
    background: transparent;
    color: var(--lps-espresso);
}

.lps_thanks_button:focus-visible,
.lps_thanks_link:focus-visible {
    outline-color: var(--lps-bronze);
}

.lps_thanks_arrow {
    width: 1rem;
    height: 1rem;
    fill: none;
    stroke: currentColor;
    stroke-width: 1.4;
    transition: transform 0.35s var(--lps-ease);
}

.lps_thanks_button:hover .lps_thanks_arrow {
    transform: translateX(0.25rem);
}

.lps_thanks_link,
.lps_thanks_link:visited {
    padding-bottom: 0.35rem;
    border-bottom: 1px solid var(--lps-bronze);
    color: var(--lps-espresso);
    font-size: 0.75rem;
    font-weight: 600;
    letter-spacing: 0.18em;
    text-transform: uppercase;
    text-decoration: none;
    transition: border-color 0.3s var(--lps-ease);
}

.lps_thanks_link:hover {
    border-color: var(--lps-espresso);
}

/* ---------- Photo frame ---------- */
.lps_thanks_media {
    position: relative;
    order: -1;
    height: clamp(11rem, 32vh, 17rem);
    overflow: hidden;
    background: #efe7dc;
}

.lps_thanks_media::after {
    content: "";
    position: absolute;
    inset: 0.75rem;
    border: 1px solid rgba(243, 234, 223, 0.55);
    pointer-events: none;
}

.lps_thanks_photo {
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: 60% 38%;
}

.lps_thanks_base {
    padding: 1.1rem var(--lps-gutter);
    background: var(--lps-night);
    text-align: center;
}

.lps_thanks_legal {
    margin: 0;
    color: var(--lps-ivory-muted);
    font-size: 0.75rem;
    letter-spacing: 0.04em;
}

/* ---------- Tablet and up: message beside a full-height photo ---------- */
@media (min-width: 900px) {
    .lps_thanks {
        grid-template-columns: minmax(0, 7fr) minmax(0, 5fr);
    }

    .lps_thanks_media {
        order: 0;
        height: auto;
        min-height: 32rem;
    }

    .lps_thanks_media::after {
        inset: 1.25rem;
    }

    .lps_thanks_photo {
        position: absolute;
        inset: 0;
    }

    .lps_thanks_actions {
        flex-direction: row;
        gap: 2rem;
    }
}

@media (min-width: 1080px) {
    .lps_thanks_wordmark {
        width: 14rem;
    }
}

@media (prefers-reduced-motion: reduce) {
    *,
    *::before,
    *::after {
        transition-duration: 0.01ms !important;
    }
}
