/* ============================================================
   REVELLON — landing
   Paleta tomada del logotipo: crudo #FBF6F0 · lana #DFCAAB · oliva #748245
   ============================================================ */

:root{
  /* color */
  --cream:        #FBF6F0;
  --paper:        #F4EDE1;
  --wool:         #DFCAAB;
  --wool-soft:    #EADCC5;
  --wool-deep:    #C9B08C;
  --green:        #748245;
  --green-mid:    #5C6B36;
  --green-deep:   #37421F;
  --green-night:  #232A15;
  --terracotta:   #B5613A;
  --ink:          #1C1E18;
  --ink-soft:     #4A4E42;
  --ink-faint:    #8A8B7E;
  --line:         #E2D8C6;

  /* tipografía */
  --display: 'Instrument Sans', 'Segoe UI', system-ui, sans-serif;
  --body:    'Inter', 'Segoe UI', system-ui, sans-serif;
  --mono:    'IBM Plex Mono', ui-monospace, 'Cascadia Mono', monospace;

  /* ritmo */
  --pad:      clamp(1.25rem, 5vw, 2.5rem);
  --maxw:     1240px;
  --section:  clamp(3.25rem, 7vw, 6rem);
  --radius:   4px;
  --radius-lg: 10px;

  /* motion */
  --ease: cubic-bezier(.22,.61,.36,1);
}

/* ---------- reset ---------- */
*,*::before,*::after{ box-sizing:border-box; }
html{ -webkit-text-size-adjust:100%; scroll-behavior:smooth; }
body{
  margin:0;
  background:var(--cream);
  color:var(--ink);
  font-family:var(--body);
  font-size:clamp(1rem,.96rem + .2vw,1.0625rem);
  line-height:1.65;
  font-weight:350;
  letter-spacing:-.005em;
  -webkit-font-smoothing:antialiased;
  /* clip evita el desborde lateral sin convertir al body en contenedor
     de scroll (hidden sí lo hace, y eso rompe medidas y sticky) */
  overflow-x:hidden;
  overflow-x:clip;
}
img,svg{ max-width:100%; display:block; }
h1,h2,h3,h4,p,figure,blockquote,ol,ul{ margin:0; }
ol,ul{ padding:0; list-style:none; }
a{ color:inherit; text-decoration:none; }
button,input,textarea,select{ font:inherit; color:inherit; }
fieldset{ margin:0; padding:0; border:0; }
:focus-visible{ outline:2px solid var(--green); outline-offset:3px; border-radius:2px; }

.skip-link{
  position:absolute; left:-9999px; top:0; z-index:200;
  background:var(--green-deep); color:var(--cream);
  padding:.75rem 1.25rem; border-radius:0 0 var(--radius) 0;
}
.skip-link:focus{ left:0; }

.container{ width:100%; max-width:var(--maxw); margin-inline:auto; padding-inline:var(--pad); }
.mono{ font-family:var(--mono); font-weight:400; }
.center{ text-align:center; }

/* textura de grano sutil sobre fondos oscuros */
.grain{
  position:absolute; inset:0; pointer-events:none; opacity:.35; mix-blend-mode:overlay;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3'/%3E%3C/filter%3E%3Crect width='180' height='180' filter='url(%23n)' opacity='.5'/%3E%3C/svg%3E");
}

/* ============================================================
   NAV
   ============================================================ */
.nav{
  position:fixed; inset:0 0 auto 0; z-index:100;
  background:rgba(251,246,240,0);
  transition:background .4s var(--ease), box-shadow .4s var(--ease), backdrop-filter .4s;
}
.nav.is-stuck{
  background:rgba(251,246,240,.86);
  backdrop-filter:blur(14px) saturate(1.2);
  box-shadow:0 1px 0 rgba(28,30,24,.07);
}
.nav__inner{
  max-width:var(--maxw); margin-inline:auto; padding:1.15rem var(--pad);
  display:flex; align-items:center; gap:1.5rem;
}
.brand{ display:flex; align-items:center; gap:.6rem; margin-right:auto; }
.nav__links{ display:none; gap:1.9rem; }
.nav__links a{
  position:relative; font-size:.925rem; color:var(--ink-soft);
  transition:color .25s var(--ease);
}
.nav__links a::after{
  content:''; position:absolute; left:0; bottom:-6px; height:1.5px; width:100%;
  background:var(--green); transform:scaleX(0); transform-origin:right;
  transition:transform .35s var(--ease);
}
.nav__links a:hover, .nav__links a.is-active{ color:var(--green-deep); }
.nav__links a:hover::after, .nav__links a.is-active::after{ transform:scaleX(1); transform-origin:left; }
/* la especificidad tiene que ganarle a .btn{display:inline-flex},
   que se declara más abajo en la hoja */
