:root {
    --primary: #155239;
    --primary-hover: #0e402c;
    --primary-active: #0b3324;
    --primary-disabled: #a9bbaf;
    --primary-contrast: #fff;
    --ink: #183c2d;
    --muted: #65766a;
    --paper: #f8f7f1;
    --sand: #e8eee5;
    --sage: #6f8972;
    --line: rgba(41, 40, 32, .14);
    --shadow: 0 24px 70px rgba(54, 48, 38, .12);
    --serif: "Playfair Display", Georgia, serif;
    --sans: "DM Sans", Arial, sans-serif;
    --bs-primary: var(--primary);
    --bs-primary-rgb: 21, 82, 57;
    --bs-primary-hover: var(--primary-hover);
    --bs-primary-dark: var(--primary-active);
    --bs-link-color: var(--primary);
    --bs-link-color-rgb: 21, 82, 57;
    --bs-link-hover-color: var(--primary-hover);
    --bs-link-hover-color-rgb: 14, 64, 44;
    --bs-focus-ring-color: rgba(var(--bs-primary-rgb), .25);
}

/* Bootstrap button variants use component variables, so define every state here. */
.btn-primary {
    --bs-btn-color: var(--primary-contrast);
    --bs-btn-bg: var(--primary);
    --bs-btn-border-color: var(--primary);
    --bs-btn-hover-color: var(--primary-contrast);
    --bs-btn-hover-bg: var(--primary-hover);
    --bs-btn-hover-border-color: var(--primary-hover);
    --bs-btn-focus-shadow-rgb: var(--bs-primary-rgb);
    --bs-btn-active-color: var(--primary-contrast);
    --bs-btn-active-bg: var(--primary-active);
    --bs-btn-active-border-color: var(--primary-active);
    --bs-btn-disabled-color: var(--primary-contrast);
    --bs-btn-disabled-bg: var(--primary-disabled);
    --bs-btn-disabled-border-color: var(--primary-disabled);
}

.btn-outline-primary {
    --bs-btn-color: var(--primary);
    --bs-btn-bg: transparent;
    --bs-btn-border-color: var(--primary);
    --bs-btn-hover-color: var(--primary-contrast);
    --bs-btn-hover-bg: var(--primary);
    --bs-btn-hover-border-color: var(--primary);
    --bs-btn-focus-shadow-rgb: var(--bs-primary-rgb);
    --bs-btn-active-color: var(--primary-contrast);
    --bs-btn-active-bg: var(--primary-active);
    --bs-btn-active-border-color: var(--primary-active);
    --bs-btn-disabled-color: var(--primary-disabled);
    --bs-btn-disabled-bg: transparent;
    --bs-btn-disabled-border-color: var(--primary-disabled);
}

* {
    box-sizing: border-box;
}

html {
    scroll-behavior: smooth;
}

body {
    margin: 0;
    overflow-x: hidden;
    background: var(--paper);
    color: var(--ink);
    font-family: var(--sans);
    -webkit-font-smoothing: antialiased;
}

    body.menu-open {
        overflow: hidden;
    }

a {
    color: inherit;
    text-decoration: none;
}

img {
    display: block;
    max-width: 100%;
}

.site-shell {
    width: min(1180px, calc(100% - 40px));
    margin-inline: auto;
}

.site-main {
    min-height: 25rem;
}

.skip-link {
    position: fixed;
    top: -5rem;
    left: 1rem;
    z-index: 2000;
    padding: .7rem 1rem;
    background: #fff;
}

    .skip-link:focus {
        top: 1rem;
    }

.announcement {
    min-height: 34px;
    background: var(--ink);
    color: #fff;
    font-size: .78rem;
}

.announcement__inner {
    min-height: 34px;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
}

.announcement__ad {
    flex: 1;
    min-width: 0;
}

.announcement__contact {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: 1rem;
    min-width: 0;
}

