:root {
    --ths-forest: #294d3b;
    --ths-forest-dark: #1d382b;
    --ths-sage: #a5b8a2;
    --ths-ivory: #f7f5ef;
    --ths-sand: #e8e0d2;
    --ths-charcoal: #292d29;
    --ths-white: #fff;
    --bs-primary: #294d3b;
    --bs-primary-rgb: 41, 77, 59;
    --bs-dark: #292d29;
    --bs-dark-rgb: 41, 45, 41;
}
html { scroll-behavior: smooth; scroll-padding-top: 90px; }
body { color: var(--ths-charcoal); background: var(--ths-white); font-family: "Open Sans", sans-serif; }
h1, h2, h3, h4, h5, h6, .brand-name { color: var(--ths-charcoal); font-family: "Playfair Display", serif; }
a { color: var(--ths-forest); }
a:hover { color: var(--ths-forest-dark); }
.text-primary { color: var(--ths-forest) !important; }
.bg-primary { background-color: var(--ths-forest) !important; }
.btn-primary { --bs-btn-bg: var(--ths-forest); --bs-btn-border-color: var(--ths-forest); --bs-btn-hover-bg: var(--ths-forest-dark); --bs-btn-hover-border-color: var(--ths-forest-dark); --bs-btn-active-bg: var(--ths-forest-dark); --bs-btn-active-border-color: var(--ths-forest-dark); background-color: var(--ths-forest) !important; border-color: var(--ths-forest) !important; color: #fff !important; }
.btn-primary:hover, .btn-primary:focus { background-color: var(--ths-forest-dark) !important; border-color: var(--ths-forest-dark) !important; }
.btn-outline-primary { --bs-btn-color: var(--ths-forest); --bs-btn-border-color: var(--ths-forest); --bs-btn-hover-bg: var(--ths-forest); --bs-btn-hover-border-color: var(--ths-forest); border-color: var(--ths-forest) !important; color: var(--ths-forest) !important; }
.btn-outline-primary:hover, .btn-outline-primary:focus { background-color: var(--ths-forest) !important; color: #fff !important; }
.bg-light { background-color: var(--ths-ivory) !important; }
.text-sage { color: #c9d5c7; }
.ths-topbar { min-height: 45px; }
.skip-link { position: fixed; left: 1rem; top: -5rem; z-index: 2000; background: #fff; color: #111; padding: .75rem 1rem; border: 2px solid var(--ths-forest); }
.skip-link:focus { top: 1rem; }
.navbar { min-height: 84px; border-bottom: 1px solid rgba(41,77,59,.1); }
.navbar .navbar-nav .nav-link { color: var(--ths-charcoal); font-weight: 600; }
.navbar .navbar-nav .nav-link:hover, .navbar .navbar-nav .nav-link:focus { color: var(--ths-forest); }
.navbar-toggler-icon { background-image: none !important; align-items: center; display: inline-flex; font-size: 1.75rem; justify-content: center; }
.navbar-toggler-icon::before { content: "☰"; line-height: 1; }
.navbar-toggler[aria-expanded="true"] .navbar-toggler-icon::before { content: "×"; }
.brand-mark { width: 60px; height: 60px; object-fit: contain; }
.brand-name { color: var(--ths-forest); display: block; font-size: 1.15rem; font-weight: 700; line-height: 1.1; }
.brand-tagline { color: #5d665f; font-size: .65rem; letter-spacing: .03em; }
.ths-hero { background: var(--ths-ivory); border-bottom: 1px solid var(--ths-sand); overflow: hidden; }
.ths-hero .row { margin-left: 0; margin-right: 0; }
.ths-hero h1 { font-weight: 600; letter-spacing: -.025em; }
.ths-hero h1 span { color: var(--ths-forest); }
.eyebrow, .sub-title { color: var(--ths-forest-dark) !important; font-weight: 700; letter-spacing: .13em; text-transform: uppercase; font-size: .78rem; }
.hero-mark-wrap { background: var(--ths-white); border: 1px solid var(--ths-sand); border-radius: 50%; box-shadow: 0 24px 70px rgba(41,77,59,.12); margin-inline: auto; padding: 2rem; width: min(100%, 410px); aspect-ratio: 1; display: grid; place-items: center; }
.hero-mark { width: 100%; height: 100%; object-fit: contain; }
.price-note { color: #465048; line-height: 1.25; }
.price-note strong { color: var(--ths-forest); font-size: 1.5rem; }
.section-title .sub-style::before, .section-title .sub-style::after, .section-title .sub-title::before, .section-title .sub-title::after { background: var(--ths-forest) !important; }
.service-item { border: 1px solid var(--ths-sand); box-shadow: 0 12px 35px rgba(41,77,59,.07); overflow: hidden; }
.service-item:hover { transform: translateY(-4px); }
.service-symbol { align-items: center; background: var(--ths-forest); color: #fff; display: flex; font-family: "Playfair Display", serif; font-size: 3rem; height: 120px; justify-content: center; }
.safety-section { background: var(--ths-forest); color: #f3f6f2; }
.safety-section h2, .safety-section .eyebrow { color: #fff !important; }
.safety-card { background: #fff; color: var(--ths-charcoal); }
.expect-list { padding-left: 1.3rem; }
.expect-list li { margin-bottom: 1rem; padding-left: .4rem; }
.location-card { background: var(--ths-ivory); border: 1px solid var(--ths-sand); }
.active-location { border-top: 4px solid var(--ths-forest); }
.status-dot { background: #2b7a4b; border-radius: 50%; display: inline-block; height: .65rem; margin-right: .35rem; width: .65rem; }
.accordion-button:not(.collapsed) { background: #e5ece3; color: var(--ths-forest-dark); box-shadow: none; }
.accordion-button:focus { border-color: var(--ths-forest); box-shadow: 0 0 0 .25rem rgba(41,77,59,.2); }
.contact-form { background: var(--ths-ivory); border: 1px solid var(--ths-sand); }
.form-control, .form-select { border-color: #aab1aa; min-height: 48px; }
.form-control:focus, .form-select:focus, .form-check-input:focus, .btn:focus-visible, a:focus-visible { border-color: var(--ths-forest); box-shadow: 0 0 0 .25rem rgba(41,77,59,.25); outline: 2px solid transparent; }
.footer a { color: #dfe8dd; overflow-wrap: anywhere; }
.footer a:hover { color: #fff; }
.back-to-top { background: var(--ths-forest); border-color: var(--ths-forest); }
.booking-shell { max-width: 980px; }
.progress-steps { display: grid; grid-template-columns: repeat(3, 1fr); gap: .5rem; list-style: none; padding: 0; }
.progress-steps li { border-top: 3px solid #c9d0ca; color: #667067; font-size: .82rem; padding-top: .5rem; }
.progress-steps li.active { border-color: var(--ths-forest); color: var(--ths-forest-dark); font-weight: 700; }
.slot-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(110px, 1fr)); gap: .75rem; }
.slot-choice input { position: absolute; opacity: 0; pointer-events: none; }
.slot-choice label { border: 1px solid var(--ths-forest); border-radius: .6rem; color: var(--ths-forest-dark); cursor: pointer; display: block; padding: .8rem .5rem; text-align: center; }
.slot-choice input:focus-visible + label { box-shadow: 0 0 0 .25rem rgba(41,77,59,.25); }
.slot-choice input:checked + label { background: var(--ths-forest); color: #fff; }
.summary-card { background: var(--ths-ivory); border: 1px solid var(--ths-sand); }
.status-badge { border-radius: 999px; display: inline-flex; font-size: .78rem; font-weight: 700; padding: .35rem .65rem; }
.status-confirmed { background: #d8eddf; color: #175a33; }
.status-pending { background: #fff0ca; color: #6d4c00; }
.status-closed { background: #e7e7e7; color: #4b4b4b; }
@media (max-width: 767.98px) {
    .navbar { min-height: 72px; }
    .brand-mark { height: 48px; width: 48px; }
    .brand-name { font-size: 1rem; }
    .ths-hero h1 { font-size: clamp(2.7rem, 13vw, 4rem); }
    .hero-mark-wrap { width: 270px; padding: 1.4rem; }
    .progress-steps { font-size: .72rem; }
    .booking-shell > .row { --bs-gutter-x: 1.5rem; }
    .section-title .sub-style::before,
    .section-title .sub-style::after,
    .section-title .sub-title::before,
    .section-title .sub-title::after { display: none !important; }
    .section-title .sub-style,
    .section-title .sub-title { max-width: 100%; }
}
@media (prefers-reduced-motion: reduce) {
    *, *::before, *::after { animation-duration: .01ms !important; animation-iteration-count: 1 !important; scroll-behavior: auto !important; transition-duration: .01ms !important; }
}
