/* =========================================================
   Chalé Rural — design system
   ========================================================= */

:root{
  /* cor */
  --forest:      #12332A;
  --forest-3:    #2B6250;
  --cream:       #F8F5EE;
  --cream-2:     #F0EBDF;
  --sand:        #E3DACA;
  --terra:       #9D5830;   /* AA: 4.98 sobre --cream, 5.42 com texto branco */
  --terra-2:     #874C2A;
  --ink:         #1B1A16;
  --muted:       #6E6857;
  --line:        #DFD7C6;
  --wa:          #25D366;

  /* superfícies */
  --bg:          var(--cream);
  --surface:     #FFFFFF;

  /* forma */
  --r-sm: 10px;
  --r:    18px;
  --r-lg: 28px;
  --shadow:    0 1px 2px rgba(27,26,22,.04), 0 8px 28px -12px rgba(27,26,22,.18);
  --shadow-lg: 0 2px 4px rgba(27,26,22,.05), 0 30px 60px -24px rgba(27,26,22,.32);

  /* ritmo */
  --pad:  clamp(1.25rem, 5vw, 2.5rem);
  --gap:  clamp(1.25rem, 3vw, 2.25rem);
  --sec:  clamp(4.5rem, 10vw, 8.5rem);
  --wrap: 1200px;

  /* tipo */
  --serif: "Fraunces", "Iowan Old Style", Georgia, "Times New Roman", serif;
  --sans:  "Inter", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
}

*,*::before,*::after{ box-sizing:border-box; }

html{ scroll-behavior:smooth; scroll-padding-top:5.5rem; -webkit-text-size-adjust:100%; }
@media (prefers-reduced-motion:reduce){ html{ scroll-behavior:auto; } }

body{
  margin:0;
  background:var(--bg);
  color:var(--ink);
  font-family:var(--sans);
  font-size:clamp(1rem, .96rem + .2vw, 1.075rem);
  line-height:1.65;
  font-weight:400;
  -webkit-font-smoothing:antialiased;
  overflow-x:hidden;
}
body.is-locked{ overflow:hidden; }

img,svg,iframe{ display:block; max-width:100%; }
img{ height:auto; }

h1,h2,h3{
  font-family:var(--serif);
  font-weight:500;
  line-height:1.06;
  letter-spacing:-.015em;
  margin:0 0 .55em;
  font-variation-settings:"opsz" 60;
}
h1{ font-size:clamp(2.7rem, 7.2vw, 5.4rem); }
h2{ font-size:clamp(2rem, 4.4vw, 3.35rem); }
h3{ font-size:1.12rem; font-family:var(--sans); font-weight:600; letter-spacing:-.005em; line-height:1.35; }
h1 em{ font-style:italic; font-weight:300; }

p{ margin:0 0 1.05em; }
p:last-child{ margin-bottom:0; }

a{ color:inherit; }

.sprite{ position:absolute; width:0; height:0; overflow:hidden; }

.skip-link{
  position:absolute; left:1rem; top:-4rem; z-index:200;
  background:var(--forest); color:#fff; padding:.7rem 1.1rem;
  border-radius:var(--r-sm); text-decoration:none; font-weight:600; font-size:.9rem;
  transition:top .2s;
}
.skip-link:focus-visible{ top:1rem; }

