/* Casa Angelina / Atlántica. Arquitectura por componentes;
   mobile first. */
:root{
  --navy:#142e46;
  --blue:#143f64;
  --sea:#dcebf0;
  --orange:#b84326;
  --white:#fff;
  --paper:#faf9f5;
  --text:#243e51;
  --muted:#526575;
  --line:#d7dfe2;
  --max:1200px;
  --serif:Georgia,'Times New Roman',serif}

*{
  box-sizing:border-box}
html{
  scroll-behavior:smooth;
  scroll-padding-top:7rem}
body{
  margin:0;
  background:var(--paper);
  color:var(--text);
  font:1rem/1.65 system-ui,-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;
  overflow-wrap:break-word}
button,input,select,textarea{
  font:inherit}
button,a,input,select,textarea{
  touch-action:manipulation}
button{
  cursor:pointer}
button:disabled{
  cursor:default}
a{
  color:inherit;
  text-underline-offset:.25em}
img{
  display:block;
  width:100%;
  height:auto}
h1,h2,h3,p,figure{
  margin:0}
h1,h2,h3{
  line-height:1.07;
  font-weight:400}
h1,h2{
  font-family:var(--serif);
  letter-spacing:-.035em}
h1{
  font-size:clamp(2.8rem,6.5vw,5.8rem)}
h2{
  font-size:clamp(2.2rem,4.5vw,4rem)}
h3{
  font-size:1.4rem;
  line-height:1.3}
p+p{
  margin-top:1rem}
ul{
  padding-left:1.2rem}
address{
  font-style:normal}
section{
  scroll-margin-top:7rem}
[hidden]{
  display:none!important}
:focus-visible{
  outline:3px solid var(--orange);
  outline-offset:5px}
.container{
  width:min(var(--max),calc(100% - 2.5rem));
  margin-inline:auto}
.sr-only{
  position:absolute;
  width:1px;
  height:1px;
  padding:0;
  margin:-1px;
  overflow:hidden;
  clip-path:inset(50%);
  white-space:nowrap;
  border:0}
.skip{
  position:fixed;
  left:1rem;
  top:-10rem;
  z-index:100;
  padding:.8rem;
  background:white}
.skip:focus{
  top:1rem}
.eyebrow{
  display:block;
  text-transform:uppercase;
  letter-spacing:.15em;
  font-size:.8rem;
  font-weight:650;
  margin-bottom:1.2rem}
.accent{
  color:var(--orange)}
.intro{
  font-size:1.125rem;
  max-width:42rem}
.muted{
  color:var(--muted)}
.section{
  padding-block:4.5rem}
.section-title{
  display:flex;
  align-items:end;
  justify-content:space-between;
  gap:2rem;
  margin-bottom:2.5rem;
  flex-wrap:wrap}
.section-title p{
  max-width:27rem}
.stack>*+*{
  margin-top:1.2rem}
.button{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-height:50px;
  padding:.85rem 1.4rem;
  border:1px solid var(--orange);
  border-radius:2rem;
  background:var(--orange);
  color:white;
  font-size:.95rem;
  font-weight:600;
  text-decoration:none;
  line-height:1.3;
  text-align:center}
