:root{
  --sea:#0B3D3A;
  --sea-deep:#082B29;
  --sand:#F1E4C4;
  --sand-light:#FAF5E7;
  --mango:#E2A33D;
  --plum:#6E4272;
  --ink:#142523;
  --palm:#4B6B60;
  --white:#FFFFFF;
  --danger:#B3432D;
  --line: rgba(20,37,35,0.14);
  --radius: 2px;
}
*{box-sizing:border-box;}
html{scroll-behavior:smooth;}
body{
  margin:0;
  background:var(--sand-light);
  color:var(--ink);
  font-family:'Public Sans', sans-serif;
  -webkit-font-smoothing:antialiased;
}
h1,h2,h3,.display{
  font-family:'Fraunces', serif;
  font-weight:600;
  letter-spacing:-0.01em;
  margin:0;
}
.mono{
  font-family:'IBM Plex Mono', monospace;
}
.eyebrow{
  font-family:'IBM Plex Mono', monospace;
  font-size:12px;
  letter-spacing:0.14em;
  text-transform:uppercase;
  color:var(--palm);
}
a{color:inherit;}
img{max-width:100%;display:block;}
button{font-family:inherit;cursor:pointer;}
.wrap{max-width:1160px;margin:0 auto;padding:0 28px;}

/* NAV */
header.site{
  position:sticky;top:0;z-index:50;
  background:rgba(250,245,231,0.92);
  backdrop-filter:blur(8px);
  border-bottom:1px solid var(--line);
}
.navbar{display:flex;align-items:center;justify-content:space-between;padding:16px 28px;max-width:1160px;margin:0 auto;}
.brand{display:flex;align-items:center;gap:10px;font-family:'Fraunces',serif;font-weight:600;font-size:19px;text-decoration:none;}
.brand img{height:34px;width:auto;}
nav.links{display:flex;gap:28px;align-items:center;}
nav.links a{font-size:14px;text-decoration:none;color:var(--ink);opacity:0.75;}
nav.links a:hover{opacity:1;}
nav.links a.btn{color:var(--sand-light);opacity:1;}
nav.links a.btn:hover{opacity:0.88;}
nav.links a.active{opacity:1;border-bottom:2px solid var(--mango);padding-bottom:3px;}
.nav-toggle{display:none;background:none;border:1px solid var(--line);padding:8px 10px;}
@media(max-width:780px){
  nav.links{position:fixed;top:67px;left:0;right:0;background:var(--sand-light);flex-direction:column;align-items:flex-start;padding:18px 28px;gap:16px;border-bottom:1px solid var(--line);display:none;}
  nav.links.open{display:flex;}
  .nav-toggle{display:block;}
}
.btn{
  display:inline-flex;align-items:center;gap:8px;
  padding:11px 20px;border-radius:var(--radius);
  border:1px solid var(--ink);
  background:var(--ink);color:var(--sand-light);
  font-size:13px;font-weight:600;letter-spacing:0.02em;
  text-decoration:none;
}
.btn.ghost{background:transparent;color:var(--ink);}
.btn.mango{background:var(--mango);border-color:var(--mango);color:var(--sea-deep);}
.btn:disabled{opacity:0.4;cursor:not-allowed;}

/* PAGE HERO (subpáginas) */
.page-hero{background:var(--sea);color:var(--sand-light);padding:64px 0 52px;}
.page-hero .eyebrow{color:var(--mango);}
.page-hero h1{font-size:clamp(30px,5vw,48px);margin:12px 0 14px;}
.page-hero p{color:rgba(250,245,231,0.85);font-size:16px;max-width:560px;line-height:1.55;}

/* HERO (home) */
.hero{position:relative;min-height:88vh;display:flex;align-items:flex-end;overflow:hidden;}
.hero::before{
  content:'';position:absolute;inset:0;
  background:url('https://hotelsamapini.com/assets/img/Portada.webp') center/cover no-repeat;
}
.hero::after{
  content:'';position:absolute;inset:0;
  background:linear-gradient(180deg, rgba(8,43,41,0.15) 0%, rgba(8,43,41,0.35) 55%, rgba(8,43,41,0.92) 100%);
}
.hero-inner{position:relative;z-index:2;color:var(--sand-light);padding:0 28px 40px;max-width:1160px;margin:0 auto;width:100%;}
.hero-inner .eyebrow{color:var(--mango);}
.hero h1{font-size:clamp(34px,6vw,66px);line-height:1.02;margin:10px 0 18px;max-width:820px;}
.hero p.lede{font-size:17px;max-width:520px;color:rgba(250,245,231,0.88);margin-bottom:8px;}

