/*
Theme Name: Rubin 21
Theme URI: https://rubin21redondela.com
Author: Rubin 21
Author URI: https://rubin21redondela.com
Description: Boutique pilgrim lodging theme for Rubin 21 in Redondela, built for the Camino Portugués. Elementor-compatible: create new pages with Elementor freely, or edit the included pages using the Full Width (Elementor) template.
Version: 1.0
Requires at least: 6.0
Requires PHP: 7.4
Tested up to: 6.6
License: GNU General Public License v2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
Text Domain: rubin21
*/

* { margin:0; padding:0; box-sizing:border-box; }

:root {
  --bg:#f5f5f0;
  --olive:#5a5a40;
  --olive-dark:#4a4a35;
  --olive-10: rgba(90,90,64,.10);
  --olive-15: rgba(90,90,64,.15);
  --olive-20: rgba(90,90,64,.20);
  --cream:#e5e5d1;
  --ink:#2d2d24;
  --muted:#dcdccf;
  --white:#ffffff;
  --amber:#f59e0b;
  --emerald:#059669;
  --emerald-bg:#ecfdf5;
  --emerald-border:#a7f3d0;
  --blue-bg:#dbeafe;
  --blue-ink:#1e40af;
  --amber-bg:#fef3c7;
  --amber-ink:#92400e;
  --radius-full:999px;
  --radius-3xl:24px;
  --radius-2xl:16px;
  --radius-xl:12px;
}

html { scroll-behavior:smooth; }

body {
  background:var(--bg);
  color:var(--ink);
  font-family:'Plus Jakarta Sans', system-ui, -apple-system, sans-serif;
  line-height:1.5;
}

h1,h2,h3,h4,.font-serif { font-family:'Playfair Display', Georgia, serif; }

img { display:block; max-width:100%; }
a { text-decoration:none; color:inherit; }
ul { list-style:none; }
button, input, select, textarea { font-family:inherit; }

.wrap { max-width:1280px; margin:0 auto; padding:0 24px; }
.wrap-narrow { max-width:1024px; margin:0 auto; padding:0 24px; }
.wrap-mid { max-width:896px; margin:0 auto; padding:0 24px; }

.sr-only { position:absolute; width:1px; height:1px; overflow:hidden; clip:rect(0,0,0,0); white-space:nowrap; }

.eyebrow { display:block; font-size:12px; font-weight:600; letter-spacing:.08em; text-transform:uppercase; color:var(--olive); margin-bottom:10px; }

.page-header { text-align:center; max-width:720px; margin:0 auto 40px; }
.page-header h1 { font-size:34px; font-weight:700; color:var(--ink); margin-bottom:10px; }
.page-header p { color:rgba(90,90,64,.85); font-size:14px; line-height:1.6; }
.page-shell { max-width:1280px; margin:0 auto; padding:56px 24px; }

.btn {
  display:inline-flex; align-items:center; justify-content:center; gap:8px;
  padding:13px 26px; border-radius:var(--radius-full); font-weight:600; font-size:12px;
  letter-spacing:.05em; text-transform:uppercase; border:none; cursor:pointer;
  transition:all .15s ease; white-space:nowrap;
}
.btn-olive { background:var(--olive); color:var(--white); }
.btn-olive:hover { background:var(--olive-dark); }
.btn-white { background:var(--white); color:var(--olive); }
.btn-white:hover { background:var(--cream); }
.btn-outline { background:transparent; border:1.5px solid rgba(255,255,255,.4); color:var(--white); }
.btn-outline:hover { background:rgba(255,255,255,.12); }
.btn-block { width:100%; }
.icon { width:18px; height:18px; flex-shrink:0; }
.icon-sm { width:14px; height:14px; flex-shrink:0; }

/* ===== TOPBAR + HEADER ===== */
.topbar { background:var(--olive); color:rgba(255,255,255,.9); font-size:12px; padding:6px 0; border-bottom:1px solid var(--olive-dark); }
.topbar .wrap { display:flex; align-items:center; justify-content:space-between; gap:10px; flex-wrap:wrap; }
.topbar-item { display:flex; align-items:center; gap:6px; }
.topbar-right { display:flex; align-items:center; gap:16px; color:rgba(255,255,255,.8); }
.topbar-right .divider { opacity:.4; }
.topbar-right .hl { color:var(--cream); font-weight:600; }

