
/* ================= Base ================= */
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth;scroll-padding-top:88px}
body{margin:0;background:var(--cal);color:var(--ink);font:400 17px/1.62 var(--sans);-webkit-font-smoothing:antialiased}
svg{display:block}
a{color:inherit}
button,input,select,textarea{font:inherit;color:inherit}
p,ul,ol,dl,dd,figure,blockquote,fieldset{margin:0}
ul,ol{padding:0;list-style:none}
fieldset{border:0;padding:0;min-width:0}
h1,h2,h3,h4{font-family:var(--serif);font-style:italic;font-weight:500;color:var(--anil);margin:0;line-height:1.08;letter-spacing:-.012em;text-wrap:balance}
h2{font-size:clamp(36px,4.4vw,62px)}
h3{font-size:clamp(24px,2.2vw,30px);line-height:1.15}
h1 em,h2 em{font-style:italic;color:var(--bug)}
.sr{position:absolute!important;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
.sprite{position:absolute;width:0;height:0;overflow:hidden}
.skip{position:fixed;left:16px;top:-80px;z-index:100;background:var(--anil);color:var(--cal);padding:12px 18px;border-radius:12px;font-weight:700;text-decoration:none;transition:top .2s}
.skip:focus{top:12px}
:focus-visible{outline:3px solid var(--bug);outline-offset:3px}
.wrap{width:min(var(--max),100% - 2*var(--gutter));margin-inline:auto}
.ico{width:20px;height:20px;flex:none;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}
.eyebrow{display:flex;align-items:center;gap:14px;font:700 12px/1.3 var(--sans);letter-spacing:.18em;text-transform:uppercase;color:var(--bug-d);margin-bottom:22px}
.eyebrow::before{content:"";width:9px;height:9px;background:var(--cantera);transform:rotate(45deg);box-shadow:0 0 0 3px var(--cal),0 0 0 4.5px var(--cantera);flex:none;margin-left:5px}
.lead{font-size:clamp(17px,1.35vw,19.5px);line-height:1.62;color:var(--muted);max-width:56ch}
.sec{padding-block:var(--sec)}
.sec-head{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,.85fr);gap:clamp(24px,5vw,80px);align-items:end;margin-bottom:clamp(40px,5vw,72px)}
.foto{position:relative;overflow:hidden;background:var(--cal-3)}
.foto>svg{width:100%;height:100%}