/* SEARCH CARD */
.search-card{
  position:relative;z-index:3;
  background:var(--white);
  margin:-52px auto 0;
  max-width:1160px;
  padding:22px 28px;
  display:grid;grid-template-columns:1fr 1fr 0.7fr auto;gap:18px;
  border:1px solid var(--line);
  box-shadow:0 18px 40px rgba(8,43,41,0.18);
}
@media(max-width:820px){.search-card{grid-template-columns:1fr 1fr;margin:0;box-shadow:none;}}
.search-field label{display:block;font-family:'IBM Plex Mono';font-size:11px;letter-spacing:0.1em;text-transform:uppercase;color:var(--palm);margin-bottom:6px;}
.search-field .val{font-size:16px;font-weight:600;}
.search-field button.field-btn{
  width:100%;text-align:left;background:none;border:none;padding:0;
}

section{padding:88px 0;}
.section-head{max-width:640px;margin-bottom:48px;}
.section-head h2{font-size:clamp(28px,4vw,42px);margin-top:10px;}
.section-head p{color:var(--palm);font-size:16px;margin-top:14px;line-height:1.55;}

/* ROOMS - gallery placard cards */
.rooms-grid{display:grid;grid-template-columns:1fr 1fr;gap:32px;}
@media(max-width:820px){.rooms-grid{grid-template-columns:1fr;}}
.room-card{border:1px solid var(--line);background:var(--white);}
.room-photo{position:relative;aspect-ratio:4/3;overflow:hidden;background:var(--sea-deep);}
.room-photo img{width:100%;height:100%;object-fit:cover;transition:transform .5s ease;}
.room-card:hover .room-photo img{transform:scale(1.04);}
.placard{padding:22px 24px 24px;border-top:3px solid var(--mango);}
.placard-top{display:flex;justify-content:space-between;align-items:baseline;gap:12px;}
.placard h3{font-size:23px;}
.placard .tag{font-family:'IBM Plex Mono';font-size:11px;color:var(--plum);letter-spacing:0.06em;text-transform:uppercase;margin-top:4px;}
.placard .desc{font-size:14.5px;color:var(--ink);opacity:0.82;line-height:1.5;margin:14px 0 16px;}
.meta-row{display:flex;gap:18px;font-family:'IBM Plex Mono';font-size:12px;color:var(--palm);border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:12px 0;margin-bottom:16px;}
.meta-row span{display:flex;align-items:center;gap:6px;}
.price-row{display:flex;justify-content:space-between;align-items:flex-end;}
.price-row .price{font-family:'IBM Plex Mono';font-size:22px;font-weight:600;}
.price-row .price small{display:block;font-size:10.5px;font-weight:400;color:var(--palm);letter-spacing:0.04em;}
.example-badge{display:inline-block;margin-top:4px;font-family:'IBM Plex Mono';font-size:10px;color:var(--danger);letter-spacing:0.05em;}

/* ABOUT / ART STRIP */
.art-strip{background:var(--sea);color:var(--sand-light);}
.art-strip .wrap{display:grid;grid-template-columns:0.9fr 1.1fr;gap:56px;align-items:center;}
@media(max-width:820px){.art-strip .wrap{grid-template-columns:1fr;}}
.art-strip img{width:100%;aspect-ratio:4/3;object-fit:cover;}
.art-strip .eyebrow{color:var(--mango);}
.art-strip h2{font-size:clamp(26px,3.6vw,38px);margin:12px 0 18px;color:var(--sand-light);}
.art-strip p{color:rgba(250,245,231,0.82);line-height:1.65;font-size:15.5px;margin-bottom:14px;}
.quote{border-left:2px solid var(--mango);padding-left:18px;margin-top:22px;font-family:'Fraunces';font-style:italic;font-size:16px;color:var(--sand);}
.quote cite{display:block;margin-top:10px;font-family:'IBM Plex Mono';font-style:normal;font-size:11px;color:var(--mango);letter-spacing:0.04em;}