.button:hover{
  background:#94321d;
  border-color:#94321d}
.button--outline{
  background:transparent;
  color:var(--navy);
  border-color:var(--navy)}
.button--outline:hover{
  background:var(--navy);
  color:white;
  border-color:var(--navy)}
.button--white{
  background:white;
  border-color:white;
  color:var(--navy)}
.text-link{
  display:inline-flex;
  align-items:center;
  min-height:44px;
  font-weight:600}
.actions{
  display:flex;
  flex-wrap:wrap;
  align-items:center;
  gap:1rem}
.pill{
  display:inline-flex;
  align-items:center;
  gap:.4rem;
  padding:.4rem .8rem;
  background:var(--sea);
  border-radius:2rem;
  font-size:.85rem}

/* Identidad y navegación. El menú se convierte en panel solo con JS activo. */
.site-header{
  background:var(--paper);
  position:relative;
  z-index:30;
  border-bottom:1px solid var(--line)}
.header-inner{
  min-height:100px;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:1.2rem;
  flex-wrap:wrap;
  padding-block:1rem}
.brand{
  display:flex;
  align-items:center;
  gap:.65rem;
  text-decoration:none;
  color:var(--navy)}
.brand-mark{
  width:42px;
  height:42px;
  display:grid;
  place-items:center;
  border:1px solid currentColor;
  border-radius:50%;
  font:1.25rem var(--serif)}
.brand-name{
  display:block;
  font:1.45rem var(--serif);
  letter-spacing:-.03em}
.brand small{
  display:block;
  font-size:.65rem;
  letter-spacing:.16em;
  text-transform:uppercase}
.main-nav{
  width:100%}
.main-nav ul{
  list-style:none;
  margin:0;
  padding:0;
  display:flex;
  flex-wrap:wrap;
  gap:.2rem 1rem;
  align-items:center}
.main-nav a{
  font-size:.9rem;
  text-decoration:none;
  display:inline-flex;
  align-items:center;
  min-height:44px}
.main-nav a[aria-current=page]{
  text-decoration:underline;
  text-decoration-color:var(--orange);
  text-decoration-thickness:2px}
.menu-button{
  background:none;
  border:1px solid var(--line);
  color:var(--navy);
  border-radius:2rem;
  min-height:44px;
  padding:.5rem 1rem}
.header-cta{
  display:none}
.nav-close{
  margin-bottom:2rem}
.mobile-nav-open{
  overflow:hidden}
.nav-enhanced .main-nav{
  position:fixed;
  inset:0;
  background:var(--paper);
  padding:2rem;
  z-index:60;
  overflow-y:auto}
.nav-enhanced .main-nav ul{
  display:grid}
.nav-enhanced .main-nav a{
  font:2rem/1.4 var(--serif);
  padding:.5rem 0}
.nav-enhanced .main-nav[hidden]{
  display:none!important}

/* Portada panorámica y consulta rápida */
.hero{
  position:relative;
  isolation:isolate;
  color:white;
  min-height:620px;
  display:flex;
  align-items:center;
  background:var(--navy);
  overflow:hidden}
.hero-image{
  position:absolute;
  inset:0;
  z-index:-2;
  height:100%;
  object-fit:cover;
  object-position:center}
.hero::before{
  content:'';
  position:absolute;
  inset:0;
  background:linear-gradient(90deg,rgba(12,33,51,.88),rgba(12,33,51,.42) 70%,rgba(12,33,51,.2));
  z-index:-1}
.hero-inner{
  padding-block:4rem 6rem}
.hero h1{
  max-width:800px}
.hero h1 em{
  font-weight:400}
.hero p{
  max-width:32rem;
  margin:1.4rem 0 2rem;
  color:#fff}
.hero-location{
  display:block;
  font-size:.8rem;
  letter-spacing:.1em;
  margin-top:2.5rem}
.hero a:focus-visible,.sea-panel a:focus-visible{
  outline-color:white}
.date-strip{
  position:relative;
  margin-top:-2.8rem;
  z-index:2;
  background:white;
  border:1px solid var(--line);
  padding:1.5rem;
  box-shadow:0 20px 50px #142e4610;
  display:grid;
  gap:1.2rem}
.date-strip strong{
  display:block;
  font:1.45rem var(--serif)}
.date-strip small{
  font-size:.85rem;
  color:var(--muted)}
.date-strip label{
  font-size:.85rem;
  display:grid;
  gap:.3rem}
.date-strip input{
  min-width:0;
  max-width:100%;
  width:100%;
  color:var(--navy);
  background:transparent;
  border:0;
  border-bottom:1px solid var(--line);
  padding:.55rem 0;
  min-height:44px}
.fact-strip{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:1.5rem;
  padding-block:2.5rem;
  border-bottom:1px solid var(--line)}
.fact-strip strong{
  display:block;
  font:2rem var(--serif)}
.fact-strip span{
  font-size:.9rem;
  color:var(--muted)}

/* Composición editorial y espacios */
.editorial{
  display:grid;
  gap:2.5rem;
  align-items:center}
.editorial>*{
  min-width:0}
.photo-note{
  position:relative}
.photo-note img{
  aspect-ratio:4/3;
  object-fit:cover}
.photo-note figcaption{
  padding:.8rem 0;
  font-size:.85rem;
  color:var(--muted);
  display:flex;
  justify-content:space-between;
  gap:1rem}
.photo-note figcaption span{
  color:var(--orange)}
.editorial .large-copy{
  font:clamp(1.6rem,3vw,2.6rem)/1.3 var(--serif)}
.number-heading{
  display:flex;
  gap:1rem;
  align-items:center;
  margin-bottom:1rem}
.number-heading span{
  font-size:.8rem;
  color:var(--orange);
  border-top:1px solid var(--orange);
  padding-top:.35rem}
.service-list{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:0 1.4rem;
  list-style:none;
  padding:0;
  margin:1.5rem 0}
.service-list li{
  border-bottom:1px solid var(--line);
  padding:.85rem 0;
  font-size:.9rem}
.sea-panel{
  background:var(--navy);
  color:white}
.sea-panel .muted{
  color:#c3d5e1}
.sea-panel .button--outline{
  border-color:white;
  color:white}
.sea-panel .button--outline:hover{
  background:white;
  color:var(--navy)}
.sea-panel .eyebrow{
  color:#edb499}
.room-tabs{
  display:flex;
  gap:.5rem;
  flex-wrap:wrap;
  margin-bottom:2rem}
.room-tabs button,.filterbar button{
  border:1px solid var(--line);
  background:white;
  color:var(--navy);
  min-height:44px;
  border-radius:2rem;
  padding:.65rem 1rem}
.room-tabs button[aria-selected=true],.filterbar button[aria-pressed=true]{
  background:var(--navy);
  color:white;
  border-color:var(--navy)}
.room-panel{
  display:grid;
  gap:2rem;
  align-items:center}
.room-panel img{
  aspect-ratio:5/3;
  object-fit:cover}
.room-panel+.room-panel{
  margin-top:3rem}
.room-panel h3{
  font:2.2rem var(--serif)}
.room-details{
  display:flex;
  gap:.6rem;
  flex-wrap:wrap;
  list-style:none;
  margin:1.2rem 0;
  padding:0}
.room-details li{
  font-size:.85rem;
  border:1px solid var(--line);
  padding:.3rem .6rem;
  border-radius:1rem}
.photo-ribbon{
  display:grid;
  gap:.8rem;
  grid-template-columns:1.2fr 1fr}
.photo-ribbon img{
  aspect-ratio:1;
  object-fit:cover}
.photo-ribbon figure:first-child{
  grid-row:span 2}
.photo-ribbon figure:first-child img{
  height:100%;
  aspect-ratio:auto}
.photo-ribbon figcaption{
  padding:.5rem 0;
  font-size:.85rem}
.experience-grid{
  display:grid;
  gap:1rem}
.experience{
  padding:2rem;
  background:var(--sea);
  display:flex;
  flex-direction:column;
  gap:1rem}
.experience:nth-child(2){
  background:#eee5dc}
.experience:nth-child(3){
  background:#e8ece7}
.experience .index{
  font:2rem var(--serif);
  color:var(--muted)}
.experience h3{
  font:1.8rem var(--serif)}
.experience a{
  margin-top:auto}
.mini-banner{
  padding:2rem;
  border:1px solid var(--line);
  display:flex;
  gap:1.5rem;
  align-items:center;
  justify-content:space-between;
  flex-wrap:wrap}
.mini-banner h3{
  font:1.7rem var(--serif)}
.faq details{
  border-bottom:1px solid var(--line);
  padding:1.2rem 0}
.faq summary{
  cursor:pointer;
  font-weight:600;
  min-height:44px}
.faq details p{
  max-width:48rem;
  padding-top:1rem}
.closing{
  display:grid;
  gap:2rem;
  padding-block:4rem}
.closing h2{
  max-width:40rem}
.closing p{
  max-width:30rem}

/* Páginas, fotos, tarifas, contacto */
.page-intro{
  padding-block:3rem 2rem}
.page-intro h1{
  max-width:900px}
.page-intro p{
  max-width:40rem;
  margin-top:1.3rem}
.breadcrumb{
  font-size:.85rem;
  margin-bottom:2rem}
.feature-photo img{
  aspect-ratio:16/7;
  object-fit:cover}
.section--compact{
  padding-top:2rem}
.room-grid{
  display:grid;
  gap:2rem}
.room-card img{
  aspect-ratio:5/3;
  object-fit:cover}
.room-card h2{
  font-size:2.3rem;
  margin:1.2rem 0}
.gallery-grid{
  display:grid;
  gap:1rem;
  grid-template-columns:repeat(2,minmax(0,1fr))}
.gallery-grid figure{
  min-width:0}
.gallery-grid a{
  display:block;
  overflow:hidden;
  background:var(--sea)}
.gallery-grid img{
  aspect-ratio:1;
  object-fit:cover;
  transition:transform .3s}
.gallery-grid a:hover img{
  transform:scale(1.035)}
.gallery-grid figcaption{
  font-size:.85rem;
  margin-top:.7rem}
.filterbar{
  display:flex;
  gap:.5rem;
  flex-wrap:wrap;
  margin-bottom:2rem}
.gallery-count{
  margin-bottom:1rem;
  color:var(--muted);
  font-size:.9rem}
dialog{
  border:0;
  border-radius:1rem;
  max-width:calc(100% - 2rem);
  max-height:90dvh;
  padding:1.4rem;
  color:var(--navy);
  background:white}
dialog::backdrop{
  background:rgba(9,26,41,.85)}
.lightbox{
  width:1000px}
.lightbox img{
  max-height:65vh;
  width:100%;
  object-fit:contain}
.dialog-head,.dialog-foot{
  display:flex;
  gap:1rem;
  align-items:center;
  justify-content:space-between;
  flex-wrap:wrap;
  margin-block:.5rem 1rem}
.dialog-head button,.dialog-foot button{
  background:white;
  border:1px solid var(--line);
  min-height:44px;
  padding:.5rem 1rem;
  border-radius:2rem;
  color:var(--navy)}
.table-scroll{
  overflow-x:auto}
table{
  border-collapse:collapse;
  width:100%;
  font-size:.95rem}
caption{
  text-align:left;
  font-weight:600;
  margin-bottom:1rem}
th,td{
  text-align:left;
  padding:1rem .8rem;
  border-bottom:1px solid var(--line)}
thead{
  background:var(--sea)}
.price{
  font:2rem var(--serif);
  white-space:nowrap}
.contact-layout{
  display:grid;
  gap:3rem;
  align-items:start}
.contact-card{
  padding:2rem;
  background:var(--sea)}
.contact-card img{
  margin-top:1.5rem;
  aspect-ratio:4/3;
  object-fit:cover}
.contact-card address{
  margin:1.3rem 0;
  overflow-wrap:anywhere}
.form-grid{
  display:grid;
  gap:1.2rem}
.field{
  display:grid;
  gap:.4rem}
.field label{
  font-weight:600;
  font-size:.9rem}
.field input,.field textarea,.field select{
  width:100%;
  min-width:0;
  min-height:50px;
  border:1px solid #8396a4;
  border-radius:.35rem;
  background:white;
  padding:.8rem;
  color:var(--navy)}
.field textarea{
  resize:vertical;
  min-height:150px}
.field small,.form-note{
  font-size:.85rem;
  color:var(--muted)}
.error{
  color:#a42f18;
  font-size:.85rem;
  min-height:1em}
.field [aria-invalid=true]{
  border-color:#a42f18;
  border-width:2px}
.privacy-check{
  display:flex;
  gap:.7rem;
  align-items:flex-start;
  margin-block:1rem}
.privacy-check input{
  width:1.2rem;
  height:1.2rem;
  flex-shrink:0;
  margin-top:.25rem}
.notice{
  padding:1rem;
  border-left:3px solid var(--orange);
  background:var(--sea);
  margin-bottom:1rem}
.prose{
  max-width:780px}
.prose h2{
  font-size:2rem;
  margin:2rem 0 1rem}
.prose h3{
  margin:1.5rem 0 .8rem}
.prose dl{
  display:grid;
  gap:.5rem}
.prose dd{
  margin:0 0 .8rem}
.guide-links{
  display:flex;
  gap:.7rem;
  flex-wrap:wrap}
.guide-links a{
  padding:.7rem 1rem;
  border:1px solid var(--line);
  text-decoration:none;
  min-height:44px}

/* Pie y acceso permanente al consentimiento */
.site-footer{
  background:#10273b;
  color:white;
  padding-block:3rem 1.5rem}
.footer-main{
  display:grid;
  gap:2rem}
.site-footer .brand{
  color:white}
.site-footer p{
  color:#c3d5e1;
  font-size:.9rem}
.footer-nav{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:.7rem}
.footer-nav a{
  font-size:.9rem;
  min-height:36px}
.footer-bottom{
  margin-top:2rem;
  padding-top:1.5rem;
  border-top:1px solid #405264;
  display:flex;
  flex-wrap:wrap;
  gap:1rem;
  align-items:center}
.footer-bottom a,.footer-bottom button{
  font-size:.8rem;
  color:#e5edf1}
.footer-bottom button{
  background:none;
  border:1px solid #6c8293;
  border-radius:2rem;
  min-height:44px;
  padding:.4rem .8rem}
.back-top{
  margin-left:auto}
.mobile-contact{
  position:sticky;
  bottom:0;
  z-index:20;
  background:white;
  border-top:1px solid var(--line);
  padding:.6rem 1rem;
  display:flex;
  gap:.75rem;
  align-items:center;
  justify-content:space-between}
.mobile-contact span{
  font-size:.85rem}
.mobile-contact .button{
  min-height:44px;
  padding:.65rem 1rem}

/* Aviso en el flujo del documento: sin tapar contenido ni crear un muro. */
.cookie-banner{
  background:#eaf0f3;
  border-bottom:1px solid #beced6;
  padding:1rem 0}
.cookie-layout{
  display:grid;
  gap:1rem}
.cookie-banner p{
  font-size:.875rem;
  max-width:60rem}
.cookie-title{
  font-weight:700}
.cookie-actions{
  display:grid;
  gap:.5rem;
  grid-template-columns:1fr}
.cookie-actions button{
  min-height:44px;
  border:1px solid var(--navy);
  color:var(--navy);
  background:white;
  border-radius:2rem;
  padding:.65rem .9rem;
  font-size:.875rem;
  font-weight:600}
.cookie-actions button:hover{
  background:var(--navy);
  color:white}
.consent-saved .cookie-banner{
  display:none}
.cookie-dialog{
  width:690px}
.cookie-dialog h2{
  font-size:2rem;
  margin-bottom:1rem}
.cookie-category{
  padding:1rem 0;
  border-bottom:1px solid var(--line)}
.cookie-category label{
  display:flex;
  gap:.7rem;
  font-weight:600;
  align-items:center}
.cookie-category input{
  width:1.2rem;
  height:1.2rem}
.cookie-category p{
  font-size:.9rem;
  margin-top:.5rem}
.cookie-dialog .cookie-actions{
  margin-top:1.2rem}

@media(min-width:600px){
  .date-strip{
  grid-template-columns:1fr 1fr}
.date-strip-heading,.date-strip button{
  grid-column:1/-1}
.fact-strip{
  grid-template-columns:repeat(4,minmax(0,1fr))}
.room-grid,.form-grid{
  grid-template-columns:repeat(2,minmax(0,1fr))}
.field--full{
  grid-column:1/-1}
.gallery-grid{
  grid-template-columns:repeat(3,minmax(0,1fr))}
.gallery-grid figure:first-child{
  grid-column:span 2;
  grid-row:span 2}
.gallery-grid figure:first-child img{
  aspect-ratio:1}
.cookie-actions{
  grid-template-columns:repeat(3,minmax(0,1fr))}
.footer-main{
  grid-template-columns:1fr 1fr}
.experience-grid{
  grid-template-columns:repeat(3,minmax(0,1fr))}
.experience{
  padding:1.5rem}
}

@media(min-width:960px){
  .site-header{
  position:sticky;
  top:0}
.header-inner{
  flex-wrap:nowrap;
  min-height:92px}
.header-cta{
  display:inline-flex}
.menu-button{
  display:none!important}
.main-nav,.nav-enhanced .main-nav{
  position:static;
  inset:auto;
  background:transparent;
  width:auto;
  padding:0;
  overflow:visible}
.main-nav ul,.nav-enhanced .main-nav ul{
  display:flex;
  gap:1.5rem}
.main-nav a,.nav-enhanced .main-nav a{
  font:.9rem/1.5 system-ui,sans-serif;
  padding:0}
.nav-close{
  display:none!important}
.hero{
  min-height:650px}
.hero-inner{
  padding-block:4rem 7rem}
.date-strip{
  grid-template-columns:1.25fr 1fr 1fr 1fr;
  align-items:center;
  padding:1.7rem 2rem;
  gap:2rem}
.date-strip-heading,.date-strip button{
  grid-column:auto}
.section{
  padding-block:6rem}
.section--compact{
  padding-top:2.5rem}
.editorial{
  grid-template-columns:1fr 1fr;
  gap:5rem}
.editorial--offset .photo-note{
  padding-top:4rem}
.room-panel{
  grid-template-columns:1.25fr 1fr;
  gap:4rem}
.closing{
  grid-template-columns:1.5fr 1fr;
  align-items:center}
.contact-layout{
  grid-template-columns:minmax(0,1.7fr) minmax(280px,1fr)}
.footer-main{
  grid-template-columns:1.2fr 1fr 1fr;
  gap:3rem}
.cookie-layout{
  grid-template-columns:1.6fr 1fr;
  align-items:center}
.mobile-contact{
  display:none}
}

@media(prefers-reduced-motion:reduce){
  html{
  scroll-behavior:auto}
*,*::before,*::after{
  transition:none!important;
  animation:none!important}
}

@media print{
  .main-nav,.menu-button,.header-cta,.cookie-banner,.cookie-dialog,.mobile-contact,.date-strip,.footer-bottom button{
  display:none!important}
.site-header{
  position:static}
.hero{
  min-height:350px}
body{
  background:white}
.section{
  padding-block:2rem}
}


/* Editable photo framing: percentages move the visible area, not the file. */
.hero-image{
  object-position:50% 50%}
.room-panel img{
  object-position:50% 50%}

.form>*+*{
  margin-top:1.5rem}
.field{
  font-weight:600}
.field small{
  font-weight:400}
.contact-card h2{
  font-size:2.5rem}
.contact-card a{
  overflow-wrap:anywhere}
.experience h2{
  font-size:2rem}
.cookie-footer{
  display:flex;
  flex-wrap:wrap;
  gap:.5rem}
.cookie-actions button:disabled{
  opacity:.65;
  cursor:default}
.brand small{
  font-size:.75rem}
.eyebrow,.hero-location{
  font-size:.875rem}
.footer-bottom a,.footer-bottom button{
  font-size:.875rem}

/* The mobile menu expands in the document, so it never traps the focus. */
@media(max-width:959px){
  .main-nav{
  padding-bottom:1rem}
.hero{
  min-height:540px}
.hero-inner{
  padding-block:3rem 5rem}
.hero h1{
  font-size:clamp(2.5rem,8vw,4.2rem)}
}

@media(min-width:960px){
  .nav-contact{
  display:none}
.main-nav ul{
  gap:1rem}
}