.announcement__address {
    overflow: hidden;
    opacity: .88;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.announcement p {
    margin: 0;
}

.announcement a {
    white-space: nowrap;
    opacity: .88;
}

.site-header {
    position: relative;
    z-index: 100;
    border-bottom: 1px solid var(--line);
    background: rgba(251,250,247,.96);
}

.navigation {
    min-height: 82px;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 2rem;
}

.brand {
    display: inline-flex;
    align-items: center;
    gap: .75rem;
    min-width: 210px;
}

.brand__mark {
    width: 42px;
    height: 42px;
    display: grid;
    place-items: center;
    border-radius: 50%;
    background: var(--sage);
    color: white;
    font-family: var(--serif);
    font-size: 1.3rem;
    font-style: italic;
}

.brand strong, .brand small {
    display: block;
}

.brand strong {
    max-width: 250px;
    overflow: hidden;
    font-family: var(--serif);
    font-size: 1.15rem;
    line-height: 1.1;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.brand small {
    margin-top: .18rem;
    color: var(--muted);
    font-size: .61rem;
    letter-spacing: .16em;
}

.desktop-nav {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: clamp(.8rem, 2vw, 1.8rem);
}

    .desktop-nav a {
        position: relative;
        padding: 1.8rem 0;
        color: var(--muted);
        font-size: .9rem;
        font-weight: 500;
    }

        .desktop-nav a::after {
            content: "";
            position: absolute;
            right: 0;
            bottom: 1.25rem;
            left: 0;
            height: 1px;
            background: var(--ink);
            transform: scaleX(0);
            transition: transform .2s ease;
        }

        .desktop-nav a:hover, .desktop-nav a.active {
            color: var(--ink);
        }

            .desktop-nav a:hover::after, .desktop-nav a.active::after {
                transform: scaleX(1);
            }

.navigation__actions {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: .65rem;
    min-width: 210px;
}

.language-selector {
    display: inline-flex;
}

.language-selector__toggle {
    width: 42px;
    height: 42px;
    border: 1px solid var(--line);
    border-radius: 50%;
    background: transparent;
    color: var(--ink);
}

    .language-selector__toggle:hover, .language-selector__toggle[aria-expanded="true"] {
        border-color: var(--sage);
        color: var(--sage);
    }

.language-selector .dropdown-menu {
    min-width: 9rem;
    padding: .4rem;
    border-color: var(--line);
    background: var(--paper);
}

.language-selector__item {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    padding: .55rem .7rem;
    border-radius: .35rem;
    font-size: .86rem;
}

    .language-selector__item.active, .language-selector__item:active {
        background: var(--sage);
        color: #fff;
    }

.icon-button, .location-switch, .menu-toggle, .back-to-top {
    border: 0;
    background: transparent;
}

.icon-button {
    width: 42px;
    height: 42px;
    border: 1px solid var(--line);
    border-radius: 50%;
}

.location-switch {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: .45rem;
    min-height: 42px;
    padding: .55rem .8rem;
    border: 1px solid var(--line);
    border-radius: 999px;
    color: var(--ink);
    font-size: .8rem;
    font-weight: 600;
    white-space: nowrap;
}

.primary-button {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 48px;
    padding: .75rem 1.4rem;
    border: 1px solid var(--sage);
    background: var(--sage);
    color: #fff;
    font-weight: 600;
    transition: background .2s ease, color .2s ease, transform .2s ease;
}

    .primary-button:hover {
        background: transparent;
        color: var(--sage);
        transform: translateY(-2px);
    }

.primary-button--small {
    min-height: 42px;
    padding: .6rem 1.05rem;
    font-size: .86rem;
}

.menu-toggle {
    display: none;
    width: 42px;
    height: 42px;
    padding: 11px;
    border: 1px solid var(--line);
}

    .menu-toggle i {
        display: block;
        height: 1px;
        margin: 4px 0;
        background: var(--ink);
        transition: transform .2s ease;
    }

.mobile-navigation {
    display: none;
    position: absolute;
    top: 100%;
    right: 0;
    left: 0;
    border-bottom: 1px solid var(--line);
    background: var(--paper);
    box-shadow: var(--shadow);
}

    .mobile-navigation.is-open {
        display: block;
    }

    .mobile-navigation nav {
        padding-block: 1rem 1.5rem;
    }

    .mobile-navigation a {
        display: flex;
        justify-content: space-between;
        padding: .85rem 0;
        border-bottom: 1px solid var(--line);
        font-family: var(--serif);
        font-size: 1.35rem;
    }

.hero .carousel-item {
    position: relative;
    height: clamp(520px, 72vh, 760px);
    background: #3e3a31;
}

    .hero .carousel-item > img {
        width: 100%;
        height: 100%;
        object-fit: cover;
    }

.hero-shade {
    position: absolute;
    inset: 0;
    background: linear-gradient(90deg, rgba(22,22,18,.68) 0%, rgba(22,22,18,.35) 43%, rgba(22,22,18,.04) 75%);
}

.hero-copy {
    position: absolute;
    top: 50%;
    right: 0;
    left: 0;
    color: #fff;
    transform: translateY(-50%);
}

    .hero-copy > span, .eyebrow {
        display: block;
        margin-bottom: 1rem;
        font-size: .72rem;
        font-weight: 600;
        letter-spacing: .18em;
        text-transform: uppercase;
    }

    .hero-copy h1, .hero-copy h2 {
        max-width: 650px;
        margin: 0 0 1.3rem;
        font-family: var(--serif);
        font-size: clamp(3.4rem, 7.2vw, 6.7rem);
        font-weight: 600;
        line-height: .94;
        letter-spacing: -.04em;
    }

    .hero-copy p {
        max-width: 510px;
        margin-bottom: 2rem;
        font-size: clamp(1rem, 1.6vw, 1.16rem);
        line-height: 1.7;
        opacity: .88;
    }

    .hero-copy .primary-button {
        border-color: #fff;
        background: #fff;
        color: var(--ink);
    }

        .hero-copy .primary-button:hover {
            background: transparent;
            color: #fff;
        }

.hero .carousel-indicators {
    justify-content: flex-start;
    width: min(1180px, calc(100% - 40px));
    margin-right: auto;
    margin-bottom: 2rem;
    margin-left: auto;
}

    .hero .carousel-indicators [data-bs-target] {
        width: 44px;
        height: 2px;
        margin-right: 8px;
        margin-left: 0;
    }

.hero .carousel-control-prev, .hero .carousel-control-next {
    width: 8%;
}

.section-space {
    padding: clamp(4.5rem, 8vw, 8rem) 0;
}

.home-ad, .ad-slot {
    min-height: 1px;
}

.home-ad {
    margin-top: 1.5rem;
}

.intro-grid, .ritual-grid {
    display: grid;
    grid-template-columns: 1.05fr .95fr;
    align-items: center;
    gap: clamp(2.5rem, 7vw, 7rem);
}

.intro-image {
    position: relative;
}

    .intro-image::before {
        content: "";
        position: absolute;
        top: -18px;
        right: 18px;
        bottom: 18px;
        left: -18px;
        border: 1px solid var(--line);
        z-index: -1;
    }

    .intro-image img {
        width: 100%;
        aspect-ratio: 3 / 2;
        object-fit: cover;
        box-shadow: var(--shadow);
    }

.eyebrow {
    color: var(--sage);
}

.intro-copy h2, .section-heading h2, .ritual-grid h2 {
    margin: 0 0 1.4rem;
    font-family: var(--serif);
    font-size: clamp(2.6rem, 5vw, 4.7rem);
    line-height: 1.03;
    letter-spacing: -.035em;
}

.intro-copy p, .ritual-grid p {
    color: var(--muted);
    font-size: 1.02rem;
    line-height: 1.8;
}

.intro-copy .lead {
    color: var(--ink);
    font-size: 1.25rem;
}

.text-link {
    display: inline-flex;
    align-items: center;
    gap: .55rem;
    margin-top: 1rem;
    padding-bottom: .25rem;
    border-bottom: 1px solid var(--ink);
    font-weight: 600;
}

.principles-section {
    background: var(--sand);
}

.section-heading {
    max-width: 680px;
    margin-bottom: 3rem;
}

.principles-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    border-top: 1px solid var(--line);
}

    .principles-grid article {
        padding: 2.2rem 2rem 1rem 0;
    }

        .principles-grid article + article {
            padding-left: 2rem;
            border-left: 1px solid var(--line);
        }

    .principles-grid span {
        color: var(--sage);
        font-size: .75rem;
        letter-spacing: .15em;
    }

    .principles-grid h3 {
        margin: 2.2rem 0 .75rem;
        font-family: var(--serif);
        font-size: 1.65rem;
    }

    .principles-grid p {
        color: var(--muted);
        line-height: 1.7;
    }

.ritual-section {
    background: var(--ink);
    color: #fff;
}

.ritual-grid {
    grid-template-columns: .85fr 1.15fr;
}

    .ritual-grid p {
        color: rgba(255,255,255,.7);
    }

    .ritual-grid img {
        width: 100%;
        aspect-ratio: 3 / 2;
        object-fit: cover;
    }

    .ritual-grid .primary-button {
        margin-top: 1.3rem;
        border-color: #fff;
        background: #fff;
        color: var(--ink);
    }

.hot-services .section-heading {
    text-align: center;
    margin-inline: auto;
}

.hot-services .hot-card-content {
    border: 1px solid var(--line);
    border-radius: 0 !important;
    box-shadow: none !important;
}

.hot-services .text-primary, .hot-services .hot-current-price, .hot-services .hot-vip-badge {
    color: var(--sage) !important;
}

.page-heading {
    padding: clamp(4rem, 8vw, 7rem) 0;
    background: var(--sand);
}

    .page-heading > div > span {
        color: var(--sage);
        font-size: .73rem;
        font-weight: 600;
        letter-spacing: .17em;
        text-transform: uppercase;
    }

    .page-heading h1 {
        margin: .8rem 0 1.4rem;
        font-family: var(--serif);
        font-size: clamp(3rem, 6vw, 5.5rem);
    }

    .page-heading nav {
        display: flex;
        align-items: center;
        gap: .7rem;
        color: var(--muted);
        font-size: .88rem;
    }

        .page-heading nav i {
            font-size: .7rem;
        }

.is-inner .site-main > .container:first-child {
    margin-top: 3rem;
}

.site-footer {
    padding: clamp(4rem, 7vw, 6rem) 0 1.6rem;
    background: #25261f;
    color: rgba(255,255,255,.75);
}

.footer-grid {
    display: grid;
    grid-template-columns: 1.6fr .7fr 1fr;
    gap: 4rem;
}

    .footer-grid h2 {
        margin: .5rem 0 1rem;
        color: #fff;
        font-family: var(--serif);
        font-size: clamp(2.2rem, 4vw, 3.8rem);
    }

    .footer-grid h3 {
        margin-bottom: 1.3rem;
        color: #fff;
        font-size: .8rem;
        letter-spacing: .14em;
        text-transform: uppercase;
    }

    .footer-grid a, .footer-grid p {
        display: block;
        margin-bottom: .6rem;
    }

.footer-kicker {
    color: #c7b89e;
    font-size: .72rem;
    font-weight: 600;
    letter-spacing: .16em;
    text-transform: uppercase;
}

.footer-grid .primary-button {
    display: inline-flex;
    margin-top: .7rem;
    border-color: #c7b89e;
    background: #c7b89e;
    color: var(--ink);
}

.footer-bottom {
    display: flex;
    justify-content: space-between;
    gap: 1rem;
    margin-top: 4rem;
    padding-top: 1.4rem;
    border-top: 1px solid rgba(255,255,255,.15);
    font-size: .78rem;
}

.back-to-top {
    position: fixed;
    right: 6.2rem;
    bottom: 1.2rem;
    z-index: 90;
    width: 44px;
    height: 44px;
    border-radius: 50%;
    background: var(--sage);
    color: #fff;
    opacity: 0;
    pointer-events: none;
    transform: translateY(10px);
    transition: opacity .2s ease, transform .2s ease;
}

    .back-to-top.is-visible {
        opacity: 1;
        pointer-events: auto;
        transform: none;
    }

@media (max-width: 991.98px) {
    .desktop-nav {
        display: none;
    }

    .navigation__actions {
        min-width: auto;
    }

    .menu-toggle {
        display: block;
    }

    .hero .carousel-item {
        height: 620px;
    }

    .hero .carousel-control-prev, .hero .carousel-control-next {
        display: none;
    }

    .intro-grid, .ritual-grid {
        grid-template-columns: 1fr;
    }

        .ritual-grid img {
            order: -1;
        }

    .principles-grid {
        grid-template-columns: 1fr;
    }

        .principles-grid article {
            padding: 1.5rem 0;
            border-bottom: 1px solid var(--line);
        }

            .principles-grid article + article {
                padding-left: 0;
                border-left: 0;
            }

        .principles-grid h3 {
            margin-top: 1rem;
        }

    .footer-grid {
        grid-template-columns: 1.4fr 1fr;
    }

        .footer-grid > :last-child {
            grid-column: 1 / -1;
        }
}

@media (max-width: 575.98px) {
    .site-shell {
        width: min(100% - 28px, 1180px);
    }

    .announcement__ad {
        display: none;
    }

    .announcement__inner {
        min-height: 34px;
        padding-block: .35rem;
    }

    .announcement__contact {
        width: 100%;
        flex-wrap: wrap;
        justify-content: space-between;
        gap: .2rem .75rem;
    }

    .announcement__address {
        flex: 1 1 100%;
        text-align: center;
    }

    .announcement__contact a {
        margin-inline: auto;
    }

    .navigation {
        min-height: 72px;
    }

    .brand {
        min-width: 0;
    }

    .brand__mark {
        width: 38px;
        height: 38px;
    }

    .brand strong {
        max-width: 105px;
        font-size: 1rem;
    }

    .brand small {
        display: none;
    }

    .navigation__actions .primary-button {
        display: none;
    }

    .location-switch {
        padding-inline: .65rem;
    }

    .location-switch__location {
        display: none;
    }

    .hero .carousel-item {
        height: 600px;
    }

    .hero-copy h1, .hero-copy h2 {
        font-size: clamp(3rem, 16vw, 4.8rem);
    }

    .hero .carousel-indicators {
        width: calc(100% - 28px);
    }

    .footer-grid {
        grid-template-columns: 1fr;
        gap: 2rem;
    }

        .footer-grid > :last-child {
            grid-column: auto;
        }

    .footer-bottom {
        flex-direction: column;
    }
}

@media (prefers-reduced-motion: reduce) {
    *, *::before, *::after {
        scroll-behavior: auto !important;
        transition-duration: .01ms !important;
        animation-duration: .01ms !important;
        animation-iteration-count: 1 !important;
    }
}

/* Jade Wellness & Head Spa */
:root { --jade-deep:#103a29; --jade-forest:#155239; --jade-cream:#f8f7f1; --jade-sage:#e8eee5; --jade-gold:#d7c6a4; --jade-line:rgba(21,82,57,.15); }
body { background:var(--jade-cream); }
.site-shell { width:min(1240px,calc(100% - 64px)); }
.announcement { background:#103a29; color:#f4f6ee; }
.announcement__inner { min-height:34px; }
.announcement__contact { font-size:.76rem; letter-spacing:.02em; }
.site-header { background:#f8f7f1; border-color:var(--jade-line); }
.navigation { min-height:86px; gap:1.5rem; }
.brand { min-width:280px; gap:.7rem; }
.brand__mark { background:transparent; border:1px solid var(--jade-forest); color:var(--jade-forest); width:44px; height:44px; font-size:1.4rem; }
.brand strong { max-width:none; font-family:var(--serif); font-size:1.14rem; font-weight:600; letter-spacing:-.02em; }
.brand small { color:var(--jade-forest); font-size:.56rem; font-weight:600; letter-spacing:.22em; }
.desktop-nav { gap:clamp(.85rem,1.8vw,1.7rem); }
.desktop-nav a { color:#3f5e4c; font-size:.73rem; font-weight:700; letter-spacing:.12em; text-transform:uppercase; }
.desktop-nav a::after { background:var(--jade-forest); }
.navigation__actions { min-width:175px; }
.header-book { display:inline-flex; align-items:center; justify-content:center; gap:.55rem; padding:.85rem 1.05rem; background:var(--jade-forest); color:white; font-size:.72rem; font-weight:700; letter-spacing:.05em; white-space:nowrap; transition:background .2s ease,transform .2s ease; }
.header-book:hover { background:var(--primary-hover); color:white; transform:translateY(-1px); }
.site-header .menu-toggle { color:var(--jade-forest); }
.site-header .mobile-navigation { background:var(--jade-cream); }
.page-heading { background:var(--jade-sage); }
.page-heading h1 { color:var(--jade-deep); }
.site-footer { background:#0d3224; color:#d4e0d5; }
.footer-grid h2,.footer-grid h3 { color:#fff; }
.footer-kicker { color:#c8d8b7; }
.footer-policy-links { display:flex; flex-wrap:wrap; gap:.35rem 1rem; }
.footer-policy-links a { color:#e8f2e8; text-decoration:underline; text-underline-offset:.2em; }
.footer-bottom { align-items:flex-start; flex-wrap:wrap; }
.site-footer a:hover { color:#fff; }
.back-to-top { background:var(--jade-forest); }
:focus-visible { outline:2px solid #c79b55; outline-offset:3px; }
.jade-section { padding:clamp(5rem,9vw,9rem) 0; }
.jade-eyebrow { display:inline-flex; align-items:center; gap:.75rem; color:var(--jade-forest); font-size:.69rem; font-weight:700; line-height:1.4; letter-spacing:.22em; text-transform:uppercase; }
.jade-eyebrow > span { width:27px; height:1px; background:currentColor; }
.jade-eyebrow--light { color:#e7e9db; }
.jade-section h2,.jade-intro h2,.jade-reviews h2,.jade-visit h2 { color:var(--jade-deep); font-family:var(--serif); font-size:clamp(2.8rem,5vw,5.1rem); font-weight:600; line-height:1.08; letter-spacing:-.045em; }
.jade-section h2 em,.jade-hero h1 em { font-weight:400; }
.jade-text-link { display:inline-flex; align-items:center; gap:.9rem; padding-bottom:.35rem; border-bottom:1px solid currentColor; color:var(--jade-forest); font-size:.84rem; font-weight:700; letter-spacing:.04em; transition:gap .2s ease; }
.jade-text-link:hover { gap:1.25rem; color:var(--primary-hover); }
.jade-text-link--light { color:#fff; }
.jade-text-link--light:hover { color:#fff; }
.jade-button { display:inline-flex; align-items:center; justify-content:center; gap:2.5rem; min-height:55px; padding:.95rem 1.3rem; background:var(--jade-forest); color:#fff; font-size:.78rem; font-weight:700; letter-spacing:.04em; transition:background .2s ease,transform .2s ease; }
.jade-button:hover { background:var(--primary-hover); color:#fff; transform:translateY(-2px); }
.jade-button--cream { background:#f8f7f1; color:var(--jade-deep); }
.jade-button--cream:hover { background:#e8eee5; color:var(--jade-deep); }
.jade-hero { position:relative; display:flex; align-items:center; min-height:min(680px,calc(100svh - 120px)); overflow:hidden; background:var(--jade-deep); color:#fff; }
.jade-hero__media,.jade-hero__media img,.jade-hero__veil { position:absolute; inset:0; width:100%; height:100%; }
.jade-hero__media img { object-fit:cover; object-position:center; }
.jade-hero__veil { background:linear-gradient(90deg,rgba(9,36,25,.46) 0%,rgba(9,36,25,.24) 43%,transparent 78%); }
.jade-hero__content { position:relative; z-index:2; padding:6rem 0 7rem; }
.jade-hero h1 { max-width:710px; margin:1.5rem 0; color:#fff; font-family:var(--serif); font-size:clamp(4.2rem,7.4vw,7.7rem); line-height:.99; letter-spacing:-.055em; }
.jade-hero p { max-width:460px; margin:0; color:#e8e9de; font-size:1.05rem; line-height:1.8; }
.jade-hero__actions { display:flex; align-items:center; flex-wrap:wrap; gap:1.65rem 2.2rem; margin-top:2.5rem; }
.jade-hero__side { position:absolute; right:2rem; bottom:2rem; z-index:2; color:#f3f4ea; font-size:.65rem; font-weight:700; letter-spacing:.21em; writing-mode:vertical-rl; }
.jade-hero__side span { margin:.8rem 0; }
.jade-intro { background:#f8f7f1; }
.jade-intro__grid { display:grid; grid-template-columns:1.1fr .9fr; align-items:end; gap:4rem; }
.jade-intro h2 { margin:1.3rem 0 0; }
.jade-intro__copy { max-width:470px; padding-bottom:.35rem; }
.jade-intro__copy p,.jade-ritual__content p,.jade-visit p { color:#53695a; font-size:1rem; line-height:1.9; }
.jade-intro__copy .jade-text-link { margin-top:1.25rem; }
.jade-services { background:#e9eee6; }
.jade-section-head { display:flex; align-items:end; justify-content:space-between; gap:2rem; margin-bottom:2.5rem; }
.jade-section-head h2 { margin:1rem 0 0; }
.jade-section-head > .jade-text-link { margin-bottom:.6rem; }
.jade-service-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:1rem; }
.jade-service-card { position:relative; display:flex; flex-direction:column; justify-content:space-between; min-height:420px; padding:2rem; overflow:hidden; color:#fff; background:#2f5440; isolation:isolate; }
.jade-service-card::before,.jade-service-card::after { content:""; position:absolute; inset:0; z-index:-1; transition:transform .5s ease; }
.jade-service-card::before { background-size:cover; background-position:center; }
.jade-service-card::after { background:linear-gradient(180deg,rgba(8,37,24,.0),rgba(8,37,24,.2)); }
.jade-service-card:hover::before { transform:scale(1.06); }
.jade-service-card--head::before { background-image:url('/images/jade/hero-mobile.jpg'); background-position:center 58%; }
.jade-service-card--body::before { background-image:url('/images/jade/ritual.jpg'); }
.jade-service-card--facial::before { background:linear-gradient(130deg,#77927a,#173e2d 65%); }
.jade-service-card--facial::after { background:radial-gradient(circle at 70% 25%,rgba(233,239,218,.25),transparent 36%),linear-gradient(180deg,transparent,rgba(8,37,24,.65)); }
.jade-service-card__number { font-size:.69rem; font-weight:700; letter-spacing:.2em; }
.jade-service-card h3 { margin:0 0 .65rem; color:#fff; font-family:var(--serif); font-size:2.3rem; letter-spacing:-.03em; }
.jade-service-card p { max-width:235px; margin:0; color:#edf2e9; font-size:.88rem; line-height:1.65; }
.jade-service-card__arrow { position:absolute; right:1.6rem; bottom:1.8rem; display:grid; place-items:center; width:38px; height:38px; border:1px solid #fff; border-radius:50%; }
.jade-services__note { margin:1.35rem 0 0; color:#5d715f; font-size:.77rem; }
.jade-ritual { background:#f8f7f1; }
.jade-ritual__grid { display:grid; grid-template-columns:1.05fr .95fr; align-items:center; gap:clamp(3rem,7vw,7rem); }
.jade-ritual__image img { width:100%; aspect-ratio:4/4.5; object-fit:cover; }
.jade-ritual__content h2 { margin:1.4rem 0; }
.jade-ritual__content p { max-width:470px; }
.jade-ritual__details { display:flex; flex-direction:column; gap:.8rem; margin:2.1rem 0; padding:1.6rem 0; border-top:1px solid var(--jade-line); border-bottom:1px solid var(--jade-line); color:var(--jade-deep); font-size:.88rem; }
.jade-ritual__details span { display:flex; align-items:center; gap:1rem; }
.jade-ritual__details i { color:#6c9478; font-size:1.05rem; }
.jade-hot { background:#f1f3ec; }
.jade-reviews { position:relative; overflow:hidden; background:#103a29; color:#fff; }
.jade-reviews::before { content:""; position:absolute; top:-180px; right:-120px; width:600px; height:600px; border:1px solid rgba(255,255,255,.1); border-radius:50%; box-shadow:0 0 0 90px rgba(255,255,255,.025),0 0 0 190px rgba(255,255,255,.02); pointer-events:none; }
.jade-reviews__inner { position:relative; }
.jade-reviews h2 { margin:1.2rem 0 2.5rem; color:#fff; }

.jade-visit { background:#f8f7f1; }
.jade-visit__grid { display:grid; grid-template-columns:1fr .65fr; gap:4rem; }
.jade-visit h2 { margin:1.1rem 0; }
.jade-visit__actions { display:flex; align-items:center; flex-wrap:wrap; gap:1.8rem; margin-top:2rem; }
.jade-visit__contact { display:flex; flex-direction:column; justify-content:center; gap:1.5rem; padding-left:3rem; border-left:1px solid var(--jade-line); }
.jade-visit__contact span { color:#728477; font-size:.68rem; font-weight:700; letter-spacing:.2em; }
.jade-visit__contact p,.jade-visit__contact a { display:block; margin:.5rem 0 0; color:var(--jade-deep); font-family:var(--serif); font-size:1.4rem; line-height:1.5; }
@media(max-width:1100px){ .brand{min-width:220px}.brand strong{font-size:1rem}.navigation__actions{min-width:auto}.header-book{padding:.8rem}.desktop-nav{gap:.8rem} }
@media(max-width:991.98px){ .navigation{min-height:76px}.header-book{display:none}.jade-hero{min-height:660px}.jade-hero__content{padding:5rem 0}.jade-hero h1{font-size:clamp(4rem,8vw,6rem)}.jade-hero__side{display:none}.jade-service-card{min-height:365px;padding:1.4rem}.jade-service-card h3{font-size:1.9rem}.jade-ritual__grid{gap:3rem} }
@media(max-width:700px){ .site-shell{width:min(100% - 36px,1240px)}.announcement__address{display:none}.announcement__contact{justify-content:center}.navigation{min-height:68px}.brand{min-width:0}.brand__mark{width:38px;height:38px;font-size:1.15rem}.brand strong{max-width:190px;font-size:.91rem;white-space:normal}.brand small{font-size:.46rem;letter-spacing:.13em}.jade-section{padding:4.5rem 0}.jade-section h2{font-size:clamp(2.8rem,12vw,4.2rem)}.jade-hero{min-height:690px;align-items:flex-start}.jade-hero__media img{object-position:center bottom}
    .jade-hero__veil {
        background: linear-gradient(180deg,rgba(8,37,24,.08),rgba(8,37,24,.35) 60%,transparent 76%)
    }.jade-hero__content{padding:4.2rem 0}.jade-hero h1{max-width:480px;font-size:clamp(3.55rem,13.5vw,5.3rem)}.jade-hero p{max-width:350px;font-size:.94rem;line-height:1.7}.jade-hero__actions{gap:1.35rem;margin-top:2rem}.jade-button{min-height:50px;gap:1.5rem}.jade-intro__grid,.jade-ritual__grid,.jade-visit__grid{grid-template-columns:1fr;gap:1.75rem}.jade-intro__copy{padding:0}.jade-section-head{align-items:flex-start;flex-direction:column}.jade-section-head h2{margin-top:1rem}.jade-service-grid{grid-template-columns:1fr}.jade-service-card{min-height:360px;padding:1.7rem}.jade-service-card h3{font-size:2.3rem}.jade-ritual__image img{aspect-ratio:4/3}.jade-ritual__content{padding-top:1rem}.jade-reviews__placeholder{min-height:180px;padding:1.4rem}.jade-visit__contact{padding:1.5rem 0 0;border-left:0;border-top:1px solid var(--jade-line)}.footer-policy-links{gap:.5rem 1rem} }
@media(max-width:390px){ .brand strong{max-width:145px;font-size:.82rem}.jade-hero h1{font-size:3.5rem}.jade-hero__actions{align-items:flex-start;flex-direction:column} }
.jade-service-card--facial::before { background-image:url('/images/jade/facial.jpg'); background-size:cover; background-position:center 42%; }
.jade-contact__intro { max-width:680px; margin-bottom:3rem; }
.jade-contact__intro h2 { margin:1rem 0; }
.jade-contact__intro p { color:#53695a; line-height:1.8; }
.jade-contact__grid { display:grid; grid-template-columns:1.1fr .9fr; background:#e9eee6; }
.jade-contact__map,.jade-contact__map iframe { width:100%; min-height:570px; height:100%; border:0; }
.jade-contact__map-fallback { display:flex; flex-direction:column; align-items:center; justify-content:center; gap:1rem; min-height:570px; background:#dce7d9; color:var(--jade-forest); font-family:var(--serif); font-size:1.7rem; }
.jade-contact__map-fallback i { font-size:2rem; }
.jade-contact__details { display:flex; flex-direction:column; justify-content:center; gap:2rem; padding:clamp(2rem,5vw,4rem); }
.jade-contact__details > div:not(:last-child) { padding-bottom:1.5rem; border-bottom:1px solid var(--jade-line); }
.jade-contact__label { color:#55745e; font-size:.67rem; font-weight:700; letter-spacing:.2em; }
.jade-contact__details p { margin:.5rem 0 .75rem; color:var(--jade-deep); font-family:var(--serif); font-size:1.45rem; line-height:1.5; }
.jade-contact__hours { padding-bottom:0 !important; border:0 !important; }
.jade-contact__hour { display:flex; justify-content:space-between; gap:1rem; padding:.35rem 0; color:#4d6553; font-size:.83rem; }
.jade-contact__hour:first-of-type { margin-top:1rem; }
.jade-contact__hour strong { color:var(--jade-deep); font-weight:600; text-align:right; }
@media(max-width:700px){ .jade-contact__grid{grid-template-columns:1fr}.jade-contact__map,.jade-contact__map iframe,.jade-contact__map-fallback{min-height:300px}.jade-contact__details{padding:2rem}.jade-contact__hour{font-size:.78rem} }


/* Customer photo carousel */
.jade-hero__slides { position:absolute; inset:0; overflow:hidden; }
.jade-hero__slides .jade-hero__media { display:block; opacity:0; transition:opacity .7s ease; }
.jade-hero__slides .jade-hero__media.is-active { opacity:1; }
.jade-hero__slides .jade-hero__media img { display:block; }
.jade-hero__veil { z-index:1; pointer-events:none; }
.jade-hero__controls { position:absolute; z-index:3; left:max(32px,calc((100vw - 1240px)/2)); bottom:1.7rem; display:flex; align-items:center; gap:1rem; color:#fff; }
.jade-hero__arrow { display:grid; place-items:center; width:42px; height:42px; border:1px solid rgba(255,255,255,.72); border-radius:50%; background:rgba(15,48,33,.32); color:#fff; cursor:pointer; transition:background .2s ease,transform .2s ease; }
.jade-hero__arrow:hover { background:var(--jade-forest); transform:translateY(-2px); }
.jade-hero__counter { min-width:50px; text-align:center; font-size:.72rem; font-weight:700; letter-spacing:.12em; }
.jade-ritual__image picture { display:block; }
@media(max-width:700px) {
    .jade-hero__controls { left:18px; bottom:1.2rem; }
    .jade-hero__arrow { width:40px; height:40px; }
    .jade-hero__slides .jade-hero__media img { object-position:center center; }
}
@media(prefers-reduced-motion:reduce) {
    .jade-hero__slides .jade-hero__media { transition:none; }
}

/* Jade gallery */
.jade-gallery { background:var(--jade-cream); }
.jade-gallery__intro { max-width:660px; margin-bottom:2.8rem; }
.jade-gallery__intro h2 { margin:1rem 0 1.25rem; }
.jade-gallery__intro p { color:#53695a; line-height:1.8; }
.jade-gallery__grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:1rem; }
.jade-gallery__item { margin:0; overflow:hidden; aspect-ratio:4/3; background:#e9eee6; }
.jade-gallery__item:first-child { grid-column:1/-1; aspect-ratio:16/7; }
.jade-gallery__media { display:block; width:100%; height:100%; object-fit:cover; }
img.jade-gallery__media { cursor:zoom-in; transition:transform .35s ease; }
.jade-gallery__item:hover img.jade-gallery__media { transform:scale(1.025); }
.jade-gallery__empty { padding:3rem; border:1px solid var(--jade-line); color:#53695a; }
@media(max-width:700px) {
    .jade-gallery__grid { grid-template-columns:1fr; gap:.75rem; }
    .jade-gallery__item,.jade-gallery__item:first-child { grid-column:auto; aspect-ratio:4/3; }
}
@media(prefers-reduced-motion:reduce) { img.jade-gallery__media { transition:none; } }

/* Featured services built from the live product catalog */
.jade-hot__grid { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:1rem; }
.jade-hot-card { display:flex; flex-direction:column; min-width:0; background:#fff; box-shadow:0 12px 36px rgba(24,60,45,.07); }
.jade-hot-card__image { aspect-ratio:4/3; overflow:hidden; background:#dfe8dc; }
.jade-hot-card__image img { display:block; width:100%; height:100%; object-fit:cover; transition:transform .4s ease; }
.jade-hot-card:hover .jade-hot-card__image img { transform:scale(1.04); }
.jade-hot-card__body { display:flex; flex:1; flex-direction:column; padding:1.35rem 1.4rem 1.45rem; }
.jade-hot-card__category { color:var(--jade-forest); font-size:.68rem; font-weight:700; letter-spacing:.16em; text-transform:uppercase; }
.jade-hot-card h3 { margin:.6rem 0 .3rem; color:var(--jade-deep); font-family:var(--serif); font-size:clamp(1.3rem,2vw,1.75rem); line-height:1.2; }
.jade-hot-card p { margin:0; color:#647668; font-size:.82rem; }
.jade-hot-card__footer { display:flex; align-items:center; justify-content:space-between; flex-wrap:wrap; gap:.75rem; margin-top:auto; padding-top:1.5rem; }
.jade-hot-card__price { color:var(--jade-deep); font-family:var(--serif); font-size:1.45rem; font-weight:600; }
.jade-hot-card__footer a { display:inline-flex; align-items:center; gap:.45rem; min-height:42px; color:var(--jade-forest); font-size:.77rem; font-weight:700; border-bottom:1px solid currentColor; }
.jade-hot-card__footer a:hover { color:var(--primary-hover); }
@media(max-width:1050px) { .jade-hot__grid { grid-template-columns:repeat(2,minmax(0,1fr)); } }
@media(max-width:600px) { .jade-hot__grid { grid-template-columns:1fr; } .jade-hot-card__image { aspect-ratio:4/3; } }
@media(prefers-reduced-motion:reduce) { .jade-hot-card__image img { transition:none; } }

/* Service catalog cards use each product's uploaded cover */
body .service-wrapper[data-scope] { --primary-color:var(--jade-forest); }
body .service-wrapper[data-scope] .product-card-header { min-height:320px; border-radius:0; }
body .service-wrapper[data-scope] .product-main-title { font-family:var(--serif); font-size:clamp(1.5rem,2.1vw,2.15rem); line-height:1.2; letter-spacing:-.03em; }
body .service-wrapper[data-scope] .category-label { font-size:.72rem; font-weight:700; letter-spacing:.14em; }
body .service-wrapper[data-scope] .price-list-area { padding:1rem 1rem .4rem; background:#fff; }
body .service-wrapper[data-scope] .item-price { font-family:var(--serif); color:var(--jade-forest); }
body .service-wrapper[data-scope] .directory-row { color:var(--jade-deep); }
@media(max-width:768px) { body .service-wrapper[data-scope] .product-card-header { min-height:300px; } }

/* Inner-page banner and business hours */
.announcement__hours { display:inline-flex; align-items:center; gap:.35rem; flex:none; white-space:nowrap; opacity:.9; font-size:.76rem; letter-spacing:.02em; }
.page-heading { background-color:var(--jade-sage); background-image:linear-gradient(90deg,rgba(232,238,229,.98) 0%,rgba(232,238,229,.94) 26%,rgba(232,238,229,.74) 44%,rgba(232,238,229,.14) 72%),url('/images/jade/hero-details-desktop.jpg'); background-size:cover; background-position:center,center 52%; }
.page-heading > .site-shell { position:relative; }
@media(max-width:700px) {
    .announcement__hours { display:none; }
    .page-heading { background-image:linear-gradient(90deg,rgba(232,238,229,.94),rgba(232,238,229,.68)),url('/images/jade/hero-details-mobile.jpg'); background-position:center,center 60%; }
}
/* Calm, continuous motion across the homepage. */
@keyframes jade-hero-breathe {
    from { transform:scale(1.015) translate3d(0,0,0); }
    to { transform:scale(1.075) translate3d(-.5%,.35%,0); }
}
@keyframes jade-photo-breathe {
    from { transform:scale(1.01) translate3d(0,0,0); }
    to { transform:scale(1.065) translate3d(-.4%,.4%,0); }
}
@keyframes jade-orbit-drift {
    from { transform:translate3d(0,0,0) scale(1); opacity:.75; }
    to { transform:translate3d(-18px,14px,0) scale(1.045); opacity:1; }
}
@keyframes jade-sparkle {
    0%,100% { opacity:.55; transform:scale(.85) rotate(-12deg); }
    50% { opacity:1; transform:scale(1.25) rotate(12deg); }
}
.is-home .jade-hero__media.is-active img { animation:jade-hero-breathe 13s ease-in-out infinite alternate; will-change:transform; }
.is-home .jade-hero__side span { display:inline-block; animation:jade-sparkle 5s ease-in-out infinite; }
.is-home .jade-service-card::before { animation:jade-photo-breathe 16s ease-in-out infinite alternate; }
.is-home .jade-service-card:nth-child(2)::before { animation-delay:-5s; }
.is-home .jade-service-card:nth-child(3)::before { animation-delay:-10s; }
.is-home .jade-ritual__image { overflow:hidden; }
.is-home .jade-ritual__image img { display:block; animation:jade-photo-breathe 18s ease-in-out infinite alternate; }
.is-home .jade-reviews::before { animation:jade-orbit-drift 12s ease-in-out infinite alternate; }
@media (prefers-reduced-motion: reduce) {
    .is-home .jade-hero__media.is-active img,
    .is-home .jade-hero__side span,
    .is-home .jade-service-card::before,
    .is-home .jade-ritual__image img,
    .is-home .jade-reviews::before { animation:none; will-change:auto; }
}
/* Desktop mouse leaf trail */
.jade-cursor-leaf {
    position:fixed;
    z-index:9999;
    width:var(--leaf-size);
    height:calc(var(--leaf-size) * .72);
    border-radius:5% 85% 5% 85%;
    background:var(--leaf-color);
    box-shadow:inset -1px -1px 2px rgba(30,65,38,.16);
    pointer-events:none;
    opacity:0;
    animation:jade-cursor-leaf-fall ease-out forwards;
    will-change:transform,opacity;
}
.jade-cursor-leaf::after {
    content:"";
    position:absolute;
    left:12%;
    top:52%;
    width:76%;
    height:1px;
    background:rgba(43,77,42,.35);
    transform:rotate(-28deg);
    transform-origin:left center;
}
@keyframes jade-cursor-leaf-fall {
    0% { opacity:0; transform:translate3d(0,0,0) rotate(var(--leaf-start)) scale(.7); }
    12% { opacity:.85; }
    70% { opacity:.75; }
    100% { opacity:0; transform:translate3d(var(--leaf-drift),var(--leaf-fall),0) rotate(var(--leaf-end)) scale(.45); }
}
@media (max-width:700px), (hover:none), (pointer:coarse), (prefers-reduced-motion:reduce) {
    .jade-cursor-leaf { display:none; }
}
/* One guest review at a time */
.jade-reviews__carousel { max-width:780px; border-left:2px solid #afc9ad; background:rgba(255,255,255,.07); }
.jade-reviews__slides { min-height:245px; padding:2.1rem 2.5rem 1.2rem; }
.jade-reviews__slide { margin:0; animation:jade-review-enter .45s ease both; }
.jade-reviews__slide[hidden] { display:none; }
.jade-reviews__quote { display:block; height:2.5rem; color:#bed5bd; font-family:var(--serif); font-size:4.5rem; line-height:1; }
.jade-reviews__slide blockquote { margin:.8rem 0 1.5rem; color:#fff; font-family:var(--serif); font-size:clamp(1.4rem,2.3vw,2rem); line-height:1.4; }
.jade-reviews__slide figcaption { display:flex; align-items:baseline; flex-wrap:wrap; gap:.35rem 1rem; }
.jade-reviews__slide figcaption strong { color:#f2f3e9; font-size:.85rem; font-weight:700; }
.jade-reviews__slide figcaption span { color:#bfd0bf; font-size:.76rem; }
.jade-reviews__controls { display:flex; align-items:center; justify-content:space-between; margin:0 2.5rem; padding:1rem 0 1.3rem; border-top:1px solid rgba(255,255,255,.18); }
.jade-reviews__counter { color:#d6e3d6; font-size:.74rem; font-weight:700; letter-spacing:.16em; }
.jade-reviews__arrows { display:flex; gap:.55rem; }
.jade-reviews__arrows button { display:grid; place-items:center; width:40px; height:40px; border:1px solid rgba(255,255,255,.5); border-radius:50%; background:transparent; color:#fff; cursor:pointer; transition:background .2s ease,border-color .2s ease; }
.jade-reviews__arrows button:hover { background:rgba(255,255,255,.16); border-color:#fff; }
@keyframes jade-review-enter { from { opacity:0; transform:translateY(8px); } to { opacity:1; transform:translateY(0); } }
@media (max-width:700px) {
    .jade-reviews__slides { min-height:270px; padding:1.5rem 1.5rem .8rem; }
    .jade-reviews__controls { margin:0 1.5rem; }
}
@media (prefers-reduced-motion:reduce) { .jade-reviews__slide { animation:none; } }
/* Keep content visible if AOS is unavailable or motion is reduced. */
html:not(.aos-ready) .is-home [data-aos] { opacity:1 !important; transform:none !important; }
@media (prefers-reduced-motion: reduce) {
    .is-home [data-aos] { opacity:1 !important; transform:none !important; transition:none !important; }
}
.page-heading__intro { max-width:580px; margin:-.35rem 0 1.1rem; color:#385b45; font-size:1rem; line-height:1.7; }
@media (max-width:700px) { .page-heading__intro { max-width:320px; font-size:.9rem; } }