:root{--green-950:#0d2b20;--green-900:#123b2b;--green-800:#194d38;--cream:#f6f1e6;--yellow:#d9ef55;--white:#fff;--text:#17231d;--muted:#6d776f;--danger:#a52c2c;--radius:22px;--shadow:0 18px 50px rgba(13,43,32,.13)}
*{box-sizing:border-box}body{margin:0;font-family:system-ui,sans-serif;background:var(--cream);color:var(--text);line-height:1.5}a{text-decoration:none;color:inherit}input,select,textarea,button{font:inherit}
.site-header{display:flex;justify-content:space-between;align-items:center;padding:14px 18px;background:#f6f1e6;position:sticky;top:0;z-index:20}.brand{display:flex;align-items:center;gap:10px}.brand-mark{display:grid;place-items:center;width:42px;height:42px;border-radius:50%;background:var(--green-900);color:var(--yellow);font-weight:800}.brand strong,.brand small{display:block}.brand small,.muted{color:var(--muted)}
.hero{min-height:72vh;display:flex;align-items:end;padding:42px 20px;color:#fff;background:linear-gradient(140deg,#286447,#102f24)}.hero h1,.admin-shell h1,.booking-shell h1,.status-page h1{font-size:clamp(42px,10vw,76px);line-height:1;margin:8px 0 16px}.eyebrow{font-size:12px;letter-spacing:.14em;text-transform:uppercase;font-weight:800;color:var(--yellow)}.eyebrow.dark{color:var(--green-800)}
.section,.booking-shell,.admin-shell{width:min(1100px,calc(100% - 28px));margin:auto;padding:48px 0 110px}.feature-grid,.settings-grid{display:grid;gap:16px}.feature-card,.booking-card,.admin-card{background:#fff;border-radius:var(--radius);padding:20px;box-shadow:var(--shadow)}
.button{display:inline-flex;align-items:center;justify-content:center;min-height:50px;padding:0 22px;border:0;border-radius:999px;font-weight:800;cursor:pointer}.button-accent{background:var(--yellow);color:var(--green-950)}.button-dark{background:var(--green-900);color:#fff}.button-outline{border:1px solid rgba(13,43,32,.25)}.button-large{min-height:58px}.full-width{width:100%}
.form-step+.form-step{margin-top:28px;padding-top:24px;border-top:1px solid #ddd}.step-label{display:block;margin-bottom:10px;color:var(--green-800);font-weight:800}label{display:block;font-weight:700}input,select,textarea{width:100%;min-height:52px;margin-top:7px;padding:12px 14px;border:1px solid #cdd3ce;border-radius:14px;background:#fff}
.form-grid{display:grid;gap:16px}.time-slots{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.time-slot input,.segmented input,.weekday-option input{position:absolute;opacity:0}.time-slot span,.segmented span,.weekday-option span{display:grid;place-items:center;min-height:48px;border:1px solid #cdd3ce;border-radius:12px;background:#fff}.time-slot input:checked+span,.segmented input:checked+span,.weekday-option input:checked+span{background:var(--green-900);color:#fff}.segmented{display:grid;grid-template-columns:1fr 1fr;gap:10px}.check-row{display:flex;gap:10px;align-items:flex-start;margin:22px 0}.check-row input,.notification-option input{width:20px;min-width:20px;min-height:20px;margin:2px 0 0}.form-message.error,.alert-error{color:var(--danger)}
.admin-toolbar{display:flex;justify-content:space-between;gap:16px;align-items:center;margin-bottom:20px}.admin-actions{display:flex;gap:10px;flex-wrap:wrap}.booking-list,.happy-hours-list,.notification-options{display:grid;gap:12px}.booking-row{display:grid;gap:12px;padding:16px;background:#f8f8f6;border-radius:16px}.booking-row span{display:block;color:var(--muted)}
.settings-section+.settings-section{margin-top:22px}.settings-section h2{margin-top:0}.settings-section-heading{display:flex;justify-content:space-between;gap:16px;align-items:center}.price-input{display:flex;align-items:center;border:1px solid #cdd3ce;border-radius:14px;overflow:hidden;margin-top:7px}.price-input span{padding-left:14px}.price-input input{border:0;margin:0}.happy-hour-row,.notification-option{padding:16px;border:1px solid rgba(13,43,32,.12);border-radius:16px;background:#fafbf9}.happy-hour-head{display:flex;justify-content:space-between;margin-bottom:16px}.remove-happy-hour{border:0;background:none;color:var(--danger);font-weight:800}.weekday-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-top:16px}.notification-option{display:flex;gap:12px}.notification-option small{display:block;color:var(--muted)}.settings-savebar{display:flex;justify-content:flex-end;gap:12px;margin-top:22px}
.alert{padding:14px 16px;border-radius:14px;margin-bottom:18px}.alert-success{background:#e8f5ec;color:#1d6339}.status-page{min-height:70vh;display:grid;place-items:center;align-content:center;text-align:center;padding:40px 20px}.status-icon{display:grid;place-items:center;width:70px;height:70px;border-radius:50%;background:var(--green-900);color:var(--yellow);font-size:32px}.mobile-nav{position:fixed;left:12px;right:12px;bottom:12px;display:grid;grid-template-columns:1fr 1.3fr 1fr;background:var(--green-950);padding:8px;border-radius:20px;z-index:30}.mobile-nav a{color:#fff;text-align:center;padding:10px}.mobile-nav-primary{background:var(--yellow);color:var(--green-950)!important;border-radius:14px}.site-footer{padding:50px 20px 120px;background:var(--green-950);color:#fff}
@media(min-width:760px){.feature-grid{grid-template-columns:repeat(3,1fr)}.form-grid{grid-template-columns:1fr 1fr}.time-slots{grid-template-columns:repeat(6,1fr)}.settings-grid{grid-template-columns:repeat(3,1fr)}.happy-hour-grid{grid-template-columns:1.3fr 1fr 1fr 1fr}.weekday-grid{grid-template-columns:repeat(7,1fr)}.booking-row{grid-template-columns:1.4fr 1.4fr auto}.mobile-nav{display:none}.site-footer{padding-bottom:50px}}

/* Availability calendar */
.header-actions{display:flex;align-items:center;gap:8px}.header-link{padding:9px 12px;border-radius:999px}.header-book{background:var(--green-900);color:#fff}.hero-actions{display:flex;flex-wrap:wrap;gap:12px;margin-top:24px}.button-hero-secondary{border:1px solid rgba(255,255,255,.45);color:#fff;background:rgba(255,255,255,.08)}.availability-shell{width:min(1180px,calc(100% - 28px));margin:auto;padding:44px 0 110px}.availability-heading{display:flex;flex-direction:column;gap:18px;margin-bottom:20px}.availability-heading h1{font-size:clamp(42px,10vw,72px);line-height:.98;margin:8px 0 12px}.availability-heading p{margin:0;color:var(--muted)}.availability-book-button{align-self:flex-start}.availability-legend{display:flex;flex-wrap:wrap;gap:12px 18px;margin-bottom:22px;color:var(--muted);font-size:14px}.availability-legend span{display:flex;align-items:center;gap:7px}.legend-dot{width:10px;height:10px;border-radius:50%;display:inline-block}.legend-free{background:#4d8a67}.legend-partial{background:#d7a846}.legend-full{background:#9e625c}.availability-loading,.availability-error{padding:22px;border-radius:18px;background:#fff}.four-week-calendar{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}.calendar-day{min-width:0;min-height:112px;padding:10px 8px;border:1px solid rgba(13,43,32,.14);border-radius:15px;background:#fff;text-align:left;color:var(--text);cursor:pointer}.calendar-day.is-selected{outline:3px solid var(--green-900);outline-offset:2px}.calendar-weekday,.calendar-month,.calendar-status{display:block}.calendar-weekday{font-size:11px;font-weight:800;text-transform:uppercase;color:var(--muted)}.calendar-number{display:block;font-size:27px;line-height:1;margin-top:3px}.calendar-month{font-size:12px;color:var(--muted)}.calendar-status{font-size:10px;font-weight:800;margin-top:9px}.calendar-day-free{background:#eef7f1}.calendar-day-partial{background:#fff7e5}.calendar-day-full{background:#f8eeee}.day-schedule{margin-top:24px;padding:20px;border-radius:22px;background:#fff;box-shadow:var(--shadow)}.day-schedule-heading{display:flex;justify-content:space-between;gap:18px;align-items:end;margin-bottom:18px}.day-schedule-heading h2{margin:4px 0 0}.day-summary{text-align:right}.day-summary strong,.day-summary span{display:block}.day-summary span{color:var(--muted);font-size:13px}.public-slot-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:9px}.public-slot{min-height:66px;padding:10px;border-radius:14px;display:grid;place-items:center;text-align:center;border:1px solid rgba(13,43,32,.12)}.public-slot strong,.public-slot span{display:block}.public-slot span{font-size:11px}.public-slot-free{background:#eef7f1;color:var(--green-950)}.public-slot-booked{background:#f2f0ed;color:#8b8f8c}.availability-help{margin-bottom:0;color:var(--muted);font-size:13px}.no-slots-message{grid-column:1/-1;padding:20px;text-align:center;color:var(--muted)}@media(min-width:760px){.availability-heading{flex-direction:row;justify-content:space-between;align-items:end}.four-week-calendar{grid-template-columns:repeat(7,1fr)}.public-slot-grid{grid-template-columns:repeat(6,1fr)}}@media(max-width:420px){.header-actions{gap:2px}.header-link{padding:8px 7px;font-size:13px}}

/* Stripe/payment and pricing */
.time-slot span{padding:8px 5px}.time-slot span strong,.time-slot span small{display:block}.time-slot span small{font-size:10px;font-weight:600;color:var(--muted);margin-top:2px}.time-slot input:checked+span small{color:rgba(255,255,255,.78)}
.booking-price-summary{margin:24px 0 0;padding:18px;border-radius:18px;background:#eef7f1;border:1px solid rgba(13,43,32,.12);display:grid;grid-template-columns:1fr auto;gap:10px 20px;align-items:end}.booking-price-summary>div span,.booking-price-summary>div strong{display:block}.booking-price-summary>div>span{font-size:13px;color:var(--muted)}.booking-total{text-align:right}.booking-total strong{font-size:24px;color:var(--green-900)}.booking-price-summary small{grid-column:1/-1;color:var(--green-800)}.booking-price-error{display:block;background:#f8eeee;color:var(--danger)}.booking-price-error span{display:block;margin-top:3px}button:disabled{opacity:.55;cursor:not-allowed}.stripe-note{text-align:center;color:var(--muted);font-size:12px;margin:10px 0 0}.payment-booking-details{display:grid;gap:5px;margin:8px 0 24px;padding:18px 22px;border-radius:18px;background:#fff;box-shadow:var(--shadow)}.payment-booking-details span,.payment-booking-details strong{display:block}.status-icon-neutral{background:#e6ddca;color:var(--green-900)}
.day-schedule{scroll-margin-top:84px}.public-slot span{line-height:1.25}


/* Rules modal + admin booking management */
.modal-open { overflow: hidden; }

.modal-backdrop {
    position: fixed;
    inset: 0;
    z-index: 100;
    display: grid;
    place-items: center;
    padding: 18px;
    background: rgba(8, 25, 18, 0.68);
}

.modal-backdrop[hidden] { display: none; }

.modal-card {
    position: relative;
    width: min(720px, 100%);
    max-height: calc(100vh - 36px);
    overflow: auto;
    padding: 26px;
    border-radius: 22px;
    background: var(--white);
    box-shadow: 0 28px 80px rgba(0,0,0,.28);
}

.modal-card h2 { margin: 6px 42px 18px 0; }

.modal-close {
    position: absolute;
    top: 14px;
    right: 14px;
    width: 42px;
    height: 42px;
    border: 0;
    border-radius: 50%;
    background: #eef0ec;
    color: var(--green-950);
    font-size: 28px;
    line-height: 1;
    cursor: pointer;
}

.rules-accept-row {
    display: flex;
    align-items: flex-start;
    gap: 10px;
    margin: 24px 0;
}

.rules-accept-row > input {
    width: 20px;
    min-width: 20px;
    min-height: 20px;
    margin: 2px 0 0;
}

.rules-accept-row > label { font-weight: 500; }

.rules-link {
    display: inline;
    padding: 0;
    border: 0;
    background: transparent;
    color: var(--green-800);
    font-weight: 800;
    text-decoration: underline;
    cursor: pointer;
}

.rules-modal-section + .rules-modal-section {
    margin-top: 24px;
    padding-top: 20px;
    border-top: 1px solid rgba(13,43,32,.1);
}

.rules-modal-section h3 { margin: 0 0 10px; }
.rules-modal-section ul { margin: 0; padding-left: 22px; }
.rules-modal-section li + li { margin-top: 7px; }

.rules-settings-grid { display: grid; gap: 18px; }
.rules-settings-grid textarea { min-height: 220px; }

.admin-booking-row {
    grid-template-columns: minmax(190px,1.3fr) minmax(180px,1.2fr) auto auto;
}

.booking-person small {
    display: block;
    color: var(--muted);
}

.booking-admin-actions { display: flex; justify-content: flex-end; }
.button-small { min-height: 40px; padding-inline: 16px; }

.button-danger {
    background: #9b2f2f;
    color: #fff;
}

.button:disabled {
    opacity: .45;
    cursor: not-allowed;
}

.admin-status-badge {
    display: inline-block;
    padding: 7px 10px;
    border-radius: 999px;
    background: #eceeea;
    font-size: 13px;
    font-weight: 800;
}

.admin-modal-actions {
    display: grid;
    grid-template-columns: 1fr;
    gap: 10px;
    margin-top: 20px;
}

.admin-modal-actions form,
.admin-modal-actions button { width: 100%; }

.admin-modal-warning {
    margin: 16px 0 0;
    color: var(--muted);
    font-size: 14px;
}

.admin-occupancy-section { margin-top: 46px; }

.occupancy-legend {
    display: flex;
    flex-wrap: wrap;
    gap: 14px;
    margin-bottom: 14px;
    font-size: 13px;
    font-weight: 700;
}

.occupancy-legend span {
    display: inline-flex;
    align-items: center;
    gap: 6px;
}

.occ-dot {
    width: 10px;
    height: 10px;
    border-radius: 50%;
    background: #ccc;
}

.occ-dot.free { background: #dff3df; border: 1px solid #6f9c74; }
.occ-dot.booked { background: var(--green-900); }
.occ-dot.held { background: #e5c95a; }
.occ-dot.blocked { background: #9a9a9a; }

.occupancy-scroll {
    overflow-x: auto;
    border-radius: 18px;
    background: var(--white);
    box-shadow: var(--shadow);
}

.occupancy-table {
    width: 100%;
    min-width: 1050px;
    border-collapse: separate;
    border-spacing: 0;
    font-size: 12px;
}

.occupancy-table th,
.occupancy-table td {
    padding: 7px 5px;
    text-align: center;
    border-bottom: 1px solid rgba(13,43,32,.08);
    border-right: 1px solid rgba(13,43,32,.06);
}

.occupancy-table thead th {
    position: sticky;
    top: 0;
    z-index: 2;
    background: var(--green-950);
    color: #fff;
}

.occupancy-day-col {
    position: sticky;
    left: 0;
    z-index: 1;
    min-width: 108px;
    text-align: left !important;
    background: #f7f7f4;
}

thead .occupancy-day-col { z-index: 3; background: var(--green-950); }

.occupancy-today .occupancy-day-col {
    background: var(--yellow);
    color: var(--green-950);
}

.occupancy-cell {
    display: grid;
    place-items: center;
    min-width: 58px;
    min-height: 34px;
    padding: 4px;
    border-radius: 8px;
    font-weight: 800;
}

.occupancy-free { background: #e9f6e8; color: #38643d; }
.occupancy-booked { background: var(--green-900); color: #fff; }
.occupancy-held { background: #f4e39c; color: #5a4a08; }
.occupancy-blocked { background: #dedede; color: #555; }
.occupancy-past { background: #f0f0ee; color: #aaa; }

@media (min-width: 760px) {
    .rules-settings-grid { grid-template-columns: 1fr 1fr; }
    .admin-modal-actions { grid-template-columns: 1fr 1fr; }
}

@media (max-width: 900px) {
    .admin-booking-row { grid-template-columns: 1fr; }
    .booking-admin-actions { justify-content: flex-start; }
}

.booking-whatsapp a {
    color: var(--green-800);
    font-weight: 800;
    text-decoration: underline;
    text-underline-offset: 2px;
}

/* Admin booking state colors */
.admin-booking-row {
    position: relative;
    overflow: hidden;
}

.admin-booking-row::before {
    content: "";
    position: absolute;
    inset: 0 auto 0 0;
    width: 5px;
}

.booking-state-paid {
    background: #edf8ef;
    border: 1px solid #b9ddbf;
}
.booking-state-paid::before { background: #3e8d4a; }

.booking-state-held {
    background: #fff5e5;
    border: 1px solid #f1cf98;
}
.booking-state-held::before { background: #d78922; }

.booking-state-cancelled {
    background: #eeeeec;
    border: 1px solid #d6d6d2;
    opacity: .68;
}
.booking-state-cancelled::before { background: #989892; }

.booking-state-cancelled .booking-admin-actions {
    align-self: center;
}

.booking-admin-actions {
    min-width: 92px;
    align-items: center;
}

.admin-status-badge {
    white-space: nowrap;
}

/* Occupancy modal */
.occupancy-booking-button {
    width: 100%;
    border: 0;
    font: inherit;
    cursor: pointer;
}

.occupancy-booking-button:hover {
    outline: 2px solid rgba(13,43,32,.32);
    outline-offset: 1px;
}

.occupancy-booking-details {
    margin: 0;
    display: grid;
    gap: 0;
}

.occupancy-booking-details > div {
    display: grid;
    grid-template-columns: 130px 1fr;
    gap: 16px;
    padding: 11px 0;
    border-bottom: 1px solid rgba(13,43,32,.08);
}

.occupancy-booking-details dt {
    color: var(--muted);
    font-weight: 700;
}

.occupancy-booking-details dd {
    margin: 0;
    font-weight: 700;
    overflow-wrap: anywhere;
}

.occupancy-booking-details a {
    color: var(--green-800);
    text-decoration: underline;
}

@media (max-width: 680px) {
    .occupancy-booking-details > div {
        grid-template-columns: 1fr;
        gap: 3px;
    }
}

/* Re-schedule + admin email test */
.admin-reschedule-box {
    margin-top: 22px;
    padding: 18px;
    border-radius: 16px;
    background: #f3f7f3;
    border: 1px solid rgba(13,43,32,.12);
}

.admin-reschedule-box h3 {
    margin: 0 0 4px;
}

.admin-reschedule-box p {
    margin: 0 0 14px;
}

.admin-reschedule-grid {
    display: grid;
    gap: 12px;
    margin-bottom: 14px;
}

.admin-test-email-box {
    margin-top: 18px;
    padding-top: 18px;
    border-top: 1px solid rgba(13,43,32,.1);
}

.admin-test-email-box p {
    margin: 8px 0 0;
    font-size: 13px;
}

@media (min-width: 620px) {
    .admin-reschedule-grid {
        grid-template-columns: 1fr 1fr;
    }
}

/* Re-schedule availability */
.reschedule-availability {
    margin: 16px 0;
    padding: 14px;
    border-radius: 14px;
    background: #fff;
    border: 1px solid rgba(13,43,32,.12);
}

.reschedule-availability-head {
    display: flex;
    justify-content: space-between;
    gap: 12px;
    align-items: center;
    margin-bottom: 12px;
}

.reschedule-slots {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 8px;
}

.reschedule-slot {
    min-height: 70px;
    padding: 9px 7px;
    border-radius: 12px;
    text-align: center;
}

.reschedule-slot strong,
.reschedule-slot span,
.reschedule-slot small {
    display: block;
}

.reschedule-slot span {
    font-size: 12px;
}

.reschedule-slot small {
    margin-top: 3px;
    font-size: 10px;
    font-weight: 900;
}

.reschedule-slot-free {
    border: 1px solid #9fc9a6;
    background: #edf8ef;
    color: #24572c;
    cursor: pointer;
}

.reschedule-slot-free:hover,
.reschedule-slot-free.selected {
    background: var(--green-900);
    color: #fff;
    border-color: var(--green-900);
}

.reschedule-slot-unavailable {
    border: 1px solid #ddd;
    background: #efefed;
    color: #999;
}

@media (min-width: 620px) {
    .reschedule-slots {
        grid-template-columns: repeat(5, 1fr);
    }
}
