/* ═══════════════════════════════════════════════════
   ARBOLEDA NATURAL ESSENCE — 3D Immersive Landing
   ═══════════════════════════════════════════════════ */

:root{
  --ink:        #0d0616;
  --ink-2:      #160b26;
  --violet:     #6b39b8;
  --violet-lt:  #a98cf0;
  --violet-dk:  #2a1150;
  --lilac:      #cbb6f2;
  --cream:      #f6f1ea;
  --gold:       #c9a24b;
  --sand:       #e9dcc0;
  --char:       #1a1420;
  --marigold:   #e8a33d;
  --mint:       #7cc4a8;

  --txt:        #ece6f6;
  --txt-dim:    rgba(236,230,246,.62);
  --txt-faint:  rgba(236,230,246,.34);
  --hair:       rgba(203,182,242,.16);

  --serif: 'Cormorant Garamond', Georgia, serif;
  --sans:  'Outfit', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;

  --gut: clamp(20px, 5vw, 90px);
  --ease: cubic-bezier(.22,1,.36,1);
  --ease-io: cubic-bezier(.65,0,.35,1);
}

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

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

body{
  font-family:var(--sans);
  background:var(--ink);
  color:var(--txt);
  /* `clip` no crea contenedor de scroll -> position:sticky sigue funcionando */
  overflow-x:hidden;
  overflow-x:clip;
  line-height:1.6;
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
}
body.is-locked{ overflow:hidden; }