:focus-visible{ outline:2.5px solid var(--terra); outline-offset:3px; border-radius:4px; }
/* em fundo escuro a terracota some: usa o tom claro da paleta */
.sec--dark :focus-visible, .foot :focus-visible, .nav__links :focus-visible,
.hero :focus-visible, .err :focus-visible, .nav--solid :focus-visible{ outline-color:#E0A87E; }

.wrap{ width:min(100% - var(--pad)*2, var(--wrap)); margin-inline:auto; }

/* ---------- tipografia utilitária ---------- */
.eyebrow{
  font-size:.75rem; font-weight:600; letter-spacing:.18em; text-transform:uppercase;
  color:var(--terra); margin:0 0 1rem; display:flex; align-items:center; gap:.7rem;
}
.eyebrow::after{ content:""; flex:0 0 2.5rem; height:1px; background:currentColor; opacity:.45; }
.eyebrow--light{ color:#D9A87E; }

.lead{ font-size:clamp(1.08rem, 1rem + .45vw, 1.3rem); line-height:1.55; color:var(--ink); }
.sec--dark .lead{ color:rgba(255,255,255,.86); }

/* ---------- botões ---------- */
.btn{
  --btn-bg:var(--forest); --btn-fg:#fff; --btn-bd:var(--forest);
  display:inline-flex; align-items:center; justify-content:center; gap:.6rem;
  padding:.95rem 1.7rem; border-radius:999px; border:1.5px solid var(--btn-bd);
  background:var(--btn-bg); color:var(--btn-fg);
  font:600 .95rem/1 var(--sans); letter-spacing:.005em;
  text-decoration:none; cursor:pointer; white-space:nowrap;
  transition:transform .22s cubic-bezier(.2,.7,.3,1), background .22s, color .22s, border-color .22s, box-shadow .22s;
}
.btn svg{ width:1.05em; height:1.05em; fill:currentColor; }
.btn:hover{ transform:translateY(-2px); box-shadow:var(--shadow); }
.btn:active{ transform:translateY(0); }
.btn--solid{ --btn-bg:var(--terra); --btn-bd:var(--terra); }
.btn--solid:hover{ --btn-bg:var(--terra-2); --btn-bd:var(--terra-2); }
.btn--ghost{ --btn-bg:transparent; --btn-fg:#fff; --btn-bd:rgba(255,255,255,.55); }
.btn--ghost:hover{ --btn-bg:rgba(255,255,255,.14); --btn-bd:#fff; }
.btn--sm{ padding:.6rem 1.15rem; font-size:.875rem; }
/* toque confortavel em telas pequenas (WCAG 2.5.8) */
@media (max-width:940px){
  .btn--sm{ min-height:44px; padding-block:.7rem; }
}
.btn--wa{ --btn-bg:var(--wa); --btn-bd:var(--wa); --btn-fg:#08351B; width:100%; padding:1.05rem 1.7rem; font-size:1rem; }
.btn--wa:hover{ --btn-bg:#1FBE5A; --btn-bd:#1FBE5A; }

.link-arrow{
  display:inline-flex; align-items:center; gap:.5rem; min-height:40px;
  font-weight:600; font-size:.95rem; text-decoration:none;
  color:var(--forest); border-bottom:1.5px solid var(--sand);
  padding-bottom:.25rem; margin-top:.6rem;
  transition:gap .2s, border-color .2s;
}
.link-arrow svg{ width:1.05em; height:1.05em; stroke:currentColor; fill:none; }
.link-arrow:hover{ gap:.85rem; border-color:var(--terra); }

/* =========================================================
   NAV
   ========================================================= */
.nav{
  position:fixed; inset:0 0 auto; z-index:90;
  transition:background .3s, box-shadow .3s, backdrop-filter .3s;
}
.nav__in{
  width:min(100% - var(--pad)*2, 1360px); margin-inline:auto;
  display:flex; align-items:center; gap:var(--gap);
  padding:.85rem 0;
}
.brand{ display:flex; align-items:center; gap:.7rem; text-decoration:none; margin-right:auto; }
.brand img{ width:44px; height:44px; object-fit:contain; filter:drop-shadow(0 2px 6px rgba(0,0,0,.35)); }
.brand__txt{ display:flex; flex-direction:column; line-height:1.15; color:#fff; transition:color .3s; }
.brand__txt b{ font-family:var(--serif); font-size:1.22rem; font-weight:600; letter-spacing:-.01em; }
.brand__txt small{ font-size:.68rem; letter-spacing:.16em; text-transform:uppercase; opacity:.75; }

.nav__links{ display:flex; align-items:center; gap:.35rem; }
.nav__links a{
  padding:.55rem .85rem; border-radius:999px; text-decoration:none;
  font-size:.93rem; font-weight:500; color:#fff;
  transition:background .2s, color .2s;
}
.nav__links a:not(.btn):hover{ background:rgba(255,255,255,.16); }

.nav.is-stuck{
  background:rgba(248,245,238,.9);
  backdrop-filter:saturate(1.6) blur(14px);
  -webkit-backdrop-filter:saturate(1.6) blur(14px);
  box-shadow:0 1px 0 var(--line), 0 10px 30px -22px rgba(27,26,22,.5);
}
.nav.is-stuck .brand__txt{ color:var(--forest); }
.nav.is-stuck .brand img{ filter:none; }
.nav.is-stuck .nav__links a{ color:var(--forest); }
.nav.is-stuck .nav__links a:not(.btn):hover{ background:var(--cream-2); }
.nav.is-stuck .nav__links a.btn{ color:#fff; }

.burger{
  display:none; width:44px; height:44px; padding:0;
  background:rgba(0,0,0,.28); border:1px solid rgba(255,255,255,.28); border-radius:12px;
  cursor:pointer; flex-direction:column; align-items:center; justify-content:center; gap:5px;
}
.burger span{ display:block; width:19px; height:1.8px; background:#fff; border-radius:2px; transition:transform .28s, opacity .2s; }
.nav.is-stuck .burger{ background:var(--cream-2); border-color:var(--line); }
.nav.is-stuck .burger span{ background:var(--forest); }
.burger[aria-expanded="true"] span:nth-child(1){ transform:translateY(6.8px) rotate(45deg); }
.burger[aria-expanded="true"] span:nth-child(2){ opacity:0; }
.burger[aria-expanded="true"] span:nth-child(3){ transform:translateY(-6.8px) rotate(-45deg); }

@media (max-width:940px){
  .burger{ display:flex; }
  /* com o menu aberto a barra some, para o overlay verde ficar limpo */
  .nav.is-menu, .nav.is-menu.is-stuck{ background:transparent; box-shadow:none; backdrop-filter:none; -webkit-backdrop-filter:none; }
  .nav.is-menu .brand__txt{ color:#fff; }
  .nav.is-menu .burger{ background:rgba(255,255,255,.14); border-color:rgba(255,255,255,.3); }
  .nav.is-menu .burger span{ background:#fff; }
  .nav__links{
    position:fixed; inset:0; z-index:-1;
    flex-direction:column; align-items:stretch; justify-content:center; gap:.25rem;
    padding:6rem var(--pad) var(--pad);
    background:var(--forest);
    opacity:0; visibility:hidden; transform:translateY(-8px);
    transition:opacity .3s, transform .3s, visibility .3s;
    overflow-y:auto;
  }
  .nav__links.is-open{ opacity:1; visibility:visible; transform:none; }
  .nav__links a{
    color:#fff !important; font-family:var(--serif); font-size:1.8rem; font-weight:400;
    padding:.6rem .2rem; border-radius:0; border-bottom:1px solid rgba(255,255,255,.12);
  }
  .nav__links a:not(.btn):hover{ background:transparent !important; color:#D9A87E !important; }
  .nav__links a.btn{
    margin-top:1.4rem; justify-content:center; font-family:var(--sans); font-size:1rem;
    border-radius:999px; border:1.5px solid var(--terra); background:var(--terra);
  }
}

/* =========================================================
   HERO
   ========================================================= */
.hero{ position:relative; min-height:min(100svh, 900px); display:flex; flex-direction:column; justify-content:flex-end; isolation:isolate; }
.hero__bg{ position:absolute; inset:0; width:100%; height:100%; object-fit:cover; z-index:-2; }
.hero__scrim{
  position:absolute; inset:0; z-index:-1;
  background:
    linear-gradient(180deg, rgba(9,26,20,.72) 0%, rgba(9,26,20,.5) 30%, rgba(9,26,20,.68) 62%, rgba(9,26,20,.94) 100%),
    linear-gradient(90deg, rgba(9,26,20,.72) 0%, rgba(9,26,20,.34) 55%, rgba(9,26,20,.12) 100%);
}
.hero__in{
  width:min(100% - var(--pad)*2, var(--wrap)); margin-inline:auto;
  color:#fff; padding:9rem 0 clamp(2.5rem,5vw,3.5rem); max-width:min(100% - var(--pad)*2, 62ch);
}
.hero h1{ margin-bottom:.4em; text-shadow:0 2px 30px rgba(0,0,0,.35); }
.hero__lead{
  font-size:clamp(1.08rem, 1rem + .5vw, 1.35rem); line-height:1.5;
  color:rgba(255,255,255,.9); max-width:46ch; margin-bottom:2rem;
}
.hero__cta{ display:flex; flex-wrap:wrap; gap:.85rem; }

.hero__facts{
  list-style:none; margin:0; padding:0;
  width:min(100% - var(--pad)*2, var(--wrap)); margin-inline:auto;
  display:grid; grid-template-columns:repeat(4,1fr); gap:1px;
  background:rgba(255,255,255,.16);
  border:1px solid rgba(255,255,255,.16); border-radius:var(--r);
  overflow:hidden; margin-bottom:clamp(1.5rem,4vw,2.75rem);
  backdrop-filter:blur(6px); -webkit-backdrop-filter:blur(6px);
}
.hero__facts li{
  background:rgba(9,26,20,.42); color:#fff;
  padding:1.1rem 1.25rem; display:flex; flex-direction:column; gap:.15rem;
}
.hero__facts b{ font-family:var(--serif); font-size:1.5rem; font-weight:500; line-height:1.1; }
.hero__facts span{ font-size:.8rem; color:rgba(255,255,255,.72); line-height:1.35; }
@media (max-width:760px){
  .hero__facts{ grid-template-columns:repeat(2,1fr); }
  .hero__in{ padding-top:7rem; }
}

/* =========================================================
   SEÇÕES
   ========================================================= */
.sec{ padding:var(--sec) 0; position:relative; }
.sec--tint{ background:var(--cream-2); }
.sec--dark{ background:var(--forest); color:rgba(255,255,255,.82); }
.sec--dark h2, .sec--dark b{ color:#fff; }

.sec__head{ max-width:56ch; margin-bottom:clamp(2.5rem,5vw,3.75rem); }
.sec__head h2{ margin-bottom:0; }
.sec__head--split{
  max-width:none; display:grid; grid-template-columns:1.15fr .85fr;
  gap:var(--gap); align-items:end;
}
.sec__note{ color:var(--muted); font-size:.97rem; line-height:1.6; margin:0; max-width:44ch; }
.sec--dark .sec__note{ color:rgba(255,255,255,.68); }
@media (max-width:820px){ .sec__head--split{ grid-template-columns:1fr; align-items:start; } }

.grid-2{ display:grid; grid-template-columns:1fr 1fr; gap:clamp(2rem,5vw,4.5rem); align-items:center; }
.grid-2--wide{ grid-template-columns:.9fr 1.1fr; align-items:start; }
.grid-2--form{ grid-template-columns:.85fr 1.15fr; align-items:start; }
@media (max-width:900px){ .grid-2, .grid-2--wide, .grid-2--form{ grid-template-columns:1fr; } }

/* sobre */
.sobre__pics{ display:grid; gap:var(--gap); }
.sobre__pics img{ width:100%; border-radius:var(--r-lg); box-shadow:var(--shadow); }
.sobre__pics img:first-child{ aspect-ratio:4/3; object-fit:cover; }
.sobre__pics img:last-child{ aspect-ratio:16/9; object-fit:cover; width:82%; margin-left:auto; margin-top:-18%; border:8px solid var(--cream); }
@media (max-width:900px){
  .sobre__pics img:last-child{ width:100%; margin:0; border:0; }
}

/* diferenciais — mobile-first: cada faixa e exclusiva, sem regras marcadas */
/* base: 1 coluna. Todo texto encostado na mesma margem. */
.feats{ list-style:none; margin:0; padding:0; display:grid; grid-template-columns:1fr; gap:0; border-top:1px solid var(--line); }
.feats li{ padding:1.4rem 0; border-bottom:1px solid var(--line); }
.feats svg{ width:30px; height:30px; color:var(--forest-3); fill:currentColor; stroke:none; margin-bottom:1rem; }
.feats li:nth-child(2) svg, .feats li:nth-child(3) svg, .feats li:nth-child(4) svg,
.feats li:nth-child(5) svg, .feats li:nth-child(6) svg{ fill:none; stroke:currentColor; }
.feats h3{ margin-bottom:.35rem; }
.feats p{ color:var(--muted); font-size:.94rem; line-height:1.55; margin:0; }

/* 2 colunas */
@media (min-width:561px) and (max-width:900px){
  .feats{ grid-template-columns:repeat(2,1fr); }
  .feats li{ padding:1.6rem 1.4rem; border-right:1px solid var(--line); }
  .feats li:nth-child(2n+1){ padding-left:0; }
  .feats li:nth-child(2n){ padding-right:0; border-right:0; }
}

/* 3 colunas */
@media (min-width:901px){
  .feats{ grid-template-columns:repeat(3,1fr); }
  .feats li{ padding:2.1rem 1.75rem; border-right:1px solid var(--line); }
  .feats li:nth-child(3n+1){ padding-left:0; }
  .feats li:nth-child(3n){ padding-right:0; border-right:0; }
}

/* =========================================================
   CARDS DE CHALÉ
   ========================================================= */
.chales{ display:grid; grid-template-columns:repeat(6,1fr); gap:var(--gap); }
.chale{
  grid-column:span 2; position:relative;
  display:flex; flex-direction:column;
  background:var(--surface); border:1px solid var(--line); border-radius:var(--r-lg);
  overflow:hidden;
  transition:transform .3s cubic-bezier(.2,.7,.3,1), box-shadow .3s, border-color .3s;
}
.chale:nth-child(4), .chale:nth-child(5){ grid-column:span 3; }
.chale:hover{ transform:translateY(-5px); box-shadow:var(--shadow-lg); border-color:var(--sand); }
.chale:focus-within{ box-shadow:var(--shadow-lg); border-color:var(--sand); }
.chale__ph{ position:relative; aspect-ratio:4/3; overflow:hidden; background:var(--sand); }
.chale:nth-child(4) .chale__ph, .chale:nth-child(5) .chale__ph{ aspect-ratio:16/9; }
.chale__ph img{ width:100%; height:100%; object-fit:cover; transition:transform .6s cubic-bezier(.2,.7,.3,1); }
.chale:hover .chale__ph img{ transform:scale(1.055); }
.chale__cap{
  position:absolute; left:.9rem; top:.9rem;
  background:rgba(9,26,20,.82); color:#fff; backdrop-filter:blur(6px);
  padding:.4rem .75rem; border-radius:999px;
  font-size:.76rem; font-weight:600; letter-spacing:.02em;
  display:inline-flex; align-items:center; gap:.4rem;
}
.chale__cap svg{ width:.95em; height:.95em; fill:none; stroke:currentColor; stroke-width:1.7; }
.chale__body{ padding:1.4rem 1.5rem 1.6rem; display:flex; flex-direction:column; flex:1; gap:.9rem; }
.chale__body h3{ font-family:var(--serif); font-size:1.5rem; font-weight:500; margin:0; letter-spacing:-.015em; }
.chale__body > p{ color:var(--muted); font-size:.93rem; line-height:1.55; margin:0; flex:1; }
.chale__am{ list-style:none; margin:0; padding:0; display:flex; flex-wrap:wrap; gap:.4rem; }
.chale__am li{
  display:inline-flex; align-items:center; gap:.38rem;
  background:var(--cream-2); border-radius:999px; padding:.34rem .68rem;
  font-size:.78rem; color:var(--forest); font-weight:500;
}
.chale__am svg{ width:.95em; height:.95em; fill:none; stroke:currentColor; stroke-width:1.7; }
.chale__more{
  align-self:flex-start;
  display:inline-flex; align-items:center; gap:.5rem;
  padding:0; border:0; background:none; cursor:pointer;
  font:600 .9rem/1.4 var(--sans); color:var(--terra);
  transition:gap .2s;
}
.chale__more svg{ width:1em; height:1em; fill:none; stroke:currentColor; stroke-width:1.9; }
/* torna o card inteiro clicável, mantendo um único alvo de foco */
.chale__more::after{ content:""; position:absolute; inset:0; border-radius:var(--r-lg); }
.chale:hover .chale__more{ gap:.85rem; }
.chale__more:focus-visible{ outline:none; }
.chale__more:focus-visible::after{ outline:2.5px solid var(--terra); outline-offset:3px; }

/* texto só para leitores de tela */
.vh{
  position:absolute !important; width:1px; height:1px; padding:0; margin:-1px;
  overflow:hidden; clip:rect(0,0,0,0); clip-path:inset(50%); white-space:nowrap; border:0;
}
@media (max-width:1000px){
  .chales{ grid-template-columns:repeat(2,1fr); }
  .chale, .chale:nth-child(4), .chale:nth-child(5){ grid-column:span 1; }
  .chale__ph, .chale:nth-child(4) .chale__ph, .chale:nth-child(5) .chale__ph{ aspect-ratio:4/3; }
}
@media (max-width:620px){ .chales{ grid-template-columns:1fr; } }

/* =========================================================
   ESTRUTURA / GOURMET
   ========================================================= */
.pic-stack{ display:grid; grid-template-columns:1fr 1fr; gap:var(--gap); }
.pic-stack img{ width:100%; height:100%; border-radius:var(--r); object-fit:cover; aspect-ratio:16/10; }
.pic-stack img:first-child{ grid-column:1 / -1; aspect-ratio:16/8; }

.ticks{ list-style:none; margin:1.6rem 0 0; padding:0; display:grid; gap:.7rem; }
.ticks li{ position:relative; padding-left:2rem; color:rgba(255,255,255,.8); font-size:.98rem; }
.ticks li::before{
  content:""; position:absolute; left:0; top:.45em;
  width:1.1rem; height:1.1rem; border-radius:50%;
  background:var(--terra) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23fff' stroke-width='3.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m4.5 12.5 5 5 10-11'/%3E%3C/svg%3E") center/.72rem no-repeat;
}

.band{ display:grid; grid-template-columns:repeat(auto-fit,minmax(min(100%,300px),1fr)); gap:var(--gap); margin-top:clamp(3rem,6vw,5rem); }
.band__item{ margin:0; }
.band__item img{ width:100%; aspect-ratio:3/2; object-fit:cover; border-radius:var(--r); }
.band__item figcaption{ display:flex; flex-direction:column; gap:.2rem; padding-top:1rem; }
.band__item b{ font-family:var(--serif); font-size:1.15rem; font-weight:500; }
.band__item span{ font-size:.88rem; color:rgba(255,255,255,.66); line-height:1.5; }
@media (max-width:820px){
  .band{ grid-template-columns:1fr; }
  .pic-stack{ grid-template-columns:1fr 1fr; }
}

/* =========================================================
   RAIL (animais)
   ========================================================= */
.rail{
  display:flex; gap:var(--gap); overflow-x:auto; padding:0 var(--pad) 1.25rem;
  scroll-snap-type:x mandatory; -webkit-overflow-scrolling:touch;
  scrollbar-width:thin; scrollbar-color:var(--sand) transparent;
}
.rail::-webkit-scrollbar{ height:6px; }
.rail::-webkit-scrollbar-thumb{ background:var(--sand); border-radius:99px; }
.rail figure{ margin:0; flex:0 0 clamp(230px, 30vw, 340px); scroll-snap-align:center; }
.rail img{ width:100%; aspect-ratio:4/5; object-fit:cover; border-radius:var(--r); box-shadow:var(--shadow); }
.rail figure:nth-child(even) img{ aspect-ratio:4/3; margin-top:clamp(1rem,3vw,2.5rem); }

/* =========================================================
   MOSAICO
   ========================================================= */
.mosaic{ display:grid; grid-template-columns:repeat(4,1fr); grid-auto-rows:clamp(130px, 15vw, 200px); gap:clamp(.6rem,1.2vw,1rem); }
.mosaic__it{
  padding:0; border:0; background:var(--sand); cursor:pointer; overflow:hidden;
  border-radius:var(--r); position:relative;
}
.mosaic__it img{ width:100%; height:100%; object-fit:cover; transition:transform .6s cubic-bezier(.2,.7,.3,1), filter .35s; }
.mosaic__it::after{
  content:""; position:absolute; inset:0; background:rgba(18,51,42,0);
  transition:background .3s;
}
.mosaic__it:hover img{ transform:scale(1.06); }
.mosaic__it:hover::after{ background:rgba(18,51,42,.14); }
.mosaic__it--big{ grid-column:span 2; grid-row:span 2; }
.mosaic__it--tall{ grid-row:span 2; }
.mosaic__it--wide{ grid-column:span 2; }
@media (max-width:820px){
  .mosaic{ grid-template-columns:repeat(2,1fr); grid-auto-rows:clamp(120px,26vw,190px); }
  .mosaic__it--big{ grid-column:span 2; grid-row:span 1; }
  .mosaic__it--tall{ grid-row:span 1; }
  .mosaic__it--wide{ grid-column:span 2; }
}

/* =========================================================
   LOCALIZAÇÃO
   ========================================================= */
.dists{ list-style:none; margin:1.75rem 0; padding:0; display:flex; flex-wrap:wrap; gap:2.5rem; }
.dists li{ display:flex; flex-direction:column; gap:.15rem; }
.dists b{ font-family:var(--serif); font-size:2.35rem; font-weight:500; line-height:1; color:var(--forest); }
.dists span{ font-size:.87rem; color:var(--muted); max-width:22ch; line-height:1.45; }

.addr{
  display:flex; gap:.85rem; align-items:flex-start; font-style:normal;
  background:var(--surface); border:1px solid var(--line); border-radius:var(--r);
  padding:1.15rem 1.35rem; margin:1.75rem 0; line-height:1.55;
}
.addr svg{ width:22px; height:22px; flex:0 0 22px; margin-top:.15rem; fill:none; stroke:var(--terra); stroke-width:1.7; }

.rota{ margin:2.25rem 0 0; }
.rota img{ width:100%; border-radius:var(--r); border:1px solid var(--line); }
.rota figcaption{ font-size:.85rem; color:var(--muted); padding-top:.7rem; }

.map{ position:sticky; top:6rem; border-radius:var(--r-lg); overflow:hidden; box-shadow:var(--shadow); border:1px solid var(--line); }
.map iframe{ width:100%; height:clamp(420px, 62vh, 680px); border:0; filter:saturate(.9); }
@media (max-width:900px){ .map{ position:static; } .map iframe{ height:380px; } }

/* =========================================================
   FORMULÁRIO
   ========================================================= */
.contatos{ list-style:none; margin:2rem 0 0; padding:0; display:grid; gap:.6rem; }
.contatos a{
  display:flex; align-items:center; gap:.95rem; text-decoration:none;
  background:rgba(255,255,255,.05); border:1px solid rgba(255,255,255,.12);
  border-radius:var(--r); padding:.9rem 1.1rem;
  transition:background .22s, border-color .22s, transform .22s;
}
.contatos a:hover{ background:rgba(255,255,255,.1); border-color:rgba(255,255,255,.28); transform:translateX(3px); }
.contatos svg{ width:21px; height:21px; flex:0 0 21px; fill:#D9A87E; stroke:#D9A87E; stroke-width:0; }
.contatos li:nth-child(2) svg, .contatos li:nth-child(3) svg{ fill:none; stroke-width:1.6; }
.contatos span{ display:flex; flex-direction:column; line-height:1.3; min-width:0; }
.contatos b{ font-size:.98rem; font-weight:600; overflow-wrap:break-word; }
.contatos small{ font-size:.76rem; color:rgba(255,255,255,.62); }

.socials{ display:flex; gap:.6rem; margin-top:1.5rem; }
.socials a{
  width:44px; height:44px; display:grid; place-items:center; color:#fff;
  border:1px solid rgba(255,255,255,.2); border-radius:50%;
  transition:background .22s, border-color .22s, transform .22s;
}
.socials a:hover{ background:rgba(255,255,255,.12); border-color:rgba(255,255,255,.4); transform:translateY(-2px); }
.socials svg{ width:19px; height:19px; fill:#fff; stroke:#fff; stroke-width:0; }
.socials a:first-child svg{ fill:none; stroke-width:1.7; }

.form{
  background:rgba(255,255,255,.05); border:1px solid rgba(255,255,255,.13);
  border-radius:var(--r-lg); padding:clamp(1.5rem,3.5vw,2.5rem);
  display:grid; gap:1.1rem;
}
.f-row{ display:grid; grid-template-columns:1fr 1fr; gap:1.1rem; }
@media (max-width:520px){ .f-row{ grid-template-columns:1fr; } }

.field{ display:flex; flex-direction:column; gap:.45rem; min-width:0; }
.field > span{ font-size:.8rem; font-weight:600; letter-spacing:.04em; text-transform:uppercase; color:rgba(255,255,255,.72); }
.field > span small{ text-transform:none; letter-spacing:0; font-weight:400; opacity:.7; }
.field input, .field select, .field textarea{
  width:100%; font:inherit; font-size:.98rem; color:#fff;
  background:rgba(255,255,255,.07); border:1.5px solid rgba(255,255,255,.16);
  border-radius:var(--r-sm); padding:.8rem .95rem;
  transition:border-color .2s, background .2s;
}
.field textarea{ resize:vertical; min-height:5.5rem; }
.field input::placeholder, .field textarea::placeholder{ color:rgba(255,255,255,.38); }
.field input:hover, .field select:hover, .field textarea:hover{ border-color:rgba(255,255,255,.3); }
/* anel de foco visivel: box-shadow nao desloca layout e respeita o raio */
.field input:focus-visible, .field select:focus-visible, .field textarea:focus-visible{
  outline:none;
  border-color:#E0A87E;
  background:rgba(255,255,255,.13);
  box-shadow:0 0 0 3px rgba(224,168,126,.45);
}
.field--check input:focus-visible{ outline:2.5px solid #E0A87E; outline-offset:2px; }
/* mouse: so realce suave, sem anel */
.field input:focus:not(:focus-visible),
.field select:focus:not(:focus-visible),
.field textarea:focus:not(:focus-visible){
  outline:none; border-color:rgba(255,255,255,.4); background:rgba(255,255,255,.11);
}
.field select{ appearance:none; cursor:pointer;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23ffffff' stroke-width='2' stroke-linecap='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");
  background-repeat:no-repeat; background-position:right .8rem center; background-size:1.05rem;
  padding-right:2.5rem;
}
.field select option{ background:var(--forest); color:#fff; }
.field input[aria-invalid="true"]{ border-color:#E4785C; }

.f-hint{ margin:-.55rem 0 0; font-size:.8rem; line-height:1.5; color:rgba(255,255,255,.58); }

/* checkbox do pet: o input nativo vem com margem propria do navegador
   (3px 3px 3px 4px no Chrome); sem zerar, ele nao para no centro do texto */
.field--check{ flex-direction:row; align-items:center; gap:.7rem; cursor:pointer; min-height:44px; }
.field--check input{
  width:1.3rem; height:1.3rem; flex:0 0 1.3rem; margin:0; padding:0;
  accent-color:var(--terra); cursor:pointer;
}
.field--check span{
  font-size:.95rem; line-height:1.3; color:rgba(255,255,255,.8);
  text-transform:none; letter-spacing:0; font-weight:400;
}

.form__note{ font-size:.82rem; color:rgba(255,255,255,.62); margin:0; line-height:1.5; text-align:center; }
.form__note.is-err{ color:#F0A48C; }
.form__note a{ color:#fff; text-decoration:underline; text-underline-offset:.18em; }

/* =========================================================
   CALENDÁRIO DE DISPONIBILIDADE
   Leitura do Airbnb, acabamento do site: dia sem caixa, faixa
   contínua ligando a estadia e bolinha sólida nas pontas.
   ========================================================= */
.cal{
  background:rgba(255,255,255,.05); border:1px solid rgba(255,255,255,.14);
  border-radius:var(--r); padding:1.35rem 1.4rem 1.2rem;
}
.cal[hidden]{ display:none; }

.cal__topo{ display:flex; align-items:center; justify-content:space-between; gap:1rem; margin-bottom:1.1rem; }
.cal__titulo{
  margin:0; font-family:var(--sans); font-size:.78rem; font-weight:600;
  letter-spacing:.05em; text-transform:uppercase; color:rgba(255,255,255,.72);
}
.cal__nav{ display:flex; gap:.45rem; }
.cal__seta{
  width:38px; height:38px; border-radius:50%; cursor:pointer;
  background:transparent; border:1px solid rgba(255,255,255,.22); color:#fff;
  display:grid; place-items:center; transition:background .2s, border-color .2s, opacity .2s;
}
.cal__seta svg{ width:15px; height:15px; fill:none; stroke:currentColor; stroke-width:2; }
.cal__seta:first-child svg{ transform:rotate(180deg); }
.cal__seta:hover:not(:disabled){ background:rgba(255,255,255,.14); border-color:rgba(255,255,255,.45); }
.cal__seta:disabled{ opacity:.25; cursor:default; }

.cal__meses{ display:grid; grid-template-columns:1fr; gap:1.75rem; }
@media (min-width:700px){ .cal__meses{ grid-template-columns:1fr 1fr; gap:2.25rem; } }

.cal__mes{ width:100%; border-collapse:collapse; table-layout:fixed; }
.cal__mes caption{
  font-family:var(--serif); font-size:1.1rem; font-weight:500; color:#fff;
  text-align:center; padding-bottom:.9rem; letter-spacing:-.01em;
}
.cal__mes th{
  font-size:.66rem; font-weight:600; letter-spacing:.08em;
  color:rgba(255,255,255,.4); padding-bottom:.55rem;
}
.cal__mes th abbr{ text-decoration:none; border:0; cursor:default; }

/* sem espaço entre células: é o que deixa a faixa contínua */
.cal__cel{ padding:0; text-align:center; position:relative; }
.cal__cel--vazio{ background:none !important; }

/* faixa da estadia, com as pontas arredondadas nas extremidades */
.cal__cel.is-faixa{ background:rgba(224,168,126,.16); }
.cal__cel.is-faixa-ini{ background:linear-gradient(to right, transparent 50%, rgba(224,168,126,.16) 50%); }
.cal__cel.is-faixa-fim{ background:linear-gradient(to right, rgba(224,168,126,.16) 50%, transparent 50%); }
/* quando a estadia quebra de linha, a faixa nao pode terminar em quina viva */
.cal__cel.is-faixa:first-child, .cal__cel.is-faixa-fim:first-child{ border-radius:999px 0 0 999px; }
.cal__cel.is-faixa:last-child,  .cal__cel.is-faixa-ini:last-child{ border-radius:0 999px 999px 0; }

.cal__dia{
  position:relative; width:100%; aspect-ratio:1; min-height:42px;
  padding:0; border:0; background:none; border-radius:50%;
  display:grid; place-items:center;
  font:500 .9rem/1 var(--sans); color:rgba(255,255,255,.92);
  cursor:pointer; transition:background .16s, color .16s, box-shadow .16s;
}
button.cal__dia:hover{ box-shadow:inset 0 0 0 1.5px rgba(255,255,255,.55); }

/* pontas da estadia: círculo sólido, como no Airbnb */
.cal__dia.is-ponta{ background:#E0A87E; color:#2A1608; font-weight:700; }
.cal__dia.is-ponta:hover{ box-shadow:none; }
/* ponta ainda provisória (prévia do mouse) fica vazada */
.cal__dia.is-ponta.is-previa{
  background:transparent; color:#fff; box-shadow:inset 0 0 0 2px #E0A87E;
}

/* ocupado NÃO pode ser só cor: leva traço, e o estado vai no aria-label */
.cal__dia.is-ocupado{
  color:rgba(255,255,255,.26); cursor:not-allowed;
  text-decoration:line-through; text-decoration-thickness:1.5px;
}
.cal__dia.is-passado{ color:rgba(255,255,255,.16); cursor:default; }

/* escolhendo a saída: o que passa da próxima reserva apaga */
.cal__dia.is-inalcancavel{ color:rgba(255,255,255,.3); }

.cal__dia:focus-visible{ outline:2.5px solid #E0A87E; outline-offset:-2px; }

.cal__legenda{ display:flex; flex-wrap:wrap; gap:.5rem 1.2rem; margin:1.35rem 0 0; }
.cal__chip{ display:inline-flex; align-items:center; gap:.45rem; font-size:.78rem; color:rgba(255,255,255,.62); }
.cal__chip::before{ content:""; width:14px; height:14px; border-radius:50%; flex:none; }
.cal__chip--livre::before{ box-shadow:inset 0 0 0 1.5px rgba(255,255,255,.45); }
.cal__chip--ocupado::before{
  background-image:linear-gradient(to bottom right, transparent 44%, rgba(255,255,255,.45) 44%, rgba(255,255,255,.45) 56%, transparent 56%);
}
.cal__chip--sel::before{ background:#E0A87E; }

.cal__aviso{ margin:.85rem 0 0; font-size:.85rem; line-height:1.5; color:rgba(255,255,255,.72); }

@media (max-width:420px){
  .cal{ padding-inline:.7rem; }
  .cal__dia{ min-height:40px; font-size:.85rem; }
}

/* =========================================================
   RODAPÉ
   ========================================================= */
.foot{ background:#0D2620; color:rgba(255,255,255,.62); padding-top:clamp(3.5rem,7vw,5.5rem); }
.foot__in{
  display:grid; grid-template-columns:1.5fr 1fr 1.2fr;
  gap:clamp(2rem,4vw,3.5rem); align-items:start;
  padding-bottom:clamp(2.5rem,5vw,3.5rem);
}
.foot h3{ font-size:.76rem; letter-spacing:.18em; text-transform:uppercase; color:#D9A87E; margin:0 0 1.1rem; }
/* as outras colunas comecam com um rotulo; este recuo poe as tres na mesma linha */
.foot__brand{ display:flex; gap:1.1rem; align-items:flex-start; padding-top:.15rem; }
.foot__brand img{ width:56px; height:56px; object-fit:contain; }
.foot__brand p{ margin:0; line-height:1.65; font-size:.92rem; }
/* bloco com entrelinha propria: sem isso o nome cai ~13px abaixo dos
   rotulos das outras colunas e as tres ficam escalonadas */
.foot__brand b{ display:block; font-family:var(--serif); font-size:1.28rem; font-weight:600;
  color:#fff; line-height:1.15; margin-bottom:.35rem; }
.foot__nav, .foot__ct{ display:flex; flex-direction:column; align-items:flex-start; gap:0; }
/* '>' de proposito: os links das redes sao netos (ficam dentro de .socials)
   e nao podem herdar este inline-flex, que tirava o icone do centro do circulo */
.foot__nav > a, .foot__ct > a{ display:inline-flex; align-items:center; min-height:34px; }
/* no toque a area cresce; no mouse fica compacto */
@media (max-width:940px){ .foot__nav > a, .foot__ct > a{ min-height:44px; } }
.foot a{ text-decoration:none; font-size:.92rem; transition:color .2s; }
.foot__nav a:hover, .foot__ct a:hover{ color:#fff; }
.socials--sm{ margin-top:.9rem; }
.socials--sm a{ width:38px; height:38px; }
.socials--sm svg{ width:16px; height:16px; }
.foot__bar{
  display:flex; flex-wrap:wrap; justify-content:space-between; align-items:center; gap:.6rem;
  border-top:1px solid rgba(255,255,255,.1); padding:1.5rem 0; font-size:.82rem;
}
/* o botao flutuante do WhatsApp fica na quina: libera espaco para ele */
.foot__bar > :last-child{ padding-right:clamp(0px, 4.5rem, 5rem); }
@media (max-width:640px){
  /* no celular o botao flutuante fica exatamente sobre estas linhas:
     o respiro extra embaixo tira o texto de debaixo dele */
  .foot__bar{ justify-content:flex-start; padding-bottom:5.5rem; }
  .foot__bar > :last-child{ padding-right:0; }
}
.foot__bar p{ margin:0; }
@media (max-width:820px){ .foot__in{ grid-template-columns:1fr; gap:2.5rem; } }

/* =========================================================
   WHATSAPP FLUTUANTE
   ========================================================= */
.wa-float{
  position:fixed; right:clamp(1rem,3vw,1.75rem); bottom:clamp(1rem,3vw,1.75rem); z-index:80;
  width:58px; height:58px; border-radius:50%;
  background:var(--wa); color:#08351B;
  display:grid; place-items:center;
  box-shadow:0 8px 26px -6px rgba(37,211,102,.6);
  opacity:0; visibility:hidden; transform:translateY(14px) scale(.9);
  transition:opacity .3s, transform .3s, visibility .3s, box-shadow .25s;
}
.wa-float.is-on{ opacity:1; visibility:visible; transform:none; }
.wa-float:hover{ box-shadow:0 12px 32px -6px rgba(37,211,102,.75); transform:translateY(-3px); }
.wa-float svg{ width:30px; height:30px; fill:currentColor; }

/* =========================================================
   MODAL
   ========================================================= */
.modal{ position:fixed; inset:0; z-index:100; display:grid; place-items:center; padding:clamp(.5rem,3vw,2rem); }
.modal[hidden]{ display:none; }
.modal__bg{ position:absolute; inset:0; background:rgba(9,22,18,.72); backdrop-filter:blur(6px); -webkit-backdrop-filter:blur(6px); animation:fade .3s; }
.modal__box{
  position:relative; width:min(100%, 1040px); max-height:calc(100svh - clamp(1rem,6vw,4rem));
  background:var(--cream); border-radius:var(--r-lg); overflow:hidden;
  box-shadow:var(--shadow-lg); display:flex; flex-direction:column;
  animation:pop .34s cubic-bezier(.2,.8,.3,1);
}
.modal__x{
  position:absolute; right:.85rem; top:.85rem; z-index:3;
  width:42px; height:42px; border-radius:50%; cursor:pointer;
  background:rgba(9,26,20,.6); border:1px solid rgba(255,255,255,.22); color:#fff;
  display:grid; place-items:center; backdrop-filter:blur(6px);
  transition:background .2s, transform .2s;
}
.modal__x:hover{ background:rgba(9,26,20,.85); transform:rotate(90deg); }
.modal__x svg{ width:18px; height:18px; fill:none; stroke:currentColor; stroke-width:1.9; }
.modal__body{ overflow-y:auto; overscroll-behavior:contain; }

@keyframes fade{ from{ opacity:0; } }
@keyframes pop{ from{ opacity:0; transform:translateY(16px) scale(.97); } }
@media (prefers-reduced-motion:reduce){
  .modal__bg, .modal__box{ animation:none; }
}

/* conteúdo do modal */
.md__hero{ position:relative; aspect-ratio:16/9; background:var(--sand); }
.md__hero img{ width:100%; height:100%; object-fit:cover; }
.md__hero button{ position:absolute; inset:0; width:100%; height:100%; padding:0; border:0; background:none; cursor:zoom-in; }
.md__hero-tag{
  position:absolute; left:1.1rem; bottom:1.1rem;
  background:rgba(9,26,20,.72); color:#fff; backdrop-filter:blur(6px);
  padding:.45rem .85rem; border-radius:999px; font-size:.8rem; font-weight:600;
  display:inline-flex; align-items:center; gap:.45rem; pointer-events:none;
}
.md__hero-tag svg{ width:1em; height:1em; fill:none; stroke:currentColor; stroke-width:1.7; }

.md__in{ padding:clamp(1.5rem,3.5vw,2.5rem); }
.md__in h2{ font-size:clamp(1.8rem,3.6vw,2.6rem); margin-bottom:.3em; }
.md__desc{ font-size:1.03rem; line-height:1.65; color:var(--ink); max-width:66ch; }

.md__thumbs{ display:grid; grid-template-columns:repeat(auto-fill, minmax(112px,1fr)); gap:.55rem; margin-top:1.5rem; }
.md__thumbs button{ padding:0; border:0; border-radius:var(--r-sm); overflow:hidden; cursor:zoom-in; background:var(--sand); aspect-ratio:4/3; }
.md__thumbs img{ width:100%; height:100%; object-fit:cover; transition:transform .4s, opacity .25s; }
.md__thumbs button:hover img{ transform:scale(1.07); opacity:.88; }

.md__h4{ font-size:.76rem; font-weight:700; letter-spacing:.16em; text-transform:uppercase; color:var(--muted); margin:2rem 0 .9rem; }
.md__am{ list-style:none; margin:0; padding:0; display:grid; grid-template-columns:repeat(auto-fill, minmax(180px,1fr)); gap:.55rem 1rem; }
.md__am li{ display:flex; align-items:center; gap:.6rem; font-size:.93rem; }
.md__am svg{ width:19px; height:19px; flex:0 0 19px; color:var(--forest-3); fill:none; stroke:currentColor; stroke-width:1.6; }

.md__foot{
  display:flex; flex-wrap:wrap; gap:1rem; align-items:center; justify-content:space-between;
  margin-top:2.25rem; padding-top:1.6rem; border-top:1px solid var(--line);
}
.md__foot p{ margin:0; font-size:.87rem; color:var(--muted); max-width:38ch; }

/* =========================================================
   LIGHTBOX
   ========================================================= */
.lb{
  position:fixed; inset:0; z-index:120;
  display:grid; grid-template-columns:auto 1fr auto; align-items:center; gap:clamp(.5rem,2vw,1.5rem);
  padding:clamp(1rem,4vw,3rem); background:rgba(6,16,13,.95);
  animation:fade .25s;
}
.lb[hidden]{ display:none; }
.lb__fig{ margin:0; display:flex; flex-direction:column; align-items:center; gap:1rem; min-width:0; }
.lb__fig img{
  max-width:100%; max-height:calc(100svh - clamp(7rem,16vw,11rem));
  width:auto; object-fit:contain; border-radius:var(--r-sm);
  box-shadow:0 30px 80px -30px rgba(0,0,0,.9);
}
.lb__fig figcaption{ color:rgba(255,255,255,.62); font-size:.86rem; text-align:center; max-width:60ch; }
.lb__nav, .lb__x{
  width:48px; height:48px; border-radius:50%; cursor:pointer;
  background:rgba(255,255,255,.1); border:1px solid rgba(255,255,255,.2); color:#fff;
  display:grid; place-items:center; transition:background .2s, transform .2s;
}
.lb__nav svg, .lb__x svg{ width:20px; height:20px; fill:none; stroke:currentColor; stroke-width:1.9; }
.lb__nav:hover, .lb__x:hover{ background:rgba(255,255,255,.22); }
.lb__nav--prev svg{ transform:rotate(180deg); }
.lb__x{ position:absolute; right:clamp(1rem,4vw,2rem); top:clamp(1rem,4vw,2rem); z-index:2; }
@media (max-width:640px){
  .lb{ grid-template-columns:1fr; grid-template-rows:1fr auto; }
  .lb__fig{ grid-row:1; }
  .lb__nav{ grid-row:2; }
  .lb__nav--prev{ justify-self:start; }
  .lb__nav--next{ justify-self:end; grid-column:1; grid-row:2; }
}

/* =========================================================
   PÁGINA 404
   ========================================================= */
/* nav sem JS aqui: já nasce sólida sobre a foto escura */
.nav--solid{ background:rgba(9,26,20,.55); backdrop-filter:blur(10px); -webkit-backdrop-filter:blur(10px); }
.nav--solid .nav__in{ justify-content:space-between; }

.err{
  position:relative; isolation:isolate; color:#fff;
  min-height:100svh; display:grid; align-content:center;
  padding:7.5rem 0 clamp(3rem,8vw,5rem);
}
.err__bg{ position:absolute; inset:0; width:100%; height:100%; object-fit:cover; z-index:-2; }
.err__scrim{
  position:absolute; inset:0; z-index:-1;
  background:
    linear-gradient(180deg, rgba(9,26,20,.86) 0%, rgba(9,26,20,.7) 45%, rgba(9,26,20,.92) 100%),
    linear-gradient(90deg, rgba(9,26,20,.7) 0%, rgba(9,26,20,.15) 75%);
}
.err__in{ max-width:62ch; }
.err__code{
  font-family:var(--serif); font-weight:300; font-style:italic;
  font-size:clamp(4.5rem,15vw,10rem); line-height:.8;
  color:transparent; -webkit-text-stroke:1.5px rgba(255,255,255,.42);
  margin:0 0 .18em; letter-spacing:-.02em;
}
.err h1{ margin-bottom:.42em; text-shadow:0 2px 30px rgba(0,0,0,.4); }
.err__lead{
  font-size:clamp(1.05rem,1rem + .45vw,1.28rem); line-height:1.55;
  color:rgba(255,255,255,.85); max-width:48ch; margin-bottom:2rem;
}

.err__hint{
  display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; gap:1rem;
  background:rgba(255,255,255,.08); border:1px solid rgba(255,255,255,.18);
  border-radius:var(--r); padding:1.1rem 1.35rem; margin-bottom:2rem;
}
.err__hint[hidden]{ display:none; }
.err__hint p{ margin:0; font-size:.97rem; color:rgba(255,255,255,.88); }

.err__cta{ display:flex; flex-wrap:wrap; gap:.85rem; }

.err__links{
  display:flex; flex-wrap:wrap; gap:.35rem 1.5rem;
  margin-top:2.75rem; padding-top:1.75rem;
  border-top:1px solid rgba(255,255,255,.16);
}
.err__links a{
  font-size:.92rem; color:rgba(255,255,255,.7); text-decoration:none;
  padding-bottom:.15rem; border-bottom:1px solid transparent; transition:color .2s, border-color .2s;
}
.err__links a:hover{ color:#fff; border-color:rgba(255,255,255,.5); }

.err__foot{
  display:flex; align-items:flex-start; gap:.6rem;
  margin-top:1.75rem; font-size:.87rem; line-height:1.6; color:rgba(255,255,255,.55);
}
.err__foot svg{ width:17px; height:17px; flex:0 0 17px; margin-top:.2rem; fill:none; stroke:#D9A87E; stroke-width:1.7; }
.err__foot a{ color:#fff; text-decoration:underline; text-underline-offset:.18em; }

/* =========================================================
   REVEAL
   ========================================================= */
.reveal{ opacity:0; transform:translateY(22px); transition:opacity .75s cubic-bezier(.2,.7,.3,1), transform .75s cubic-bezier(.2,.7,.3,1); }
.reveal.is-in{ opacity:1; transform:none; }

/* fallback sem JavaScript para as acomodações */
.chales-ns{ list-style:none; margin:0; padding:0; display:grid; gap:.6rem; grid-template-columns:repeat(auto-fit,minmax(260px,1fr)); }
.chales-ns li{ background:var(--surface); border:1px solid var(--line); border-radius:var(--r); padding:1rem 1.2rem; }
.chales-ns b{ font-family:var(--serif); font-size:1.2rem; font-weight:500; display:block; }
.chales-ns__p{ margin-top:1.2rem; color:var(--muted); font-size:.95rem; }
@media (prefers-reduced-motion:reduce){
  .reveal{ opacity:1 !important; transform:none !important; transition:none; }
  *,*::before,*::after{ animation-duration:.01ms !important; transition-duration:.01ms !important; }
}

/* =========================================================
   IMPRESSÃO
   ========================================================= */
@media print{
  .nav, .wa-float, .map, .modal, .lb, .hero__cta{ display:none !important; }
  .reveal{ transition:none !important; }
  body{ background:#fff; color:#000; }
  .sec--dark{ background:#fff; color:#000; }
  .reveal{ opacity:1; transform:none; }
}