/* SERVICES */
.services-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;background:var(--line);border:1px solid var(--line);}
@media(max-width:900px){.services-grid{grid-template-columns:repeat(2,1fr);}}
.service-cell{background:var(--sand-light);padding:28px 22px;}
.service-cell .num{font-family:'IBM Plex Mono';font-size:11px;color:var(--mango);}
.service-cell h3{font-size:17px;margin:14px 0 8px;}
.service-cell p{font-size:13.5px;color:var(--palm);line-height:1.5;}

/* ACTIVITIES */
.activities-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:24px;}
@media(max-width:820px){.activities-grid{grid-template-columns:1fr;}}
.video-frame{position:relative;aspect-ratio:16/9;overflow:hidden;border:1px solid var(--line);}
.video-frame iframe{width:100%;height:100%;border:0;}
.activity-card p.cap{margin-top:12px;font-size:14px;color:var(--palm);line-height:1.5;}

/* LOCATION / CONTACT */
.contact-wrap{display:grid;grid-template-columns:1fr 1fr;gap:44px;}
@media(max-width:820px){.contact-wrap{grid-template-columns:1fr;}}
.map-embed{width:100%;aspect-ratio:4/3;border:1px solid var(--line);}
.contact-list{list-style:none;padding:0;margin:0 0 24px;}
.contact-list li{padding:14px 0;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;font-size:14.5px;}
.contact-list li span:first-child{color:var(--palm);font-family:'IBM Plex Mono';font-size:11px;text-transform:uppercase;letter-spacing:0.06em;}

footer{background:var(--ink);color:rgba(250,245,231,0.7);padding:44px 0;}
footer .wrap{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:16px;font-size:13px;}
footer a{text-decoration:none;color:rgba(250,245,231,0.7);border-bottom:1px solid rgba(250,245,231,0.3);}
footer a:hover{color:var(--mango);border-color:var(--mango);}

/* CRÉDITO DE DESARROLLO */
.dev-credit{
  max-width:1160px;margin:24px auto 0;padding:20px 28px 0;
  border-top:1px solid rgba(250,245,231,0.12);
  display:flex;align-items:center;justify-content:center;gap:10px;
  flex-wrap:wrap;font-size:12.5px;color:rgba(250,245,231,0.55);
}
.dev-credit .heart{color:#E2574C;}
.dev-credit a{
  display:inline-flex;align-items:center;gap:8px;
  background:var(--sand-light);color:var(--ink);
  padding:5px 14px 5px 5px;border-radius:20px;
  text-decoration:none;border-bottom:none;font-weight:700;font-size:13px;
}
.dev-credit a:hover{opacity:0.88;color:var(--ink);}
.dev-credit a img{height:22px;width:22px;object-fit:contain;border-radius:50%;}

/* FLOATING RESERVE BUTTON (visible en todas las páginas) */
.fab-reservar{
  position:fixed;right:22px;bottom:22px;z-index:150;
  box-shadow:0 12px 28px rgba(8,43,41,0.32);
  padding:14px 24px;
}
@media(max-width:600px){
  .fab-reservar{left:16px;right:16px;bottom:16px;width:calc(100% - 32px);justify-content:center;}
}

/* MODAL */
.modal-overlay{
  position:fixed;inset:0;background:rgba(8,20,18,0.6);
  display:none;align-items:center;justify-content:center;z-index:200;padding:20px;
}
.modal-overlay.open{display:flex;}
.modal{
  background:var(--sand-light);max-width:880px;width:100%;max-height:88vh;overflow-y:auto;
  border:1px solid var(--line);position:relative;
}
.modal-head{display:flex;justify-content:space-between;align-items:center;padding:20px 26px;border-bottom:1px solid var(--line);position:sticky;top:0;background:var(--sand-light);z-index:2;}
.modal-head h3{font-size:20px;}
.modal-close{background:none;border:none;font-size:22px;line-height:1;color:var(--palm);}
.modal-body{padding:26px;}
.modal-gallery{display:grid;grid-template-columns:repeat(2,1fr);gap:10px;margin-bottom:22px;}
.modal-gallery img{aspect-ratio:4/3;object-fit:cover;}

/* ROOM PICKER (paso 0, cuando se abre desde el botón flotante) */
.picker-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px;}
@media(max-width:600px){.picker-grid{grid-template-columns:1fr;}}
.picker-card{border:1px solid var(--line);background:var(--white);cursor:pointer;text-align:left;padding:0;}
.picker-card .room-photo{aspect-ratio:16/10;}
.picker-card .picker-info{padding:14px 16px;}
.picker-card .picker-info h4{font-size:16px;}
.picker-card .picker-info .price{font-family:'IBM Plex Mono';font-size:13px;color:var(--palm);margin-top:6px;}
.picker-card:hover{border-color:var(--mango);}

