/* =========================================================================
   DOGMA TEQUILA — Contemporary Mexican Luxury
   One stylesheet. Tokens first, then layout, then sections.

   Colour law: the PRODUCT sets the palette, never the reverse.
   Expression colours are sampled from the actual bottle renders:
     Blanco      #1C2337  midnight navy
     Reposado    #1B3828  deep agave green
     Anejo       #DB216A  rosa mexicano
     Extra Anejo #E8E8E8  porcelain
     Signature   #08080A + copper
   ========================================================================= */

/* ---------------------------------------------------------------- TOKENS */
:root{
  /* brand */
  --obsidian:#08080A;
  --ink:#131215;
  --soot:#1C1B1F;
  --bone:#F2EEE6;
  --porcelain:#FBFAF8;
  --stone:#8B8781;
  --stone-dim:#5F5C58;
  --copper:#B8703F;
  --copper-lt:#D9A274;
  --champagne:#E3D3B6;

  /* expressions — sampled from product */
  --blanco:#1C2337;
  --blanco-lt:#2E3A5C;
  --reposado:#1B3828;
  --reposado-lt:#2E5C42;
  --anejo:#DB216A;
  --anejo-lt:#F0559A;
  --extra:#E8E8E8;
  --extra-ink:#1D2A44;

  /* semantic — default (light/bone) surface */
  --bg:var(--bone);
  --fg:var(--ink);
  --fg-dim:var(--stone-dim);
  --rule:rgba(19,18,21,.14);
  --accent:var(--copper);

  /* type */
  --serif:"Cormorant Garamond",Garamond,"Times New Roman",serif;
  --sans:"Jost","Helvetica Neue",Arial,sans-serif;

  /* scale — fluid, mobile-first */
  --t-mega:clamp(3.4rem,15vw,13rem);
  --t-xl:clamp(2.6rem,7.5vw,6.4rem);
  --t-lg:clamp(2rem,4.6vw,3.8rem);
  --t-md:clamp(1.5rem,2.6vw,2.2rem);
  --t-body:clamp(1rem,1.05vw,1.15rem);
  --t-sm:.82rem;
  --t-xs:.7rem;

  /* rhythm */
  --gutter:clamp(1.25rem,5vw,4.5rem);
  --section:clamp(5rem,13vh,11rem);
  --wrap:1440px;
  --measure:56ch;

  --ease:cubic-bezier(.22,.61,.36,1);
  --slow:1.1s;
  --header-h:84px;
}

*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}
@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}
}
body{
  margin:0;background:var(--bg);color:var(--fg);
  font-family:var(--sans);font-size:var(--t-body);font-weight:300;
  line-height:1.72;letter-spacing:.012em;
  -webkit-font-smoothing:antialiased;overflow-x:hidden;
}
img,video{max-width:100%;height:auto;display:block}
a{color:inherit;text-decoration:none}
button{font:inherit;color:inherit;background:none;border:0;cursor:pointer}
h1,h2,h3,h4{margin:0;font-weight:400;line-height:1.03;letter-spacing:-.012em}
p{margin:0 0 1.1em}
::selection{background:var(--copper);color:var(--porcelain)}

:focus-visible{outline:2px solid var(--copper);outline-offset:4px}

.skip-link{
  position:absolute;left:-9999px;top:0;z-index:999;
  padding:.9rem 1.4rem;background:var(--obsidian);color:var(--bone);
}
.skip-link:focus{left:0}

/* --------------------------------------------------------------- LAYOUT */
.wrap{max-width:var(--wrap);margin-inline:auto;padding-inline:var(--gutter)}
.narrow{max-width:var(--measure)}
.section{padding-block:var(--section)}
.center{text-align:center}
.mx-auto{margin-inline:auto}

/* dark inversion — apply to any section */
.dark{--bg:var(--obsidian);--fg:var(--bone);--fg-dim:var(--stone);--rule:rgba(242,238,230,.16);background:var(--bg);color:var(--fg)}
.ink{--bg:var(--ink);--fg:var(--bone);--fg-dim:var(--stone);--rule:rgba(242,238,230,.14);background:var(--bg);color:var(--fg)}

/* ------------------------------------------------------------ TYPOGRAPHY */
.display{font-family:var(--serif);font-weight:300;font-size:var(--t-xl);line-height:.98}
.mega{
  font-family:var(--serif);font-weight:300;font-size:var(--t-mega);
  line-height:.86;letter-spacing:-.03em;
}
.h-lg{font-family:var(--serif);font-size:var(--t-lg);font-weight:300;line-height:1.04}
.h-md{font-family:var(--serif);font-size:var(--t-md);font-weight:400;line-height:1.15}

.eyebrow{
  font-family:var(--sans);font-size:var(--t-xs);font-weight:400;
  letter-spacing:.34em;text-transform:uppercase;color:var(--fg-dim);
  margin:0 0 1.6rem;
}
.lede{font-size:clamp(1.1rem,1.5vw,1.36rem);line-height:1.62;font-weight:300}
.dim{color:var(--fg-dim)}
.note{font-size:var(--t-sm);color:var(--fg-dim);line-height:1.6}
.spread{letter-spacing:.24em;text-transform:uppercase;font-size:var(--t-xs)}

.rule{height:1px;background:var(--rule);border:0;margin:0}

/* A word that fills the screen. Sized against the longest word used
   (TRANSFORMATION / TRANSFORMACION, 14 characters): a single word cannot
   wrap, so anything larger overflows the document instead of clipping. */
.word{
  font-family:var(--serif);font-weight:300;
  font-size:clamp(2rem,10.4vw,13rem);line-height:.86;
  letter-spacing:-.03em;text-transform:uppercase;
  max-width:100%;overflow-wrap:break-word;
}
/* Short words can afford to be much larger. */
.word-short{font-size:clamp(3.4rem,17vw,16rem)}

