@layer reset, base, layout, components, pages, utilities;

@layer reset {
    *, *::before, *::after { box-sizing: border-box; }
    html { scroll-behavior: smooth; }
    body, h1, h2, h3, h4, p, figure, blockquote, dl, dd { margin: 0; }
    ul, ol { margin: 0; padding: 0; }
    img, picture, svg { display: block; max-width: 100%; }
    img { height: auto; }
    button, input, select, textarea { font: inherit; }
    button { color: inherit; }
}

@layer base {
    :root {
        --forest: #173b32;
        --forest-deep: #102d26;
        --ink: #17231f;
        --ivory: #f4f0e7;
        --paper: #fffdf8;
        --sand: #d7c7a9;
        --sand-light: #e8dfce;
        --lake: #3e6f6d;
        --lake-dark: #315b59;
        --copper: #b85f3f;
        --copper-dark: #91442d;
        --muted: #67736d;
        --line: rgba(23, 59, 50, .18);
        --line-light: rgba(255, 253, 248, .2);
        --success: #2f684f;
        --warning: #8a5b13;
        --error: #a4372f;
        --serif: "Iowan Old Style", "Palatino Linotype", Palatino, Georgia, serif;
        --sans: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
        --shell: 77.5rem;
        --wide: 92.5rem;
        --gutter: clamp(1rem, 4vw, 2.5rem);
        --section: clamp(4.5rem, 9vw, 8.5rem);
        --radius-sm: .3rem;
        --radius: .65rem;
        --shadow: 0 1.5rem 4rem rgba(16, 45, 38, .14);
    }

    html { background: var(--forest-deep); }

    body {
        min-width: 20rem;
        overflow-x: clip;
        background: var(--ivory);
        color: var(--ink);
        font-family: var(--sans);
        font-size: clamp(1rem, .96rem + .15vw, 1.08rem);
        line-height: 1.65;
        text-rendering: optimizeLegibility;
    }

    body.menu-open { overflow: hidden; }

    ::selection { background: var(--copper); color: var(--paper); }

    a { color: inherit; text-underline-offset: .22em; }
    a:hover { text-decoration-thickness: .12em; }

    h1, h2, h3, h4 {
        color: var(--forest);
        font-family: var(--serif);
        font-weight: 500;
        line-height: 1.06;
        text-wrap: balance;
    }

    h1 { font-size: clamp(2.65rem, 7.2vw, 6.4rem); letter-spacing: -.045em; }
    h2 { font-size: clamp(2.15rem, 4.7vw, 4.3rem); letter-spacing: -.035em; }
    h3 { font-size: clamp(1.45rem, 2.5vw, 2.15rem); letter-spacing: -.02em; }
    h4 { font-size: 1.2rem; }

    p { max-width: 68ch; }

    :focus-visible {
        outline: .18rem solid var(--copper);
        outline-offset: .22rem;
        border-radius: .12rem;
    }

    [hidden] { display: none !important; }

    .icon { width: 1.25em; height: 1.25em; flex: 0 0 auto; }
}

@layer layout {
    .shell {
        width: min(100% - (2 * var(--gutter)), var(--shell));
        margin-inline: auto;
    }

    .wide-shell {
        width: min(100% - (2 * var(--gutter)), var(--wide));
        margin-inline: auto;
    }

    .section { padding-block: var(--section); }
    .section--tight { padding-block: clamp(3rem, 6vw, 5.5rem); }
    .section--paper { background: var(--paper); }
    .section--forest { background: var(--forest); color: var(--paper); }
    .section--sand { background: var(--sand-light); }

    .split {
        display: grid;
        gap: clamp(2.5rem, 7vw, 7.5rem);
        align-items: center;
    }

    .stack > * + * { margin-top: var(--stack-space, 1.25rem); }
    .measure { max-width: 68ch; }
    .narrow { max-width: 48rem; }
}