.nav .nav__cta{ display:none; }

.nav__burger{
  width:44px; height:38px; display:grid; place-content:center; gap:6px;
  background:none; border:0; cursor:pointer;
}
.nav__burger span{
  display:block; width:24px; height:1.6px; background:var(--ink);
  transition:transform .35s var(--ease), opacity .25s;
}
.nav__burger[aria-expanded="true"] span:first-child{ transform:translateY(3.8px) rotate(45deg); }
.nav__burger[aria-expanded="true"] span:last-child{ transform:translateY(-3.8px) rotate(-45deg); }

.nav__progress{ height:1.5px; background:transparent; }
.nav__progress i{
  display:block; height:100%; width:0%;
  background:linear-gradient(90deg,var(--wool),var(--green));
  transition:width .1s linear;
}

/* drawer móvil */
.drawer{
  position:fixed; inset:78px 0 auto 0; z-index:99;
  background:var(--cream); border-bottom:1px solid var(--line);
  padding:1.25rem var(--pad) 2rem;
  transform:translateY(-12px); opacity:0; pointer-events:none;
  transition:opacity .3s var(--ease), transform .35s var(--ease);
}
.drawer[hidden]{ display:block; }          /* controlado por clase, no por hidden */
.drawer.is-open{ transform:none; opacity:1; pointer-events:auto; }
.drawer__links{ display:grid; margin-bottom:1.5rem; }
.drawer__links a{
  display:flex; align-items:baseline; gap:1rem;
  padding:.85rem 0; border-bottom:1px solid var(--line);
  font-family:var(--display); font-size:1.4rem; font-weight:500; letter-spacing:-.02em;
}

/* ============================================================
   LOGO  —  PNG con emblema + "EVELLON" ya compuestos.
   Proporción del archivo: ancho = alto x 3,141.
   ============================================================ */
.logo{ height:auto; width:auto; }
.logo--nav{ height:40px; }
.logo--footer{ height:54px; }

/* En el hero se ajusta al ancho de su columna, nunca al viewport, para que no
   se recorte contra el overflow:hidden. A 100cqw quedaba pegado a los bordes
   en móvil, así que se deja aire a los costados. */
.logo--hero{ width:min(560px, 86cqw); margin-inline:auto; }

.brand{ transition:opacity .3s var(--ease); }
.brand:hover{ opacity:.75; }

/* ============================================================
   BOTONES
   ============================================================ */
.btn{
  display:inline-flex; align-items:center; justify-content:center; gap:.5rem;
  padding:.72rem 1.35rem; border:1px solid transparent; border-radius:100px;
  font-size:.92rem; font-weight:500; letter-spacing:-.01em; cursor:pointer;
  transition:transform .3s var(--ease), background .3s var(--ease),
             color .3s var(--ease), border-color .3s var(--ease), box-shadow .3s var(--ease);
}
.btn--lg{ padding:.95rem 1.8rem; font-size:1rem; }
.btn--block{ width:100%; }
.btn--primary{ background:var(--green-deep); color:var(--cream); }
.btn--primary:hover{ background:var(--green); transform:translateY(-2px); box-shadow:0 8px 22px -12px rgba(55,66,31,.65); }
.btn--ghost{ border-color:var(--ink); color:var(--ink); }
.btn--ghost:hover{ background:var(--ink); color:var(--cream); transform:translateY(-2px); }
.btn--light{ background:var(--cream); color:var(--green-deep); }
.btn--light:hover{ transform:translateY(-2px); box-shadow:0 8px 22px -12px rgba(0,0,0,.5); }
.btn--outline-light{ border-color:rgba(251,246,240,.5); color:var(--cream); }
.btn--outline-light:hover{ background:rgba(251,246,240,.12); border-color:var(--cream); transform:translateY(-2px); }