/* ---------------------------------------------------------------- BUTTON */
.btn{
  display:inline-flex;align-items:center;gap:.9rem;
  padding:1.05rem 2.2rem;border:1px solid currentColor;
  font-size:var(--t-xs);letter-spacing:.26em;text-transform:uppercase;
  transition:background var(--slow) var(--ease),color var(--slow) var(--ease),border-color var(--slow) var(--ease);
  position:relative;overflow:hidden;
}
.btn::after{
  content:"";position:absolute;inset:0;background:currentColor;
  transform:scaleX(0);transform-origin:left;z-index:-1;
  transition:transform .7s var(--ease);
}
.btn:hover{background:var(--fg);color:var(--bg);border-color:var(--fg)}
.btn-copper{border-color:var(--copper);color:var(--copper)}
.btn-copper:hover{background:var(--copper);color:var(--obsidian);border-color:var(--copper)}
.btn-ghost{border-color:currentColor;opacity:.8}
.btn-ghost:hover{opacity:1}

/* text link with rule */
.link{
  display:inline-block;font-size:var(--t-xs);letter-spacing:.26em;
  text-transform:uppercase;padding-bottom:.5rem;
  border-bottom:1px solid currentColor;
  transition:letter-spacing .6s var(--ease),opacity .6s var(--ease);
}
.link:hover{letter-spacing:.34em}

/* ---------------------------------------------------------------- HEADER */
.site-header{
  position:fixed;inset:0 0 auto;z-index:120;height:var(--header-h);
  display:flex;align-items:center;
  background:var(--bone);color:var(--ink);
  border-bottom:1px solid rgba(19,18,21,.1);
  transition:background .7s var(--ease),color .7s var(--ease),border-color .7s var(--ease),transform .6s var(--ease);
}
.site-header .wrap{display:flex;align-items:center;justify-content:space-between;gap:2rem;width:100%}
.site-header.on-media{
  background:linear-gradient(180deg,rgba(8,8,10,.58) 0%,rgba(8,8,10,.28) 55%,rgba(8,8,10,0) 100%);
  color:var(--bone);border-color:transparent;
}
.site-header.scrolled{background:var(--obsidian);color:var(--bone);border-color:rgba(242,238,230,.14)}
.site-header.hidden{transform:translateY(-100%)}

.brand{display:flex;align-items:center;gap:.75rem;flex:0 0 auto}
.brand img{height:26px;width:auto;transition:filter .7s var(--ease)}
.site-header.on-media .brand img,
.site-header.scrolled .brand img{filter:invert(1)}

.nav{display:none;gap:2.1rem;align-items:center}
@media (min-width:1100px){.nav{display:flex}}
.nav-link{
  font-size:var(--t-xs);letter-spacing:.2em;text-transform:uppercase;
  opacity:.72;transition:opacity .5s var(--ease);position:relative;padding-block:.4rem;
}
.nav-link:hover,.nav-link[aria-current]{opacity:1}
.nav-link[aria-current]::after{
  content:"";position:absolute;left:0;right:0;bottom:0;height:1px;background:currentColor;
}

.header-actions{display:flex;align-items:center;gap:1.4rem;flex:0 0 auto}
.lang-switch{display:flex;gap:.4rem;font-size:var(--t-xs);letter-spacing:.16em}
.lang-switch button{opacity:.45;transition:opacity .4s var(--ease)}
.lang-switch button[aria-pressed="true"]{opacity:1}
.lang-switch span{opacity:.3}

.burger{display:flex;flex-direction:column;gap:6px;width:26px;padding:6px 0}
@media (min-width:1100px){.burger{display:none}}
.burger span{display:block;height:1px;background:currentColor;transition:transform .5s var(--ease),opacity .4s}
.burger[aria-expanded="true"] span:first-child{transform:translateY(3.5px) rotate(45deg)}
.burger[aria-expanded="true"] span:last-child{transform:translateY(-3.5px) rotate(-45deg)}

/* mobile nav */
.mobile-nav{
  position:fixed;inset:0;z-index:115;background:var(--obsidian);color:var(--bone);
  display:flex;flex-direction:column;justify-content:center;
  padding:var(--header-h) var(--gutter) 3rem;
  opacity:0;visibility:hidden;transition:opacity .6s var(--ease),visibility .6s;
  overflow-y:auto;
}
.mobile-nav.open{opacity:1;visibility:visible}
.mobile-nav a{
  font-family:var(--serif);font-size:clamp(1.9rem,7vw,3rem);font-weight:300;
  padding-block:.32em;border-bottom:1px solid rgba(242,238,230,.1);
  opacity:0;transform:translateY(14px);
}
.mobile-nav.open a{opacity:1;transform:none;transition:opacity .6s var(--ease),transform .6s var(--ease)}
.mobile-nav.open a:nth-child(2){transition-delay:.05s}
.mobile-nav.open a:nth-child(3){transition-delay:.1s}
.mobile-nav.open a:nth-child(4){transition-delay:.15s}
.mobile-nav.open a:nth-child(5){transition-delay:.2s}
.mobile-nav.open a:nth-child(6){transition-delay:.25s}
.mobile-nav.open a:nth-child(7){transition-delay:.3s}
.mobile-nav.open a:nth-child(8){transition-delay:.35s}
.mobile-nav.open a:nth-child(9){transition-delay:.4s}
.mobile-nav .sub{font-family:var(--sans);font-size:.95rem;letter-spacing:.2em;text-transform:uppercase;opacity:.5;padding-left:1.4rem}

