:root {
    --lsr-forest: #2f4a3a;
    --lsr-forest-dark: #20352a;
    --lsr-sage: #71816f;
    --lsr-cream: #f6f2e9;
    --lsr-cream-deep: #ebe3d4;
    --lsr-sand: #d7c6a6;
    --lsr-clay: #9a6648;
    --lsr-ink: #24302a;
    --lsr-muted: #67716b;
    --lsr-white: #ffffff;
    --lsr-border: rgba(47, 74, 58, 0.16);
    --lsr-shadow: 0 1rem 2.5rem rgba(31, 50, 40, 0.10);
    --lsr-radius: 1.25rem;
    --lsr-section-space: clamp(3.5rem, 7vw, 6.5rem);
}

/* ==========================================================================
   Base document
   ========================================================================== */

html {
    min-height: 100%;
    scroll-behavior: smooth;
    scroll-padding-top: 6.5rem;
}

body {
    min-height: 100vh;
    display: flex;
    flex-direction: column;
    color: var(--lsr-ink);
    background: var(--lsr-white);
    font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
    line-height: 1.7;
}

main {
    flex: 1 0 auto;
}

h1,
h2,
h3,
.display-font {
    color: var(--lsr-forest-dark);
    font-family: Georgia, "Times New Roman", serif;
    line-height: 1.12;
    letter-spacing: -0.025em;
}

h1,
h2,
h3,
p,
ul {
    text-wrap: pretty;
}

img {
    max-width: 100%;
}

.skip-link {
    position: fixed;
    left: 1rem;
    top: -5rem;
    z-index: 2000;
    padding: .75rem 1rem;
    background: var(--lsr-forest-dark);
    color: #fff;
    border-radius: .5rem;
}

.skip-link:focus {
    top: 1rem;
}

/* ==========================================================================
   Site header / navigation
   ========================================================================== */

.site-header {
    z-index: 1030;
    background: rgba(255, 255, 255, .96);
    border-bottom: 1px solid var(--lsr-border);
    box-shadow: 0 .35rem 1.2rem rgba(31, 50, 40, .05);
    backdrop-filter: blur(12px);
}

.site-header .navbar {
    min-height: 76px;
}

.site-logo {
    display: block;
    width: auto;
    max-width: 240px;
    height: 52px;
    object-fit: contain;
}

.navbar .nav-link {
    color: var(--lsr-ink);
    font-weight: 600;
    border-radius: .65rem;
    padding: .65rem .8rem;
}

.navbar .nav-link:hover,
.navbar .nav-link:focus,
.navbar .nav-link.active {
    color: var(--lsr-forest);
    background: var(--lsr-cream);
}

.navbar-toggler {
    border-color: var(--lsr-border);
}

/* ==========================================================================
   Buttons
   ========================================================================== */

.btn-lsr-primary,
.btn-lsr-outline,
.site-nav-cta {
    min-height: 44px;
    border-radius: 999px;
    padding: .7rem 1.2rem;
    font-weight: 700;
}

.btn-lsr-primary,
.site-nav-cta {
    color: #fff;
    background: var(--lsr-forest);
    border-color: var(--lsr-forest);
}

.btn-lsr-primary:hover,
.btn-lsr-primary:focus,
.site-nav-cta:hover,
.site-nav-cta:focus {
    color: #fff;
    background: var(--lsr-forest-dark);
    border-color: var(--lsr-forest-dark);
}

.btn-lsr-outline {
    color: var(--lsr-forest-dark);
    background: transparent;
    border: 1px solid rgba(47, 74, 58, .5);
}

.btn-lsr-outline:hover,
.btn-lsr-outline:focus {
    color: #fff;
    background: var(--lsr-forest);
    border-color: var(--lsr-forest);
}

/* ==========================================================================
   Page sections and reusable components
   ========================================================================== */

.hero {
    position: relative;
    overflow: hidden;
    padding: clamp(3rem, 8vw, 7rem) 0;
    background:
        radial-gradient(circle at 85% 10%, rgba(215, 198, 166, .48), transparent 38%),
        linear-gradient(135deg, var(--lsr-cream), #fff 72%);
}

.hero-copy {
    max-width: 44rem;
}

.hero-title {
    max-width: 12ch;
    margin-bottom: 1.25rem;
    font-size: clamp(2.8rem, 7vw, 5.8rem);
}

.hero-lead {
    max-width: 42rem;
    color: #465149;
    font-size: clamp(1.05rem, 2vw, 1.28rem);
}

.hero-image,
.content-image {
    width: 100%;
    border-radius: var(--lsr-radius);
    object-fit: cover;
    box-shadow: var(--lsr-shadow);
}

.hero-image {
    min-height: 360px;
    max-height: 610px;
}

.content-image {
    min-height: 300px;
    max-height: 520px;
}

.image-band {
    width: 100%;
    height: clamp(250px, 37vw, 520px);
    object-fit: cover;
}

.section-space {
    padding-top: var(--lsr-section-space);
    padding-bottom: var(--lsr-section-space);
}

.section-space-sm {
    padding-top: clamp(2.5rem, 5vw, 4rem);
    padding-bottom: clamp(2.5rem, 5vw, 4rem);
}

.section-soft {
    background: var(--lsr-cream);
}

.section-deep {
    color: rgba(255,255,255,.92);
    background: var(--lsr-forest-dark);
}

.section-deep h2,
.section-deep h3 {
    color: #fff;
}

.eyebrow {
    display: inline-block;
    margin-bottom: .8rem;
    color: var(--lsr-clay);
    font-size: .78rem;
    font-weight: 800;
    letter-spacing: .14em;
    text-transform: uppercase;
}

.section-title {
    margin-bottom: 1rem;
    font-size: clamp(2rem, 4vw, 3.4rem);
}

.measure-lg {
    max-width: 42rem;
}

.section-intro {
    max-width: 48rem;
    color: var(--lsr-muted);
    font-size: 1.08rem;
}

.feature-card,
.info-card,
.amenity-card {
    height: 100%;
    border: 1px solid var(--lsr-border);
    border-radius: var(--lsr-radius);
    background: #fff;
    box-shadow: 0 .5rem 1.5rem rgba(31, 50, 40, .055);
}

.feature-card,
.info-card {
    padding: clamp(1.5rem, 3vw, 2rem);
}

.feature-card h3,
.info-card h3,
.amenity-card h3 {
    font-size: 1.35rem;
}

.feature-number,
.icon-disc {
    display: inline-grid;
    place-items: center;
    width: 2.75rem;
    height: 2.75rem;
    margin-bottom: 1rem;
    border-radius: 50%;
    color: var(--lsr-forest-dark);
    background: var(--lsr-cream-deep);
    font-weight: 800;
}

.amenity-card {
    padding: 1.6rem;
}

.amenity-card p:last-child,
.feature-card p:last-child,
.info-card p:last-child {
    margin-bottom: 0;
}

.check-list,
.plain-list {
    margin: 0;
    padding: 0;
    list-style: none;
}

.check-list li,
.plain-list li {
    position: relative;
    padding-left: 1.65rem;
    margin-bottom: .7rem;
}

.check-list li::before {
    content: "✓";
    position: absolute;
    left: 0;
    top: 0;
    color: var(--lsr-forest);
    font-weight: 900;
}

.plain-list li::before {
    content: "•";
    position: absolute;
    left: .3rem;
    color: var(--lsr-clay);
    font-weight: 900;
}

.callout {
    padding: clamp(1.8rem, 4vw, 3rem);
    border: 1px solid var(--lsr-border);
    border-radius: calc(var(--lsr-radius) + .25rem);
    background: linear-gradient(135deg, #fff, var(--lsr-cream));
    box-shadow: var(--lsr-shadow);
}

.quote-card {
    max-width: 56rem;
    margin-inline: auto;
    padding: clamp(2rem, 5vw, 3.5rem);
    border-left: 4px solid var(--lsr-clay);
    border-radius: 0 var(--lsr-radius) var(--lsr-radius) 0;
    background: #fff;
    box-shadow: 0 .5rem 1.5rem rgba(31, 50, 40, .055);
}

.quote-card blockquote {
    margin: 0 0 1rem;
    font-family: Georgia, "Times New Roman", serif;
    font-size: clamp(1.2rem, 2.3vw, 1.7rem);
    line-height: 1.55;
}

.rounded-media {
    overflow: hidden;
    border-radius: var(--lsr-radius);
    box-shadow: var(--lsr-shadow);
}

.video-grid .ratio {
    overflow: hidden;
    border-radius: var(--lsr-radius);
    background: #000;
    box-shadow: var(--lsr-shadow);
}

.cta-panel {
    padding: clamp(2rem, 6vw, 4.5rem);
    border-radius: calc(var(--lsr-radius) + .5rem);
    background: var(--lsr-forest-dark);
    color: rgba(255,255,255,.9);
}

.cta-panel h2 {
    color: #fff;
}

.cta-panel .btn-light {
    border-radius: 999px;
    font-weight: 700;
    padding: .75rem 1.25rem;
}

.donate-panel {
    border: 1px solid var(--lsr-border);
    border-radius: var(--lsr-radius);
    background: #fff;
    padding: 1.5rem;
}

#donate-button-container {
    min-height: 46px;
}

.page-hero {
    position: relative;
    min-height: clamp(350px, 50vw, 620px);
    display: flex;
    align-items: end;
    overflow: hidden;
    background: var(--lsr-forest-dark);
}

.page-hero > img {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    opacity: .72;
}

.page-hero::after {
    content: "";
    position: absolute;
    inset: 0;
    background: linear-gradient(to top, rgba(18, 34, 27, .82), rgba(18, 34, 27, .08) 70%);
}

.page-hero-content {
    position: relative;
    z-index: 1;
    max-width: 56rem;
    padding-top: 5rem;
    padding-bottom: clamp(2.5rem, 6vw, 5rem);
    color: #fff;
}

.page-hero-content h1 {
    color: #fff;
    font-size: clamp(2.8rem, 7vw, 5rem);
}

.page-hero-content p {
    max-width: 42rem;
    color: rgba(255,255,255,.9);
    font-size: clamp(1.05rem, 2vw, 1.25rem);
}

.login-shell {
    min-height: calc(100vh - 76px);
    display: grid;
    place-items: center;
    padding: 3rem 0;
    background: var(--lsr-cream);
}

.login-card {
    width: min(100%, 34rem);
    padding: clamp(1.75rem, 5vw, 3rem);
    border: 1px solid var(--lsr-border);
    border-radius: var(--lsr-radius);
    background: #fff;
    box-shadow: var(--lsr-shadow);
}

.form-control {
    min-height: 48px;
    border-color: rgba(47,74,58,.25);
}

.form-control:focus {
    border-color: var(--lsr-sage);
    box-shadow: 0 0 0 .25rem rgba(113, 129, 111, .18);
}

/* ==========================================================================
   Footer
   ========================================================================== */

.site-footer {
    color: rgba(255, 255, 255, .82);
    background: var(--lsr-forest-dark);
}

.footer-logo {
    width: auto;
    max-width: 150px;
    max-height: 100px;
}

.footer-description {
    max-width: 32rem;
}

.footer-heading {
    margin-bottom: 1rem;
    color: #fff;
    font-size: 1rem;
    font-weight: 700;
}

.footer-links {
    margin-bottom: 0;
}

.footer-links li {
    margin-bottom: .5rem;
}

.footer-links a,
.footer-legal a {
    color: rgba(255, 255, 255, .82);
    text-decoration: none;
}

.footer-links a:hover,
.footer-links a:focus,
.footer-legal a:hover,
.footer-legal a:focus {
    color: #fff;
    text-decoration: underline;
}

.footer-divider {
    margin: 2rem 0;
    border-color: rgba(255, 255, 255, .2);
}

.footer-legal {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: .65rem;
}

.flash-region .alert {
    margin-bottom: 0;
}

/* ==========================================================================
   Responsive adjustments
   ========================================================================== */

@media (max-width: 991.98px) {
    .site-logo {
        max-width: 190px;
        height: 48px;
    }

    .site-header .navbar-collapse {
        padding: 1rem 0 .5rem;
        margin-top: .75rem;
        border-top: 1px solid var(--lsr-border);
    }

    .navbar .nav-link,
    .navbar .btn-lsr-primary,
    .navbar .site-nav-cta {
        width: 100%;
        margin-bottom: .25rem;
        text-align: left;
    }

    .site-nav-cta {
        display: block;
        margin-top: .5rem;
        margin-bottom: .35rem;
    }

    .hero-image {
        min-height: 300px;
    }
}

@media (max-width: 575.98px) {
    .site-logo {
        max-width: 180px;
        height: 44px;
    }

    .hero {
        padding-top: 2.6rem;
    }

    .hero-title {
        font-size: clamp(2.6rem, 14vw, 4.2rem);
    }

    .section-space {
        padding-top: 3.4rem;
        padding-bottom: 3.4rem;
    }

    .content-image {
        min-height: 240px;
    }
}

/* ==========================================================================
   Reduced motion
   ========================================================================== */

@media (prefers-reduced-motion: reduce) {
    html {
        scroll-behavior: auto;
    }

    *,
    *::before,
    *::after {
        transition-duration: .01ms !important;
        animation-duration: .01ms !important;
        animation-iteration-count: 1 !important;
    }
}

/* ==========================================================================
   Public page additions
   ========================================================================== */

.quick-facts {
    display: flex;
    flex-wrap: wrap;
    gap: .6rem;
}

.quick-facts span {
    display: inline-flex;
    align-items: center;
    min-height: 2.25rem;
    padding: .4rem .8rem;
    border: 1px solid var(--lsr-border);
    border-radius: 999px;
    color: var(--lsr-forest-dark);
    background: var(--lsr-cream);
    font-size: .9rem;
    font-weight: 700;
}

.dark-info-card {
    height: 100%;
    padding: clamp(1.5rem, 3vw, 2rem);
    border: 1px solid rgba(255, 255, 255, .16);
    border-radius: var(--lsr-radius);
    background: rgba(255, 255, 255, .06);
}

.dark-info-card h3 {
    color: #fff;
    font-size: 1.35rem;
}

.dark-info-card p {
    margin-bottom: 0;
    color: rgba(255, 255, 255, .82);
}

.attraction-card {
    height: 100%;
    display: flex;
    flex-direction: column;
    overflow: hidden;
    border: 1px solid var(--lsr-border);
    border-radius: var(--lsr-radius);
    background: #fff;
    box-shadow: 0 .5rem 1.5rem rgba(31, 50, 40, .055);
}

.attraction-card > img {
    width: 100%;
    height: 245px;
    object-fit: cover;
}

.attraction-card-body {
    flex: 1;
    display: flex;
    flex-direction: column;
    padding: 1.6rem;
}

.attraction-card-body h3 {
    margin-bottom: .8rem;
    font-size: 1.55rem;
}

.attraction-card-body .btn {
    align-self: flex-start;
}

.attraction-meta {
    display: flex;
    flex-wrap: wrap;
    gap: .5rem 1rem;
    margin-bottom: .8rem;
    color: var(--lsr-clay);
    font-size: .78rem;
    font-weight: 800;
    letter-spacing: .08em;
    text-transform: uppercase;
}

.support-donate-panel {
    padding: clamp(1.5rem, 4vw, 2.5rem);
    box-shadow: var(--lsr-shadow);
}

.request-form-placeholder {
    padding: clamp(1.75rem, 5vw, 3rem);
    border: 1px solid var(--lsr-border);
    border-radius: calc(var(--lsr-radius) + .25rem);
    background: linear-gradient(135deg, #fff, var(--lsr-cream));
    box-shadow: var(--lsr-shadow);
}

.request-preview-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 1rem;
}

.request-preview-grid > div {
    padding: 1rem;
    border: 1px solid var(--lsr-border);
    border-radius: .9rem;
    background: rgba(255, 255, 255, .8);
}

.request-preview-grid strong,
.request-preview-grid span {
    display: block;
}

.request-preview-grid strong {
    margin-bottom: .25rem;
    color: var(--lsr-forest-dark);
}

.request-preview-grid span {
    color: var(--lsr-muted);
    font-size: .92rem;
}

@media (max-width: 575.98px) {
    .request-preview-grid {
        grid-template-columns: 1fr;
    }

    .attraction-card > img {
        height: 210px;
    }
}

/* ==========================================================================
   Availability
   ========================================================================== */

.availability-intro {
    padding-bottom: clamp(2rem, 4vw, 3rem);
}

.availability-check-card,
.availability-calendar-wrap {
    padding: clamp(1.35rem, 4vw, 2.25rem);
    border: 1px solid var(--lsr-border);
    border-radius: var(--lsr-radius);
    background: #fff;
    box-shadow: 0 .5rem 1.5rem rgba(31, 50, 40, .055);
}

.availability-result {
    padding: 1.2rem 1.35rem;
    border: 1px solid var(--lsr-border);
    border-radius: 1rem;
}

.availability-result-available {
    background: #edf5ee;
    border-color: rgba(47, 74, 58, .24);
}

.availability-result-limited {
    background: #fff8e7;
    border-color: rgba(154, 102, 72, .25);
}

.availability-result-unavailable,
.availability-result-invalid {
    background: #f9eeee;
    border-color: rgba(120, 55, 55, .2);
}

.availability-status-label {
    display: inline-block;
    color: var(--lsr-forest-dark);
    font-size: .76rem;
    font-weight: 800;
    letter-spacing: .1em;
    text-transform: uppercase;
}

.availability-calendar-header {
    display: flex;
    justify-content: space-between;
    align-items: end;
    gap: 1rem;
    margin-bottom: 1.25rem;
}

.availability-calendar-nav {
    display: flex;
    gap: .5rem;
}

.availability-legend {
    display: flex;
    flex-wrap: wrap;
    gap: .7rem 1.4rem;
    margin-bottom: 1.1rem;
    color: var(--lsr-muted);
    font-size: .88rem;
}

.availability-legend span {
    display: inline-flex;
    align-items: center;
    gap: .45rem;
}

.availability-dot {
    width: .7rem;
    height: .7rem;
    display: inline-block;
    border-radius: 50%;
}

.availability-dot-open {
    background: #6d9573;
}

.availability-dot-limited {
    background: #d1a34c;
}

.availability-dot-full {
    background: #b56f67;
}

.availability-calendar {
    display: grid;
    grid-template-columns: repeat(7, minmax(0, 1fr));
    gap: .35rem;
}

.availability-weekday {
    padding: .5rem .25rem;
    color: var(--lsr-muted);
    font-size: .78rem;
    font-weight: 800;
    text-align: center;
    text-transform: uppercase;
}

.availability-day {
    min-height: 88px;
    display: flex;
    flex-direction: column;
    justify-content: space-between;
    gap: .5rem;
    padding: .65rem;
    border: 1px solid var(--lsr-border);
    border-radius: .8rem;
    background: #fff;
}

.availability-day-available {
    background: #edf5ee;
}

.availability-day-limited {
    background: #fff8e7;
}

.availability-day-full {
    background: #f9eeee;
}

.availability-day-past {
    opacity: .42;
    background: #f3f3f3;
}

.availability-day-empty {
    visibility: hidden;
}

.availability-day-number {
    color: var(--lsr-ink);
    font-weight: 800;
}

.availability-day-count {
    color: var(--lsr-muted);
    font-size: .76rem;
    font-weight: 700;
}

@media (max-width: 767.98px) {
    .availability-calendar-header {
        align-items: flex-start;
        flex-direction: column;
    }

    .availability-day {
        min-height: 64px;
        padding: .45rem;
    }

    .availability-day-count {
        font-size: .68rem;
    }
}

@media (max-width: 575.98px) {
    .availability-calendar {
        gap: .2rem;
    }

    .availability-weekday {
        font-size: .66rem;
    }

    .availability-day {
        min-height: 52px;
        border-radius: .55rem;
        padding: .35rem;
    }

    .availability-day-count {
        font-size: 0;
    }

    .availability-day-count::after {
        content: "open";
        font-size: .62rem;
    }
}

/* ==========================================================================
   Retreat request form
   ========================================================================== */

.page-hero-compact {
    min-height: 380px;
}

.retreat-request-form {
    max-width: 980px;
    margin: 0 auto;
}

.request-form-section {
    margin-bottom: 2rem;
    padding: clamp(1.35rem, 4vw, 2.35rem);
    border: 1px solid var(--lsr-border);
    border-radius: var(--lsr-radius);
    background: #fff;
    box-shadow: 0 .5rem 1.5rem rgba(31, 50, 40, .05);
}

.request-section-heading {
    display: flex;
    align-items: center;
    gap: 1rem;
    margin-bottom: 1.75rem;
    padding-bottom: 1.15rem;
    border-bottom: 1px solid var(--lsr-border);
}

.request-step {
    width: 2.8rem;
    height: 2.8rem;
    flex: 0 0 2.8rem;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border-radius: 50%;
    color: #fff;
    background: var(--lsr-forest);
    font-weight: 800;
}

.request-checkbox {
    min-height: 44px;
    display: flex;
    align-items: center;
    gap: .55rem;
}

.request-checkbox .form-check-input {
    width: 1.25rem;
    height: 1.25rem;
    margin-top: 0;
    flex: 0 0 auto;
}

.request-availability {
    display: flex;
    flex-direction: column;
    gap: .2rem;
    padding: 1rem 1.1rem;
    border: 1px solid var(--lsr-border);
    border-radius: .9rem;
}

.request-availability-available {
    background: #edf5ee;
}

.request-availability-limited {
    background: #fff8e7;
}

.request-availability-unavailable {
    background: #f9eeee;
}

.request-agreement {
    margin-top: 1rem;
    padding: 1rem 1.1rem;
    border: 1px solid var(--lsr-border);
    border-radius: .9rem;
    background: var(--lsr-cream);
}

.request-agreement:first-of-type {
    margin-top: 0;
}

.request-agreement summary {
    cursor: pointer;
    color: var(--lsr-forest-dark);
    font-weight: 800;
}

.request-agreement-text {
    max-height: 18rem;
    overflow-y: auto;
    margin-top: 1rem;
    padding: 1rem;
    border: 1px solid var(--lsr-border);
    border-radius: .7rem;
    background: #fff;
    font-size: .94rem;
}

.request-submit-panel {
    padding: clamp(1.5rem, 4vw, 2.5rem);
    border-radius: var(--lsr-radius);
    background: var(--lsr-cream);
}

.request-error-summary {
    max-width: 980px;
    margin-right: auto;
    margin-bottom: 2rem;
    margin-left: auto;
}

.request-honeypot {
    position: absolute !important;
    left: -10000px !important;
    width: 1px !important;
    height: 1px !important;
    overflow: hidden !important;
}

.request-received-page {
    background: var(--lsr-cream);
}

.request-received-card {
    padding: clamp(2rem, 6vw, 4rem);
    border: 1px solid var(--lsr-border);
    border-radius: calc(var(--lsr-radius) + .3rem);
    background: #fff;
    box-shadow: var(--lsr-shadow);
}

.request-success-mark {
    width: 4.5rem;
    height: 4.5rem;
    display: flex;
    align-items: center;
    justify-content: center;
    margin: 0 auto 1.5rem;
    border-radius: 50%;
    color: #fff;
    background: var(--lsr-forest);
    font-size: 2rem;
    font-weight: 800;
}

.request-reference {
    display: inline-block;
    margin: 1rem 0;
    padding: .55rem .9rem;
    border-radius: 999px;
    background: var(--lsr-cream);
}

.request-received-dates {
    display: flex;
    flex-direction: column;
    gap: .15rem;
    max-width: 430px;
    margin: 1rem auto 0;
    padding: 1rem;
    border: 1px solid var(--lsr-border);
    border-radius: .8rem;
}

.request-received-dates span {
    color: var(--lsr-muted);
    font-size: .78rem;
    font-weight: 800;
    letter-spacing: .08em;
    text-transform: uppercase;
}

.request-next-steps {
    max-width: 620px;
    margin-right: auto;
    margin-left: auto;
}

.request-next-steps li + li {
    margin-top: .55rem;
}

@media (max-width: 575.98px) {
    .request-section-heading {
        align-items: flex-start;
    }

    .request-step {
        width: 2.4rem;
        height: 2.4rem;
        flex-basis: 2.4rem;
    }
}

/* ==========================================================================
   Staff authentication & request review
   ========================================================================== */

.staff-auth-shell {
    min-height: 70vh;
    display: flex;
    align-items: center;
    padding: clamp(3rem, 8vw, 6rem) 0;
    background: var(--lsr-cream);
}

.staff-auth-card {
    max-width: 560px;
    padding: clamp(1.75rem, 5vw, 3rem);
    border: 1px solid var(--lsr-border);
    border-radius: var(--lsr-radius);
    background: #fff;
    box-shadow: var(--lsr-shadow);
}

.staff-area {
    background: #f7f8f5;
}

.staff-topbar {
    padding: 2rem 0;
    border-bottom: 1px solid var(--lsr-border);
    background: #fff;
}

.staff-back-link {
    color: var(--lsr-forest);
    font-size: .92rem;
    font-weight: 700;
    text-decoration: none;
}

.staff-stat-grid {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 1rem;
}

.staff-stat-card {
    min-height: 145px;
    display: flex;
    flex-direction: column;
    justify-content: center;
    padding: 1.4rem;
    border: 1px solid var(--lsr-border);
    border-radius: var(--lsr-radius);
    color: var(--lsr-ink);
    background: #fff;
    box-shadow: 0 .35rem 1.15rem rgba(31, 50, 40, .045);
    text-decoration: none;
}

a.staff-stat-card:hover {
    color: var(--lsr-ink);
    border-color: rgba(47, 74, 58, .3);
    transform: translateY(-1px);
}

.staff-stat-number {
    color: var(--lsr-forest);
    font-family: Georgia, "Times New Roman", serif;
    font-size: clamp(2.2rem, 5vw, 3.2rem);
    font-weight: 700;
    line-height: 1;
}

.staff-panel {
    padding: clamp(1.25rem, 3vw, 2rem);
    border: 1px solid var(--lsr-border);
    border-radius: var(--lsr-radius);
    background: #fff;
    box-shadow: 0 .35rem 1.15rem rgba(31, 50, 40, .045);
}

.staff-panel-heading {
    margin-bottom: 1.4rem;
    padding-bottom: 1rem;
    border-bottom: 1px solid var(--lsr-border);
}

.staff-empty-state {
    padding: 2rem;
    color: var(--lsr-muted);
    border: 1px dashed var(--lsr-border);
    border-radius: .9rem;
    text-align: center;
}

.staff-table {
    margin-bottom: 0;
}

.staff-table th {
    color: var(--lsr-muted);
    font-size: .75rem;
    letter-spacing: .06em;
    text-transform: uppercase;
    white-space: nowrap;
}

.staff-table td {
    padding-top: .9rem;
    padding-bottom: .9rem;
}

.staff-status,
.staff-availability {
    display: inline-flex;
    align-items: center;
    padding: .35rem .65rem;
    border-radius: 999px;
    font-size: .75rem;
    font-weight: 800;
    line-height: 1.2;
    white-space: nowrap;
}

.staff-status-lg {
    padding: .55rem .85rem;
    font-size: .85rem;
}

.staff-status-submitted {
    color: #275c78;
    background: #e9f4fa;
}

.staff-status-under_review {
    color: #6a541b;
    background: #fff3cc;
}

.staff-status-needs_info {
    color: #704c22;
    background: #f8eadb;
}

.staff-status-approved {
    color: #315f3a;
    background: #e8f4ea;
}

.staff-status-declined,
.staff-status-withdrawn {
    color: #7a3f3f;
    background: #f6e7e7;
}

.staff-availability-available {
    color: #315f3a;
    background: #e8f4ea;
}

.staff-availability-limited,
.staff-availability-unchecked {
    color: #6a541b;
    background: #fff3cc;
}

.staff-availability-unavailable {
    color: #7a3f3f;
    background: #f6e7e7;
}

.staff-actions-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 1rem;
}

