/* ==========================================================================
   JO CINTRA TAILOR MADE TOURS® — Av. Rio Branco, 691, Centro, Florianópolis/SC
   Jo Cintra Viagens e Turismo · desde 2013
   --------------------------------------------------------------------------
   SPEC MOCKUP — lead not signed.

   ⚠ THIS IS THE STRONGEST EXISTING SITE IN THE BATCH: a modern Next.js build
   with real hreflang, a curated destination taxonomy and copy that is
   genuinely well written rather than templated. Nothing here is a rescue, and
   the design must not pretend otherwise. The job is to demonstrate one
   strategic gap — three revenue lines with no page — not to prove they need a
   website.

   The yacht-charter reference supplies MECHANICS ONLY, and four are taken:
   the alternating light/deep band rhythm, the floating stat strip pinned to
   the hero's lower edge, the three-up experience triptych, and the mega
   footer. Three of its moves are rejected outright:
     · the search widget — a tailor-made agency has no "search results" state,
       and faking one misrepresents the product. It becomes a consultation
       intake instead.
     · every "From $X/Day" chip — they publish no prices and should not.
       Bespoke pricing IS the positioning. There is no .price class in this file.
     · its eco-green marketplace mood — inverted for their own wine-and-bone
       scheme, with markedly more editorial typography: a high-contrast serif
       display against a quiet grotesque, generous leading, wide margins.

   COLOUR is extracted from their live stylesheet. Wine #5A202D is genuinely
   ownable in a category drowning in navy and gold, so it leads. Brass is
   restricted to hairlines and rules and is kept under 5% of any viewport: the
   moment brass becomes a fill, the brand reads generic-luxury.

   CONTRAST (computed, WCAG 2.1 AA) — a low-contrast wine-on-bone editorial
   palette is exactly where luxury sites fail this, so every pair is checked:
     ink   #241419 on paper #F1F0E8 -> 15.4:1  OK  body
     ink   #241419 on bone  #E4E2D5 -> 14.1:1  OK
     wine  #5A202D on paper #F1F0E8 ->  9.6:1  OK  headings and links
     wine  #5A202D on bone  #E4E2D5 ->  8.8:1  OK
     brass #B08D57 on paper #F1F0E8 ->  2.4:1  NO — NON-TEXT DECORATION ONLY.
       Enforced below: brass appears only in borders, rules and gradients, and
       never as a color on a text node.
     paper #F1F0E8 on wine  #5A202D ->  9.6:1  OK  reversed body
     brass #B08D57 on wine  #5A202D ->  4.0:1  — large display only, >=24px
   ========================================================================== */

:root{
  --wine:#5A202D;
  --wine-dk:#3A1420;
  --ink:#241419;
  --bone:#E4E2D5;
  --paper:#F1F0E8;
  --cream:#FBFAF6;
  --brass:#B08D57;
  --wa:#25A55B;
  --wa-dk:#1B7E44;
  --muted:#6A5A5E;
  --line:rgba(36,20,25,.15);
  --line-2:rgba(36,20,25,.07);

  --g-scrim:linear-gradient(0deg,rgba(36,20,25,.82) 0%,rgba(36,20,25,.32) 38%,rgba(36,20,25,0) 62%);
  --g-deep:linear-gradient(160deg,var(--wine) 0%,var(--wine-dk) 100%);
  --g-brass:linear-gradient(90deg,var(--brass),var(--bone));
  --g-footer:linear-gradient(180deg,var(--wine-dk) 0%,var(--ink) 100%);

  --display:"Cormorant Garamond",Georgia,"Times New Roman",serif;
  --sans:"Inter","Helvetica Neue",Arial,sans-serif;
  --mono:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;

  --wrap:1240px;
}

*,*::before,*::after{box-sizing:border-box}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}
body{
  margin:0;background:var(--paper);color:var(--ink);
  font:400 clamp(1rem,.97rem + .18vw,1.08rem)/1.8 var(--sans);
  overflow-x:hidden;
}
img{max-width:100%;display:block;height:auto}
a{color:var(--wine);text-underline-offset:4px}
a:hover{color:var(--wine-dk)}
h1,h2,h3,h4{font-family:var(--display);font-weight:500;line-height:1.1;letter-spacing:-.005em;margin:0;color:var(--wine)}
p{margin:0 0 1.1em}
:focus-visible{outline:2px solid var(--wine);outline-offset:4px}
.on-wine :focus-visible{outline-color:var(--bone)}