/* -------------------------------------------------------------- AGE GATE */
.age-gate{
  position:fixed;inset:0;z-index:400;background:var(--obsidian);color:var(--bone);
  display:grid;place-items:center;padding:var(--gutter);text-align:center;
}
.age-gate[hidden]{display:none}
.age-media{position:absolute;inset:0;opacity:.24}
.age-media img{width:100%;height:100%;object-fit:cover}
.age-gate-inner{position:relative;max-width:34rem}
.age-mark{width:56px;margin:0 auto 2rem;opacity:.9}
.age-logo{width:190px;margin:0 auto 1.6rem;filter:invert(1)}
.age-gate h2{font-family:var(--serif);font-size:clamp(1.6rem,3.4vw,2.4rem);font-weight:300;margin-bottom:1.2rem}
.age-gate .btn-row{display:flex;gap:1rem;justify-content:center;margin:2.2rem 0 1.6rem;flex-wrap:wrap}
.age-note{font-size:var(--t-xs);line-height:1.8;opacity:.5;letter-spacing:.06em}
.age-note a{border-bottom:1px solid rgba(242,238,230,.3)}

/* ---------------------------------------------------------------- INTRO
   Cinematic opening: black -> light line -> serpent -> DOGMA -> tagline  */
.intro{
  position:fixed;inset:0;z-index:300;background:var(--obsidian);color:var(--bone);
  display:grid;place-items:center;text-align:center;
  transition:opacity 1.2s var(--ease),visibility 1.2s;
}
.intro[hidden]{display:none}
.intro.done{opacity:0;visibility:hidden;pointer-events:none}
.intro-inner{position:relative;z-index:2}
.intro-line{
  width:0;height:1px;margin:0 auto 2.4rem;
  background:linear-gradient(90deg,transparent,var(--copper-lt),transparent);
  animation:lineIn 2.2s var(--ease) forwards;
}
@keyframes lineIn{to{width:min(46vw,420px)}}
.intro-mark{
  width:70px;margin:0 auto 2rem;opacity:0;
  animation:fadeUp 1.6s var(--ease) .5s forwards;
}
.intro-name{
  font-family:var(--serif);font-size:clamp(3rem,12vw,8rem);font-weight:300;
  letter-spacing:.13em;text-indent:.13em;line-height:1;
  opacity:0;animation:fadeUp 1.8s var(--ease) 1.5s forwards;
}
.intro-tag{
  margin-top:1.6rem;font-size:var(--t-xs);letter-spacing:.42em;text-transform:uppercase;
  color:var(--stone);opacity:0;animation:fadeUp 1.8s var(--ease) 2.7s forwards;
}
.intro-enter{
  margin-top:3.4rem;opacity:0;animation:fadeUp 1.4s var(--ease) 3.6s forwards;
}
@keyframes fadeUp{from{opacity:0;transform:translateY(18px)}to{opacity:1;transform:none}}

/* ------------------------------------------------------------------ HERO */
.hero{
  position:relative;min-height:100svh;display:grid;align-items:end;
  color:var(--bone);background:var(--obsidian);overflow:hidden;
  padding-block:calc(var(--header-h) + 3rem) clamp(3rem,9vh,6rem);
}
.hero-media{position:absolute;inset:0;z-index:0}
.hero-media img,.hero-media video{width:100%;height:100%;object-fit:cover}
.hero-media::after{
  content:"";position:absolute;inset:0;
  background:linear-gradient(180deg,rgba(8,8,10,.62) 0%,rgba(8,8,10,.18) 38%,rgba(8,8,10,.86) 100%);
}
.hero .wrap{position:relative;z-index:2;width:100%}
.hero h1{font-family:var(--serif);font-weight:300;font-size:var(--t-xl);line-height:.98;max-width:16ch;
  text-shadow:0 2px 30px rgba(8,8,10,.45)}
.hero .eyebrow{color:rgba(242,238,230,.82);text-shadow:0 1px 12px rgba(8,8,10,.6)}
.hero-actions{display:flex;gap:1rem;flex-wrap:wrap;margin-top:2.6rem}

/* product hero — bottle floats over a colour field */
.hero-product{
  position:relative;min-height:100svh;display:grid;
  grid-template-columns:1fr;align-items:center;
  padding-block:calc(var(--header-h) + 4rem) 4rem;overflow:hidden;
}
@media (min-width:900px){
  .hero-product{grid-template-columns:1.05fr .95fr;gap:var(--gutter);align-items:center}
}
/* The four product environments range from near-black navy to pale
   travertine, so the copy side needs its own scrim to stay legible on all
   of them. The bottle side is left comparatively clear. */
.hero-product .hero-media::after{
  background:
    linear-gradient(90deg,rgba(6,6,8,.66) 0%,rgba(6,6,8,.42) 38%,rgba(6,6,8,.10) 66%,rgba(6,6,8,.24) 100%),
    linear-gradient(180deg,rgba(6,6,8,.30),rgba(6,6,8,.34));
}
.hero-product-copy .eyebrow{color:rgba(255,255,255,.86)}
.hero-product-copy .spread{text-shadow:0 1px 14px rgba(0,0,0,.7)}
.hero-product-copy h1{text-shadow:0 2px 34px rgba(0,0,0,.5)}
.hero-product-copy{position:relative;z-index:3;padding-inline:var(--gutter)}
@media (min-width:900px){.hero-product-copy{padding-left:var(--gutter);padding-right:0}}
.hero-bottle{
  position:relative;z-index:2;justify-self:center;
  height:min(52svh,440px);width:auto;
  filter:drop-shadow(0 42px 60px rgba(0,0,0,.55));
}
@media (min-width:900px){.hero-bottle{height:min(74svh,660px)}}