.staff-action-card {
    display: flex;
    flex-direction: column;
    padding: 1.25rem;
    border: 1px solid var(--lsr-border);
    border-radius: var(--lsr-radius);
    color: var(--lsr-ink);
    background: #fff;
    text-decoration: none;
}

.staff-action-card span {
    color: var(--lsr-muted);
    font-size: .9rem;
}

.staff-filter-bar {
    display: flex;
    flex-wrap: wrap;
    gap: .5rem;
}

.staff-filter {
    padding: .55rem .8rem;
    border: 1px solid var(--lsr-border);
    border-radius: 999px;
    color: var(--lsr-forest-dark);
    background: #fff;
    font-size: .84rem;
    font-weight: 700;
    text-decoration: none;
}

.staff-filter.active {
    color: #fff;
    border-color: var(--lsr-forest);
    background: var(--lsr-forest);
}

.review-fact-grid,
.review-contact-grid {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: .8rem;
}

.review-fact-grid > div,
.review-contact-grid > div {
    padding: .85rem 1rem;
    border: 1px solid var(--lsr-border);
    border-radius: .8rem;
    background: var(--lsr-cream);
}

.review-fact-grid span,
.review-contact-grid span,
.review-text-block > span {
    display: block;
    margin-bottom: .2rem;
    color: var(--lsr-muted);
    font-size: .72rem;
    font-weight: 800;
    letter-spacing: .06em;
    text-transform: uppercase;
}

.review-text-block {
    padding: 1rem 1.1rem;
    border-left: 4px solid var(--lsr-border);
    background: #fafbf9;
}

.review-text-block p {
    margin-bottom: 0;
}

.review-availability-box {
    display: flex;
    flex-direction: column;
    gap: .15rem;
    padding: 1rem;
    border: 1px solid var(--lsr-border);
    border-radius: .85rem;
}

.review-availability-available {
    background: #e8f4ea;
}

.review-availability-limited {
    background: #fff3cc;
}

.review-availability-unavailable {
    background: #f6e7e7;
}

.review-agreement-list {
    display: grid;
    gap: .75rem;
}

.review-agreement-row {
    display: flex;
    flex-direction: column;
    padding: .9rem 1rem;
    border: 1px solid var(--lsr-border);
    border-radius: .8rem;
    background: #fafbf9;
}

.review-agreement-row span {
    color: var(--lsr-muted);
    font-size: .85rem;
}

.staff-decision-panel {
    position: static;
}

.staff-cabin-choice {
    display: flex;
    align-items: center;
    gap: .75rem;
    margin-bottom: .6rem;
    padding: .8rem;
    border: 1px solid var(--lsr-border);
    border-radius: .8rem;
    cursor: pointer;
}

.staff-cabin-choice input {
    width: 1.2rem;
    height: 1.2rem;
}

.staff-cabin-choice span {
    display: flex;
    flex-direction: column;
}

.staff-cabin-choice small {
    color: var(--lsr-muted);
}

.staff-cabin-choice.is-unavailable {
    opacity: .55;
    cursor: default;
    background: #f2f2f2;
}

.staff-cabin-disabled {
    width: 1.2rem;
    height: 1.2rem;
    border: 2px solid #aaa;
    border-radius: .2rem;
}

.staff-user-list {
    display: grid;
    gap: 1rem;
}

.staff-user-row {
    display: grid;
    grid-template-columns: 1fr auto;
    gap: .8rem 1rem;
    padding: 1rem;
    border: 1px solid var(--lsr-border);
    border-radius: .85rem;
}

.staff-user-actions {
    display: flex;
    gap: .5rem;
    align-items: start;
}

.staff-password-reset {
    grid-column: 1 / -1;
    border-top: 1px solid var(--lsr-border);
    padding-top: .75rem;
}

.staff-password-reset summary {
    cursor: pointer;
    color: var(--lsr-forest);
    font-size: .85rem;
    font-weight: 700;
}

@media (max-width: 991.98px) {
    .staff-stat-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .review-fact-grid,
    .review-contact-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .staff-decision-panel {
        position: static;
    }
}

@media (max-width: 575.98px) {
    .staff-stat-grid,
    .staff-actions-grid,
    .review-fact-grid,
    .review-contact-grid {
        grid-template-columns: 1fr;
    }

    .staff-stat-card {
        min-height: 110px;
    }

    .staff-user-row {
        grid-template-columns: 1fr;
    }

    .staff-password-reset {
        grid-column: 1;
    }
}


/* ==========================================================================
   Reservation calendar / editor
   ========================================================================== */

.staff-status-confirmed {
    color: #315f3a;
    background: #e8f4ea;
}

.staff-status-hold {
    color: #6a541b;
    background: #fff3cc;
}

.staff-status-cancelled {
    color: #7a3f3f;
    background: #f6e7e7;
}

.staff-status-completed {
    color: #4f5960;
    background: #e9ecef;
}

.reservation-calendar-toolbar {
    display: grid;
    grid-template-columns: 1fr auto 1fr;
    align-items: end;
    gap: 1rem;
    margin-bottom: 1rem;
}

.reservation-calendar-toolbar > :last-child {
    justify-self: end;
}

.reservation-calendar-legend {
    display: flex;
    flex-wrap: wrap;
    gap: .7rem 1.25rem;
    margin-bottom: 1rem;
    color: var(--lsr-muted);
    font-size: .84rem;
}

.reservation-calendar-legend span {
    display: inline-flex;
    align-items: center;
    gap: .4rem;
}

.reservation-legend-box {
    width: .85rem;
    height: .85rem;
    display: inline-block;
    border: 1px solid var(--lsr-border);
    border-radius: .2rem;
}

.reservation-legend-box.is-open {
    background: #edf5ee;
}

.reservation-legend-box.is-reserved {
    background: #d9e8dd;
}

.reservation-legend-box.is-blocked {
    background: #ece7df;
}

.reservation-turnover-symbol {
    color: #9a6648;
    font-size: 1rem;
    font-weight: 900;
}

.reservation-timeline-scroll {
    overflow-x: auto;
    padding-bottom: .5rem;
}

.reservation-timeline {
    min-width: 1320px;
    border: 1px solid var(--lsr-border);
    border-radius: .85rem;
    overflow: hidden;
    background: #fff;
}

.reservation-timeline-header,
.reservation-timeline-row {
    display: grid;
    grid-template-columns: 160px repeat(31, minmax(36px, 1fr));
}

.reservation-timeline-header {
    border-bottom: 1px solid var(--lsr-border);
    background: #f5f6f3;
}

.reservation-cabin-heading,
.reservation-cabin-name {
    padding: .65rem .75rem;
    border-right: 1px solid var(--lsr-border);
}

.reservation-cabin-heading {
    display: flex;
    align-items: center;
    color: var(--lsr-muted);
    font-size: .75rem;
    font-weight: 800;
    letter-spacing: .05em;
    text-transform: uppercase;
}

.reservation-cabin-name {
    display: flex;
    flex-direction: column;
    justify-content: center;
    background: #fafbf9;
}

.reservation-cabin-name span {
    color: var(--lsr-muted);
    font-size: .67rem;
}

.reservation-day-heading {
    min-height: 48px;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    border-right: 1px solid var(--lsr-border);
    color: var(--lsr-ink);
    font-size: .72rem;
}

.reservation-day-heading span {
    color: var(--lsr-muted);
    font-size: .58rem;
    text-transform: uppercase;
}

.reservation-day-heading.is-weekend {
    background: #eef0ec;
}

.reservation-timeline-row + .reservation-timeline-row {
    border-top: 1px solid var(--lsr-border);
}

.reservation-day-cell {
    min-height: 58px;
    position: relative;
    display: flex;
    align-items: center;
    justify-content: center;
    border-right: 1px solid var(--lsr-border);
    color: var(--lsr-ink);
    overflow: hidden;
    text-decoration: none;
}

.reservation-day-cell.is-open {
    background: #edf5ee;
}

.reservation-day-cell.is-reserved {
    background: #d9e8dd;
}

.reservation-day-cell.is-reserved:hover {
    color: var(--lsr-forest-dark);
    background: #c8ddce;
}

.reservation-day-cell.is-blocked {
    color: #7b746c;
    background: #ece7df;
}

.reservation-day-cell.is-past {
    opacity: .48;
}

.reservation-day-cell.is-unused,
.reservation-day-heading.is-unused {
    background: #f3f3f3;
}