.steps{display:flex;gap:8px;margin-bottom:24px;}
.step-dot{font-family:'IBM Plex Mono';font-size:11px;color:var(--palm);padding:5px 12px;border:1px solid var(--line);border-radius:20px;}
.step-dot.active{background:var(--ink);color:var(--sand-light);border-color:var(--ink);}

.cal{display:grid;grid-template-columns:1fr 1fr;gap:28px;margin-bottom:20px;}
@media(max-width:640px){.cal{grid-template-columns:1fr;}}
.cal-month{border:1px solid var(--line);padding:16px;background:var(--white);}
.cal-month-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px;font-family:'IBM Plex Mono';font-size:12px;text-transform:uppercase;letter-spacing:0.06em;}
.cal-month-head button{background:none;border:1px solid var(--line);width:26px;height:26px;font-size:14px;}
.cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:3px;}
.cal-grid .dow{font-family:'IBM Plex Mono';font-size:10px;color:var(--palm);text-align:center;padding:4px 0;}
.cal-day{aspect-ratio:1;display:flex;align-items:center;justify-content:center;font-size:12.5px;border-radius:2px;cursor:pointer;background:transparent;border:1px solid transparent;}
.cal-day.disabled{color:#c9c2ad;cursor:not-allowed;}
.cal-day.booked{background:repeating-linear-gradient(45deg, rgba(179,67,45,0.14), rgba(179,67,45,0.14) 4px, transparent 4px, transparent 8px);color:var(--danger);cursor:not-allowed;}
.cal-day.blank{visibility:hidden;}
.cal-day.today{border-color:var(--mango);}
.cal-day:hover:not(.disabled):not(.booked){background:var(--sand);}
.cal-day.selected{background:var(--sea);color:var(--sand-light);}
.cal-day.in-range{background:var(--sand);}

.legend{display:flex;gap:18px;font-family:'IBM Plex Mono';font-size:11px;color:var(--palm);margin-bottom:24px;flex-wrap:wrap;}
.legend span{display:flex;align-items:center;gap:6px;}
.swatch{width:12px;height:12px;display:inline-block;}
.swatch.booked{background:repeating-linear-gradient(45deg, rgba(179,67,45,0.3), rgba(179,67,45,0.3) 3px, transparent 3px, transparent 6px);border:1px solid var(--danger);}
.swatch.selected{background:var(--sea);}

.field-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-bottom:16px;}
.field{display:flex;flex-direction:column;gap:6px;}
.field label{font-family:'IBM Plex Mono';font-size:11px;text-transform:uppercase;letter-spacing:0.06em;color:var(--palm);}
.field input,.field select,.field textarea{
  padding:11px 12px;border:1px solid var(--line);background:var(--white);
  font-family:'Public Sans';font-size:14px;color:var(--ink);resize:vertical;
}
.field input:focus,.field select:focus,.field textarea:focus{outline:2px solid var(--mango);outline-offset:1px;}
.summary-box{background:var(--sea);color:var(--sand-light);padding:20px 22px;margin:18px 0;}
.summary-box .row{display:flex;justify-content:space-between;font-size:13.5px;padding:6px 0;border-bottom:1px solid rgba(250,245,231,0.15);}
.summary-box .row.total{font-weight:700;font-size:16px;border-bottom:none;padding-top:12px;}
.error-msg{color:var(--danger);font-size:13px;margin-top:-8px;margin-bottom:14px;font-family:'IBM Plex Mono';}
.confirm-screen{text-align:center;padding:20px 0;}
.confirm-code{display:inline-block;font-family:'IBM Plex Mono';font-size:20px;letter-spacing:0.08em;background:var(--sand);padding:12px 20px;margin:18px 0;border:1px dashed var(--palm);}
.actions-row{display:flex;gap:12px;justify-content:flex-end;margin-top:22px;flex-wrap:wrap;}