/* --------------------------------------------------------- SCROLL REVEAL */
[data-reveal]{opacity:0;transform:translateY(26px);transition:opacity 1.1s var(--ease),transform 1.1s var(--ease)}
[data-reveal].in{opacity:1;transform:none}
[data-reveal="mask"]{clip-path:inset(0 0 100% 0);opacity:1;transform:none;transition:clip-path 1.3s var(--ease)}
[data-reveal="mask"].in{clip-path:inset(0 0 0 0)}
[data-reveal="scale"]{opacity:0;transform:scale(1.04);transition:opacity 1.3s var(--ease),transform 1.6s var(--ease)}
[data-reveal="scale"].in{opacity:1;transform:scale(1)}
[data-delay="1"]{transition-delay:.12s}
[data-delay="2"]{transition-delay:.24s}
[data-delay="3"]{transition-delay:.36s}
[data-delay="4"]{transition-delay:.48s}

/* ------------------------------------------------------------- STATEMENT */
.statement{padding-block:var(--section)}
.statement-grid{display:grid;gap:clamp(2.4rem,5vw,5rem)}
@media (min-width:900px){.statement-grid{grid-template-columns:1fr 1fr;align-items:start}}
.statement h2{font-family:var(--serif);font-weight:300;font-size:var(--t-xl);line-height:.98}
.statement .body{max-width:var(--measure)}

/* a bottle cutout used as an editorial figure */
.figure-bottle{display:grid;place-items:center;padding:clamp(1.5rem,4vw,3rem) 0}
.figure-bottle img{
  height:min(66svh,600px);width:auto;
  filter:drop-shadow(0 40px 60px rgba(0,0,0,.55));
  transition:transform 2.4s var(--ease);
}
.figure-bottle:hover img{transform:scale(1.03)}

/* editorial figure */
.figure{position:relative;overflow:hidden}
.figure img{width:100%;transition:transform 2.4s var(--ease)}
.figure:hover img{transform:scale(1.035)}
.figure figcaption{
  margin-top:1rem;font-size:var(--t-xs);letter-spacing:.2em;
  text-transform:uppercase;color:var(--fg-dim);
}

/* ----------------------------------------------------------- TWO WORLDS */
.two-worlds{
  display:flex;flex-direction:column;min-height:100svh;
  position:relative;overflow:hidden;background:var(--obsidian);
}
@media (min-width:900px){.two-worlds{flex-direction:row}}
.world{
  position:relative;flex:1;min-height:52svh;
  display:flex;align-items:flex-end;
  padding:clamp(2rem,5vw,4.5rem);color:var(--bone);
  transition:flex-grow 1s var(--ease);
  overflow:hidden;isolation:isolate;
}
@media (min-width:900px){
  .two-worlds:hover .world{flex-grow:.72}
  .two-worlds .world:hover{flex-grow:1.56}
}
.world-media{position:absolute;inset:0;z-index:-2}
.world-media img{width:100%;height:100%;object-fit:cover;transition:transform 2s var(--ease)}
.world:hover .world-media img{transform:scale(1.06)}
.world::before{
  content:"";position:absolute;inset:0;z-index:-1;
  background:linear-gradient(180deg,rgba(8,8,10,.3),rgba(8,8,10,.88));
  transition:opacity .9s var(--ease);
}
.world:hover::before{opacity:.82}
.world-signature{background:var(--obsidian)}
.world-contemporary{background:#2A2723}
.world-inner{position:relative;max-width:38ch}
.world h3{font-family:var(--serif);font-size:var(--t-lg);font-weight:300;margin-bottom:.6rem}
.world p{font-size:.98rem;color:rgba(242,238,230,.72);margin-bottom:1.6rem}
.two-worlds-title{
  position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);
  z-index:5;text-align:center;color:var(--bone);pointer-events:none;
  mix-blend-mode:difference;width:100%;padding-inline:var(--gutter);
}
.two-worlds-title h2{font-family:var(--serif);font-size:var(--t-lg);font-weight:300;line-height:1.02}
.two-worlds-title p{font-size:var(--t-xs);letter-spacing:.28em;text-transform:uppercase;margin-top:1rem;opacity:.75}
@media (max-width:899px){.two-worlds-title{display:none}}

/* ------------------------------------------------------- COLLECTION ROW */
.collection{display:grid;gap:1px;background:var(--rule)}
@media (min-width:760px){.collection{grid-template-columns:repeat(4,1fr)}}

/* Carousel variant — every expression stays reachable by swipe or drag
   instead of stacking into a column where the last one sits half off-screen. */
.collection-rail{
  display:flex;gap:1px;background:var(--rule);
  overflow-x:auto;scroll-snap-type:x mandatory;
  -webkit-overflow-scrolling:touch;scrollbar-width:none;
}
.collection-rail::-webkit-scrollbar{display:none}
.collection-rail .expression{
  scroll-snap-align:center;flex:0 0 clamp(240px,74vw,320px);min-height:min(78svh,600px);
}
@media (min-width:900px){
  .collection-rail{overflow-x:visible;scroll-snap-type:none}
  .collection-rail .expression{flex:1 1 0;min-width:0}
}
.rail-hint{
  display:flex;align-items:center;justify-content:center;gap:.8rem;
  margin-top:1.4rem;font-size:var(--t-xs);letter-spacing:.24em;
  text-transform:uppercase;color:var(--fg-dim);
}
@media (min-width:900px){.rail-hint{display:none}}
.expression{
  position:relative;background:var(--bg);
  padding:clamp(2.4rem,4vw,3.4rem) clamp(1.4rem,2.4vw,2rem) clamp(2.4rem,4vw,3.4rem);
  display:flex;flex-direction:column;align-items:center;text-align:center;
  overflow:hidden;isolation:isolate;transition:color .9s var(--ease);
  min-height:min(84svh,640px);justify-content:flex-end;gap:1.2rem;
}
.expression::before{
  content:"";position:absolute;inset:0;z-index:-1;
  background:var(--tone);opacity:0;transition:opacity .9s var(--ease);
}
.expression:hover,.expression:focus-within{color:var(--porcelain)}
.expression:hover::before,.expression:focus-within::before{opacity:1}
.expression[data-tone="extra"]:hover,.expression[data-tone="extra"]:focus-within{color:var(--extra-ink)}
.expression img{
  height:clamp(230px,34vh,340px);width:auto;margin-block:auto 1.4rem;
  transition:transform 1.2s var(--ease),filter 1.2s var(--ease);
  filter:drop-shadow(0 26px 30px rgba(0,0,0,.34));
}
.expression:hover img,.expression:focus-within img{transform:translateY(-10px) scale(1.05)}
.expression h3{font-family:var(--serif);font-size:var(--t-md);font-weight:400}
.expression .word-sm{
  font-size:var(--t-xs);letter-spacing:.34em;text-transform:uppercase;
  opacity:0;transform:translateY(8px);transition:opacity .7s var(--ease),transform .7s var(--ease);
}
.expression:hover .word-sm,.expression:focus-within .word-sm{opacity:.85;transform:none}
.expression .link{opacity:0;transition:opacity .7s var(--ease) .1s}
.expression:hover .link,.expression:focus-within .link{opacity:1}
@media (hover:none){
  .expression .word-sm,.expression .link{opacity:.85;transform:none}
}
[data-tone="blanco"]{--tone:var(--blanco)}
[data-tone="reposado"]{--tone:var(--reposado)}
[data-tone="anejo"]{--tone:var(--anejo)}
[data-tone="extra"]{--tone:var(--extra)}
[data-tone="signature"]{--tone:var(--obsidian)}