.site-header { position:sticky; top:0; z-index:100; background:rgba(255,255,255,.92); backdrop-filter:blur(8px); border-bottom:1px solid var(--olive-10); }
.site-header .wrap { display:flex; align-items:center; justify-content:space-between; height:80px; }
.brand { display:flex; align-items:center; gap:12px; }
.brand-mark { width:40px; height:40px; border-radius:50%; background:var(--olive); color:var(--white); font-family:'Playfair Display'; font-style:italic; font-weight:700; font-size:19px; display:flex; align-items:center; justify-content:center; flex-shrink:0; }
.brand-name { display:block; font-family:'Playfair Display'; font-weight:700; font-size:21px; color:var(--ink); }
.brand-sub { display:block; font-size:10px; letter-spacing:.12em; text-transform:uppercase; color:var(--olive); font-weight:600; }

.main-nav { display:flex; align-items:center; gap:4px; }
.main-nav a { padding:9px 15px; border-radius:var(--radius-full); font-size:11.5px; letter-spacing:.08em; text-transform:uppercase; font-weight:500; color:rgba(45,45,36,.8); }
.main-nav a:hover { color:var(--olive); background:var(--olive-10); }
.main-nav a.active { color:var(--olive); background:var(--olive-10); border:1px solid var(--olive-20); font-weight:700; }

.header-actions { display:flex; align-items:center; gap:12px; }
.lang-toggle { display:flex; align-items:center; background:rgba(229,229,209,.6); border-radius:var(--radius-full); padding:4px; border:1px solid var(--olive-15); }
.lang-toggle button { background:none; border:none; padding:5px 10px; border-radius:var(--radius-full); font-size:11px; font-weight:700; color:rgba(90,90,64,.7); cursor:pointer; }
.lang-toggle button.active { background:var(--olive); color:var(--white); }
.admin-btn { padding:8px; border-radius:50%; color:var(--olive); background:none; border:none; cursor:pointer; }
.admin-btn:hover { background:var(--olive-10); }

/* ===== HERO ===== */
.hero { padding:22px 24px 0; }
.hero-inner { max-width:1280px; margin:0 auto; position:relative; min-height:560px; border-radius:40px; overflow:hidden; box-shadow:0 25px 50px rgba(0,0,0,.15); border:1px solid var(--olive-10); display:flex; align-items:center; justify-content:center; }
.hero-inner img { position:absolute; inset:0; width:100%; height:100%; object-fit:cover; filter:brightness(.95); }
.hero-inner::before { content:""; position:absolute; inset:0; background:linear-gradient(to top, rgba(45,45,36,.92), rgba(45,45,36,.4) 55%, rgba(0,0,0,.2)); }
.hero-content { position:relative; z-index:2; max-width:800px; margin:0 auto; padding:32px 24px 60px; text-align:center; }
.hero-badge { display:inline-flex; align-items:center; gap:8px; padding:7px 16px; border-radius:var(--radius-full); background:rgba(255,255,255,.2); border:1px solid rgba(255,255,255,.3); color:var(--white); font-size:11.5px; font-weight:600; letter-spacing:.1em; text-transform:uppercase; backdrop-filter:blur(6px); margin-bottom:22px; }
.hero-content h1 { font-size:44px; font-weight:700; color:var(--white); line-height:1.2; margin-bottom:20px; }
.hero-content p { color:var(--cream); font-size:17px; font-weight:300; line-height:1.6; max-width:620px; margin:0 auto; }

.booking-bar { position:relative; z-index:3; max-width:1280px; margin:-28px auto 0; padding:0 24px; display:flex; justify-content:center; background:transparent; }
.booking-bar cb-book-now-button { display:inline-block; width:auto; max-width:100%; background:transparent; }
.booking-form { display:grid; grid-template-columns:repeat(4,1fr); gap:16px; align-items:end; }
.field label { display:block; font-size:10px; font-weight:700; letter-spacing:.08em; text-transform:uppercase; color:var(--olive); margin-bottom:6px; }
.field input, .field select { width:100%; background:var(--bg); border:none; border-bottom:2px solid var(--olive-20); border-radius:10px; padding:10px 12px; font-size:14px; font-weight:600; color:var(--ink); }
.field input:focus, .field select:focus { outline:none; border-color:var(--olive); }