img,svg{ display:block; max-width:100%; }
a{ color:inherit; text-decoration:none; }
ul,ol{ list-style:none; }
::selection{ background:var(--violet); color:#fff; }

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

/* ─────────── PRELOADER ─────────── */
.preloader{
  position:fixed; inset:0; z-index:9999;
  display:grid; place-items:center;
  background:var(--ink);
  transition:opacity .8s var(--ease), visibility .8s;
}
.preloader.done{ opacity:0; visibility:hidden; }
.preloader__inner{ display:grid; justify-items:center; gap:22px; }
.preloader__mark{ width:78px; height:78px; }
.preloader__drop{
  stroke-dasharray:260; stroke-dashoffset:260;
  animation:draw 2s var(--ease-io) infinite;
}
@keyframes draw{ 0%{stroke-dashoffset:260} 55%{stroke-dashoffset:0} 100%{stroke-dashoffset:-260} }
.preloader__word{
  font-size:12px; letter-spacing:.62em; color:var(--txt-dim);
  font-weight:300; padding-left:.62em;
}
.preloader__bar{ width:170px; height:1px; background:var(--hair); overflow:hidden; }
.preloader__bar span{
  display:block; height:100%; width:0%;
  background:linear-gradient(90deg,var(--violet),var(--violet-lt));
  transition:width .25s linear;
}

/* ─────────── FONDO / TEXTURA ─────────── */
.glbg{
  position:fixed; inset:0; width:100%; height:100%;
  z-index:0; pointer-events:none; opacity:.92;
}
/* El grano se mantiene del tamaño del viewport y anima background-position:
   con inset negativo el elemento desbordaba y generaba scroll horizontal. */
.grain{
  position:fixed; inset:0; z-index:1; pointer-events:none;
  opacity:.045; mix-blend-mode:overlay;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='200' height='200'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='4'/%3E%3C/filter%3E%3Crect width='200' height='200' filter='url(%23n)'/%3E%3C/svg%3E");
  background-size:200px 200px;
  animation:grain 8s steps(10) infinite;
}
@keyframes grain{
  0%,100%{background-position:0 0}      10%{background-position:-24px -18px}
  20%{background-position:-52px 14px}   30%{background-position:26px -46px}
  40%{background-position:-18px 38px}   50%{background-position:-48px 22px}
  60%{background-position:34px 0}       70%{background-position:0 34px}
  80%{background-position:12px 58px}    90%{background-position:-36px 16px}
}
.vignette{
  position:fixed; inset:0; z-index:1; pointer-events:none;
  background:radial-gradient(ellipse at 50% 40%, transparent 30%, rgba(6,2,12,.55) 100%);
}

/* ─────────── CURSOR ─────────── */
.cursor{
  position:fixed; top:0; left:0; z-index:9998; pointer-events:none;
  width:34px; height:34px; margin:-17px 0 0 -17px;
  border:1px solid rgba(203,182,242,.5); border-radius:50%;
  transition:width .3s var(--ease), height .3s var(--ease), margin .3s var(--ease),
             background .3s var(--ease), border-color .3s var(--ease), opacity .3s;
  mix-blend-mode:difference; opacity:0;
}
.cursor span{
  position:absolute; inset:0; margin:auto; width:4px; height:4px;
  background:var(--lilac); border-radius:50%; transition:opacity .3s;
}
.cursor.on{ opacity:1; }
.cursor.hot{ width:70px; height:70px; margin:-35px 0 0 -35px; background:rgba(203,182,242,.1); border-color:rgba(203,182,242,.9); }
.cursor.hot span{ opacity:0; }
@media (hover:none),(pointer:coarse){ .cursor{ display:none } }

/* ─────────── BARRA DE PROGRESO ─────────── */
.scrollbar{
  position:fixed; top:0; left:0; right:0; height:2px; z-index:900;
  background:rgba(255,255,255,.05);
}
.scrollbar i{
  display:block; height:100%; width:0;
  background:linear-gradient(90deg,var(--violet-dk),var(--violet),var(--violet-lt),var(--gold));
  box-shadow:0 0 14px rgba(169,140,240,.7);
}

/* ─────────── NAV ─────────── */
.nav{
  position:fixed; top:0; left:0; right:0; z-index:800;
  display:flex; align-items:center; justify-content:space-between; gap:24px;
  padding:20px var(--gut);
  transition:background .5s var(--ease), backdrop-filter .5s, padding .5s var(--ease), border-color .5s;
  border-bottom:1px solid transparent;
}
.nav.stuck{
  padding:12px var(--gut);
  background:rgba(13,6,22,.72);
  backdrop-filter:blur(22px) saturate(1.3);
  -webkit-backdrop-filter:blur(22px) saturate(1.3);
  border-bottom-color:var(--hair);
}
.nav.hide{ transform:translateY(-110%); }
.nav{ transition:transform .5s var(--ease), background .5s var(--ease), padding .5s var(--ease), border-color .5s; }

.nav__brand{ display:flex; align-items:center; gap:11px; }
.logo{ width:36px; height:36px; filter:drop-shadow(0 3px 12px rgba(107,57,184,.55)); }
.logo--sm{ width:44px; height:44px; }
.nav__name{ display:grid; line-height:1; font-weight:600; letter-spacing:.2em; font-size:14px; }
.nav__name em{ font-style:normal; font-size:8px; letter-spacing:.3em; color:var(--txt-faint); margin-top:4px; font-weight:300; }

.nav__links{ display:flex; gap:34px; }
.nav__links a{
  font-size:13px; font-weight:300; letter-spacing:.06em; color:var(--txt-dim);
  position:relative; padding:4px 0; transition:color .3s;
}
.nav__links a::after{
  content:''; position:absolute; left:0; bottom:0; width:100%; height:1px;
  background:var(--violet-lt); transform:scaleX(0); transform-origin:right;
  transition:transform .45s var(--ease);
}
.nav__links a:hover{ color:var(--txt); }
.nav__links a:hover::after{ transform:scaleX(1); transform-origin:left; }

.burger{ display:none; background:none; border:0; cursor:pointer; width:34px; height:34px; position:relative; }
.burger i{ position:absolute; left:6px; width:22px; height:1.5px; background:var(--txt); transition:.4s var(--ease); }
.burger i:nth-child(1){ top:13px } .burger i:nth-child(2){ top:20px }
.burger.x i:nth-child(1){ top:16.5px; transform:rotate(45deg) } .burger.x i:nth-child(2){ top:16.5px; transform:rotate(-45deg) }

.drawer{
  position:fixed; inset:0; z-index:790;
  background:rgba(13,6,22,.97); backdrop-filter:blur(24px);
  display:grid; align-content:center; justify-items:center; gap:8px;
  opacity:0; visibility:hidden; transition:opacity .5s var(--ease), visibility .5s;
}
.drawer.open{ opacity:1; visibility:visible; }
.drawer a{ font-family:var(--serif); font-size:clamp(30px,8vw,46px); font-weight:300; padding:8px 0; color:var(--txt-dim); transition:color .3s; }
.drawer a:hover{ color:var(--violet-lt) }
.drawer__cta{ margin-top:22px; font-family:var(--sans)!important; font-size:14px!important; letter-spacing:.14em; text-transform:uppercase;
  border:1px solid var(--violet-lt); border-radius:100px; padding:14px 34px!important; color:var(--txt)!important; }

/* ─────────── BOTONES ─────────── */
.btn{
  position:relative; display:inline-flex; align-items:center; justify-content:center; gap:10px;
  padding:15px 34px; border-radius:100px; overflow:hidden; cursor:pointer;
  font-size:13px; font-weight:500; letter-spacing:.1em; text-transform:uppercase;
  border:1px solid transparent; transition:color .4s var(--ease), border-color .4s, transform .3s var(--ease);
  will-change:transform;
}
.btn span{ position:relative; z-index:2; }
.btn svg{ position:relative; z-index:2; }
.btn::before{
  content:''; position:absolute; inset:0; z-index:1;
  transform:scaleY(0); transform-origin:bottom;
  transition:transform .5s var(--ease);
}
.btn:hover::before{ transform:scaleY(1); transform-origin:top; }

.btn--primary{ background:linear-gradient(120deg,var(--violet),var(--violet-dk)); color:#fff; box-shadow:0 10px 34px -10px rgba(107,57,184,.85); }
.btn--primary::before{ background:linear-gradient(120deg,var(--violet-lt),var(--violet)); }
.btn--ghost{ border-color:var(--hair); color:var(--txt-dim); }
.btn--ghost::before{ background:rgba(203,182,242,.1); }
.btn--ghost:hover{ color:var(--txt); border-color:var(--violet-lt); }
.btn--nav{ padding:11px 24px; font-size:11px; background:transparent; border-color:var(--hair); color:var(--txt); }
.btn--nav::before{ background:linear-gradient(120deg,var(--violet),var(--violet-dk)); }
.btn--wa{ background:linear-gradient(120deg,#1faf54,#0d7a38); color:#fff; box-shadow:0 12px 40px -12px rgba(31,175,84,.85); }
.btn--wa::before{ background:linear-gradient(120deg,#2ad169,#159447); }

/* ─────────── TIPOGRAFÍA COMÚN ─────────── */
.tag{
  display:inline-block; font-size:10.5px; letter-spacing:.34em; text-transform:uppercase;
  color:var(--violet-lt); margin-bottom:26px; font-weight:400;
}
.h2{
  font-family:var(--serif); font-weight:300;
  font-size:clamp(38px,6.4vw,86px); line-height:1.03; letter-spacing:-.02em;
  margin-bottom:56px;
}
.h2 em{
  font-style:italic;
  background:linear-gradient(100deg,var(--violet-lt),var(--gold));
  -webkit-background-clip:text; background-clip:text; color:transparent;
}

/* ─────────── HERO ─────────── */
.hero{
  position:relative; z-index:2; overflow:hidden;
  min-height:100svh; display:grid; place-items:center;
  padding:120px var(--gut) 90px;
  perspective:1200px;
}
.hero__depth{
  position:relative; width:100%; max-width:1280px;
  transform-style:preserve-3d;
  transition:transform .6s var(--ease);
}
.layer{ transform-style:preserve-3d; }
.layer:not(.layer--content){ position:absolute; inset:0; pointer-events:none; }
.layer--content{ position:relative; z-index:5; max-width:660px; }

/* orbes */
.orb{ position:absolute; border-radius:50%; filter:blur(70px); opacity:.5; }
.orb--1{ width:480px; height:480px; top:-160px; left:-140px; background:radial-gradient(circle,#6b39b8,transparent 70%); animation:float1 18s ease-in-out infinite; }
.orb--2{ width:380px; height:380px; bottom:-120px; right:6%; background:radial-gradient(circle,#c9a24b,transparent 70%); opacity:.22; animation:float2 22s ease-in-out infinite; }
.orb--3{ width:300px; height:300px; top:34%; right:34%; background:radial-gradient(circle,#a98cf0,transparent 70%); opacity:.3; animation:float1 26s ease-in-out infinite reverse; }
@keyframes float1{ 0%,100%{transform:translate(0,0) scale(1)} 50%{transform:translate(50px,-40px) scale(1.14)} }
@keyframes float2{ 0%,100%{transform:translate(0,0) scale(1)} 50%{transform:translate(-60px,36px) scale(.88)} }

/* hojas */
.leaf{ position:absolute; color:rgba(169,140,240,.09); }
.leaf--a{ width:150px; top:2%;  right:12%; transform:rotate(24deg);  animation:sway 11s ease-in-out infinite; }
.leaf--b{ width:110px; bottom:6%; left:4%;  transform:rotate(-38deg); animation:sway 14s ease-in-out infinite reverse; }
.leaf--c{ width:190px; top:38%; right:-3%;  transform:rotate(66deg);  animation:sway 17s ease-in-out infinite; color:rgba(201,162,75,.07); }
@keyframes sway{ 0%,100%{transform:rotate(var(--r,20deg)) translateY(0)} 50%{transform:rotate(calc(var(--r,20deg) + 8deg)) translateY(-24px)} }

.hero__eyebrow{
  display:flex; align-items:center; gap:11px;
  font-size:11px; letter-spacing:.28em; text-transform:uppercase;
  color:var(--txt-dim); margin-bottom:30px; font-weight:300;
}
.hero__eyebrow i{ width:7px; height:7px; border-radius:50%; background:var(--mint); box-shadow:0 0 0 0 rgba(124,196,168,.7); animation:pulse 2.4s infinite; }
@keyframes pulse{ 70%{box-shadow:0 0 0 12px rgba(124,196,168,0)} 100%{box-shadow:0 0 0 0 rgba(124,196,168,0)} }

.hero__title{
  font-family:var(--serif); font-weight:300;
  font-size:clamp(48px,8.6vw,124px); line-height:.95; letter-spacing:-.035em;
  margin-bottom:30px;
}
.hero__title .line{ display:block; overflow:hidden; }
.hero__title .w{
  display:inline-block; transform:translateY(110%);
  animation:rise 1.1s var(--ease) forwards;
}
.hero__title .line:nth-child(1) .w:nth-child(1){ animation-delay:.15s }
.hero__title .line:nth-child(1) .w:nth-child(2){ animation-delay:.24s }
.hero__title .line:nth-child(1) .w:nth-child(3){ animation-delay:.33s }
.hero__title .line:nth-child(2) .w:nth-child(1){ animation-delay:.42s }
.hero__title .line:nth-child(2) .w:nth-child(2){ animation-delay:.51s }
@keyframes rise{ to{ transform:translateY(0) } }
.hero__title .it{
  font-style:italic;
  background:linear-gradient(100deg,var(--violet-lt) 10%,var(--gold) 90%);
  -webkit-background-clip:text; background-clip:text; color:transparent;
}

.hero__sub{
  font-size:clamp(15px,1.55vw,18px); font-weight:300; color:var(--txt-dim);
  max-width:47ch; margin-bottom:40px;
  opacity:0; animation:fadeUp 1s var(--ease) .72s forwards;
}
@keyframes fadeUp{ from{opacity:0;transform:translateY(24px)} to{opacity:1;transform:none} }

.hero__cta{ display:flex; flex-wrap:wrap; gap:14px; opacity:0; animation:fadeUp 1s var(--ease) .86s forwards; }

.hero__pills{
  display:flex; flex-wrap:wrap; gap:8px; margin-top:44px;
  opacity:0; animation:fadeUp 1s var(--ease) 1s forwards;
}
.hero__pills li{
  font-size:10.5px; letter-spacing:.16em; text-transform:uppercase; color:var(--txt-faint);
  border:1px solid var(--hair); border-radius:100px; padding:7px 15px;
}

/* jabón 3D del hero */
.layer--hero3d{ display:grid; place-items:center; }
.soap-stage{
  position:absolute; right:-2%; top:50%;
  transform:translateY(-50%);
  perspective:1000px; perspective-origin:50% 50%;
  width:420px; height:420px; display:grid; place-items:center;
}
.soap{
  position:relative; transform-style:preserve-3d;
  --w:240px; --h:78px; --d:150px;
  width:var(--w); height:var(--h);
  animation:spin 26s linear infinite;
}
@keyframes spin{ from{ transform:rotateX(-18deg) rotateY(0deg) } to{ transform:rotateX(-18deg) rotateY(360deg) } }
.soap__f{ position:absolute; border-radius:12px; }
.soap__f--front { width:var(--w); height:var(--h); transform:translateZ(calc(var(--d)/2)); }
.soap__f--back  { width:var(--w); height:var(--h); transform:rotateY(180deg) translateZ(calc(var(--d)/2)); }
.soap__f--right { width:var(--d); height:var(--h); left:calc(var(--w)/2 - var(--d)/2); transform:rotateY(90deg) translateZ(calc(var(--w)/2)); }
.soap__f--left  { width:var(--d); height:var(--h); left:calc(var(--w)/2 - var(--d)/2); transform:rotateY(-90deg) translateZ(calc(var(--w)/2)); }
.soap__f--top   { width:var(--w); height:var(--d); top:calc(var(--h)/2 - var(--d)/2); transform:rotateX(90deg) translateZ(calc(var(--h)/2)); }
.soap__f--bottom{ width:var(--w); height:var(--d); top:calc(var(--h)/2 - var(--d)/2); transform:rotateX(-90deg) translateZ(calc(var(--h)/2)); }

/* piel del jabón: lavanda por defecto (hero) */
.soap__f--front,.soap__f--back{ background:linear-gradient(160deg,#b79ae8,#7c56c4 55%,#4a2585); }
.soap__f--left,.soap__f--right{ background:linear-gradient(160deg,#9d7ddb,#5f3ba6); }
.soap__f--top{ background:linear-gradient(150deg,#d8c8f5,#a98cf0 50%,#7d5cc8); box-shadow:inset 0 0 40px rgba(255,255,255,.35); }
.soap__f--bottom{ background:#3b1c6b; }
.soap__f--top::after{
  content:'ARBOLEDA'; position:absolute; inset:0;
  display:grid; place-items:center;
  font-size:11px; letter-spacing:.42em; color:rgba(255,255,255,.55); font-weight:500;
}
.soap__shadow{
  position:absolute; bottom:52px; left:50%; transform:translateX(-50%);
  width:230px; height:34px; border-radius:50%;
  background:radial-gradient(ellipse,rgba(107,57,184,.6),transparent 70%);
  filter:blur(22px); animation:shad 26s linear infinite;
}
@keyframes shad{ 0%,100%{width:230px;opacity:.6} 50%{width:170px;opacity:.4} }

/* scroll cue */
.scrollcue{
  position:absolute; bottom:34px; left:50%; transform:translateX(-50%);
  display:grid; justify-items:center; gap:12px; z-index:6;
  font-size:9.5px; letter-spacing:.4em; color:var(--txt-faint);
  opacity:0; animation:fadeUp 1s var(--ease) 1.4s forwards;
}
.scrollcue i{ width:1px; height:52px; background:linear-gradient(var(--violet-lt),transparent); position:relative; overflow:hidden; }
.scrollcue i::after{ content:''; position:absolute; top:0; left:0; width:100%; height:16px; background:var(--gold); animation:trail 2s var(--ease-io) infinite; }
@keyframes trail{ 0%{transform:translateY(-16px)} 100%{transform:translateY(52px)} }

/* ─────────── FILOSOFÍA ─────────── */
.philo{ position:relative; z-index:2; height:220vh; }
.philo__sticky{
  position:sticky; top:0; height:100svh;
  display:grid; align-content:center;
  padding:0 var(--gut);
}
.reveal-text{
  font-family:var(--serif); font-weight:300;
  font-size:clamp(26px,4.1vw,60px); line-height:1.22; letter-spacing:-.015em;
  max-width:22ch;
}
.reveal-text .word{ display:inline-block; }
.reveal-text .ch{ color:rgba(236,230,246,.11); transition:color .35s linear; }
.reveal-text .ch.lit{ color:var(--txt); }

.philo__stats{ display:flex; flex-wrap:wrap; gap:clamp(30px,6vw,80px); margin-top:64px; }
.stat{ display:grid; gap:6px; }
.stat b{
  font-family:var(--serif); font-size:clamp(40px,5.4vw,72px); font-weight:300; line-height:1;
  background:linear-gradient(140deg,var(--violet-lt),var(--gold));
  -webkit-background-clip:text; background-clip:text; color:transparent;
}
.stat em{ font-style:normal; font-size:11px; letter-spacing:.2em; text-transform:uppercase; color:var(--txt-faint); }

/* ─────────── PRODUCTOS · RAIL 3D ─────────── */
.products{ position:relative; z-index:2; }
.products__sticky{
  position:sticky; top:0; height:100svh; overflow:hidden;
  display:flex; flex-direction:column; justify-content:center;
}
.products__head{
  position:absolute; top:clamp(84px,12vh,128px); left:var(--gut); right:var(--gut);
  display:flex; align-items:baseline; justify-content:space-between; z-index:10;
}
.products__head .tag{ margin:0 }
.products__counter{ display:flex; align-items:baseline; gap:4px; font-family:var(--serif); }
.products__counter b{ font-size:32px; font-weight:300; color:var(--violet-lt); }
.products__counter i{ color:var(--txt-faint); font-style:normal; }
.products__counter span{ font-size:15px; color:var(--txt-faint); }

.rail{
  display:flex; gap:clamp(24px,3vw,52px);
  padding-inline:var(--gut);
  will-change:transform;
  perspective:1600px;
}
.card{
  position:relative; flex:0 0 auto;
  width:min(880px, 84vw); min-height:min(560px, 62vh);
  display:grid; grid-template-columns:1fr 1fr; gap:clamp(20px,3vw,48px); align-items:center;
  padding:clamp(26px,3.2vw,52px);
  border:1px solid var(--hair); border-radius:26px;
  background:linear-gradient(150deg, rgba(255,255,255,.045), rgba(255,255,255,.012));
  backdrop-filter:blur(18px); -webkit-backdrop-filter:blur(18px);
  transform-style:preserve-3d;
  transition:border-color .5s;
  overflow:hidden;
}
.card:hover{ border-color:rgba(203,182,242,.34); }
.card__glow{
  position:absolute; inset:-1px; border-radius:26px; pointer-events:none; opacity:0;
  background:radial-gradient(500px circle at var(--mx,50%) var(--my,50%), rgba(169,140,240,.16), transparent 62%);
  transition:opacity .4s;
}
.card:hover .card__glow{ opacity:1; }

.card__3d{ display:grid; place-items:center; height:100%; min-height:280px; perspective:900px; }
.card__num{
  font-family:var(--serif); font-size:13px; letter-spacing:.3em; color:var(--gold); display:block; margin-bottom:14px;
}
.card__body h3{
  font-family:var(--serif); font-weight:300; font-size:clamp(30px,3.4vw,50px);
  line-height:1.02; letter-spacing:-.02em; margin-bottom:18px;
}
.card__body h3 em{
  font-style:italic;
  background:linear-gradient(100deg,var(--violet-lt),var(--gold));
  -webkit-background-clip:text; background-clip:text; color:transparent;
}
.card__lead{ font-size:14.5px; font-weight:300; color:var(--txt-dim); margin-bottom:22px; max-width:44ch; }
.card__list{ display:grid; gap:9px; margin-bottom:22px; }
.card__list li{
  position:relative; padding-left:22px; font-size:13.5px; font-weight:300; color:var(--txt-dim);
}
.card__list li::before{
  content:''; position:absolute; left:0; top:.58em;
  width:7px; height:7px; border-radius:50%;
  background:var(--violet-lt); box-shadow:0 0 10px rgba(169,140,240,.8);
}
.card__for{
  font-size:12.5px; font-weight:300; color:var(--txt-faint);
  border-left:2px solid var(--hair); padding-left:14px; margin-bottom:26px;
}
.card__for b{ color:var(--lilac); font-weight:500; }

/* variantes de jabón por producto */
.soap--card{ --w:200px; --h:66px; --d:126px; animation-duration:20s; }

.soap--rice .soap__f--front,.soap--rice .soap__f--back{ background:linear-gradient(160deg,#f2e8d4,#ddcbaa 55%,#bda87f); }
.soap--rice .soap__f--left,.soap--rice .soap__f--right{ background:linear-gradient(160deg,#e6d8bd,#c5b28c); }
.soap--rice .soap__f--top{ background:linear-gradient(150deg,#fbf5e8,#e9dcc0 50%,#cfbd9a); }
.soap--rice .soap__f--bottom{ background:#a89571; }
.soap--rice .soap__f--top::after{ color:rgba(90,66,30,.5); }

.soap--duo .soap__f--front,.soap--duo .soap__f--back{ background:linear-gradient(180deg,#241c2c 0 50%,#e8a33d 50% 100%); }
.soap--duo .soap__f--left,.soap--duo .soap__f--right{ background:linear-gradient(180deg,#191320 0 50%,#cd8b2c 50% 100%); }
.soap--duo .soap__f--top{ background:linear-gradient(150deg,#3a2f47,#1a1420 60%,#100c15); }
.soap--duo .soap__f--bottom{ background:#a86e1e; }
.soap--duo .soap__f--top::after{ color:rgba(232,163,61,.62); }

.soap--brow{ --w:150px; --h:58px; --d:112px; }
.soap--brow .soap__f--front,.soap--brow .soap__f--back{ background:linear-gradient(160deg,#f0e9fb,#d9caf5 55%,#b8a1e6); }
.soap--brow .soap__f--left,.soap--brow .soap__f--right{ background:linear-gradient(160deg,#e5daf8,#c2ade9); }
.soap--brow .soap__f--top{ background:linear-gradient(150deg,#fbf8ff,#e6dcfa 50%,#cbb6f2); }
.soap--brow .soap__f--bottom{ background:#a892dc; }
.soap--brow .soap__f--top::after{ content:'CEJAS'; color:rgba(90,55,150,.5); }

/* frasco 3D · Aclarent */
.bottle{
  position:relative; width:150px; transform-style:preserve-3d;
  animation:bob 6s ease-in-out infinite;
}
@keyframes bob{ 0%,100%{transform:rotateY(-14deg) translateY(0)} 50%{transform:rotateY(14deg) translateY(-16px)} }
.bottle__cap{
  width:64px; height:48px; margin:0 auto; border-radius:6px 6px 3px 3px;
  background:linear-gradient(100deg,#3a3a3a,#0f0f0f 40%,#2b2b2b 60%,#080808);
  box-shadow:inset 0 -5px 10px rgba(0,0,0,.6);
  position:relative; z-index:3;
}
.bottle__cap::after{
  content:''; position:absolute; inset:0;
  background:repeating-linear-gradient(90deg,transparent 0 3px,rgba(255,255,255,.09) 3px 4px);
  border-radius:inherit;
}
.bottle__neck{ width:44px; height:14px; margin:-2px auto 0; background:linear-gradient(100deg,#6b4a1d,#3a2710); position:relative; z-index:2; }
.bottle__glass{
  position:relative; width:132px; height:196px; margin:0 auto; border-radius:10px 10px 16px 16px;
  background:linear-gradient(100deg,#8a5a1c 0%,#5c3a10 22%,#a06e26 48%,#4d300d 78%,#7a4f18 100%);
  box-shadow:inset -14px 0 26px rgba(0,0,0,.55), inset 14px 0 22px rgba(255,214,140,.16),
             0 24px 54px -18px rgba(0,0,0,.85);
  overflow:hidden;
}
.bottle__liquid{
  position:absolute; left:0; right:0; bottom:0; height:74%;
  background:linear-gradient(180deg,rgba(212,155,66,.5),rgba(120,74,18,.9));
}
.bottle__label{
  position:absolute; left:9px; right:9px; top:34px; bottom:38px;
  border-radius:5px; background:linear-gradient(170deg,#fdfbf6,#efe7d8);
  display:grid; align-content:center; justify-items:center; gap:4px; text-align:center;
  box-shadow:0 3px 12px rgba(0,0,0,.35);
}
.bottle__label b{ font-family:var(--serif); font-size:22px; font-weight:600; color:#1b4d8f; letter-spacing:.01em; }
.bottle__label i{ font-style:normal; font-size:8.5px; letter-spacing:.08em; background:#2e5e3a; color:#fff; padding:2px 8px; border-radius:20px; }
.bottle__label span{ font-size:7px; letter-spacing:.2em; color:#8a6d2e; margin-top:4px; }
.bottle__shine{
  position:absolute; top:0; bottom:0; left:16%; width:14px;
  background:linear-gradient(90deg,transparent,rgba(255,255,255,.3),transparent);
  filter:blur(3px);
}

.rail__hint{
  position:absolute; bottom:clamp(24px,5vh,52px); left:var(--gut);
  display:flex; align-items:center; gap:11px;
  font-size:10px; letter-spacing:.24em; text-transform:uppercase; color:var(--txt-faint);
}
.rail__hint i{
  width:34px; height:1px; background:var(--txt-faint); position:relative; overflow:hidden;
}
.rail__hint i::after{ content:''; position:absolute; inset:0; width:12px; background:var(--gold); animation:slide 1.8s var(--ease-io) infinite; }
@keyframes slide{ 0%{transform:translateX(-12px)} 100%{transform:translateX(34px)} }

/* ─────────── INGREDIENTES ─────────── */
.ingr{ position:relative; z-index:2; padding:clamp(110px,16vh,190px) 0; }
.ingr__grid{ display:grid; grid-template-columns:repeat(auto-fit,minmax(250px,1fr)); gap:20px; }
.ing{
  position:relative; padding:36px 30px 34px;
  border:1px solid var(--hair); border-radius:20px;
  background:linear-gradient(160deg,rgba(255,255,255,.04),rgba(255,255,255,.008));
  transition:transform .5s var(--ease), border-color .5s, box-shadow .5s;
  transform-style:preserve-3d; will-change:transform;
}
.ing:hover{ border-color:color-mix(in srgb, var(--ing) 45%, transparent); box-shadow:0 26px 60px -26px color-mix(in srgb, var(--ing) 55%, transparent); }
.ing__ico{ width:52px; height:52px; color:var(--ing); margin-bottom:24px; filter:drop-shadow(0 5px 16px color-mix(in srgb, var(--ing) 55%, transparent)); transform:translateZ(30px); }
.ing h4{ font-family:var(--serif); font-size:24px; font-weight:400; margin-bottom:11px; transform:translateZ(18px); }
.ing p{ font-size:13.5px; font-weight:300; color:var(--txt-dim); transform:translateZ(10px); }

/* ─────────── RITUAL ─────────── */
.ritual{ position:relative; z-index:2; padding:clamp(80px,12vh,140px) 0 clamp(110px,16vh,190px); }
.steps{ display:grid; grid-template-columns:repeat(auto-fit,minmax(260px,1fr)); gap:clamp(24px,3vw,44px); }
.step{ position:relative; padding-top:30px; border-top:1px solid var(--hair); }
.step__n{
  font-family:var(--serif); font-size:52px; font-weight:300; line-height:1;
  color:transparent; -webkit-text-stroke:1px rgba(203,182,242,.34);
  display:block; margin-bottom:18px;
}
.step h4{ font-size:19px; font-weight:500; margin-bottom:11px; letter-spacing:-.01em; }
.step p{ font-size:14px; font-weight:300; color:var(--txt-dim); }

.note{
  margin-top:56px; padding:26px 30px; border-radius:16px;
  border:1px solid rgba(232,163,61,.24); background:rgba(232,163,61,.05);
  font-size:13.5px; font-weight:300; color:var(--txt-dim); max-width:78ch;
}
.note b{ color:var(--marigold); font-weight:600; }

/* ─────────── TESTIMONIOS ─────────── */
.testi{ position:relative; z-index:2; padding:0 0 clamp(110px,16vh,190px); }
.testi__grid{ display:grid; grid-template-columns:repeat(auto-fit,minmax(280px,1fr)); gap:20px; }
.quote{
  padding:34px 30px; border-radius:20px;
  border:1px solid var(--hair);
  background:linear-gradient(160deg,rgba(255,255,255,.04),rgba(255,255,255,.008));
  position:relative;
}
.quote::before{
  content:'“'; position:absolute; top:2px; left:20px;
  font-family:var(--serif); font-size:82px; color:rgba(203,182,242,.14); line-height:1;
}
.quote p{ font-family:var(--serif); font-size:19px; font-weight:300; font-style:italic; line-height:1.5; margin-bottom:20px; position:relative; }
.quote cite{ font-style:normal; font-size:11px; letter-spacing:.18em; text-transform:uppercase; color:var(--txt-faint); }

/* ─────────── CTA ─────────── */
.cta{ position:relative; z-index:2; padding:clamp(110px,18vh,220px) 0; overflow:hidden; text-align:center; }
.cta__aura{
  position:absolute; top:50%; left:50%; transform:translate(-50%,-50%);
  width:min(1000px,120vw); aspect-ratio:1; border-radius:50%;
  background:radial-gradient(circle,rgba(107,57,184,.35),transparent 62%);
  filter:blur(50px); animation:float1 20s ease-in-out infinite;
}
.cta__wrap{ position:relative; display:grid; justify-items:center; }
.cta__title{
  font-family:var(--serif); font-weight:300;
  font-size:clamp(46px,9vw,132px); line-height:.94; letter-spacing:-.035em; margin-bottom:24px;
}
.cta__title em{
  font-style:italic;
  background:linear-gradient(100deg,var(--violet-lt),var(--gold));
  -webkit-background-clip:text; background-clip:text; color:transparent;
}
.cta__sub{ font-size:16px; font-weight:300; color:var(--txt-dim); max-width:52ch; margin-bottom:40px; }
.cta__actions{ display:flex; flex-wrap:wrap; gap:14px; justify-content:center; }
.cta__fine{ margin-top:34px; font-size:11px; color:var(--txt-faint); }
.cta__fine code{ font-family:ui-monospace,Menlo,monospace; color:var(--lilac); background:rgba(203,182,242,.1); padding:2px 7px; border-radius:5px; }

/* ─────────── FORMULARIO DE LEAD ─────────── */
.lead{
  width:min(860px,100%); margin-top:12px; text-align:left;
  padding:clamp(26px,3.4vw,44px);
  border:1px solid var(--hair); border-radius:24px;
  background:linear-gradient(155deg,rgba(255,255,255,.05),rgba(255,255,255,.014));
  backdrop-filter:blur(20px); -webkit-backdrop-filter:blur(20px);
}
.lead__grid{ display:grid; grid-template-columns:repeat(auto-fit,minmax(230px,1fr)); gap:18px; }
.field{ display:grid; gap:8px; }
.field--full{ grid-column:1/-1; }
.field > span{
  font-size:10.5px; letter-spacing:.2em; text-transform:uppercase;
  color:var(--txt-faint); font-weight:400;
}
.field > span i{ font-style:normal; text-transform:none; letter-spacing:.04em; opacity:.7; }

.field input,.field select,.field textarea{
  width:100%; font-family:var(--sans); font-size:14.5px; font-weight:300;
  color:var(--txt); background:rgba(13,6,22,.5);
  border:1px solid var(--hair); border-radius:12px;
  padding:13px 15px; resize:vertical;
  transition:border-color .3s, background .3s, box-shadow .3s;
}
.field textarea{ min-height:88px; }
.field input::placeholder,.field textarea::placeholder{ color:rgba(236,230,246,.26); }
.field input:focus,.field select:focus,.field textarea:focus{
  outline:none; border-color:var(--violet-lt); background:rgba(13,6,22,.75);
  box-shadow:0 0 0 4px rgba(169,140,240,.14);
}
.field select{
  appearance:none; cursor:pointer; padding-right:38px;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 8'%3E%3Cpath d='M1 1l5 5 5-5' stroke='%23a98cf0' stroke-width='1.6' fill='none' stroke-linecap='round'/%3E%3C/svg%3E");
  background-repeat:no-repeat; background-position:right 15px center; background-size:11px;
}
.field select option{ background:#1a0f2b; color:var(--txt); }

/* honeypot: invisible para personas, presente para bots */
.lead__hp{ position:absolute; left:-9999px; width:1px; height:1px; overflow:hidden; }

.lead__actions{ display:flex; flex-wrap:wrap; gap:13px; margin-top:26px; }
.lead__actions .btn{ flex:1 1 auto; }

.lead__msg{ margin-top:16px; font-size:13.5px; font-weight:300; min-height:1.2em; }
.lead__msg.is-ok{ color:var(--mint); }
.lead__msg.is-error{ color:#ff9c8a; }

.lead__privacy{
  margin-top:14px; font-size:11px; font-weight:300; line-height:1.6;
  color:var(--txt-faint); border-top:1px solid var(--hair); padding-top:14px;
}

button.btn{ font-family:var(--sans); }
button.btn:disabled{ opacity:.55; cursor:wait; }

@media (max-width:640px){
  .lead{ padding:24px 20px; border-radius:18px; }
  .lead__grid{ grid-template-columns:1fr; gap:15px; }
  .lead__actions{ flex-direction:column; }
}

/* ─────────── DIAGNÓSTICO DE PIEL ─────────── */
.quiz{ position:relative; z-index:2; padding:0 0 clamp(110px,16vh,190px); }
.quiz__intro{
  font-size:15.5px; font-weight:300; color:var(--txt-dim);
  max-width:58ch; margin:-34px 0 42px;
}
.quiz__box{
  width:min(760px,100%);
  border:1px solid var(--hair); border-radius:24px; overflow:hidden;
  background:linear-gradient(155deg,rgba(255,255,255,.05),rgba(255,255,255,.014));
  backdrop-filter:blur(20px); -webkit-backdrop-filter:blur(20px);
}
.quiz__bar{ height:3px; background:rgba(203,182,242,.1); }
.quiz__bar i{
  display:block; height:100%; width:0;
  background:linear-gradient(90deg,var(--violet),var(--violet-lt),var(--gold));
  transition:width .5s var(--ease);
}
.quiz__stage{ padding:clamp(28px,3.6vw,46px); }
.quiz__ns{ font-size:14px; color:var(--txt-dim); font-weight:300; }

.quiz__count{
  display:block; font-size:10px; letter-spacing:.26em; text-transform:uppercase;
  color:var(--gold); margin-bottom:16px;
}
.quiz__q{
  font-family:var(--serif); font-weight:300; font-size:clamp(24px,3vw,36px);
  line-height:1.12; letter-spacing:-.015em; margin-bottom:10px;
}
.quiz__help{ font-size:13.5px; font-weight:300; color:var(--txt-faint); margin-bottom:26px; }

.quiz__opts{ display:grid; gap:9px; }
.quiz__opt{
  display:flex; align-items:center; justify-content:space-between; gap:14px;
  width:100%; text-align:left; cursor:pointer;
  padding:16px 20px; border-radius:13px;
  border:1px solid var(--hair); background:rgba(13,6,22,.4);
  font-family:var(--sans); font-size:14.5px; font-weight:300; color:var(--txt);
  transition:border-color .3s, background .3s, transform .25s var(--ease);
}
.quiz__opt i{ font-style:normal; color:var(--violet-lt); opacity:0; transform:translateX(-6px);
  transition:opacity .3s, transform .3s var(--ease); }
.quiz__opt:hover{ border-color:var(--violet-lt); background:rgba(107,57,184,.16); transform:translateX(4px); }
.quiz__opt:hover i{ opacity:1; transform:none; }
.quiz__opt:focus-visible{ outline:2px solid var(--violet-lt); outline-offset:2px; }

.quiz__back{
  margin-top:20px; font-family:var(--sans); font-size:12.5px; font-weight:300;
  color:var(--txt-faint); background:none; border:0; cursor:pointer; padding:6px 0;
  transition:color .3s;
}
.quiz__back:hover{ color:var(--lilac); }

.quiz__title{
  font-family:var(--serif); font-weight:300; font-size:clamp(26px,3.4vw,42px);
  line-height:1.08; letter-spacing:-.02em; margin-bottom:16px;
}
.quiz__title em{
  font-style:italic;
  background:linear-gradient(100deg,var(--violet-lt),var(--gold));
  -webkit-background-clip:text; background-clip:text; color:transparent;
}
.quiz__why{ font-size:15px; font-weight:300; color:var(--txt-dim); margin-bottom:26px; max-width:52ch; }

.quiz__routine{
  padding:22px 24px; border-radius:14px; margin-bottom:28px;
  border:1px solid var(--hair); background:rgba(203,182,242,.04);
}
.quiz__routine h4{
  font-size:10.5px; letter-spacing:.22em; text-transform:uppercase;
  color:var(--txt-faint); font-weight:400; margin-bottom:14px;
}
.quiz__routine ol{ display:grid; gap:10px; counter-reset:r; }
.quiz__routine li{
  position:relative; padding-left:30px; font-size:13.5px; font-weight:300; color:var(--txt-dim);
  counter-increment:r;
}
.quiz__routine li::before{
  content:counter(r); position:absolute; left:0; top:0;
  width:20px; height:20px; border-radius:50%;
  display:grid; place-items:center; font-size:10px; font-weight:600;
  background:rgba(107,57,184,.4); color:var(--lilac);
}
.quiz__cta{ display:flex; flex-wrap:wrap; gap:11px; }
.quiz__disc{
  margin-top:22px; padding-top:16px; border-top:1px solid var(--hair);
  font-size:11px; font-weight:300; line-height:1.6; color:var(--txt-faint);
}

/* ─────────── PREGUNTAS FRECUENTES ─────────── */
.faq{ position:relative; z-index:2; padding:0 0 clamp(110px,16vh,190px); }
.faq__list{ display:grid; gap:2px; max-width:900px; }
.faq__i{ border-bottom:1px solid var(--hair); }
.faq__i summary{
  display:flex; align-items:center; justify-content:space-between; gap:18px;
  padding:22px 4px; cursor:pointer; list-style:none;
  transition:color .3s;
}
.faq__i summary::-webkit-details-marker{ display:none; }
.faq__i summary h3{
  font-family:var(--serif); font-size:clamp(18px,2.1vw,24px);
  font-weight:400; line-height:1.25; letter-spacing:-.01em;
}
.faq__i summary::after{
  content:''; flex:0 0 auto; width:13px; height:13px;
  border-right:1.5px solid var(--violet-lt); border-bottom:1.5px solid var(--violet-lt);
  transform:rotate(45deg) translateY(-3px);
  transition:transform .4s var(--ease);
}
.faq__i[open] summary::after{ transform:rotate(-135deg) translateY(-3px); }
.faq__i summary:hover h3{ color:var(--lilac); }
.faq__i p{
  padding:0 44px 26px 4px; max-width:74ch;
  font-size:14.5px; font-weight:300; color:var(--txt-dim);
  animation:faqIn .45s var(--ease);
}
@keyframes faqIn{ from{ opacity:0; transform:translateY(-8px) } to{ opacity:1; transform:none } }

@media (max-width:640px){
  .quiz__stage{ padding:24px 20px; }
  .quiz__box{ border-radius:18px; }
  .quiz__opt{ padding:14px 16px; font-size:14px; }
  .quiz__cta{ flex-direction:column; }
  .quiz__cta .btn{ width:100%; }
  .faq__i p{ padding-right:4px; }
}

/* ─────────── FOOTER ─────────── */
.foot{
  position:relative; z-index:2;
  border-top:1px solid var(--hair);
  padding:clamp(48px,7vh,72px) 0 40px;
  background:linear-gradient(180deg, transparent, rgba(13,6,22,.6));
}
.foot__wrap{ display:grid; gap:28px; justify-items:center; text-align:center; }

.foot__brand{ display:flex; align-items:center; gap:13px; }
.foot__brand div{ display:grid; text-align:left; line-height:1.1; }
.foot__brand b{ font-size:15px; letter-spacing:.22em; font-weight:600; }
.foot__brand em{ font-style:normal; font-size:8.5px; letter-spacing:.3em; color:var(--txt-faint); }

.foot__nav{ display:flex; flex-wrap:wrap; justify-content:center; gap:10px 28px; }
.foot__nav a{
  font-size:12.5px; font-weight:300; letter-spacing:.04em; color:var(--txt-dim);
  position:relative; padding:3px 0; transition:color .3s;
}
.foot__nav a::after{
  content:''; position:absolute; left:0; bottom:0; width:100%; height:1px;
  background:var(--violet-lt); transform:scaleX(0); transform-origin:right;
  transition:transform .4s var(--ease);
}
.foot__nav a:hover{ color:var(--txt); }
.foot__nav a:hover::after{ transform:scaleX(1); transform-origin:left; }

.foot__legal{
  font-size:11.5px; font-weight:300; color:var(--txt-faint);
  max-width:64ch; line-height:1.7;
  padding-top:26px; border-top:1px solid var(--hair);
  width:min(680px,100%);
}

/* Dos filas, una por línea. Los hijos deben ser elementos, no texto suelto. */
.foot__copy{
  display:grid; gap:8px; justify-items:center;
  font-size:11px; color:var(--txt-faint); line-height:1.5;
}
.foot__by a{
  color:var(--lilac); border-bottom:1px solid rgba(203,182,242,.3);
  padding-bottom:1px; transition:color .3s, border-color .3s;
}
.foot__by a:hover{ color:var(--gold); border-color:var(--gold); }

@media (max-width:640px){
  .foot__nav{ gap:9px 18px; }
  .foot__nav a{ font-size:12px; }
  .foot__legal{ font-size:11px; }
}

/* ─────────── REVEAL ─────────── */
[data-reveal]{ opacity:0; transform:translateY(38px); transition:opacity .9s var(--ease), transform .9s var(--ease); }
[data-reveal].in{ opacity:1; transform:none; }

/* ─────────── RESPONSIVE ─────────── */
@media (max-width:1080px){
  .soap-stage{ width:320px; height:320px; right:-8%; opacity:.55; }
  .card{ width:min(760px,88vw); }
}
/* En pantallas pequeñas el rail horizontal se convierte en pila vertical:
   el scroll-jacking lateral es hostil en táctil. */
@media (max-width:900px){
  .nav__links,.btn--nav{ display:none; }
  .burger{ display:block; }
  .layer--hero3d{ display:none; }
  .philo{ height:190vh; }

  .products{ height:auto!important; padding:clamp(90px,14vh,150px) 0; }
  .products__sticky{ position:static; height:auto; overflow:visible; display:block; }
  .products__head{ position:static; padding:0 var(--gut); margin-bottom:34px; }
  .rail{
    flex-direction:column; gap:20px; perspective:none;
    transform:none!important; padding-inline:var(--gut);
  }
  .card{
    width:100%; min-height:auto; grid-template-columns:1fr;
    transform:none!important; opacity:1!important; pointer-events:auto!important;
  }
  .card__3d{ min-height:210px; }
  .soap--card{ --w:160px; --h:54px; --d:100px; }
  .bottle{ transform:scale(.82); }
  .rail__hint{ display:none; }
}
@media (max-width:640px){
  :root{ --gut:20px; }
  .hero{ padding:110px 20px 80px; }
  .card{ padding:26px 22px; border-radius:20px; }
  .card__list li{ font-size:13px; }
  .philo__stats{ gap:26px; }
}

@media (prefers-reduced-motion: reduce){
  *,*::before,*::after{ animation-duration:.01ms!important; animation-iteration-count:1!important; transition-duration:.01ms!important; }
  .glbg{ display:none; }
  [data-reveal]{ opacity:1; transform:none; }
  .hero__title .w{ transform:none; }
  .hero__sub,.hero__cta,.hero__pills,.scrollcue{ opacity:1; }
}