/* ------------------------------------------------------- PROCESS / CRAFT */
.stages{counter-reset:stage}
.stage{
  display:grid;gap:clamp(1.6rem,4vw,4rem);align-items:center;
  padding-block:clamp(3rem,8vh,6rem);border-top:1px solid var(--rule);
}
@media (min-width:900px){
  .stage{grid-template-columns:.9fr 1.1fr}
  .stage:nth-child(even) .stage-media{order:-1}
}
.stage-num{
  font-family:var(--sans);font-size:var(--t-xs);letter-spacing:.3em;
  color:var(--fg-dim);margin-bottom:1.2rem;display:block;
}
.stage h3{font-family:var(--serif);font-size:var(--t-lg);font-weight:300;margin-bottom:1rem}
.stage-media{position:relative;overflow:hidden;aspect-ratio:16/10}
.stage-media img{width:100%;height:100%;object-fit:cover;transition:transform 2.4s var(--ease)}
.stage:hover .stage-media img{transform:scale(1.04)}

/* ---------------------------------------------------- DESIGN & SYMBOLISM */
.symbolism{display:grid;gap:clamp(2rem,5vw,4rem)}
@media (min-width:960px){.symbolism{grid-template-columns:.85fr 1.15fr;align-items:start}}
.symbol-stage{
  position:sticky;top:calc(var(--header-h) + 2rem);
  display:grid;place-items:center;padding:2rem;
  background:radial-gradient(120% 90% at 50% 35%,rgba(184,112,63,.13),transparent 68%);
}
.symbol-stage img{width:min(70%,300px);filter:drop-shadow(0 30px 50px rgba(0,0,0,.5))}
.symbol-list{display:grid;gap:1px;background:var(--rule)}
.symbol{
  background:var(--bg);padding:clamp(1.8rem,3.4vw,2.8rem);
  transition:background .8s var(--ease);
}
.symbol.active{background:var(--soot)}
.symbol h3{font-family:var(--serif);font-size:var(--t-md);font-weight:400;margin-bottom:.9rem}
.symbol .tag{
  font-size:var(--t-xs);letter-spacing:.3em;text-transform:uppercase;
  color:var(--copper-lt);display:block;margin-bottom:.9rem;
}
.symbol p{max-width:52ch;font-size:.98rem;margin:0}

/* ---------------------------------------------------------------- RITUAL */
.ritual-steps{display:grid;gap:1px;background:var(--rule);margin-top:clamp(2.4rem,5vw,4rem)}
@media (min-width:760px){.ritual-steps{grid-template-columns:repeat(4,1fr)}}
.ritual-step{background:var(--bg);padding:clamp(1.8rem,3vw,2.6rem)}
.ritual-step .n{font-family:var(--serif);font-size:2.6rem;font-weight:300;color:var(--copper);display:block;margin-bottom:.8rem;line-height:1}
.ritual-step h3{font-family:var(--serif);font-size:1.35rem;font-weight:400;margin-bottom:.6rem}
.ritual-step p{font-size:.95rem;margin:0;color:var(--fg-dim)}

/* ------------------------------------------------------------ TECH SHEET */
.specs{display:grid;gap:0;border-top:1px solid var(--rule);max-width:44rem;margin-inline:auto;width:100%}
.spec{
  display:flex;justify-content:space-between;gap:2rem;
  padding-block:1.05rem;border-bottom:1px solid var(--rule);
  font-size:.95rem;
}
.spec dt{color:var(--fg-dim);letter-spacing:.1em;text-transform:uppercase;font-size:var(--t-xs)}
.spec dd{margin:0;text-align:right}
.draft{
  display:inline-block;margin-left:.5rem;padding:.12em .5em;
  font-size:.6rem;letter-spacing:.18em;text-transform:uppercase;
  border:1px solid var(--copper);color:var(--copper);vertical-align:middle;
}

/* notes / tasting grid */
.notes{display:grid;gap:1px;background:var(--rule);margin-top:2.4rem}
@media (min-width:700px){.notes{grid-template-columns:repeat(3,1fr)}}
.note-card{background:var(--bg);padding:clamp(1.6rem,3vw,2.4rem)}
.note-card h4{font-family:var(--sans);font-size:var(--t-xs);letter-spacing:.28em;text-transform:uppercase;color:var(--fg-dim);margin:0 0 .8rem;font-weight:400}
.note-card p{margin:0;font-size:1.02rem;font-family:var(--serif);font-size:1.25rem;line-height:1.45}