/* ===== TRUST / PERKS ===== */
.perks-grid { display:grid; grid-template-columns:repeat(4,1fr); gap:22px; }
.perk-card { background:var(--white); border:1px solid var(--olive-10); border-radius:var(--radius-3xl); padding:26px; display:flex; flex-direction:column; gap:12px; }
.perk-icon { width:48px; height:48px; border-radius:16px; background:var(--olive-10); border:1px solid var(--olive-20); color:var(--olive); display:flex; align-items:center; justify-content:center; }
.perk-card h3 { font-size:16px; font-weight:700; color:var(--ink); }
.perk-card p { font-size:12.5px; color:rgba(90,90,64,.85); line-height:1.5; }

/* ===== CAMINO BANNER ===== */
.camino-banner { max-width:1280px; margin:0 auto; background:var(--olive); border-radius:36px; padding:44px; color:var(--white); display:grid; grid-template-columns:2fr 1fr; gap:32px; align-items:center; box-shadow:0 20px 40px rgba(0,0,0,.12); }
.camino-pill { display:inline-flex; align-items:center; gap:8px; padding:6px 14px; border-radius:var(--radius-full); background:rgba(255,255,255,.2); border:1px solid rgba(255,255,255,.3); font-size:11px; font-weight:600; letter-spacing:.06em; text-transform:uppercase; margin-bottom:16px; }
.camino-banner h2 { font-size:30px; font-weight:700; line-height:1.3; margin-bottom:14px; }
.camino-banner > div:first-child > p { color:var(--cream); font-size:13.5px; line-height:1.6; max-width:560px; margin-bottom:18px; }
.tag-row { display:flex; gap:10px; flex-wrap:wrap; }
.tag { display:inline-flex; align-items:center; gap:7px; background:var(--olive-dark); border:1px solid rgba(255,255,255,.1); border-radius:var(--radius-full); padding:7px 14px; font-size:12px; font-weight:500; }
.camino-cta { display:flex; justify-content:center; }

/* ===== ROOMS ===== */
.section-title { text-align:center; margin-bottom:36px; }
.section-title h2 { font-size:32px; font-weight:700; color:var(--ink); margin-bottom:8px; }
.section-title p { color:rgba(90,90,64,.85); font-size:14px; }

.rooms-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:32px; }
.room-card { background:var(--white); border:1px solid var(--olive-15); border-radius:var(--radius-3xl); overflow:hidden; display:flex; flex-direction:column; box-shadow:0 1px 2px rgba(0,0,0,.03); transition:box-shadow .3s, border-color .3s; }
.room-card:hover { box-shadow:0 20px 35px rgba(0,0,0,.1); border-color:var(--olive-20); }
.room-photo { position:relative; height:280px; overflow:hidden; background:var(--muted); }
.room-photo img { width:100%; height:100%; object-fit:cover; }
.room-badges { position:absolute; top:16px; left:16px; right:16px; display:flex; flex-wrap:wrap; gap:8px; }
.badge-floor { padding:5px 12px; border-radius:var(--radius-full); font-size:11px; font-weight:700; background:var(--olive); color:var(--white); }
.badge-rate { padding:5px 11px; border-radius:var(--radius-full); font-size:10px; font-weight:700; background:var(--amber); color:var(--white); display:inline-flex; align-items:center; gap:4px; }