/* ADMIN */
.admin-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px;flex-wrap:wrap;gap:14px;}
.admin-tabs{display:flex;gap:24px;border-bottom:1px solid var(--line);margin-bottom:30px;}
.admin-tabs a{padding:0 0 12px;font-size:14px;text-decoration:none;color:var(--palm);border-bottom:2px solid transparent;margin-bottom:-1px;}
.admin-tabs a.active{color:var(--ink);border-color:var(--mango);font-weight:600;}
.admin-tabs a:hover{color:var(--ink);}

/* OCUPACIÓN (grilla habitación x día) */
.occ-head{display:flex;justify-content:space-between;align-items:center;margin:0 0 14px;flex-wrap:wrap;gap:10px;}
.occ-nav{display:flex;align-items:center;gap:10px;font-family:'IBM Plex Mono';font-size:12px;color:var(--palm);}
.occ-nav button{background:none;border:1px solid var(--line);width:26px;height:26px;font-size:14px;background:var(--white);}
.occ-wrap{overflow-x:auto;border:1px solid var(--line);background:var(--white);}
.occ-grid{display:grid;grid-auto-rows:32px;min-width:100%;width:max-content;}
.occ-cell{display:flex;align-items:center;justify-content:center;font-size:10.5px;color:var(--palm);border-right:1px solid var(--line);border-bottom:1px solid var(--line);}
.occ-cell.head{font-family:'IBM Plex Mono';background:var(--sand-light);position:sticky;top:0;z-index:2;}
.occ-cell.room-label{position:sticky;left:0;background:var(--white);z-index:1;justify-content:flex-start;padding-left:12px;font-size:12.5px;font-weight:600;color:var(--ink);border-right:2px solid var(--line);}
.occ-cell.head.room-label{z-index:3;}
.occ-cell.reservation{background:var(--sea);}
.occ-cell.blocked{background:repeating-linear-gradient(45deg, rgba(179,67,45,0.3), rgba(179,67,45,0.3) 3px, transparent 3px, transparent 6px);}
.occ-cell.today-col{box-shadow:inset 0 0 0 2px var(--mango);}
.admin-table{width:100%;border-collapse:collapse;background:var(--white);border:1px solid var(--line);}
.admin-table th{text-align:left;font-family:'IBM Plex Mono';font-size:11px;text-transform:uppercase;letter-spacing:0.05em;color:var(--palm);padding:12px 14px;border-bottom:1px solid var(--line);}
.admin-table td{padding:12px 14px;font-size:13.5px;border-bottom:1px solid var(--line);vertical-align:top;}
.status-pill{font-family:'IBM Plex Mono';font-size:11px;padding:3px 10px;border-radius:20px;display:inline-block;}
.status-pill.pending{background:rgba(226,163,61,0.2);color:#8a5f14;}
.status-pill.confirmed{background:rgba(11,61,58,0.15);color:var(--sea);}
.status-pill.cancelled{background:rgba(179,67,45,0.15);color:var(--danger);}
.row-actions{display:flex;gap:8px;}
.row-actions button{font-size:11px;padding:5px 10px;border:1px solid var(--line);background:var(--white);}
.admin-block-form{display:flex;gap:12px;flex-wrap:wrap;align-items:flex-end;background:var(--white);border:1px solid var(--line);padding:18px;margin-bottom:28px;}
.admin-room-form{background:var(--white);border:1px solid var(--line);padding:20px;margin-bottom:20px;}
.empty-note{padding:30px;text-align:center;color:var(--palm);font-family:'IBM Plex Mono';font-size:13px;}
.toast{position:fixed;bottom:24px;left:50%;transform:translateX(-50%);background:var(--ink);color:var(--sand-light);padding:12px 22px;font-size:13.5px;z-index:300;display:none;}
.toast.show{display:block;}