/* ============================================================
   TIPOGRAFÍA COMÚN
   ============================================================ */
.eyebrow{
  display:flex; align-items:center; gap:.6rem;
  font-family:var(--mono); font-size:.7rem; font-weight:500;
  letter-spacing:.16em; text-transform:uppercase; color:var(--ink-faint);
  margin-bottom:clamp(1.25rem,3vw,2rem);
}
.eyebrow--light{ color:rgba(251,246,240,.55); }

.h2{
  font-family:var(--display); font-weight:500;
  font-size:clamp(2rem,1.35rem + 3vw,3.6rem);
  line-height:1.06; letter-spacing:-.035em; text-wrap:balance;
}
.h2--center{ text-align:center; max-width:20ch; margin-inline:auto; }
.ink-accent{ color:var(--green); font-style:italic; font-weight:400; }

.prose p + p{ margin-top:1.05em; }
.prose{ color:var(--ink-soft); max-width:62ch; }
.prose strong{ color:var(--ink); font-weight:550; }
.prose--light{ color:rgba(251,246,240,.72); }
.prose--light strong{ color:var(--cream); }
.prose--wide{ max-width:70ch; margin-top:clamp(2rem,4vw,3rem); }
.prose__big{
  font-family:var(--display); font-size:clamp(1.25rem,1.05rem + .9vw,1.7rem);
  line-height:1.28; letter-spacing:-.025em; color:var(--ink); font-weight:500;
  margin-bottom:1.4em;
}

.split{ display:grid; gap:clamp(1.75rem,4vw,3.5rem); }

/* ============================================================
   SECCIONES
   ============================================================ */
.section{ position:relative; padding-block:var(--section); }
.section--cream{ background:var(--cream); }
.section--paper{ background:var(--paper); }
.section--dark{ background:var(--green-night); color:var(--cream); overflow:hidden; }
.section--dark .h2{ color:var(--cream); }

/* ============================================================
   HERO
   ============================================================ */
/* el hero no es .section, asi que su padding inferior se declara aca:
   sin el, los botones y el lockup quedan pegados al borde de la seccion
   siguiente */
.hero{
  position:relative; overflow:hidden;
  padding-top:clamp(6.5rem,13vw,8.75rem);
  padding-bottom:clamp(3rem,6vw,5.5rem);
}
.hero__field{
  position:absolute; inset:0; pointer-events:none;
  background:
    radial-gradient(120% 90% at 78% 6%, rgba(223,202,171,.55), transparent 58%),
    radial-gradient(90% 70% at 0% 100%, rgba(116,130,69,.12), transparent 60%);
}
.fiberfield{ position:absolute; inset:0; width:100%; height:100%; opacity:.5; }
.fiberfield path{
  fill:none; stroke:var(--wool-deep); stroke-width:1;
  stroke-dasharray:var(--len); stroke-dashoffset:var(--len);
  animation:draw 2.6s var(--ease) forwards, sway 18s ease-in-out infinite;
  animation-delay:var(--d), calc(var(--d) + 2.6s);
}
@keyframes draw{ to{ stroke-dashoffset:0; } }
@keyframes sway{ 0%,100%{ transform:translateY(0);} 50%{ transform:translateY(-14px);} }

.hero__grid{ position:relative; display:grid; gap:clamp(2.5rem,6vw,4rem); align-items:center; }
/* sin min-width:0 la columna se estira hasta el min-content del lockup */
.hero__grid > *{ min-width:0; }
.hero__visual{ container-type:inline-size; }
.hero__title{
  font-family:var(--display); font-weight:500;
  font-size:clamp(2.5rem,1.5rem + 4.6vw,4.9rem);
  line-height:1.0; letter-spacing:-.042em; text-wrap:balance;
  margin-bottom:clamp(1.1rem,2.2vw,1.5rem);
}
.hero__lead{
  font-size:clamp(1.06rem,1rem + .5vw,1.35rem); line-height:1.5;
  color:var(--ink-soft); max-width:46ch; letter-spacing:-.015em;
}
.hero__actions{ display:flex; flex-wrap:wrap; gap:.75rem; margin-top:clamp(1.75rem,3.5vw,2.5rem); }