.room-body { padding:24px; display:flex; flex-direction:column; gap:16px; flex:1; }
.room-head { display:flex; justify-content:space-between; gap:12px; align-items:flex-start; }
.room-head h3 { font-size:19px; font-weight:700; color:var(--ink); line-height:1.3; }
.room-price { text-align:right; flex-shrink:0; }
.price-row { display:flex; align-items:baseline; justify-content:flex-end; gap:5px; }
.price-now { font-size:23px; font-weight:700; font-family:'Playfair Display'; color:var(--olive); }
.price-was { font-size:12px; color:rgba(45,45,36,.5); text-decoration:line-through; }
.price-save { display:inline-block; font-size:10px; color:#047857; font-weight:600; background:var(--emerald-bg); border:1px solid var(--emerald-border); padding:2px 6px; border-radius:6px; margin-top:4px; }

.room-desc { font-size:12.5px; color:rgba(45,45,36,.7); line-height:1.55; }

.deposit-box { background:var(--bg); border:1px solid var(--olive-15); border-radius:var(--radius-xl); padding:11px 13px; font-size:12px; display:flex; align-items:center; gap:8px; }
.deposit-box strong { color:var(--olive); font-weight:600; }

.spec-row { display:flex; flex-wrap:wrap; gap:14px; font-size:12px; color:rgba(45,45,36,.8); padding:11px 0; border-top:1px solid var(--olive-10); border-bottom:1px solid var(--olive-10); font-weight:500; }
.spec-row span { display:flex; align-items:center; gap:5px; }

.amenity-chips { display:flex; flex-wrap:wrap; gap:6px; }
.amenity-chip { display:flex; align-items:center; gap:5px; padding:5px 10px; border-radius:var(--radius-full); font-size:11px; background:var(--bg); border:1px solid var(--olive-15); color:var(--ink); }

.rooms-cta { text-align:center; margin-top:40px; }

/* filter bar (rooms page) */
.filter-bar { background:var(--white); border:1px solid var(--olive-15); border-radius:var(--radius-3xl); padding:16px 20px; display:flex; align-items:center; justify-content:space-between; gap:16px; flex-wrap:wrap; margin-bottom:36px; }
.filter-label { display:flex; align-items:center; gap:8px; font-size:11.5px; text-transform:uppercase; font-weight:700; color:var(--ink); letter-spacing:.05em; }
.filter-buttons { display:flex; gap:8px; flex-wrap:wrap; }
.filter-buttons button { padding:9px 16px; border-radius:var(--radius-full); font-size:11.5px; font-weight:600; text-transform:uppercase; letter-spacing:.04em; border:none; cursor:pointer; background:var(--bg); color:var(--olive); }
.filter-buttons button.active { background:var(--olive); color:var(--white); }

/* ===== LOCATION TEASER (home) ===== */
.location-teaser { background:var(--white); border-top:1px solid var(--olive-10); border-bottom:1px solid var(--olive-10); padding:70px 0; }
.location-teaser .wrap { display:grid; grid-template-columns:1fr 1fr; gap:56px; align-items:center; }
.location-teaser h2 { font-size:32px; font-weight:700; margin-bottom:16px; }
.location-teaser > .wrap > div:first-child > p { color:rgba(45,45,36,.8); font-size:14px; line-height:1.6; margin-bottom:22px; }
.stage-list { display:flex; flex-direction:column; gap:10px; margin-bottom:20px; }
.stage-item { display:flex; align-items:center; gap:12px; background:var(--bg); border:1px solid var(--olive-10); border-radius:var(--radius-2xl); padding:14px; font-size:12.5px; font-weight:500; }
.map-link { display:inline-flex; align-items:center; gap:6px; color:var(--olive); font-weight:700; font-size:12px; text-transform:uppercase; letter-spacing:.04em; }
.map-link:hover { color:var(--olive-dark); }

.teaser-image { position:relative; height:380px; border-radius:24px; overflow:hidden; border:1px solid var(--olive-15); box-shadow:0 20px 40px rgba(0,0,0,.1); }
.teaser-image img { width:100%; height:100%; object-fit:cover; }
.teaser-image::after { content:""; position:absolute; inset:0; background:linear-gradient(to top, rgba(45,45,36,.9), transparent 55%); }
.teaser-caption { position:absolute; left:24px; right:24px; bottom:24px; background:rgba(255,255,255,.92); backdrop-filter:blur(6px); border-radius:var(--radius-2xl); padding:14px 18px; z-index:2; }
.teaser-caption strong { display:block; font-family:'Playfair Display'; font-weight:700; color:var(--ink); }
.teaser-caption span { font-size:12px; color:var(--olive); }

/* ===== REVIEWS ===== */
.reviews-grid { display:grid; grid-template-columns:repeat(4,1fr); gap:22px; }
.review-card { background:var(--white); border:1px solid var(--olive-15); border-radius:var(--radius-3xl); padding:22px; display:flex; flex-direction:column; justify-content:space-between; gap:14px; }
.review-top { display:flex; align-items:center; justify-content:space-between; }
.stars { color:var(--amber); letter-spacing:1px; }
.source-badge { font-size:10px; font-weight:700; text-transform:uppercase; background:var(--olive-10); color:var(--olive); border:1px solid var(--olive-20); padding:3px 9px; border-radius:var(--radius-full); }
.review-card blockquote { font-size:12.5px; font-style:italic; color:rgba(45,45,36,.85); line-height:1.6; }
.review-author { padding-top:12px; border-top:1px solid var(--olive-10); display:flex; align-items:center; justify-content:space-between; font-size:11.5px; color:var(--olive); }
.review-author strong { display:block; color:var(--ink); font-size:12.5px; }

/* ===== GALLERY ===== */
.category-bar { display:flex; flex-wrap:wrap; justify-content:center; gap:8px; margin-bottom:36px; }
.category-bar button { padding:9px 16px; border-radius:var(--radius-full); font-size:11.5px; font-weight:600; text-transform:uppercase; letter-spacing:.04em; border:1px solid var(--olive-20); background:var(--white); color:var(--olive); cursor:pointer; }
.category-bar button.active { background:var(--olive); color:var(--white); border-color:var(--olive); }
.gallery-grid { display:grid; grid-template-columns:repeat(4,1fr); gap:22px; }
.gallery-item { position:relative; height:250px; border-radius:var(--radius-3xl); overflow:hidden; border:1px solid var(--olive-15); cursor:pointer; background:var(--white); }
.gallery-item img { width:100%; height:100%; object-fit:cover; transition:transform .4s; }
.gallery-item:hover img { transform:scale(1.05); }
.gallery-caption { position:absolute; inset:0; background:linear-gradient(to top, rgba(45,45,36,.92), transparent 55%); display:flex; align-items:flex-end; padding:16px; opacity:0; transition:opacity .3s; }
.gallery-item:hover .gallery-caption { opacity:1; }
.gallery-caption span { color:var(--white); font-size:12px; font-weight:500; }

.lightbox { position:fixed; inset:0; background:rgba(0,0,0,.85); backdrop-filter:blur(6px); display:none; align-items:center; justify-content:center; padding:24px; z-index:999; }
.lightbox.open { display:flex; }
.lightbox-inner { max-width:900px; width:100%; background:var(--bg); border-radius:var(--radius-3xl); overflow:hidden; border:1px solid var(--olive-20); position:relative; }
.lightbox-inner img { width:100%; max-height:70vh; object-fit:contain; background:var(--ink); }
.lightbox-caption { padding:16px; text-align:center; font-size:12px; font-weight:600; text-transform:uppercase; letter-spacing:.05em; }
.lightbox-close { position:absolute; top:14px; right:14px; background:rgba(0,0,0,.5); color:var(--white); border:none; border-radius:50%; width:36px; height:36px; cursor:pointer; font-size:18px; z-index:2; }

/* ===== SERVICES ===== */
.services-block { margin-bottom:56px; }
.services-block-title { display:flex; align-items:center; gap:12px; border-bottom:1px solid var(--olive-20); padding-bottom:16px; margin-bottom:28px; }
.services-block-title h2 { font-size:24px; font-weight:700; }
.services-grid-3 { display:grid; grid-template-columns:repeat(3,1fr); gap:22px; }
.services-grid-4 { display:grid; grid-template-columns:repeat(4,1fr); gap:22px; }
.service-card { background:var(--white); border:1px solid var(--olive-15); border-radius:var(--radius-3xl); padding:24px; display:flex; flex-direction:column; gap:10px; }
.service-card .perk-icon { margin-bottom:4px; }
.service-card h3 { font-size:16px; font-weight:700; }
.service-card p { font-size:12px; color:rgba(90,90,64,.85); line-height:1.55; }

/* ===== LOCATION PAGE ===== */
.map-embed { background:var(--white); border:1px solid var(--olive-15); border-radius:var(--radius-3xl); overflow:hidden; box-shadow:0 20px 40px rgba(0,0,0,.08); margin-bottom:40px; }
.map-frame-wrap { height:440px; width:100%; position:relative; background:var(--muted); }
.map-frame-wrap iframe { width:100%; height:100%; border:0; }
.map-info-pill { position:absolute; top:16px; left:16px; background:rgba(255,255,255,.96); backdrop-filter:blur(6px); border:1px solid var(--olive-15); border-radius:var(--radius-2xl); padding:14px; max-width:260px; font-size:12px; box-shadow:0 10px 25px rgba(0,0,0,.15); }
.map-info-pill strong { display:block; font-family:'Playfair Display'; color:var(--olive); font-size:14px; margin-bottom:4px; }

.distance-grid { display:grid; grid-template-columns:repeat(4,1fr); gap:20px; margin-bottom:40px; }
.distance-card { background:var(--white); border:1px solid var(--olive-15); border-radius:var(--radius-3xl); padding:22px; display:flex; flex-direction:column; gap:6px; }
.distance-top { display:flex; align-items:center; justify-content:space-between; gap:8px; }
.distance-top strong { font-family:'Playfair Display'; font-size:15px; }
.distance-km { font-size:11px; font-weight:700; font-family:monospace; color:var(--olive); background:var(--olive-10); border:1px solid var(--olive-20); padding:3px 9px; border-radius:var(--radius-full); }
.distance-time { font-size:12px; font-weight:600; color:var(--olive); }
.distance-desc { font-size:12px; color:rgba(90,90,64,.85); line-height:1.5; padding-top:4px; }

.transport-box { background:var(--white); border:1px solid var(--olive-15); border-radius:var(--radius-3xl); padding:32px; }
.transport-box h2 { display:flex; align-items:center; gap:10px; font-size:20px; font-weight:700; margin-bottom:22px; }
.transport-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:20px; }
.transport-item { background:var(--bg); border:1px solid var(--olive-10); border-radius:var(--radius-2xl); padding:18px; }
.transport-item .t-head { display:flex; align-items:center; gap:8px; font-weight:700; color:var(--olive); font-size:13px; margin-bottom:8px; }
.transport-item p { font-size:12px; color:rgba(90,90,64,.85); line-height:1.5; }

