:root {
    --rlm-brown: #4d3316;
    --rlm-rust: #cf721a;
    --rlm-gold: #e5a65a;
    --rlm-sand: #f4dfb8;
    --rlm-cream: #fffaf0;
    --rlm-olive: #4f4a22;
}
.rlm-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:24px; }
.rlm-card { background:#fff; border:1px solid rgba(77,51,22,.16); border-radius:14px; overflow:hidden; box-shadow:0 8px 24px rgba(77,51,22,.08); }
.rlm-card-image { display:block; aspect-ratio:16/10; overflow:hidden; background:var(--rlm-sand); }
.rlm-card-image img { width:100%; height:100%; object-fit:cover; transition:transform .35s ease; }
.rlm-card:hover .rlm-card-image img { transform:scale(1.035); }
.rlm-card-body { padding:22px; }
.rlm-card-body h3 { margin:.2rem 0 .7rem; color:var(--rlm-brown); }
.rlm-card-body h3 a { color:inherit; text-decoration:none; }
.rlm-card-meta { display:flex; flex-wrap:wrap; gap:8px 16px; color:var(--rlm-olive); font-weight:600; margin:16px 0; }
.rlm-card-actions { display:flex; flex-wrap:wrap; gap:10px; }
.rlm-btn { display:inline-flex; align-items:center; justify-content:center; background:var(--rlm-rust); color:#fff !important; border:2px solid var(--rlm-rust); border-radius:999px; padding:10px 18px; text-decoration:none !important; font-weight:700; cursor:pointer; }
.rlm-btn:hover { background:var(--rlm-brown); border-color:var(--rlm-brown); }
.rlm-btn-outline { background:transparent; color:var(--rlm-brown) !important; border-color:var(--rlm-brown); }
.rlm-kicker { color:var(--rlm-rust); font-size:.85rem; font-weight:800; text-transform:uppercase; letter-spacing:.08em; }
.rlm-badge { display:inline-block; padding:6px 10px; border-radius:999px; background:var(--rlm-gold); color:var(--rlm-brown); font-size:.78rem; font-weight:800; }
.rlm-review { margin:0; padding:24px; background:var(--rlm-cream); border:1px solid var(--rlm-gold); border-radius:14px; }
.rlm-stars { color:var(--rlm-rust); letter-spacing:.08em; font-size:1.15rem; }
.rlm-review cite { display:block; margin-top:12px; font-weight:800; color:var(--rlm-brown); }
.rlm-form { max-width:880px; }
.rlm-form-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:0 18px; }
.rlm-form label { display:block; font-weight:700; color:var(--rlm-brown); margin-bottom:6px; }
.rlm-form input[type=text], .rlm-form input[type=email], .rlm-form textarea, .rlm-form select { width:100%; border:1px solid rgba(77,51,22,.35); border-radius:8px; padding:11px 12px; background:#fff; }
.rlm-honeypot { position:absolute !important; left:-9999px !important; }
.rlm-notice { padding:14px 18px; border-radius:8px; margin-bottom:18px; }
.rlm-success { background:#eef7e8; border:1px solid #9ebc87; }
.rlm-error { background:#fff0eb; border:1px solid #d49b86; }
@media (max-width:900px) { .rlm-grid { grid-template-columns:repeat(2,minmax(0,1fr)); } }
@media (max-width:620px) { .rlm-grid, .rlm-form-grid { grid-template-columns:1fr; } }
.rlm-hero-slider { position:relative; min-height:clamp(560px,72vh,760px); overflow:hidden; background:#2d1d0f; color:#fff; }
.rlm-hero-slide { position:absolute; inset:0; display:grid; align-items:center; opacity:0; visibility:hidden; background-position:center; background-size:cover; transition:opacity .7s ease,visibility .7s ease; }
.rlm-hero-slide.is-active { opacity:1; visibility:visible; z-index:1; }
.rlm-hero-fallback .rlm-hero-slide { position:relative; opacity:1; visibility:visible; background:radial-gradient(circle at 70% 25%,#d87316 0 12%,transparent 34%),linear-gradient(135deg,#6d4018,#24160d); }
.rlm-hero-overlay { position:absolute; inset:0; background:linear-gradient(90deg,rgba(27,17,9,.88),rgba(49,30,13,.58) 58%,rgba(28,18,10,.2)); }
.rlm-hero-content { position:relative; z-index:2; width:min(1180px,calc(100% - 40px)); margin:auto; padding:100px 0 135px; }
.rlm-hero-content h1 { max-width:850px; margin:.15em 0; color:#fff; font-size:clamp(2.7rem,6vw,5.8rem); text-shadow:0 4px 18px rgba(0,0,0,.3); }
.rlm-hero-copy { max-width:720px; font-size:clamp(1rem,2vw,1.2rem); }
.rlm-hero-copy p { margin:.5em 0; }
.rlm-hero-kicker { color:#e5a65a; font-size:.8rem; font-weight:900; letter-spacing:.16em; text-transform:uppercase; }
.rlm-hero-actions { display:flex; flex-wrap:wrap; gap:12px; margin-top:26px; }
.rlm-btn-light { background:transparent; border-color:#fff; color:#fff !important; }
.rlm-slider-control { position:absolute; z-index:4; top:50%; transform:translateY(-50%); width:48px; height:48px; border:1px solid rgba(255,255,255,.65); border-radius:50%; background:rgba(31,22,14,.45); color:#fff; font-size:2rem; line-height:1; cursor:pointer; }
.rlm-slider-prev { left:22px; }
.rlm-slider-next { right:22px; }
.rlm-slider-dots { position:absolute; z-index:4; left:50%; bottom:28px; transform:translateX(-50%); display:flex; gap:9px; }
.rlm-slider-dots button { width:11px; height:11px; padding:0; border:1px solid #fff; border-radius:50%; background:transparent; cursor:pointer; }
.rlm-slider-dots button.is-active { background:#e5a65a; border-color:#e5a65a; }
@media (max-width:700px) {
    .rlm-hero-content { width:min(100% - 28px,1180px); padding:82px 0 115px; }
    .rlm-slider-control { width:40px; height:40px; top:auto; bottom:19px; transform:none; }
    .rlm-slider-prev { left:18px; }
    .rlm-slider-next { right:18px; }
}
@media (prefers-reduced-motion:reduce) { .rlm-hero-slide { transition:none; } }
.rlm-hero-brand-logo { display:block; width:min(420px,80vw); max-height:210px; object-fit:contain; margin:0 0 24px; border:3px solid rgba(227,163,79,.7); box-shadow:0 12px 32px rgba(0,0,0,.28); }

/* Phase 2: availability and reservations */
.rlm-booking-module { display:grid; gap:30px; }
.rlm-booking-search { padding:28px; background:var(--rlm-sand); border:1px solid var(--rlm-gold); border-radius:16px; }
.rlm-booking-search h2 { margin-top:0; }
.rlm-search-grid { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:16px; align-items:end; }
.rlm-search-grid p { margin:0; }
.rlm-search-grid label,.rlm-reservation-form label { display:block; margin-bottom:6px; color:var(--rlm-brown); font-weight:800; }
.rlm-search-grid input,.rlm-search-grid select,.rlm-reservation-form input[type=text],.rlm-reservation-form input[type=email],.rlm-reservation-form textarea { width:100%; min-height:46px; padding:10px 12px; border:1px solid rgba(77,51,22,.35); border-radius:9px; background:#fff; }
.rlm-search-unit { grid-column:span 2; }
.rlm-search-submit { grid-column:span 2; }
.rlm-search-submit .rlm-btn { width:100%; min-height:46px; }
.rlm-no-availability { padding:28px; text-align:center; background:#fff; border:1px dashed var(--rlm-rust); border-radius:14px; }
.rlm-booking-success { display:flex; gap:18px; align-items:flex-start; padding:24px; background:#eef7e8; border:1px solid #9ebc87; border-radius:14px; }
.rlm-booking-success h2 { margin:0 0 8px; }
.rlm-success-icon { width:48px; height:48px; flex:0 0 auto; display:grid; place-items:center; border-radius:50%; background:#52763e; color:#fff; font-size:1.8rem; font-weight:900; }
.rlm-reservation-form-section { display:grid; gap:24px; }
.rlm-selected-booking { display:grid; grid-template-columns:260px minmax(0,1fr); gap:24px; padding:24px; background:#fff; border:2px solid var(--rlm-gold); border-radius:16px; }
.rlm-selected-image { overflow:hidden; border-radius:12px; }
.rlm-selected-image img { width:100%; height:100%; min-height:220px; object-fit:cover; display:block; }
.rlm-selected-booking h2 { margin:.15em 0 .35em; }
.rlm-estimated-total { display:flex; flex-direction:column; margin:18px 0 4px; }
.rlm-estimated-total strong { color:var(--rlm-rust); font-size:2rem; font-family:Georgia,'Times New Roman',serif; }
.rlm-reservation-form { max-width:none; padding:28px; background:#fff; border:1px solid rgba(77,51,22,.18); border-radius:16px; box-shadow:0 10px 28px rgba(77,51,22,.08); }
.rlm-reservation-form h2 { margin-top:0; }
.rlm-consent { display:flex !important; gap:10px; align-items:flex-start; font-weight:600 !important; }
.rlm-consent input { width:auto !important; margin-top:5px; }
.rlm-available-units>h2 { margin-bottom:22px; }
.rlm-public-calendar-wrap { margin:34px 0; }
.rlm-calendar-months { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:22px; }
.rlm-calendar-month { padding:18px; background:#fff; border:1px solid rgba(77,51,22,.18); border-radius:13px; }
.rlm-calendar-month h3 { margin:0 0 14px; font-size:1.35rem; }
.rlm-calendar-grid { display:grid; grid-template-columns:repeat(7,minmax(0,1fr)); gap:5px; }
.rlm-calendar-heading { padding:5px 2px; text-align:center; color:var(--rlm-olive); font-size:.72rem; font-weight:900; text-transform:uppercase; }
.rlm-calendar-day { min-height:42px; display:grid; place-items:center; border-radius:7px; border:1px solid transparent; font-size:.88rem; font-weight:800; }
.rlm-calendar-day.is-available { background:#eef7e8; border-color:#b5cda5; color:#39572b; }
.rlm-calendar-day.is-reserved { background:#ffe3d6; border-color:#d99a7c; color:#7d3219; }
.rlm-calendar-day.is-blocked { background:#eadfd5; border-color:#aa9180; color:#5f4636; }
.rlm-calendar-day.is-past { background:#f3f1ed; color:#aaa098; }
.rlm-calendar-day.is-empty { background:transparent; }
.rlm-calendar-legend { display:flex; flex-wrap:wrap; gap:12px; margin:0 0 14px; }
.rlm-calendar-legend span { display:inline-flex; align-items:center; gap:6px; font-size:.8rem; font-weight:800; }
.rlm-calendar-legend span::before { content:''; width:14px; height:14px; border-radius:4px; border:1px solid rgba(77,51,22,.25); }
.rlm-calendar-legend .is-available::before { background:#eef7e8; }
.rlm-calendar-legend .is-reserved::before { background:#ffe3d6; }
.rlm-calendar-legend .is-blocked::before { background:#eadfd5; }
.rlm-calendar-note { color:#6e5b48; font-size:.86rem; }
@media (max-width:900px) {
    .rlm-search-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
    .rlm-search-unit,.rlm-search-submit { grid-column:span 1; }
    .rlm-calendar-months { grid-template-columns:1fr; }
}
@media (max-width:620px) {
    .rlm-search-grid,.rlm-selected-booking { grid-template-columns:1fr; }
    .rlm-search-unit,.rlm-search-submit { grid-column:auto; }
    .rlm-booking-search,.rlm-reservation-form { padding:20px; }
    .rlm-calendar-day { min-height:36px; font-size:.78rem; }
}

/* Phase 3: payments and checkout */
.rlm-deposit-line { margin:.35rem 0 0; color:var(--rlm-brown); }
.rlm-payment-methods { margin:22px 0; padding:18px; border:1px solid var(--rlm-gold); border-radius:12px; background:var(--rlm-cream); }
.rlm-payment-methods legend { padding:0 8px; color:var(--rlm-brown); font-weight:800; }
.rlm-payment-methods label { display:flex!important; gap:12px; align-items:flex-start; margin:10px 0; padding:13px; border:1px solid rgba(77,51,22,.16); border-radius:9px; background:#fff; cursor:pointer; }
.rlm-payment-methods input { width:auto!important; margin-top:5px; }
.rlm-payment-methods span { display:grid; gap:3px; }
.rlm-payment-methods small { color:#6e5b48; font-weight:400; }
.rlm-payment-page { display:grid; gap:22px; max-width:900px; margin:0 auto; }
.rlm-payment-summary,.rlm-eft-instructions { padding:26px; border:1px solid rgba(77,51,22,.2); border-radius:14px; background:#fff; box-shadow:0 8px 24px rgba(77,51,22,.07); }
.rlm-payment-summary h2,.rlm-eft-instructions h2 { margin-top:0; }
.rlm-payment-summary dl { display:grid; gap:0; margin:0; }
.rlm-payment-summary dl>div { display:grid; grid-template-columns:minmax(160px,.8fr) minmax(0,1.2fr); gap:18px; padding:12px 0; border-bottom:1px solid rgba(77,51,22,.12); }
.rlm-payment-summary dl>div:last-child { border-bottom:0; }
.rlm-payment-summary dt { font-weight:800; color:var(--rlm-brown); }
.rlm-payment-summary dd { margin:0; text-align:right; font-weight:700; }
.rlm-payfast-form { padding:26px; text-align:center; border:2px solid var(--rlm-gold); border-radius:14px; background:linear-gradient(135deg,#fffaf0,#f4dfb8); }
.rlm-payment-button { min-width:min(100%,420px); min-height:52px; font-size:1.05rem; }
.rlm-secure-note { margin:12px auto 0; max-width:620px; color:#6e5b48; font-size:.86rem; }
.rlm-hold-warning { margin:0; padding:13px 17px; border-left:4px solid var(--rlm-rust); background:#fff4df; color:var(--rlm-brown); font-weight:700; }
.rlm-eft-instructions { border-left:6px solid var(--rlm-rust); }
@media (max-width:620px) {
    .rlm-payment-summary dl>div { grid-template-columns:1fr; gap:4px; }
    .rlm-payment-summary dd { text-align:left; }
}

/* Phase 4: events, reviews, enquiries and lightbox */
.rlm-event-location,.rlm-gallery-count,.rlm-review-meta { color:#6e5b48; font-size:.9rem; font-weight:700; }
.rlm-empty-public { padding:22px; text-align:center; border:1px dashed rgba(77,51,22,.3); border-radius:12px; background:rgba(255,255,255,.55); }
.rlm-review { display:flex; flex-direction:column; }
.rlm-review-photos { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:7px; margin:15px 0 5px; }
.rlm-review-photos a { display:block; aspect-ratio:1; overflow:hidden; border-radius:8px; }
.rlm-review-photos img { width:100%; height:100%; object-fit:cover; transition:transform .25s ease; }
.rlm-review-photos a:hover img { transform:scale(1.05); }
.rlm-form input[type=date],.rlm-form input[type=file] { width:100%; border:1px solid rgba(77,51,22,.35); border-radius:8px; padding:11px 12px; background:#fff; }
.rlm-form small { display:block; margin-top:6px; color:#6e5b48; }
.rlm-form-span-2 { grid-column:1/-1; }
.rlm-public-consent { display:flex!important; align-items:flex-start; gap:10px; font-weight:600!important; }
.rlm-public-consent input { width:auto!important; margin-top:5px; }
.rlm-lightbox { position:fixed; z-index:100000; inset:0; display:none; place-items:center; padding:30px; background:rgba(18,11,6,.94); }
.rlm-lightbox.is-open { display:grid; }
.rlm-lightbox img { max-width:min(1200px,92vw); max-height:86vh; object-fit:contain; box-shadow:0 18px 70px rgba(0,0,0,.55); }
.rlm-lightbox-close,.rlm-lightbox-prev,.rlm-lightbox-next { position:absolute; display:grid; place-items:center; border:1px solid rgba(255,255,255,.6); border-radius:50%; background:rgba(42,27,14,.68); color:#fff; cursor:pointer; }
.rlm-lightbox-close { top:18px; right:18px; width:46px; height:46px; font-size:28px; }
.rlm-lightbox-prev,.rlm-lightbox-next { top:50%; width:50px; height:50px; transform:translateY(-50%); font-size:30px; }
.rlm-lightbox-prev { left:18px; }
.rlm-lightbox-next { right:18px; }
.rlm-lightbox-counter { position:absolute; bottom:18px; left:50%; transform:translateX(-50%); color:#fff; font-weight:800; }
@media (max-width:620px) {
    .rlm-form-span-2 { grid-column:auto; }
    .rlm-lightbox { padding:16px; }
    .rlm-lightbox-prev,.rlm-lightbox-next { top:auto; bottom:16px; transform:none; }
    .rlm-lightbox-counter { bottom:28px; }
}