/* ----------------------------------------------------------------- TRADE */
.cards{display:grid;gap:1px;background:var(--rule)}
@media (min-width:640px){.cards{grid-template-columns:repeat(2,1fr)}}
@media (min-width:1000px){.cards{grid-template-columns:repeat(3,1fr)}}
.card{background:var(--bg);padding:clamp(1.8rem,3vw,2.6rem);display:flex;flex-direction:column;gap:.7rem;transition:background .7s var(--ease)}
.card:hover{background:var(--soot);color:var(--bone)}
.card h3{font-family:var(--serif);font-size:1.4rem;font-weight:400}
.card p{font-size:.95rem;margin:0;color:var(--fg-dim)}
.card:hover p{color:var(--stone)}

/* downloads */
.downloads{display:grid;gap:1px;background:var(--rule);margin-top:2.6rem}
@media (min-width:640px){.downloads{grid-template-columns:repeat(2,1fr)}}
.download{
  background:var(--bg);padding:1.4rem clamp(1.4rem,2.6vw,2rem);
  display:flex;justify-content:space-between;align-items:center;gap:1.4rem;
  font-size:.95rem;transition:background .6s var(--ease);
}
.download:hover{background:var(--soot);color:var(--bone)}
.download .meta{font-size:var(--t-xs);letter-spacing:.2em;text-transform:uppercase;color:var(--fg-dim)}

/* ------------------------------------------------------------------ FORM */
.form{display:grid;gap:1.6rem;max-width:38rem}
.field{display:grid;gap:.55rem}
.field label{font-size:var(--t-xs);letter-spacing:.24em;text-transform:uppercase;color:var(--fg-dim)}
.field input,.field select,.field textarea{
  font:inherit;font-size:1rem;color:inherit;background:transparent;
  border:0;border-bottom:1px solid var(--rule);padding:.75rem 0;
  transition:border-color .5s var(--ease);border-radius:0;
}
.field input:focus,.field select:focus,.field textarea:focus{outline:0;border-color:var(--copper)}
.field textarea{resize:vertical;min-height:7rem}
.field select{appearance:none;cursor:pointer}
.dark .field option,.ink .field option{background:var(--ink);color:var(--bone)}
.form-status{font-size:.9rem;min-height:1.4em;color:var(--copper)}

/* ---------------------------------------------------------------- FOOTER */
.site-footer{background:var(--obsidian);color:var(--bone);padding-block:clamp(3.4rem,8vh,6rem) 2.4rem}
.footer-top{display:grid;gap:clamp(2.4rem,5vw,4rem);padding-bottom:3rem;border-bottom:1px solid rgba(242,238,230,.12)}
@media (min-width:860px){.footer-top{grid-template-columns:1.4fr 1fr 1fr 1fr}}
.footer-brand img{width:170px;filter:invert(1);margin-bottom:1.4rem}
.footer-brand p{font-size:.92rem;color:var(--stone);max-width:34ch}
.footer-col h4{font-size:var(--t-xs);letter-spacing:.28em;text-transform:uppercase;color:var(--stone);margin:0 0 1.2rem;font-weight:400}
.footer-col a{display:block;font-size:.94rem;padding-block:.36rem;color:rgba(242,238,230,.82);transition:color .4s var(--ease)}
.footer-col a:hover{color:var(--copper-lt)}
.footer-bottom{
  display:flex;flex-wrap:wrap;gap:1rem 2rem;justify-content:space-between;
  padding-top:2.2rem;font-size:var(--t-xs);letter-spacing:.14em;color:var(--stone-dim);
}
.footer-bottom .responsible{color:var(--copper);letter-spacing:.24em;text-transform:uppercase}

/* -------------------------------------------------------------- UTILITIES */
.stack-sm>*+*{margin-top:1rem}
.stack>*+*{margin-top:1.8rem}
.stack-lg>*+*{margin-top:3rem}
.grid-2{display:grid;gap:clamp(2rem,4vw,4rem)}
@media (min-width:820px){.grid-2{grid-template-columns:1fr 1fr}}
.pad-t{padding-top:var(--section)}
/* Transform-free so scroll-reveal transforms cannot cancel the centring. */
.full-bleed{width:100vw;margin-inline:calc(50% - 50vw)}
/* A scale reveal here would widen the document mid-transition. */
.full-bleed[data-reveal="scale"]{transform:none!important}
.aspect-wide{aspect-ratio:16/9;object-fit:cover;width:100%}
.aspect-tall{aspect-ratio:3/4;object-fit:cover;width:100%}

/* grain — very light, luxury film feel */
.grain{
  position:fixed;inset:0;z-index:200;pointer-events:none;opacity:.028;
  background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='140' height='140'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3'/></filter><rect width='140' height='140' filter='url(%23n)'/></svg>");
  mix-blend-mode:overlay;
}
@media (prefers-reduced-motion:reduce){.grain{display:none}}

/* read progress */
.read-progress{position:fixed;top:0;left:0;height:2px;width:0;background:var(--copper);z-index:130;transition:width .18s linear}

/* skip to content anchor offset */
[id]{scroll-margin-top:calc(var(--header-h) + 1.5rem)}

/* ======================================================================
   ADDED — family lineup, bottle anatomy map, origin map
   ====================================================================== */

/* ---- Family lineup: the five bottles standing on a real environment ----
   Composited in CSS rather than generated as one image, so every bottle
   stays the untouched product render.                                     */