/* ===== CONTACT ===== */
.contact-grid { display:grid; grid-template-columns:1.4fr 1fr; gap:36px; }
.contact-form-card { background:var(--white); border:1px solid var(--olive-15); border-radius:var(--radius-3xl); padding:32px; }
.form-grid { display:grid; grid-template-columns:1fr 1fr; gap:22px; margin-bottom:22px; }
.form-field label { display:block; font-size:11px; font-weight:700; text-transform:uppercase; letter-spacing:.04em; color:var(--olive); margin-bottom:6px; }
.form-field input, .form-field textarea { width:100%; background:var(--bg); border:none; border-bottom:2px solid var(--olive-20); border-radius:10px; padding:11px 14px; font-size:13px; font-weight:500; color:var(--ink); }
.form-field input:focus, .form-field textarea:focus { outline:none; border-color:var(--olive); }
.form-field.full { grid-column:1/-1; }

.contact-info-card { background:var(--white); border:1px solid var(--olive-15); border-radius:var(--radius-3xl); padding:26px; margin-bottom:20px; }
.contact-info-card h3 { font-size:17px; font-weight:700; border-bottom:1px solid var(--olive-10); padding-bottom:12px; margin-bottom:16px; }
.contact-row { display:flex; align-items:flex-start; gap:12px; font-size:12.5px; margin-bottom:16px; }
.contact-row strong { display:block; color:var(--ink); margin-bottom:2px; }
.contact-row a, .contact-row span.value { color:var(--olive); font-weight:600; }
.whatsapp-note { background:var(--cream); border:1px solid var(--olive-20); border-radius:var(--radius-3xl); padding:22px; }
.whatsapp-note .wa-title { display:flex; align-items:center; gap:8px; font-size:12px; font-weight:700; color:var(--olive); text-transform:uppercase; margin-bottom:8px; }
.whatsapp-note p { font-size:12.5px; color:rgba(45,45,36,.8); line-height:1.55; }