.reservation-cell-name {
    display: block;
    max-width: 100%;
    padding: 0 .18rem;
    font-size: .63rem;
    font-weight: 800;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.reservation-cell-continuation {
    color: rgba(47, 74, 58, .45);
    font-size: 1.1rem;
}

.reservation-cell-turnover {
    position: absolute;
    top: .1rem;
    right: .15rem;
    color: #9a6648;
    font-size: .8rem;
    font-weight: 900;
}

.reservation-day-cell.has-turnover {
    box-shadow: inset 3px 0 0 #b9784f;
}

.turnover-list {
    display: grid;
    gap: .65rem;
}

.turnover-row {
    display: grid;
    grid-template-columns: minmax(160px, .4fr) 1fr;
    gap: 1rem;
    padding: .8rem 1rem;
    border: 1px solid var(--lsr-border);
    border-radius: .75rem;
    background: #fff8e7;
}

.turnover-row > div:first-child {
    display: flex;
    flex-direction: column;
}

.turnover-row span {
    font-size: .85rem;
}

.reservation-form-panel {
    max-width: 900px;
    margin: 0 auto;
}

.reservation-form-section + .reservation-form-section {
    margin-top: 2rem;
    padding-top: 2rem;
    border-top: 1px solid var(--lsr-border);
}

.reservation-cabin-options {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: .75rem;
}

@media (max-width: 767.98px) {
    .reservation-calendar-toolbar {
        grid-template-columns: 1fr 1fr;
        align-items: center;
    }

    .reservation-calendar-toolbar > div {
        grid-column: 1 / -1;
        grid-row: 1;
    }

    .reservation-calendar-toolbar > :first-child {
        grid-column: 1;
        grid-row: 2;
    }

    .reservation-calendar-toolbar > :last-child {
        grid-column: 2;
        grid-row: 2;
    }

    .turnover-row {
        grid-template-columns: 1fr;
        gap: .3rem;
    }

    .reservation-cabin-options {
        grid-template-columns: 1fr;
    }
}
/* ==========================================================================
   Reservation calendar split arrival/departure cells
   Append AFTER the earlier reservation-calendar CSS.
   ========================================================================== */

.reservation-legend-split {
    width: .85rem;
    height: .85rem;
    display: inline-block;
    position: relative;
    overflow: hidden;
    border: 1px solid var(--lsr-border);
    border-radius: .2rem;
    background: #edf5ee;
}

.reservation-legend-split::before {
    content: "";
    position: absolute;
    inset: 0 0 50%;
    background: #d9e8dd;
    border-bottom: 1px solid rgba(47, 74, 58, .2);
}

.reservation-split-cell {
    min-height: 58px;
    position: relative;
    display: grid;
    grid-template-rows: 1fr 1fr;
    border-right: 1px solid var(--lsr-border);
    overflow: hidden;
    background: #edf5ee;
}

.reservation-split-cell.is-past {
    opacity: .48;
}

.reservation-half {
    min-width: 0;
    min-height: 29px;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 0 .12rem;
    color: var(--lsr-ink);
    font-size: .59rem;
    font-weight: 800;
    line-height: 1;
    overflow: hidden;
    text-decoration: none;
}

.reservation-half span {
    display: block;
    max-width: 100%;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.reservation-half-top {
    border-bottom: 1px solid rgba(47, 74, 58, .18);
}

.reservation-half.is-open {
    background: #edf5ee;
}

.reservation-half.is-reserved {
    background: #d9e8dd;
}

a.reservation-half.is-reserved:hover {
    color: var(--lsr-forest-dark);
    background: #c8ddce;
}

.reservation-split-cell.has-turnover {
    box-shadow: inset 3px 0 0 #b9784f;
}

.reservation-split-turnover {
    width: 1rem;
    height: 1rem;
    position: absolute;
    top: 50%;
    right: .05rem;
    z-index: 2;
    display: flex;
    align-items: center;
    justify-content: center;
    transform: translateY(-50%);
    border-radius: 50%;
    color: #8a5638;
    background: #fff8e7;
    font-size: .7rem;
    font-weight: 900;
    line-height: 1;
}

.reservation-calendar-help {
    display: flex;
    flex-wrap: wrap;
    gap: .3rem .65rem;
    padding: .75rem .9rem;
    border-radius: .7rem;
    color: var(--lsr-forest-dark);
    background: #f4f7f2;
    font-size: .84rem;
}

/* ==========================================================================
   Sliding 31-day reservation planner
   Append AFTER the existing reservation calendar CSS.
   ========================================================================== */

.reservation-calendar-wide-section {
    padding: 1.5rem 0 3rem;
}

.reservation-calendar-wide-container {
    width: 100%;
    max-width: none;
    padding-right: clamp(.75rem, 2vw, 2rem);
    padding-left: clamp(.75rem, 2vw, 2rem);
}

.reservation-window-toolbar {
    display: grid;
    grid-template-columns: minmax(280px, 1fr) auto minmax(280px, 1fr);
    align-items: end;
    gap: 1rem;
    margin-bottom: 1rem;
}

.reservation-window-nav {
    display: flex;
    flex-wrap: wrap;
    gap: .5rem;
}

.reservation-window-title {
    min-width: 260px;
}

.reservation-jump-form {
    width: min(100%, 280px);
    justify-self: end;
}

.reservation-drag-strip {
    position: relative;
    margin-bottom: 1rem;
    padding: .65rem .85rem;
    border: 1px solid var(--lsr-border);
    border-radius: .75rem;
    background: #f4f7f2;
    cursor: grab;
    user-select: none;
    touch-action: pan-y;
}

.reservation-drag-strip:active,
.reservation-drag-strip.is-dragging {
    cursor: grabbing;
}

.reservation-drag-strip:focus-visible {
    outline: 3px solid rgba(47, 74, 58, .2);
    outline-offset: 2px;
}

.reservation-drag-strip-track {
    position: relative;
    min-width: 0;
    min-height: 2.75rem;
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: .35rem .65rem;
    transition: transform 100ms ease-out;
}

.reservation-drag-handle,
.reservation-drag-feedback {
    position: absolute;
    z-index: 2;
    top: 40%;
    left: 50%;
    transform: translate(-50%, -50%);
    pointer-events: none;
}

.reservation-drag-handle {
    width: 3.5rem;
    height: 2.5rem;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border: 0;
    color: var(--lsr-forest-dark);
    background: transparent;
    font-size: 4rem;
    font-weight: 900;
    line-height: 1;
    opacity: 1;
    transition: opacity 80ms ease-out;
}

.reservation-drag-feedback {
    min-width: 8.5rem;
    padding: .28rem .65rem;
    border: 1px solid rgba(47, 74, 58, .2);
    border-radius: 999px;
    color: var(--lsr-forest-dark);
    background: rgba(255, 255, 255, .94);
    box-shadow: 0 .25rem .7rem rgba(31, 50, 40, .12);
    font-size: .88rem;
    font-weight: 900;
    line-height: 1.2;
    text-align: center;
    white-space: nowrap;
    opacity: 0;
    transition: opacity 80ms ease-out;
}

.reservation-drag-strip.is-dragging .reservation-drag-strip-track {
    transition: none;
}

.reservation-drag-strip.is-dragging .reservation-drag-handle {
    opacity: 0;
}

.reservation-drag-strip.is-dragging .reservation-drag-feedback {
    opacity: 1;
}

@media (max-width: 767.98px) {
    .reservation-drag-strip-track {
        min-height: 3rem;
        padding-bottom: 1.75rem;
    }

    .reservation-drag-handle,
    .reservation-drag-feedback {
        top: auto;
        bottom: -.15rem;
        transform: translateX(-50%);
    }

    .reservation-drag-handle {
        font-size: 1.8rem;
    }

    .reservation-drag-feedback {
        min-width: 7.75rem;
        padding: .22rem .55rem;
        font-size: .8rem;
    }
}

.reservation-drag-help {
    color: var(--lsr-muted);
    font-size: .84rem;
}

.reservation-timeline-fluid {
    width: 100%;
    min-width: 1180px;
}

.reservation-timeline-fluid .reservation-timeline-header,
.reservation-timeline-fluid .reservation-timeline-row {
    grid-template-columns:
        minmax(140px, 170px)
        repeat(31, minmax(28px, 1fr));
}

.reservation-timeline-fluid .reservation-cabin-heading,
.reservation-timeline-fluid .reservation-cabin-name {
    position: sticky;
    left: 0;
    z-index: 4;
}

.reservation-timeline-fluid .reservation-cabin-heading {
    background: #f5f6f3;
}

.reservation-timeline-fluid .reservation-cabin-name {
    background: #fafbf9;
}

.reservation-day-heading {
    position: relative;
}

.reservation-day-heading small {
    position: absolute;
    top: .12rem;
    left: .14rem;
    color: var(--lsr-forest);
    font-size: .5rem;
    font-weight: 800;
    line-height: 1;
    text-transform: uppercase;
}

.reservation-day-heading.is-today {
    z-index: 1;
    color: var(--lsr-forest-dark);
    background: #ffe08a;
    box-shadow:
        inset 0 0 0 2px #d6a72d,
        0 .15rem .45rem rgba(94, 72, 20, .16);
}

.reservation-day-heading.is-today strong {
    font-weight: 900;
}

.reservation-day-heading.is-today span,
.reservation-day-heading.is-today small {
    color: var(--lsr-forest-dark);
}

@media (min-width: 1500px) {
    .reservation-timeline-fluid {
        min-width: 0;
    }

    .reservation-timeline-fluid .reservation-timeline-header,
    .reservation-timeline-fluid .reservation-timeline-row {
        grid-template-columns:
            minmax(150px, 180px)
            repeat(31, minmax(0, 1fr));
    }
}

@media (max-width: 991.98px) {
    .reservation-window-toolbar {
        grid-template-columns: 1fr 1fr;
        align-items: center;
    }

    .reservation-window-title {
        grid-column: 1 / -1;
        grid-row: 1;
        min-width: 0;
    }

    .reservation-window-nav {
        grid-column: 1;
        grid-row: 2;
    }

    .reservation-jump-form {
        grid-column: 2;
        grid-row: 2;
        width: 100%;
    }
}

@media (max-width: 575.98px) {
    .reservation-window-toolbar {
        grid-template-columns: 1fr;
    }

    .reservation-window-title,
    .reservation-window-nav,
    .reservation-jump-form {
        grid-column: 1;
    }

    .reservation-window-title {
        grid-row: 1;
    }

    .reservation-window-nav {
        grid-row: 2;
    }

    .reservation-jump-form {
        grid-row: 3;
        justify-self: stretch;
    }

    .reservation-window-nav .btn {
        flex: 1 1 auto;
    }

}

@media (prefers-reduced-motion: reduce) {
    .reservation-drag-strip-track {
        transition: none;
    }
}

/* ==========================================================================
   Cleaning workflow
   ========================================================================== */

.cleaning-task-list {
    display: grid;
    gap: 1rem;
}

.cleaning-task-card {
    overflow: hidden;
    border: 1px solid var(--lsr-border);
    border-radius: var(--lsr-radius);
    background: #fff;
    box-shadow: 0 .35rem 1.15rem rgba(31, 50, 40, .045);
}

.cleaning-task-card.cleaning-urgency-same_day {
    border-left: 5px solid #a35f34;
}

.cleaning-task-card.cleaning-urgency-overdue {
    border-left: 5px solid #9b4747;
}

.cleaning-task-card.cleaning-urgency-soon {
    border-left: 5px solid #a17a2f;
}

.cleaning-task-main,
.cleaning-task-controls {
    padding: clamp(1.1rem, 3vw, 1.6rem);
}

.cleaning-task-controls {
    border-top: 1px solid var(--lsr-border);
    background: #fafbf9;
}

.cleaning-task-heading {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 1rem;
}

.cleaning-priority-badge {
    display: inline-flex;
    align-items: center;
    flex: 0 0 auto;
    padding: .4rem .7rem;
    border-radius: 999px;
    font-size: .75rem;
    font-weight: 800;
}

.cleaning-priority-badge.is-same-day {
    color: #744021;
    background: #f8e6d8;
}

.cleaning-priority-badge.is-overdue {
    color: #793a3a;
    background: #f6e3e3;
}

.cleaning-priority-badge.is-soon {
    color: #6c551f;
    background: #fff0c7;
}

.cleaning-window {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr);
    align-items: center;
    gap: .75rem;
    max-width: 720px;
    margin-top: 1rem;
}

.cleaning-window > div:not(.cleaning-window-arrow) {
    display: flex;
    flex-direction: column;
    padding: .8rem .9rem;
    border: 1px solid var(--lsr-border);
    border-radius: .75rem;
    background: var(--lsr-cream);
}

.cleaning-window span {
    color: var(--lsr-muted);
    font-size: .7rem;
    font-weight: 800;
    letter-spacing: .05em;
    text-transform: uppercase;
}

.cleaning-window small {
    color: var(--lsr-muted);
}

.cleaning-window-arrow {
    color: var(--lsr-muted);
    font-size: 1.35rem;
    font-weight: 800;
}

.cleaning-same-day-callout {
    margin-top: .9rem;
    padding: .7rem .85rem;
    border-radius: .7rem;
    color: #744021;
    background: #fff5ec;
    font-weight: 700;
}

.cleaning-task-actions {
    display: flex;
    flex-wrap: wrap;
    align-items: flex-start;
    gap: 1rem;
    margin-top: 1rem;
    padding-top: 1rem;
    border-top: 1px solid var(--lsr-border);
}

.cleaning-skip-details {
    min-width: min(100%, 420px);
}

.cleaning-skip-details summary {
    cursor: pointer;
    color: var(--lsr-muted);
    font-size: .85rem;
    font-weight: 700;
}

.cleaning-status {
    display: inline-flex;
    padding: .35rem .6rem;
    border-radius: 999px;
    font-size: .75rem;
    font-weight: 800;
}

.cleaning-status-completed {
    color: #315f3a;
    background: #e8f4ea;
}

.cleaning-status-skipped {
    color: #5d5d5d;
    background: #ececec;
}

.cleaning-helper-list {
    display: grid;
    gap: .75rem;
}

.cleaning-helper-row {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 1rem;
    padding: .9rem 1rem;
    border: 1px solid var(--lsr-border);
    border-radius: .8rem;
}

.cleaning-helper-row.is-inactive {
    opacity: .55;
    background: #f3f3f3;
}

@media (max-width: 575.98px) {
    .cleaning-task-heading {
        flex-direction: column;
    }

    .cleaning-window {
        grid-template-columns: 1fr;
    }

    .cleaning-window-arrow {
        transform: rotate(90deg);
        justify-self: center;
    }

    .cleaning-helper-row {
        flex-direction: column;
    }
}
/* ==========================================================================
   Cleaning information on reservation timeline
   ========================================================================== */

.reservation-cleaning-legend {
    width: 1.2rem;
    height: 1.2rem;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border-radius: .25rem;
    color: #00ace6;
    background: #eefaff;
    font-style: normal;
    line-height: 1;
}

.reservation-cleaning-legend.is-completed {
    color: #3f7450;
    background: #e9f4ec;
}

.reservation-day-cell,
.reservation-split-cell {
    position: relative;
}

/*
 * Full-day reservations use an inner link so the cleaning marker can remain
 * a separate clickable link without nesting links.
 */
.reservation-cell-reservation-link {
    position: absolute;
    inset: 0;
    z-index: 1;
    display: flex;
    align-items: center;
    justify-content: center;
    min-width: 0;
    color: var(--lsr-ink);
    text-decoration: none;
}

.reservation-cell-reservation-link:hover {
    color: var(--lsr-forest-dark);
    background: rgba(47, 74, 58, .08);
}

/* Cleaning marker sits on the middle turnover line. */
.reservation-cleaning-icons {
    position: absolute;
    top: 50%;
    right: 2px;
    z-index: 6;
    display: flex;
    align-items: center;
    gap: 1px;
    transform: translateY(-50%);
    pointer-events: none;
}

/* On a same-day turnover, leave room for the turnover symbol. */
.reservation-split-cell.has-turnover .reservation-cleaning-icons {
    right: 18px;
}

.reservation-cleaning-icon {
    width: 23px;
    height: 23px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    pointer-events: auto;
    border: 1px solid rgba(0, 172, 230, .35);
    border-radius: 50%;
    color: #00ace6;
    background: #eefaff;
    box-shadow: 0 1px 2px rgba(0, 0, 0, .08);
    line-height: 1;
    text-decoration: none;
}

.reservation-cleaning-icon:hover,
.reservation-cleaning-icon:focus-visible {
    background: #dff6ff;
    transform: scale(1.08);
}

.reservation-cleaning-icon.is-same-day {
    border-color: rgba(0, 172, 230, .55);
}

.reservation-cleaning-icon.is-completed {
    border-color: rgba(63, 116, 80, .4);
    color: #3f7450;
    background: #e9f4ec;
}

.reservation-cleaning-icon.is-completed:hover,
.reservation-cleaning-icon.is-completed:focus-visible {
    background: #dcecdf;
}

.reservation-cleaning-svg {
    width: 16px;
    height: 17px;
    display: block;
}

.reservation-cleaning-drop-svg {
    fill: currentColor;
}

.reservation-cleaning-check-svg {
    fill: none;
    stroke: currentColor;
    stroke-width: 3;
    stroke-linecap: round;
    stroke-linejoin: round;
}

/* Highlight a cleaning task/card when linked to directly from the planner. */
.cleaning-task-card,
tr[id^="cleaning-task-"] {
    scroll-margin-top: 7rem;
}

tr[id^="cleaning-task-"]:target {
    outline: 3px solid rgba(47, 74, 58, .25);
    outline-offset: -3px;
}

.cleaning-task-card:target {
    outline: 3px solid rgba(47, 74, 58, .25);
    outline-offset: 3px;
}

@media (max-width: 1499.98px) {
    .reservation-cleaning-icon {
        width: 16px;
        height: 16px;
    }

    .reservation-cleaning-svg {
        width: 10px;
        height: 10px;
    }
}

/* ==========================================================================
   Reservation arrival labels spanning the visible stay
   ========================================================================== */

/*
 * Arrival text is allowed to extend across later occupied days, but its
 * container is limited to the stay itself so it never runs into checkout.
 */
.reservation-split-cell.has-arrival-label {
    overflow: visible;
    z-index: 3;
}

.reservation-arrival-label {
    position: absolute;
    top: 50%;
    left: 2px;
    z-index: 4;
    width: calc((var(--reservation-label-days) * 100%) - 4px);
    height: 50%;
    display: flex;
    align-items: center;
    padding: 0 .25rem;
    overflow: hidden;
    color: var(--lsr-ink);
    font-size: .62rem;
    font-weight: 800;
    line-height: 1;
    text-overflow: ellipsis;
    white-space: nowrap;
    pointer-events: none;
}

/*
 * The text overlay carries the visible arrival label, so the underlying
 * reservation half-cell remains clickable without duplicating the last name.
 */
.reservation-split-cell.has-arrival-label
.reservation-half-bottom.is-reserved {
    color: transparent;
}

/* Cleaning and turnover markers should remain above the arrival text. */
.reservation-split-turnover {
    z-index: 7;
}

.reservation-cleaning-icons {
    z-index: 8;
}

@media (min-width: 1500px) {
    .reservation-arrival-label {
        font-size: .68rem;
    }
}

@media (max-width: 1199.98px) {
    .reservation-arrival-label {
        font-size: .58rem;
    }
}

/* ==========================================================================
   Muted reservation colors
   Colors are visual identifiers only; they do not represent status/category.
   ========================================================================== */

.reservation-color-1 {
    --reservation-bg: #dce8df;
    --reservation-hover: #ccdcd0;
    --reservation-ink: #294233;
}

.reservation-color-2 {
    --reservation-bg: #dbe5ec;
    --reservation-hover: #cbd9e3;
    --reservation-ink: #2f4352;
}

.reservation-color-3 {
    --reservation-bg: #ebe2d3;
    --reservation-hover: #e0d3c0;
    --reservation-ink: #514331;
}

.reservation-color-4 {
    --reservation-bg: #e4deea;
    --reservation-hover: #d8cfe0;
    --reservation-ink: #493f55;
}

.reservation-color-5 {
    --reservation-bg: #eadbd6;
    --reservation-hover: #dfcbc4;
    --reservation-ink: #563e37;
}

.reservation-color-6 {
    --reservation-bg: #d9e8e5;
    --reservation-hover: #c9ddd9;
    --reservation-ink: #2d4945;
}

.reservation-color-7 {
    --reservation-bg: #eadde0;
    --reservation-hover: #dfcdd1;
    --reservation-ink: #563e44;
}

.reservation-color-8 {
    --reservation-bg: #e8e3c9;
    --reservation-hover: #dcd5b8;
    --reservation-ink: #504a2f;
}

/* Full occupied nights. */
.reservation-day-cell.is-reserved {
    color: var(--reservation-ink, var(--lsr-ink));
    background: var(--reservation-bg, #d9e8dd);
}

.reservation-day-cell.is-reserved:hover {
    color: var(--reservation-ink, var(--lsr-forest-dark));
    background: var(--reservation-hover, #c8ddce);
}

/* Arrival and departure half-cells can carry different reservation colors. */
.reservation-half.is-reserved {
    color: var(--reservation-ink, var(--lsr-ink));
    background: var(--reservation-bg, #d9e8dd);
}

a.reservation-half.is-reserved:hover {
    color: var(--reservation-ink, var(--lsr-forest-dark));
    background: var(--reservation-hover, #c8ddce);
}

/* Full-day inner reservation link inherits the reservation's color context. */
.reservation-cell-reservation-link {
    color: var(--reservation-ink, var(--lsr-ink));
}

.reservation-cell-reservation-link:hover {
    color: var(--reservation-ink, var(--lsr-forest-dark));
    background: rgba(255, 255, 255, .18);
}

/*
 * The spanning arrival label has no background of its own; it inherits the
 * same text tone as the reservation so it visually belongs to that block.
 */
.reservation-arrival-label {
    color: var(--reservation-ink, var(--lsr-ink));
}

/* ==========================================================================
   Cabin base hues for unreserved timeline cells
   These identify the cabin only. Reservation colors override them.
   ========================================================================== */

.reservation-timeline-row.cabin-theme-red {
    --cabin-open-bg: #fbf4f3;
    --cabin-open-border: #ecd8d5;
}

.reservation-timeline-row.cabin-theme-blue {
    --cabin-open-bg: #f2f7fb;
    --cabin-open-border: #d5e3ee;
}

.reservation-timeline-row.cabin-theme-yellow {
    --cabin-open-bg: #fbf9ed;
    --cabin-open-border: #e9e3c5;
}

/* Fully open days. */
.reservation-timeline-row[class*="cabin-theme-"]
.reservation-day-cell.is-open {
    background: var(--cabin-open-bg);
    border-color: var(--cabin-open-border);
}

/*
 * On arrival/departure days, tint only the unoccupied half. The occupied
 * half retains the guest reservation's assigned color.
 */
.reservation-timeline-row[class*="cabin-theme-"]
.reservation-half.is-open {
    background: var(--cabin-open-bg);
}

/* Keep past open days recognizable without making the cabin hue disappear. */
.reservation-timeline-row[class*="cabin-theme-"]
.reservation-day-cell.is-open.is-past,
.reservation-timeline-row[class*="cabin-theme-"]
.reservation-split-cell.is-past .reservation-half.is-open {
    background: var(--cabin-open-bg);
}

/* ==========================================================================
   Cabin title colors
   Stronger cabin identity in the sticky cabin-name column.
   ========================================================================== */

.reservation-timeline-fluid
.reservation-timeline-row.cabin-theme-red
.reservation-cabin-name {
    color: #633b38;
    background: #e7c9c6;
    border-right-color: #d2aaa5;
}

.reservation-timeline-fluid
.reservation-timeline-row.cabin-theme-blue
.reservation-cabin-name {
    color: #35546b;
    background: #c9ddeb;
    border-right-color: #a9c7dc;
}

.reservation-timeline-fluid
.reservation-timeline-row.cabin-theme-yellow
.reservation-cabin-name {
    color: #5d542e;
    background: #e9dfaa;
    border-right-color: #d5c77e;
}

/* Keep any secondary text inside the cabin title readable on the tint. */
.reservation-timeline-fluid
.reservation-timeline-row.cabin-theme-red
.reservation-cabin-name span {
    color: #7a514d;
}

.reservation-timeline-fluid
.reservation-timeline-row.cabin-theme-blue
.reservation-cabin-name span {
    color: #4d6e84;
}

.reservation-timeline-fluid
.reservation-timeline-row.cabin-theme-yellow
.reservation-cabin-name span {
    color: #746a3d;
}

/* ============================================================
   Reservation planner: edge drag/drop + guest request workflow
   CLEAN REPLACEMENT BLOCK
   ============================================================ */

.reservation-request-preview {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    padding: .85rem 1rem;
    border: 1px dashed rgba(122, 91, 44, .55);
    border-radius: .7rem;
    background: rgba(255, 248, 225, .72);
}

.reservation-request-preview-summary {
    min-width: 0;
}

.reservation-request-decision {
    padding: 1rem;
    border: 1px solid rgba(66, 96, 75, .2);
    border-radius: .75rem;
    background: rgba(248, 250, 248, .92);
}

.reservation-request-decision .alert {
    padding: .7rem .85rem;
}

.reservation-request-alternatives form {
    margin: 0;
}

/* Whole arrival/departure half-card is draggable. */
.reservation-edge-drag-surface {
    position: relative;
    cursor: ew-resize;
    user-select: none;
    -webkit-user-drag: none;
    touch-action: none;
}

.reservation-edge-drag-surface.is-arrival-edge {
    box-shadow:
        inset 4px 0 0 rgba(48, 76, 56, .28);
}

.reservation-edge-drag-surface.is-departure-edge {
    box-shadow:
        inset -4px 0 0 rgba(48, 76, 56, .28);
}

.reservation-edge-drag-surface.is-arrival-edge:hover,
.reservation-edge-drag-surface.is-arrival-edge.is-dragging {
    box-shadow:
        inset 5px 0 0 rgba(48, 76, 56, .68);
}

.reservation-edge-drag-surface.is-departure-edge:hover,
.reservation-edge-drag-surface.is-departure-edge.is-dragging {
    box-shadow:
        inset -5px 0 0 rgba(48, 76, 56, .68);
}

.reservation-edge-drag-surface.is-dragging {
    opacity: .82;
}

.reservation-drop-date.is-edge-drop-target {
    outline: 3px solid rgba(53, 103, 72, .7);
    outline-offset: -3px;
}

.reservation-day-cell,
.reservation-split-cell {
    position: relative;
}

.reservation-edge-legend,
.reservation-request-legend {
    display: inline-block;
    width: 14px;
    height: 10px;
    margin-right: 4px;
    vertical-align: -1px;
    border-radius: 3px;
}

.reservation-edge-legend {
    border-right: 4px solid rgba(48, 76, 56, .55);
    background: rgba(255, 255, 255, .95);
}

.reservation-request-legend {
    border: 2px dashed rgba(154, 108, 40, .75);
    background: rgba(255, 248, 225, .75);
}

.reservation-day-cell.is-focused-reservation,
.reservation-split-cell.is-focused-reservation {
    outline: 2px solid rgba(39, 79, 55, .7);
    outline-offset: -2px;
}

/* One neutral request row, immediately under the date header. */
.reservation-request-row {
    min-height: 60px;
    position: relative;
    z-index: 8;
    border-top: 1px dashed rgba(154, 108, 40, .38);
    border-bottom: 1px dashed rgba(154, 108, 40, .38);
    background: rgba(255, 249, 232, .9);
}

.reservation-request-row-heading {
    position: sticky;
    left: 0;
    z-index: 14;
    min-width: 0;
    display: flex;
    flex-direction: column;
    justify-content: center;
    padding: .4rem .75rem;
    border-right: 1px solid rgba(154, 108, 40, .28);
    background: #fff7e2;
    color: #704c1f;
}

.reservation-request-row-heading strong {
    font-size: .75rem;
    line-height: 1.1;
}

.reservation-request-row-heading span {
    margin-top: .12rem;
    color: #8b6a3f;
    font-size: .62rem;
    line-height: 1.1;
}

.reservation-request-row-cell {
    min-width: 0;
    min-height: 60px;
    position: relative;
    overflow: visible;
    border-right: 1px solid rgba(154, 108, 40, .16);
}

/*
 * This line represents request endpoints, not occupied nights.
 * It deliberately includes the departure column.
 */
.reservation-request-row-cell.is-requested-span::after {
    content: "";
    position: absolute;
    z-index: 2;
    top: 46px;
    left: 0;
    right: 0;
    border-top: 2px dashed rgba(154, 108, 40, .68);
    pointer-events: none;
}

/*
 * Exact-date pin. Even if the text spans neighboring narrow columns,
 * this vertical line identifies the actual arrival/departure column.
 */
.reservation-request-row-cell.is-requested-arrival-date::before,
.reservation-request-row-cell.is-requested-departure-date::before {
    content: "";
    position: absolute;
    z-index: 9;
    top: 31px;
    height: 16px;
    left: 50%;
    border-left: 2px solid rgba(113, 75, 25, .84);
    transform: translateX(-1px);
    pointer-events: none;
}

.reservation-request-row-flag {
    position: absolute;
    z-index: 20;
    top: 3px;
    left: 50%;
    transform: translateX(-50%);
    width: max-content;
    max-width: 132px;
    padding: 3px 7px;
    border: 1px solid rgba(133, 89, 29, .68);
    border-radius: .4rem;
    background: #fff4d4;
    color: #684617;
    font-size: 9px;
    line-height: 1.1;
    text-align: center;
    white-space: nowrap;
    box-shadow: 0 1px 3px rgba(88, 59, 18, .12);
}

.reservation-request-row-flag strong,
.reservation-request-row-flag small {
    display: block;
}

.reservation-request-row-flag small {
    margin-top: 1px;
    font-size: 8px;
    font-weight: 700;
    opacity: .8;
}

.reservation-request-row-flag.is-unchanged {
    border-style: dashed;
    background: #fffdf7;
    color: #786b57;
}

body.reservation-edge-dragging {
    cursor: ew-resize;
    user-select: none;
}

body.reservation-edge-dragging .reservation-cell-reservation-link,
body.reservation-edge-dragging .reservation-half {
    pointer-events: none;
}

.reservation-edge-drag-float {
    position: fixed;
    z-index: 9999;
    pointer-events: none;
    transform: translate(-50%, -120%);
    padding: .35rem .5rem;
    border-radius: .4rem;
    background: rgba(38, 54, 45, .95);
    color: #fff;
    font-size: .75rem;
    font-weight: 700;
    white-space: nowrap;
    box-shadow: 0 4px 14px rgba(0, 0, 0, .18);
}

@media (max-width: 767.98px) {
    .reservation-request-preview {
        align-items: flex-start;
        flex-direction: column;
    }

    .reservation-edge-drag-surface.is-arrival-edge {
        box-shadow:
            inset 5px 0 0 rgba(48, 76, 56, .32);
    }

    .reservation-edge-drag-surface.is-departure-edge {
        box-shadow:
            inset -5px 0 0 rgba(48, 76, 56, .32);
    }

    .reservation-request-row-flag {
        max-width: 114px;
        font-size: 8px;
        padding: 3px 5px;
    }
}

/* ============================================================
   Guest request contact-change review
   APPEND to assets/css/site.css
   ============================================================ */

.guest-contact-change {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: .45rem;
    margin-top: .2rem;
}

.guest-contact-change > span[aria-hidden="true"] {
    color: var(--bs-secondary-color);
    font-weight: 700;
}

/* ============================================================
   Living Springs Ranch Contacts
   APPEND to assets/css/site.css
   ============================================================ */

.contact-tag-list {
    display: flex;
    flex-wrap: wrap;
    gap: .35rem;
}

.contact-tag {
    display: inline-flex;
    align-items: center;
    padding: .18rem .5rem;
    border: 1px solid rgba(57, 78, 66, .18);
    border-radius: 999px;
    background: rgba(239, 244, 240, .9);
    color: #3f5548;
    font-size: .72rem;
    font-weight: 700;
    line-height: 1.2;
}

.contact-tag-picker {
    display: flex;
    flex-wrap: wrap;
    gap: .55rem;
}

.contact-tag-option {
    display: inline-flex;
    align-items: center;
    gap: .35rem;
    margin: 0;
    padding: .45rem .7rem;
    border: 1px solid rgba(57, 78, 66, .16);
    border-radius: .6rem;
    background: rgba(248, 250, 248, .9);
}

.contact-tag-option .form-check-input {
    margin: 0;
}

.contact-detail-list {
    display: grid;
    gap: .85rem;
}

.contact-detail-list > div {
    padding-bottom: .75rem;
    border-bottom: 1px solid rgba(0, 0, 0, .08);
}

.contact-detail-list > div:last-child {
    padding-bottom: 0;
    border-bottom: 0;
}

.contact-detail-list dt {
    margin-bottom: .18rem;
    color: var(--bs-secondary-color);
    font-size: .78rem;
    font-weight: 600;
}

.contact-detail-list dd {
    margin: 0;
}

.contact-mailing-block {
    padding: 1rem;
    border: 1px solid rgba(0, 0, 0, .1);
    border-radius: .65rem;
    background: #fff;
    font-style: normal;
    line-height: 1.55;
}

.contact-history-list {
    display: grid;
    gap: .8rem;
}

.contact-history-item {
    padding: .9rem 1rem;
    border: 1px solid rgba(0, 0, 0, .09);
    border-radius: .65rem;
    background: rgba(255, 255, 255, .72);
}

.contact-table td {
    vertical-align: middle;
}

@media (max-width: 767.98px) {
    .contact-tag-option {
        flex: 1 1 calc(50% - .55rem);
    }
}

/* ============================================================
   Cabin Planner: cleaner cabin drag/drop UI
   REPLACE the previous "Cabin Planner: vertical cabin drag/drop"
   CSS block with this one.
   ============================================================ */

/*
 * Cabin moves remain draggable, but visually behave like ordinary links.
 * The left/right arrival/departure edge surfaces keep their separate
 * horizontal-resize cursor from the existing timeline-edge CSS.
 */
.reservation-cabin-drag-surface {
    cursor: pointer;
    -webkit-user-drag: element;
}

.reservation-cell-reservation-link.reservation-cabin-drag-surface {
    user-select: none;
    cursor: pointer;
}

.reservation-arrival-label-text {
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    color: inherit;
    text-decoration: none;
    cursor: pointer;
    pointer-events: auto;
}

.reservation-arrival-label-text:hover {
    color: inherit;
    text-decoration: underline;
}

/*
 * The label container itself does not cover the date-edge controls.
 * Only the guest-name text is interactive, so the rest of the first/last
 * day still keeps the horizontal date-change cursor.
 */
.reservation-arrival-label {
    pointer-events: none;
}

.reservation-cabin-drop-row {
    position: relative;
}

.reservation-cabin-drop-row.is-cabin-drop-target {
    outline: 3px solid rgba(50, 112, 72, .8);
    outline-offset: -3px;
    background: rgba(213, 235, 220, .35);
}

.reservation-cabin-drop-row.is-cabin-drop-source {
    opacity: .72;
}

.reservation-cabin-drag-surface.is-cabin-dragging {
    opacity: .55;
}

body.reservation-cabin-dragging
.reservation-cabin-drop-row:not(.is-cabin-drop-source) {
    transition:
        outline-color .12s ease,
        background-color .12s ease;
}

/* ============================================================
   Cabin Planner: staff-proposed alternative dates / soft holds
   REPLACE the previous CSS block with this same heading.
   ============================================================ */

.reservation-proposal-composer {
    margin-top: .25rem;
}

.reservation-proposal-composer > summary {
    display: inline-flex;
    align-items: center;
    list-style: none;
    cursor: pointer;
}

.reservation-proposal-composer > summary::-webkit-details-marker {
    display: none;
}

.reservation-proposal-composer-body {
    padding: 1rem;
    border: 1px solid rgba(78, 96, 84, .22);
    border-radius: .75rem;
    background: rgba(250, 251, 250, .96);
}

.reservation-current-proposals {
    padding-top: .9rem;
    border-top: 1px solid rgba(78, 96, 84, .15);
}

.reservation-current-proposal {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: .75rem 1rem;
    padding: .75rem 0;
    border-bottom: 1px solid rgba(78, 96, 84, .12);
}

.reservation-current-proposal:last-child {
    border-bottom: 0;
}


/* ------------------------------------------------------------
   Legend
   ------------------------------------------------------------ */

.reservation-proposal-legend {
    display: inline-block;
    width: 14px;
    height: 10px;
    margin-right: 4px;
    vertical-align: -1px;
    border: 2px dashed rgba(91, 105, 95, .65);
    border-radius: 3px;
    background: rgba(232, 238, 233, .9);
}


/* ------------------------------------------------------------
   Proposal row uses the SAME cabin family as the cabin row
   ------------------------------------------------------------ */

.reservation-proposal-row {
    --proposal-row-bg: #f6f7f6;
    --proposal-row-border: #dde2de;
    --proposal-heading-bg: #e4e8e5;
    --proposal-heading-color: #536056;
    --proposal-band-bg: #d9e1db;
    --proposal-band-border: #8ba092;
    --proposal-chip-bg: #f8faf8;
    --proposal-chip-color: #445149;

    min-height: 32px;
    background: var(--proposal-row-bg);
    border-bottom: 1px solid var(--proposal-row-border);
}

/* Red Cabin */
.reservation-proposal-row.cabin-theme-red {
    --proposal-row-bg: #fbf4f3;
    --proposal-row-border: #ecd8d5;
    --proposal-heading-bg: #e7c9c6;
    --proposal-heading-color: #633b38;
    --proposal-band-bg: #efd8d5;
    --proposal-band-border: #bc8882;
    --proposal-chip-bg: #fbf2f1;
    --proposal-chip-color: #633b38;
}

/* Blue Cabin */
.reservation-proposal-row.cabin-theme-blue {
    --proposal-row-bg: #f2f7fb;
    --proposal-row-border: #d5e3ee;
    --proposal-heading-bg: #c9ddeb;
    --proposal-heading-color: #35546b;
    --proposal-band-bg: #d7e6f0;
    --proposal-band-border: #7fa8c3;
    --proposal-chip-bg: #f1f7fb;
    --proposal-chip-color: #35546b;
}

/* Yellow Cabin */
.reservation-proposal-row.cabin-theme-yellow {
    --proposal-row-bg: #fbf9ed;
    --proposal-row-border: #e9e3c5;
    --proposal-heading-bg: #e9dfaa;
    --proposal-heading-color: #5d542e;
    --proposal-band-bg: #eee6bd;
    --proposal-band-border: #b8a951;
    --proposal-chip-bg: #fbf8e9;
    --proposal-chip-color: #5d542e;
}

.reservation-proposal-row-heading {
    display: flex;
    flex-direction: column;
    justify-content: center;
    min-width: 0;
    padding: 3px 8px;
    border-right: 1px solid var(--proposal-row-border);
    color: var(--proposal-heading-color);
    background: var(--proposal-heading-bg);
    font-size: .74rem;
    line-height: 1.05;
}

.reservation-proposal-row-heading strong {
    font-size: .76rem;
}

.reservation-proposal-row-heading span {
    margin-top: 2px;
    color: inherit;
    font-size: .66rem;
    opacity: .78;
}

.reservation-proposal-cell {
    position: relative;
    display: flex;
    flex-direction: column;
    justify-content: center;
    gap: 2px;
    min-width: 0;
    min-height: 30px;
    overflow: visible;
    border-right: 1px solid var(--proposal-row-border);
    background: var(--proposal-row-bg);
}

.reservation-proposal-cell.has-proposal {
    background: var(--proposal-row-bg);
}

.reservation-proposal-cell.has-multiple-proposals {
    box-shadow:
        inset 0 0 0 999px rgba(80, 90, 83, .035);
}


/* ------------------------------------------------------------
   Individual proposal item
   ------------------------------------------------------------ */

.reservation-proposal-segment {
    position: relative;
    display: flex;
    align-items: stretch;
    min-width: 0;
    min-height: 14px;
    margin: 1px 0;
}

.reservation-proposal-band {
    position: relative;
    display: block;
    flex: 1 1 auto;
    min-width: 0;
    min-height: 12px;
    border-top: 1px dashed var(--proposal-band-border);
    border-bottom: 1px dashed var(--proposal-band-border);
    background: var(--proposal-band-bg);
    color: inherit;
    text-decoration: none;
    cursor: pointer;
    user-select: none;
}

.reservation-proposal-band:hover,
.reservation-proposal-band:focus-visible {
    filter: brightness(.97);
    color: inherit;
    text-decoration: none;
}

.reservation-proposal-band.is-current-guest {
    border-top-width: 2px;
    border-bottom-width: 2px;
}

.reservation-proposal-segment.is-focused-proposal {
    outline: 2px solid var(--proposal-band-border);
    outline-offset: 1px;
}

.reservation-proposal-chip {
    position: absolute;
    z-index: 8;
    top: 50%;
    left: 2px;
    transform: translateY(-50%);
    max-width: max(70px, calc(100vw / 7));
    overflow: hidden;
    padding: 1px 4px;
    border: 1px solid var(--proposal-band-border);
    border-radius: 4px;
    background: var(--proposal-chip-bg);
    color: var(--proposal-chip-color);
    font-size: .63rem;
    font-weight: 700;
    line-height: 1.2;
    text-overflow: ellipsis;
    white-space: nowrap;
    pointer-events: none;
}

/*
 * Checkout cell is visible but not shown as an occupied overnight.
 * This gives the proposal an obvious endpoint like a confirmed reservation.
 */
.reservation-proposal-checkout-marker {
    display: block;
    flex: 1 1 auto;
    min-width: 0;
    min-height: 12px;
    border-left: 1px dashed var(--proposal-band-border);
    background:
        linear-gradient(
            90deg,
            var(--proposal-band-bg) 0,
            var(--proposal-band-bg) 28%,
            transparent 28%,
            transparent 100%
        );
}


/* ------------------------------------------------------------
   Start / end date drag surfaces
   No icon; first and last edges use the horizontal resize cursor.
   ------------------------------------------------------------ */

.reservation-proposal-edge {
    position: absolute;
    z-index: 16;
    top: -2px;
    bottom: -2px;
    width: 9px;
    cursor: ew-resize;
}

.reservation-proposal-edge-start {
    left: -3px;
}

.reservation-proposal-edge-end {
    left: -3px;
}

.reservation-proposal-edge::after {
    content: "";
    position: absolute;
    top: 2px;
    bottom: 2px;
    left: 4px;
    width: 2px;
    border-radius: 2px;
    background: var(--proposal-band-border);
    opacity: .72;
}

.reservation-proposal-edge.is-proposal-edge-dragging {
    opacity: .45;
}

.reservation-proposal-cell.is-proposal-edge-target {
    outline: 2px solid var(--proposal-band-border);
    outline-offset: -2px;
}


/* ------------------------------------------------------------
   Vertical cabin dragging
   ------------------------------------------------------------ */

.proposal-cabin-drag-surface.is-proposal-cabin-dragging {
    opacity: .52;
}

.reservation-cabin-drop-row.is-proposal-cabin-drop-target,
.reservation-proposal-row.is-proposal-cabin-drop-target {
    outline: 3px solid rgba(54, 105, 69, .68);
    outline-offset: -3px;
}

.reservation-proposal-row.is-proposal-cabin-source {
    opacity: .72;
}


/* ------------------------------------------------------------
   Existing timeline-selection mode for composing a proposal
   ------------------------------------------------------------ */

body.reservation-proposal-selection-active
.reservation-cabin-drop-row
.reservation-drop-date {
    cursor: crosshair;
}

.reservation-drop-date.is-proposal-selection {
    outline: 3px solid rgba(185, 128, 38, .78);
    outline-offset: -3px;
}

.reservation-drop-date.is-proposal-selection-start {
    box-shadow:
        inset 5px 0 0 rgba(148, 91, 16, .9);
}

.reservation-drop-date.is-proposal-selection-end {
    box-shadow:
        inset -5px 0 0 rgba(148, 91, 16, .9);
}

#proposalTimelineSelectionStatus.is-active {
    color: #765017;
    font-weight: 700;
}

@media (max-width: 767.98px) {
    .reservation-proposal-composer-body {
        padding: .8rem;
    }

    .reservation-current-proposal {
        align-items: flex-start;
    }
}

/* ============================================================
   Cabin Planner: clickable proposed date holds
   APPEND to assets/css/site.css
   ============================================================ */

a.reservation-proposal-band {
    color: inherit;
    text-decoration: none;
    cursor: pointer;
}

a.reservation-proposal-band:hover,
a.reservation-proposal-band:focus-visible {
    background: rgba(255, 213, 86, .92);
    color: inherit;
    text-decoration: none;
}

a.reservation-proposal-band:focus-visible {
    outline: 2px solid currentColor;
    outline-offset: 1px;
}

/* ============================================================
   Cabin Planner quick-create + reservation Contacts picker
   APPEND to assets/css/site.css
   ============================================================ */

.reservation-new-start-cell,
.reservation-new-start-half {
    cursor: pointer;
}

.reservation-new-start-cell:hover,
.reservation-new-start-half:hover {
    background-image:
        linear-gradient(
            rgba(65, 119, 78, .10),
            rgba(65, 119, 78, .10)
        );
}

.reservation-drop-date.is-new-reservation-start {
    box-shadow:
        inset 4px 0 0 rgba(45, 104, 64, .9);
}

.reservation-drop-date.is-new-reservation-range {
    background-image:
        linear-gradient(
            rgba(103, 159, 117, .17),
            rgba(103, 159, 117, .17)
        );
}

.reservation-drop-date.is-new-reservation-checkout {
    box-shadow:
        inset -4px 0 0 rgba(45, 104, 64, .9);
}

body.reservation-new-selection-active
.reservation-timeline-row
.reservation-drop-date {
    cursor: pointer;
}

body.reservation-new-selection-active
.reservation-timeline-row.is-new-reservation-source-row {
    outline: 2px solid rgba(45, 104, 64, .32);
    outline-offset: -2px;
}

.reservation-contact-suggestions {
    position: absolute;
    z-index: 30;
    top: calc(100% + .25rem);
    right: 0;
    left: 0;
    max-height: 340px;
    overflow-y: auto;
}

.reservation-contact-suggestion {
    display: block;
    width: 100%;
    padding: .65rem .8rem;
    border: 0;
    border-bottom: 1px solid rgba(0, 0, 0, .07);
    background: #fff;
    color: inherit;
    text-align: left;
}

.reservation-contact-suggestion:last-child {
    border-bottom: 0;
}

.reservation-contact-suggestion:hover,
.reservation-contact-suggestion:focus-visible {
    background: rgba(237, 244, 239, .95);
}

.reservation-contact-suggestion-name {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: .4rem;
    font-weight: 700;
}

.reservation-contact-suggestion-meta {
    margin-top: .1rem;
    color: var(--bs-secondary-color);
    font-size: .78rem;
    line-height: 1.35;
}

.reservation-contact-returning {
    font-size: .65rem;
}

@media (max-width: 767.98px) {
    .reservation-contact-suggestions {
        max-height: 280px;
    }
}

/* ============================================================
   Cabin Planner: automatic cleaning / proposal cleaning
   REPLACE the previous CSS block with this same heading.
   ============================================================ */

.reservation-cleaning-legend-action {
    display: inline-flex;
    align-items: center;
    padding: .2rem .5rem;
    border: 1px solid rgba(67, 111, 82, .24);
    border-radius: .45rem;
    background: rgba(239, 246, 241, .78);
    color: inherit;
    font: inherit;
    font-size: .78rem;
    font-weight: 700;
    cursor: pointer;
}

.reservation-cleaning-legend-action:hover,
.reservation-cleaning-legend-action:focus-visible,
.reservation-cleaning-legend-action.is-active {
    background: rgba(220, 239, 226, .95);
    border-color: rgba(67, 111, 82, .46);
}

.reservation-timeline-cleaning-editor {
    position: relative;
    z-index: 25;
}

.reservation-cleaning-icon.cleaning-task-drag-surface,
.reservation-cleaning-icon.proposal-cleaning-drag-surface {
    cursor: grab;
}

.reservation-cleaning-icon.cleaning-task-drag-surface {
    touch-action: none;
}

body.reservation-cleaning-pointer-dragging,
body.reservation-cleaning-pointer-dragging * {
    cursor: grabbing !important;
    user-select: none !important;
}

.reservation-cleaning-icon.cleaning-task-drag-surface:active,
.reservation-cleaning-icon.proposal-cleaning-drag-surface:active {
    cursor: grabbing;
}


/* ------------------------------------------------------------
   Proposed cleaning drops
   ------------------------------------------------------------ */

.reservation-cleaning-icon.is-proposed-cleaning,
.reservation-cleaning-legend.is-proposed-cleaning {
    border: 1px dashed rgba(84, 84, 164, .75);
    color: #ab6ff9;
    background: #f1f0ff;
}

.reservation-cleaning-icon.is-proposed-cleaning {
    border-radius: 50%;
    opacity: .9;
}

.reservation-cleaning-icon.is-proposed-cleaning:hover,
.reservation-cleaning-icon.is-proposed-cleaning:focus-visible {
    background: #e6e4ff;
}

/*
 * BEFORE and AFTER share the proposed-purple family, but the pre-cleaning
 * marker is slightly greener so two drops on the same proposal can be
 * distinguished without requiring text.
 */
.reservation-cleaning-icon.is-proposed-pre-cleaning {
    border-color: rgba(187, 128, 26, 0.78);
    color: #ab6ff9;
    background: #f1f0ff;
}

.reservation-cleaning-icon.is-proposed-pre-cleaning:hover,
.reservation-cleaning-icon.is-proposed-pre-cleaning:focus-visible {
    background: #ddf1ed;
}

.reservation-cleaning-icon.is-proposed-post-cleaning {
    border-color: rgba(187, 128, 26, 0.78);
    color: #ab6ff9;
    background: #f1f0ff;
}


/* ------------------------------------------------------------
   A REAL cleaning that would be displaced by a pending proposal
   ------------------------------------------------------------ */

.reservation-cleaning-icon.is-proposal-displaced-cleaning,
.reservation-cleaning-legend.is-proposal-displaced-cleaning {
    border-color: rgba(181, 117, 31, .78);
    color: #a76a18;
    background: #fff4df;
}

.reservation-cleaning-icon.is-proposal-displaced-cleaning {
    box-shadow:
        0 0 0 2px rgba(207, 145, 51, .18),
        0 1px 2px rgba(0, 0, 0, .08);
}

.reservation-cleaning-icon.is-proposal-displaced-cleaning:hover,
.reservation-cleaning-icon.is-proposal-displaced-cleaning:focus-visible {
    background: #ffe9c2;
}


/* ------------------------------------------------------------
   Extra cleaning
   ------------------------------------------------------------ */

.reservation-cleaning-icon.is-extra-cleaning {
    box-shadow: 0 0 0 1px rgba(86, 117, 96, .28);
}

.reservation-proposal-cleaning-icons {
    z-index: 18;
}


/* ------------------------------------------------------------
   Drag/drop targeting
   ------------------------------------------------------------ */

.reservation-drop-date.is-cleaning-drop-target,
.reservation-proposal-cell.is-cleaning-drop-target {
    outline: 3px solid rgba(45, 108, 67, .7);
    outline-offset: -3px;
}

.cleaning-task-drag-surface.is-cleaning-dragging,
.proposal-cleaning-drag-surface.is-cleaning-dragging {
    opacity: .45;
}


/* ------------------------------------------------------------
   Add Extra Cleaning mode
   ------------------------------------------------------------ */

body.reservation-extra-cleaning-mode
.reservation-cabin-drop-row
.reservation-drop-date {
    cursor: crosshair !important;
}

body.reservation-extra-cleaning-mode
.reservation-cabin-drop-row
.reservation-drop-date:not(.is-past):hover {
    outline: 3px solid rgba(48, 118, 83, .72);
    outline-offset: -3px;
}

.reservation-drop-date.is-extra-cleaning-selected {
    outline: 3px solid rgba(48, 118, 83, .85);
    outline-offset: -3px;
    background-image:
        linear-gradient(
            rgba(89, 164, 112, .18),
            rgba(89, 164, 112, .18)
        );
}

@media (max-width: 767.98px) {
    .reservation-timeline-cleaning-editor .row {
        --bs-gutter-y: .75rem;
    }
}

/* ============================================================
   Cabin Planner: horizontal / vertical orientation toggle
   2026-09-06
   ============================================================ */

.reservation-view-toggle {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: .55rem;
    margin: -.2rem 0 .75rem;
    color: var(--lsr-muted);
    font-size: .82rem;
    font-weight: 700;
}

.reservation-view-toggle .form-check-input {
    width: 2.7rem;
    height: 1.45rem;
    margin: 0;
    cursor: pointer;
}

.reservation-view-toggle-option {
    transition: color 120ms ease-out,
                font-weight 120ms ease-out;
}

.reservation-view-toggle-option.is-active {
    color: var(--lsr-forest-dark);
    font-weight: 900;
}

/*
 * Vertical mode transposes the existing live planner DOM rather than
 * rendering a second copy. Date headings become the first column; the
 * existing cabin rows become cabin columns.
 */
.reservation-timeline.is-vertical {
    display: grid;
    grid-template-columns: var(
        --reservation-vertical-columns,
        minmax(78px, 88px) repeat(3, minmax(125px, 1fr))
    );
    grid-auto-rows: minmax(64px, auto);
    width: 100%;
    min-width: max(
        100%,
        var(--reservation-vertical-min-width, 480px)
    );
    align-items: stretch;
}

.reservation-timeline.is-vertical
.reservation-timeline-header,
.reservation-timeline.is-vertical
.reservation-timeline-row {
    display: contents;
}

.reservation-timeline.is-vertical
.reservation-cabin-heading,
.reservation-timeline.is-vertical
.reservation-day-heading,
.reservation-timeline.is-vertical
.reservation-request-row-heading,
.reservation-timeline.is-vertical
.reservation-request-row-cell,
.reservation-timeline.is-vertical
.reservation-cabin-name,
.reservation-timeline.is-vertical
.reservation-cabin-drop-row > .reservation-drop-date,
.reservation-timeline.is-vertical
.reservation-proposal-row-heading,
.reservation-timeline.is-vertical
.reservation-proposal-cell {
    grid-column: var(--reservation-vertical-column);
    grid-row: var(--reservation-vertical-row);
    min-width: 0;
}

/* Top-left corner becomes the Date heading. */
.reservation-timeline.is-vertical
.reservation-cabin-heading {
    position: sticky;
    top: 0;
    left: 0;
    z-index: 16;
    min-height: 48px;
    align-items: center;
    justify-content: center;
    padding: .45rem .35rem;
    border-right: 1px solid var(--lsr-border);
    border-bottom: 1px solid var(--lsr-border);
    background: #f5f6f3;
    text-align: center;
}

/* Dates run down the left edge and remain visible while scrolling cabins. */
.reservation-timeline.is-vertical
.reservation-day-heading {
    position: sticky;
    top: auto;
    left: 0;
    z-index: 12;
    min-height: 64px;
    padding: .35rem .25rem;
    border-right: 1px solid var(--lsr-border);
    border-bottom: 1px solid var(--lsr-border);
    background: #f7f8f5;
}

.reservation-timeline.is-vertical
.reservation-day-heading.is-weekend {
    background: #eef0ec;
}

.reservation-timeline.is-vertical
.reservation-day-heading.is-today {
    background: #ffe08a;
}

.reservation-timeline.is-vertical
.reservation-day-heading small {
    top: .2rem;
    left: .25rem;
}

/* Cabin names become the top headings for the cabin columns. */
.reservation-timeline.is-vertical
.reservation-cabin-name,
.reservation-timeline.is-vertical
.reservation-request-row-heading {
    position: sticky;
    top: 0;
    left: auto;
    z-index: 14;
    min-height: 48px;
    justify-content: center;
    padding: .45rem .5rem;
    border-right: 1px solid var(--lsr-border);
    border-bottom: 1px solid var(--lsr-border);
    text-align: center;
}

.reservation-timeline.is-vertical
.reservation-cabin-name span,
.reservation-timeline.is-vertical
.reservation-request-row-heading span {
    display: none;
}

/* Every date/cabin intersection becomes a normal vertical planner cell. */
.reservation-timeline.is-vertical
.reservation-cabin-drop-row > .reservation-drop-date {
    min-height: 64px;
    border-right: 1px solid var(--lsr-border);
    border-bottom: 1px solid var(--lsr-border);
}

.reservation-timeline.is-vertical
.reservation-day-cell,
.reservation-timeline.is-vertical
.reservation-split-cell {
    min-height: 64px;
}

.reservation-timeline.is-vertical
.reservation-cell-name,
.reservation-timeline.is-vertical
.reservation-arrival-label-text {
    white-space: normal;
    line-height: 1.05;
    text-align: center;
}

/* Guest-request data becomes an optional column immediately after Date. */
.reservation-timeline.is-vertical
.reservation-request-row-heading {
    color: #704c1f;
    background: #fff7e2;
}

.reservation-timeline.is-vertical
.reservation-request-row-cell {
    min-height: 64px;
    overflow: visible;
    border-right: 1px solid rgba(154, 108, 40, .18);
    border-bottom: 1px dashed rgba(154, 108, 40, .28);
    background: rgba(255, 249, 232, .56);
}

/* The requested span reads vertically when dates run top-to-bottom. */
.reservation-timeline.is-vertical
.reservation-request-row-cell.is-requested-span::after {
    top: 0;
    right: auto;
    bottom: 0;
    left: 50%;
    border-top: 0;
    border-left: 2px dashed rgba(154, 108, 40, .68);
}

.reservation-timeline.is-vertical
.reservation-request-row-cell.is-requested-arrival-date::before,
.reservation-timeline.is-vertical
.reservation-request-row-cell.is-requested-departure-date::before {
    top: 50%;
    left: calc(50% - 8px);
    width: 16px;
    height: 0;
    border-top: 2px solid rgba(113, 75, 25, .84);
    border-left: 0;
    transform: none;
}

.reservation-timeline.is-vertical
.reservation-request-row-flag {
    top: 3px;
    max-width: calc(100% - 8px);
    white-space: normal;
}

/*
 * Proposal cells share the same date/cabin grid square as the real cabin
 * cell, but sit as a compact strip along its bottom edge. This keeps a
 * proposal visually attached to its cabin without doubling every date row.
 */
.reservation-timeline.is-vertical
.reservation-proposal-row-heading {
    display: none;
}

.reservation-timeline.is-vertical
.reservation-proposal-cell {
    z-index: 7;
    align-self: end;
    min-height: 0;
    padding-top: 1px;
    overflow: visible;
    border-right: 0;
    border-top: 1px dashed var(--proposal-row-border);
    background: transparent;
    pointer-events: none;
}

.reservation-timeline.is-vertical
.reservation-proposal-cell:not(.has-proposal) {
    border-top-color: transparent;
}

.reservation-timeline.is-vertical
.reservation-proposal-cell .reservation-proposal-segment,
.reservation-timeline.is-vertical
.reservation-proposal-cell button,
.reservation-timeline.is-vertical
.reservation-proposal-cell a,
.reservation-timeline.is-vertical
.reservation-proposal-cell .reservation-cleaning-icons {
    pointer-events: auto;
}

/* Row wrapper borders do not render with display:contents. */
.reservation-timeline.is-vertical
.reservation-timeline-row + .reservation-timeline-row {
    border-top: 0;
}

@media (max-width: 767.98px) {
    .reservation-view-toggle {
        justify-content: center;
        margin-top: 0;
        font-size: .86rem;
    }

    .reservation-view-toggle .form-check-input {
        width: 3rem;
        height: 1.6rem;
    }

    .reservation-timeline.is-vertical
    .reservation-day-heading {
        min-height: 68px;
    }

    .reservation-timeline.is-vertical
    .reservation-cabin-drop-row > .reservation-drop-date,
    .reservation-timeline.is-vertical
    .reservation-day-cell,
    .reservation-timeline.is-vertical
    .reservation-split-cell,
    .reservation-timeline.is-vertical
    .reservation-request-row-cell {
        min-height: 68px;
    }
}


/* ============================================================
   Cabin Planner refinement: sticky vertical header, date drag,
   and desktop vertical-width resize
   2026-09-06
   ============================================================ */

.reservation-timeline-frame {
    position: relative;
    width: 100%;
    max-width: 100%;
    margin-inline: auto;
}

/*
 * The date headings themselves are now the timeline navigation control.
 * Horizontal view keeps normal vertical touch scrolling available.
 */
.reservation-date-nav-handle {
    cursor: grab;
    user-select: none;
    -webkit-user-select: none;
    touch-action: pan-y;
}

.reservation-date-nav-handle:active,
.reservation-date-nav-handle.is-date-nav-dragging {
    cursor: grabbing;
}

.reservation-date-nav-handle:focus-visible {
    z-index: 20;
    outline: 3px solid rgba(47, 74, 58, .28);
    outline-offset: -3px;
}

.reservation-timeline.is-date-nav-dragging
.reservation-date-nav-handle {
    background-image:
        linear-gradient(
            rgba(47, 74, 58, .08),
            rgba(47, 74, 58, .08)
        );
}

.reservation-date-drag-feedback {
    position: fixed;
    z-index: 2200;
    min-width: 8.5rem;
    padding: .36rem .72rem;
    border: 1px solid rgba(47, 74, 58, .22);
    border-radius: 999px;
    color: var(--lsr-forest-dark);
    background: rgba(255, 255, 255, .97);
    box-shadow: 0 .35rem .9rem rgba(31, 50, 40, .16);
    font-size: .88rem;
    font-weight: 900;
    line-height: 1.2;
    text-align: center;
    white-space: nowrap;
    pointer-events: none;
}

.reservation-date-drag-feedback.is-horizontal {
    transform: translateX(-50%);
}

.reservation-date-drag-feedback.is-vertical {
    transform: translateY(-50%);
}

/*
 * In vertical mode the page itself should do the vertical scrolling.
 * Removing the old overflow container is what allows the cabin-name row
 * to remain sticky against the browser viewport as the 31 dates pass by.
 */
.reservation-timeline-frame.is-vertical {
    width: min(
        100%,
        var(--reservation-vertical-frame-width, 100%)
    );
}

.reservation-timeline-frame.is-vertical
.reservation-timeline-scroll,
.reservation-timeline-scroll.is-vertical {
    overflow: visible;
    padding-bottom: 0;
}

.reservation-timeline.is-vertical {
    width: 100%;
    min-width: 0;
    overflow: visible;
    grid-template-columns: var(
        --reservation-vertical-columns,
        minmax(62px, 76px) repeat(3, minmax(0, 1fr))
    );
}

/* In vertical mode, this column is intentionally the up/down drag zone. */
.reservation-timeline.is-vertical
.reservation-date-nav-handle {
    cursor: grab;
    touch-action: pan-x;
}

/*
 * Sticky top row: Date corner, optional Guest Request heading, and all
 * cabin names remain visible as the page scrolls down through dates.
 */
.reservation-timeline.is-vertical
.reservation-cabin-heading,
.reservation-timeline.is-vertical
.reservation-request-row-heading,
.reservation-timeline.is-vertical
.reservation-cabin-name {
    top: 0;
    z-index: 40;
    box-shadow: 0 2px 0 rgba(47, 74, 58, .14),
                0 .3rem .55rem rgba(31, 50, 40, .07);
}

.reservation-timeline.is-vertical
.reservation-cabin-heading {
    z-index: 45;
}

/* Keep the left date labels above ordinary cells if widths get tight. */
.reservation-timeline.is-vertical
.reservation-day-heading {
    z-index: 18;
}

/* Compact cabin headings stay legible when the desktop planner is narrowed. */
.reservation-timeline.is-vertical
.reservation-cabin-name strong,
.reservation-timeline.is-vertical
.reservation-request-row-heading strong {
    display: block;
    max-width: 100%;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

/* Desktop side resize handles. Hidden in horizontal mode and on phones. */
.reservation-timeline-resize-handle {
    display: none;
}

@media (min-width: 992px) {
    .reservation-timeline-frame.is-vertical
    .reservation-timeline-resize-handle {
        position: absolute;
        z-index: 60;
        top: 0;
        bottom: 0;
        display: block;
        width: 16px;
        cursor: ew-resize;
        touch-action: none;
        user-select: none;
    }

    .reservation-timeline-frame.is-vertical
    .reservation-timeline-resize-handle.is-left {
        left: 0;
    }

    .reservation-timeline-frame.is-vertical
    .reservation-timeline-resize-handle.is-right {
        right: 0;
    }

    .reservation-timeline-frame.is-vertical
    .reservation-timeline-resize-handle::after {
        content: "";
        position: absolute;
        top: 4.25rem;
        bottom: 1rem;
        left: 50%;
        width: 3px;
        border-radius: 999px;
        background: rgba(47, 74, 58, .16);
        transform: translateX(-50%);
        transition: background 120ms ease-out,
                    width 120ms ease-out;
    }

    .reservation-timeline-frame.is-vertical
    .reservation-timeline-resize-handle:hover::after,
    .reservation-timeline-frame.is-vertical
    .reservation-timeline-resize-handle:focus-visible::after,
    .reservation-timeline-frame.is-resizing
    .reservation-timeline-resize-handle::after {
        width: 5px;
        background: rgba(47, 74, 58, .52);
    }

    .reservation-timeline-frame.is-vertical
    .reservation-timeline-resize-handle:focus-visible {
        outline: 3px solid rgba(47, 74, 58, .22);
        outline-offset: 1px;
    }
}

@media (max-width: 767.98px) {
    /* The vertical planner now fits the phone width instead of forcing x-scroll. */
    .reservation-timeline-frame.is-vertical,
    .reservation-timeline.is-vertical {
        width: 100%;
        min-width: 0;
    }

    .reservation-timeline.is-vertical
    .reservation-cabin-name,
    .reservation-timeline.is-vertical
    .reservation-request-row-heading {
        padding-inline: .3rem;
        font-size: .72rem;
    }

    .reservation-timeline.is-vertical
    .reservation-cabin-name strong,
    .reservation-timeline.is-vertical
    .reservation-request-row-heading strong {
        white-space: normal;
        line-height: 1.05;
    }
}

@media (prefers-reduced-motion: reduce) {
    .reservation-date-drag-feedback,
    .reservation-timeline-resize-handle::after {
        transition: none !important;
    }
}

/* ============================================================
   Cabin Planner: database-driven cabin themes + grouped proposals
   2026-09-06
   ============================================================ */

.reservation-cabin-admin-link {
    display: flex;
    justify-content: flex-end;
    margin: -.35rem 0 .75rem;
}

/* Generic cabin colors now come from per-cabin CSS variables. */
.reservation-timeline-row.cabin-themed
.reservation-day-cell.is-open,
.reservation-timeline-row.cabin-themed
.reservation-half.is-open {
    background: var(--cabin-open-bg, #f4f7f2);
}

.reservation-timeline-row.cabin-themed
.reservation-day-cell.is-open {
    border-color: var(--cabin-open-border, var(--lsr-border));
}

.reservation-timeline-row.cabin-themed
.reservation-cabin-name {
    color: #fff;
    background: var(--cabin-title-bg, var(--lsr-forest));
    border-right-color: var(--cabin-theme, var(--lsr-forest));
}

.reservation-timeline-row.cabin-themed
.reservation-cabin-name span {
    color: rgba(255, 255, 255, .82);
}

.reservation-proposal-row.cabin-themed {
    --proposal-row-bg: var(--cabin-proposal-bg, #f6f7f6);
    --proposal-row-border: var(--cabin-theme, #9aa39c);
    --proposal-heading-bg: var(--cabin-proposal-title-bg, #748078);
    --proposal-heading-color: #fff;
    --proposal-band-bg: var(--cabin-proposal-band, #d9e1db);
    --proposal-band-border: var(--cabin-theme, #8ba092);
    --proposal-chip-bg: var(--cabin-proposal-chip, #f8faf8);
    --proposal-chip-color: var(--cabin-title-bg, #445149);
}

/* Horizontal: actual + proposed rows read as one bordered cabin group. */
.reservation-timeline:not(.is-vertical)
.reservation-cabin-drop-row.cabin-themed {
    box-sizing: border-box;
    margin-top: .55rem;
    border-top: 2px solid var(--cabin-theme);
    border-right: 2px solid var(--cabin-theme);
    border-left: 2px solid var(--cabin-theme);
}

.reservation-timeline:not(.is-vertical)
.reservation-cabin-drop-row.cabin-group-only {
    margin-bottom: .55rem;
    border-bottom: 2px solid var(--cabin-theme);
}

.reservation-timeline:not(.is-vertical)
.reservation-proposal-row.cabin-themed {
    box-sizing: border-box;
    margin-bottom: .55rem;
    border-right: 2px solid var(--cabin-theme);
    border-bottom: 2px solid var(--cabin-theme);
    border-left: 2px solid var(--cabin-theme);
}

/* Vertical: Proposed is its own column beside the real cabin column. */
.reservation-timeline.is-vertical
.reservation-proposal-row-heading {
    position: sticky;
    top: 0;
    left: auto;
    z-index: 40;
    display: flex;
    min-height: 48px;
    align-items: center;
    justify-content: center;
    padding: .4rem .25rem;
    color: #fff;
    background: var(--cabin-proposal-title-bg, #748078);
    border-right: 1px solid var(--cabin-theme, var(--lsr-border));
    border-bottom: 1px solid var(--cabin-theme, var(--lsr-border));
    text-align: center;
}

.reservation-timeline.is-vertical
.reservation-proposal-row-heading span {
    display: none;
}

.reservation-timeline.is-vertical
.reservation-proposal-row-heading strong {
    display: block;
    max-width: 100%;
    overflow: hidden;
    font-size: .68rem;
    line-height: 1;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.reservation-timeline.is-vertical
.reservation-proposal-cell {
    z-index: auto;
    align-self: stretch;
    min-height: 64px;
    padding-top: 0;
    overflow: visible;
    border-top: 0;
    border-right: 1px solid var(--cabin-open-border, var(--lsr-border));
    border-bottom: 1px solid var(--cabin-open-border, var(--lsr-border));
    background: var(--cabin-proposal-bg, #f6f7f6);
    pointer-events: auto;
}

.reservation-timeline.is-vertical
.reservation-proposal-cell:not(.has-proposal) {
    border-top-color: initial;
}

/* Outer border is drawn cell-by-cell because vertical mode uses display:contents. */
.reservation-timeline.is-vertical
.reservation-cabin-group-left {
    border-left: 2px solid var(--cabin-theme) !important;
}

.reservation-timeline.is-vertical
.reservation-cabin-group-right {
    border-right: 2px solid var(--cabin-theme) !important;
}

.reservation-timeline.is-vertical
.reservation-cabin-group-top {
    border-top: 2px solid var(--cabin-theme) !important;
}

.reservation-timeline.is-vertical
.reservation-cabin-group-bottom {
    border-bottom: 2px solid var(--cabin-theme) !important;
}

@media (max-width: 767.98px) {
    .reservation-timeline.is-vertical
    .reservation-proposal-row-heading strong {
        font-size: .58rem;
        white-space: normal;
        overflow-wrap: anywhere;
    }

    .reservation-cabin-admin-link {
        justify-content: center;
    }
}

/* ============================================================
   Cabin Administration
   ============================================================ */

.cabin-admin-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(min(100%, 330px), 1fr));
    gap: 1rem;
}

.cabin-admin-card {
    overflow: hidden;
    border: 2px solid var(--cabin-admin-color, var(--lsr-border));
    border-radius: 1rem;
    background: #fff;
}

.cabin-admin-card-header {
    padding: .85rem 1rem;
    color: #fff;
    background: var(--cabin-admin-title, var(--lsr-forest));
}

.cabin-admin-card-body {
    padding: 1rem;
    background: var(--cabin-admin-tint, #fff);
}

.cabin-admin-color-input {
    width: 100%;
    min-height: 48px;
    padding: .2rem;
    border: 1px solid var(--lsr-border);
    border-radius: .55rem;
    background: #fff;
}

.cabin-admin-usage {
    padding: .65rem .75rem;
    border-radius: .65rem;
    background: rgba(255,255,255,.66);
    font-size: .82rem;
}
@media (max-width: 575.98px) {
    .reservation-timeline.is-vertical {
        --reservation-date-column-min: 52px;
        --reservation-date-column-max: 58px;
        --reservation-request-column-min: 54px;
        --reservation-request-column-max: 66px;
        --reservation-proposal-column-min: 34px;
    }
}



/* ============================================================
   Cabin Planner: vertical sticky navigation/header refinement
   2026-09-06
   ============================================================ */

/* Horizontal toolbar stays in its familiar location. Vertical mode uses
   the compact sticky toolbar inside the timeline frame instead. */
.reservation-window-toolbar.is-vertical-hidden {
    display: none;
}

.reservation-vertical-sticky-toolbar {
    display: none;
}

.reservation-timeline-frame.is-vertical
.reservation-vertical-sticky-toolbar {
    position: sticky;
    top: 0;
    z-index: 80;
    display: grid;
    gap: .45rem;
    padding: .55rem .7rem .65rem;
    border: 1px solid var(--lsr-border);
    border-bottom: 2px solid rgba(47, 74, 58, .2);
    border-radius: .8rem .8rem 0 0;
    background: rgba(255, 255, 255, .98);
    box-shadow: 0 .35rem .7rem rgba(31, 50, 40, .08);
}

.reservation-vertical-window-title {
    min-width: 0;
    text-align: center;
}

.reservation-vertical-window-title .eyebrow {
    display: block;
    margin-bottom: .08rem;
}

.reservation-vertical-window-title strong {
    display: block;
    color: var(--lsr-ink);
    font-size: 1rem;
    line-height: 1.15;
}

.reservation-vertical-window-controls {
    display: flex;
    flex-wrap: wrap;
    align-items: end;
    justify-content: center;
    gap: .45rem .7rem;
}

.reservation-vertical-window-nav {
    display: flex;
    flex-wrap: nowrap;
    justify-content: center;
    gap: .3rem;
}

.reservation-vertical-window-nav .btn {
    min-width: 0;
    white-space: nowrap;
}

.reservation-vertical-jump-form {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: .35rem;
    margin: 0;
}

.reservation-vertical-jump-form .form-label {
    color: var(--lsr-muted);
    font-size: .72rem;
    font-weight: 800;
    white-space: nowrap;
}

.reservation-vertical-jump-form .form-control {
    width: 9.25rem;
}

/* The horizontal Jump to Month form no longer has a Go button. */
.reservation-jump-form .form-control[type="month"] {
    min-height: calc(1.5em + .5rem + 2px);
}

/*
 * The sticky timeline column headings sit immediately below the sticky
 * vertical date-range/navigation bar. The JS measures that first tier and
 * writes --reservation-vertical-sticky-top so this remains correct when
 * phone wrapping changes its height.
 */
.reservation-timeline.is-vertical
.reservation-cabin-heading,
.reservation-timeline.is-vertical
.reservation-request-row-heading,
.reservation-timeline.is-vertical
.reservation-cabin-name,
.reservation-timeline.is-vertical
.reservation-proposal-row-heading {
    top: var(--reservation-vertical-sticky-top, 0px);
}

/* Restore the useful cabin-capacity subtitle in vertical mode. */
.reservation-timeline.is-vertical
.reservation-cabin-name {
    min-height: 64px;
    padding-block: .42rem;
}

.reservation-timeline.is-vertical
.reservation-cabin-name span {
    display: block;
    margin-top: .16rem;
    color: rgba(255, 255, 255, .84);
    font-size: .58rem;
    font-weight: 650;
    line-height: 1.08;
    white-space: normal;
}

/* Proposed is a full, themed sibling column in vertical mode. */
.reservation-timeline.is-vertical
.reservation-proposal-row-heading {
    z-index: 40;
    min-height: 64px;
    flex-direction: column;
    color: #fff !important;
    background-color: var(
        --cabin-proposal-title-bg,
        var(--cabin-title-bg, #5f6d63)
    ) !important;
    border-color: var(--cabin-theme, var(--lsr-border));
    box-shadow: 0 2px 0 rgba(47, 74, 58, .14),
                0 .3rem .55rem rgba(31, 50, 40, .07);
}

.reservation-timeline.is-vertical
.reservation-proposal-row-heading strong {
    display: block;
    color: #fff !important;
    font-size: .72rem;
    line-height: 1.05;
}

.reservation-timeline.is-vertical
.reservation-proposal-row-heading span {
    display: block;
    margin-top: .15rem;
    color: rgba(255, 255, 255, .82) !important;
    font-size: .54rem;
    line-height: 1.05;
    white-space: normal;
}

/* Keep the Date corner aligned with the taller cabin/proposal headers. */
.reservation-timeline.is-vertical
.reservation-cabin-heading,
.reservation-timeline.is-vertical
.reservation-request-row-heading {
    min-height: 64px;
}

/* Resize handles need to remain reachable along the sticky toolbar edges. */
@media (min-width: 992px) {
    .reservation-timeline-frame.is-vertical
    .reservation-timeline-resize-handle {
        z-index: 95;
    }
}

@media (max-width: 575.98px) {
    .reservation-timeline-frame.is-vertical
    .reservation-vertical-sticky-toolbar {
        gap: .38rem;
        padding: .48rem .4rem .55rem;
    }

    .reservation-vertical-window-controls {
        gap: .4rem;
    }

    .reservation-vertical-window-nav {
        width: 100%;
    }

    .reservation-vertical-window-nav .btn {
        flex: 1 1 0;
        padding-inline: .32rem;
        font-size: .72rem;
    }

    .reservation-vertical-jump-form {
        width: 100%;
    }

    .reservation-vertical-jump-form .form-control {
        width: min(9.25rem, 58vw);
    }

    .reservation-timeline.is-vertical
    .reservation-cabin-name {
        padding-inline: .22rem;
    }

    .reservation-timeline.is-vertical
    .reservation-cabin-name span {
        font-size: .52rem;
    }

    .reservation-timeline.is-vertical
    .reservation-proposal-row-heading strong {
        font-size: .62rem;
    }

    .reservation-timeline.is-vertical
    .reservation-proposal-row-heading span {
        font-size: .48rem;
    }
}

/* ============================================================
   Cabin Planner: outside resize grips + sticky-header site offset
   2026-09-06
   ============================================================ */

/*
 * The site navigation is sticky and is 76px tall in the current layout.
 * Leave a small breathing gap beneath it so the planner toolbar is never
 * tucked underneath the site header.
 */
.reservation-timeline-frame.is-vertical {
    --reservation-site-sticky-offset: 84px;
}

.reservation-timeline-frame.is-vertical
.reservation-vertical-sticky-toolbar {
    top: var(--reservation-site-sticky-offset, 84px);
}

/*
 * The JS variable contains only the height of the planner's sticky toolbar.
 * Add the site-header offset here so the Date / cabin / Proposed headings
 * sit immediately below that toolbar instead of underneath the site nav.
 */
.reservation-timeline.is-vertical
.reservation-cabin-heading,
.reservation-timeline.is-vertical
.reservation-request-row-heading,
.reservation-timeline.is-vertical
.reservation-cabin-name,
.reservation-timeline.is-vertical
.reservation-proposal-row-heading {
    top: calc(
        var(--reservation-site-sticky-offset, 84px)
        + var(--reservation-vertical-sticky-top, 0px)
    );
}

/*
 * Desktop resize controls live OUTSIDE the colored cabin columns. The
 * visible grip is always present so it reads as a resize control before
 * hover, while hover/focus simply strengthens it.
 */
@media (min-width: 992px) {
    .reservation-timeline-frame.is-vertical
    .reservation-timeline-resize-handle {
        width: 18px;
        z-index: 95;
    }

    .reservation-timeline-frame.is-vertical
    .reservation-timeline-resize-handle.is-left {
        left: -20px;
    }

    .reservation-timeline-frame.is-vertical
    .reservation-timeline-resize-handle.is-right {
        right: -20px;
    }

    .reservation-timeline-frame.is-vertical
    .reservation-timeline-resize-handle::after {
        top: 6rem;
        bottom: 1rem;
        width: 6px;
        border: 1px solid rgba(47, 74, 58, .28);
        background: rgba(47, 74, 58, .28);
        box-shadow: 0 0 0 3px rgba(255, 255, 255, .92),
                    0 .2rem .45rem rgba(31, 50, 40, .12);
    }

    .reservation-timeline-frame.is-vertical
    .reservation-timeline-resize-handle:hover::after,
    .reservation-timeline-frame.is-vertical
    .reservation-timeline-resize-handle:focus-visible::after,
    .reservation-timeline-frame.is-resizing
    .reservation-timeline-resize-handle::after {
        width: 8px;
        background: rgba(47, 74, 58, .58);
        border-color: rgba(47, 74, 58, .62);
    }
}

/* Keep the same nav clearance on phones; the site's navbar uses the same
   minimum height there, while the planner toolbar itself may wrap taller. */
@media (max-width: 991.98px) {
    .reservation-timeline-frame.is-vertical {
        --reservation-site-sticky-offset: 82px;
    }
}

/* ============================================================
   Cabin Planner: sticky month label + tighter desktop nav offset
   2026-09-06
   ============================================================ */

/* The previous 84px desktop clearance left about a 5px visual gap on the
   current site header. Tighten the planner to the actual rendered navbar
   edge while retaining the larger mobile clearance defined above. */
@media (min-width: 992px) {
    .reservation-timeline-frame.is-vertical {
        --reservation-site-sticky-offset: 79px;
    }
}

/* The vertical Date corner doubles as a compact orientation marker. The
   month/year subtitle is updated by site.js as dates scroll beneath it. */
.reservation-timeline.is-vertical
.reservation-cabin-heading {
    flex-direction: column;
    gap: .08rem;
    line-height: 1.05;
}

.reservation-timeline.is-vertical
.reservation-cabin-heading .reservation-date-heading-label {
    display: block;
    color: var(--lsr-ink);
    font-size: .74rem;
    font-weight: 900;
    line-height: 1;
}

.reservation-timeline.is-vertical
.reservation-cabin-heading .reservation-date-heading-month {
    display: block;
    max-width: 100%;
    color: var(--lsr-forest-dark);
    font-size: .62rem;
    font-weight: 800;
    line-height: 1.08;
    white-space: normal;
}

@media (max-width: 575.98px) {
    .reservation-timeline.is-vertical
    .reservation-cabin-heading .reservation-date-heading-label {
        font-size: .68rem;
    }

    .reservation-timeline.is-vertical
    .reservation-cabin-heading .reservation-date-heading-month {
        font-size: .54rem;
    }
}

/* ========================================================================== 
   Public content manager: About videos + Support donation/fundraising/projects
   ========================================================================== */

.site-video-card {
    overflow: hidden;
    height: 100%;
    background: #fff;
    border: 1px solid rgba(25, 39, 28, .12);
    border-radius: 1.15rem;
    box-shadow: 0 14px 36px rgba(25, 39, 28, .08);
}

.site-video-frame {
    background: #111;
}

.site-video-frame iframe {
    border: 0;
}

.site-video-copy {
    padding: 1rem 1.1rem 1.15rem;
}

.support-donation-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 1rem;
}

.support-donation-option-card {
    display: flex;
    flex-direction: column;
    min-height: 100%;
    padding: 1.35rem;
    background: #fff;
    border: 1px solid rgba(25, 39, 28, .14);
    border-radius: 1rem;
    box-shadow: 0 12px 28px rgba(25, 39, 28, .06);
}

.support-donation-option-card p {
    color: var(--bs-secondary-color);
}

.support-donation-option-card .btn {
    align-self: flex-start;
}

.support-projects-wrap {
    border-top: 1px solid rgba(25, 39, 28, .12);
    padding-top: 3rem;
}

.support-project-list {
    display: grid;
    gap: .85rem;
    max-width: 980px;
    margin-inline: auto;
}

.support-project-card {
    overflow: hidden;
    background: #fff;
    border: 1px solid rgba(25, 39, 28, .14);
    border-radius: 1rem;
    box-shadow: 0 9px 24px rgba(25, 39, 28, .05);
}

.support-project-card summary {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    padding: 1rem 1.2rem;
    cursor: pointer;
    list-style: none;
}

.support-project-card summary::-webkit-details-marker {
    display: none;
}

.support-project-summary-main {
    display: flex;
    flex-direction: column;
    min-width: 0;
}

.support-project-summary-main strong {
    font-size: 1.05rem;
}

.support-project-summary-main small {
    margin-top: .2rem;
    color: var(--bs-secondary-color);
}

.support-project-summary-meta {
    display: flex;
    align-items: center;
    gap: .65rem;
    flex: 0 0 auto;
}

.support-project-badge {
    display: inline-flex;
    align-items: center;
    min-height: 1.8rem;
    padding: .25rem .65rem;
    border-radius: 999px;
    background: rgba(67, 101, 73, .11);
    color: #36573b;
    font-size: .78rem;
    font-weight: 700;
}

.support-project-toggle {
    display: grid;
    place-items: center;
    width: 2rem;
    height: 2rem;
    border-radius: 50%;
    border: 1px solid rgba(25, 39, 28, .18);
    font-size: 1.25rem;
    line-height: 1;
    transition: transform .18s ease;
}

.support-project-card[open] .support-project-toggle {
    transform: rotate(45deg);
}

.support-project-details {
    padding: 0 1.2rem 1.25rem;
    border-top: 1px solid rgba(25, 39, 28, .09);
}

.support-project-details > .row {
    padding-top: 1.2rem;
}

.support-project-detail-block {
    padding: .8rem .9rem;
    margin-top: .85rem;
    background: rgba(67, 101, 73, .06);
    border-radius: .75rem;
}

.support-project-detail-block strong {
    display: block;
    margin-bottom: .25rem;
}

.support-project-gallery {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: .65rem;
}

.support-project-gallery img {
    width: 100%;
    aspect-ratio: 4 / 3;
    object-fit: cover;
    border-radius: .75rem;
}

.fundraising-goal-card {
    display: grid;
    grid-template-columns: 88px minmax(0, 1fr);
    gap: 1.15rem;
    padding: 1.35rem;
    background: #fff;
    border: 1px solid rgba(25, 39, 28, .14);
    border-radius: 1rem;
    box-shadow: 0 12px 28px rgba(25, 39, 28, .06);
}

.fundraising-goal-visual {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: .55rem;
}

.fundraising-thermometer {
    position: relative;
    width: 32px;
    height: 150px;
    overflow: hidden;
    border: 3px solid #36573b;
    border-radius: 999px;
    background: #f1f4f0;
}

.fundraising-thermometer::after {
    content: "";
    position: absolute;
    left: 50%;
    bottom: 5px;
    z-index: 2;
    width: 20px;
    height: 20px;
    transform: translateX(-50%);
    border-radius: 50%;
    background: #36573b;
}

.fundraising-thermometer-fill {
    position: absolute;
    inset-inline: 0;
    bottom: 0;
    min-height: 0;
    background: linear-gradient(to top, #36573b, #76957b);
    transition: height .25s ease;
}

.fundraising-percent {
    font-size: 1.1rem;
    font-weight: 800;
    color: #36573b;
}

.fundraising-goal-copy {
    display: flex;
    flex-direction: column;
    justify-content: center;
}

.fundraising-amounts {
    padding-top: .7rem;
    margin-top: .25rem;
    border-top: 1px solid rgba(25, 39, 28, .1);
}

.fundraising-amounts strong {
    color: #36573b;
}

@media (max-width: 767.98px) {
    .support-donation-grid {
        grid-template-columns: 1fr;
    }

    .support-project-card summary {
        align-items: flex-start;
    }

    .support-project-summary-meta {
        flex-direction: column-reverse;
        align-items: flex-end;
    }

    .support-project-gallery {
        grid-template-columns: 1fr 1fr;
    }

    .fundraising-goal-card {
        grid-template-columns: 72px minmax(0, 1fr);
        gap: .9rem;
    }

    .fundraising-thermometer {
        height: 125px;
    }
}

@media (max-width: 420px) {
    .support-project-gallery {
        grid-template-columns: 1fr;
    }
}

/* --------------------------------------------------------------------------
   Home page: featured videos + rotating ministry statistics
   About page: board members
   -------------------------------------------------------------------------- */

.site-video-card-featured {
    width: 100%;
}

.site-video-card-featured .site-video-copy {
    padding: 1.2rem 1.35rem 1.3rem;
}

.ministry-statistics-section {
    position: relative;
    overflow: hidden;
    background:
        radial-gradient(circle at 15% 20%, rgba(255,255,255,.08), transparent 32%),
        linear-gradient(135deg, #294731 0%, #17331f 100%);
    color: #fff;
}

.ministry-statistics-panel {
    position: relative;
    padding: clamp(1.6rem, 4vw, 3.25rem);
    border: 1px solid rgba(255,255,255,.15);
    border-radius: 1.35rem;
    background: rgba(255,255,255,.055);
    box-shadow: 0 24px 60px rgba(0,0,0,.16);
    backdrop-filter: blur(4px);
}

.ministry-statistics-heading {
    max-width: 760px;
    margin-inline: auto;
    text-align: center;
}

.ministry-statistics-heading .section-title {
    color: #fff;
}

.ministry-statistics-heading > p {
    margin: 0 auto;
    max-width: 680px;
    color: rgba(255,255,255,.8);
}

.ministry-statistics-stage {
    display: grid;
    place-items: center;
    min-height: 230px;
    margin-top: 1.4rem;
}

.ministry-statistic {
    width: 100%;
    max-width: 850px;
    text-align: center;
}

.ministry-statistic[hidden] {
    display: none !important;
}

.ministry-statistic.is-active {
    animation: lsr-stat-fade .38s ease both;
}

.ministry-statistic-value {
    display: block;
    margin-bottom: .65rem;
    color: #f0bf62;
    font-size: clamp(2.8rem, 8vw, 5.8rem);
    font-weight: 800;
    line-height: .95;
    letter-spacing: -.045em;
}

.ministry-statistic-text {
    max-width: 760px;
    margin: 0 auto;
    color: #fff;
    font-size: clamp(1.15rem, 2.4vw, 1.75rem);
    line-height: 1.4;
}

.ministry-statistic-source {
    display: inline-block;
    margin-top: 1rem;
    color: rgba(255,255,255,.78);
    font-size: .84rem;
    text-underline-offset: .2rem;
}

.ministry-statistic-source:hover,
.ministry-statistic-source:focus {
    color: #fff;
}

.ministry-statistics-controls {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: .8rem;
    margin-top: .8rem;
}

.ministry-statistics-dots {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: .45rem;
    max-width: 360px;
}

.ministry-statistics-dot,
.ministry-statistics-arrow {
    appearance: none;
    border: 0;
    cursor: pointer;
}

.ministry-statistics-dot {
    width: .62rem;
    height: .62rem;
    padding: 0;
    border-radius: 50%;
    background: rgba(255,255,255,.35);
    transition: transform .18s ease, background-color .18s ease;
}

.ministry-statistics-dot.is-active {
    transform: scale(1.3);
    background: #f0bf62;
}

.ministry-statistics-arrow {
    display: grid;
    place-items: center;
    width: 2.35rem;
    height: 2.35rem;
    border: 1px solid rgba(255,255,255,.2);
    border-radius: 50%;
    background: rgba(255,255,255,.08);
    color: #fff;
    font-size: 1.65rem;
    line-height: 1;
    transition: background-color .18s ease, border-color .18s ease;
}

.ministry-statistics-arrow:hover,
.ministry-statistics-arrow:focus-visible {
    border-color: rgba(255,255,255,.45);
    background: rgba(255,255,255,.16);
}

.board-member-card {
    overflow: hidden;
    background: #fff;
    border: 1px solid rgba(25, 39, 28, .13);
    border-radius: 1rem;
    box-shadow: 0 12px 30px rgba(25, 39, 28, .06);
}

.board-member-photo {
    display: block;
    width: 100%;
    aspect-ratio: 4 / 3;
    object-fit: cover;
    background: #e8ede8;
}

.board-member-photo-placeholder {
    display: grid;
    place-items: center;
    color: #426048;
    font-size: 3rem;
    font-weight: 800;
}

.board-member-copy {
    padding: 1.15rem 1.2rem 1.3rem;
}

.board-member-copy h3 {
    margin-bottom: .2rem;
}

.board-member-role {
    margin-bottom: .8rem;
    color: #52715a;
    font-size: .88rem;
    font-weight: 750;
    letter-spacing: .025em;
    text-transform: uppercase;
}

@keyframes lsr-stat-fade {
    from {
        opacity: 0;
        transform: translateY(.4rem);
    }
    to {
        opacity: 1;
        transform: translateY(0);
    }
}

@media (max-width: 767.98px) {
    .ministry-statistics-stage {
        min-height: 250px;
    }

    .ministry-statistics-panel {
        border-radius: 1rem;
    }
}

@media (prefers-reduced-motion: reduce) {
    .ministry-statistic.is-active {
        animation: none;
    }

    .ministry-statistics-dot,
    .ministry-statistics-arrow {
        transition: none;
    }
}

/* ============================================================
   Prayer Partners + Guest Care
   ============================================================ */
.support-prayer-partner-section {
    position: relative;
    overflow: hidden;
}

.support-prayer-partner-section::before {
    content: "";
    position: absolute;
    width: 22rem;
    height: 22rem;
    right: -8rem;
    top: -8rem;
    border-radius: 50%;
    background: radial-gradient(circle, rgba(177, 154, 92, .13), rgba(177, 154, 92, 0) 70%);
    pointer-events: none;
}

.prayer-partner-signup-card {
    position: relative;
    padding: clamp(1.25rem, 2.5vw, 2rem);
    border: 1px solid rgba(38, 62, 45, .13);
    border-radius: 1.15rem;
    background: #fff;
    box-shadow: 0 18px 42px rgba(30, 50, 36, .08);
}

.prayer-partner-signup-card .prayer-signup-honeypot {
    position: absolute !important;
    left: -10000px !important;
    width: 1px !important;
    height: 1px !important;
    overflow: hidden !important;
}

.guest-retreat-summary-grid,
.prayer-review-facts {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
    gap: .75rem;
}

.guest-retreat-summary-grid > div,
.prayer-review-facts > div {
    padding: .85rem .95rem;
    border: 1px solid rgba(39, 64, 47, .12);
    border-radius: .8rem;
    background: rgba(248, 250, 248, .86);
}

.guest-retreat-summary-grid span,
.prayer-review-facts span {
    display: block;
    margin-bottom: .2rem;
    color: #6b756e;
    font-size: .72rem;
    font-weight: 700;
    letter-spacing: .045em;
    text-transform: uppercase;
}

.guest-retreat-summary-grid strong,
.prayer-review-facts strong {
    display: block;
    color: #263c2d;
    line-height: 1.3;
}

.guest-prayer-card {
    position: relative;
    overflow: hidden;
    border: 2px solid rgba(94, 126, 101, .34);
    background: linear-gradient(135deg, #f7fbf7 0%, #fffdf7 100%);
}

.guest-prayer-card::after {
    content: "🙏";
    position: absolute;
    right: 1rem;
    top: .7rem;
    opacity: .10;
    font-size: 4.5rem;
    line-height: 1;
    pointer-events: none;
}

.guest-prayer-sharing-options {
    display: grid;
    gap: .65rem;
}

.guest-prayer-sharing-option {
    display: flex;
    gap: .75rem;
    align-items: flex-start;
    padding: .8rem .9rem;
    border: 1px solid rgba(39, 64, 47, .14);
    border-radius: .75rem;
    background: #fff;
}

.guest-prayer-sharing-option .form-check-input {
    margin-top: .18rem;
    flex: 0 0 auto;
}

.guest-prayer-sharing-option small {
    display: block;
    margin-top: .1rem;
    color: #6d776f;
}

.guest-prayer-history {
    display: grid;
    gap: .7rem;
}

.guest-prayer-history-item {
    padding: .85rem 1rem;
    border-left: 3px solid rgba(89, 119, 95, .5);
    background: rgba(246, 249, 246, .9);
    border-radius: 0 .7rem .7rem 0;
}

.guest-profile-summary {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(210px, 1fr));
    gap: .8rem;
}

.guest-profile-summary-card {
    padding: .9rem 1rem;
    border: 1px solid rgba(39, 64, 47, .12);
    border-radius: .85rem;
    background: #fff;
}

.guest-profile-summary-card > span {
    display: block;
    margin-bottom: .25rem;
    color: #718078;
    font-size: .72rem;
    font-weight: 700;
    letter-spacing: .04em;
    text-transform: uppercase;
}

.guest-profile-summary-card strong {
    display: block;
}

.guest-household-summary-list,
.guest-household-edit-list {
    display: grid;
    gap: .75rem;
}

.guest-household-summary-row {
    display: flex;
    flex-wrap: wrap;
    justify-content: space-between;
    gap: .5rem 1rem;
    padding: .7rem .85rem;
    border-bottom: 1px solid rgba(39, 64, 47, .1);
}

.guest-household-summary-row:last-child {
    border-bottom: 0;
}

.guest-household-edit-row {
    padding: 1rem;
    border: 1px solid rgba(39, 64, 47, .16);
    border-radius: .85rem;
    background: rgba(249, 251, 249, .85);
}

.guest-membership-options {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
    gap: .75rem;
}

.guest-membership-option {
    display: flex;
    gap: .7rem;
    align-items: flex-start;
    padding: .9rem 1rem;
    border: 1px solid rgba(39, 64, 47, .15);
    border-radius: .8rem;
    background: #f8faf8;
}

.guest-membership-option .form-check-input {
    flex: 0 0 auto;
    margin-top: .2rem;
}

.guest-membership-option small {
    display: block;
    margin-top: .15rem;
    color: #707a73;
}

.guest-manage-actions .accordion-item {
    overflow: hidden;
    margin-bottom: .65rem;
    border: 1px solid rgba(39, 64, 47, .13);
    border-radius: .8rem !important;
}

.guest-manage-actions .accordion-button {
    font-weight: 700;
    color: #2f4a3a;
}

.guest-manage-actions .accordion-button:not(.collapsed) {
    background: rgba(237, 243, 238, .85);
    color: #263f31;
    box-shadow: none;
}

.prayer-dashboard-panel {
    border: 2px solid rgba(164, 125, 50, .28);
    background: linear-gradient(135deg, #fffdf7, #fff);
}

.prayer-dashboard-list,
.prayer-admin-request-list {
    display: grid;
    gap: .6rem;
}

.prayer-dashboard-item,
.prayer-admin-request-card {
    display: block;
    padding: .85rem .95rem;
    border: 1px solid rgba(39, 64, 47, .13);
    border-radius: .75rem;
    background: #fff;
    color: inherit;
    text-decoration: none;
    transition: border-color .15s ease, box-shadow .15s ease, transform .15s ease;
}

.prayer-dashboard-item:hover,
.prayer-admin-request-card:hover,
.prayer-admin-request-card.is-selected {
    border-color: rgba(62, 100, 71, .46);
    box-shadow: 0 8px 20px rgba(36, 58, 42, .08);
    transform: translateY(-1px);
}

.prayer-admin-request-card.is-selected {
    background: #f5f9f5;
}

.prayer-dashboard-excerpt,
.prayer-admin-request-card p {
    display: block;
    margin: .4rem 0 0;
    color: #5f6b63;
    font-size: .9rem;
    line-height: 1.45;
}

.prayer-admin-tabs {
    display: flex;
    flex-wrap: wrap;
    gap: .5rem;
}

.prayer-request-list-panel {
    max-height: calc(100vh - 170px);
    overflow: auto;
}

.prayer-review-empty {
    padding-block: 3rem;
}

.prayer-review-icon {
    margin-bottom: .6rem;
    font-size: 3.5rem;
}

.prayer-status {
    display: inline-flex;
    align-items: center;
    width: fit-content;
    padding: .22rem .52rem;
    border: 1px solid transparent;
    border-radius: 999px;
    font-size: .72rem;
    font-weight: 800;
    line-height: 1.2;
    white-space: nowrap;
}

.prayer-status-pending {
    border-color: #d5aa54;
    background: #fff5d8;
    color: #73551d;
}

.prayer-status-approved,
.prayer-status-pending {
    background-color: #fff5d8;
}

.prayer-status-sent {
    border-color: #83aa8b;
    background: #eaf6ec;
    color: #285432;
}

.prayer-status-failed,
.prayer-status-send_issues {
    border-color: #d59a97;
    background: #fff0ef;
    color: #7a3632;
}

.prayer-status-declined {
    border-color: #c8cbca;
    background: #f1f2f2;
    color: #5f6562;
}

.prayer-original-request {
    padding: 1rem 1.05rem;
    border-left: 4px solid rgba(76, 112, 84, .55);
    border-radius: 0 .8rem .8rem 0;
    background: #f5f8f5;
}

.prayer-original-request > span {
    display: block;
    margin-bottom: .35rem;
    color: #647269;
    font-size: .72rem;
    font-weight: 800;
    letter-spacing: .045em;
    text-transform: uppercase;
}

.prayer-original-request p {
    margin-bottom: 0;
}

.prayer-delivery-table th {
    color: #5c685f;
    font-size: .72rem;
    letter-spacing: .04em;
    text-transform: uppercase;
}

@media (max-width: 767.98px) {
    .prayer-request-list-panel {
        max-height: none;
    }

    .guest-prayer-card::after {
        font-size: 3.2rem;
    }
}

/* Exact class names used by manage_retreat.php. */
.prayer-request-guest-card {
    position: relative;
    overflow: hidden;
    padding: clamp(1.2rem, 2.5vw, 2rem);
    border: 2px solid rgba(94, 126, 101, .34);
    border-radius: 1rem;
    background: linear-gradient(135deg, #f7fbf7 0%, #fffdf7 100%);
    box-shadow: 0 12px 30px rgba(31, 53, 37, .06);
}

.prayer-request-guest-card::after {
    content: "🙏";
    position: absolute;
    right: 1rem;
    top: .7rem;
    opacity: .08;
    font-size: 4.25rem;
    line-height: 1;
    pointer-events: none;
}

.prayer-sharing-option {
    display: flex;
    gap: .7rem;
    align-items: flex-start;
    margin: 0;
    padding: .75rem .85rem;
    border: 1px solid rgba(39, 64, 47, .14);
    border-radius: .75rem;
    background: rgba(255,255,255,.92);
}

.prayer-sharing-option .form-check-input {
    flex: 0 0 auto;
    margin-top: .18rem;
}

.prayer-sharing-option small {
    display: block;
    margin-top: .12rem;
    color: #6d776f;
}

.guest-profile-summary {
    display: flex;
    flex-wrap: wrap;
    gap: .55rem;
}

.guest-profile-pill,
.guest-household-pill {
    display: inline-flex;
    flex-direction: column;
    gap: .1rem;
    min-width: 160px;
    padding: .7rem .85rem;
    border: 1px solid rgba(39, 64, 47, .13);
    border-radius: .75rem;
    background: #f8faf8;
}

.guest-profile-pill span,
.guest-household-pill span {
    color: #6c776f;
    font-size: .78rem;
}

.guest-household-summary {
    display: flex;
    flex-wrap: wrap;
    gap: .55rem;
}

.manage-retreat-accordion .accordion-item {
    overflow: hidden;
    margin-bottom: .65rem;
    border: 1px solid rgba(39, 64, 47, .13);
    border-radius: .8rem !important;
}

.manage-retreat-accordion .accordion-button {
    font-weight: 700;
    color: #2f4a3a;
}

.manage-retreat-accordion .accordion-button:not(.collapsed) {
    background: rgba(237, 243, 238, .85);
    color: #263f31;
    box-shadow: none;
}

.contact-household-list {
    display: grid;
    gap: .2rem;
}

.contact-household-row {
    display: flex;
    flex-wrap: wrap;
    justify-content: space-between;
    gap: .35rem 1rem;
    padding: .7rem 0;
    border-bottom: 1px solid rgba(39, 64, 47, .1);
}

.contact-household-row:last-child {
    border-bottom: 0;
}

.contact-household-row strong,
.contact-household-row span {
    display: block;
}

.contact-household-row span {
    color: #6d776f;
    font-size: .82rem;
}

/* ============================================================
   Newsletter module
   ============================================================ */
.newsletter-signup-form {
    padding: clamp(1.25rem, 3vw, 2rem);
    border: 1px solid var(--lsr-border, #d9e0da);
    border-radius: 1rem;
    background: #fff;
    box-shadow: 0 12px 32px rgba(34, 52, 40, .08);
}

.newsletter-honeypot {
    position: absolute !important;
    left: -10000px !important;
    width: 1px !important;
    height: 1px !important;
    overflow: hidden !important;
}

.newsletter-extra-details {
    padding: .95rem 1rem;
    border: 1px solid var(--lsr-border, #d9e0da);
    border-radius: .75rem;
    background: #f8faf8;
}

.newsletter-extra-details > summary,
.newsletter-admin-summary {
    cursor: pointer;
    font-weight: 700;
}

.newsletter-admin-summary {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    list-style: none;
}

.newsletter-admin-summary::-webkit-details-marker {
    display: none;
}

.newsletter-admin-summary span {
    display: flex;
    flex-direction: column;
    gap: .15rem;
}

.newsletter-admin-summary small {
    color: #6f7972;
    font-weight: 400;
}

.newsletter-admin-summary::after {
    content: "+";
    flex: 0 0 auto;
    font-size: 1.4rem;
    line-height: 1;
    color: #66756a;
}

details[open] > .newsletter-admin-summary::after {
    content: "−";
}

.newsletter-footer-link-row {
    display: grid;
    grid-template-columns: minmax(130px, .8fr) minmax(220px, 2fr) 90px auto auto;
    gap: .75rem;
    align-items: end;
}

.newsletter-html-editor {
    min-height: 520px;
    resize: vertical;
    font-size: .82rem;
    line-height: 1.45;
    white-space: pre;
}

.newsletter-preview-panel {
    top: 6.5rem;
}

.newsletter-preview-frame,
.newsletter-public-frame {
    width: 100%;
    border: 1px solid var(--lsr-border, #d9e0da);
    border-radius: .75rem;
    background: #fff;
}

.newsletter-preview-frame {
    height: 720px;
}

.newsletter-public-frame {
    min-height: 1050px;
}

.newsletter-archive-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(min(100%, 280px), 1fr));
    gap: 1rem;
}

.newsletter-archive-card {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    padding: 1.35rem;
    border: 1px solid var(--lsr-border, #d9e0da);
    border-radius: 1rem;
    background: #fff;
}

.newsletter-archive-card p {
    flex: 1 1 auto;
}

.newsletter-admin-table td,
.newsletter-admin-table th {
    vertical-align: middle;
}

@media (max-width: 991.98px) {
    .newsletter-footer-link-row {
        grid-template-columns: 1fr 1fr;
    }

    .newsletter-preview-panel {
        position: static !important;
    }

    .newsletter-preview-frame {
        height: 620px;
    }
}

@media (max-width: 575.98px) {
    .newsletter-footer-link-row {
        grid-template-columns: 1fr;
    }

    .newsletter-public-frame {
        min-height: 850px;
    }
}


/* ============================================================
   Maintenance / Production Readiness
   ============================================================ */
.maintenance-summary { cursor:pointer; display:flex; justify-content:space-between; align-items:center; gap:1rem; list-style:none; }
.maintenance-summary::-webkit-details-marker { display:none; }
.maintenance-check-list { display:grid; gap:.65rem; }
.maintenance-check { display:grid; grid-template-columns:auto 1fr; align-items:start; gap:.8rem; padding:.8rem 0; border-bottom:1px solid var(--lsr-border,#d8ded8); }
.maintenance-check:last-child { border-bottom:0; }
.maintenance-metric { height:100%; padding:.85rem; border:1px solid var(--lsr-border,#d8ded8); border-radius:.75rem; background:#f8faf8; text-align:center; }
.maintenance-metric strong { display:block; font-size:1.6rem; line-height:1.1; }
.maintenance-metric span { display:block; margin-top:.25rem; font-size:.78rem; color:#69766d; }
@media (max-width: 575.98px) { .maintenance-summary { align-items:flex-start; flex-direction:column; } }


/* ============================================================
   Facilities page + Facilities content admin — 2026-09-08
   ============================================================ */

.facilities-hero .page-hero-content {
    max-width: 58rem;
}

.facilities-gallery-section {
    overflow: hidden;
}

.facilities-gallery {
    overflow: hidden;
    border: 1px solid var(--lsr-border);
    border-radius: var(--lsr-radius);
    background: var(--lsr-forest-dark);
    box-shadow: var(--lsr-shadow);
}

.facilities-gallery .carousel-inner,
.facilities-gallery .carousel-item {
    min-height: clamp(280px, 43vw, 520px);
}

.facilities-gallery-photo-link {
    display: block;
    height: clamp(280px, 43vw, 520px);
    background: var(--lsr-forest-dark);
}

.facilities-gallery-photo {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.facilities-gallery-caption {
    position: absolute;
    right: 1rem;
    bottom: 1rem;
    left: 1rem;
    z-index: 3;
    display: flex;
    align-items: baseline;
    gap: .75rem;
    width: fit-content;
    max-width: calc(100% - 2rem);
    padding: .6rem .85rem;
    border-radius: .75rem;
    color: #fff;
    background: rgba(28, 43, 34, .82);
    backdrop-filter: blur(8px);
}

.facilities-gallery-caption strong {
    color: #fff;
    font-family: inherit;
}

.facilities-gallery-caption span {
    color: rgba(255,255,255,.82);
    font-size: .9rem;
}

.facilities-gallery-hint {
    color: var(--lsr-muted);
    font-size: .9rem;
}

.facilities-gallery .carousel-control-prev,
.facilities-gallery .carousel-control-next {
    width: 11%;
}

.facilities-outdoors-photo {
    width: 100%;
    max-height: 230px;
    margin-top: auto;
    border-radius: 1rem;
    object-fit: cover;
    box-shadow: 0 .5rem 1.4rem rgba(0, 0, 0, .18);
}

.facilities-map-wrap {
    min-height: 470px;
    overflow: hidden;
    border: 1px solid rgba(255,255,255,.2);
    border-radius: var(--lsr-radius);
    background: rgba(255,255,255,.08);
    box-shadow: 0 .8rem 2rem rgba(0, 0, 0, .2);
}

.facilities-map {
    display: block;
    width: 100%;
    height: 100%;
    min-height: 470px;
    border: 0;
}

.facilities-rules-list {
    columns: 2;
    column-gap: 2rem;
}

.facilities-rules-list li {
    break-inside: avoid;
}

.facilities-nearby-card {
    display: flex;
    flex-direction: column;
    gap: 1rem;
    padding: 1.25rem;
    border: 1px solid var(--lsr-border);
    border-radius: 1rem;
    background: #fff;
    box-shadow: 0 .3rem 1rem rgba(31, 50, 40, .045);
}

.facilities-nearby-card-copy {
    flex: 1 1 auto;
}

.facilities-nearby-meta {
    display: block;
    margin-bottom: .35rem;
    color: var(--lsr-clay);
    font-size: .74rem;
    font-weight: 800;
    letter-spacing: .08em;
    text-transform: uppercase;
}

.facilities-nearby-link {
    align-self: flex-start;
    color: var(--lsr-forest);
    font-weight: 800;
    text-decoration: none;
}

.facilities-nearby-link:hover,
.facilities-nearby-link:focus {
    color: var(--lsr-forest-dark);
    text-decoration: underline;
}

.facilities-cta-intro {
    max-width: 48rem;
    color: rgba(255,255,255,.82);
}

.facilities-admin-jump {
    display: flex;
    flex-wrap: wrap;
    gap: .5rem;
    padding: .8rem;
    border: 1px solid var(--lsr-border);
    border-radius: 1rem;
    background: #fff;
    box-shadow: 0 .25rem .9rem rgba(31, 50, 40, .04);
}

.facilities-admin-jump a {
    padding: .45rem .7rem;
    border-radius: 999px;
    color: var(--lsr-forest-dark);
    background: var(--lsr-cream);
    font-size: .86rem;
    font-weight: 700;
    text-decoration: none;
}

.facilities-admin-jump a:hover,
.facilities-admin-jump a:focus {
    color: #fff;
    background: var(--lsr-forest);
}

.facilities-content-admin .staff-panel {
    scroll-margin-top: 6rem;
}

.facilities-admin-repeat-list {
    display: grid;
    gap: 1rem;
}

.facilities-admin-repeat-item {
    padding: 1rem;
    border: 1px solid var(--lsr-border);
    border-radius: .9rem;
    background: #fbfcfa;
}

.facilities-admin-gallery-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 1rem;
}

.facilities-admin-photo-card {
    overflow: hidden;
    border: 1px solid var(--lsr-border);
    border-radius: 1rem;
    background: #fbfcfa;
}

.facilities-admin-photo-card > img {
    width: 100%;
    height: 220px;
    object-fit: cover;
}

.facilities-admin-photo-card-body {
    padding: 1rem;
}

@media (max-width: 991.98px) {
    .facilities-map-wrap,
    .facilities-map {
        min-height: 390px;
    }

    .facilities-outdoors-photo {
        max-height: 320px;
    }
}

@media (max-width: 767.98px) {
    .facilities-gallery-caption {
        right: .75rem;
        bottom: .75rem;
        left: .75rem;
        flex-direction: column;
        gap: .15rem;
        max-width: calc(100% - 1.5rem);
        padding: .55rem .7rem;
    }

    .facilities-rules-list {
        columns: 1;
    }

    .facilities-admin-gallery-grid {
        grid-template-columns: 1fr;
    }
}

@media (prefers-reduced-motion: reduce) {
    .facilities-gallery .carousel-item {
        transition: none !important;
    }
}


/* ============================================================
   Retreats page + Retreats content admin — 2026-09-08
   ============================================================ */

.retreat-invite-card {
    position: relative;
    overflow: hidden;
}

.retreat-invite-card::before {
    content: "";
    position: absolute;
    top: 0;
    bottom: 0;
    left: 0;
    width: 4px;
    background: var(--lsr-clay);
}

.retreat-way-card {
    padding: 1.6rem;
}

.retreat-way-card .icon-disc {
    margin-bottom: .9rem;
}

.retreat-fit-panel {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 1rem;
    max-width: 1040px;
    margin-inline: auto;
}

.retreat-fit-column {
    min-height: 100%;
    padding: clamp(1.35rem, 3vw, 2rem);
    border: 1px solid var(--lsr-border);
    border-radius: var(--lsr-radius);
    background: #fff;
    box-shadow: 0 .4rem 1.25rem rgba(31, 50, 40, .045);
}

.retreat-fit-column h3 {
    margin-bottom: 1rem;
    font-size: 1.35rem;
}

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

.retreat-fit-list li {
    position: relative;
    margin-bottom: .72rem;
    padding-left: 1.7rem;
}

.retreat-fit-list li:last-child {
    margin-bottom: 0;
}

.retreat-fit-good .retreat-fit-list li::before,
.retreat-fit-limits .retreat-fit-list li::before {
    position: absolute;
    left: 0;
    top: 0;
    font-weight: 900;
}

.retreat-fit-good .retreat-fit-list li::before {
    content: "✓";
    color: var(--lsr-forest);
}

.retreat-fit-limits .retreat-fit-list li::before {
    content: "–";
    color: var(--lsr-clay);
}

.retreat-type-row {
    margin-bottom: clamp(2.5rem, 6vw, 5rem);
}

.retreat-prevention-panel {
    display: grid;
    grid-template-columns: minmax(0, 1.1fr) minmax(320px, .9fr);
    gap: clamp(1.5rem, 4vw, 3.5rem);
    align-items: center;
    padding: clamp(1.6rem, 4vw, 3rem);
    border: 1px solid var(--lsr-border);
    border-radius: calc(var(--lsr-radius) + .25rem);
    background:
        radial-gradient(circle at 95% 5%, rgba(215, 198, 166, .32), transparent 36%),
        #fff;
    box-shadow: var(--lsr-shadow);
}

.retreat-prevention-copy .lead {
    color: #465149;
    font-size: clamp(1.05rem, 2vw, 1.22rem);
}

.retreat-prevention-list-wrap {
    padding: 1.25rem 1.35rem;
    border: 1px solid rgba(47, 74, 58, .12);
    border-radius: 1rem;
    background: rgba(246, 242, 233, .72);
}

.retreat-prevention-list li {
    margin-bottom: .8rem;
}

.retreat-prevention-list li:last-child {
    margin-bottom: 0;
}

.retreat-admin-jump {
    display: flex;
    flex-wrap: wrap;
    gap: .55rem;
    padding: .9rem;
    border: 1px solid var(--lsr-border);
    border-radius: 1rem;
    background: #fff;
    box-shadow: 0 .25rem .9rem rgba(31, 50, 40, .035);
}

.retreat-admin-jump a {
    display: inline-flex;
    align-items: center;
    min-height: 38px;
    padding: .45rem .72rem;
    border: 1px solid var(--lsr-border);
    border-radius: 999px;
    color: var(--lsr-forest-dark);
    background: var(--lsr-cream);
    font-size: .82rem;
    font-weight: 700;
    text-decoration: none;
}

.retreat-admin-jump a:hover,
.retreat-admin-jump a:focus-visible {
    color: #fff;
    border-color: var(--lsr-forest);
    background: var(--lsr-forest);
}

.retreats-content-admin .staff-panel[id] {
    scroll-margin-top: 7rem;
}

.retreat-admin-preview {
    width: 100%;
    max-height: 220px;
    object-fit: cover;
}

@media (max-width: 991.98px) {
    .retreat-fit-panel,
    .retreat-prevention-panel {
        grid-template-columns: 1fr;
    }

    .retreat-prevention-list-wrap {
        padding: 1rem 1.1rem;
    }
}

@media (max-width: 575.98px) {
    .retreat-admin-jump {
        gap: .4rem;
        padding: .7rem;
    }

    .retreat-admin-jump a {
        min-height: 36px;
        padding: .4rem .62rem;
        font-size: .76rem;
    }

    .retreat-fit-column {
        padding: 1.2rem;
    }
}

/* ==========================================================================
   Retreats content admin desktop workspace + live preview — 2026-09-09
   ========================================================================== */

.retreat-admin-wide-container {
    width: min(calc(100% - clamp(1.5rem, 4vw, 4rem)), 1880px);
    margin-right: auto;
    margin-left: auto;
}

.retreat-admin-work-area {
    overflow: visible;
}

.retreat-admin-workspace {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(350px, 430px);
    gap: clamp(1.25rem, 2.2vw, 2.25rem);
    align-items: start;
}

.retreat-admin-editor {
    min-width: 0;
}

.retreats-content-admin .retreat-admin-jump {
    position: sticky;
    top: 86px;
    z-index: 25;
    margin-bottom: 1.25rem !important;
    background: rgba(255, 255, 255, .96);
    backdrop-filter: blur(10px);
}

.retreats-content-admin .retreat-admin-jump a.is-active,
.retreats-content-admin .retreat-admin-jump a[aria-current="location"] {
    color: #fff;
    border-color: var(--lsr-forest);
    background: var(--lsr-forest);
    box-shadow: 0 .25rem .7rem rgba(31, 50, 40, .16);
}

.retreats-content-admin .retreat-admin-section-card {
    position: relative;
    border-width: 2px;
    border-color: rgba(47, 74, 58, .19);
    box-shadow: 0 .5rem 1.35rem rgba(31, 50, 40, .055);
    transition: border-color .18s ease, box-shadow .18s ease;
}

.retreats-content-admin .retreat-admin-section-card::before {
    content: "Section";
    position: absolute;
    top: .85rem;
    right: 1rem;
    padding: .23rem .52rem;
    border-radius: 999px;
    color: var(--lsr-muted);
    background: var(--lsr-cream);
    font-size: .65rem;
    font-weight: 800;
    letter-spacing: .08em;
    text-transform: uppercase;
}

.retreats-content-admin .retreat-admin-section-card.is-current-editor-section {
    border-color: rgba(154, 102, 72, .55);
    box-shadow:
        0 0 0 3px rgba(154, 102, 72, .08),
        0 .7rem 1.6rem rgba(31, 50, 40, .075);
}

.retreat-admin-child-zone {
    margin-top: -.45rem;
    padding: clamp(1rem, 2vw, 1.4rem);
    border: 1px solid rgba(47, 74, 58, .12);
    border-top: 0;
    border-radius: 0 0 calc(var(--lsr-radius) + .15rem) calc(var(--lsr-radius) + .15rem);
    background:
        linear-gradient(180deg, rgba(235, 227, 212, .46), rgba(246, 242, 233, .58));
}

.retreat-admin-child-heading {
    display: flex;
    justify-content: space-between;
    align-items: end;
    gap: 1rem;
    margin-bottom: 1rem;
    padding-bottom: .9rem;
    border-bottom: 1px solid rgba(47, 74, 58, .12);
}

.retreat-admin-child-heading .eyebrow {
    margin-bottom: .3rem;
}

.retreat-admin-child-count {
    flex: 0 0 auto;
    padding: .35rem .65rem;
    border-radius: 999px;
    color: var(--lsr-forest-dark);
    background: rgba(255, 255, 255, .8);
    font-size: .75rem;
    font-weight: 800;
}

.retreat-admin-card-grid {
    display: grid;
    gap: 1rem;
}

.retreat-admin-card-grid-practical {
    grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
}

.retreat-admin-card-grid-types {
    grid-template-columns: repeat(auto-fit, minmax(390px, 1fr));
}

.retreat-admin-item-card {
    min-width: 0;
    padding: 1rem;
    border: 1px solid rgba(47, 74, 58, .18);
    border-radius: 1rem;
    background: #fff;
    box-shadow: 0 .25rem .8rem rgba(31, 50, 40, .04);
}

.retreat-admin-item-card.is-hidden-item {
    background: #f5f5f2;
    border-style: dashed;
}

.retreat-admin-add-card {
    border: 2px dashed rgba(113, 129, 111, .36);
    background: rgba(255, 255, 255, .72);
}

.retreat-admin-item-card-header {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    gap: 1rem;
    margin-bottom: .95rem;
    padding-bottom: .8rem;
    border-bottom: 1px solid rgba(47, 74, 58, .1);
}

.retreat-admin-item-kicker,
.retreat-admin-preview-kicker {
    display: block;
    margin-bottom: .16rem;
    color: var(--lsr-clay);
    font-size: .67rem;
    font-weight: 800;
    letter-spacing: .09em;
    text-transform: uppercase;
}

.retreat-admin-item-symbol {
    width: 2rem;
    height: 2rem;
    flex: 0 0 2rem;
    display: inline-grid;
    place-items: center;
    border-radius: 50%;
    color: var(--lsr-forest-dark);
    background: var(--lsr-cream-deep);
    font-size: 1.15rem;
    line-height: 1;
}

.retreat-admin-status-pill {
    flex: 0 0 auto;
    padding: .28rem .52rem;
    border-radius: 999px;
    color: #315f3a;
    background: #e8f4ea;
    font-size: .67rem;
    font-weight: 800;
}

.retreat-admin-status-pill.is-off {
    color: #6a625b;
    background: #e8e7e4;
}

.retreat-admin-delete-form {
    margin-top: .8rem;
    padding-top: .7rem;
    border-top: 1px solid rgba(47, 74, 58, .09);
    text-align: right;
}

.retreat-admin-card-image {
    width: 100%;
    height: 190px;
    margin-bottom: .35rem;
    border-radius: .8rem;
    object-fit: cover;
}

.retreat-admin-preview-column {
    min-width: 0;
    position: sticky;
    top: 86px;
}

.retreat-admin-preview-shell {
    overflow: hidden;
    border: 1px solid rgba(47, 74, 58, .2);
    border-radius: 1rem;
    background: #fff;
    box-shadow: 0 .75rem 2rem rgba(31, 50, 40, .09);
}

.retreat-admin-preview-header {
    min-height: 60px;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: .8rem;
    padding: .7rem .8rem .7rem 1rem;
    border-bottom: 1px solid var(--lsr-border);
    background: #fff;
}

.retreat-admin-preview-header strong {
    display: block;
    color: var(--lsr-forest-dark);
    font-size: .95rem;
    line-height: 1.2;
}

.retreat-admin-preview-actions {
    display: flex;
    gap: .35rem;
}

.retreat-admin-preview-actions .btn {
    min-width: 34px;
    padding-right: .45rem;
    padding-left: .45rem;
}

.retreat-admin-preview-viewport {
    height: min(72vh, 790px);
    min-height: 540px;
    position: relative;
    overflow: hidden;
    background: #eef0ec;
}

.retreat-admin-preview-viewport iframe {
    width: 333.333333%;
    height: 250vh;
    min-height: 1900px;
    display: block;
    border: 0;
    transform: scale(.3);
    transform-origin: 0 0;
    pointer-events: none;
    background: #fff;
}

.retreat-admin-preview-note {
    padding: .65rem .85rem;
    color: var(--lsr-muted);
    border-top: 1px solid var(--lsr-border);
    background: #fafbf9;
    font-size: .75rem;
    line-height: 1.45;
}

/* This class is applied by the admin page inside the same-origin public preview iframe. */
#main-content > section.retreat-admin-preview-active {
    outline: 10px solid rgba(194, 128, 63, .95);
    outline-offset: -10px;
    box-shadow: inset 0 0 0 5px rgba(255, 244, 213, .7);
    scroll-margin-block: 22vh;
}

@media (min-width: 1650px) {
    .retreat-admin-workspace {
        grid-template-columns: minmax(0, 1fr) minmax(400px, 470px);
    }

    .retreat-admin-card-grid-practical {
        grid-template-columns: repeat(auto-fit, minmax(320px, 1fr));
    }
}

@media (max-width: 1199.98px) {
    .retreat-admin-workspace {
        grid-template-columns: 1fr;
    }

    .retreat-admin-preview-column {
        position: static;
        order: -1;
        width: min(100%, 720px);
        margin-right: auto;
        margin-left: auto;
    }

    .retreat-admin-preview-viewport {
        height: 430px;
        min-height: 430px;
    }

    .retreats-content-admin .retreat-admin-jump {
        top: 80px;
    }
}

@media (max-width: 991.98px) {
    .retreat-admin-wide-container {
        width: min(calc(100% - 1.5rem), 960px);
    }

    .retreat-admin-preview-column {
        display: none;
    }

    .retreats-content-admin .retreat-admin-jump {
        position: static;
    }

    .retreat-admin-card-grid-types {
        grid-template-columns: 1fr;
    }
}

@media (max-width: 575.98px) {
    .retreat-admin-wide-container {
        width: min(calc(100% - 1rem), 960px);
    }

    .retreat-admin-child-zone {
        margin-top: -.2rem;
        padding: .75rem;
    }

    .retreat-admin-child-heading {
        align-items: flex-start;
        flex-direction: column;
    }

    .retreat-admin-card-grid-practical,
    .retreat-admin-card-grid-types {
        grid-template-columns: 1fr;
    }

    .retreat-admin-item-card {
        padding: .85rem;
    }

    .retreats-content-admin .retreat-admin-section-card::before {
        display: none;
    }
}

@media (prefers-reduced-motion: reduce) {
    .retreats-content-admin .retreat-admin-section-card {
        transition: none;
    }
}

/* ==========================================================================
   Retreats content admin compact sticky toolbar — 2026-09-09
   ========================================================================== */

.retreats-content-admin {
    --retreat-admin-site-header-height: 76px;
    --retreat-admin-toolbar-height: 112px;
    --retreat-admin-content-offset: 204px;
}

.retreats-content-admin .retreat-admin-sticky-header {
    position: sticky;
    top: var(--retreat-admin-site-header-height);
    z-index: 1025;
    padding: .65rem 0 .55rem;
    border-bottom: 1px solid var(--lsr-border);
    background: rgba(255, 255, 255, .97);
    box-shadow: 0 .45rem 1.25rem rgba(31, 50, 40, .07);
    backdrop-filter: blur(12px);
}

.retreat-admin-toolbar-row {
    min-height: 30px;
    display: flex;
    align-items: center;
    gap: .9rem;
    margin-bottom: .5rem;
}

.retreat-admin-toolbar-back {
    flex: 0 0 auto;
    white-space: nowrap;
}

.retreat-admin-toolbar-title {
    min-width: 0;
    display: flex;
    align-items: baseline;
    gap: .45rem;
    padding-left: .9rem;
    border-left: 1px solid var(--lsr-border);
}

.retreat-admin-toolbar-kicker {
    color: var(--lsr-clay);
    font-size: .7rem;
    font-weight: 800;
    letter-spacing: .09em;
    text-transform: uppercase;
    white-space: nowrap;
}

.retreat-admin-toolbar-divider {
    color: rgba(47, 74, 58, .35);
    font-size: .72rem;
}

.retreat-admin-toolbar-heading {
    margin: 0;
    color: var(--lsr-forest-dark);
    font-family: Georgia, "Times New Roman", serif;
    font-size: 1.15rem;
    font-weight: 700;
    line-height: 1.15;
    white-space: nowrap;
}

.retreats-content-admin .retreat-admin-sticky-header .retreat-admin-jump {
    position: static;
    top: auto;
    z-index: auto;
    margin: 0 !important;
    padding: .38rem;
    overflow-x: auto;
    flex-wrap: nowrap;
    scrollbar-width: thin;
    background: var(--lsr-cream);
    backdrop-filter: none;
}

.retreats-content-admin .retreat-admin-sticky-header .retreat-admin-jump a {
    flex: 0 0 auto;
    padding: .42rem .68rem;
    font-size: .75rem;
    white-space: nowrap;
}

.retreat-admin-toolbar-alerts {
    display: grid;
    gap: .35rem;
    margin-top: .45rem;
}

.retreat-admin-toolbar-alerts .alert {
    margin: 0;
    padding: .48rem .7rem;
    border-radius: .7rem;
    font-size: .82rem;
    line-height: 1.3;
}

.retreats-content-admin .retreat-admin-work-area {
    padding-top: 1.25rem !important;
}

.retreats-content-admin .retreat-admin-section-card {
    scroll-margin-top: var(--retreat-admin-content-offset);
}

.retreats-content-admin .retreat-admin-preview-column {
    top: calc(var(--retreat-admin-content-offset) - 4px);
}

@media (max-width: 991.98px) {
    .retreats-content-admin .retreat-admin-sticky-header {
        padding-top: .5rem;
        padding-bottom: .45rem;
    }

    .retreat-admin-toolbar-row {
        gap: .65rem;
        margin-bottom: .4rem;
    }

    .retreat-admin-toolbar-title {
        gap: .35rem;
        padding-left: .65rem;
    }

    .retreat-admin-toolbar-kicker {
        font-size: .64rem;
    }

    .retreat-admin-toolbar-heading {
        font-size: 1rem;
    }
}

@media (max-width: 575.98px) {
    .retreat-admin-toolbar-row {
        align-items: flex-start;
        flex-wrap: wrap;
    }

    .retreat-admin-toolbar-title {
        border-left: 0;
        padding-left: 0;
    }

    .retreats-content-admin .retreat-admin-sticky-header .retreat-admin-jump {
        margin-right: -.15rem !important;
        margin-left: -.15rem !important;
    }
}


/* ==========================================================================\n   Retreats content admin alerts + page-link controls — 2026-09-09\n   ========================================================================== */

.retreat-admin-toolbar-row {
    justify-content: flex-start;
}

.retreat-admin-toolbar-alerts {
    min-width: 0;
    max-width: min(52vw, 560px);
    display: flex;
    align-items: center;
    gap: .4rem;
    margin-top: 0;
    margin-left: auto;
}

.retreat-admin-toolbar-alerts .alert {
    min-width: 0;
    margin: 0;
    padding: .4rem 2.15rem .4rem .7rem;
    border-radius: .65rem;
    font-size: .78rem;
    line-height: 1.25;
    white-space: normal;
}

.retreat-admin-toolbar-alerts .btn-close {
    top: 50%;
    right: .55rem;
    padding: .35rem;
    transform: translateY(-50%) scale(.72);
}

.retreat-admin-page-links-card {
    padding: clamp(1rem, 2vw, 1.35rem);
    border: 1px dashed rgba(47, 74, 58, .28);
    border-radius: var(--lsr-radius);
    background: linear-gradient(135deg, rgba(246, 242, 233, .78), #fff 70%);
    box-shadow: 0 .25rem .9rem rgba(31, 50, 40, .035);
}

.retreat-admin-page-link-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: .85rem;
}

.retreat-admin-page-link-option {
    min-width: 0;
    padding: 1rem;
    border: 1px solid var(--lsr-border);
    border-radius: .9rem;
    background: #fff;
}

.retreat-admin-page-link-option .form-switch {
    min-height: 1.5rem;
}

@media (max-width: 991.98px) {
    .retreat-admin-toolbar-alerts {
        max-width: 44vw;
    }
}

@media (max-width: 767.98px) {
    .retreat-admin-toolbar-row {
        flex-wrap: wrap;
    }

    .retreat-admin-toolbar-alerts {
        width: 100%;
        max-width: none;
        margin-left: 0;
        order: 3;
    }

    .retreat-admin-toolbar-alerts .alert {
        width: 100%;
    }

    .retreat-admin-page-link-grid {
        grid-template-columns: 1fr;
    }
}

/* ==========================================================================\n   Universal public website content editor — 2026-09-09\n   ========================================================================== */
.content-editor {
    --content-editor-site-header-height: 76px;
    --content-editor-toolbar-height: 104px;
    --content-editor-content-offset: 196px;
    background: #f5f6f3;
}

.content-editor-wide-container {
    width: 100%;
    max-width: none;
    margin-inline: auto;
    padding-inline: clamp(.8rem, 2vw, 2rem);
}

.content-editor-sticky-header {
    position: sticky;
    top: var(--content-editor-site-header-height);
    z-index: 1020;
    padding: .58rem 0 .62rem;
    border-bottom: 1px solid var(--lsr-border);
    background: rgba(255, 255, 255, .985);
    box-shadow: 0 .45rem 1.35rem rgba(31, 50, 40, .07);
    backdrop-filter: blur(12px);
}

.content-editor-toolbar-row {
    min-height: 32px;
    display: flex;
    align-items: center;
    gap: .55rem;
    min-width: 0;
}

.content-editor-toolbar-back {
    flex: 0 0 auto;
    margin-right: .2rem;
    white-space: nowrap;
}

.content-editor-toolbar-kicker {
    flex: 0 0 auto;
    color: var(--lsr-clay);
    font-size: .7rem;
    font-weight: 800;
    letter-spacing: .11em;
    text-transform: uppercase;
    white-space: nowrap;
}

.content-editor-toolbar-divider {
    color: #a9afa9;
}

.content-editor-toolbar-heading {
    flex: 0 0 auto;
    margin: 0;
    color: var(--lsr-forest-dark);
    font-family: Georgia, "Times New Roman", serif;
    font-size: 1.28rem;
    font-weight: 700;
    line-height: 1.15;
    white-space: nowrap;
}

.content-editor-inline-alert {
    min-width: 0;
    max-width: min(520px, 42vw);
    margin-left: .35rem;
    padding: .35rem 2.15rem .35rem .7rem;
    border-radius: .6rem;
    font-size: .82rem;
    line-height: 1.25;
    white-space: normal;
}

.content-editor-inline-alert .btn-close {
    width: .65rem;
    height: .65rem;
    padding: .62rem;
}

.content-editor-jump {
    display: flex;
    gap: .35rem;
    overflow-x: auto;
    margin-top: .48rem;
    padding-bottom: .05rem;
    scrollbar-width: thin;
}

.content-editor-jump a {
    flex: 0 0 auto;
    padding: .3rem .62rem;
    border: 1px solid var(--lsr-border);
    border-radius: 999px;
    color: var(--lsr-forest-dark);
    background: #fff;
    font-size: .76rem;
    font-weight: 700;
    line-height: 1.2;
    text-decoration: none;
}

.content-editor-jump a:hover,
.content-editor-jump a:focus,
.content-editor-jump a.is-active {
    color: #fff;
    border-color: var(--lsr-forest);
    background: var(--lsr-forest);
}

.content-editor-work-area {
    padding-top: 1.2rem !important;
}

.content-editor-workspace {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(300px, 26vw);
    align-items: start;
    gap: clamp(1rem, 2vw, 1.75rem);
}

.content-editor-main {
    min-width: 0;
}

.content-editor-section-card,
.content-editor .accordion-item[data-editor-section] {
    position: relative;
    scroll-margin-top: var(--content-editor-content-offset);
    border: 1px solid rgba(47, 74, 58, .18) !important;
    border-radius: 1rem !important;
    background: #fff;
    box-shadow: 0 .35rem 1.15rem rgba(31, 50, 40, .045);
    transition: border-color .15s ease, box-shadow .15s ease;
}

.content-editor-section-card::before,
.content-editor .accordion-item[data-editor-section]::before {
    content: "";
    position: absolute;
    inset: 0 auto 0 0;
    width: 4px;
    border-radius: 1rem 0 0 1rem;
    background: transparent;
    pointer-events: none;
}

.content-editor-section-card.is-current-editor-section,
.content-editor .accordion-item[data-editor-section].is-current-editor-section {
    border-color: rgba(47, 74, 58, .48) !important;
    box-shadow: 0 .7rem 1.8rem rgba(31, 50, 40, .09);
}

.content-editor-section-card.is-current-editor-section::before,
.content-editor .accordion-item[data-editor-section].is-current-editor-section::before {
    background: var(--lsr-clay);
}

.content-editor-section-heading {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    gap: 1rem;
    margin-bottom: 1.15rem;
    padding-bottom: .85rem;
    border-bottom: 1px solid var(--lsr-border);
}

.content-editor-section-heading .eyebrow {
    margin-bottom: .3rem;
}

.content-editor-child-zone {
    margin: -.15rem 0 2rem;
    padding: 1rem;
    border: 1px dashed rgba(47, 74, 58, .22);
    border-radius: 1rem;
    background: rgba(246, 242, 233, .52);
}

.content-editor-child-heading {
    display: flex;
    justify-content: space-between;
    align-items: end;
    gap: 1rem;
    margin-bottom: .85rem;
}

.content-editor-child-count,
.content-editor-status-pill {
    display: inline-flex;
    align-items: center;
    padding: .28rem .55rem;
    border-radius: 999px;
    color: #315f3a;
    background: #e8f4ea;
    font-size: .7rem;
    font-weight: 800;
    line-height: 1.1;
}

.content-editor-status-pill.is-off {
    color: #687078;
    background: #e9ecef;
}

.content-editor-card-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(min(100%, 280px), 1fr));
    gap: .85rem;
}

.content-editor-card-grid.is-wide {
    grid-template-columns: repeat(auto-fit, minmax(min(100%, 360px), 1fr));
}

.content-editor-item-card,
.content-editor-main details.content-editor-item-card {
    min-width: 0;
    padding: 1rem;
    border: 1px solid var(--lsr-border);
    border-radius: .85rem;
    background: #fff;
    box-shadow: 0 .25rem .85rem rgba(31, 50, 40, .04);
}

.content-editor-item-card.is-hidden-item {
    border-style: dashed;
    opacity: .72;
    background: #f7f7f5;
}

.content-editor-item-card-header {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    gap: .75rem;
    margin-bottom: .85rem;
}

.content-editor-item-kicker,
.content-editor-preview-kicker {
    display: block;
    margin-bottom: .18rem;
    color: var(--lsr-clay);
    font-size: .66rem;
    font-weight: 800;
    letter-spacing: .09em;
    text-transform: uppercase;
}

.content-editor-card-image {
    width: 100%;
    height: 170px;
    margin-bottom: .8rem;
    border-radius: .65rem;
    object-fit: cover;
}

.content-editor-delete-form {
    padding-top: .65rem;
    margin-top: .75rem;
    border-top: 1px solid var(--lsr-border);
}

.content-editor-preview-column {
    position: sticky;
    top: calc(var(--content-editor-content-offset) - 4px);
    min-width: 0;
}

.content-editor-preview-shell {
    overflow: hidden;
    border: 1px solid var(--lsr-border);
    border-radius: 1rem;
    background: #fff;
    box-shadow: var(--lsr-shadow);
}

.content-editor-preview-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: .75rem;
    padding: .72rem .8rem;
    border-bottom: 1px solid var(--lsr-border);
    background: var(--lsr-cream);
}

.content-editor-preview-header strong {
    display: block;
    color: var(--lsr-forest-dark);
    font-size: .85rem;
}

.content-editor-preview-viewport {
    height: min(64vh, 690px);
    min-height: 430px;
    overflow: hidden;
    background: #fff;
}

.content-editor-preview-viewport iframe {
    width: 100%;
    height: 100%;
    display: block;
    border: 0;
    background: #fff;
}

.content-editor-preview-note {
    padding: .62rem .8rem;
    color: var(--lsr-muted);
    border-top: 1px solid var(--lsr-border);
    background: #fafbf9;
    font-size: .72rem;
    line-height: 1.4;
}

#main-content > section.content-editor-preview-active,
#main-content > .content-editor-preview-active,
.content-editor-preview-active {
    position: relative;
    z-index: 1;
    outline: 5px solid rgba(154, 102, 72, .9) !important;
    outline-offset: -5px;
    box-shadow: inset 0 0 0 2px rgba(255,255,255,.72) !important;
}

/* Home's older accordion markup is presented as the same open section-card UI. */
.content-editor .content-editor-home-accordion > .accordion-item {
    margin-bottom: 1rem !important;
    overflow: visible !important;
}
.content-editor .content-editor-home-accordion > .accordion-item > .accordion-header {
    display: none;
}
.content-editor .content-editor-home-accordion > .accordion-item > .accordion-collapse {
    display: block !important;
}
.content-editor .content-editor-home-accordion > .accordion-item > .accordion-collapse > .accordion-body {
    padding: 1.25rem !important;
}
.content-editor .content-editor-home-accordion .accordion-body > .staff-panel:first-child {
    border: 0;
    padding: 0;
    box-shadow: none;
}
.content-editor .content-editor-home-accordion .accordion-body > details {
    margin-top: .85rem;
}

@media (max-width: 1199.98px) {
    .content-editor-workspace {
        grid-template-columns: minmax(0, 1fr) minmax(280px, 34vw);
    }
    .content-editor-inline-alert {
        max-width: 34vw;
    }
}

@media (max-width: 991.98px) {
    .content-editor-sticky-header {
        position: relative;
        top: auto;
    }
    .content-editor-workspace {
        grid-template-columns: 1fr;
    }
    .content-editor-preview-column {
        display: none;
    }
    .content-editor-toolbar-row {
        flex-wrap: wrap;
    }
    .content-editor-inline-alert {
        width: 100%;
        max-width: none;
        margin-left: 0;
    }
}

@media (max-width: 575.98px) {
    .content-editor-wide-container {
        padding-inline: .65rem;
    }
    .content-editor-toolbar-kicker,
    .content-editor-toolbar-divider {
        display: none;
    }
    .content-editor-toolbar-heading {
        font-size: 1.1rem;
    }
    .content-editor-toolbar-back {
        width: 100%;
    }
    .content-editor-card-grid,
    .content-editor-card-grid.is-wide {
        grid-template-columns: 1fr;
    }
}

@media (prefers-reduced-motion: reduce) {
    .content-editor-section-card,
    .content-editor .accordion-item[data-editor-section] {
        transition: none;
    }
}

/* ==========================================================================\n   Data-driven public navigation styles\n   ========================================================================== */
.site-nav-dynamic-item .nav-link,
.site-nav-dynamic-item .site-nav-dynamic-link {
    min-height: 44px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border-radius: .65rem;
    padding: .65rem .8rem;
    text-decoration: none;
}
.site-nav-dynamic-item.is-solid .site-nav-dynamic-link {
    border-radius: 999px;
    padding: .7rem 1.2rem;
    color: #fff;
    background: var(--lsr-forest);
    border: 1px solid var(--lsr-forest);
    font-weight: 700;
}
.site-nav-dynamic-item.is-solid .site-nav-dynamic-link:hover,
.site-nav-dynamic-item.is-solid .site-nav-dynamic-link:focus {
    color: #fff;
    background: var(--lsr-forest-dark);
    border-color: var(--lsr-forest-dark);
}
.site-nav-dynamic-item.is-link .site-nav-dynamic-link {
    color: var(--lsr-ink);
    font-weight: 600;
}
.site-nav-dynamic-item.is-link .site-nav-dynamic-link:hover,
.site-nav-dynamic-item.is-link .site-nav-dynamic-link:focus,
.site-nav-dynamic-item.is-link .site-nav-dynamic-link.active {
    color: var(--lsr-forest);
    background: var(--lsr-cream);
}
@media (max-width: 991.98px) {
    .site-nav-dynamic-item .site-nav-dynamic-link {
        width: 100%;
        justify-content: flex-start;
        margin-bottom: .25rem;
    }
}

/* Website-content central navigation editor */
.site-nav-editor-grid,
.site-footer-editor-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(min(100%, 320px), 1fr));
    gap: .9rem;
}
.site-nav-editor-card,
.site-footer-editor-card {
    padding: 1rem;
    border: 1px solid var(--lsr-border);
    border-radius: .85rem;
    background: #fff;
}
.site-nav-style-preview {
    min-height: 42px;
    display: flex;
    align-items: center;
    margin-top: .75rem;
    padding: .55rem .7rem;
    border: 1px dashed var(--lsr-border);
    border-radius: .65rem;
    background: #fafbf9;
}


.content-editor .content-editor-home-accordion .accordion-body {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(min(100%, 300px), 1fr));
    gap: .85rem;
}
.content-editor .content-editor-home-accordion .accordion-body > .staff-panel:first-child,
.content-editor .content-editor-home-accordion .accordion-body > form,
.content-editor .content-editor-home-accordion .accordion-body > .staff-panel-heading,
.content-editor .content-editor-home-accordion .accordion-body > p:first-child {
    grid-column: 1 / -1;
}
.content-editor .content-editor-home-accordion .accordion-body > details {
    margin-top: 0;
}
.content-editor-mini-gallery {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(92px, 1fr));
    gap: .55rem;
}
.content-editor-mini-gallery img {
    width: 100%;
    height: 88px;
    object-fit: cover;
    border-radius: .55rem;
    border: 1px solid var(--lsr-border);
}
.content-editor-subsection-form {
    padding: .9rem;
    border: 1px dashed var(--lsr-border);
    border-radius: .8rem;
    background: #fafbf9;
}

.site-footer address {
    font-style: normal;
}

/* ========================================================================== 
   Universal public page builder — 2026-09-09
   ========================================================================== */
.content-builder-section-toolbar {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 1rem;
    margin: -1.25rem -1.25rem 1.15rem;
    padding: .55rem .8rem;
    border-bottom: 1px solid rgba(47,74,58,.16);
    border-radius: .95rem .95rem 0 0;
    background: linear-gradient(90deg, rgba(47,74,58,.07), rgba(246,242,233,.72));
}
.content-editor .accordion-item[data-editor-section] > .content-builder-section-toolbar {
    margin: 0;
    border-radius: 0;
}
.content-builder-section-toolbar-copy {
    display: flex;
    align-items: baseline;
    gap: .55rem;
    min-width: 0;
}
.content-builder-section-toolbar-copy span {
    color: var(--lsr-forest-dark);
    font-size: .72rem;
    font-weight: 800;
    letter-spacing: .06em;
    text-transform: uppercase;
}
.content-builder-section-toolbar-copy small {
    color: var(--lsr-muted);
    font-size: .72rem;
}
.content-builder-modal .modal-content {
    border: 0;
    border-radius: 1rem;
    box-shadow: 0 1.5rem 4rem rgba(28,42,35,.22);
}
.content-builder-modal .modal-header {
    background: var(--lsr-cream);
}
.content-builder-element-form-shell,
.content-builder-new-page-panel {
    padding: 1rem;
    border: 1px solid var(--lsr-border);
    border-radius: .85rem;
    background: #fafbf9;
}
.content-builder-element-list {
    display: grid;
    gap: .7rem;
}
.content-builder-element-summary {
    padding: .85rem;
    border: 1px solid var(--lsr-border);
    border-radius: .75rem;
    background: #fff;
}
.content-builder-element-summary.is-hidden {
    opacity: .68;
    border-style: dashed;
}
.content-builder-page-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(min(100%, 280px), 1fr));
    gap: .85rem;
}
.content-builder-page-card {
    padding: 1rem;
    border: 1px solid var(--lsr-border);
    border-radius: .85rem;
    background: #fff;
}
.content-builder-page-card.is-inactive {
    background: #f7f7f5;
    border-style: dashed;
}
.content-builder-page-settings {
    border-left: 4px solid var(--lsr-clay);
}
.content-builder-add-section {
    border-style: dashed;
    background: rgba(246,242,233,.62);
}

/* Public supplemental elements */
.site-builder-elements-container {
    margin-top: 2rem;
}
.site-builder-elements {
    display: grid;
    gap: 1.25rem;
}
.site-builder-card-grid {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 1rem;
    counter-reset: builder-card;
}
.site-builder-card-grid.columns-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.site-builder-card-grid.columns-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.site-builder-card {
    position: relative;
    display: flex;
    flex-direction: column;
    min-width: 0;
    padding: 1.25rem;
    border: 1px solid var(--lsr-border);
    border-radius: 1rem;
    background: rgba(255,255,255,.94);
    box-shadow: 0 .35rem 1.1rem rgba(31,50,40,.06);
}
.site-builder-card-number {
    display: inline-grid;
    place-items: center;
    width: 2rem;
    height: 2rem;
    margin-bottom: .75rem;
    border-radius: 999px;
    color: #fff;
    background: var(--lsr-forest);
    font-size: .78rem;
    font-weight: 800;
}
.site-builder-card-image {
    width: calc(100% + 2.5rem);
    max-width: none;
    height: 210px;
    margin: -1.25rem -1.25rem 1rem;
    border-radius: 1rem 1rem 0 0;
    object-fit: cover;
}
.site-builder-element {
    max-width: 980px;
}
.site-builder-button-element {
    display: flex;
    flex-wrap: wrap;
    gap: .75rem;
}
.site-builder-video-element {
    width: min(100%, 920px);
}
.site-builder-image-element {
    margin: 0;
}
.site-builder-image-element img {
    display: block;
    width: min(100%, 980px);
    max-height: 650px;
    border-radius: 1rem;
    object-fit: cover;
}
.site-builder-image-element figcaption {
    margin-top: .55rem;
    color: var(--lsr-muted);
    font-size: .85rem;
}
[data-builder-layout="centered"] .site-builder-elements,
[data-builder-layout="callout"] .site-builder-elements {
    justify-items: center;
    text-align: center;
}
[data-builder-layout="callout"] .site-builder-elements-container {
    padding: 1.25rem;
    border-radius: 1rem;
    background: rgba(255,255,255,.12);
}
.site-builder-custom-page [data-builder-layout="cards"] .site-builder-card-grid {
    margin-top: .5rem;
}
.site-builder-custom-page .site-builder-custom-hero + .site-builder-custom-section {
    border-top: 0;
}

@media (max-width: 1199.98px) {
    .site-builder-card-grid.columns-4 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 767.98px) {
    .content-builder-section-toolbar {
        align-items: flex-start;
        flex-direction: column;
        margin-inline: -.9rem;
    }
    .content-builder-section-toolbar-copy {
        align-items: flex-start;
        flex-direction: column;
        gap: .1rem;
    }
    .site-builder-card-grid,
    .site-builder-card-grid.columns-2,
    .site-builder-card-grid.columns-4 {
        grid-template-columns: 1fr;
    }
    .site-builder-card-image { height: 190px; }
}
.site-builder-existing-card-grid {
    display: grid !important;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 1rem !important;
}
.site-builder-existing-card-grid.columns-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.site-builder-existing-card-grid.columns-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.site-builder-existing-card-grid > * {
    width: auto !important;
    max-width: none !important;
    margin: 0 !important;
}
.site-builder-existing-number {
    margin: .75rem;
}
@media (max-width: 1199.98px) {
    .site-builder-existing-card-grid.columns-4 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 767.98px) {
    .site-builder-existing-card-grid,
    .site-builder-existing-card-grid.columns-2,
    .site-builder-existing-card-grid.columns-4 { grid-template-columns: 1fr; }
}
[data-builder-layout="callout"] > .container,
[data-builder-layout="callout"] > .container-lg,
[data-builder-layout="callout"] > .container-xl {
    max-width: 1040px;
    padding: 2rem;
    border: 1px solid rgba(47,74,58,.14);
    border-radius: 1.25rem;
    background: rgba(255,255,255,.72);
    box-shadow: 0 .5rem 1.6rem rgba(31,50,40,.06);
}
.site-builder-image-top-row {
    display: flex;
    flex-wrap: wrap;
}
.site-builder-image-top-row > .site-builder-image-top-column {
    flex: 0 0 100% !important;
    width: 100% !important;
    max-width: 100% !important;
}
.site-builder-image-top-row > .site-builder-image-top-column img {
    max-height: 520px;
    object-fit: cover;
}

/* ============================================================
   Authenticated staff navigation — 2026-09-09
   ============================================================ */
.staff-site-header .navbar {
    background: #fff;
    border-bottom: 1px solid rgba(38, 55, 46, .12);
}

.staff-site-header .navbar > .container-fluid {
    min-height: 68px;
}

.staff-site-header .navbar-brand.dropdown-toggle::after {
    margin-left: .45rem;
    color: #68746d;
}

.staff-site-header .dropdown-menu {
    min-width: 230px;
    max-height: min(70vh, 560px);
    overflow-y: auto;
    border-color: rgba(38, 55, 46, .13);
    border-radius: 12px;
}

.staff-site-header .staff-navbar-links {
    font-size: .91rem;
}

.staff-site-header .staff-nav-link {
    padding-inline: .62rem;
    font-weight: 650;
    color: #425047;
    border-radius: 8px;
}

.staff-site-header .staff-nav-link:hover,
.staff-site-header .staff-nav-link.active {
    color: #22372c;
    background: #eef3ef;
}

.staff-site-header .staff-nav-prominent {
    white-space: nowrap;
}

.staff-site-header .staff-nav-prominent.active {
    box-shadow: 0 0 0 3px rgba(47, 74, 58, .13);
}

.staff-site-header .staff-nav-logout .btn {
    white-space: nowrap;
}

@media (max-width: 1199.98px) {
    .staff-site-header .navbar-collapse {
        padding: .75rem 0 1rem;
    }

    .staff-site-header .staff-navbar-links {
        align-items: stretch !important;
        gap: .2rem;
    }

    .staff-site-header .staff-nav-button-item {
        margin-block: .15rem;
    }

    .staff-site-header .staff-nav-prominent,
    .staff-site-header .staff-nav-logout .btn {
        width: 100%;
    }

    .staff-site-header .staff-nav-link {
        padding: .65rem .7rem;
    }

    .staff-site-header .staff-nav-logout {
        margin-top: .4rem;
    }
}

/* Contact / historical-data forms: keep examples visually distinct from saved text. */
.contact-admin-page .form-control::placeholder,
.historical-stay-admin .form-control::placeholder,
.contact-admin-page textarea::placeholder,
.historical-stay-admin textarea::placeholder {
    color: var(--bs-secondary-color);
    opacity: .52;
}

/* ============================================================
   Contacts: compact profile cards and streamlined editor
   ============================================================ */
.contact-person-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(min(100%, 28rem), 1fr));
    gap: 1rem;
}

.contact-person-card {
    min-width: 0;
    border: 1px solid rgba(39, 64, 47, .13);
    border-radius: .85rem;
    background: #fff;
    overflow: hidden;
}

.contact-person-card-header {
    display: flex;
    justify-content: space-between;
    gap: 1rem;
    padding: .85rem 1rem .72rem;
    border-bottom: 1px solid rgba(39, 64, 47, .09);
    background: rgba(247, 250, 247, .72);
}

.contact-person-card-header h3 {
    margin: 0;
    font-size: 1rem;
    font-weight: 750;
    color: #2f4938;
}

.contact-children-card {
    grid-column: 1 / -1;
    min-width: 0;
    border: 1px solid rgba(39, 64, 47, .13);
    border-radius: .85rem;
    background: #fff;
    overflow: hidden;
}

.contact-children-card-header {
    padding: .7rem 1rem .6rem;
    border-bottom: 1px solid rgba(39, 64, 47, .09);
    background: rgba(247, 250, 247, .72);
}

.contact-children-card-header h3 {
    margin: 0;
    font-size: 1rem;
    font-weight: 750;
    color: #2f4938;
}

.contact-children-list {
    display: grid;
}

.contact-child-row {
    display: grid;
    grid-template-columns: minmax(8rem, 1.15fr) minmax(12rem, 1.65fr) minmax(9rem, 1fr) minmax(9rem, 1fr);
    align-items: center;
    gap: .75rem;
    min-height: 2.75rem;
    padding: .45rem .8rem;
    border-bottom: 1px solid rgba(39, 64, 47, .08);
}

.contact-child-row:last-child {
    border-bottom: 0;
}

.contact-child-name,
.contact-child-detail {
    min-width: 0;
    display: flex;
    align-items: center;
    gap: .4rem;
}

.contact-child-name {
    flex-wrap: wrap;
}

.contact-child-detail a,
.contact-child-detail span:not(.contact-child-icon) {
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.contact-child-icon {
    flex: 0 0 auto;
    width: 1rem;
    height: 1rem;
    color: #718077;
}

.contact-child-icon svg {
    display: block;
    width: 100%;
    height: 100%;
}

.contact-child-row .contact-copy-button {
    flex: 0 0 auto;
}

@media (max-width: 991.98px) {
    .contact-child-row {
        grid-template-columns: minmax(8rem, 1fr) minmax(12rem, 1.5fr) minmax(8rem, 1fr);
    }
    .contact-child-birthday {
        grid-column: 2 / -1;
    }
}

@media (max-width: 767.98px) {
    .contact-child-row {
        grid-template-columns: 1fr;
        gap: .3rem;
        padding: .65rem .8rem;
    }
    .contact-child-birthday {
        grid-column: auto;
    }
    .contact-child-detail:empty {
        display: none;
    }
}

.contact-person-meta {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: .4rem;
    margin-top: .18rem;
    color: var(--bs-secondary-color);
    font-size: .77rem;
}

.contact-info-list {
    display: grid;
}

.contact-info-row {
    position: relative;
    display: grid;
    grid-template-columns: 1.7rem minmax(0, 1fr) 2rem;
    align-items: center;
    gap: .55rem;
    min-height: 2.65rem;
    padding: .45rem .55rem .45rem .8rem;
    border-bottom: 1px solid rgba(39, 64, 47, .08);
}

.contact-info-row:last-child {
    border-bottom: 0;
}

.contact-info-row-wide {
    align-items: start;
}

.contact-info-icon {
    display: inline-grid;
    place-items: center;
    width: 1.45rem;
    height: 1.45rem;
    color: #65756a;
}

.contact-info-icon svg,
.contact-copy-button svg {
    display: block;
    width: 1.05rem;
    height: 1.05rem;
}

.contact-info-body {
    min-width: 0;
}

.contact-info-label {
    display: block;
    margin-bottom: .05rem;
    color: var(--bs-secondary-color);
    font-size: .7rem;
    font-weight: 650;
    line-height: 1.15;
}

.contact-info-value {
    min-width: 0;
    color: #263d30;
    font-size: .92rem;
    line-height: 1.35;
    overflow-wrap: anywhere;
}

.contact-nowrap {
    white-space: nowrap;
}

.contact-inline-address {
    font-style: normal;
    line-height: 1.42;
}

.contact-copy-button {
    display: inline-grid;
    place-items: center;
    width: 1.9rem;
    height: 1.9rem;
    padding: 0;
    border: 0;
    border-radius: .45rem;
    background: transparent;
    color: #6d7d72;
    opacity: 0;
    transition: opacity .15s ease, background-color .15s ease, color .15s ease;
}

.contact-info-row:hover .contact-copy-button,
.contact-info-row:focus-within .contact-copy-button,
.contact-child-row:hover .contact-copy-button,
.contact-child-row:focus-within .contact-copy-button,
.contact-copy-button:focus-visible {
    opacity: 1;
}

.contact-copy-button:hover,
.contact-copy-button:focus-visible {
    background: rgba(51, 88, 62, .09);
    color: #31553d;
    outline: none;
}

.contact-copy-button.is-copied {
    opacity: 1;
    background: rgba(25, 135, 84, .12);
    color: #198754;
}

.contact-ministry-card .contact-info-row {
    padding-left: .25rem;
    padding-right: .15rem;
}

.contact-reservation-table th,
.contact-reservation-table td {
    white-space: nowrap;
}

.contact-pinned-note {
    padding: .8rem 1rem;
    border: 1px solid rgba(39, 64, 47, .12);
    border-radius: .7rem;
    background: rgba(247, 250, 247, .82);
}

.contact-pinned-note > strong {
    display: block;
    margin-bottom: .28rem;
    font-size: .78rem;
    color: #567060;
}

.contact-note-history {
    display: grid;
    gap: 0;
    border-top: 1px solid rgba(39, 64, 47, .09);
}

.contact-note-item {
    padding: .8rem 0;
    border-bottom: 1px solid rgba(39, 64, 47, .09);
}

.contact-note-item:last-child {
    border-bottom: 0;
    padding-bottom: 0;
}

.contact-note-item-heading {
    display: flex;
    flex-wrap: wrap;
    justify-content: space-between;
    gap: .35rem 1rem;
    font-size: .86rem;
}

.contact-note-item-heading time {
    color: var(--bs-secondary-color);
    font-size: .78rem;
}

.contact-note-text {
    margin-top: .3rem;
    line-height: 1.45;
}

.contact-note-form {
    padding: 1rem;
    border: 1px solid rgba(39, 64, 47, .12);
    border-radius: .75rem;
    background: rgba(247, 250, 247, .72);
}

.contact-ministry-toggle {
    display: flex;
    align-items: flex-start;
    gap: .85rem;
    max-width: 48rem;
    padding: .8rem .9rem;
    border: 1px solid rgba(39, 64, 47, .14);
    border-radius: .75rem;
    background: rgba(247, 250, 247, .8);
    cursor: pointer;
}

.contact-ministry-toggle strong,
.contact-ministry-toggle small {
    display: block;
}

.contact-ministry-toggle small {
    margin-top: .16rem;
    color: var(--bs-secondary-color);
    line-height: 1.35;
}

.contact-person-editor {
    padding: 1rem;
    border: 1px solid rgba(39, 64, 47, .13);
    border-radius: .75rem;
    background: rgba(249, 251, 249, .75);
}

.contact-person-editor + .contact-person-editor {
    margin-top: .85rem;
}

@media (hover: none) {
    .contact-copy-button {
        opacity: .72;
    }
}

@media (max-width: 575.98px) {
    .contact-info-row {
        grid-template-columns: 1.5rem minmax(0, 1fr) 1.85rem;
        padding-left: .55rem;
        gap: .45rem;
    }

    .contact-nowrap {
        white-space: normal;
    }
}

.contact-email-link {
    overflow-wrap: anywhere;
    word-break: break-word;
}

/* ============================================================
   Contacts list v2: compact working list + expandable details
   ============================================================ */
.contacts-topbar-compact {
    padding-bottom: .9rem;
}

.contacts-titlebar {
    display: flex;
    align-items: end;
    justify-content: space-between;
    gap: 1rem;
}

.contacts-controls {
    display: grid;
    gap: .7rem;
    padding: .8rem .9rem;
    border: 1px solid rgba(39, 64, 47, .11);
    border-radius: .8rem;
    background: rgba(255, 255, 255, .82);
}

.contacts-search {
    max-width: 46rem;
}

.contacts-quick-filters {
    display: flex;
    flex-wrap: wrap;
    gap: .42rem;
}

.contacts-filter-chip {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 2rem;
    padding: .28rem .72rem;
    border: 1px solid rgba(47, 79, 57, .18);
    border-radius: 999px;
    background: #fff;
    color: #405b48;
    font-size: .81rem;
    font-weight: 650;
    line-height: 1;
    text-decoration: none;
}

button.contacts-filter-chip {
    font-family: inherit;
}

.contacts-filter-chip:hover,
.contacts-filter-chip:focus-visible,
.contacts-filter-chip.active {
    border-color: rgba(47, 79, 57, .42);
    background: rgba(57, 100, 70, .09);
    color: #294c34;
}

.contacts-filter-chip.active {
    box-shadow: inset 0 0 0 1px rgba(47, 79, 57, .08);
}

.contacts-advanced-filters {
    display: grid;
    grid-template-columns: repeat(4, minmax(9rem, 1fr)) auto auto;
    align-items: end;
    gap: .65rem;
    padding-top: .7rem;
    border-top: 1px solid rgba(39, 64, 47, .09);
}

.contacts-advanced-filters .form-label {
    margin-bottom: .25rem;
}

.contacts-list-panel {
    padding: 0;
    overflow: hidden;
}

.contacts-list-toolbar {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    min-height: 3rem;
    padding: .55rem .8rem;
    border-bottom: 1px solid rgba(39, 64, 47, .1);
    background: rgba(247, 250, 247, .7);
}

.contacts-bulk-compact {
    display: flex;
    align-items: center;
    gap: .45rem;
}

.contacts-bulk-compact .form-select {
    width: auto;
    min-width: 9.5rem;
}

.contacts-table-wrap {
    overflow-x: auto;
}

.contacts-table {
    min-width: 1060px;
    table-layout: fixed;
}

.contacts-table th {
    padding: .55rem .55rem;
    color: #607067;
    font-size: .73rem;
    font-weight: 750;
    letter-spacing: .02em;
    text-transform: uppercase;
    white-space: nowrap;
    background: rgba(249, 251, 249, .92);
}

.contacts-table td {
    padding: .58rem .55rem;
    vertical-align: middle;
    border-color: rgba(39, 64, 47, .075);
}

.contacts-select-col { width: 2.7rem; }
.contacts-name-col { width: 27%; }
.contacts-address-col { width: 31%; }
.contacts-ministry-col { width: 14%; }
.contacts-retreat-col { width: 18%; }
.contacts-actions-col { width: 8.8rem; }

.contacts-summary-row {
    scroll-margin-top: 6.5rem;
    cursor: pointer;
}

.contacts-summary-row:hover td,
.contacts-summary-row.is-expanded td {
    background: rgba(242, 247, 243, .92);
}

.contacts-summary-row a,
.contacts-summary-row button,
.contacts-summary-row input,
.contacts-summary-row label {
    cursor: pointer;
}

.contacts-summary-row:target td {
    background: rgba(232, 242, 233, .88);
    animation: contacts-row-focus 1.5s ease-out;
}

@keyframes contacts-row-focus {
    0% { background: rgba(199, 225, 203, .95); }
    100% { background: rgba(232, 242, 233, .88); }
}

.contacts-name-cell,
.contacts-row-actions {
    white-space: nowrap;
}

.contacts-name-link {
    display: inline-block;
    max-width: calc(100% - 3.2rem);
    overflow: hidden;
    text-overflow: ellipsis;
    vertical-align: middle;
    white-space: nowrap;
    color: #294d35;
    font-weight: 750;
    text-decoration: none;
}

.contacts-name-link:hover,
.contacts-name-link:focus-visible {
    text-decoration: underline;
}

.contacts-mini-status {
    display: inline-block;
    margin-left: .35rem;
    padding: .08rem .35rem;
    border-radius: 999px;
    background: #6c757d;
    color: #fff;
    font-size: .64rem;
    font-weight: 700;
    vertical-align: middle;
}

.contacts-cell-single {
    display: block;
    width: 100%;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    font-size: .88rem;
}

.contacts-row-actions {
    text-align: right;
}

.contacts-edit-button {
    padding-inline: .55rem;
}

.contacts-expand-button {
    display: inline-grid;
    place-items: center;
    width: 2rem;
    height: 2rem;
    margin-left: .25rem;
    padding: 0;
    border: 1px solid rgba(47, 79, 57, .16);
    border-radius: .45rem;
    background: #fff;
    color: #46624e;
    font-size: 1.15rem;
    line-height: 1;
    transition: transform .16s ease, background-color .16s ease;
}

.contacts-expand-button:not(.collapsed) span[aria-hidden="true"] {
    transform: rotate(180deg);
}

.contacts-expand-button:hover,
.contacts-expand-button:focus-visible {
    background: rgba(57, 100, 70, .08);
}

.contacts-detail-row > td {
    background: #f8faf8;
}

.contacts-expanded-panel {
    display: grid;
    grid-template-columns: minmax(0, 1fr) 13rem;
    gap: 1.25rem;
    padding: 1rem 1.1rem 1.1rem 3.25rem;
    border-bottom: 1px solid rgba(39, 64, 47, .11);
    background: linear-gradient(180deg, rgba(247, 250, 247, .95), rgba(252, 253, 252, .98));
}

.contacts-expanded-main {
    display: grid;
    gap: 1rem;
}

.contacts-detail-section + .contacts-detail-section {
    padding-top: .8rem;
    border-top: 1px solid rgba(39, 64, 47, .09);
}

.contacts-detail-heading,
.contacts-detail-label {
    color: #66766b;
    font-size: .7rem;
    font-weight: 750;
    letter-spacing: .045em;
    text-transform: uppercase;
}

.contacts-detail-heading {
    margin-bottom: .42rem;
}

.contacts-person-line {
    display: grid;
    grid-template-columns: minmax(10rem, 14rem) minmax(0, 1fr);
    align-items: center;
    gap: 1rem;
    min-height: 2.7rem;
    padding: .35rem 0;
}

.contacts-person-line + .contacts-person-line {
    border-top: 1px solid rgba(39, 64, 47, .07);
}

.contacts-person-name {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: .35rem .45rem;
    min-width: 0;
}

.contacts-person-name .contacts-detail-label {
    flex-basis: 100%;
}

.contacts-person-name strong {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.contacts-person-methods {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: .35rem 1rem;
    min-width: 0;
}

.contacts-inline-detail {
    display: inline-flex;
    align-items: center;
    gap: .35rem;
    min-width: 0;
    font-size: .88rem;
}

.contacts-inline-detail .contact-info-icon {
    width: 1.2rem;
    height: 1.2rem;
}

.contacts-inline-detail .contact-copy-button {
    width: 1.55rem;
    height: 1.55rem;
}

.contacts-inline-detail:hover .contact-copy-button,
.contacts-inline-detail:focus-within .contact-copy-button {
    opacity: 1;
}

.contact-newsletter-state {
    display: inline-grid;
    place-items: center;
    width: 1.25rem;
    height: 1.25rem;
    border-radius: 50%;
    background: #ecefed;
    color: #78837b;
    font-size: .76rem;
    font-weight: 850;
    line-height: 1;
}

.contact-newsletter-state.is-subscribed {
    background: rgba(25, 135, 84, .13);
    color: #198754;
}

.contact-newsletter-state.is-unsubscribed {
    background: rgba(108, 117, 125, .14);
    color: #6c757d;
}

.contacts-ministry-summary-grid {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: .5rem 1rem;
}

.contacts-ministry-summary-grid span,
.contacts-ministry-summary-grid strong {
    display: block;
}

.contacts-ministry-summary-grid span {
    color: var(--bs-secondary-color);
    font-size: .7rem;
}

.contacts-ministry-summary-grid strong {
    margin-top: .05rem;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    font-size: .86rem;
}

.contacts-expanded-side {
    padding-left: 1rem;
    border-left: 1px solid rgba(39, 64, 47, .09);
}

/* Contact editor v2: household-first identity layout. */
.contact-edit-record-title {
    color: #294b34;
    font-weight: 720;
    letter-spacing: -.025em;
}

.contact-edit-children {
    color: #67766b;
    font-size: .9rem;
}

.contact-edit-savebar {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    padding: .55rem .7rem;
    border: 1px solid rgba(39, 64, 47, .1);
    border-radius: .7rem;
    background: rgba(248, 250, 248, .9);
}

.contact-identity-layout {
    display: flex;
    flex-direction: column;
    gap: 1rem;
}

.contact-primary-person-block,
.contact-spouse-block,
.contact-org-name-block,
.contact-mailing-name-block {
    min-width: 0;
}

.contact-primary-person-block,
.contact-spouse-block {
    padding: 1rem;
    border: 1px solid rgba(39, 64, 47, .12);
    border-radius: .75rem;
    background: rgba(249, 251, 249, .72);
}

.contact-spouse-block {
    order: 2;
    border-color: rgba(76, 104, 83, .17);
    background: rgba(246, 249, 246, .95);
}

.contact-mailing-name-block {
    order: 4;
}

.contact-org-name-block {
    max-width: 46rem;
}

@media (max-width: 991.98px) {
    .contacts-titlebar {
        align-items: flex-start;
        flex-direction: column;
    }

    .contacts-advanced-filters {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .contacts-expanded-panel {
        grid-template-columns: 1fr;
        padding-left: 1rem;
    }

    .contacts-expanded-side {
        padding-top: .8rem;
        padding-left: 0;
        border-top: 1px solid rgba(39, 64, 47, .09);
        border-left: 0;
    }

    .contacts-ministry-summary-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

@media (max-width: 575.98px) {
    .contacts-list-toolbar,
    .contacts-bulk-compact,
    .contact-edit-savebar {
        align-items: stretch;
        flex-direction: column;
    }

    .contacts-bulk-compact .form-select {
        width: 100%;
    }

    .contacts-advanced-filters {
        grid-template-columns: 1fr;
    }

    .contacts-person-line {
        grid-template-columns: 1fr;
        gap: .25rem;
    }

    .contacts-ministry-summary-grid {
        grid-template-columns: 1fr;
    }
}

/* Contact multi-phone editor / compact phone labels */
.contact-phone-list {
  display: grid;
  gap: .45rem;
}
.contact-phone-row {
  display: grid;
  grid-template-columns: minmax(120px, 150px) minmax(180px, 1fr) auto;
  gap: .45rem;
  align-items: center;
}
.contact-phone-type-label {
  display: inline-block;
  margin-left: .35rem;
  padding: .08rem .38rem;
  border-radius: 999px;
  background: var(--bs-tertiary-bg, #f1f3f5);
  color: var(--bs-secondary-color, #6c757d);
  font-size: .72rem;
  line-height: 1.35;
  vertical-align: middle;
}
.contact-child-phones,
.contact-child-phone-line {
  display: flex;
  align-items: center;
  gap: .35rem;
}
.contact-child-phones {
  flex-direction: column;
  align-items: flex-start;
}
.contacts-clear-filter {
  opacity: .68;
}
.contacts-clear-filter.is-active {
  opacity: 1;
  border-color: var(--bs-danger-border-subtle, #f1aeb5);
}
@media (max-width: 575.98px) {
  .contact-phone-row {
    grid-template-columns: minmax(0, 1fr) auto;
  }
  .contact-phone-row [data-phone-type] {
    grid-column: 1 / -1;
  }
}