.lineup{position:relative;overflow:hidden;background:var(--ink)}
.lineup-bg{position:absolute;inset:0;z-index:0}
.lineup-bg img{width:100%;height:100%;object-fit:cover}
.lineup-bg::after{
  content:"";position:absolute;inset:0;
  background:linear-gradient(180deg,rgba(8,8,10,.30),rgba(8,8,10,.10) 45%,rgba(8,8,10,.55));
}
.lineup-row{
  position:relative;z-index:2;display:flex;align-items:flex-end;justify-content:center;
  gap:clamp(.5rem,2.2vw,2.4rem);
  padding:clamp(3rem,10vh,7rem) var(--gutter) clamp(2.6rem,8vh,5rem);
  min-height:min(70svh,560px);
}
.lineup-row img{
  height:clamp(150px,26vw,360px);width:auto;
  filter:drop-shadow(0 26px 30px rgba(0,0,0,.5));
  transition:transform 1s var(--ease);
}
.lineup-row img:hover{transform:translateY(-8px)}
/* The Signature is the house's lead expression — it stands slightly taller. */
.lineup-row img.is-lead{height:clamp(168px,29vw,400px)}
.lineup-caption{
  position:relative;z-index:2;text-align:center;color:rgba(242,238,230,.9);
  text-shadow:0 1px 12px rgba(8,8,10,.65);
  padding:0 var(--gutter) clamp(2.6rem,7vh,4.5rem);
}

/* ---- Bottle anatomy: click a part, read what it means ---- */
.anatomy{display:grid;gap:clamp(2rem,5vw,4rem)}
@media (min-width:960px){.anatomy{grid-template-columns:minmax(0,.8fr) minmax(0,1.2fr);align-items:center}}
.anatomy-stage{
  position:relative;justify-self:center;
  padding:clamp(1rem,3vw,2rem);
  background:radial-gradient(120% 80% at 50% 40%,rgba(184,112,63,.16),transparent 70%);
}
.anatomy-stage img{height:min(66svh,560px);width:auto;display:block;filter:drop-shadow(0 30px 46px rgba(0,0,0,.5))}
.hotspot{
  position:absolute;width:30px;height:30px;margin:-15px 0 0 -15px;
  border:1px solid var(--copper-lt);border-radius:50%;
  background:rgba(8,8,10,.4);cursor:pointer;padding:0;
  transition:transform .5s var(--ease),background .5s var(--ease),border-color .5s var(--ease);
}
.hotspot::after{
  content:"";position:absolute;inset:11px;border-radius:50%;
  background:var(--copper-lt);transition:background .4s var(--ease);
}
.hotspot:hover,.hotspot:focus-visible{transform:scale(1.28)}
.hotspot[aria-selected="true"]{background:var(--copper);border-color:var(--copper)}
.hotspot[aria-selected="true"]::after{background:var(--porcelain)}
.hotspot .sr{
  position:absolute;width:1px;height:1px;overflow:hidden;
  clip:rect(0 0 0 0);white-space:nowrap;
}
.anatomy-panels{display:grid;gap:1px;background:var(--rule);align-self:center}
.anatomy-panel{
  background:var(--bg);padding:clamp(1.8rem,3.4vw,3rem);min-height:14rem;
  display:flex;flex-direction:column;justify-content:center;
  transition:background .6s var(--ease),opacity .5s var(--ease);
}
.anatomy-panel h3{font-family:var(--serif);font-size:1.5rem;font-weight:400;margin-bottom:.7rem}
.anatomy-panel .tag{
  font-size:var(--t-xs);letter-spacing:.28em;text-transform:uppercase;
  color:var(--copper-lt);display:block;margin-bottom:.7rem;
}
.anatomy-panel p{margin:0;font-size:.98rem;max-width:52ch}
.anatomy-panel[aria-current="true"]{background:var(--soot);color:var(--bone)}
.anatomy-panel[aria-current="true"] p{color:rgba(242,238,230,.82)}
/* With JS the panels behave as a tab set; without it they read as a list. */
.js .anatomy-panel[hidden]{display:none}

/* ---- Origin map ---- */
.mx-map{width:min(100%,620px);height:auto;color:var(--fg);display:block}
.mx-pin{transform-origin:318px 252px;animation:pin 3.4s var(--ease) infinite}
@keyframes pin{0%,100%{opacity:.55}50%{opacity:1}}
@media (prefers-reduced-motion:reduce){.mx-pin{animation:none;opacity:1}}

/* ---- Two expressions, two meanings ---- */
.meanings{display:grid;gap:1px;background:var(--rule);margin-top:clamp(2.4rem,5vh,4rem)}
@media (min-width:820px){.meanings{grid-template-columns:1fr 1fr}}
.meaning{position:relative;overflow:hidden;min-height:min(52svh,420px);display:flex;align-items:flex-end;isolation:isolate}
.meaning img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:-2;transition:transform 2.2s var(--ease)}
.meaning:hover img{transform:scale(1.05)}
.meaning::before{content:"";position:absolute;inset:0;z-index:-1;background:linear-gradient(180deg,rgba(8,8,10,.15),rgba(8,8,10,.86))}
.meaning-inner{padding:clamp(1.6rem,3.4vw,2.8rem);color:var(--bone);max-width:44ch}
.meaning-inner h3{font-family:var(--serif);font-size:var(--t-md);font-weight:400;margin-bottom:.6rem}
.meaning-inner p{margin:0;font-size:.96rem;color:rgba(242,238,230,.8)}

/* ---- Stage card: image + name + one line, used on the home craft strip ---- */
.stage-card{background:var(--bg);display:flex;flex-direction:column}
.stage-card .figure{margin:0}
.stage-card h3{
  font-family:var(--serif);font-size:1.32rem;font-weight:400;
  display:flex;align-items:baseline;gap:.7rem;
  padding:1.3rem clamp(1.1rem,2vw,1.6rem) .5rem;
}
.stage-card .num{
  font-family:var(--sans);font-size:var(--t-xs);letter-spacing:.24em;
  color:var(--copper-lt);
}
.stage-card p{
  margin:0;padding:0 clamp(1.1rem,2vw,1.6rem) 1.6rem;
  font-size:.92rem;color:var(--fg-dim);line-height:1.6;
}