@layer components {
    .skip-link {
        position: fixed;
        z-index: 1000;
        top: .75rem;
        left: .75rem;
        padding: .8rem 1rem;
        transform: translateY(-160%);
        background: var(--paper);
        color: var(--forest);
        font-weight: 750;
        border: .12rem solid var(--forest);
        transition: transform .2s ease;
    }

    .skip-link:focus { transform: none; }

    .eyebrow {
        display: flex;
        align-items: center;
        gap: .65rem;
        color: var(--copper-dark);
        font-size: .76rem;
        font-weight: 800;
        letter-spacing: .15em;
        line-height: 1.25;
        text-transform: uppercase;
    }

    .eyebrow::before {
        width: 2.35rem;
        height: .08rem;
        content: "";
        background: currentColor;
    }

    .eyebrow--light { color: #e9c9b9; }

    .section-heading {
        display: grid;
        gap: 1.15rem;
        margin-bottom: clamp(2rem, 5vw, 4.5rem);
    }

    .section-heading--split { align-items: end; }
    .section-heading__copy { color: var(--muted); max-width: 39rem; }

    .button {
        position: relative;
        display: inline-flex;
        min-height: 3rem;
        padding: .84rem 1.2rem;
        border: .09rem solid transparent;
        border-radius: var(--radius-sm);
        align-items: center;
        justify-content: center;
        gap: .65rem;
        cursor: pointer;
        font-size: .92rem;
        font-weight: 780;
        letter-spacing: .015em;
        line-height: 1.2;
        text-align: center;
        text-decoration: none;
        transition: color .2s ease, background-color .2s ease, border-color .2s ease, transform .2s ease;
    }

    .button .icon { transition: transform .2s ease; }
    .button:hover { text-decoration: none; }
    .button:hover .icon { transform: translateX(.2rem); }
    .button:active { transform: translateY(.08rem); }
    .button:disabled, .button[aria-disabled="true"] { opacity: .58; cursor: not-allowed; }

    .button--primary { background: var(--copper); color: var(--paper); }
    .button--primary:hover { background: var(--copper-dark); }
    .button--secondary { border-color: var(--forest); color: var(--forest); background: transparent; }
    .button--secondary:hover { background: var(--forest); color: var(--paper); }
    .button--light { background: var(--paper); color: var(--forest); }
    .button--light:hover { background: var(--sand-light); }
    .button--ghost { color: var(--forest); border-color: var(--line); background: rgba(255, 253, 248, .48); }
    .button--ghost:hover { border-color: var(--forest); background: var(--paper); }
    .button--wide { width: 100%; }

    .text-link {
        display: inline-flex;
        align-items: center;
        gap: .45rem;
        color: var(--forest);
        font-weight: 750;
        text-decoration-thickness: .08em;
    }

    .text-link .icon { transition: transform .2s ease; }
    .text-link:hover .icon { transform: translate(.15rem, -.15rem); }

    .site-ribbon {
        position: relative;
        z-index: 51;
        background: var(--forest-deep);
        color: rgba(255, 253, 248, .84);
        font-size: .76rem;
    }

    .site-ribbon__inner {
        display: flex;
        min-height: 2.15rem;
        align-items: center;
        justify-content: space-between;
        gap: 1rem;
    }

    .site-ribbon p, .site-ribbon a {
        display: flex;
        align-items: center;
        gap: .42rem;
        text-decoration: none;
    }

    .site-ribbon .icon { width: 1rem; }
    .site-ribbon__contact { display: flex; gap: 1.3rem; }
    .site-ribbon a:hover { color: var(--paper); }

    .site-header {
        position: sticky;
        z-index: 50;
        top: 0;
        border-bottom: .06rem solid var(--line);
        background: rgba(244, 240, 231, .94);
        backdrop-filter: blur(1rem);
    }

    .site-header__inner {
        display: flex;
        min-height: 5.15rem;
        align-items: center;
        justify-content: space-between;
        gap: 1.5rem;
    }

    .brand {
        display: inline-flex;
        align-items: center;
        gap: .72rem;
        color: var(--forest);
        text-decoration: none;
    }

    .brand:hover { text-decoration: none; }
    .brand__mark { display: grid; width: 2.45rem; height: 2.45rem; place-items: center; color: var(--lake); }
    .brand__mark svg { width: 100%; height: 100%; stroke: currentColor; stroke-width: 1.75; stroke-linecap: round; stroke-linejoin: round; }
    .brand__text { display: grid; }
    .brand__text strong { font-family: var(--serif); font-size: 1.22rem; font-weight: 600; line-height: 1.05; }
    .brand__text small { margin-top: .22rem; color: var(--muted); font-size: .64rem; font-weight: 700; letter-spacing: .11em; line-height: 1; text-transform: uppercase; }

    .site-nav { display: flex; align-items: center; gap: clamp(1.15rem, 2.1vw, 2rem); }
    .site-nav ul { display: flex; list-style: none; align-items: center; gap: clamp(.85rem, 1.7vw, 1.6rem); }
    .site-nav ul a { position: relative; padding-block: 1.85rem; color: #29423a; font-size: .84rem; font-weight: 720; text-decoration: none; }
    .site-nav ul a::after { position: absolute; right: 0; bottom: 1.3rem; left: 0; height: .12rem; content: ""; transform: scaleX(0); background: var(--copper); transition: transform .2s ease; }
    .site-nav ul a:hover::after, .site-nav ul a[aria-current="page"]::after { transform: scaleX(1); }
    .site-nav ul a[aria-current="page"] { color: var(--forest); }
    .site-nav__cta { min-height: 2.75rem; padding-inline: 1rem; }

    .menu-toggle {
        display: none;
        min-width: 3rem;
        min-height: 3rem;
        padding: .6rem;
        border: .07rem solid var(--line);
        border-radius: var(--radius-sm);
        align-items: center;
        justify-content: center;
        gap: .45rem;
        background: transparent;
        cursor: pointer;
        font-size: .76rem;
        font-weight: 800;
    }

    .menu-toggle__open, .menu-toggle__close { display: grid; place-items: center; }
    .menu-toggle__close { display: none; }
    .menu-toggle[aria-expanded="true"] .menu-toggle__open { display: none; }
    .menu-toggle[aria-expanded="true"] .menu-toggle__close { display: grid; }
    .menu-scrim { position: fixed; z-index: 48; inset: 0; background: rgba(10, 28, 23, .55); }

    .breadcrumbs { margin-bottom: clamp(1.5rem, 3vw, 2.75rem); }
    .breadcrumbs ol { display: flex; flex-wrap: wrap; list-style: none; gap: .4rem; color: var(--muted); font-size: .78rem; font-weight: 690; }
    .breadcrumbs li { display: flex; gap: .4rem; align-items: center; }
    .breadcrumbs a { color: var(--forest); }

    .inner-hero {
        position: relative;
        min-height: clamp(29rem, 67vh, 48rem);
        display: grid;
        align-items: end;
        overflow: hidden;
        background: var(--forest);
        color: var(--paper);
    }

    .inner-hero__media, .inner-hero__media img, .inner-hero__media::after { position: absolute; inset: 0; width: 100%; height: 100%; }
    .inner-hero__media img { object-fit: cover; }
    .inner-hero__media::after { content: ""; background: linear-gradient(90deg, rgba(10, 28, 23, .88) 0%, rgba(10, 28, 23, .58) 43%, rgba(10, 28, 23, .08) 76%), linear-gradient(0deg, rgba(10, 28, 23, .64), transparent 55%); }
    .inner-hero__content { position: relative; z-index: 1; padding-block: clamp(3rem, 7vw, 6rem); }
    .inner-hero .breadcrumbs { color: rgba(255, 253, 248, .7); }
    .inner-hero .breadcrumbs a { color: var(--paper); }
    .inner-hero h1 { max-width: 11ch; color: var(--paper); font-size: clamp(3rem, 7vw, 6.5rem); }
    .inner-hero__lead { max-width: 43rem; margin-top: 1.3rem; color: rgba(255, 253, 248, .88); font-size: clamp(1.05rem, 1.5vw, 1.25rem); }

    .page-intro {
        display: grid;
        gap: 2rem;
        padding-block: clamp(3.5rem, 7vw, 7rem);
        border-bottom: .06rem solid var(--line);
    }

    .page-intro h1 { max-width: 13ch; }
    .page-intro__lead { color: #3f514a; font-family: var(--serif); font-size: clamp(1.25rem, 2.2vw, 1.8rem); line-height: 1.45; }

    .notice {
        display: flex;
        padding: 1rem 1.1rem;
        border: .06rem solid rgba(62, 111, 109, .35);
        border-left: .24rem solid var(--lake);
        border-radius: var(--radius-sm);
        gap: .75rem;
        background: rgba(62, 111, 109, .08);
        color: #294942;
        font-size: .9rem;
    }

    .notice--warning { border-color: rgba(138, 91, 19, .3); border-left-color: var(--warning); background: rgba(138, 91, 19, .08); color: #624613; }
    .notice--success { border-color: rgba(47, 104, 79, .3); border-left-color: var(--success); background: rgba(47, 104, 79, .08); color: #24523e; }
    .notice--error { border-color: rgba(164, 55, 47, .3); border-left-color: var(--error); background: rgba(164, 55, 47, .08); color: #7b2d27; }
    .notice .icon { margin-top: .14rem; }

    .booking-cta { position: relative; overflow: hidden; background: var(--forest); color: var(--paper); }
    .booking-cta__water { position: absolute; inset: 0; background: linear-gradient(90deg, rgba(16, 45, 38, .94), rgba(23, 59, 50, .74)), url("../images/brand/lake-texture.webp") center / cover; opacity: .52; }
    .booking-cta__inner { position: relative; display: grid; gap: 2rem; align-items: end; }
    .booking-cta h2 { max-width: 12ch; margin-top: 1rem; color: var(--paper); }
    .booking-cta p:not(.eyebrow) { max-width: 43rem; margin-top: 1rem; color: rgba(255, 253, 248, .8); }
    .booking-cta__actions { display: grid; justify-items: start; gap: 1rem; }
    .booking-cta__actions > span { display: flex; align-items: center; gap: .45rem; color: rgba(255, 253, 248, .7); font-size: .78rem; }

    .site-footer { position: relative; overflow: hidden; padding-top: clamp(4rem, 8vw, 7rem); background: var(--forest-deep); color: rgba(255, 253, 248, .78); }
    .site-footer__texture { position: absolute; inset: auto -5% -10% 40%; height: 100%; background: url("../images/brand/lake-texture.webp") center / cover; opacity: .08; mix-blend-mode: screen; transform: rotate(-3deg); }
    .site-footer__grid { position: relative; display: grid; gap: 3rem 2rem; }
    .site-footer h2 { margin-bottom: 1.15rem; color: var(--paper); font-family: var(--sans); font-size: .75rem; font-weight: 800; letter-spacing: .14em; text-transform: uppercase; }
    .brand--footer { color: var(--paper); }
    .brand--footer .brand__text small { color: rgba(255, 253, 248, .52); }
    .site-footer__brand > p { max-width: 24rem; margin-top: 1.35rem; }
    .site-footer ul { display: grid; list-style: none; gap: .52rem; }
    .site-footer a { text-decoration-color: rgba(255, 253, 248, .38); }
    .site-footer__contact { display: grid; align-content: start; gap: .7rem; }
    .site-footer__contact h2 { margin-bottom: .45rem; }
    .site-footer__contact a, .site-footer__contact p { display: flex; gap: .65rem; align-items: flex-start; text-decoration: none; }
    .site-footer__contact a:hover { color: var(--paper); }
    .site-footer__contact .icon { margin-top: .18rem; color: #c6dad4; }
    .site-footer__reserve { padding-top: 2rem; border-top: .06rem solid var(--line-light); }
    .site-footer__reserve h2 { margin: .8rem 0 1.3rem; max-width: 12ch; font-family: var(--serif); font-size: clamp(2rem, 3.7vw, 3.35rem); font-weight: 500; letter-spacing: -.025em; line-height: 1.05; text-transform: none; }
    .site-footer__bottom { position: relative; display: flex; padding-block: 1.5rem; margin-top: clamp(3rem, 7vw, 6rem); border-top: .06rem solid var(--line-light); justify-content: space-between; gap: 1rem 2rem; font-size: .75rem; }
    .site-footer__bottom nav { display: flex; flex-wrap: wrap; gap: .8rem 1.3rem; }

    .toast-region { position: fixed; z-index: 120; right: 1rem; bottom: 1rem; display: grid; width: min(25rem, calc(100% - 2rem)); gap: .7rem; }
    .toast { padding: 1rem 1.1rem; border: .06rem solid var(--line); border-left: .24rem solid var(--lake); border-radius: var(--radius-sm); box-shadow: var(--shadow); background: var(--paper); color: var(--ink); font-size: .9rem; }
    .toast--error { border-left-color: var(--error); }
}

@layer utilities {
    .sr-only {
        position: absolute !important;
        width: 1px !important;
        height: 1px !important;
        padding: 0 !important;
        margin: -1px !important;
        overflow: hidden !important;
        clip: rect(0, 0, 0, 0) !important;
        white-space: nowrap !important;
        border: 0 !important;
    }

    .mobile-only { display: none; }
}

@media (min-width: 48rem) {
    @layer layout {
        .split { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); }
    }

    @layer components {
        .section-heading--split { grid-template-columns: minmax(0, 1.2fr) minmax(18rem, .8fr); }
        .page-intro { grid-template-columns: minmax(0, 1.05fr) minmax(20rem, .8fr); align-items: end; }
        .booking-cta__inner { grid-template-columns: minmax(0, 1fr) auto; }
        .booking-cta__actions { justify-items: end; }
        .site-footer__grid { grid-template-columns: minmax(13rem, 1.35fr) minmax(9rem, .65fr) minmax(13rem, .8fr); }
        .site-footer__reserve { grid-column: 1 / -1; }
    }
}

@media (min-width: 70rem) {
    @layer components {
        .site-footer__grid { grid-template-columns: 1.35fr .65fr .85fr 1.15fr; }
        .site-footer__reserve { grid-column: auto; padding: 0 0 0 2.5rem; border-top: 0; border-left: .06rem solid var(--line-light); }
    }
}

@media (max-width: 67.99rem) {
    @layer components {
        .site-ribbon__contact a:last-child { display: none; }
        .menu-toggle { display: inline-flex; }
        .site-nav {
            position: fixed;
            z-index: 49;
            top: calc(2.15rem + 5.15rem);
            right: var(--gutter);
            left: var(--gutter);
            display: grid;
            max-height: calc(100dvh - 8rem);
            padding: 1.1rem;
            overflow-y: auto;
            transform: translateY(-.75rem);
            border: .06rem solid var(--line);
            border-radius: var(--radius);
            box-shadow: var(--shadow);
            visibility: hidden;
            opacity: 0;
            background: var(--paper);
            transition: opacity .18s ease, transform .18s ease, visibility .18s;
        }
        .site-nav.is-open { transform: none; visibility: visible; opacity: 1; }
        .site-nav ul { display: grid; gap: 0; }
        .site-nav ul li + li { border-top: .06rem solid var(--line); }
        .site-nav ul a { display: block; padding: .85rem .35rem; font-family: var(--serif); font-size: 1.4rem; font-weight: 500; }
        .site-nav ul a::after { display: none; }
        .site-nav__cta { margin-top: .35rem; }
    }
}

@media (max-width: 39.99rem) {
    @layer components {
        .site-ribbon__inner { justify-content: center; }
        .site-ribbon__contact { display: none; }
        .site-ribbon p span { white-space: nowrap; }
        .brand__text strong { font-size: 1.05rem; }
        .brand__text small { font-size: .55rem; }
        .menu-toggle__label { display: none; }
        .site-footer__bottom { display: grid; }
        .site-footer__bottom nav { display: grid; }
        .mobile-only { display: initial; }
    }
}

/* Price list, surroundings, public forms, legal and utility pages */
@layer pages {
    .price-head .button { margin-top: 1.5rem; }
    .price-season-grid { display: grid; gap: 1rem; }
    .price-card { padding: clamp(1.3rem,3vw,2.2rem); border: .08rem solid var(--line); background: var(--paper); }
    .price-card--featured { border-top: .28rem solid var(--copper); }
    .price-card > header { display: flex; min-height: 6rem; padding-bottom: 1.3rem; border-bottom: .06rem solid var(--line); align-items: flex-start; justify-content: space-between; gap: 1rem; }
    .price-card > header h3 { margin-top: .55rem; }
    .price-card > header > span { color: var(--muted); font-size: .7rem; text-align: right; }
    .price-card ul { display: grid; list-style: none; }
    .price-card li { display: flex; min-height: 6rem; padding: 1rem 0; border-bottom: .06rem solid var(--line); align-items: center; justify-content: space-between; gap: 1rem; }
    .price-card li > div, .price-card li > span { display: grid; }
    .price-card li > div strong { color: var(--forest); font-size: .86rem; }
    .price-card li small { color: var(--muted); font-size: .67rem; font-weight: 500; }
    .price-card li > span { color: var(--forest); font-family: var(--serif); font-size: clamp(1.4rem,3vw,2rem); font-weight: 600; text-align: right; white-space: nowrap; }
    .price-card__note { margin: .95rem 0 0; color: var(--muted); font-size: .76rem; line-height: 1.5; }
    .price-card .button { margin-top: 1.4rem; }
    .price-confirmation { margin-top: 1rem; }

    .extras-section__grid > div:first-child h2 { margin-top: 1rem; }
    .extras-section__grid > div:first-child > p:not(.eyebrow) { margin-top: 1rem; color: var(--muted); }
    .price-list { border-top: .06rem solid var(--line); }
    .price-list > div { display: flex; min-height: 5rem; padding: .85rem 0; border-bottom: .06rem solid var(--line); align-items: center; justify-content: space-between; gap: 1rem; }
    .price-list span { display: grid; }
    .price-list strong { color: var(--forest); }
    .price-list small { color: var(--muted); font-size: .7rem; }
    .price-list b { color: var(--forest); font-family: var(--serif); font-size: 1.35rem; font-weight: 600; white-space: nowrap; }
    .included-strip { display: flex; padding-top: clamp(2rem,5vw,4rem); margin-top: clamp(2rem,5vw,4rem); border-top: .06rem solid var(--line); flex-wrap: wrap; align-items: center; gap: 1.3rem clamp(1.5rem,4vw,4rem); }
    .included-strip > div { display: flex; align-items: flex-start; gap: .65rem; }
    .included-strip > div > .icon { margin-top: .12rem; color: var(--lake); }
    .included-strip > div span { display: grid; }
    .included-strip small { max-width: 24rem; color: var(--muted); font-size: .7rem; }

    .onsite-list { border-top: .06rem solid var(--line); }
    .onsite-list article { display: grid; padding: clamp(1.3rem,3vw,2rem) 0; border-bottom: .06rem solid var(--line); gap: 1rem; align-items: center; }
    .onsite-list article > span { display: grid; width: 3rem; height: 3rem; border-radius: 50%; place-items: center; background: rgba(62,111,109,.1); color: var(--lake); }
    .onsite-list h3 { font-family: var(--sans); font-size: 1rem; font-weight: 800; }
    .onsite-list p { margin-top: .35rem; color: var(--muted); font-size: .82rem; }
    .onsite-list article > strong { color: var(--forest); font-family: var(--serif); font-size: 1.35rem; font-weight: 600; white-space: nowrap; }
    .price-notes h2 { margin-top: 1rem; }
    .price-notes p:not(.eyebrow) { color: #4b5c55; }

    .surroundings-hero { position: relative; min-height: clamp(34rem,72vh,49rem); display: grid; align-items: center; overflow: hidden; background: var(--lake-dark); color: var(--paper); }
    .surroundings-hero__texture { position: absolute; inset: 0; background: linear-gradient(90deg, rgba(16,45,38,.97), rgba(49,91,89,.7)), url("../images/brand/lake-texture.webp") center / cover; opacity: .88; }
    .surroundings-hero__grid { position: relative; display: grid; gap: 3rem; align-items: center; }
    .surroundings-hero .breadcrumbs { color: rgba(255,253,248,.65); }
    .surroundings-hero .breadcrumbs a { color: var(--paper); }
    .surroundings-hero h1 { max-width: 11ch; margin-top: 1rem; color: var(--paper); }
    .surroundings-hero__grid > div:first-child > p:not(.eyebrow) { max-width: 39rem; margin-top: 1.3rem; color: rgba(255,253,248,.8); font-size: 1.1rem; }
    .surroundings-hero__route { position: relative; min-height: 16rem; }
    .surroundings-hero__route svg { position: absolute; inset: 0; width: 100%; height: 100%; stroke: rgba(255,253,248,.38); stroke-width: 1.5; stroke-dasharray: 5 8; }
    .route-point { position: absolute; z-index: 1; display: grid; width: 6.3rem; height: 6.3rem; border: .08rem solid rgba(255,253,248,.5); border-radius: 50%; place-items: center; background: rgba(16,45,38,.68); font-family: var(--serif); font-size: .85rem; }
    .route-point--cottage { bottom: 1rem; left: 5%; }
    .route-point--lake { top: 0; right: 4%; width: 8rem; height: 8rem; background: rgba(62,111,109,.75); }

    .darko-intro__photo { position: relative; min-height: clamp(24rem,58vw,38rem); overflow: hidden; }
    .darko-intro__photo img { width: 100%; height: 100%; object-fit: cover; }
    .darko-intro__photo span { position: absolute; right: .8rem; bottom: .8rem; padding: .45rem .6rem; background: rgba(16,45,38,.78); color: var(--paper); font-size: .65rem; }
    .darko-intro h2 { margin-top: 1rem; }
    .darko-intro .stack > p:not(.eyebrow) { color: var(--muted); }
    .fact-row { display: grid; grid-template-columns: repeat(2,1fr); padding-top: 1.3rem; margin-top: 1rem; border-top: .06rem solid var(--line); gap: 1rem; }
    .fact-row > span { display: grid; grid-template-columns: auto 1fr; column-gap: .55rem; }
    .fact-row .icon { grid-row: span 2; margin-top: .12rem; color: var(--lake); }
    .fact-row strong { color: var(--forest); }
    .fact-row small { color: var(--muted); font-size: .67rem; }

    .route-story-grid { display: grid; gap: 1rem; }
    .route-story-grid article { position: relative; padding: clamp(1.4rem,3.5vw,2.5rem); border: .06rem solid var(--line); background: var(--ivory); }
    .route-story__index { position: absolute; top: 1.3rem; right: 1.3rem; color: rgba(23,59,50,.2); font-family: var(--serif); font-size: 2.5rem; }
    .route-story-grid h3 { max-width: 15ch; margin-top: .9rem; }
    .route-story-grid article > p:not(.eyebrow) { margin-top: 1.1rem; color: var(--muted); }
    .route-story-grid ul { display: grid; padding: 1.2rem 0 0 1.1rem; margin-top: 1.2rem; border-top: .06rem solid var(--line); gap: .35rem; color: #4e5e58; font-size: .78rem; }

    .seasons-grid { display: grid; gap: .6rem; }
    .seasons-grid article { min-height: 15rem; padding: 1.4rem; background: var(--sand-light); }
    .seasons-grid article > span, .seasons-grid__winter div > span { color: var(--copper-dark); font-size: .7rem; font-weight: 800; letter-spacing: .14em; text-transform: uppercase; }
    .seasons-grid h3 { margin-top: .8rem; }
    .seasons-grid p { margin-top: .7rem; color: var(--muted); font-size: .82rem; }
    .seasons-grid__winter { position: relative; min-height: 25rem !important; overflow: hidden; color: var(--paper); }
    .seasons-grid__winter::after { position: absolute; inset: 0; content: ""; background: linear-gradient(0deg, rgba(10,28,23,.82), rgba(10,28,23,.08)); }
    .seasons-grid__winter img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
    .seasons-grid__winter div { position: absolute; z-index: 1; right: 1.4rem; bottom: 1.4rem; left: 1.4rem; }
    .seasons-grid__winter h3 { color: var(--paper); }
    .seasons-grid__winter p { color: rgba(255,253,248,.75); }

    .trip-list { border-top: .06rem solid var(--line); }
    .trip-list a { display: grid; grid-template-columns: 4rem 1fr auto; min-height: 4.7rem; padding: .85rem 0; border-bottom: .06rem solid var(--line); align-items: center; gap: 1rem; text-decoration: none; }
    .trip-list a > span { color: var(--copper-dark); font-size: .72rem; font-weight: 800; }
    .trip-list a > strong { color: var(--forest); font-family: var(--serif); font-size: clamp(1rem,2vw,1.25rem); font-weight: 600; }
    .trip-list a .icon { color: var(--lake); transition: transform .2s ease; }
    .trip-list a:hover .icon { transform: translate(.2rem,-.2rem); }
    .trip-tips__note { margin-top: 1rem; color: var(--muted); font-size: .72rem; }

    .reviews-empty { display: grid; padding: clamp(1.4rem,4vw,3rem); border: .06rem solid var(--line); align-items: center; gap: 1.3rem; background: var(--paper); }
    .reviews-empty > span { display: grid; width: 4rem; height: 4rem; border-radius: 50%; place-items: center; background: rgba(62,111,109,.1); color: var(--lake); }
    .reviews-empty p { margin-top: .6rem; color: var(--muted); }
    .reviews-grid { display: grid; gap: 1rem; }
    .review-card__reply { padding: 1rem; margin-top: 1.2rem; border-left: .2rem solid var(--lake); background: var(--paper); font-size: .8rem; }
    .review-card__reply p { margin-top: .3rem; color: var(--muted); }
    .review-card__verified { display: inline-flex; margin-top: .9rem; align-items: center; gap: .35rem; color: var(--success); font-size: .7rem; font-weight: 780; }
    .review-card__verified .icon { width: 1rem; }
    .review-form-section__intro { align-self: start; }
    .review-form-section__intro h2 { max-width: 11ch; margin-top: 1rem; }
    .review-form-section__intro > p:not(.eyebrow) { margin-top: 1.1rem; color: var(--muted); }
    .moderation-note { display: flex; padding-top: 1.2rem; margin-top: 1.5rem; border-top: .06rem solid var(--line); gap: .7rem; color: var(--muted); font-size: .75rem; }
    .moderation-note .icon { color: var(--lake); }
    .moderation-note strong { display: block; color: var(--forest); }

    .public-form { position: relative; padding: clamp(1.25rem,3.5vw,2.5rem); border: .06rem solid var(--line); background: var(--ivory); }
    .public-form .form-grid { margin-bottom: 1rem; }
    .public-form__consent { margin: 1.2rem 0; }
    .honeypot { position: absolute; left: -10000px; width: 1px; height: 1px; overflow: hidden; }
    .rating-fieldset { margin-bottom: 1.3rem; }
    .rating-fieldset legend { margin-bottom: .65rem; color: var(--forest); font-size: .82rem; font-weight: 780; }
    .rating-options { display: grid; gap: .35rem; }
    .rating-options label { position: relative; display: flex; min-height: 2.7rem; padding: .45rem .7rem; border: .06rem solid var(--line); align-items: center; justify-content: space-between; gap: 1rem; cursor: pointer; }
    .rating-options input { position: absolute; opacity: 0; }
    .rating-options label:has(input:checked) { border-color: var(--forest); background: var(--paper); }
    .rating-options label:has(input:focus-visible) { outline: .18rem solid var(--copper); outline-offset: .18rem; }
    .rating-options label > span { display: flex; gap: .12rem; color: var(--copper-dark); }
    .rating-options .icon { width: .9rem; fill: currentColor; }
    .rating-options small { color: var(--muted); }
    .form-status { padding: .85rem 1rem; margin: 1rem 0; border-left: .2rem solid var(--lake); background: rgba(62,111,109,.08); font-size: .82rem; }
    .form-status--success { border-left-color: var(--success); color: #24523e; }
    .form-status--error { border-left-color: var(--error); color: #7b2d27; }

    .contact-grid { display: grid; gap: clamp(2rem,6vw,6rem); align-items: start; }
    .contact-details h2 { margin-top: 1rem; }
    .contact-details__links { display: grid; margin-top: 2rem; border-top: .06rem solid var(--line); }
    .contact-details__links a { display: grid; grid-template-columns: 2.8rem 1fr; min-height: 5.6rem; padding: 1rem 0; border-bottom: .06rem solid var(--line); align-items: center; text-decoration: none; }
    .contact-details__links a > span { grid-row: span 2; display: grid; width: 2.5rem; height: 2.5rem; border-radius: 50%; place-items: center; background: rgba(62,111,109,.1); color: var(--lake); }
    .contact-details__links small { color: var(--muted); font-size: .68rem; }
    .contact-details__links strong { color: var(--forest); font-family: var(--serif); font-size: clamp(1.05rem,2vw,1.35rem); font-weight: 600; overflow-wrap: anywhere; }
    .operator-details { margin-top: 2rem; }
    .operator-details div { display: grid; grid-template-columns: minmax(8rem,.55fr) 1fr; padding: .7rem 0; border-bottom: .06rem solid var(--line); gap: 1rem; font-size: .76rem; }
    .operator-details dt { color: var(--muted); }
    .operator-details dd { color: var(--forest); font-weight: 650; }
    .contact-form { box-shadow: var(--shadow); background: var(--paper); }

    .location-section { position: relative; min-height: 38rem; display: grid; align-items: center; overflow: hidden; background: var(--forest); color: var(--paper); }
    .location-section__map { position: absolute; inset: 0; overflow: hidden; background: linear-gradient(rgba(23,59,50,.83),rgba(23,59,50,.83)), repeating-linear-gradient(35deg, transparent 0 4rem, rgba(255,253,248,.09) 4rem 4.08rem); }
    .map-pin { position: absolute; z-index: 2; top: 32%; right: 22%; display: grid; width: 5rem; height: 5rem; border-radius: 50% 50% 50% 0; place-items: center; background: var(--copper); color: var(--paper); transform: rotate(-45deg); }
    .map-pin .icon { width: 2rem; transform: rotate(45deg); }
    .map-water { position: absolute; right: -5%; width: 55%; height: 20%; border: .12rem solid rgba(188,212,205,.28); border-radius: 50%; }
    .map-water--one { top: 12%; transform: rotate(-8deg); }
    .map-water--two { top: 24%; transform: rotate(4deg); }
    .map-road { position: absolute; top: -20%; right: 45%; width: .15rem; height: 150%; background: rgba(255,253,248,.18); transform: rotate(22deg); }
    .location-section__content { position: relative; display: grid; max-width: 70rem; gap: 2rem; }
    .location-section h2 { max-width: 10ch; margin-top: 1rem; color: var(--paper); }
    .location-section__content > div > p:not(.eyebrow) { max-width: 32rem; margin-top: 1rem; color: rgba(255,253,248,.72); }
    .location-section dl { max-width: 30rem; border-top: .06rem solid var(--line-light); }
    .location-section dl div { display: grid; grid-template-columns: 8rem 1fr; padding: .75rem 0; border-bottom: .06rem solid var(--line-light); gap: 1rem; font-size: .8rem; }
    .location-section dt { color: rgba(255,253,248,.55); }

    .legal-meta { margin-top: 1rem; color: var(--muted); font-size: .72rem; }
    .legal-layout { display: grid; gap: clamp(2rem,6vw,6rem); align-items: start; }
    .legal-nav { padding: 1.2rem; border: .06rem solid var(--line); background: var(--paper); }
    .legal-nav > strong { color: var(--forest); font-size: .76rem; text-transform: uppercase; letter-spacing: .09em; }
    .legal-nav nav { display: grid; margin-top: .8rem; }
    .legal-nav a { padding: .5rem 0; border-top: .06rem solid var(--line); color: var(--muted); font-size: .78rem; }
    .legal-copy { min-width: 0; }
    .legal-copy > section { padding-block: clamp(2.2rem,5vw,4rem); border-bottom: .06rem solid var(--line); scroll-margin-top: 6rem; }
    .legal-copy > section h2 { margin-top: .8rem; font-size: clamp(2rem,4vw,3.2rem); }
    .legal-copy h3 { margin-top: 1.7rem; font-family: var(--sans); font-size: 1rem; font-weight: 800; }
    .legal-copy section > p:not(.eyebrow,.notice), .legal-copy section > ul { margin-top: 1rem; color: #43534d; }
    .legal-copy section > ul { display: grid; padding-left: 1.25rem; gap: .45rem; }
    .legal-copy a { display: inline-flex; align-items: center; gap: .3rem; color: var(--forest); font-weight: 650; }
    .legal-copy .notice { margin-top: 1.2rem; }
    .cancellation-table { margin-top: 1.5rem; border: .06rem solid var(--line); }
    .cancellation-table > div { display: grid; grid-template-columns: 1fr minmax(7rem,.35fr); min-height: 3.5rem; padding: .7rem 1rem; border-bottom: .06rem solid var(--line); align-items: center; gap: 1rem; }
    .cancellation-table > div:last-child { border-bottom: 0; }
    .cancellation-table__head { background: var(--forest); color: var(--paper); font-size: .72rem; font-weight: 750; }
    .cancellation-table strong { color: var(--forest); font-family: var(--serif); font-size: 1.3rem; }

    .payment-result { min-height: 70vh; display: grid; align-items: center; background: radial-gradient(circle at 70% 20%, rgba(62,111,109,.13), transparent 32%), var(--ivory); }
    .payment-result__shell { max-width: 55rem; text-align: center; }
    .payment-result__icon { display: grid; width: 5rem; height: 5rem; margin: 0 auto 1.5rem; border-radius: 50%; place-items: center; color: var(--paper); }
    .payment-result__icon .icon { width: 2rem; }
    .payment-result__icon--success { background: var(--success); }
    .payment-result__icon--pending { background: var(--lake); }
    .payment-result__icon--error { background: var(--error); }
    .payment-result__icon--neutral { background: var(--muted); }
    .payment-result .eyebrow { justify-content: center; }
    .payment-result h1 { max-width: 12ch; margin: 1rem auto 0; font-size: clamp(2.7rem,6vw,5rem); }
    .payment-result__lead { max-width: 42rem; margin: 1.2rem auto 0; color: var(--muted); }
    .payment-result__summary { display: grid; margin: 2rem auto 0; border: .06rem solid var(--line); background: var(--paper); text-align: left; }
    .payment-result__summary div { display: flex; min-height: 3.5rem; padding: .7rem 1rem; border-bottom: .06rem solid var(--line); align-items: center; justify-content: space-between; gap: 1rem; }
    .payment-result__summary div:last-child { border-bottom: 0; }
    .payment-result__summary dt { color: var(--muted); font-size: .72rem; }
    .payment-result__summary dd { color: var(--forest); font-weight: 750; text-align: right; }
    [data-booking-status] { display: flex; margin-top: 1rem; justify-content: center; align-items: center; gap: .55rem; color: var(--lake-dark); font-size: .75rem; }
    .status-pulse { width: .7rem; height: .7rem; border-radius: 50%; background: var(--lake); animation: status-pulse 1.5s ease infinite; }
    @keyframes status-pulse { 50% { transform: scale(.7); opacity: .45; } }
    .payment-result__actions { display: flex; flex-wrap: wrap; margin-top: 2rem; justify-content: center; gap: .75rem; }
    .payment-result__contact { margin: 1.5rem auto 0; color: var(--muted); font-size: .75rem; }

    .not-found { position: relative; min-height: 75vh; display: grid; align-items: center; overflow: hidden; background: var(--forest); color: var(--paper); }
    .not-found__texture { position: absolute; inset: 0; background: linear-gradient(90deg,rgba(16,45,38,.97),rgba(16,45,38,.65)),url("../images/brand/lake-texture.webp") center/cover; opacity: .75; }
    .not-found__content { position: relative; }
    .not-found__code { display: block; color: rgba(255,253,248,.15); font-family: var(--serif); font-size: clamp(7rem,25vw,18rem); line-height: .7; }
    .not-found h1 { max-width: 10ch; margin-top: 1rem; color: var(--paper); }
    .not-found__content > p:not(.eyebrow) { max-width: 35rem; margin-top: 1.2rem; color: rgba(255,253,248,.72); }
    .not-found__content > div { display: flex; flex-wrap: wrap; margin-top: 1.7rem; gap: .75rem; }
    .not-found__outline { border-color: rgba(255,253,248,.5); color: var(--paper); }
    .not-found__outline:hover { background: rgba(255,253,248,.12); }
}

@media (min-width: 42rem) {
    @layer pages {
        .onsite-list article { grid-template-columns: 3.5rem minmax(0,1fr) auto; }
        .reviews-empty { grid-template-columns: 4rem 1fr auto; }
    }
}

@media (min-width: 48rem) {
    @layer pages {
        .price-season-grid, .route-story-grid, .reviews-grid { grid-template-columns: repeat(2,minmax(0,1fr)); }
        .surroundings-hero__grid { grid-template-columns: 1.1fr .9fr; }
        .seasons-grid { grid-template-columns: repeat(2,minmax(0,1fr)); }
        .seasons-grid__winter { grid-column: span 2; }
        .contact-grid { grid-template-columns: minmax(18rem,.75fr) minmax(0,1.1fr); }
        .location-section__content { grid-template-columns: 1.2fr .8fr; }
        .location-section__content .button { justify-self: start; }
        .legal-layout { grid-template-columns: 14rem minmax(0,1fr); }
        .legal-nav { position: sticky; top: 6.2rem; }
        .payment-result__summary { grid-template-columns: repeat(2,1fr); }
        .payment-result__summary div:nth-child(odd) { border-right: .06rem solid var(--line); }
        .payment-result__summary div:nth-last-child(-n+2) { border-bottom: 0; }
    }
}

@media (min-width: 65rem) {
    @layer pages {
        .seasons-grid { grid-template-columns: repeat(4,minmax(0,1fr)); }
        .seasons-grid__winter { grid-column: span 2; grid-row: span 2; }
        .seasons-grid article:not(.seasons-grid__winter) { min-height: 18rem; }
    }
}

@media (prefers-reduced-motion: reduce) {
    *, *::before, *::after {
        scroll-behavior: auto !important;
        animation-duration: .01ms !important;
        animation-iteration-count: 1 !important;
        transition-duration: .01ms !important;
    }
}

/* Homepage */
@layer pages {
    .reveal-ready [data-reveal] { transform: translateY(1.2rem); opacity: 0; transition: transform .75s cubic-bezier(.2,.7,.2,1), opacity .75s ease; }
    [data-reveal].is-revealed { transform: none; opacity: 1; }
    .no-js [data-reveal] { transform: none; opacity: 1; }

    .home-hero { position: relative; padding-block: clamp(2rem, 5vw, 5rem) clamp(3.5rem, 7vw, 7rem); overflow: hidden; }
    .home-hero::before { position: absolute; top: 0; right: 0; width: 42%; height: 100%; content: ""; background: var(--sand-light); opacity: .7; }
    .home-hero__lines { position: absolute; inset: 0; pointer-events: none; background: repeating-linear-gradient(90deg, transparent 0, transparent calc(20% - 1px), rgba(23,59,50,.055) 20%); }
    .home-hero__grid { position: relative; display: grid; gap: clamp(2.5rem, 5vw, 5rem); align-items: center; }
    .home-hero__copy { position: relative; z-index: 2; padding-block: 1rem; }
    .home-hero h1 { max-width: 10.2ch; margin-top: 1.15rem; }
    .home-hero__lead { max-width: 36rem; margin-top: 1.35rem; color: #40524b; font-size: clamp(1.05rem, 1.5vw, 1.2rem); }
    .home-hero__actions { display: flex; flex-wrap: wrap; gap: .75rem; margin-top: 2rem; }
    .home-hero__facts { display: grid; grid-template-columns: repeat(3, minmax(0,1fr)); gap: .8rem; padding-top: 1.7rem; margin-top: 2.25rem; border-top: .06rem solid var(--line); }
    .home-hero__facts div { display: grid; gap: .1rem; }
    .home-hero__facts dt { color: var(--muted); font-size: .68rem; font-weight: 750; letter-spacing: .09em; text-transform: uppercase; }
    .home-hero__facts dd { color: var(--forest); font-family: var(--serif); font-size: clamp(1rem, 1.6vw, 1.25rem); }
    .home-hero__visual { position: relative; min-height: clamp(24rem, 62vw, 43rem); }
    .home-hero__main-image { position: absolute; inset: 0 0 5rem 8%; overflow: hidden; background: var(--sand); }
    .home-hero__main-image::after { position: absolute; inset: 0; content: ""; background: linear-gradient(0deg, rgba(10,28,23,.38), transparent 38%); }
    .home-hero__main-image picture, .home-hero__main-image img { width: 100%; height: 100%; }
    .home-hero__main-image img { object-fit: cover; }
    .home-hero__main-image figcaption { position: absolute; z-index: 1; right: 1.2rem; bottom: 1rem; color: var(--paper); font-size: .7rem; font-weight: 760; letter-spacing: .08em; text-transform: uppercase; }
    .home-hero__detail-image { position: absolute; bottom: 0; left: 0; width: min(47%, 18rem); aspect-ratio: 4/3; padding: .45rem; background: var(--ivory); }
    .home-hero__detail-image img { width: 100%; height: 100%; object-fit: cover; }
    .home-hero__seal { position: absolute; z-index: 2; top: 1.4rem; left: 0; display: grid; width: 5.7rem; height: 5.7rem; border: .06rem solid rgba(255,253,248,.55); border-radius: 50%; place-content: center; gap: .12rem; background: rgba(23,59,50,.78); color: var(--paper); font-size: .55rem; font-weight: 800; letter-spacing: .12em; text-align: center; text-transform: uppercase; backdrop-filter: blur(.4rem); }
    .home-hero__seal i { width: 1.8rem; height: 1px; margin-inline: auto; background: rgba(255,253,248,.5); }

    .comfort-strip { position: relative; z-index: 3; background: var(--forest); color: var(--paper); }
    .comfort-strip__grid { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); }
    .comfort-strip__grid > div { display: flex; min-height: 7rem; padding: 1.2rem 0; align-items: center; gap: .8rem; }
    .comfort-strip__grid > div:nth-child(even) { padding-left: 1rem; border-left: .06rem solid var(--line-light); }
    .comfort-strip .icon { width: 1.55rem; color: #bcd4cd; }
    .comfort-strip span { display: grid; line-height: 1.25; }
    .comfort-strip strong { font-family: var(--serif); font-size: 1.1rem; font-weight: 500; }
    .comfort-strip small { margin-top: .25rem; color: rgba(255,253,248,.62); font-size: .68rem; }

    .home-story__media { position: relative; min-height: clamp(28rem, 66vw, 43rem); }
    .home-story__photo { position: absolute; overflow: hidden; }
    .home-story__photo img { width: 100%; height: 100%; object-fit: cover; }
    .home-story__photo--wide { inset: 0 13% 6rem 0; }
    .home-story__photo--detail { right: 0; bottom: 0; width: 52%; aspect-ratio: 4/3; padding: .45rem; background: var(--ivory); }
    .home-story__copy h2 { max-width: 11ch; }
    .home-story__copy > p:not(.eyebrow,.home-story__signature) { color: #44544e; }
    .home-story__signature { padding-top: 1.35rem; border-top: .06rem solid var(--line); color: var(--muted); font-family: var(--serif); font-style: italic; line-height: 1.45; }
    .home-story__signature strong { color: var(--forest); font-style: normal; font-weight: 600; }

    .rhythm-grid { display: grid; border-top: .06rem solid var(--line); }
    .rhythm-grid article { position: relative; padding: 2rem 0; border-bottom: .06rem solid var(--line); }
    .rhythm-grid article > span { color: var(--copper-dark); font-size: .7rem; font-weight: 800; letter-spacing: .12em; }
    .rhythm-grid h3 { margin-top: 1rem; }
    .rhythm-grid p { margin-top: .8rem; color: var(--muted); font-size: .93rem; }

    .shell--in-wide { width: min(100%, var(--shell)); margin-inline: auto; }
    .section-heading__copy .text-link { margin-top: .75rem; }
    .home-gallery__grid { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); grid-auto-rows: clamp(10rem, 35vw, 22rem); gap: .5rem; }
    .home-gallery__item { overflow: hidden; background: var(--sand-light); }
    .home-gallery__item img { width: 100%; height: 100%; object-fit: cover; transition: transform .7s ease; }
    .home-gallery__item:hover img { transform: scale(1.025); }
    .home-gallery__item--tall { grid-row: span 2; }
    .home-gallery__item--wide { grid-column: span 2; }

    .home-icecream { position: relative; overflow: hidden; background: #f3e4cf; }
    .home-icecream::before { position: absolute; top: -12rem; right: -8rem; width: 30rem; height: 30rem; border: .06rem solid rgba(151,87,52,.2); border-radius: 50%; content: ""; box-shadow: 0 0 0 4rem rgba(255,253,248,.16), 0 0 0 8rem rgba(255,253,248,.1); }
    .home-icecream__grid { position: relative; display: grid; gap: clamp(2.5rem,6vw,6rem); align-items: center; }
    .home-icecream__copy { position: relative; z-index: 2; }
    .home-icecream__copy h2 { max-width: 9ch; margin-top: 1rem; }
    .home-icecream__copy > p:not(.eyebrow) { max-width: 35rem; margin-top: 1.2rem; color: #554a41; }
    .home-icecream__copy .home-icecream__note { padding-left: 1rem; border-left: .16rem solid var(--copper); font-size: .78rem; }
    .home-icecream__copy .button { margin-top: 1.7rem; }
    .home-icecream__photos { position: relative; min-height: clamp(26rem,72vw,40rem); }
    .home-icecream__photo { position: absolute; overflow: hidden; border: .45rem solid var(--ivory); box-shadow: 0 1.1rem 2.7rem rgba(72,45,31,.14); background: var(--paper); }
    .home-icecream__photo img { width: 100%; height: 100%; object-fit: cover; }
    .home-icecream__photo--1 { inset: 0 16% 17% 0; transform: rotate(-1.5deg); }
    .home-icecream__photo--2 { right: 0; bottom: 0; width: 48%; height: 48%; transform: rotate(2deg); }
    .home-icecream__photo--3 { top: 7%; right: 0; width: 36%; height: 34%; transform: rotate(3.5deg); }
    .home-icecream__label { position: absolute; z-index: 2; right: 35%; bottom: 8%; display: grid; width: 6.4rem; height: 6.4rem; border-radius: 50%; place-content: center; background: var(--forest); color: var(--paper); font-family: var(--serif); font-size: .95rem; line-height: 1.05; text-align: center; transform: rotate(-7deg); }

    .lake-section { position: relative; overflow: hidden; background: var(--lake-dark); color: var(--paper); }
    .lake-section__texture { position: absolute; inset: 0; background: linear-gradient(90deg, rgba(49,91,89,.96), rgba(49,91,89,.58)), url("../images/brand/lake-texture.webp") center / cover; opacity: .65; }
    .lake-section__grid { position: relative; display: grid; gap: 3rem; align-items: end; }
    .lake-section h2 { max-width: 11ch; margin-top: 1rem; color: var(--paper); }
    .lake-section__copy > p:not(.eyebrow) { margin-top: 1.2rem; color: rgba(255,253,248,.78); }
    .lake-section .button { margin-top: 1.75rem; }
    .lake-section__facts { border-top: .06rem solid var(--line-light); }
    .lake-section__facts div { display: grid; grid-template-columns: minmax(6rem,.45fr) 1fr; padding: 1.25rem 0; border-bottom: .06rem solid var(--line-light); align-items: baseline; gap: 1rem; }
    .lake-section__facts dt { color: var(--paper); font-family: var(--serif); font-size: 1.55rem; }
    .lake-section__facts dd { color: rgba(255,253,248,.68); font-size: .8rem; }

    .review-preview-grid { display: grid; gap: 1rem; }
    .review-card { padding: clamp(1.4rem, 3vw, 2.25rem); border: .06rem solid var(--line); background: var(--ivory); }
    .review-card__rating { display: flex; gap: .18rem; color: var(--copper-dark); }
    .review-card__rating .icon { width: 1rem; fill: currentColor; }
    .review-card blockquote { margin-top: 1.25rem; color: var(--forest); font-family: var(--serif); font-size: clamp(1.15rem,2vw,1.5rem); line-height: 1.45; }
    .review-card footer { display: flex; flex-wrap: wrap; margin-top: 1.4rem; justify-content: space-between; gap: .5rem; color: var(--muted); font-size: .78rem; }
    .review-card footer strong { color: var(--ink); }
}

@media (min-width: 48rem) {
    @layer pages {
        .comfort-strip__grid { grid-template-columns: repeat(4,minmax(0,1fr)); }
        .comfort-strip__grid > div { padding-inline: clamp(1rem, 2.2vw, 2rem); border-left: .06rem solid var(--line-light); }
        .comfort-strip__grid > div:first-child { padding-left: 0; border-left: 0; }
        .rhythm-grid { grid-template-columns: repeat(3,minmax(0,1fr)); }
        .rhythm-grid article { padding: 2.2rem clamp(1.5rem,3vw,3rem); border-right: .06rem solid var(--line); }
        .rhythm-grid article:first-child { padding-left: 0; }
        .rhythm-grid article:last-child { padding-right: 0; border-right: 0; }
        .home-gallery__grid { grid-template-columns: .85fr 1.15fr 1fr; grid-auto-rows: clamp(12rem, 20vw, 20rem); }
        .home-gallery__item--wide { grid-column: span 2; }
        .home-icecream__grid { grid-template-columns: minmax(19rem,.76fr) minmax(0,1.24fr); }
        .lake-section__grid { grid-template-columns: 1.1fr .75fr; }
        .review-preview-grid { grid-template-columns: repeat(2,minmax(0,1fr)); }
    }
}

@media (min-width: 64rem) {
    @layer pages {
        .home-hero__grid { grid-template-columns: minmax(24rem,.82fr) minmax(0,1.18fr); }
        .home-hero__copy { padding-left: clamp(0rem, 2vw, 2rem); }
        .home-story__grid { grid-template-columns: minmax(0,1.14fr) minmax(23rem,.86fr); }
    }
}

@media (max-width: 47.99rem) {
    @layer pages {
        .home-hero::before { width: 100%; height: 45%; top: auto; bottom: 0; }
        .home-hero__facts { gap: .5rem; }
        .home-hero__facts dd { font-size: .92rem; }
        .home-story__grid { display: grid; }
        .home-story__media { order: 2; }
        .home-story__copy { order: 1; }
    }
}

/* Ice cream */
@layer pages {
    .icecream-hero { position: relative; padding-block: clamp(2.5rem,7vw,6.5rem); overflow: hidden; background: linear-gradient(115deg, #fffaf1 0 58%, #edd8bd 58% 100%); }
    .icecream-hero::after { position: absolute; top: -15rem; right: -12rem; width: 38rem; height: 38rem; border: .08rem solid rgba(151,87,52,.18); border-radius: 50%; content: ""; box-shadow: 0 0 0 5rem rgba(255,253,248,.18), 0 0 0 10rem rgba(255,253,248,.11); }
    .icecream-hero__grid { position: relative; z-index: 1; display: grid; gap: clamp(2.5rem,7vw,7rem); align-items: center; }
    .icecream-hero__copy h1 { max-width: 9ch; margin-top: 1rem; }
    .icecream-hero__lead { max-width: 35rem; margin-top: 1.35rem; color: #514a43; font-size: clamp(1.05rem,1.5vw,1.23rem); }
    .icecream-hero__actions { display: flex; flex-wrap: wrap; margin-top: 2rem; align-items: center; gap: 1.1rem; }
    .icecream-hero__mosaic { position: relative; min-height: clamp(28rem,75vw,43rem); }
    .icecream-hero__photo { position: absolute; overflow: hidden; border: .45rem solid var(--paper); box-shadow: 0 1rem 3rem rgba(72,45,31,.18); }
    .icecream-hero__photo img { width: 100%; height: 100%; object-fit: cover; }
    .icecream-hero__photo--1 { inset: 0 17% 17% 0; transform: rotate(-1.5deg); }
    .icecream-hero__photo--2 { right: 0; bottom: 0; width: 48%; height: 48%; transform: rotate(2.5deg); }
    .icecream-hero__photo--3 { top: 6%; right: 0; width: 37%; height: 35%; transform: rotate(3deg); }
    .icecream-hero__stamp { position: absolute; z-index: 3; right: 36%; bottom: 8%; display: grid; width: 6.5rem; height: 6.5rem; border-radius: 50%; place-content: center; background: var(--copper-dark); color: var(--paper); font-family: var(--serif); font-size: 1rem; line-height: 1.05; text-align: center; transform: rotate(-8deg); }

    .icecream-story__grid { display: grid; gap: clamp(2rem,6vw,6rem); align-items: start; }
    .icecream-story h2 { max-width: 10ch; margin-top: 1rem; }
    .icecream-story .stack > p:not(.notice) { color: #46554f; font-size: clamp(.95rem,1.4vw,1.08rem); }

    .icecream-gallery__grid { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: .65rem; }
    .icecream-gallery__item { position: relative; min-height: clamp(14rem,42vw,25rem); overflow: hidden; background: var(--sand-light); }
    .icecream-gallery__item img { width: 100%; height: 100%; object-fit: cover; transition: transform .7s ease; }
    .icecream-gallery__item:hover img { transform: scale(1.025); }
    .icecream-gallery__item figcaption { position: absolute; right: .7rem; bottom: .7rem; left: .7rem; padding: .65rem .75rem; background: rgba(16,45,38,.82); color: var(--paper); font-size: .72rem; backdrop-filter: blur(.35rem); }
    .icecream-gallery__item--1 { grid-row: span 2; }
}

@media (min-width: 48rem) {
    @layer pages {
        .icecream-hero__grid { grid-template-columns: minmax(20rem,.8fr) minmax(0,1.2fr); }
        .icecream-story__grid { grid-template-columns: minmax(18rem,.75fr) minmax(0,1fr); }
        .icecream-gallery__grid { grid-template-columns: .9fr 1.1fr 1fr; grid-auto-rows: clamp(11rem,18vw,17rem); }
        .icecream-gallery__item { min-height: 0; }
        .icecream-gallery__item--4 { grid-column: span 2; }
    }
}

@media (max-width: 47.99rem) {
    @layer pages {
        .home-icecream__copy { order: 1; }
        .home-icecream__photos { order: 2; }
        .icecream-gallery__item--4 { grid-column: span 2; }
    }
}

/* Accommodation, gallery and booking */
@layer pages {
    .accommodation-intro__lead { color: var(--forest); font-family: var(--serif); font-size: clamp(1.18rem,2vw,1.55rem); line-height: 1.48; }
    .key-facts { border-top: .06rem solid var(--line); }
    .key-facts div { display: grid; grid-template-columns: minmax(5rem,.35fr) 1fr; padding: 1.3rem 0; border-bottom: .06rem solid var(--line); align-items: baseline; gap: 1rem; }
    .key-facts dt { color: var(--copper-dark); font-family: var(--serif); font-size: clamp(2rem,4vw,3.4rem); line-height: 1; }
    .key-facts dd { color: var(--muted); }

    .floor-list { border-top: .06rem solid var(--line); }
    .floor-list article { display: grid; padding: clamp(1.5rem,3vw,2.4rem) 0; border-bottom: .06rem solid var(--line); gap: 1.2rem; align-items: center; }
    .floor-list__number { color: var(--copper-dark); font-size: .72rem; font-weight: 800; letter-spacing: .13em; }
    .floor-list h3 { margin-top: .45rem; }
    .floor-list article > p { color: var(--muted); font-size: .92rem; }
    .floor-list figure { aspect-ratio: 16/10; overflow: hidden; }
    .floor-list img { width: 100%; height: 100%; object-fit: cover; transition: transform .7s ease; }
    .floor-list article:hover img { transform: scale(1.025); }

    .amenities__heading { align-self: start; }
    .amenities__heading h2 { max-width: 11ch; margin-top: 1rem; }
    .amenities__heading > p:not(.eyebrow) { margin-top: 1.25rem; color: var(--muted); }
    .amenities__list { display: grid; list-style: none; border-top: .06rem solid var(--line); }
    .amenities__list li { display: flex; min-height: 5rem; padding: 1rem 0; border-bottom: .06rem solid var(--line); align-items: center; gap: .9rem; }
    .amenities__list > li > .icon { width: 1.3rem; height: 1.3rem; padding: .18rem; border: .06rem solid rgba(62,111,109,.35); border-radius: 50%; color: var(--lake); }
    .amenities__list li span { display: grid; }
    .amenities__list strong { color: var(--forest); font-family: var(--serif); font-size: 1.15rem; font-weight: 600; }
    .amenities__list small { margin-top: .2rem; color: var(--muted); font-size: .74rem; }

    .stay-times__grid { display: grid; gap: 1rem; }
    .stay-times__grid article { position: relative; padding: clamp(1.4rem,3vw,2.2rem); border: .06rem solid rgba(23,59,50,.16); background: rgba(255,253,248,.56); }
    .stay-times__grid article > span { position: absolute; top: 1.4rem; right: 1.4rem; color: var(--lake); }
    .stay-times__grid h3 { margin-top: .8rem; }
    .stay-times__grid dl { display: grid; grid-template-columns: repeat(2,1fr); margin-top: 1.5rem; border-top: .06rem solid var(--line); }
    .stay-times__grid dl div { padding-top: 1rem; }
    .stay-times__grid dt { color: var(--muted); font-size: .7rem; font-weight: 750; letter-spacing: .09em; text-transform: uppercase; }
    .stay-times__grid dd { color: var(--forest); font-weight: 750; }
    .stay-times__notice { margin-top: 1rem; }

    .property-gallery { background: var(--paper); }
    .property-gallery__grid { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); grid-auto-flow: dense; grid-auto-rows: clamp(9rem,33vw,18rem); gap: .45rem; }
    .property-gallery__item { position: relative; overflow: hidden; background: var(--sand-light); }
    .property-gallery__item--wide { grid-column: span 2; }
    .property-gallery__item--tall { grid-row: span 2; }
    .property-gallery__item img { width: 100%; height: 100%; object-fit: cover; transition: transform .55s ease, filter .55s ease; }
    .property-gallery__item > span { position: absolute; right: .65rem; bottom: .65rem; display: grid; width: 2.4rem; height: 2.4rem; border-radius: 50%; place-items: center; opacity: 0; background: rgba(255,253,248,.9); color: var(--forest); transform: translateY(.3rem); transition: opacity .2s ease, transform .2s ease; }
    .property-gallery__item:hover img, .property-gallery__item:focus-visible img { transform: scale(1.035); filter: brightness(.88); }
    .property-gallery__item:hover > span, .property-gallery__item:focus-visible > span { opacity: 1; transform: none; }

    .video-strip__grid { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 1rem; }
    .video-strip__item { margin: 0; }
    .video-strip__item video { display: block; width: 100%; height: auto; max-height: 32rem; border-radius: var(--radius-sm); background: #0d1b17; aspect-ratio: 9 / 16; object-fit: cover; }
    .video-strip__item--wide video { aspect-ratio: 16 / 9; }
    .video-strip__item figcaption { margin-top: .55rem; color: var(--muted); font-size: .8rem; }

    .lightbox { width: 100%; max-width: none; height: 100%; max-height: none; padding: 0; border: 0; overflow: hidden; background: rgba(7,18,15,.97); color: var(--paper); }
    .lightbox::backdrop { background: rgba(7,18,15,.97); }
    .lightbox[open] { display: grid; grid-template-rows: auto minmax(0,1fr); }
    .lightbox__bar { display: flex; min-height: 4.5rem; padding-inline: clamp(1rem,4vw,2.5rem); align-items: center; justify-content: space-between; color: rgba(255,253,248,.7); font-size: .8rem; }
    .lightbox button { display: grid; width: 3rem; height: 3rem; padding: .65rem; border: .06rem solid rgba(255,253,248,.28); border-radius: 50%; place-items: center; background: rgba(7,18,15,.38); color: var(--paper); cursor: pointer; }
    .lightbox figure { display: grid; min-height: 0; padding: 0 clamp(3.5rem,8vw,7rem) 1.5rem; grid-template-rows: minmax(0,1fr) auto; justify-items: center; }
    .lightbox figure img { width: 100%; height: 100%; object-fit: contain; }
    .lightbox figcaption { padding-top: .75rem; color: rgba(255,253,248,.75); font-size: .82rem; text-align: center; }
    .lightbox__nav { position: absolute; top: 50%; transform: translateY(-50%); }
    .lightbox__nav--prev { left: clamp(.5rem,2vw,1.5rem); }
    .lightbox__nav--next { right: clamp(.5rem,2vw,1.5rem); }

    .booking-head { padding-block: clamp(3.5rem,7vw,6.5rem) clamp(2.5rem,5vw,4.5rem); border-bottom: .06rem solid var(--line); background: linear-gradient(120deg, var(--ivory), #ebe4d6); }
    .booking-head__grid { display: grid; gap: 1.5rem 4rem; align-items: end; }
    .booking-head h1 { max-width: 13ch; margin-top: 1rem; font-size: clamp(2.8rem,6vw,5.8rem); }
    .booking-head__grid > p { color: var(--muted); font-size: 1.02rem; }
    .booking-section { background: var(--ivory); }
    .booking-test-notice { max-width: none; margin-bottom: 1.5rem; }
    .availability-calendar { padding: clamp(1rem,3vw,2.6rem); margin-bottom: clamp(2.5rem,5vw,4rem); border: .06rem solid var(--line); background: var(--paper); }
    .availability-calendar__heading { display: grid; align-items: end; gap: 1rem 2.5rem; padding-bottom: 1.6rem; border-bottom: .06rem solid var(--line); }
    .availability-calendar__heading h2 { margin-top: .6rem; font-size: clamp(2rem,4vw,3.25rem); }
    .availability-calendar__heading > p { max-width: 44ch; color: var(--muted); font-size: .85rem; }
    .availability-calendar__toolbar { display: flex; flex-wrap: wrap; padding-block: 1.2rem; align-items: center; justify-content: space-between; gap: .85rem; }
    .availability-calendar__toolbar > p { font-size: .82rem; font-weight: 700; text-transform: capitalize; }
    .availability-calendar__navigation { display: flex; align-items: center; gap: .35rem; }
    .availability-calendar__navigation button { display: grid; min-width: 2.75rem; min-height: 2.75rem; padding: .5rem; border: .06rem solid var(--line); border-radius: .25rem; place-items: center; background: transparent; cursor: pointer; }
    .availability-calendar__navigation [data-calendar-today] { padding-inline: .85rem; font-size: .72rem; font-weight: 650; }
    .availability-calendar__navigation button:hover:not(:disabled) { border-color: var(--forest); background: var(--ivory); }
    .availability-calendar__navigation button:disabled { opacity: .3; cursor: default; }
    .availability-calendar__months { display: grid; gap: 1.2rem 2.75rem; min-width: 0; }
    .availability-calendar__month { width: 100%; table-layout: fixed; border-collapse: separate; border-spacing: .25rem; align-self: start; }
    .availability-calendar__month caption { padding-block: .45rem 1.1rem; color: var(--forest); font-family: var(--serif); font-size: 1.45rem; text-align: left; text-transform: capitalize; }
    .availability-calendar__month th { padding-bottom: .6rem; color: var(--muted); font-size: .7rem; font-weight: 600; }
    .availability-calendar__month td { padding: 0; text-align: center; }
    .calendar-day { position: relative; display: flex; width: 100%; height: 3.1rem; padding: .35rem .1rem; border: .06rem solid rgba(47,104,79,.18); border-radius: .22rem; align-items: center; justify-content: center; flex-direction: column; color: var(--forest); font-size: .85rem; font-weight: 650; line-height: 1.1; cursor: pointer; }
    .calendar-day, .calendar-key { --calendar-free: #eaf0e8; --calendar-am-color: var(--calendar-free); --calendar-pm-color: var(--calendar-free); --calendar-am-pattern: none; --calendar-pm-pattern: none; --calendar-hatching: repeating-linear-gradient(135deg,transparent,transparent .24rem,rgba(145,68,45,.16) .24rem,rgba(145,68,45,.16) .31rem); background-image: var(--calendar-am-pattern),var(--calendar-pm-pattern),linear-gradient(90deg,var(--calendar-am-color) 50%,var(--calendar-pm-color) 50%); background-size: 50% 100%,50% 100%,100% 100%; background-position: left center,right center,center; background-repeat: no-repeat; }
    .calendar-day:hover[aria-disabled="false"] { --calendar-free: #d9e5d8; border-color: var(--forest); }
    .calendar-day:focus-visible { z-index: 1; outline-offset: .05rem; }
    .calendar-day[aria-disabled="true"] { cursor: default; }
    .calendar-day[aria-current="date"] > span { text-decoration: underline; text-underline-offset: .24em; text-decoration-thickness: .12em; }
    .calendar-day.is-past, .calendar-day[data-availability="outside"] { --calendar-free: #f1efe9; border-color: transparent; color: #777971; }
    .calendar-day.is-past > span { text-decoration: line-through; }
    .calendar-day[data-busy-morning="true"], .calendar-key--morning, .calendar-key--busy { --calendar-am-color: #f0ddd3; --calendar-am-pattern: var(--calendar-hatching); }
    .calendar-day[data-busy-afternoon="true"], .calendar-key--afternoon, .calendar-key--busy { --calendar-pm-color: #f0ddd3; --calendar-pm-pattern: var(--calendar-hatching); }
    .calendar-day[data-busy-morning="true"], .calendar-day[data-busy-afternoon="true"] { border-color: rgba(145,68,45,.25); color: #813f2c; }
    .calendar-day[data-selected-morning="true"]:not([data-busy-morning="true"]) { --calendar-am-color: var(--forest); }
    .calendar-day[data-selected-afternoon="true"]:not([data-busy-afternoon="true"]) { --calendar-pm-color: var(--forest); }
    .calendar-day.is-selected:not(.is-busy) { border-color: var(--forest); color: var(--paper); }
    .calendar-day.is-selected.is-busy { box-shadow: inset 0 0 0 .1rem var(--copper-dark); }
    .calendar-day.is-arrival, .calendar-day.is-departure { box-shadow: inset 0 0 0 .1rem var(--forest); }
    .calendar-day[data-occupancy="morning"] > span, .calendar-day[data-occupancy="afternoon"] > span, .calendar-day.is-arrival > span, .calendar-day.is-departure > span { padding: .12rem .24rem; border-radius: .15rem; background: rgba(255,253,247,.92); color: var(--forest); }
    .calendar-day small { display: block; margin-top: .18rem; padding: .05rem .12rem; border-radius: .1rem; background: var(--paper); color: var(--forest); font-size: .53rem; font-weight: 500; }
    .calendar-day[data-availability="unknown"] { border-color: var(--line); border-style: dashed; background: #f1efe9; color: var(--muted); }
    .availability-calendar__footer { display: grid; margin-top: 1.6rem; padding-top: 1.25rem; border-top: .06rem solid var(--line); gap: .8rem; }
    .availability-calendar__legend { display: flex; flex-wrap: wrap; gap: .65rem 1.5rem; list-style: none; }
    .availability-calendar__legend li { display: flex; align-items: center; gap: .5rem; font-size: .72rem; }
    .calendar-key { display: inline-block; flex: 0 0 1.3rem; width: 1.3rem; height: 1rem; border: .06rem solid var(--line); border-radius: .1rem; }
    .calendar-key--past { --calendar-free: #f1efe9; position: relative; }
    .calendar-key--past::after { position: absolute; top: 50%; left: .12rem; right: .12rem; border-top: .06rem solid #777971; content: ""; }
    .calendar-key--selected { --calendar-free: var(--forest); }
    .availability-calendar__footer > p { max-width: 100ch; color: var(--muted); font-size: .72rem; }
    .availability-calendar__footer [data-calendar-status] { min-height: 1.2rem; color: var(--forest); font-size: .78rem; }
    .availability-calendar[data-state="error"] [data-calendar-status] { color: var(--error); }
    .availability-calendar__footer [data-calendar-retry] { justify-self: start; padding: 0; border: 0; background: none; font-size: .8rem; cursor: pointer; }
    @media (min-width: 700px) {
        .availability-calendar__months { grid-template-columns: repeat(2,minmax(0,1fr)); }
    }
    @media (min-width: 1000px) {
        .availability-calendar__heading { grid-template-columns: 1.1fr 1fr; }
    }
    @media (max-width: 450px) {
        .availability-calendar__toolbar { align-items: start; flex-direction: column; }
        .availability-calendar__month { border-spacing: .12rem; }
        .calendar-day { height: 2.9rem; font-size: .77rem; }
        .calendar-day small { font-size: .44rem; }
    }
    .booking-progress { display: grid; grid-template-columns: repeat(3,1fr); max-width: 50rem; margin: 0 auto clamp(2rem,4vw,3.5rem); list-style: none; }
    .booking-progress li { position: relative; display: grid; justify-items: center; gap: .55rem; color: var(--muted); font-size: .72rem; text-align: center; }
    .booking-progress li::before { position: absolute; z-index: 0; top: 1rem; right: 50%; width: 100%; height: .06rem; content: ""; background: var(--line); }
    .booking-progress li:first-child::before { display: none; }
    .booking-progress li > span { position: relative; z-index: 1; display: grid; width: 2.1rem; height: 2.1rem; border: .08rem solid var(--line); border-radius: 50%; place-items: center; background: var(--ivory); font-weight: 800; }
    .booking-progress li strong { font-weight: 700; }
    .booking-progress li.is-current, .booking-progress li.is-complete { color: var(--forest); }
    .booking-progress li.is-current > span { border-color: var(--copper); background: var(--copper); color: var(--paper); }
    .booking-progress li.is-complete > span { border-color: var(--forest); background: var(--forest); color: var(--paper); }
    .booking-progress li.is-complete::before, .booking-progress li.is-current::before { background: var(--forest); }

    .booking-layout { display: grid; gap: clamp(1.2rem,3vw,2.2rem); align-items: start; }
    .booking-form-card { min-width: 0; border: .06rem solid var(--line); background: var(--paper); }
    .booking-step { padding: clamp(1.25rem,4vw,3.25rem); scroll-margin-top: 7rem; }
    .booking-step__heading { display: flex; margin-bottom: 2.25rem; align-items: flex-start; gap: 1rem; }
    .booking-step__heading > span { display: grid; width: 2.4rem; height: 2.4rem; border: .06rem solid var(--line); border-radius: 50%; place-items: center; color: var(--copper-dark); font-size: .7rem; font-weight: 800; }
    .booking-step__heading h2 { margin-top: .45rem; font-size: clamp(2rem,4vw,3.2rem); }
    .booking-step__actions { display: flex; flex-wrap: wrap; margin-top: 2rem; justify-content: space-between; gap: .75rem; }
    .booking-step__actions--end { justify-content: flex-end; }
    .form-error-summary { padding: 1rem; margin: 1rem 1rem 0; border-left: .22rem solid var(--error); background: rgba(164,55,47,.08); color: #7b2d27; font-weight: 700; }

    fieldset { min-width: 0; padding: 0; margin: 0; border: 0; }
    fieldset > legend, .field__label, .field > label { display: block; margin-bottom: .55rem; color: var(--forest); font-size: .82rem; font-weight: 780; }
    .choice-fieldset, .guest-fieldset, .extras-fieldset { margin-bottom: 2rem; }
    .choice-fieldset__note { display: flex; gap: .55rem; margin: .85rem 0 0; padding: .7rem .85rem; border-radius: var(--radius-sm); background: rgba(23,59,50,.045); color: var(--muted); font-size: .74rem; line-height: 1.45; }
    .choice-fieldset__note .icon { flex: none; width: 1rem; margin-top: .1rem; color: var(--lake); }
    .stay-choice-grid { display: grid; gap: .75rem; }
    .choice-card { position: relative; display: flex; min-height: 8rem; padding: 1.1rem; border: .08rem solid var(--line); border-radius: var(--radius-sm); align-items: center; gap: .9rem; cursor: pointer; transition: border-color .2s ease, background .2s ease; }
    .choice-card:hover { border-color: var(--lake); }
    .choice-card:has(input:checked) { border-color: var(--forest); background: rgba(23,59,50,.045); }
    .choice-card input { position: absolute; width: 1px; height: 1px; opacity: 0; }
    .choice-card:has(input:focus-visible) { outline: .18rem solid var(--copper); outline-offset: .22rem; }
    .choice-card__check { display: grid; width: 1.65rem; height: 1.65rem; border: .08rem solid var(--line); border-radius: 50%; place-items: center; color: transparent; }
    .choice-card:has(input:checked) .choice-card__check { border-color: var(--forest); background: var(--forest); color: var(--paper); }
    .choice-card__check .icon { width: 1rem; }
    .choice-card > span:last-child { display: grid; }
    .choice-card small { color: var(--copper-dark); font-size: .65rem; font-weight: 800; letter-spacing: .09em; text-transform: uppercase; }
    .choice-card strong { margin-top: .25rem; color: var(--forest); font-family: var(--serif); font-size: 1.25rem; font-weight: 600; }
    .choice-card em { margin-top: .15rem; color: var(--muted); font-size: .74rem; font-style: normal; }

    .form-grid { display: grid; gap: 1.15rem; margin-bottom: 2rem; }
    .field { min-width: 0; }
    .field input:not([type="checkbox"],[type="radio"]), .field textarea, .field select {
        width: 100%; min-height: 3.2rem; padding: .76rem .85rem; border: .08rem solid rgba(23,59,50,.3); border-radius: var(--radius-sm); background: #fffefa; color: var(--ink); transition: border-color .2s ease, box-shadow .2s ease;
    }
    .field textarea { min-height: 7.5rem; resize: vertical; }
    .field input:hover, .field textarea:hover, .field select:hover { border-color: var(--lake); }
    .field input:focus, .field textarea:focus, .field select:focus { border-color: var(--forest); outline: 0; box-shadow: 0 0 0 .18rem rgba(62,111,109,.18); }
    .field input[aria-invalid="true"], .field textarea[aria-invalid="true"] { border-color: var(--error); }
    .field > small { display: block; margin-top: .4rem; color: var(--muted); font-size: .7rem; }
    .optional { color: var(--muted); font-weight: 500; }
    .field-error { display: block; margin-top: .35rem; color: var(--error); font-size: .75rem; font-weight: 700; }
    .field__control--icon { position: relative; }
    .field__control--icon > .icon { position: absolute; z-index: 1; top: 50%; left: .85rem; width: 1.15rem; transform: translateY(-50%); color: var(--lake); pointer-events: none; }
    .field__control--icon input { padding-left: 2.7rem !important; }
    .date-output { display: flex; min-height: 3.2rem; padding: .76rem .85rem; border: .08rem dashed rgba(23,59,50,.28); border-radius: var(--radius-sm); align-items: center; gap: .7rem; background: rgba(23,59,50,.035); }
    .date-output .icon { color: var(--lake); }
    .field--output > small { display: block; margin-top: .4rem; color: var(--muted); font-size: .7rem; }

    .guest-steppers { display: grid; border-top: .06rem solid var(--line); }
    .guest-stepper { display: flex; min-height: 5.5rem; padding-block: .9rem; border-bottom: .06rem solid var(--line); align-items: center; justify-content: space-between; gap: 1rem; }
    .guest-stepper > div:first-child { display: grid; }
    .guest-stepper label { color: var(--forest); font-weight: 750; }
    .guest-stepper small { color: var(--muted); font-size: .68rem; }
    .stepper-control { display: grid; grid-template-columns: 2.7rem 2.6rem 2.7rem; align-items: center; }
    .stepper-control button { display: grid; width: 2.7rem; height: 2.7rem; padding: .7rem; border: .06rem solid var(--line); place-items: center; background: transparent; cursor: pointer; }
    .stepper-control button:hover { background: var(--forest); color: var(--paper); }
    .stepper-control input { width: 2.6rem; height: 2.7rem; padding: 0; border: solid var(--line); border-width: .06rem 0; border-radius: 0; background: transparent; font-weight: 800; text-align: center; appearance: textfield; }
    .stepper-control input::-webkit-inner-spin-button { appearance: none; }

    .extras-list { display: grid; gap: .65rem; }
    .extras-list label { position: relative; display: flex; min-height: 4.5rem; padding: .8rem 1rem; border: .06rem solid var(--line); align-items: center; gap: .8rem; cursor: pointer; }
    .extras-list label:has(input:checked) { border-color: var(--forest); background: rgba(23,59,50,.04); }
    .extras-list input, .check-field input { position: absolute; width: 1px; height: 1px; opacity: 0; }
    .extras-list label > span:nth-child(2), .check-field > span:nth-child(2) { display: grid; width: 1.4rem; height: 1.4rem; border: .08rem solid var(--line); border-radius: .15rem; place-items: center; color: transparent; flex: 0 0 auto; }
    .extras-list label:has(input:checked) > span:nth-child(2), .check-field:has(input:checked) > span:nth-child(2) { border-color: var(--forest); background: var(--forest); color: var(--paper); }
    .extras-list label:has(input:focus-visible), .check-field:has(input:focus-visible) { outline: .18rem solid var(--copper); outline-offset: .2rem; }
    .extras-list .icon, .check-field .icon { width: .9rem; }
    .extras-list label > span:last-child { display: grid; }
    .extras-list strong { color: var(--forest); font-size: .86rem; }
    .extras-list small { color: var(--muted); font-size: .7rem; }

    .payment-explainer { display: flex; padding: clamp(1.1rem,3vw,1.7rem); margin-bottom: 1.5rem; border: .06rem solid rgba(62,111,109,.3); gap: 1rem; background: rgba(62,111,109,.06); }
    .payment-explainer > span { display: grid; width: 2.8rem; height: 2.8rem; border-radius: 50%; place-items: center; background: var(--lake); color: var(--paper); flex: 0 0 auto; }
    .payment-explainer h3 { font-family: var(--sans); font-size: 1rem; font-weight: 800; letter-spacing: 0; }
    .payment-explainer p { margin-top: .4rem; color: var(--muted); font-size: .8rem; }
    .consent-list { display: grid; gap: .75rem; margin-bottom: 1.5rem; }
    .check-field { position: relative; display: flex; align-items: flex-start; gap: .75rem; cursor: pointer; font-size: .84rem; }
    .check-field > span:nth-child(2) { margin-top: .1rem; }

    .booking-summary { overflow: hidden; border: .06rem solid var(--line); box-shadow: var(--shadow); background: var(--paper); transition: opacity .2s ease; }
    .booking-summary.is-loading { opacity: .68; }
    .booking-summary.has-error { border-color: rgba(164,55,47,.45); }
    .booking-summary__image { aspect-ratio: 16/7; overflow: hidden; }
    .booking-summary__image img { width: 100%; height: 100%; object-fit: cover; }
    .booking-summary__body { padding: 1.35rem; }
    .booking-summary h2 { margin-top: .55rem; font-size: 1.65rem; }
    .booking-summary__status { min-height: 2.6rem; margin-top: .85rem; color: var(--muted); font-size: .78rem; }
    .booking-summary__lines { display: grid; margin-top: 1rem; list-style: none; border-top: .06rem solid var(--line); }
    .booking-summary__lines li { display: flex; padding: .65rem 0; border-bottom: .06rem solid var(--line); justify-content: space-between; gap: 1rem; font-size: .78rem; }
    .booking-summary__lines strong { white-space: nowrap; }
    .booking-summary__total { display: flex; margin-top: 1.1rem; align-items: end; justify-content: space-between; gap: 1rem; }
    .booking-summary__total span { color: var(--muted); font-size: .72rem; }
    .booking-summary__total strong { color: var(--forest); font-family: var(--serif); font-size: 1.65rem; white-space: nowrap; }
    .booking-summary__onsite { padding-top: .9rem; margin-top: .9rem; border-top: .06rem solid var(--line); color: var(--muted); font-size: .7rem; }
    .booking-summary footer { display: flex; padding: 1rem 1.35rem; border-top: .06rem solid var(--line); gap: .65rem; background: rgba(23,59,50,.045); color: var(--muted); font-size: .68rem; }
    .booking-summary footer .icon { color: var(--lake); }

    .booking-help h2 { margin-top: 1rem; }
    .booking-help .split > div:first-child > p:not(.eyebrow) { margin-top: 1rem; color: var(--muted); }
    .booking-help .text-link { margin-top: 1.1rem; }
    .faq-list { border-top: .06rem solid var(--line); }
    .faq-list details { border-bottom: .06rem solid var(--line); }
    .faq-list summary { display: flex; min-height: 4.5rem; padding: 1rem 0; align-items: center; justify-content: space-between; gap: 1rem; cursor: pointer; color: var(--forest); font-family: var(--serif); font-size: 1.15rem; list-style: none; }
    .faq-list summary::-webkit-details-marker { display: none; }
    .faq-list summary .icon { transition: transform .2s ease; }
    .faq-list details[open] summary .icon { transform: rotate(180deg); }
    .faq-list details p { padding: 0 2.5rem 1.2rem 0; color: var(--muted); font-size: .86rem; }
}

@media (min-width: 40rem) {
    @layer pages {
        .stay-choice-grid, .stay-times__grid, .form-grid--2, .extras-list { grid-template-columns: repeat(2,minmax(0,1fr)); }
        .stay-choice-grid--3, .stay-times__grid--3 { grid-template-columns: repeat(3,minmax(0,1fr)); }
        .form-grid__full { grid-column: 1 / -1; }
        .extras-list label:last-child { grid-column: 1 / -1; }
    }
}

@media (min-width: 48rem) {
    @layer pages {
        .floor-list article { grid-template-columns: 3rem minmax(9rem,.7fr) minmax(12rem,1fr) minmax(14rem,.85fr); }
        .floor-list figure { aspect-ratio: 4/3; }
        .amenities__list { grid-template-columns: repeat(2,minmax(0,1fr)); }
        .amenities__list li:nth-child(odd) { padding-right: 1.5rem; }
        .amenities__list li:nth-child(even) { padding-left: 1.5rem; border-left: .06rem solid var(--line); }
        .stay-times__grid { grid-template-columns: repeat(2,minmax(0,1fr)); }
        .stay-times__grid--3 { grid-template-columns: repeat(3,minmax(0,1fr)); }
        .video-strip__grid { grid-template-columns: repeat(12,minmax(0,1fr)); align-items: start; }
        .video-strip__item { grid-column: span 4; }
        .video-strip__item--wide { grid-column: span 6; }
        .property-gallery__grid { grid-template-columns: repeat(3,minmax(0,1fr)); grid-auto-rows: clamp(10rem,21vw,20rem); }
        .booking-head__grid { grid-template-columns: minmax(0,1.2fr) minmax(18rem,.65fr); }
        .booking-progress li { font-size: .8rem; }
    }
}

@media (min-width: 65rem) {
    @layer pages {
        .property-gallery__grid { grid-template-columns: repeat(4,minmax(0,1fr)); grid-auto-rows: clamp(10rem,15vw,17rem); }
        .booking-layout { grid-template-columns: minmax(0,1fr) minmax(19rem,24rem); }
        .booking-summary { position: sticky; top: 6.25rem; }
    }
}

@media (max-width: 39.99rem) {
    @layer pages {
        .booking-progress li strong { max-width: 7rem; font-size: .63rem; line-height: 1.25; }
        .booking-step__actions .button { width: 100%; }
        .guest-stepper { align-items: flex-start; }
        .guest-stepper small { max-width: 9rem; line-height: 1.25; }
        .payment-explainer { display: grid; }
        .property-gallery__item > span { opacity: 1; }
    }
}
/* Consent is shown only when a valid analytics property is enabled in admin. */
.staging-banner{padding:.75rem 1rem;background:#fff0c9;color:#523e16;text-align:center;font:600 .85rem/1.5 var(--font-body,sans-serif)}
.cookie-settings-link{padding:0;border:0;background:none;color:inherit;font:inherit;text-align:left;cursor:pointer;text-decoration:underline;text-underline-offset:.2em}
.price-season-grid .price-card{display:flex;flex-direction:column}.price-season-grid .price-card>.button{margin-top:auto}.price-boundary-note{max-width:65rem;margin:1.2rem 0 0;font-size:.85rem;line-height:1.7;color:var(--color-text-muted,#63716b)}
.cookie-consent{position:fixed;z-index:1200;left:clamp(1rem,3vw,2rem);right:clamp(1rem,3vw,2rem);bottom:clamp(1rem,3vw,2rem);display:flex;align-items:center;justify-content:space-between;gap:1.5rem;max-width:70rem;margin:auto;padding:1.1rem 1.25rem;border:1px solid rgba(255,255,255,.16);border-radius:1rem;background:#173b32;color:#fff;box-shadow:0 1rem 3rem rgba(9,28,23,.28)}
.cookie-consent[hidden]{display:none}.cookie-consent strong{font-size:1rem}.cookie-consent p{max-width:52rem;margin:.25rem 0 0;color:rgba(255,255,255,.78);font-size:.9rem}.cookie-consent__actions{display:flex;gap:.6rem;flex:0 0 auto}.cookie-consent .button{min-height:2.8rem}
@media(max-width:42rem){.cookie-consent{align-items:stretch;flex-direction:column}.cookie-consent__actions{width:100%}.cookie-consent__actions .button{flex:1}}
@media print{.site-ribbon,.site-header,.site-footer,.cookie-consent,.toast-region,.payment-result__actions{display:none!important}.payment-result{padding:1rem 0}.payment-result__shell{box-shadow:none!important}}
