:root {
  --bg: #10110f;
  --bg-soft: #161814;
  --panel: #1b1d19;
  --panel-2: #23251f;
  --line: rgba(255,255,255,.11);
  --text: #f7f3ea;
  --muted: #aaa99f;
  --gold: #dec184;
  --gold-2: #f2dfb2;
  --green: #7f9c74;
  --danger: #c96f68;
  --shadow: 0 24px 80px rgba(0,0,0,.24);
  --radius-xl: 32px;
  --radius-lg: 24px;
  --radius-md: 18px;
  --shell: min(1180px, calc(100% - 40px));
}
* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body { margin:0; background:var(--bg); color:var(--text); font-family:"DM Sans",system-ui,sans-serif; line-height:1.6; }
img { display:block; max-width:100%; }
a { color:inherit; text-decoration:none; }
button,input,textarea,select { font:inherit; }
button { color:inherit; }
.shell { width:var(--shell); margin-inline:auto; }
.sr-only { position:absolute; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip:rect(0,0,0,0); white-space:nowrap; border:0; }
.hidden { display:none !important; }

.site-header { position:fixed; inset:0 0 auto; z-index:50; height:82px; display:flex; align-items:center; justify-content:space-between; padding:0 max(24px, calc((100vw - 1180px)/2)); transition:.25s ease; }
.site-header.scrolled { background:rgba(16,17,15,.88); backdrop-filter:blur(18px); border-bottom:1px solid var(--line); }
.brand { display:inline-flex; align-items:center; gap:12px; }
.brand-mark { width:46px; aspect-ratio:1; border-radius:50%; display:grid; place-items:center; border:1px solid rgba(222,193,132,.55); color:var(--gold-2); font-family:"Playfair Display",serif; font-weight:700; letter-spacing:-.03em; background:rgba(16,17,15,.6); }
.brand-copy { display:flex; flex-direction:column; line-height:1.1; }
.brand-copy strong { font-family:"Playfair Display",serif; font-size:17px; }
.brand-copy small { margin-top:5px; color:var(--muted); font-size:11px; letter-spacing:.04em; }
.main-nav { display:flex; align-items:center; gap:28px; font-size:14px; }
.main-nav a { color:#dedbd3; transition:.2s; }
.main-nav a:hover { color:var(--gold-2); }
.nav-cta { border:1px solid rgba(222,193,132,.55); padding:10px 17px; border-radius:999px; }
.menu-toggle { display:none; width:44px; height:44px; border-radius:50%; background:rgba(255,255,255,.08); border:1px solid var(--line); padding:10px; }
.menu-toggle span:not(.sr-only) { display:block; height:2px; background:currentColor; margin:5px 0; border-radius:999px; }

.hero { min-height:96vh; position:relative; display:grid; align-items:end; overflow:hidden; }
.hero-media { position:absolute; inset:0; width:100%; height:100%; object-fit:cover; object-position:center 56%; }
.hero-shade { position:absolute; inset:0; background:linear-gradient(180deg, rgba(6,7,6,.34) 0%, rgba(6,7,6,.38) 35%, rgba(10,11,9,.92) 100%), linear-gradient(90deg, rgba(7,8,7,.72) 0%, transparent 62%); }
.hero-content { position:relative; z-index:1; padding:160px 0 68px; }
.eyebrow { margin:0 0 14px; color:var(--gold); text-transform:uppercase; letter-spacing:.18em; font-size:12px; font-weight:700; }
h1,h2,h3 { margin-top:0; }
h1,h2 { font-family:"Playfair Display",serif; line-height:1.03; letter-spacing:-.025em; }
h1 { max-width:900px; margin-bottom:22px; font-size:clamp(48px,7.4vw,98px); }
h1 em,h2 em { color:var(--gold-2); font-style:italic; }
.hero-text { max-width:670px; color:#e1dfd7; font-size:clamp(17px,2vw,21px); margin:0 0 30px; }
.hero-actions { display:flex; gap:12px; flex-wrap:wrap; }
.button { border:0; min-height:50px; padding:0 24px; border-radius:999px; display:inline-flex; align-items:center; justify-content:center; gap:8px; cursor:pointer; font-weight:700; transition:transform .2s, background .2s, border-color .2s; }
.button:hover { transform:translateY(-2px); }
.button-primary { background:linear-gradient(135deg,var(--gold),var(--gold-2)); color:#17160f; }
.button-secondary { background:var(--text); color:#111; }
.button-ghost { background:rgba(19,20,17,.35); border:1px solid rgba(255,255,255,.22); backdrop-filter:blur(8px); }
.button.full { width:100%; }
.hero-facts { margin-top:52px; display:grid; grid-template-columns:repeat(4,1fr); border-top:1px solid rgba(255,255,255,.18); border-bottom:1px solid rgba(255,255,255,.18); max-width:880px; }
.hero-facts div { padding:17px 26px 17px 0; display:flex; flex-direction:column; }
.hero-facts strong { font-size:18px; color:#fff; }
.hero-facts span { color:#bcb9af; font-size:12px; }
.scroll-hint { position:absolute; right:4vw; bottom:36px; z-index:2; width:48px; height:48px; display:grid; place-items:center; border:1px solid rgba(255,255,255,.24); border-radius:50%; color:var(--gold-2); }

.section { padding:110px 0; }
.section-heading { display:grid; grid-template-columns:1.05fr .95fr; gap:80px; align-items:end; margin-bottom:48px; }
.section-heading h2, .dome-copy h2, .reservation-copy h2 { font-size:clamp(38px,5vw,64px); margin-bottom:0; }
.section-heading > p { margin:0 0 8px; color:var(--muted); max-width:550px; }
.experience-grid { display:grid; grid-template-columns:1fr 1fr; gap:22px; }
.experience-card { min-height:620px; border:1px solid var(--line); border-radius:var(--radius-xl); overflow:hidden; background:var(--panel); position:relative; }
.experience-image-wrap { height:390px; overflow:hidden; }
.experience-image-wrap img { width:100%; height:100%; object-fit:cover; transition:transform .6s ease; }
.experience-card:hover img { transform:scale(1.035); }
.experience-body { padding:30px; }
.pill { display:inline-flex; padding:7px 11px; border-radius:999px; background:rgba(222,193,132,.11); border:1px solid rgba(222,193,132,.25); color:var(--gold-2); font-size:12px; }
.experience-body h3 { margin:17px 0 10px; font-family:"Playfair Display",serif; font-size:32px; }
.experience-body p { color:var(--muted); margin:0 0 17px; }
.mini-specs { display:flex; flex-wrap:wrap; gap:7px; margin-bottom:20px; }
.mini-specs span { border:1px solid var(--line); border-radius:999px; padding:7px 10px; font-size:12px; color:#d7d4cc; }
.text-link { border:0; background:none; padding:0; color:var(--gold-2); cursor:pointer; font-weight:700; }

.features-section { background:var(--bg-soft); border-block:1px solid var(--line); }
.feature-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:14px; }
.feature { min-height:220px; padding:28px; background:linear-gradient(180deg,rgba(255,255,255,.045),rgba(255,255,255,.018)); border:1px solid var(--line); border-radius:var(--radius-lg); }
.feature > span { width:42px; height:42px; border-radius:14px; display:grid; place-items:center; background:rgba(222,193,132,.10); color:var(--gold-2); font-size:22px; }
.feature h3 { margin:26px 0 8px; font-size:18px; }
.feature p { color:var(--muted); margin:0; font-size:14px; }

.pricing-layout { display:grid; grid-template-columns:1.35fr .65fr; gap:22px; align-items:start; }
.price-table-card,.calculator { border:1px solid var(--line); background:var(--panel); border-radius:var(--radius-xl); padding:28px; }
.price-tabs { display:flex; gap:8px; padding:5px; background:#13140f; border-radius:999px; margin-bottom:22px; }
.price-tab { flex:1; min-height:46px; border:0; border-radius:999px; background:transparent; color:var(--muted); cursor:pointer; font-weight:600; }
.price-tab.active { background:var(--gold); color:#14140f; }
.price-row { display:flex; align-items:center; justify-content:space-between; padding:17px 6px; border-bottom:1px solid var(--line); }
.price-row:last-child { border-bottom:0; }
.price-row span { color:#d5d2c9; }
.price-row strong { font-size:19px; color:var(--gold-2); }
.small-note { color:var(--muted); font-size:12px; margin:20px 0 0; }
.calculator { position:sticky; top:104px; }
.calculator h3 { font-family:"Playfair Display",serif; font-size:30px; margin-bottom:22px; }
label { display:flex; flex-direction:column; gap:8px; font-size:13px; color:#d3d0c7; margin-bottom:14px; }
input,textarea,select { width:100%; background:#11120f; color:var(--text); border:1px solid var(--line); border-radius:14px; padding:13px 14px; outline:none; transition:.2s; }
input:focus,textarea:focus,select:focus { border-color:rgba(222,193,132,.62); box-shadow:0 0 0 3px rgba(222,193,132,.08); }
.check-row { flex-direction:row; align-items:center; gap:10px; margin:6px 0 18px; }
.check-row input { width:18px; height:18px; }
.check-label { justify-content:flex-end; }
.estimate { padding:20px; border-radius:18px; background:linear-gradient(135deg,rgba(222,193,132,.16),rgba(222,193,132,.05)); border:1px solid rgba(222,193,132,.24); margin:10px 0 16px; display:flex; flex-direction:column; }
.estimate span,.estimate small { color:var(--muted); }
.estimate strong { color:var(--gold-2); font-size:31px; margin:2px 0; }

.gallery-section { padding-top:60px; background:#0d0e0c; }
.gallery { display:grid; grid-template-columns:repeat(4,1fr); grid-auto-rows:235px; gap:10px; }
.gallery-item { appearance:none; border:0; padding:0; overflow:hidden; border-radius:18px; cursor:zoom-in; background:#1a1a17; }
.gallery-item.tall { grid-row:span 2; }
.gallery-item.wide { grid-column:span 2; }
.gallery-item img { width:100%; height:100%; object-fit:cover; transition:transform .45s ease, filter .45s ease; }
.gallery-item:hover img { transform:scale(1.04); filter:brightness(1.08); }
.lightbox { width:min(1000px,calc(100% - 34px)); border:1px solid var(--line); border-radius:24px; padding:12px; background:#0e0f0d; color:var(--text); box-shadow:var(--shadow); }
.lightbox::backdrop { background:rgba(0,0,0,.84); backdrop-filter:blur(8px); }
.lightbox img { width:100%; max-height:78vh; object-fit:contain; border-radius:16px; }
.lightbox p { margin:10px 4px 3px; color:var(--muted); }
.lightbox-close { position:absolute; top:20px; right:20px; width:42px; height:42px; border:1px solid var(--line); background:rgba(0,0,0,.55); border-radius:50%; font-size:28px; cursor:pointer; }

.dome-banner { display:grid; grid-template-columns:1.1fr .9fr; align-items:center; gap:56px; }
.dome-photo { border-radius:var(--radius-xl); overflow:hidden; min-height:600px; }
.dome-photo img { width:100%; height:100%; min-height:600px; object-fit:cover; }
.dome-copy p { color:var(--muted); font-size:17px; }
.clean-list { list-style:none; padding:0; margin:25px 0 30px; }
.clean-list li { border-top:1px solid var(--line); padding:13px 0; color:#dedbd3; }
.clean-list li::before { content:"✓"; color:var(--gold); margin-right:10px; }

.nearby-section { background:var(--bg-soft); border-block:1px solid var(--line); }
.nearby-grid { display:grid; grid-template-columns:repeat(4,1fr); gap:12px; }
.nearby-card { padding:24px; border-radius:22px; min-height:190px; background:var(--panel); border:1px solid var(--line); }
.nearby-card span { color:var(--gold); font-size:13px; font-weight:700; }
.nearby-card h3 { font-family:"Playfair Display",serif; font-size:21px; margin:14px 0 8px; }
.nearby-card p { color:var(--muted); font-size:13px; margin:0; }

.reservation-section { background:radial-gradient(circle at 15% 20%, rgba(222,193,132,.08), transparent 34%), #0d0e0c; }
.reservation-layout { display:grid; grid-template-columns:.9fr 1.1fr; gap:76px; align-items:start; }
.reservation-copy > p { color:var(--muted); max-width:530px; }
.contact-cards { display:grid; gap:10px; margin:30px 0; }
.contact-cards div { padding:16px 18px; border-left:2px solid var(--gold); background:rgba(255,255,255,.025); display:flex; flex-direction:column; }
.contact-cards span { color:var(--muted); font-size:13px; }
.reservation-form { border:1px solid var(--line); background:var(--panel); border-radius:var(--radius-xl); padding:30px; box-shadow:var(--shadow); }
.form-grid { display:grid; grid-template-columns:1fr 1fr; gap:14px; }
.form-estimate { margin:4px 0 16px; padding:14px 16px; border-radius:14px; background:rgba(222,193,132,.08); color:var(--muted); font-size:13px; }
.form-estimate strong { color:var(--gold-2); }
.form-status { min-height:22px; margin:12px 0 0; color:#b9d7ae; font-size:13px; }

.site-footer { padding:65px 0 24px; border-top:1px solid var(--line); }
.footer-grid { display:grid; grid-template-columns:1.5fr .75fr .75fr; gap:50px; }
.footer-grid > div { display:flex; flex-direction:column; align-items:flex-start; gap:9px; }
.footer-grid p,.footer-grid small,.footer-grid a { color:var(--muted); font-size:13px; }
.footer-grid a:hover { color:var(--gold-2); }
.footer-brand { margin-bottom:8px; }
.footer-bottom { display:flex; justify-content:space-between; border-top:1px solid var(--line); margin-top:45px; padding-top:20px; color:#73756c; font-size:12px; }

.reveal { opacity:0; transform:translateY(18px); transition:opacity .65s ease, transform .65s ease; }
.reveal.visible { opacity:1; transform:none; }

/* Admin */
.admin-body { background:#0c0d0b; }
.admin-header { position:sticky; top:0; z-index:10; height:76px; display:flex; align-items:center; justify-content:space-between; padding:0 max(22px,calc((100vw - 1180px)/2)); background:rgba(12,13,11,.9); backdrop-filter:blur(16px); border-bottom:1px solid var(--line); }
.admin-main { width:var(--shell); margin:0 auto; padding:48px 0 100px; }
.admin-title { display:flex; align-items:end; justify-content:space-between; gap:30px; margin-bottom:28px; }
.admin-title h1 { font-size:clamp(38px,5vw,64px); margin:0; }
.admin-title p { color:var(--muted); margin:8px 0 0; }
.status-badge { display:inline-flex; align-items:center; gap:8px; padding:9px 13px; border-radius:999px; background:rgba(86,159,111,.14); color:#8fdaa7; border:1px solid rgba(86,159,111,.23); white-space:nowrap; }
.kpis { display:grid; grid-template-columns:repeat(4,1fr); gap:12px; margin-bottom:26px; }
.kpi { padding:23px; border:1px solid var(--line); background:var(--panel); border-radius:22px; }
.kpi strong { display:block; color:var(--gold-2); font-size:34px; }
.kpi span { color:var(--muted); font-size:13px; }
.admin-grid { display:grid; grid-template-columns:1.25fr .75fr; gap:18px; align-items:start; }
.admin-card { border:1px solid var(--line); border-radius:26px; background:var(--panel); padding:24px; margin-bottom:18px; }
.admin-card h2 { font-size:25px; margin-bottom:18px; }
.quick-actions { display:grid; grid-template-columns:repeat(3,1fr); gap:10px; }
.quick-actions button { min-height:76px; border:1px solid var(--line); background:#282a26; border-radius:18px; cursor:pointer; text-align:left; padding:16px; }
.quick-actions button:hover { border-color:rgba(222,193,132,.5); }
.toolbar { display:flex; gap:10px; flex-wrap:wrap; margin-bottom:16px; }
.toolbar select,.toolbar input { width:auto; min-width:180px; }
.res-table { width:100%; border-collapse:collapse; font-size:13px; }
.res-table th,.res-table td { text-align:left; padding:13px 10px; border-bottom:1px solid var(--line); vertical-align:top; }
.res-table th { color:#86887f; font-size:11px; letter-spacing:.08em; text-transform:uppercase; }
.res-table td { color:#dad7cf; }
.table-wrap { overflow:auto; }
.tag { display:inline-flex; padding:4px 8px; border-radius:999px; font-size:11px; border:1px solid var(--line); }
.tag.pending { color:var(--gold-2); background:rgba(222,193,132,.08); }
.tag.confirmed,.tag.approved { color:#9cd9ad; background:rgba(90,158,110,.1); }
.tag.cancelled { color:#e9a19b; background:rgba(201,111,104,.09); }
.row-actions { display:flex; gap:6px; flex-wrap:wrap; }
.row-actions button { border:1px solid var(--line); background:#11120f; border-radius:9px; padding:6px 8px; cursor:pointer; font-size:11px; }
.empty-state { text-align:center; padding:40px 18px; color:var(--muted); }
.calendar-head { display:flex; justify-content:space-between; align-items:center; margin-bottom:15px; }
.calendar-head button { width:38px; height:38px; border:1px solid var(--line); border-radius:50%; background:#141511; cursor:pointer; }
.calendar-week,.calendar-grid { display:grid; grid-template-columns:repeat(7,1fr); gap:6px; }
.calendar-week span { text-align:center; color:#777970; font-size:11px; padding-bottom:5px; }
.calendar-day { aspect-ratio:1; display:grid; place-items:center; border:1px solid transparent; background:#242621; border-radius:10px; font-size:12px; position:relative; }
.calendar-day.muted { opacity:.18; }
.calendar-day.has-res { border-color:#5c79c4; }
.calendar-day.blocked { border-color:#bc7c24; background:rgba(188,124,36,.11); }
.calendar-day.today::after { content:""; position:absolute; bottom:5px; width:4px; height:4px; background:var(--gold); border-radius:50%; }
.admin-note { color:var(--muted); font-size:12px; }
.modal-backdrop { position:fixed; inset:0; background:rgba(0,0,0,.72); display:none; place-items:center; z-index:100; padding:20px; }
.modal-backdrop.open { display:grid; }
.modal { width:min(520px,100%); background:var(--panel); border:1px solid var(--line); border-radius:24px; padding:24px; }
.modal h3 { font-family:"Playfair Display",serif; font-size:27px; }
.modal-actions { display:flex; gap:8px; justify-content:flex-end; margin-top:16px; }

@media (max-width: 980px) {
  .main-nav { position:absolute; left:20px; right:20px; top:72px; display:none; flex-direction:column; align-items:stretch; gap:0; padding:12px; border:1px solid var(--line); border-radius:22px; background:rgba(15,16,13,.97); box-shadow:var(--shadow); }
  .main-nav.open { display:flex; }
  .main-nav a { padding:13px 14px; }
  .menu-toggle { display:block; }
  .hero-facts { grid-template-columns:repeat(2,1fr); }
  .section-heading,.reservation-layout,.dome-banner { grid-template-columns:1fr; gap:28px; }
  .experience-grid,.pricing-layout,.admin-grid { grid-template-columns:1fr; }
  .calculator { position:static; }
  .feature-grid { grid-template-columns:repeat(2,1fr); }
  .nearby-grid { grid-template-columns:repeat(2,1fr); }
  .gallery { grid-template-columns:repeat(3,1fr); }
  .kpis { grid-template-columns:repeat(2,1fr); }
}
@media (max-width: 680px) {
  :root { --shell:min(100% - 24px,1180px); --radius-xl:24px; }
  .site-header { height:72px; padding-inline:14px; }
  .brand-copy small { display:none; }
  .hero { min-height:94vh; }
  .hero-content { padding-top:130px; padding-bottom:40px; }
  h1 { font-size:clamp(44px,14vw,66px); }
  .hero-facts { margin-top:34px; grid-template-columns:1fr 1fr; }
  .hero-facts div { padding:12px 10px 12px 0; }
  .scroll-hint { display:none; }
  .section { padding:76px 0; }
  .section-heading { margin-bottom:28px; }
  .experience-grid,.feature-grid,.nearby-grid,.form-grid,.footer-grid { grid-template-columns:1fr; }
  .experience-card { min-height:0; }
  .experience-image-wrap { height:300px; }
  .gallery { grid-template-columns:repeat(2,1fr); grid-auto-rows:180px; gap:7px; }
  .gallery-item.wide { grid-column:span 2; }
  .gallery-item.tall { grid-row:span 2; }
  .dome-photo,.dome-photo img { min-height:420px; }
  .reservation-form { padding:20px; }
  .footer-bottom { flex-direction:column; gap:7px; }
  .admin-main { padding-top:28px; }
  .admin-title { align-items:flex-start; flex-direction:column; }
  .kpis { grid-template-columns:1fr 1fr; }
  .quick-actions { grid-template-columns:1fr; }
  .res-table { min-width:720px; }
}
@media (prefers-reduced-motion: reduce) {
  * { scroll-behavior:auto !important; transition:none !important; animation:none !important; }
  .reveal { opacity:1; transform:none; }
}

/* Reservaciones reales + calendario en vivo */
.red-text { color:#ff8c83 !important; }
.honeypot { position:absolute !important; left:-10000px !important; width:1px !important; height:1px !important; overflow:hidden !important; }
.button:disabled, button:disabled { opacity:.52; cursor:not-allowed; transform:none !important; }
.form-status a { color:var(--gold-2); text-decoration:underline; text-underline-offset:3px; }

.availability-section {
  background:
    radial-gradient(circle at 86% 18%, rgba(201,111,104,.10), transparent 28%),
    linear-gradient(180deg,#131410,#0d0e0c);
  border-block:1px solid var(--line);
}
.availability-layout { display:grid; grid-template-columns:.78fr 1.22fr; gap:64px; align-items:center; }
.availability-copy h2 { font-size:clamp(38px,5vw,64px); margin-bottom:18px; }
.availability-copy > p { color:var(--muted); max-width:520px; }
.live-status,.mini-live { display:inline-flex; align-items:center; gap:9px; color:#a6e1b7; font-size:13px; }
.live-status { margin-top:14px; padding:9px 13px; border-radius:999px; background:rgba(86,159,111,.10); border:1px solid rgba(86,159,111,.20); }
.live-dot { width:8px; height:8px; border-radius:50%; background:#62cf84; box-shadow:0 0 0 5px rgba(98,207,132,.10); flex:0 0 auto; }
.availability-legend { display:flex; flex-wrap:wrap; gap:14px 20px; margin-top:24px; color:var(--muted); font-size:12px; }
.availability-legend span { display:inline-flex; align-items:center; gap:7px; }
.legend-box { width:15px; height:15px; border-radius:5px; border:1px solid var(--line); display:inline-block; }
.legend-box.available { background:#252821; }
.legend-box.occupied { background:rgba(214,74,65,.40); border-color:#e0665d; }
.legend-box.today { background:transparent; border-color:var(--gold); box-shadow:inset 0 0 0 2px rgba(222,193,132,.17); }
.public-calendar { border:1px solid var(--line); background:rgba(28,30,26,.92); border-radius:var(--radius-xl); padding:28px; box-shadow:var(--shadow); }
.public-calendar-head { display:grid; grid-template-columns:46px 1fr 46px; align-items:center; gap:12px; margin-bottom:20px; }
.public-calendar-head h3 { margin:0; text-align:center; font-family:"Playfair Display",serif; font-size:28px; }
.public-calendar-head button { width:46px; height:46px; border:1px solid var(--line); border-radius:50%; background:#12130f; font-size:28px; cursor:pointer; }
.public-calendar-week,.public-calendar-grid { display:grid; grid-template-columns:repeat(7,1fr); gap:8px; }
.public-calendar-week span { text-align:center; color:#85877f; font-size:11px; padding-bottom:4px; }
.public-calendar-day { aspect-ratio:1; min-width:0; display:grid; place-items:center; border:1px solid transparent; border-radius:14px; background:#252821; color:#ece8df; cursor:pointer; transition:.18s ease; }
.public-calendar-day.available:not(:disabled):hover { border-color:rgba(222,193,132,.55); transform:translateY(-2px); background:#2e3128; }
.public-calendar-day.occupied { background:linear-gradient(145deg,rgba(213,72,63,.46),rgba(148,48,43,.30)); border-color:rgba(243,109,100,.85); color:#fff1ef; box-shadow:inset 0 0 18px rgba(137,35,30,.18); opacity:1; }
.public-calendar-day.today { outline:2px solid var(--gold); outline-offset:2px; }
.public-calendar-day.past { opacity:.32; }
.public-calendar-day.muted { opacity:.08; cursor:default; }
.calendar-updated { margin:17px 0 0; text-align:right; color:#777970; font-size:11px; }

/* Admin conectado */
.admin-loading .admin-main,.admin-loading .admin-header { visibility:hidden; }
.admin-header-actions { display:flex; align-items:center; gap:9px; }
.admin-email { color:var(--muted); font-size:12px; max-width:210px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.card-heading-row { display:flex; align-items:flex-start; justify-content:space-between; gap:18px; margin-bottom:18px; }
.card-heading-row h2 { margin-bottom:5px; }
.card-heading-row p { margin:0; color:var(--muted); font-size:12px; }
.admin-legend { margin-top:16px; }
.tag.approved { color:#a4e3b5; background:rgba(90,158,110,.12); border-color:rgba(90,158,110,.22); }
.row-actions .approve-action { border-color:rgba(98,207,132,.34); color:#a4e3b5; }
.calendar-day.occupied { background:linear-gradient(145deg,rgba(213,72,63,.50),rgba(148,48,43,.28)); border-color:#e0665d; color:#fff5f2; }
.manual-blocks { display:grid; gap:8px; }
.manual-block-row { display:flex; align-items:center; justify-content:space-between; gap:12px; padding:11px 12px; border:1px solid rgba(224,102,93,.25); background:rgba(201,111,104,.06); border-radius:14px; }
.manual-block-row div { min-width:0; display:flex; flex-direction:column; }
.manual-block-row span { color:var(--muted); font-size:11px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.manual-block-row button { flex:0 0 auto; border:1px solid var(--line); border-radius:10px; padding:6px 9px; background:#11120f; cursor:pointer; font-size:11px; }
.toast { position:fixed; z-index:220; right:22px; bottom:22px; max-width:min(420px,calc(100vw - 44px)); padding:14px 17px; border-radius:14px; background:#20221d; border:1px solid var(--line); box-shadow:var(--shadow); opacity:0; transform:translateY(10px); pointer-events:none; transition:.22s ease; color:#dcd8cf; font-size:13px; }
.toast.show { opacity:1; transform:none; }
.toast.ok { border-color:rgba(98,207,132,.30); }
.toast.error { border-color:rgba(224,102,93,.42); color:#ffd1cd; }

/* Login */
.login-body { min-height:100vh; display:grid; place-items:center; padding:30px 20px; background:radial-gradient(circle at 50% 0%,rgba(222,193,132,.10),transparent 34%),#0c0d0b; }
.login-shell { width:min(520px,100%); }
.login-brand { margin:0 0 20px 10px; }
.login-card { border:1px solid var(--line); background:rgba(27,29,25,.96); border-radius:32px; padding:34px; box-shadow:var(--shadow); }
.login-card h1 { font-size:clamp(40px,9vw,64px); margin-bottom:15px; }
.login-card > p:not(.eyebrow) { color:var(--muted); margin-bottom:26px; }
.login-form { margin-bottom:17px; }

@media (max-width: 980px) {
  .availability-layout { grid-template-columns:1fr; gap:32px; }
  .admin-header-actions .admin-email { display:none; }
}
@media (max-width: 680px) {
  .public-calendar { padding:16px; border-radius:24px; }
  .public-calendar-head h3 { font-size:23px; }
  .public-calendar-week,.public-calendar-grid { gap:5px; }
  .public-calendar-day { border-radius:10px; font-size:12px; }
  .availability-legend { gap:10px 14px; }
  .admin-header { height:auto; min-height:76px; padding-block:10px; gap:12px; }
  .admin-header .brand-copy { display:none; }
  .admin-header-actions { gap:6px; }
  .admin-header-actions .button { min-height:42px; padding:0 13px; font-size:12px; }
  .card-heading-row { flex-direction:column; }
  .login-card { padding:24px 20px; border-radius:24px; }
}

/* ===== Pulido visual v3: identidad, navegación y acabado editorial ===== */
:root {
  --bg:#0b0d0b;
  --bg-soft:#111411;
  --panel:#171a17;
  --panel-2:#1e211d;
  --line:rgba(255,255,255,.095);
  --text:#f7f3e9;
  --muted:#a6a79f;
  --gold:#d4b26c;
  --gold-2:#eed79d;
  --danger:#e06157;
  --shadow:0 28px 70px rgba(0,0,0,.28);
  --radius-xl:28px;
  --radius-lg:21px;
}
body {
  background:
    radial-gradient(circle at 15% 8%, rgba(212,178,108,.035), transparent 25rem),
    var(--bg);
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
}
::selection { background:rgba(212,178,108,.28); color:#fff; }

/* Encabezado: barra de cristal + logo compacto y legible */
.site-header {
  height:82px;
  padding:0 max(22px, calc((100vw - 1180px)/2));
  background:linear-gradient(180deg,rgba(8,10,8,.66),rgba(8,10,8,.30));
  border-bottom:1px solid rgba(255,255,255,.07);
  backdrop-filter:blur(14px) saturate(120%);
  -webkit-backdrop-filter:blur(14px) saturate(120%);
}
.site-header.scrolled {
  background:rgba(10,12,10,.86);
  border-bottom-color:rgba(255,255,255,.10);
  box-shadow:0 10px 38px rgba(0,0,0,.20);
  backdrop-filter:blur(20px) saturate(130%);
  -webkit-backdrop-filter:blur(20px) saturate(130%);
}
.brand-public { gap:0; }
.brand-badge {
  width:98px;
  height:60px;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  padding:5px 7px;
  border:1px solid rgba(255,255,255,.58);
  border-radius:16px;
  background:rgba(255,255,255,.94);
  box-shadow:0 12px 30px rgba(0,0,0,.16);
  overflow:hidden;
}
.brand-logo {
  width:100%;
  height:100%;
  object-fit:contain;
  object-position:center;
}
.footer-logo-badge { width:116px; height:72px; margin-bottom:8px; }
.admin-logo-badge { width:76px; height:48px; border-radius:13px; padding:4px 6px; }
.admin-brand .brand-copy strong,.login-brand .brand-copy strong { font-size:16px; }
.main-nav { gap:24px; font-size:13px; }
.main-nav a { color:rgba(247,243,233,.78); }
.main-nav a:not(.nav-cta) { position:relative; }
.main-nav a:not(.nav-cta)::after {
  content:"";
  position:absolute;
  left:0; right:100%; bottom:-7px;
  height:1px;
  background:var(--gold);
  transition:right .22s ease;
}
.main-nav a:not(.nav-cta):hover::after { right:0; }
.nav-cta {
  padding:10px 18px;
  color:#17170f !important;
  background:linear-gradient(135deg,var(--gold),var(--gold-2));
  border:0;
  box-shadow:0 8px 24px rgba(212,178,108,.12);
}

/* Hero editorial: menos pesado y mejor jerarquía */
.hero { min-height:100svh; }
.hero-media { filter:saturate(.88) contrast(1.025); }
.hero-shade {
  background:
    linear-gradient(180deg,rgba(5,7,6,.27) 0%,rgba(5,7,6,.38) 38%,rgba(8,10,8,.94) 100%),
    linear-gradient(90deg,rgba(5,7,6,.74) 0%,rgba(5,7,6,.30) 46%,transparent 74%);
}
.hero-content { padding:166px 0 64px; }
.eyebrow { letter-spacing:.21em; font-size:11px; }
h1 { max-width:860px; font-size:clamp(50px,6.7vw,88px); letter-spacing:-.034em; }
.hero-text { max-width:610px; font-size:clamp(16px,1.65vw,20px); color:rgba(247,243,233,.79); }
.button { min-height:48px; padding-inline:22px; box-shadow:none; }
.button-primary { box-shadow:0 10px 30px rgba(212,178,108,.12); }
.button-ghost { background:rgba(12,14,12,.38); border-color:rgba(255,255,255,.18); }
.hero-facts {
  max-width:790px;
  padding:5px 14px;
  border:1px solid rgba(255,255,255,.13);
  border-radius:20px;
  background:rgba(10,12,10,.28);
  backdrop-filter:blur(10px);
  -webkit-backdrop-filter:blur(10px);
}
.hero-facts div { padding:14px 18px 14px 8px; }
.hero-facts div + div { border-left:1px solid rgba(255,255,255,.09); padding-left:20px; }
.hero-facts strong { font-size:17px; letter-spacing:-.01em; }
.scroll-hint { border-color:rgba(255,255,255,.18); background:rgba(8,10,8,.22); }

/* Ritmo, tarjetas e imágenes */
.section { padding:104px 0; }
.section-heading { gap:64px; margin-bottom:44px; }
.section-heading h2,.dome-copy h2,.reservation-copy h2,.availability-copy h2 { letter-spacing:-.035em; }
.experience-grid { gap:18px; }
.experience-card {
  min-height:0;
  border-color:rgba(255,255,255,.085);
  background:linear-gradient(180deg,#191c19,#151815);
  box-shadow:0 22px 56px rgba(0,0,0,.12);
  transition:transform .35s ease,border-color .35s ease,box-shadow .35s ease;
}
.experience-card:hover {
  transform:translateY(-4px);
  border-color:rgba(212,178,108,.22);
  box-shadow:0 28px 70px rgba(0,0,0,.20);
}
.experience-image-wrap { height:370px; }
.experience-body { padding:28px 30px 30px; }
.pill { padding:6px 10px; letter-spacing:.04em; }
.mini-specs span { background:rgba(255,255,255,.018); }
.text-link { letter-spacing:.01em; }

.features-section {
  background:
    radial-gradient(circle at 10% 0%,rgba(212,178,108,.055),transparent 30rem),
    var(--bg-soft);
}
.feature-grid { gap:12px; }
.feature {
  min-height:208px;
  padding:26px;
  background:rgba(255,255,255,.022);
  border-color:rgba(255,255,255,.085);
  transition:background .25s ease,border-color .25s ease,transform .25s ease;
}
.feature:hover { transform:translateY(-3px); background:rgba(255,255,255,.032); border-color:rgba(212,178,108,.18); }
.feature > .feature-index {
  width:auto;
  height:auto;
  border:0;
  border-radius:0;
  background:transparent;
  color:var(--gold);
  font-size:11px;
  font-weight:700;
  letter-spacing:.16em;
}
.feature h3 { margin:30px 0 8px; font-size:17px; letter-spacing:-.01em; }

.price-table-card,.calculator,.public-calendar,.reservation-form {
  background:linear-gradient(180deg,rgba(27,30,27,.98),rgba(21,24,21,.98));
  border-color:rgba(255,255,255,.09);
  box-shadow:0 22px 58px rgba(0,0,0,.13);
}
.price-tabs { background:#101210; border:1px solid rgba(255,255,255,.055); }
.price-tab.active { box-shadow:0 5px 20px rgba(212,178,108,.12); }
input,textarea,select {
  background:#0f110f;
  border-color:rgba(255,255,255,.105);
}
input:hover,textarea:hover,select:hover { border-color:rgba(255,255,255,.16); }
.estimate,.form-estimate { border-color:rgba(212,178,108,.20); }

/* Calendario: bloqueado inequívocamente en rojo */
.public-calendar-day { background:#20241f; }
.public-calendar-day.occupied {
  position:relative;
  background:linear-gradient(145deg,#8d2f2a,#b9433b);
  border-color:#e86c62;
  color:#fff8f6;
  box-shadow:inset 0 0 0 1px rgba(255,255,255,.06),0 6px 18px rgba(139,45,39,.22);
}
.public-calendar-day.occupied::after {
  content:"";
  position:absolute;
  width:5px;
  height:5px;
  border-radius:50%;
  bottom:7px;
  background:#ffd4cf;
  opacity:.88;
}
.legend-box.occupied { background:#a93c35; border-color:#e86c62; }
.public-calendar-head button { transition:background .2s,border-color .2s,transform .2s; }
.public-calendar-head button:hover { background:#1c1f1b; border-color:rgba(212,178,108,.28); transform:translateY(-1px); }

/* Galería: borde más limpio y profundidad sutil */
.gallery { gap:9px; }
.gallery-item { border:1px solid rgba(255,255,255,.055); border-radius:16px; box-shadow:0 18px 45px rgba(0,0,0,.10); }
.gallery-item img { filter:saturate(.94) contrast(1.01); }
.gallery-item:hover img { filter:saturate(1.02) contrast(1.03) brightness(1.05); }

/* WhatsApp directo */
.whatsapp-float {
  position:fixed;
  right:22px;
  bottom:22px;
  z-index:85;
  display:inline-flex;
  align-items:center;
  gap:9px;
  min-height:48px;
  padding:0 16px 0 13px;
  border-radius:999px;
  background:#1faa59;
  color:#fff;
  font-size:13px;
  font-weight:700;
  box-shadow:0 14px 38px rgba(0,0,0,.30);
  border:1px solid rgba(255,255,255,.18);
  transition:transform .2s ease,filter .2s ease;
}
.whatsapp-float:hover { transform:translateY(-3px); filter:brightness(1.04); }
.whatsapp-float svg { width:21px; height:21px; fill:currentColor; }

/* Footer con marca limpia */
.site-footer { border-top-color:rgba(255,255,255,.08); }
.footer-brand { width:max-content; }
.footer-grid > div:first-child p { max-width:340px; }

/* Responsive */
@media (max-width:980px) {
  .site-header { padding-inline:18px; }
  .main-nav {
    top:74px;
    left:14px;
    right:14px;
    padding:10px;
    background:rgba(12,14,12,.96);
    backdrop-filter:blur(20px);
    -webkit-backdrop-filter:blur(20px);
  }
  .main-nav a:not(.nav-cta)::after { display:none; }
  .main-nav .nav-cta { margin-top:6px; text-align:center; }
}
@media (max-width:680px) {
  .site-header { height:72px; padding-inline:12px; }
  .brand-badge { width:82px; height:52px; border-radius:13px; padding:4px 6px; }
  .admin-logo-badge { width:70px; height:45px; }
  .footer-logo-badge { width:108px; height:68px; }
  .menu-toggle { width:42px; height:42px; }
  .hero-content { padding-top:122px; }
  h1 { font-size:clamp(43px,13.5vw,64px); }
  .hero-facts { padding:0 10px; }
  .hero-facts div { padding:12px 8px; }
  .hero-facts div + div { padding-left:12px; }
  .whatsapp-float { right:14px; bottom:14px; min-width:48px; padding:0 13px; }
  .whatsapp-float span { display:none; }
  .gallery { gap:6px; }
}

/* Documento INE en reservación */
.ine-upload-block { margin:6px 0 16px; padding:18px; border:1px solid rgba(222,193,132,.28); border-radius:18px; background:linear-gradient(145deg,rgba(222,193,132,.08),rgba(255,255,255,.025)); }
.ine-upload-label { margin:0; gap:14px; }
.ine-upload-label > span { display:flex; flex-direction:column; gap:5px; }
.ine-upload-label strong { color:var(--text); font-size:14px; }
.ine-upload-label strong em { color:var(--danger); font-style:normal; }
.ine-upload-label small,.ine-privacy { color:var(--muted); font-size:12px; line-height:1.45; }
.ine-upload-label input[type="file"] { padding:10px; background:#11120f; border:1px dashed rgba(222,193,132,.45); cursor:pointer; }
.ine-upload-label input[type="file"]::file-selector-button { border:0; border-radius:999px; padding:9px 14px; margin-right:12px; background:var(--gold); color:#15140f; font-weight:700; cursor:pointer; }
.ine-privacy { margin:10px 0 0; }
.ine-action { display:inline-flex; align-items:center; justify-content:center; min-height:32px; padding:6px 10px; border-radius:999px; border:1px solid rgba(222,193,132,.38); color:var(--gold-2); font-size:12px; font-weight:700; }
.ine-missing { color:var(--muted); font-size:11px; }

/* Consentimiento explícito para documentos privados: compacto y legible. */
.ine-consent { display:flex;flex-direction:row;align-items:flex-start;gap:10px;line-height:1.5; }
.ine-consent input { width:18px;height:18px;min-width:18px;margin-top:3px;accent-color:#dec184; }
.ine-consent a { color:#f2dfb2;text-decoration:underline;text-underline-offset:3px; }