/* ============================================================
   CITAS / FRASES
   ============================================================ */
.statement{ margin-top:clamp(2rem,4.5vw,3.5rem); display:grid; gap:1.5rem; }
.statement__rule{ height:1px; background:var(--line); }
.statement blockquote{
  font-family:var(--display); font-weight:400;
  font-size:clamp(1.5rem,1.1rem + 2.2vw,3rem);
  line-height:1.14; letter-spacing:-.035em; text-wrap:balance; color:var(--ink);
}


.thesis{
  margin-top:clamp(2rem,4.5vw,3.5rem);
  font-family:var(--display); font-weight:400;
  font-size:clamp(1.8rem,1.1rem + 3.4vw,4.2rem);
  line-height:1.05; letter-spacing:-.04em; text-wrap:balance; max-width:22ch;
}
.thesis__hl{ color:var(--wool); font-style:italic; }
.thesis--sm{
  font-size:clamp(1.3rem,1rem + 1.6vw,2.2rem); max-width:26ch;
  color:rgba(251,246,240,.9);
}

.sum{
  margin-top:clamp(1.75rem,3.5vw,2.75rem); text-align:center;
  font-family:var(--display); font-weight:500;
  font-size:clamp(1.2rem,1rem + 1.3vw,2.1rem);
  letter-spacing:-.03em; color:var(--green-deep); text-wrap:balance;
}
.sum i{ color:var(--wool-deep); font-style:normal; }
/* ============================================================
   PRODUCTO
   ============================================================ */
.product{ display:grid; gap:clamp(2.5rem,6vw,4.5rem); align-items:center; }
.product__name{
  margin-top:1.5rem; font-family:var(--display); font-weight:600;
  font-size:clamp(1.35rem,1.1rem + 1.1vw,2rem); letter-spacing:-.03em; color:var(--green-deep);
}
.product__name span{ font-weight:300; color:var(--green); }
.product .prose{ margin-top:1.25rem; }

/* foto de producto — reemplazá assets/img/producto.jpg por la tuya */
.photo{ margin:0; }
.photo img{
  /* height:auto es necesario: el atributo height del <img> pisaría el aspect-ratio */
  width:100%; height:auto; aspect-ratio:4/5; object-fit:cover;
  border-radius:var(--radius-lg);
  box-shadow:0 40px 80px -60px rgba(28,30,24,.65);
}
.photo figcaption{
  margin-top:.9rem; font-size:.8rem; color:var(--ink-faint);
}
/* si todavía no hay archivo, se muestra un marcador en vez de una imagen rota */
.photo.is-empty img{ display:none; }
.photo.is-empty figcaption{ display:none; }
.photo.is-empty::before{
  content:'Foto del pellet'; display:grid; place-content:center; text-align:center;
  aspect-ratio:4/5; border:1px dashed var(--wool-deep); border-radius:var(--radius-lg);
  background:rgba(223,202,171,.14);
  font-family:var(--mono); font-size:.72rem; letter-spacing:.14em;
  text-transform:uppercase; color:var(--ink-faint);
}
.photo.is-empty::after{
  content:'Guardala como assets/img/producto.jpg (recorte 4:5)';
  display:block; margin-top:.9rem; text-align:center;
  font-size:.78rem; color:var(--ink-faint);
}

/* ============================================================
   CARDS
   ============================================================ */
.cards{ display:grid; gap:1rem; margin-top:clamp(1.75rem,3.5vw,2.75rem); }
.card{
  position:relative; padding:clamp(1.5rem,3vw,2.25rem); border-radius:var(--radius-lg);
  background:var(--cream); border:1px solid var(--line);
  transition:transform .45s var(--ease), box-shadow .45s var(--ease), border-color .45s var(--ease);
}
.card:hover{ transform:translateY(-4px); border-color:var(--wool-deep); box-shadow:0 30px 60px -50px rgba(28,30,24,.7); }
.card__icon{ width:44px; color:var(--green); margin-bottom:1.25rem; }
.card__icon svg{ width:100%; height:auto; }
.card h3{
  font-family:var(--display); font-weight:500; font-size:1.3rem;
  letter-spacing:-.025em; margin-bottom:.65rem;
}
.card p{ color:var(--ink-soft); font-size:.95rem; }
.card p + p{ margin-top:.75em; }