/* Four tasting cards read better two-up than squeezed into one row. */
@media (min-width:700px){.notes-4{grid-template-columns:repeat(2,1fr)}}
@media (min-width:1100px){.notes-4{grid-template-columns:repeat(4,1fr)}}
.note-card p{font-size:1.06rem;line-height:1.5}

/* Brand mark above the hero headline — the wordmark is black artwork, so it
   is inverted to sit on the film. */
.hero-logo{
  width:clamp(150px,17vw,260px);height:auto;
  filter:invert(1) drop-shadow(0 2px 18px rgba(8,8,10,.55));
  margin-bottom:clamp(1.4rem,3vh,2.4rem);
}

/* ---- Denomination of Origin map ---- */
.mx-map{width:min(100%,860px);height:auto;color:var(--fg);display:block}
.mx-country{fill:none;stroke:currentColor;stroke-width:1.2;stroke-linejoin:round;opacity:.30}
.mx-do{fill:currentColor;fill-opacity:.16;stroke:currentColor;stroke-width:1;opacity:.75}
.mx-jalisco{fill:var(--copper);fill-opacity:.30;stroke:var(--copper);stroke-width:1.6}
.mx-halo{fill:none;stroke:var(--copper);stroke-width:1;opacity:.5;animation:mxPulse 3.6s var(--ease) infinite}
.mx-dot{fill:var(--copper)}
.mx-lead{stroke:currentColor;stroke-width:1;opacity:.35}
.mx-t1{font-family:var(--serif);font-size:26px;fill:currentColor;letter-spacing:.16em}
.mx-t2{font-family:var(--sans);font-size:12px;fill:currentColor;opacity:.7;letter-spacing:.14em}
.mx-t3{font-family:var(--sans);font-size:11px;fill:currentColor;opacity:.5;letter-spacing:.1em}
.mx-sw-j{fill:var(--copper);fill-opacity:.30;stroke:var(--copper)}
.mx-sw-d{fill:currentColor;fill-opacity:.16;stroke:currentColor}
@keyframes mxPulse{0%,100%{r:22;opacity:.5}50%{r:30;opacity:.15}}
@media (prefers-reduced-motion:reduce){.mx-halo{animation:none}}

/* ---- Expression switcher: jump straight to any other bottle ---- */
.switcher{
  display:flex;gap:1px;background:var(--rule);
  margin-top:clamp(2rem,4vh,3rem);
  overflow-x:auto;scroll-snap-type:x mandatory;scrollbar-width:none;
}
.switcher::-webkit-scrollbar{display:none}
.switch{
  flex:1 0 clamp(130px,30vw,220px);scroll-snap-align:center;
  background:var(--bg);padding:clamp(1.6rem,3vw,2.4rem) 1rem;
  display:flex;flex-direction:column;align-items:center;gap:1rem;
  position:relative;isolation:isolate;overflow:hidden;
  transition:color .8s var(--ease);
}
.switch::before{
  content:"";position:absolute;inset:0;z-index:-1;background:var(--tone);
  opacity:0;transition:opacity .8s var(--ease);
}
.switch:hover,.switch:focus-visible{color:var(--porcelain)}
.switch:hover::before,.switch:focus-visible::before{opacity:1}
.switch[data-tone="extra"]:hover,.switch[data-tone="extra"]:focus-visible{color:var(--extra-ink)}
.switch img{
  height:clamp(110px,16vh,170px);width:auto;
  filter:drop-shadow(0 14px 18px rgba(0,0,0,.3));
  transition:transform 1s var(--ease);
}
.switch:hover img{transform:translateY(-6px) scale(1.04)}
.switch span{
  font-family:var(--serif);font-size:1.15rem;text-align:center;line-height:1.2;
}
/* The page you are already on is marked, not hidden. */
.switch[aria-current]{background:var(--soot);color:var(--bone)}
.switch[aria-current]::after{
  content:"";position:absolute;left:50%;bottom:1.1rem;transform:translateX(-50%);
  width:22px;height:1px;background:var(--copper);
}

.anatomy-heading{
  margin:clamp(2rem,4vh,3rem) 0 1.4rem;
  font-family:var(--serif);font-weight:400;color:var(--fg-dim);
}

/* ---- Marquee: a slow band of brand facts under the hero ----
   Two identical runs scroll as one track, so the loop never shows a gap.
   Stops entirely under reduced-motion, where it reads as a static line. */
.marquee{
  background:var(--obsidian);color:var(--bone);
  border-block:1px solid rgba(242,238,230,.14);
  overflow:hidden;padding-block:1.15rem;
}
.marquee-track{display:flex;width:max-content;animation:marquee 46s linear infinite}
.marquee:hover .marquee-track{animation-play-state:paused}
.marquee-run{
  display:flex;align-items:center;gap:2.4rem;margin:0;padding-right:2.4rem;
  font-size:var(--t-xs);letter-spacing:.34em;text-transform:uppercase;
  white-space:nowrap;
}
.marquee-run i{color:var(--copper);font-style:normal;font-size:.6rem}
@keyframes marquee{from{transform:translateX(0)}to{transform:translateX(-50%)}}
@media (prefers-reduced-motion:reduce){
  .marquee-track{animation:none;width:100%}
  .marquee-run:last-child{display:none}
  .marquee-run{flex-wrap:wrap;justify-content:center;gap:1.2rem}
}

/* House tasting descriptors, straight from the producer. */
.notes-chips{
  list-style:none;display:flex;flex-wrap:wrap;gap:.6rem;
  margin:1.8rem 0 0;padding:0;
}
.notes-chips li{
  border:1px solid var(--rule);padding:.5rem 1.1rem;
  font-size:var(--t-xs);letter-spacing:.2em;text-transform:uppercase;
  color:var(--fg-dim);
}