/* Botones */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:10px;min-height:52px;padding:0 26px;border-radius:999px;border:1.5px solid var(--anil);background:var(--anil);color:var(--cal);font:700 15.5px/1 var(--sans);text-decoration:none;cursor:pointer;transition:background .3s var(--ease),transform .3s var(--ease),box-shadow .3s var(--ease),color .3s}
.btn:hover{background:var(--anil-d);transform:translateY(-1px);box-shadow:0 12px 26px -14px rgba(24,41,67,.7)}
.btn .ico{width:19px;height:19px}
.btn-ghost{background:transparent;color:var(--anil)}
.btn-ghost:hover{background:rgba(35,57,91,.07);color:var(--anil)}
.btn-wa{background:var(--patio);border-color:var(--patio);color:#fff}
.btn-wa:hover{background:#3e5a3d}
.arr{transition:transform .3s var(--ease)}
.btn:hover .arr{transform:translateX(3px)}

/* ================= Navegación ================= */
.nav{position:fixed;inset:0 0 auto;z-index:50;transition:background .35s var(--ease),box-shadow .35s var(--ease)}
.nav-in{height:76px;display:flex;align-items:center;gap:clamp(16px,2.4vw,34px)}
.nav.is-scrolled{background:rgba(244,237,225,.94);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);box-shadow:0 1px 0 var(--line)}
.brand{display:flex;align-items:center;gap:11px;text-decoration:none;color:var(--anil);margin-right:auto}
.brand .ico{width:30px;height:30px;color:var(--bug);stroke-width:1.6}
.brand-name{font:italic 600 31px/1 var(--serif);letter-spacing:-.01em}
.brand-sub{font:700 10px/1.35 var(--sans);letter-spacing:.14em;text-transform:uppercase;color:var(--muted);padding-left:12px;border-left:1px solid var(--line-2)}
.menu{display:flex;gap:clamp(14px,1.6vw,26px)}
.menu a{font:600 14.5px/1 var(--sans);text-decoration:none;color:var(--ink);padding:10px 0;position:relative;display:block}
.menu a::after{content:"";position:absolute;left:0;right:0;bottom:3px;height:2px;border-radius:2px;background:var(--bug);transform:scaleX(0);transform-origin:left;transition:transform .35s var(--ease)}
.menu a:hover::after{transform:scaleX(1)}
.menu-extra{display:none}
.nav-cta{min-height:44px;padding:0 22px;font-size:14.5px}
.menu-btn{display:none}
@media (max-width:1240px){.brand-sub{display:none}}
@media (max-width:1060px){
  .nav-in{height:64px}
  .menu-btn{display:inline-flex;align-items:center;gap:10px;min-height:44px;padding:0 16px;border-radius:999px;border:1.5px solid var(--line-2);background:var(--cal-2);font:700 14px var(--sans);color:var(--anil);cursor:pointer}
  .menu-btn i{position:relative;width:18px;height:12px}
  .menu-btn i::before,.menu-btn i::after{content:"";position:absolute;left:0;right:0;height:2px;border-radius:2px;background:currentColor;transition:transform .3s var(--ease),top .3s var(--ease)}
  .menu-btn i::before{top:1px}.menu-btn i::after{top:9px}
  .is-open .menu-btn i::before{top:5px;transform:rotate(45deg)}
  .is-open .menu-btn i::after{top:5px;transform:rotate(-45deg)}
  .nav.is-open{background:var(--cal);-webkit-backdrop-filter:none;backdrop-filter:none}
  .menu-panel{position:fixed;inset:64px 0 0;background:var(--cal);padding:20px var(--gutter) 40px;display:flex;flex-direction:column;gap:30px;overflow:auto;visibility:hidden;opacity:0;transform:translateY(-8px);transition:opacity .3s,transform .3s var(--ease),visibility 0s .3s}
  .is-open .menu-panel{visibility:visible;opacity:1;transform:none;transition:opacity .3s,transform .3s var(--ease)}
  .menu{flex-direction:column;gap:0}
  .menu a{font:italic 500 30px/1.1 var(--serif);color:var(--anil);padding:15px 0;border-bottom:1px solid var(--line)}
  .menu a::after{display:none}
  .menu-extra{display:grid;gap:14px;color:var(--muted);font-size:15px}
}
@media (max-width:640px){.nav-cta{display:none}.brand-name{font-size:28px}}

/* ================= Portada: el zaguán ================= */
.hero{--zh:96px;position:relative;min-height:max(700px,100svh);padding-top:76px;display:flex;flex-direction:column;overflow:clip;background:radial-gradient(70% 55% at 78% 16%,#fcf9f2 0,rgba(252,249,242,0) 70%),radial-gradient(50% 45% at 6% 96%,rgba(217,167,127,.24),transparent 70%),var(--cal)}
.hero-grain{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;opacity:.32}
.hero-grid{position:relative;z-index:2;flex:1;display:grid;grid-template-columns:minmax(0,1fr) auto;gap:clamp(32px,5vw,90px);align-items:end}
.hero-copy{align-self:center;padding:28px 0 calc(var(--zh) + 44px)}
.hero h1{font-size:clamp(44px,5.5vw,84px);line-height:1.02;letter-spacing:-.022em;max-width:12.5ch;margin-bottom:26px}
.hero .lead{max-width:47ch}
.hero-cta{display:flex;flex-wrap:wrap;gap:12px;margin-top:34px}
.hero-meta{display:flex;flex-wrap:wrap;align-items:center;gap:10px 26px;margin-top:30px;font-size:14px;color:var(--muted)}
.status{display:inline-flex;align-items:center;gap:9px;font-weight:600;color:var(--ink)}
.status::before{content:"";width:8px;height:8px;border-radius:50%;background:#8d8379;box-shadow:0 0 0 4px rgba(141,131,121,.18);flex:none}
.status.is-open::before{background:var(--patio);box-shadow:0 0 0 4px rgba(76,107,74,.2)}
.rating{display:inline-flex;align-items:center;gap:8px}
.rating b{color:var(--ink)}
.stars{display:inline-flex;gap:1px;color:var(--bug)}
.stars .ico{width:14px;height:14px}

.hero-door{position:relative;align-self:end;justify-self:end;margin-right:clamp(0px,1.6vw,22px)}
.portal{--o:1;--w:min(30vw,436px,calc((100svh - 250px)*.722));--j:clamp(22px,2.4vw,36px);position:relative;z-index:2;width:calc(var(--w) + 2*var(--j));padding:var(--j) var(--j) 0;border-radius:999px 999px 0 0;background:radial-gradient(110% 55% at 30% 0,rgba(255,240,222,.55),transparent 60%),linear-gradient(90deg,#bd8660,#dcab83 16%,#e8be97 46%,#d9a67e 80%,#b8815b);box-shadow:inset 0 0 0 2px rgba(255,236,214,.4),inset -12px 0 20px -10px rgba(90,50,25,.35),0 40px 60px -40px rgba(70,35,15,.55)}
.js .portal{--o:0}
.portal::after{content:"";position:absolute;inset:9px 9px 0;border-radius:inherit;border:2px solid rgba(120,70,40,.22);border-bottom:0;pointer-events:none}
.clave{position:absolute;z-index:3;left:50%;top:-10px;translate:-50% 0;width:66px;height:calc(var(--j) + 34px);clip-path:polygon(0 0,100% 0,80% 100%,20% 100%);background:linear-gradient(#f2d1ae,#d39e76);font:italic 600 13px/1 var(--serif);color:#6e4126;display:flex;justify-content:center;padding-top:14px}
.imposta{position:absolute;z-index:3;top:calc(var(--j) + var(--w)/2 - 8px);width:calc(var(--j) + 10px);height:16px;background:linear-gradient(#f2cfab,#c48c64);box-shadow:0 4px 6px -3px rgba(80,40,20,.35)}
.imposta.l{left:-10px}.imposta.r{right:-10px}
.vano{position:relative;width:var(--w);aspect-ratio:13/18;border-radius:999px 999px 0 0;overflow:hidden;perspective:1700px;perspective-origin:50% 58%;background:#2c1c12;box-shadow:0 0 0 5px #b37a53,0 0 0 9px #ecc6a1}
.vano>.foto{position:absolute;inset:0;background:#cdb898}
.hoja{position:absolute;top:0;bottom:0;width:50.2%;transition:transform .5s var(--ease)}
.hoja svg{width:100%;height:100%}
.hoja-l{left:0;transform-origin:0 50%;transform:rotateY(calc(var(--o)*82deg))}
.hoja-r{right:0;transform-origin:100% 50%;transform:rotateY(calc(var(--o)*-82deg))}
.hoja-r svg{transform:scaleX(-1)}
.hoja::after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,rgba(25,12,4,.1),rgba(25,12,4,.6));opacity:var(--o);transition:opacity .5s var(--ease)}
.hoja-r::after{background:linear-gradient(-90deg,rgba(25,12,4,.1),rgba(25,12,4,.6))}
.is-slow .hoja,.is-slow .hoja::after{transition-duration:2.3s;transition-timing-function:var(--slow)}
.umbral{position:relative;height:48px;margin:0 calc(-1*var(--j) - 14px);background:linear-gradient(#ecc7a0,#cc976e 34%,#b47d56);border-radius:5px 5px 0 0;box-shadow:inset 0 2px 0 rgba(255,244,228,.7);display:grid;place-items:center}
.aldaba{display:inline-flex;align-items:center;gap:8px;min-height:34px;padding:0 15px 0 11px;border:0;border-radius:999px;background:rgba(35,57,91,.94);color:var(--cal);font:700 13px/1 var(--sans);cursor:pointer;transition:background .25s}
.aldaba:hover{background:var(--anil-d)}
.aldaba svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.8}
.farol{position:absolute;z-index:1;left:-104px;top:26%;width:74px;filter:drop-shadow(10px 14px 8px rgba(80,40,20,.18))}
.bugv{position:absolute;z-index:3;right:-150px;top:-130px;width:430px;pointer-events:none;filter:drop-shadow(14px 22px 10px rgba(80,40,20,.2))}
.petalos{position:absolute;inset:-14% -12% 0 -30%;pointer-events:none;z-index:4}
.petalos i{position:absolute;left:var(--l);top:var(--t);width:13px;height:11px;background:var(--bug);border-radius:80% 0 80% 0;opacity:0}
.zocalo{position:absolute;left:0;right:0;bottom:0;height:var(--zh);z-index:1;color:var(--on-dark);background:linear-gradient(180deg,#2c4570,var(--anil) 45%,#1d3050);box-shadow:inset 0 7px 0 var(--cantera),inset 0 11px 0 rgba(0,0,0,.18)}
.zocalo .wrap{height:100%;display:flex;align-items:center}
.facts{display:flex;gap:clamp(20px,3vw,40px);padding-top:9px}
.facts b{display:block;font:italic 500 27px/1.05 var(--serif);color:#fff}
.facts span{display:block;margin-top:4px;font:700 10.5px/1.3 var(--sans);letter-spacing:.13em;text-transform:uppercase;color:var(--on-dark-2)}

/* ================= Habitaciones ================= */
.rooms-head{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,.9fr);gap:clamp(32px,6vw,100px);align-items:center;margin-bottom:clamp(56px,7vw,100px)}
.rooms-head .lead{margin-top:22px}
.incl{display:flex;flex-wrap:wrap;gap:8px;margin-top:28px}
.incl li{display:inline-flex;align-items:center;gap:7px;padding:8px 14px;border-radius:999px;background:var(--cal-2);border:1px solid var(--line);font-size:14px;font-weight:600;color:var(--anil)}
.incl .ico{width:16px;height:16px;color:var(--patio)}
.rooms-photo{position:relative}
.rooms-photo .foto{aspect-ratio:4/5;border-radius:999px 999px var(--r-md) var(--r-md);box-shadow:var(--shadow-lg)}
.cap{margin-top:14px;font-size:13.5px;color:var(--muted);display:flex;gap:8px;align-items:center}
.cap::before{content:"";width:22px;height:1.5px;background:var(--cantera-d)}
.rooms-body{display:grid;grid-template-columns:minmax(0,.78fr) minmax(0,1.22fr);gap:clamp(32px,5vw,72px);align-items:start}
.plano{position:sticky;top:104px;background:var(--cal-2);border:1px solid var(--line);border-radius:var(--r-lg);padding:26px 26px 22px}
.plano svg{width:100%;height:auto}
.plano figcaption{margin-top:16px;font-size:14px;color:var(--muted);line-height:1.55}
.pl-out{fill:none;stroke:var(--anil);stroke-width:3}
.pl-rooms rect{fill:#fff;stroke:var(--anil);stroke-width:1.5;transition:fill .35s var(--ease)}
.pl-rooms text,.pl-terr text{font:italic 600 16px var(--serif);fill:var(--anil);text-anchor:middle;transition:fill .35s}
.pl-svc rect{fill:var(--cal-3);stroke:var(--anil);stroke-width:1.5}
.pl-svc text{font:700 10.5px var(--sans);letter-spacing:.12em;fill:var(--muted);text-anchor:middle}
.pl-patio{fill:var(--patio-l);stroke:var(--anil);stroke-width:1.5}
.pl-terr rect{fill:#f3e7d4;stroke:var(--anil);stroke-width:1.5;stroke-dasharray:5 4}
.pl-cap{font:800 11px var(--sans);letter-spacing:.16em;fill:var(--bug-d)}
[data-plan].is-on rect{fill:var(--bug-l)}
[data-plan].is-on text{fill:var(--bug-d)}
.room-list{display:grid;grid-template-columns:1fr 1fr;gap:18px}
.room{height:100%;display:flex;flex-direction:column;gap:14px;padding:26px 26px 22px;background:var(--cal-2);border:1px solid var(--line);border-radius:var(--r-md);transition:border-color .3s,box-shadow .35s var(--ease),transform .35s var(--ease)}
.room:hover,.room:focus-within{border-color:rgba(196,61,107,.5);box-shadow:var(--shadow);transform:translateY(-2px)}
.room-top{display:flex;justify-content:space-between;align-items:center;font:700 11px/1 var(--sans);letter-spacing:.14em;text-transform:uppercase;color:var(--muted)}
.room-n{font:italic 600 15px/1 var(--serif);letter-spacing:0;color:var(--bug-d)}
.room h3{font-size:31px}
.room>p{font-size:15.5px;color:var(--muted);line-height:1.55}
.specs{display:grid;grid-template-columns:1fr 1fr;gap:12px 16px;padding:14px 0;border-block:1px solid var(--line);margin-top:auto}
.specs>div{display:flex;gap:9px;align-items:flex-start}
.specs .ico{width:18px;height:18px;color:var(--cantera-d);margin-top:2px}
.specs dt{font:700 10.5px/1.2 var(--sans);letter-spacing:.12em;text-transform:uppercase;color:var(--muted)}
.specs dd{font-size:14.5px;font-weight:600;color:var(--ink);line-height:1.35;margin-top:2px}
.room-foot{display:flex;align-items:center;justify-content:space-between;gap:12px}
.price{font-size:13px;color:var(--muted);white-space:nowrap}
.price b{font:italic 600 25px/1 var(--serif);color:var(--anil);margin:0 2px}
.room-go{display:inline-flex;align-items:center;gap:6px;min-height:42px;padding:0 14px;white-space:nowrap;border-radius:999px;border:1.5px solid var(--anil);background:transparent;color:var(--anil);font:700 13.5px var(--sans);cursor:pointer;transition:background .25s,color .25s}
.room-go:hover{background:var(--anil);color:var(--cal)}
.room-go .ico{width:16px;height:16px}

/* ================= Fechas y tarifas ================= */
.book{position:relative;background:var(--cantera-l)}
.book::before{content:"";position:absolute;inset:0 0 auto;height:28px;background:linear-gradient(var(--cal),rgba(244,237,225,0))}
.book-head{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,.9fr);gap:clamp(24px,5vw,80px);align-items:end;margin-bottom:44px}
.book-grid{display:grid;grid-template-columns:minmax(0,1fr) 370px;gap:24px;align-items:start}
.card{background:var(--cal-2);border-radius:var(--r-lg);padding:clamp(18px,2.6vw,34px);box-shadow:var(--shadow)}
.legend-t{font:800 11px/1.2 var(--sans);letter-spacing:.16em;text-transform:uppercase;color:var(--muted);margin-bottom:12px}
.chips{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:8px}
.chip{position:relative;display:block;cursor:pointer}
.chip input{position:absolute;opacity:0;inset:0;margin:0;cursor:pointer}
.chip span{display:flex;flex-direction:column;gap:3px;height:100%;padding:11px 12px;border-radius:14px;border:1.5px solid var(--line-2);background:#fff;transition:border-color .25s,background .25s,color .25s}
.chip b{font:italic 600 17px/1.1 var(--serif);color:var(--anil)}
.chip small{font-size:12px;color:var(--muted);font-weight:600}
.chip:hover span{border-color:var(--anil)}
.chip input:checked+span{background:var(--anil);border-color:var(--anil)}
.chip input:checked+span b{color:#fff}
.chip input:checked+span small{color:var(--on-dark-2)}
.chip input:focus-visible+span{outline:3px solid var(--bug);outline-offset:2px}
.cal-nav{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:28px 0 14px}
.cal-nav p{font:italic 600 19px/1.2 var(--serif);color:var(--anil);text-align:center}
.cal-arrow{width:44px;height:44px;border-radius:50%;border:1.5px solid var(--line-2);background:#fff;color:var(--anil);display:grid;place-items:center;cursor:pointer;transition:background .25s,border-color .25s}
.cal-arrow:hover:not(:disabled){border-color:var(--anil)}
.cal-arrow:disabled{opacity:.35;cursor:default}
.cal-arrow .ico{width:18px;height:18px}
.cal-prev .ico{transform:scaleX(-1)}
.cal-months{display:grid;grid-template-columns:1fr 1fr;gap:clamp(20px,3vw,40px)}
.m-title{font:700 14px/1 var(--sans);letter-spacing:.06em;color:var(--anil);margin-bottom:12px;text-align:center}
.m-title span{color:var(--muted);font-weight:600}
.m-wd,.m-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr))}
.m-wd span{text-align:center;font:700 11px/1 var(--sans);letter-spacing:.08em;text-transform:uppercase;color:var(--muted);padding-bottom:10px}
.m-grid{row-gap:4px}
.day{position:relative;z-index:0;height:46px;padding:0;border:0;background:none;font:700 15px/1 var(--sans);font-variant-numeric:tabular-nums;color:var(--ink);cursor:pointer}
.day::before{content:"";position:absolute;inset:2px 3px;border-radius:13px;z-index:-1;transition:background .2s}
.day:hover::before{background:var(--cal-3)}
.day:focus-visible{outline:none}
.day:focus-visible::before{box-shadow:0 0 0 3px var(--bug)}
.day.is-wkd::after{content:"";position:absolute;left:50%;bottom:7px;width:4px;height:4px;margin-left:-2px;border-radius:50%;background:var(--bug)}
.day.is-busy{color:#776c62;text-decoration:line-through;text-decoration-thickness:1.5px}
.day.is-busy::before{background:repeating-linear-gradient(135deg,rgba(35,57,91,.1) 0 3px,transparent 3px 7px)}
.day.is-busy::after{display:none}
.day:disabled{color:#c2b8ab;cursor:default;text-decoration:none}
.day:disabled::before{background:none}
.day:disabled::after{display:none}
.day.is-today::before{box-shadow:inset 0 0 0 1.5px var(--anil)}
.day.is-in,.day.is-preview{background:rgba(35,57,91,.1)}
.day.is-start{background:linear-gradient(90deg,transparent 50%,rgba(35,57,91,.1) 50%)}
.day.is-end{background:linear-gradient(90deg,rgba(35,57,91,.1) 50%,transparent 50%)}
.day.is-start.is-end{background:none}
.day.is-start,.day.is-end{color:#fff;text-decoration:none}
.day.is-start::before,.day.is-end::before{background:var(--anil)}
.day.is-start::after,.day.is-end::after{background:#fff}
.day.is-bad.is-in{background:rgba(196,61,107,.12)}
.day.is-bad.is-start{background:linear-gradient(90deg,transparent 50%,rgba(196,61,107,.12) 50%)}
.day.is-bad.is-end{background:linear-gradient(90deg,rgba(196,61,107,.12) 50%,transparent 50%)}
.day.is-bad.is-start::before,.day.is-bad.is-end::before{background:var(--bug-d)}
.day.is-clash{color:var(--bug-d)}
.day.is-clash::before{background:repeating-linear-gradient(135deg,rgba(196,61,107,.28) 0 3px,transparent 3px 7px)}
.cal-legend{display:flex;flex-wrap:wrap;gap:10px 22px;margin-top:22px;padding-top:18px;border-top:1px solid var(--line);font-size:13px;color:var(--muted)}
.cal-legend li{display:flex;align-items:center;gap:8px}
.lg{width:18px;height:18px;border-radius:6px;flex:none;border:1.5px solid var(--line-2);background:#fff;position:relative}
.lg-wkd::after{content:"";position:absolute;left:50%;bottom:3px;width:4px;height:4px;margin-left:-2px;border-radius:50%;background:var(--bug)}
.lg-busy{background:repeating-linear-gradient(135deg,rgba(35,57,91,.2) 0 2px,transparent 2px 5px)}
.lg-sel{background:var(--anil);border-color:var(--anil)}
.cal-help{margin-top:10px;font-size:12.5px;color:var(--muted)}
.quote{position:sticky;top:96px;display:flex;flex-direction:column;gap:16px}
.quote h3{font-size:28px}
.q-room{font-size:14px;color:var(--muted);margin-top:-8px}
.q-dates{display:grid;grid-template-columns:1fr 1fr;border:1px solid var(--line-2);border-radius:16px;overflow:hidden}
.q-dates div{padding:12px 14px}
.q-dates div+div{border-left:1px solid var(--line-2)}
.q-dates dt{font:800 10.5px/1.2 var(--sans);letter-spacing:.14em;text-transform:uppercase;color:var(--muted)}
.q-dates dd{font-weight:700;font-size:15px;color:var(--ink);margin-top:4px;line-height:1.3}
.q-dates .q-time{font-weight:500;font-size:12.5px;color:var(--muted);margin-top:2px}
.q-guests{display:flex;align-items:center;justify-content:space-between;gap:12px;font-weight:700;font-size:14px;color:var(--anil)}
.q-guests select{min-height:44px;padding:0 36px 0 14px;border-radius:12px;border:1.5px solid var(--line-2);background:#fff;font-weight:600;color:var(--ink);appearance:none;-webkit-appearance:none;background-image:linear-gradient(45deg,transparent 50%,var(--anil) 50%),linear-gradient(135deg,var(--anil) 50%,transparent 50%);background-position:calc(100% - 18px) 19px,calc(100% - 13px) 19px;background-size:5px 5px;background-repeat:no-repeat}
.q-lines{display:grid;gap:8px;padding-top:14px;border-top:1px dashed var(--line-2);min-height:64px}
.q-line{display:flex;justify-content:space-between;gap:12px;font-size:14.5px;color:var(--ink)}
.q-line b{font-variant-numeric:tabular-nums;white-space:nowrap}
.q-line small{display:block;font-size:12.5px;color:var(--muted)}
.q-line.is-wkd span::before{content:"";display:inline-block;width:6px;height:6px;border-radius:50%;background:var(--bug);margin:0 7px 2px 0}
.q-line.is-dep{color:var(--muted);font-size:13.5px}
.q-empty{font-size:14px;color:var(--muted)}
.q-warn{display:grid;gap:8px;padding:14px;border-radius:14px;background:var(--bug-l);color:#6d1d3a;font-size:14px;line-height:1.5}
.q-alts{display:flex;flex-wrap:wrap;gap:6px}
.q-alt{min-height:36px;padding:0 12px;border-radius:999px;border:1.5px solid var(--bug-d);background:#fff;color:var(--bug-d);font:700 13px var(--sans);cursor:pointer}
.q-alt span{font-weight:600;color:var(--muted)}
.q-alt:hover{background:var(--bug-d);color:#fff}
.q-alt:hover span{color:#fbe3ec}
.q-total{display:flex;align-items:baseline;flex-wrap:wrap;gap:4px 10px;padding-top:14px;border-top:1px solid var(--line-2)}
.q-total>span{font:800 11px/1 var(--sans);letter-spacing:.16em;text-transform:uppercase;color:var(--muted);width:100%}
.q-total b{font:italic 600 46px/1 var(--serif);color:var(--anil);font-variant-numeric:tabular-nums}
.q-total small{font-size:13px;color:var(--muted);font-weight:600}
.quote .btn{width:100%}
.btn.is-off{background:#b9c2b8;border-color:#b9c2b8;color:#2f3a2e;cursor:not-allowed;box-shadow:none;transform:none}
.q-note{font-size:12.5px;color:var(--muted);line-height:1.5}

/* ================= La casa ================= */
.house .sec-head{grid-template-columns:1fr;text-align:center;justify-items:center;row-gap:22px}
.house .sec-head .eyebrow{margin-bottom:0}
.house .sec-head .eyebrow{justify-content:center}
.h-row{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(0,.7fr);gap:clamp(32px,5vw,84px);align-items:center;margin-top:clamp(56px,7vw,110px)}
.h-row:first-of-type{margin-top:0}
.h-row.rev{grid-template-columns:minmax(0,.7fr) minmax(0,1.3fr)}
.h-row.rev .h-media{order:2}
.h-media{position:relative}
.h-media .foto{border-radius:var(--r-lg);box-shadow:var(--shadow-lg)}
.h-media .tall{border-radius:999px 999px var(--r-lg) var(--r-lg)}
.h-text>.h-n{font:italic 500 64px/1 var(--serif);color:var(--cantera-d);margin-bottom:8px}
.h-text h3{font-size:clamp(30px,3vw,42px);margin-bottom:16px}
.h-text>p{color:var(--muted);font-size:17px}
.h-facts{display:grid;gap:10px;margin-top:24px}
.h-facts li{display:flex;gap:12px;align-items:flex-start;font-size:15px;font-weight:600;color:var(--ink);line-height:1.45}
.h-facts .ico{color:var(--patio);margin-top:1px}
.pill{position:absolute;left:18px;bottom:18px;display:inline-flex;align-items:center;gap:8px;padding:9px 15px;border-radius:999px;background:rgba(250,246,238,.94);color:var(--anil);font:700 13px var(--sans);box-shadow:var(--shadow)}
.pill .ico{width:16px;height:16px;color:var(--bug)}
.breakfast{grid-template-columns:minmax(0,1.15fr) minmax(0,.85fr);align-items:center}
.menu-card{position:relative;z-index:1;margin-left:clamp(-180px,-11vw,0px);background:var(--cal-2);border-radius:var(--r-lg);padding:clamp(24px,3vw,40px);box-shadow:var(--shadow-lg);border:1px solid var(--line)}
.menu-card::before{content:"";position:absolute;inset:10px;border:1px solid rgba(217,167,127,.6);border-radius:20px;pointer-events:none}
.mc-k{font:800 11px/1.2 var(--sans);letter-spacing:.16em;text-transform:uppercase;color:var(--bug-d)}
.menu-card h3{margin:10px 0 12px}
.menu-card>p{font-size:15px;color:var(--muted)}
.mc-days{margin-top:18px;display:grid}
.mc-days li{display:grid;grid-template-columns:92px 1fr auto;gap:10px;align-items:baseline;padding:9px 0;border-bottom:1px dotted var(--line-2);font-size:14.5px}
.mc-days li span:first-child{font:700 11px var(--sans);letter-spacing:.12em;text-transform:uppercase;color:var(--muted)}
.mc-days .is-today{color:var(--anil);font-weight:700}
.mc-days .is-today span:first-child{color:var(--bug-d)}
.hoy{font:800 10px/1 var(--sans);letter-spacing:.12em;text-transform:uppercase;background:var(--bug);color:#fff;padding:5px 8px;border-radius:999px}
.amen{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));margin-top:clamp(64px,8vw,110px);border-top:1px solid var(--line-2)}
.amen li{display:grid;grid-template-columns:auto 1fr;gap:4px 16px;padding:28px 28px 28px 0;border-bottom:1px solid var(--line)}
.amen .ico{grid-row:span 2;width:28px;height:28px;color:var(--bug-d);stroke-width:1.5}
.amen b{font:italic 600 20px/1.2 var(--serif);color:var(--anil)}
.amen span{font-size:14.5px;color:var(--muted);line-height:1.5}

/* ================= Alrededores ================= */
.near{background:var(--cal-2)}
.near-grid{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(0,.65fr);gap:clamp(24px,3vw,40px);align-items:start}
.map{position:relative}
.map>svg{width:100%;height:auto;border-radius:var(--r-lg);box-shadow:var(--shadow-lg)}
.map-note{margin-top:12px;font-size:13px;color:var(--muted)}
.m-lbl{font:700 13px var(--sans);fill:var(--anil)}
.m-sm{font:600 10.5px var(--sans);fill:var(--muted)}
.m-st{font:italic 600 13px var(--serif);fill:#8a6b4f}
.route{fill:none;stroke:var(--bug);stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:.1 11;opacity:0;transition:opacity .3s}
.route.is-on{opacity:1;animation:camina 1.1s linear infinite}
@keyframes camina{to{stroke-dashoffset:-11.1}}
.pin{position:absolute;left:var(--x);top:var(--y);width:36px;height:46px;translate:-50% -100%;padding:0;border:0;background:none;cursor:pointer;color:var(--anil);font:800 14px/34px var(--sans);text-align:center;z-index:1;transition:scale .3s var(--ease)}
.pin::before{content:"";position:absolute;left:3px;top:2px;width:30px;height:30px;border-radius:50% 50% 50% 0;rotate:-45deg;background:var(--cal-2);border:2.5px solid var(--anil);box-shadow:-4px 6px 10px -6px rgba(24,41,67,.7);z-index:-1;transition:background .25s,border-color .25s}
.pin span:first-child{position:relative;display:block;width:36px}
.pin:hover{scale:1.1}
.pin[aria-pressed="true"]{color:#fff;scale:1.14;z-index:2}
.pin[aria-pressed="true"]::before{background:var(--bug);border-color:var(--bug)}
.pin:focus-visible{outline:none}
.pin:focus-visible::before{box-shadow:0 0 0 3px var(--cal-2),0 0 0 6px var(--bug)}
.near-list{display:grid;gap:10px}
.near-card{display:grid;grid-template-columns:36px minmax(0,1fr) auto;gap:4px 14px;align-items:center;width:100%;text-align:left;padding:15px 16px;background:#fff;border:1.5px solid var(--line);border-radius:var(--r-md);cursor:pointer;transition:border-color .25s,box-shadow .3s var(--ease),transform .3s var(--ease)}
.near-card:hover{border-color:var(--line-2);transform:translateX(3px)}
.nc-n{grid-row:span 2;align-self:start;width:34px;height:34px;border-radius:50%;display:grid;place-items:center;border:2px solid var(--anil);font:800 14px var(--sans);color:var(--anil);transition:background .25s,color .25s,border-color .25s}
.nc-name{font:italic 600 19px/1.2 var(--serif);color:var(--anil)}
.nc-min{display:inline-flex;align-items:center;gap:6px;font:800 12.5px var(--sans);color:var(--patio);white-space:nowrap}
.nc-min .ico{width:15px;height:15px}
.nc-tip{grid-column:2/4;font-size:14px;color:var(--muted);line-height:1.5}
.near-card[aria-pressed="true"]{border-color:var(--bug);box-shadow:var(--shadow)}
.near-card[aria-pressed="true"] .nc-n{background:var(--bug);border-color:var(--bug);color:#fff}
.near-live{margin-top:14px;font-size:14px;font-weight:600;color:var(--anil)}

/* ================= Reseñas ================= */
.voices{position:relative;background:var(--anil);color:var(--on-dark)}
.tiles{display:block;width:100%;height:44px}
.voices h2,.voices h3{color:#fff}
.voices h2 em{color:#f3a9c2}
.voices .eyebrow{color:#f3a9c2}
.voices .eyebrow::before{box-shadow:0 0 0 3px var(--anil),0 0 0 4.5px var(--cantera)}
.score{display:flex;align-items:center;gap:20px;justify-self:end}
.score>b{font:italic 500 76px/1 var(--serif);color:#fff}
.score .stars{color:#f3a9c2}
.score .stars .ico{width:18px;height:18px}
.score p{font-size:14px;color:var(--on-dark-2);margin-top:6px}
.v-cats{display:flex;flex-wrap:wrap;gap:6px 16px;margin-top:10px;font-size:13px;color:var(--on-dark-2)}
.v-cats b{color:#fff}
.v-grid{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,.9fr);gap:clamp(28px,4vw,64px);align-items:start}
.v-feature{position:relative;padding-top:56px}
.v-feature::before{content:"\201C";position:absolute;top:-30px;left:-6px;font:italic 500 180px/1 var(--serif);color:var(--bug)}
.v-feature p{font:italic 500 clamp(27px,3vw,42px)/1.28 var(--serif);color:#fff;text-wrap:pretty}
.who{margin-top:24px;display:flex;align-items:center;gap:14px;font-size:14px;color:var(--on-dark-2)}
.who b{display:block;color:#fff;font-size:15px}
.av{width:46px;height:46px;border-radius:50%;display:grid;place-items:center;font:italic 600 18px var(--serif);color:var(--anil);background:var(--cantera);flex:none}
.v-list{display:grid;gap:16px}
.v-card{padding:24px;border:1px solid var(--dark-line);border-radius:var(--r-md);background:rgba(255,255,255,.04)}
.v-card p{font:italic 500 19px/1.45 var(--serif);color:#fff}
.v-card .who{margin-top:16px}
.v-card .av{width:38px;height:38px;font-size:15px}

/* ================= Políticas ================= */
.pol-top{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px}
.pol-top li{padding:26px 24px;border-radius:var(--r-md);background:var(--cal-2);border:1px solid var(--line);display:flex;flex-direction:column;gap:6px}
.pol-top .k{display:flex;align-items:center;gap:8px;font:800 11px/1.2 var(--sans);letter-spacing:.14em;text-transform:uppercase;color:var(--bug-d)}
.pol-top .k .ico{width:17px;height:17px}
.pol-top b{font:italic 500 44px/1.05 var(--serif);color:var(--anil);margin:6px 0 4px}
.pol-top p{font-size:14.5px;color:var(--muted);line-height:1.5}
.pol-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:0 clamp(24px,4vw,56px);margin-top:44px}
.pol-grid li{padding:22px 0;border-top:1px solid var(--line-2)}
.pol-grid h3{font-size:22px;margin-bottom:8px;display:flex;align-items:center;gap:10px}
.pol-grid h3 .ico{color:var(--cantera-d);width:22px;height:22px}
.pol-grid p{font-size:15px;color:var(--muted);line-height:1.55}
.pay{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}
.pay span{display:inline-flex;align-items:center;gap:7px;padding:7px 12px;border-radius:999px;background:var(--cal-2);border:1px solid var(--line);font-size:13px;font-weight:700;color:var(--anil)}
.pay .ico{width:16px;height:16px}

/* ================= Contacto ================= */
.contact{background:var(--cantera-l)}
.contact-grid{display:grid;grid-template-columns:minmax(0,.92fr) minmax(0,1.08fr);gap:clamp(32px,5vw,84px);align-items:start}
.contact .lead{margin-top:20px}
.c-list{display:grid;margin-top:32px;border-top:1px solid var(--line-2)}
.c-list li{display:grid;grid-template-columns:28px 1fr;gap:4px 14px;padding:16px 0;border-bottom:1px solid var(--line-2)}
.c-list .ico{grid-row:span 2;color:var(--bug-d);margin-top:2px}
.c-list dt,.c-k{font:800 10.5px/1.3 var(--sans);letter-spacing:.14em;text-transform:uppercase;color:var(--muted)}
.c-list a,.c-list p{font-size:16px;font-weight:600;color:var(--ink);text-decoration:none;line-height:1.45}
.c-list a:hover{color:var(--bug-d);text-decoration:underline}
.c-list .status{font-size:14px;margin-top:4px}
.arrive{margin-top:26px;display:grid;grid-template-columns:1fr 1fr;gap:10px}
.arrive li{padding:14px 16px;border-radius:14px;background:var(--cal-2);font-size:13.5px;color:var(--muted);line-height:1.4}
.arrive b{display:block;font:italic 600 19px/1.2 var(--serif);color:var(--anil)}
.form{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.form h3{grid-column:1/-1;font-size:30px}
.form .full{grid-column:1/-1}
.field{display:grid;gap:7px;align-content:start}
.field label{font:700 13px var(--sans);color:var(--anil)}
.field input,.field select,.field textarea{width:100%;min-height:50px;padding:12px 14px;border:1.5px solid var(--line-2);border-radius:13px;background:#fff;font-size:16px;color:var(--ink);transition:border-color .2s,box-shadow .2s}
.field textarea{min-height:120px;resize:vertical}
.field input:focus-visible,.field select:focus-visible,.field textarea:focus-visible{outline:none;border-color:var(--anil);box-shadow:0 0 0 4px rgba(35,57,91,.16)}
.form-foot{grid-column:1/-1;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:14px}
.form-foot p{font-size:13px;color:var(--muted);max-width:34ch}
.c-out{grid-column:1/-1;padding:16px 18px;border-radius:14px;background:var(--patio-l);color:#26402a;font-weight:600;font-size:15px}
.c-out:empty{padding:0}

/* ================= Pie ================= */
.foot{background:var(--anil);color:var(--on-dark-2);font-size:14.5px}
.foot-in{display:grid;grid-template-columns:1.4fr 1fr 1fr 1fr;gap:clamp(24px,4vw,56px);padding-block:64px 40px}
.foot .brand-name{color:#fff;font-size:44px}
.foot p{line-height:1.6}
.foot h2{font:800 11px/1.2 var(--sans);letter-spacing:.16em;text-transform:uppercase;color:#f3a9c2;margin-bottom:14px}
.foot ul{display:grid;gap:8px}
.foot a{color:var(--on-dark);text-decoration:none}
.foot a:hover{text-decoration:underline}
.foot-tag{margin-top:14px;max-width:32ch}
.foot-bot{display:flex;flex-wrap:wrap;justify-content:space-between;gap:12px;padding-block:22px 30px;border-top:1px solid var(--dark-line);font-size:13px}
.foot-bot div{display:flex;gap:18px}

/* ================= Barra fija en teléfono ================= */
.dock{display:none}

/* ================= Movimiento ================= */
[data-loop].is-paused,[data-loop].is-paused *{animation-play-state:paused!important}
.is-still [data-loop],.is-still [data-loop] *{animation:none!important}
.agua path{stroke-dasharray:5 7;animation:corre .9s linear infinite}
@keyframes corre{to{stroke-dashoffset:-12}}
.foco{animation:brilla 3.2s ease-in-out infinite alternate}
.foco:nth-child(3n){animation-delay:-1.1s}.foco:nth-child(3n+1){animation-delay:-2.3s}
@keyframes brilla{from{opacity:1}to{opacity:.45}}
@media (prefers-reduced-motion:no-preference){
  .js [data-reveal]{opacity:0;transform:translateY(22px);transition:opacity .9s var(--ease),transform .9s var(--ease);transition-delay:calc(var(--d,0)*90ms)}
  .js [data-reveal].is-in{opacity:1;transform:none}
  .js .hero-copy>*{animation:sube 1s var(--ease) both}
  .js .hero-copy>:nth-child(2){animation-delay:.08s}
  .js .hero-copy>:nth-child(3){animation-delay:.16s}
  .js .hero-copy>:nth-child(4){animation-delay:.24s}
  .js .hero-copy>:nth-child(5){animation-delay:.32s}
  .js .hero-door{animation:sube 1.3s var(--ease) both .1s}
  .js .petalos i{animation:cae var(--dur,16s) linear var(--dl,0s) infinite}
}
@keyframes sube{from{opacity:0;transform:translateY(26px)}to{opacity:1;transform:none}}
@keyframes cae{0%{opacity:0;transform:translate(0,0) rotate(0)}8%{opacity:.95}50%{transform:translate(calc(var(--dx)*.35),46vh) rotate(260deg)}90%{opacity:.85}100%{opacity:0;transform:translate(var(--dx),88vh) rotate(520deg)}}
.is-still [data-reveal]{opacity:1!important;transform:none!important}
.is-still .hero-copy>*,.is-still .hero-door{animation:none!important}
.is-still .hoja,.is-still .hoja::after{transition:none!important}
.is-still .portal{--o:1!important}
.is-still .aldaba{visibility:hidden}
@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}
  .petalos{display:none}
}

/* ================= Responsivo ================= */
@media (max-width:1180px){
  .book-grid{grid-template-columns:minmax(0,1fr) 330px}
  .chips{grid-template-columns:repeat(3,minmax(0,1fr))}
  .foot-in{grid-template-columns:1fr 1fr}
}
@media (max-width:999px){
  .hero{--zh:auto;min-height:0;padding-top:64px}
  .hero-grid{grid-template-columns:1fr;gap:34px}
  .hero-copy{padding:34px 0 0}
  .hero h1{max-width:13ch}
  .hero-door{justify-self:center;margin:44px 0 0}
  .portal{--w:min(64vw,400px)}
  .farol{display:none}
  .bugv{width:56%;right:-19%;top:-8%}
  .zocalo{position:relative;height:auto;padding:30px 0 24px}
  .facts{display:grid;grid-template-columns:1fr 1fr;gap:18px 24px;width:100%}
  .sec-head,.rooms-head,.book-head,.contact-grid,.v-grid{grid-template-columns:1fr}
  .rooms-photo{max-width:440px}
  .rooms-body{grid-template-columns:1fr}
  .plano{position:relative;top:0;max-width:520px}
  .book-grid{grid-template-columns:1fr}
  .quote{position:relative;top:0}
  .h-row,.h-row.rev,.breakfast{grid-template-columns:1fr}
  .h-row.rev .h-media{order:0}
  .menu-card{margin:-60px 18px 0}
  .amen{grid-template-columns:1fr 1fr}
  .near-grid{grid-template-columns:1fr}
  .score{justify-self:start}
  .pol-top{grid-template-columns:1fr 1fr}
  .pol-grid{grid-template-columns:1fr 1fr}
}
@media (max-width:760px){
  body{font-size:16px}
  .room-list{grid-template-columns:1fr}
  .cal-months{grid-template-columns:1fr}
  .chips{grid-template-columns:1fr 1fr}
  .amen{grid-template-columns:1fr}
  .amen li{padding:20px 0}
  .pol-top,.pol-grid{grid-template-columns:1fr}
  .pol-top b{font-size:38px}
  .form{grid-template-columns:1fr}
  .arrive{grid-template-columns:1fr 1fr}
  .foot-in{grid-template-columns:1fr}
  .menu-card{margin:-40px 10px 0}
  .mc-days li{grid-template-columns:78px 1fr auto}
  .pin{width:30px;height:39px;font-size:12.5px;line-height:28px}
  .pin::before{left:3px;width:24px;height:24px;border-width:2px}
  .pin span:first-child{width:30px}
  .near-card{grid-template-columns:32px minmax(0,1fr)}
  .nc-min{grid-column:2}
  .nc-tip{grid-column:2}
  .score>b{font-size:60px}
  .v-feature::before{font-size:130px;top:-16px}
  .dock{display:flex;position:fixed;left:10px;right:10px;bottom:10px;z-index:40;align-items:center;gap:8px;padding:8px 8px 8px 16px;border-radius:20px;background:var(--anil);color:var(--on-dark-2);box-shadow:0 18px 40px -14px rgba(24,41,67,.65);transform:translateY(150%);visibility:hidden;transition:transform .45s var(--ease),visibility 0s .45s}
  .dock.is-on{transform:none;visibility:visible;transition:transform .45s var(--ease)}
  .dock p{flex:1;font-size:12px;line-height:1.3}
  .dock p b{display:block;font:italic 600 18px/1.2 var(--serif);color:#fff}
  .dock .btn{min-height:46px;padding:0 16px;font-size:14px;background:var(--cal);border-color:var(--cal);color:var(--anil)}
  .dock .dock-wa{width:46px;padding:0;background:var(--patio);border-color:var(--patio);color:#fff}
  .foot{padding-bottom:70px}
}
@media (max-width:420px){
  .hero-cta .btn{flex:1 1 100%}
  .arrive{grid-template-columns:1fr}
  .day{height:42px;font-size:14px}
}