/* ===== BOOKING PAGE ===== */
.booking-steps { display:flex; flex-wrap:wrap; gap:10px; justify-content:center; margin-bottom:40px; }
.booking-step { display:flex; align-items:center; gap:8px; padding:9px 16px; border-radius:var(--radius-full); background:var(--white); border:1px solid var(--olive-15); font-size:11.5px; font-weight:600; color:var(--olive); }
.booking-step.current { background:var(--olive); color:var(--white); border-color:var(--olive); }
.booking-summary-bar { background:var(--white); border:1px solid var(--olive-15); border-radius:var(--radius-3xl); padding:22px; margin-bottom:32px; }
.booking-panel { background:var(--white); border:1px solid var(--olive-15); border-radius:var(--radius-3xl); padding:28px; margin-bottom:28px; }
.booking-panel h2 { font-size:19px; font-weight:700; margin-bottom:18px; }
.booking-rooms-grid { display:grid; grid-template-columns:repeat(2,1fr); gap:16px; }
.booking-room-option { border:1.5px solid var(--olive-15); border-radius:var(--radius-2xl); padding:16px; display:flex; gap:14px; cursor:pointer; }
.booking-room-option:hover { border-color:var(--olive); }
.booking-room-option img { width:88px; height:88px; border-radius:var(--radius-xl); object-fit:cover; flex-shrink:0; }
.booking-room-option .info { flex:1; }
.booking-room-option .info h3 { font-size:14px; font-weight:700; margin-bottom:4px; }
.booking-room-option .info .price { font-size:15px; font-weight:700; color:var(--olive); font-family:'Playfair Display'; }
.booking-note { background:var(--cream); border:1px solid var(--olive-20); border-radius:var(--radius-2xl); padding:18px; font-size:12.5px; color:rgba(45,45,36,.85); line-height:1.6; display:flex; gap:10px; }