/* ============================================================
   ESTUDIOS (I+D)
   ============================================================ */
.papers{ display:grid; gap:1rem; margin-top:clamp(2rem,4vw,3rem); }
.paper{
  display:grid; gap:.5rem; align-content:start;
  padding:clamp(1.4rem,3vw,1.9rem);
  border:1px solid rgba(251,246,240,.16); border-radius:var(--radius-lg);
  background:rgba(251,246,240,.03);
  transition:border-color .4s var(--ease), background .4s var(--ease), transform .4s var(--ease);
}
.paper:hover{ border-color:var(--wool); background:rgba(251,246,240,.06); transform:translateY(-3px); }
.paper__meta{
  font-size:.66rem; letter-spacing:.14em; text-transform:uppercase; color:var(--wool);
}
.paper__title{
  font-family:var(--display); font-weight:500;
  font-size:clamp(1.02rem,.95rem + .45vw,1.25rem);
  line-height:1.25; letter-spacing:-.02em; color:var(--cream);
}
.paper__finding{ font-size:.92rem; color:rgba(251,246,240,.7); }
.paper__link{
  margin-top:.4rem; font-size:.82rem; color:rgba(251,246,240,.55);
  border-bottom:1px solid rgba(223,202,171,.35); justify-self:start;
  transition:color .3s var(--ease), border-color .3s var(--ease);
}
.paper__link:hover{ color:var(--cream); border-color:var(--wool); }

/* ============================================================
   CTA
   ============================================================ */