/* generous margins — a magazine feel, not a marketplace one */
.wrap{width:min(100% - 64px,var(--wrap));margin-inline:auto}
@media(max-width:900px){.wrap{width:min(100% - 40px,var(--wrap))}}
@media(max-width:640px){.wrap{width:min(100% - 28px,var(--wrap))}}
.skip{position:absolute;left:-9999px;top:0;z-index:200;background:var(--wine);color:#fff;padding:12px 18px}
.skip:focus{left:8px;top:8px}
.sr{position:absolute;width:1px;height:1px;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}

/* ---------- type ---------------------------------------------------------- */
.h1{font-size:clamp(2.8rem,1.7rem + 4.8vw,5.6rem);font-weight:400}
.h2{font-size:clamp(2rem,1.4rem + 2.6vw,3.4rem);font-weight:400}
.h3{font-size:clamp(1.24rem,1.1rem + .6vw,1.6rem)}
.lede{font-size:clamp(1.06rem,1rem + .32vw,1.24rem);max-width:62ch}
.eyebrow{
  font:600 .7rem/1.4 var(--sans);letter-spacing:.26em;text-transform:uppercase;
  color:var(--wine);margin:0 0 16px;
}
.on-wine .eyebrow{color:var(--bone)}
/* the single brass hairline under section headings — non-text decoration */
.sec-head h2::after{content:"";display:block;height:1px;width:150px;background:var(--g-brass);margin-top:22px}
.on-wine .sec-head h2::after{background:linear-gradient(90deg,var(--brass),transparent)}
.muted{color:var(--muted)}
.on-wine .muted{color:rgba(241,240,232,.72)}

.cfm{
  display:inline-block;font:600 .78rem/1.35 var(--mono);
  background:rgba(90,32,45,.09);color:var(--wine);
  border:1px dashed rgba(90,32,45,.45);border-radius:2px;padding:1px 7px;
}
.on-wine .cfm{background:rgba(228,226,213,.14);color:var(--bone);border-color:rgba(228,226,213,.5)}
.cfm-note{
  font-size:.9rem;line-height:1.65;color:var(--muted);
  border-left:2px solid var(--brass);background:rgba(176,141,87,.08);padding:14px 18px;margin:0;
}
.on-wine .cfm-note{color:rgba(241,240,232,.86);background:rgba(228,226,213,.08);border-left-color:var(--brass)}

.verbatim{
  font-family:var(--display);font-size:clamp(1.3rem,1.05rem + 1vw,2rem);line-height:1.34;
  color:var(--wine);border-left:2px solid var(--brass);padding-left:26px;margin:0 0 1.1em;max-width:50ch;
}
.on-wine .verbatim{color:var(--bone)}

/* ---------- buttons — quiet, editorial, no fills where a rule will do ---- */
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:12px;
  background:var(--wine);color:var(--paper);border:0;cursor:pointer;text-decoration:none;
  font:600 .78rem/1 var(--sans);letter-spacing:.18em;text-transform:uppercase;
  padding:18px 32px;border-radius:0;
  transition:background .24s,color .24s,transform .24s cubic-bezier(.2,.7,.3,1);
}
.btn:hover{background:var(--wine-dk);transform:translateY(-2px);color:var(--paper)}
.btn .ar{transition:transform .24s}
.btn:hover .ar{transform:translateX(5px)}
.btn--wa{background:var(--wa-dk);color:#fff}
.btn--wa:hover{background:#146336;color:#fff}
.btn--line{background:transparent;color:var(--wine);border:1px solid var(--wine)}
.btn--line:hover{background:var(--wine);color:var(--paper)}
.on-wine .btn--line{color:var(--bone);border-color:rgba(228,226,213,.55)}
.on-wine .btn--line:hover{background:var(--bone);color:var(--wine)}
.btn--sm{padding:12px 20px;font-size:.7rem}
.btn--full{width:100%}
.btn-row{display:flex;flex-wrap:wrap;gap:14px;margin-top:32px}

/* ---------- topbar + nav -------------------------------------------------- */
.top{background:var(--wine);color:rgba(241,240,232,.86);font-size:.8rem}
.top__in{display:flex;flex-wrap:wrap;gap:10px 22px;align-items:center;padding:10px 0}
.top a{color:rgba(241,240,232,.92);text-decoration:none}
.top a:hover{color:#fff;text-decoration:underline}
.top__r{margin-left:auto;display:flex;gap:16px;align-items:center}
/* the language switcher is promoted OUT of the footer and into the header —
   it is the first control an international referral partner looks for */
.langs{display:flex;gap:2px;align-items:center}
.langs a{
  font:600 .72rem/1 var(--sans);letter-spacing:.14em;padding:7px 9px;text-decoration:none;
  border-bottom:1px solid transparent;
}
.langs a.on{border-bottom-color:var(--brass);color:#fff}
@media(max-width:960px){.top .hide-sm{display:none}}

.hdr{
  position:sticky;top:0;z-index:80;background:rgba(241,240,232,.97);
  backdrop-filter:blur(10px);border-bottom:1px solid var(--line-2);transition:box-shadow .25s;
}
.hdr.is-stuck{box-shadow:0 4px 22px rgba(36,20,25,.08)}
.hdr__in{display:flex;align-items:center;gap:24px;padding:20px 0;transition:padding .25s}
.hdr.is-stuck .hdr__in{padding:11px 0}
.brand{
  font-family:var(--display);font-weight:500;font-size:1.5rem;line-height:1;color:var(--wine);
  text-decoration:none;flex:none;display:flex;flex-direction:column;gap:6px;letter-spacing:.02em;
}
.brand small{font:600 .54rem/1 var(--sans);letter-spacing:.3em;text-transform:uppercase;color:var(--muted);font-family:var(--sans)}
.brand sup{font-size:.42em;vertical-align:super}
.nav{display:flex;gap:20px;margin-left:auto;align-items:center}
.nav a{font:500 .84rem/1 var(--sans);color:var(--ink);text-decoration:none;padding:8px 0;position:relative;white-space:nowrap}
.nav a::after{content:"";position:absolute;left:0;right:100%;bottom:0;height:1px;background:var(--brass);transition:right .3s cubic-bezier(.2,.7,.3,1)}
.nav a:hover::after{right:0}
/* the two new products are marked in the nav itself — they have no page today */
.nav a.is-new::before{
  content:"";position:absolute;left:-9px;top:9px;width:4px;height:4px;border-radius:50%;background:var(--brass);
}
.hdr__r{display:flex;align-items:center;gap:12px;flex:none}
.burger{display:none;width:44px;height:40px;border:1px solid var(--line);background:transparent;cursor:pointer;padding:11px 10px;flex-direction:column;justify-content:space-between}
.burger span{display:block;height:1px;background:var(--wine);transition:transform .26s,opacity .2s}
.burger[aria-expanded="true"] span:nth-child(1){transform:translateY(8px) rotate(45deg)}
.burger[aria-expanded="true"] span:nth-child(2){opacity:0}
.burger[aria-expanded="true"] span:nth-child(3){transform:translateY(-8px) rotate(-45deg)}
.mnav{display:none;flex-direction:column;background:var(--cream);border-bottom:1px solid var(--line)}
.mnav a{padding:16px 24px;border-bottom:1px solid var(--line-2);text-decoration:none;color:var(--ink);font-weight:500}
.mnav.open{display:flex;animation:drop .3s cubic-bezier(.2,.7,.3,1)}
@keyframes drop{from{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:none}}
@media(max-width:1180px){.nav{display:none}.burger{display:flex}.hdr__r .btn--line{display:none}}

/* ---------- sections — the reference's alternating band rhythm ------------ */
.sec{padding:clamp(60px,7.5vw,124px) 0}
.sec--bone{background:var(--bone)}
.sec--cream{background:var(--cream)}
.sec--wine{background:var(--g-deep);color:rgba(241,240,232,.86)}
.sec--wine h1,.sec--wine h2,.sec--wine h3{color:var(--bone)}
.sec--ink{background:var(--ink);color:rgba(241,240,232,.84)}
.sec--ink h1,.sec--ink h2,.sec--ink h3{color:var(--bone)}
.sec-head{max-width:66ch;margin-bottom:clamp(34px,4vw,58px)}
.sec-head--row{display:flex;gap:32px;justify-content:space-between;align-items:flex-end;max-width:none;flex-wrap:wrap}

/* ---------- hero ---------------------------------------------------------- */
.hero{position:relative;isolation:isolate;background:var(--ink);overflow:hidden;
  min-height:min(84vh,740px);display:flex;align-items:flex-end;padding-bottom:clamp(70px,8vw,120px)}
.hero__img{position:absolute;inset:0;z-index:-2;width:100%;height:100%;object-fit:cover;will-change:transform}
.hero::after{content:"";position:absolute;inset:0;z-index:-1;background:var(--g-scrim)}
.hero__in{padding-top:clamp(70px,9vw,140px);color:var(--paper)}
.hero h1{color:var(--paper);max-width:15ch}
.hero .lede{color:rgba(241,240,232,.9);margin-top:20px}

/* ---------- floating credential strip ------------------------------------ */
.creds{
  background:var(--cream);border:1px solid var(--line-2);
  display:grid;grid-template-columns:repeat(4,1fr);
  margin-top:clamp(-56px,-5vw,-34px);position:relative;z-index:5;
}
.creds > div{padding:26px 24px;border-right:1px solid var(--line-2)}
.creds > div:last-child{border-right:0}
.creds b{display:block;font-family:var(--display);font-size:1.3rem;color:var(--wine);font-weight:500}
.creds span{display:block;margin-top:8px;font-size:.85rem;color:var(--muted);line-height:1.55}
@media(max-width:980px){
  .creds{grid-template-columns:1fr 1fr}
  .creds > div{border-bottom:1px solid var(--line-2)}
  .creds > div:nth-child(2n){border-right:0}
}
@media(max-width:520px){.creds{grid-template-columns:1fr}.creds > div{border-right:0}}

/* ---------- founder band — the conversion event of a personal brand ------ */
.founder{display:grid;grid-template-columns:.85fr 1.15fr;gap:clamp(30px,4.5vw,78px);align-items:center}
@media(max-width:900px){.founder{grid-template-columns:1fr}}
/* ⚠ NO STOCK FACE IS EVER PLACED UNDER A REAL PERSON'S NAME. The portrait
   frames on this site hold a labelled non-facial stand-in instead. */
.portrait{
  border:1px solid var(--brass);background:var(--cream);padding:14px;position:relative;
}
.portrait img{width:100%;aspect-ratio:4/5;object-fit:cover;filter:grayscale(.25) contrast(.96)}
.portrait__tag{
  position:absolute;left:14px;right:14px;bottom:14px;background:rgba(36,20,25,.86);color:var(--bone);
  font:600 .68rem/1.5 var(--sans);letter-spacing:.1em;text-transform:uppercase;padding:10px 12px;
}

/* ---------- three-pillar triptych ---------------------------------------- */
.pillars{display:grid;grid-template-columns:repeat(3,1fr);gap:0;border:1px solid rgba(228,226,213,.28)}
.pillars > div{padding:clamp(26px,3vw,44px);border-right:1px solid rgba(228,226,213,.28)}
.pillars > div:last-child{border-right:0}
.pillars .n{font-family:var(--display);font-size:2rem;color:var(--brass);display:block;margin-bottom:16px}
.pillars h3{font-size:1.4rem;margin-bottom:12px}
.pillars p{font-size:.95rem;margin:0;color:rgba(241,240,232,.82)}
@media(max-width:900px){
  .pillars{grid-template-columns:1fr}
  .pillars > div{border-right:0;border-bottom:1px solid rgba(228,226,213,.28)}
  .pillars > div:last-child{border-bottom:0}
}

/* ---------- destination + region cards ----------------------------------- */
.rail{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(260px,1fr);gap:18px;overflow-x:auto;scroll-snap-type:x mandatory;padding-bottom:10px}
.rail::-webkit-scrollbar{height:2px}
.rail::-webkit-scrollbar-thumb{background:var(--brass)}
.dest{scroll-snap-align:start;position:relative;overflow:hidden;text-decoration:none;color:inherit;display:block}
.dest img{width:100%;aspect-ratio:3/4;object-fit:cover;transition:transform .9s cubic-bezier(.2,.7,.3,1)}
.dest:hover img{transform:scale(1.05)}
.dest__b{
  position:absolute;inset:auto 0 0 0;padding:38px 20px 20px;color:var(--paper);
  background:linear-gradient(0deg,rgba(36,20,25,.9) 0%,rgba(36,20,25,0) 100%);
}
.dest__b .tag{font:600 .62rem/1 var(--sans);letter-spacing:.2em;text-transform:uppercase;color:var(--bone);display:block;margin-bottom:10px}
.dest__b h3{color:var(--paper);font-size:1.6rem}
.dest__b p{font-size:.86rem;margin:8px 0 0;color:rgba(241,240,232,.84)}
.dest__b .more{display:inline-block;margin-top:12px;font:600 .7rem/1 var(--sans);letter-spacing:.16em;text-transform:uppercase;color:var(--bone)}
.railnav{display:flex;gap:10px;margin-top:22px}
.railnav button{width:46px;height:46px;border:1px solid var(--wine);background:transparent;cursor:pointer;color:var(--wine);transition:background .2s,color .2s}
.railnav button:hover{background:var(--wine);color:var(--paper)}

.regions{display:grid;grid-template-columns:repeat(4,1fr);gap:18px}
@media(max-width:980px){.regions{grid-template-columns:1fr 1fr}}
@media(max-width:560px){.regions{grid-template-columns:1fr}}
.region{position:relative;overflow:hidden;text-decoration:none;color:inherit;display:block}
.region img{width:100%;aspect-ratio:3/4;object-fit:cover;transition:transform .9s cubic-bezier(.2,.7,.3,1)}
.region:hover img{transform:scale(1.05)}
.region__b{position:absolute;inset:0;padding:22px;display:flex;flex-direction:column;justify-content:flex-end;
  background:linear-gradient(0deg,rgba(36,20,25,.88) 0%,rgba(36,20,25,.1) 70%);color:var(--paper)}
.region__b h3{color:var(--paper);font-size:1.42rem;margin-bottom:12px}
.region__b ul{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:6px}
.region__b li{font:500 .68rem/1 var(--sans);letter-spacing:.06em;border:1px solid rgba(241,240,232,.4);padding:6px 9px;color:rgba(241,240,232,.9)}

/* ---------- consultation intake ------------------------------------------ */
.intake{background:var(--cream);border:1px solid var(--line)}
.intake__bar{display:flex;gap:0;border-bottom:1px solid var(--line-2)}
.intake__bar span{flex:1;height:3px;background:var(--line-2);transition:background .35s}
.intake__bar span.on{background:var(--wine)}
.step{padding:clamp(26px,3.4vw,48px)}
.step[hidden]{display:none}
.step h3{font-size:clamp(1.5rem,1.2rem + 1.2vw,2.2rem);margin-bottom:8px}
.step > p{color:var(--muted);margin-bottom:24px}
.opts{display:flex;flex-wrap:wrap;gap:10px}
.opt{
  display:inline-flex;align-items:center;gap:10px;border:1px solid var(--line);
  padding:14px 20px;cursor:pointer;background:#fff;font:500 .92rem/1 var(--sans);color:var(--ink);
  transition:background .2s,border-color .2s,color .2s;
}
.opt input{position:absolute;opacity:0;width:0;height:0}
.opt:hover{border-color:var(--brass)}
.opt:has(input:checked){background:var(--wine);color:var(--paper);border-color:var(--wine)}
/* the highest-value lead in this business is the person who does not yet know
   where they want to go — so that option is given its own weight */
.opt--help{border-style:dashed;border-color:var(--brass)}
.stepnav{display:flex;flex-wrap:wrap;gap:12px;justify-content:space-between;align-items:center;
  padding:20px clamp(26px,3.4vw,48px);border-top:1px solid var(--line-2);background:var(--bone)}
.stepnav .count{font:600 .72rem/1 var(--sans);letter-spacing:.16em;text-transform:uppercase;color:var(--muted)}

/* ---------- team ---------------------------------------------------------- */
.teamfilters{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:26px}
.teamfilters button{
  font:600 .74rem/1 var(--sans);letter-spacing:.14em;text-transform:uppercase;color:var(--wine);
  background:transparent;border:1px solid var(--line);padding:12px 18px;cursor:pointer;
  transition:background .2s,color .2s,border-color .2s;
}
.teamfilters button[aria-pressed="true"]{background:var(--wine);color:var(--paper);border-color:var(--wine)}
.team{display:grid;grid-template-columns:repeat(5,1fr);gap:16px}
@media(max-width:1000px){.team{grid-template-columns:repeat(3,1fr)}}
@media(max-width:560px){.team{grid-template-columns:1fr 1fr}}
.member{background:var(--cream);border:1px solid var(--line-2);padding:12px}
.member[hidden]{display:none}
.member .ph{
  aspect-ratio:1/1;background:var(--bone);border:1px dashed var(--brass);
  display:grid;place-items:center;text-align:center;padding:12px;
}
.member .ph span{font:600 .62rem/1.5 var(--sans);letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}
.member b{display:block;margin-top:12px;font-family:var(--display);font-size:1.1rem;color:var(--wine);font-weight:500}
.member em{display:block;margin-top:4px;font-style:normal;font-size:.78rem;color:var(--muted)}

/* ---------- credentials --------------------------------------------------- */
.creditems{display:grid;grid-template-columns:repeat(2,1fr);gap:18px}
@media(max-width:760px){.creditems{grid-template-columns:1fr}}
.credit{
  border:1px solid var(--brass);background:var(--cream);padding:28px 26px;
}
.credit b{display:block;font-family:var(--display);font-size:1.5rem;color:var(--wine);font-weight:500;margin-bottom:10px}
.credit p{font-size:.92rem;color:var(--muted);margin:0 0 14px}

/* ---------- testimonials -------------------------------------------------- */
.quotes{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}
@media(max-width:900px){.quotes{grid-template-columns:1fr}}
.quote{
  background:var(--cream);border:1px solid var(--line-2);padding:34px 30px;position:relative;
}
.quote::before{
  content:"\201C";position:absolute;left:22px;top:2px;font-family:var(--display);
  font-size:5rem;line-height:1;color:var(--brass);opacity:.35;
}
.quote p{position:relative;font-family:var(--display);font-size:1.15rem;line-height:1.5;color:var(--ink);margin:0 0 18px}
.quote .who{font:600 .72rem/1.5 var(--sans);letter-spacing:.14em;text-transform:uppercase;color:var(--muted)}

/* ---------- split / figures ---------------------------------------------- */
.split{display:grid;grid-template-columns:1fr 1fr;gap:clamp(30px,4.5vw,78px);align-items:center}
.split--top{align-items:start}
.split--wide{grid-template-columns:1.12fr .88fr}
@media(max-width:900px){.split,.split--wide{grid-template-columns:1fr}}
figure{margin:0}
.shot{overflow:hidden;position:relative}
.shot img{width:100%;aspect-ratio:3/2;object-fit:cover;transition:transform .9s cubic-bezier(.2,.7,.3,1)}
.shot--tall img{aspect-ratio:3/4}
.shot--wide img{aspect-ratio:16/9}
.shot:hover img{transform:scale(1.03)}
.cap{font-size:.78rem;color:var(--muted);margin-top:12px}
.trio{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}
@media(max-width:760px){.trio{grid-template-columns:1fr}}

/* ---------- rows / map / forms ------------------------------------------- */
.rows{list-style:none;margin:26px 0 0;padding:0;border-top:1px solid var(--line)}
.rows li{display:flex;flex-wrap:wrap;gap:12px;justify-content:space-between;align-items:baseline;padding:15px 0;border-bottom:1px solid var(--line-2);font-size:.95rem}
.rows b{font:600 .68rem/1.5 var(--sans);letter-spacing:.2em;text-transform:uppercase;color:var(--muted)}
.on-wine .rows{border-top-color:rgba(228,226,213,.3)}
.on-wine .rows li{border-bottom-color:rgba(228,226,213,.14)}
.on-wine .rows b{color:rgba(241,240,232,.6)}
.map{position:relative;min-height:340px;overflow:hidden;border:1px solid var(--line);background:var(--bone);
  display:grid;place-items:center;text-align:center;padding:28px}
.map__grid{position:absolute;inset:0;opacity:.5;background-image:linear-gradient(var(--line-2) 1px,transparent 1px),linear-gradient(90deg,var(--line-2) 1px,transparent 1px);background-size:48px 48px}
.map .pin{width:14px;height:14px;border-radius:50%;background:var(--wine);margin:0 auto 14px;box-shadow:0 0 0 7px rgba(90,32,45,.14);animation:pulse 2.8s infinite}
@keyframes pulse{0%,100%{box-shadow:0 0 0 7px rgba(90,32,45,.14)}50%{box-shadow:0 0 0 14px rgba(90,32,45,.04)}}

.form{background:var(--cream);border:1px solid var(--line);padding:clamp(24px,3vw,36px)}
.on-wine .form{background:rgba(228,226,213,.07);border-color:rgba(228,226,213,.28)}
.field{display:flex;flex-direction:column;gap:7px;margin-bottom:16px}
.field label{font:600 .66rem/1.4 var(--sans);letter-spacing:.2em;text-transform:uppercase;color:var(--muted)}
.on-wine .field label{color:rgba(241,240,232,.66)}
.field input,.field select,.field textarea{font:400 1rem/1.5 var(--sans);color:var(--ink);background:#fff;border:1px solid var(--line);border-radius:0;padding:14px 15px;width:100%}
.field textarea{min-height:110px;resize:vertical}
.fr{display:grid;grid-template-columns:1fr 1fr;gap:16px}
@media(max-width:560px){.fr{grid-template-columns:1fr}}
.consent{display:flex;gap:11px;align-items:flex-start;font-size:.86rem;line-height:1.6;margin:6px 0 20px;color:var(--muted)}
.on-wine .consent{color:rgba(241,240,232,.78)}
.consent input{margin-top:5px;flex:none;width:17px;height:17px;accent-color:var(--wine)}

/* ---------- footer -------------------------------------------------------- */
.ftr{background:var(--g-footer);color:rgba(241,240,232,.74);padding:clamp(54px,6vw,96px) 0 28px}
.ftr h4{font:600 .68rem/1 var(--sans);letter-spacing:.24em;text-transform:uppercase;color:var(--bone);margin:0 0 18px}
.ftr__grid{display:grid;grid-template-columns:1.5fr 1fr 1fr 1fr;gap:clamp(26px,3.2vw,54px)}
.ftr ul{list-style:none;margin:0;padding:0;display:grid;gap:10px;font-size:.92rem}
.ftr a{color:rgba(241,240,232,.88);text-decoration:none}
.ftr a:hover{color:#fff;text-decoration:underline}
.ftr .brand{color:var(--bone);font-size:1.6rem}
.ftr .brand small{color:rgba(241,240,232,.6)}
.ftr__legal{margin-top:clamp(30px,3.6vw,52px);padding-top:24px;border-top:1px solid rgba(228,226,213,.16);
  display:flex;flex-wrap:wrap;gap:12px 26px;align-items:center;font-size:.8rem;color:rgba(241,240,232,.6)}
@media(max-width:960px){.ftr__grid{grid-template-columns:1fr 1fr}}
@media(max-width:560px){.ftr__grid{grid-template-columns:1fr}}

/* ---------- sticky CTAs --------------------------------------------------- */
.wa{position:fixed;right:18px;bottom:90px;z-index:90;width:56px;height:56px;border-radius:50%;
  background:linear-gradient(135deg,var(--wa) 0%,var(--wa-dk) 100%);display:grid;place-items:center;
  box-shadow:0 8px 24px rgba(27,126,68,.4);transition:transform .24s}
.wa svg{width:29px;height:29px;fill:#fff}
.wa:hover{transform:scale(1.08)}
@media(min-width:861px){.wa{bottom:24px}}
.mbar{position:fixed;left:0;right:0;bottom:0;z-index:88;display:grid;grid-template-columns:1fr 1fr;gap:0;
  padding-bottom:env(safe-area-inset-bottom);background:var(--cream);border-top:1px solid var(--line)}
.mbar .btn{padding:17px 12px;font-size:.68rem}
@media(min-width:861px){.mbar{display:none}}
@media(max-width:860px){body{padding-bottom:58px}}

/* ---------- LGPD ---------------------------------------------------------- */
.ck{position:fixed;left:14px;right:14px;bottom:14px;z-index:120;background:var(--cream);
  border:1px solid var(--wine);padding:20px 22px;display:none;box-shadow:0 20px 50px rgba(36,20,25,.24)}
.ck.show{display:block;animation:fadeup .4s cubic-bezier(.2,.7,.3,1)}
@keyframes fadeup{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}
.ck__in{display:flex;flex-wrap:wrap;gap:20px;align-items:center;justify-content:space-between;max-width:var(--wrap);margin-inline:auto}
.ck p{font-size:.88rem;margin:0;max-width:68ch}
.ck__opts{display:flex;flex-wrap:wrap;gap:18px;margin-top:12px;font-size:.85rem}
.ck__opts label{display:flex;align-items:center;gap:8px}
.ck__opts input{width:16px;height:16px;accent-color:var(--wine)}
/* "Recusar" is visually equal to "Aceitar" — same size, same weight, same row */
.ck__btns{display:flex;flex-wrap:wrap;gap:10px}
@media(max-width:860px){.ck{bottom:70px}}

/* ---------- motion -------------------------------------------------------- */
[data-rv]{opacity:0;transform:translateY(22px);transition:opacity .65s ease-out,transform .65s cubic-bezier(.2,.7,.3,1)}
[data-rv].in{opacity:1;transform:none}
@media(prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *,*::before,*::after{animation-duration:.001ms!important;animation-iteration-count:1!important;
    transition-duration:.001ms!important;scroll-behavior:auto!important}
  [data-rv]{opacity:1;transform:none}
  .hero__img{transform:none!important}
  .rail{scroll-snap-type:none}
}

/* ---------- legal pages --------------------------------------------------- */
.legal{max-width:78ch;margin-inline:auto;padding:clamp(44px,5vw,78px) 0}
.legal h1{font-size:clamp(2.1rem,1.6rem + 2.2vw,3.2rem);margin-bottom:12px}
.legal h2{font-size:1.4rem;margin:36px 0 12px}
.legal table{width:100%;border-collapse:collapse;margin:18px 0;font-size:.92rem}
.legal th,.legal td{border:1px solid var(--line);padding:11px 13px;text-align:left;vertical-align:top}
.legal th{background:var(--bone);font:600 .72rem/1.4 var(--sans);letter-spacing:.14em;text-transform:uppercase}

/* ---------------------------------------------------- responsive tables */
/* A data table with several prose columns has a min-content width far
   wider than a phone. Without its own scroll box it widens the whole
   document and the page scrolls sideways. */
.tbl-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch;max-width:100%}
.tbl-scroll>table{margin:0}

/* ------------------------------------------------- overflow guard
   Nothing may widen the document. Form controls and replaced elements
   cap at their container; flex/grid children get min-width:0 so they
   are allowed to shrink below their content width; and the header's
   right-hand cluster wraps on a phone rather than pushing the page
   sideways. */
input,select,textarea,img,svg,video,iframe{max-width:100%}
.form,.mapwrap,.split__t,.hdr__r,.head-right{min-width:0}
.form,.mapwrap,.split__t{max-width:100%}
@media (max-width:820px){
  .hdr__r,.head-right{flex-wrap:wrap;justify-content:flex-end;row-gap:.4rem}
}

/* ------------------------------------------- header-cta-phone-guard
   .hdr__r is flex:none and the mobile breakpoint hides only the secondary
   button, so the language switcher + primary text CTA + burger overflow a
   390px row by 76-112px. The sticky .mbar (below 860px) and the floating
   WhatsApp button already carry these actions at this width, so the
   header's text CTAs come out and nothing is lost. */
@media (max-width:560px){
  .hdr__r .btn{display:none}
  .hdr__r{gap:8px}
}

/* ------------------------------------------- legal-header-wrap
   The LGPD privacy page uses .hdr__cta where the rest of the site uses
   .hdr__r, so the phone guard above does not reach it. Its CTA is
   "Voltar ao site" - with no nav and no burger on that page, it is the
   only explicit way back - so the row wraps and the brand shrinks rather
   than the link being hidden. */
@media (max-width:560px){
  .hdr__in,.head-in{flex-wrap:wrap;row-gap:.5rem}
  .hdr__cta,.head-cta{min-width:0;flex-wrap:wrap;justify-content:flex-end}
  .brand{min-width:0}
  .brand__n{white-space:normal;overflow-wrap:anywhere}
}

/* ------------------------------------------- legal-header-layout
   The LGPD privacy page is generated from a shared template and uses
   .hdr__cta for its header cluster. Most stylesheets in this batch define
   .hdr__r or .head-cta instead, so on those sites the cluster had no
   layout at all - block flow, and on a long brand name it ran off the
   screen. This defines it, keeps the back-link on one line, and lets the
   row wrap before anything overflows. */
.hdr__cta,.head-cta{display:flex;align-items:center;gap:.6rem;
  flex-wrap:wrap;justify-content:flex-end;min-width:0;max-width:100%}
.hdr__cta .btn,.head-cta .btn{white-space:nowrap}
.hdr__cta .lang,.head-cta .lang{display:inline-flex;gap:.35rem;flex:0 0 auto}
@media (max-width:560px){
  .hdr__in,.head-in{flex-wrap:wrap;row-gap:.55rem}
  .hdr__in>.brand,.head-in>.brand{min-width:0;max-width:100%}
  .brand__n{white-space:normal;overflow-wrap:anywhere}
  .hdr__cta,.head-cta{width:100%;justify-content:flex-start}
}