/* ===== POLICY PAGES ===== */
.policy-card { background:var(--white); border:1px solid var(--olive-15); border-radius:var(--radius-3xl); padding:32px; font-size:13.5px; line-height:1.7; color:var(--ink); }
.policy-card section { margin-bottom:24px; }
.policy-card section:last-child { margin-bottom:0; }
.policy-card h2 { font-size:17px; font-weight:700; margin-bottom:8px; }
.policy-card p { color:rgba(45,45,36,.85); }
.policy-badge { display:inline-flex; align-items:center; gap:8px; font-size:11px; font-weight:700; text-transform:uppercase; letter-spacing:.04em; color:var(--olive); background:var(--cream); padding:6px 14px; border-radius:var(--radius-full); border:1px solid var(--olive-20); margin-bottom:14px; }
.policy-date { font-size:12px; color:rgba(90,90,64,.7); margin-bottom:22px; display:block; }

.rules-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:20px; margin-bottom:32px; }
.rule-card { background:var(--white); border:1px solid var(--olive-15); border-radius:var(--radius-3xl); padding:24px; display:flex; flex-direction:column; gap:10px; }
.rule-icon { width:42px; height:42px; border-radius:14px; display:flex; align-items:center; justify-content:center; }
.rule-icon.blue { background:var(--blue-bg); color:var(--blue-ink); }
.rule-icon.green { background:var(--emerald-bg); color:#047857; }
.rule-icon.amber { background:var(--amber-bg); color:var(--amber-ink); }
.rule-card h3 { font-size:15px; font-weight:700; }
.rule-card p { font-size:12px; color:rgba(90,90,64,.9); line-height:1.55; }

.manage-box { background:var(--white); border:1px solid var(--olive-15); border-radius:var(--radius-3xl); padding:32px; }
.manage-box h2 { display:flex; align-items:center; gap:10px; font-size:19px; font-weight:700; margin-bottom:6px; }
.manage-box > p { font-size:12px; color:var(--olive); margin-bottom:20px; }
.manage-form { display:grid; grid-template-columns:1fr 1fr auto; gap:16px; align-items:end; }
.manage-form .form-field input { border:1px solid var(--olive-20); border-radius:var(--radius-xl); font-family:monospace; font-weight:700; }

/* ===== FOOTER ===== */
.site-footer { background:var(--ink); color:var(--muted); padding-top:56px; }
.footer-grid { display:grid; grid-template-columns:1.3fr 1fr 1fr 1.2fr; gap:40px; padding-bottom:48px; border-bottom:1px solid rgba(90,90,64,.3); }
.footer-brand { display:flex; align-items:center; gap:10px; margin-bottom:16px; }
.footer-brand .brand-name { color:var(--white); }
.footer-brand .brand-sub { color:var(--cream); }
.footer-col p.desc { font-size:12px; color:rgba(220,220,207,.8); line-height:1.6; margin-bottom:16px; }
.footer-seal { display:flex; align-items:center; gap:10px; background:rgba(90,90,64,.3); border:1px solid rgba(90,90,64,.5); border-radius:var(--radius-2xl); padding:12px 14px; }
.footer-seal strong { display:block; font-size:12px; color:var(--white); }
.footer-seal span.sub { font-size:11px; color:var(--muted); }
.footer-col h3 { font-family:'Playfair Display'; font-size:17px; font-weight:600; color:var(--white); border-bottom:1px solid rgba(90,90,64,.3); padding-bottom:10px; margin-bottom:14px; }
.footer-col ul { display:flex; flex-direction:column; gap:10px; }
.footer-col ul a { font-size:11.5px; text-transform:uppercase; letter-spacing:.03em; display:flex; align-items:center; gap:8px; color:var(--muted); }
.footer-col ul a:hover { color:var(--white); }
.footer-legal-note { padding-top:14px; font-size:11px; color:rgba(220,220,207,.6); line-height:1.5; }
.footer-contact-row { display:flex; align-items:flex-start; gap:10px; font-size:12px; margin-bottom:12px; }
.footer-hours-label { display:block; font-size:10px; text-transform:uppercase; letter-spacing:.05em; color:rgba(220,220,207,.7); margin-bottom:4px; }
.footer-hours-value { display:block; font-size:12px; font-weight:600; color:var(--cream); }
.footer-bottom { display:flex; align-items:center; justify-content:space-between; padding:22px 0; font-size:11.5px; color:rgba(220,220,207,.6); gap:12px; flex-wrap:wrap; }
.footer-bottom .status { display:flex; align-items:center; gap:6px; color:var(--cream); }

.whatsapp-btn { position:fixed; bottom:24px; right:24px; z-index:200; display:flex; align-items:center; gap:8px; background:#25D366; color:var(--white); padding:14px; border-radius:999px; box-shadow:0 15px 30px rgba(0,0,0,.25); }

/* ===== RESPONSIVE ===== */
@media (max-width: 1024px) {
  .main-nav { display:none; }
  .perks-grid, .services-grid-4, .distance-grid { grid-template-columns:repeat(2,1fr); }
  .rooms-grid, .services-grid-3 { grid-template-columns:repeat(2,1fr); }
  .reviews-grid, .gallery-grid { grid-template-columns:repeat(2,1fr); }
  .camino-banner, .location-teaser .wrap, .contact-grid { grid-template-columns:1fr; }
  .camino-cta { justify-content:flex-start; }
  .transport-grid { grid-template-columns:1fr; }
  .booking-rooms-grid { grid-template-columns:1fr; }
}
@media (max-width: 640px) {
  .topbar .wrap { flex-direction:column; align-items:flex-start; gap:4px; }
  .booking-form { grid-template-columns:1fr 1fr; }
  .booking-bar { padding:16px; }
  .perks-grid, .services-grid-4, .services-grid-3, .rooms-grid, .reviews-grid, .gallery-grid, .distance-grid, .form-grid, .rules-grid { grid-template-columns:1fr; }
  .footer-grid { grid-template-columns:1fr; }
  .hero-content h1 { font-size:30px; }
  .camino-banner h2, .location-teaser h2, .page-header h1 { font-size:26px; }
  .manage-form { grid-template-columns:1fr; }
}