.cta{
  position:relative; overflow:hidden; color:var(--cream);
  background:linear-gradient(150deg,var(--green-deep),var(--green-night) 60%,#1A2011);
  padding-block:clamp(3.5rem,8vw,6rem);
}
.cta__bg{ position:absolute; inset:0; opacity:.35; }
.fiberfield--light path{ stroke:var(--wool); }
.cta__inner{ position:relative; }
.cta .h2{ max-width:18ch; }
.cta__text{ margin-top:1.5rem; max-width:56ch; color:rgba(251,246,240,.72); font-size:clamp(1rem,.95rem + .35vw,1.15rem); }
.cta__actions{ display:flex; flex-wrap:wrap; gap:.75rem; margin-top:clamp(2rem,4vw,2.75rem); }

/* ============================================================
   CONTACTO
   ============================================================ */
.contact{ display:grid; gap:clamp(2.5rem,6vw,4.5rem); align-items:start; }
.contact__lead{ margin-top:1.25rem; color:var(--ink-soft); max-width:36ch; }
.contact__details{ margin-top:2rem; display:grid; gap:.6rem; }
.contact__details li{ font-size:.95rem; color:var(--ink-soft); }
.contact__details a{ color:var(--green-deep); border-bottom:1px solid var(--wool-deep); }
.contact__details a:hover{ color:var(--green); }

.form{ display:grid; gap:1.25rem; }
.field{ display:grid; gap:.45rem; }
/* trampa para bots: fuera de pantalla en lugar de display:none, que
   algunos bots detectan y saltean */
.field--hp{ position:absolute; left:-9999px; width:1px; height:1px; overflow:hidden; }
/* sólo la etiqueta directa del campo lleva el estilo de dato;
   los <label> de cada opción de radio conservan la tipografía de texto */
.field > label, .field > legend{
  font-family:var(--mono); font-size:.68rem; letter-spacing:.14em;
  text-transform:uppercase; color:var(--ink-faint);
}
.field input, .field textarea{
  width:100%; padding:.85rem 0; border:0; border-bottom:1px solid var(--line);
  background:transparent; font-size:1rem; border-radius:0;
  transition:border-color .3s var(--ease);
}
.field textarea{ resize:vertical; }
.field input:focus, .field textarea:focus{ outline:none; border-color:var(--green); }
.field input:user-invalid{ border-color:var(--terracotta); }

.radios{ display:flex; flex-wrap:wrap; gap:.5rem; margin-top:.65rem; }
.radio{ font-family:var(--body); text-transform:none; letter-spacing:normal; }
.radio input{ position:absolute; opacity:0; width:0; height:0; }
.radio span{
  display:inline-block; padding:.5rem 1rem; border:1px solid var(--line);
  border-radius:100px; font-size:.88rem; color:var(--ink-soft); cursor:pointer;
  transition:all .25s var(--ease);
}
.radio span:hover{ border-color:var(--wool-deep); }
.radio input:checked + span{ background:var(--green-deep); border-color:var(--green-deep); color:var(--cream); }
.radio input:focus-visible + span{ outline:2px solid var(--green); outline-offset:3px; }

.form__foot{ display:flex; flex-wrap:wrap; align-items:center; gap:1rem; margin-top:.75rem; }
.form__status{ font-size:.88rem; color:var(--ink-soft); }
.form__status.is-error{ color:var(--terracotta); }
.form__status.is-ok{ color:var(--green); }

/* ============================================================
   FOOTER
   ============================================================ */
.footer{ background:var(--green-night); color:var(--cream); padding-block:clamp(2.5rem,5vw,3.75rem); }
.footer__inner{ display:grid; gap:2rem; }
.footer__word{ line-height:0; }
.footer__claim{ margin-top:.75rem; color:var(--wool); font-size:clamp(1rem,.95rem + .35vw,1.15rem); max-width:32ch; }
.footer__links{ display:flex; flex-wrap:wrap; align-items:center; gap:.55rem; font-size:.92rem; }
.footer__links a{ color:rgba(251,246,240,.68); transition:color .25s var(--ease); }
.footer__links a:hover{ color:var(--cream); }
.footer__links i{ color:rgba(251,246,240,.28); font-style:normal; }
.footer__details{ display:grid; gap:.4rem; font-size:.9rem; color:rgba(251,246,240,.68); }
.footer__details a{ border-bottom:1px solid rgba(223,202,171,.5); }
.footer__legal{
  font-family:var(--mono); font-size:.72rem; letter-spacing:.14em;
  color:rgba(251,246,240,.4); padding-top:1.5rem; border-top:1px solid rgba(251,246,240,.12);
}

/* ============================================================
   REVEAL
   ============================================================ */
.reveal{ opacity:0; transform:translateY(22px); }
.reveal.is-in{
  opacity:1; transform:none;
  transition:opacity .85s var(--ease), transform .85s var(--ease);
}

/* ============================================================
   BREAKPOINTS
   ============================================================ */
@media (min-width:640px){
  .cards{ grid-template-columns:repeat(2,1fr); gap:1.25rem; }
  .form{ grid-template-columns:repeat(2,1fr); }
  .field--full{ grid-column:1 / -1; }
}

@media (min-width:900px){
  .nav__links{ display:flex; }
  .nav__burger{ display:none; }
  .nav .nav__cta{ display:inline-flex; }
  .drawer{ display:none !important; }

  .hero__grid{ grid-template-columns:1.05fr .95fr; }
  .split{ grid-template-columns:1fr 1fr; align-items:start; }
  .h2--center{ margin-inline:auto; }


  .product{ grid-template-columns:1fr 1fr; }

  .papers{ grid-template-columns:repeat(2,1fr); gap:1.25rem; }

  .contact{ grid-template-columns:.85fr 1.15fr; }
  .footer__inner{ grid-template-columns:1.2fr .8fr; align-items:start; }
  .footer__legal{ grid-column:1 / -1; }
}

@media (min-width:1100px){
  .cards{ grid-template-columns:repeat(4,1fr); }
}

/* en pantallas chicas las etiquetas del ciclo compiten con el anillo */

/* offset para el nav fijo */
[id]{ scroll-margin-top:98px; }

/* ============================================================
   MOTION REDUCIDO
   ============================================================ */
@media (prefers-reduced-motion:reduce){
  html{ scroll-behavior:auto; }
  *,*::before,*::after{
    animation-duration:.001ms !important; animation-iteration-count:1 !important;
    transition-duration:.001ms !important;
  }
  .reveal{ opacity:1; transform:none; }
  .fiberfield path{ stroke-dashoffset:0 !important; }
  .paper{ opacity:1 !important; transform:none !important; }
}
