/* ===================== Radica — styles ===================== */
*,*::before,*::after{box-sizing:border-box;margin:0}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}

:root{
  --bg:#0E0C0B;
  --bg-2:#141110;
  --surface:#1B1714;
  --paper:#F6F1E7;
  --paper-2:#FBF7EF;
  --ink:#F6F1E7;
  --muted:#A79E90;
  --muted-2:#7C7466;
  --red:#F0222E;
  --red-2:#FF5A3C;
  --amber:#FFB020;
  --line:rgba(246,241,231,.10);
  --line-2:rgba(246,241,231,.16);
  --grad:linear-gradient(115deg,#F0222E 0%,#FF5A3C 55%,#FFB020 110%);
  --maxw:1200px;
  --pad:clamp(1.25rem,5vw,3.5rem);
  --f-display:"Bricolage Grotesque",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif;
  --f-body:"Inter",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif;
  --s-0:clamp(1rem,.95rem + .25vw,1.12rem);
  --s-1:clamp(1.15rem,1.05rem + .5vw,1.4rem);
  --s-2:clamp(1.6rem,1.25rem + 1.7vw,2.6rem);
  --s-3:clamp(2rem,1.4rem + 3vw,3.8rem);
  --s-4:clamp(2.6rem,1.5rem + 5.4vw,6rem);
}

body{
  background:var(--bg);color:var(--ink);
  font-family:var(--f-body);font-size:var(--s-0);line-height:1.6;
  -webkit-font-smoothing:antialiased;overflow-x:hidden;
}
h1,h2,h3{font-family:var(--f-display);font-weight:700;line-height:1.03;letter-spacing:-.02em}
a{color:inherit;text-decoration:none}
img,svg,canvas{display:block;max-width:100%}
strong{color:var(--ink);font-weight:600}
em{font-style:normal}
::selection{background:var(--red);color:#fff}

.wrap{max-width:var(--maxw);margin-inline:auto;padding-inline:var(--pad)}

/* ---------- grain + cursor glow ---------- */
.grain{position:fixed;inset:0;z-index:1;pointer-events:none;opacity:.05;mix-blend-mode:overlay;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='140' height='140'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E")}
.glow{position:fixed;width:44vmax;height:44vmax;left:0;top:0;z-index:0;pointer-events:none;
  transform:translate(-50%,-50%);border-radius:50%;
  background:radial-gradient(circle,rgba(240,34,46,.16),rgba(240,34,46,0) 62%);
  transition:opacity .6s ease;opacity:0}
.glow.on{opacity:1}

/* ---------- preloader ---------- */
.preloader{position:fixed;inset:0;z-index:200;background:var(--bg);display:grid;place-items:center;
  transition:opacity .6s ease,visibility .6s}
.preloader.done{opacity:0;visibility:hidden}
.preloader__mark svg{animation:pl 1.4s ease-in-out infinite alternate}
@keyframes pl{from{transform:translateY(0) rotate(-4deg)}to{transform:translateY(-10px) rotate(4deg)}}

/* ---------- buttons ---------- */
.btn{position:relative;display:inline-flex;align-items:center;justify-content:center;gap:.5rem;
  font-family:var(--f-display);font-weight:500;font-size:var(--s-0);
  padding:.8rem 1.35rem;border-radius:999px;border:1px solid transparent;
  transition:transform .18s ease,box-shadow .25s ease,background-color .2s,color .2s,border-color .2s;
  will-change:transform}
.btn--lg{padding:1rem 1.9rem;font-size:var(--s-1)}
.btn--grad{color:#fff;background:var(--grad);background-size:160% 160%;
  box-shadow:0 10px 34px -12px rgba(240,34,46,.7);animation:gradShift 7s ease infinite}
.btn--grad:hover{transform:translateY(-3px);box-shadow:0 18px 46px -14px rgba(240,34,46,.85)}
@keyframes gradShift{0%,100%{background-position:0% 50%}50%{background-position:100% 50%}}
.btn--line{color:var(--ink);border-color:var(--line-2);background:rgba(246,241,231,.02)}
.btn--line:hover{border-color:var(--ink);transform:translateY(-3px)}

/* ---------- nav ---------- */
.nav{position:fixed;inset:0 0 auto;z-index:90;transition:background-color .3s,border-color .3s,backdrop-filter .3s}
.nav.scrolled{background:rgba(14,12,11,.72);backdrop-filter:blur(12px) saturate(160%);border-bottom:1px solid var(--line)}
.nav__inner{display:flex;align-items:center;gap:1.5rem;height:74px}
.brand{display:flex;align-items:center;gap:.6rem;font-family:var(--f-display);font-weight:700;font-size:1.15rem}
.brand__mark{border-radius:8px;transition:transform .4s cubic-bezier(.2,.8,.2,1)}
.brand:hover .brand__mark{transform:rotate(-8deg) scale(1.05)}
.nav__links{display:flex;gap:1.7rem;margin-left:auto;font-family:var(--f-display);font-size:.95rem}
.nav__links a{color:var(--muted);position:relative;transition:color .2s}
.nav__links a::after{content:"";position:absolute;left:0;right:100%;bottom:-4px;height:1px;background:var(--red);transition:right .25s ease}
.nav__links a:hover{color:var(--ink)}
.nav__links a:hover::after{right:0}
.nav__cta{padding:.62rem 1.1rem;font-size:.92rem}

/* ---------- hero ---------- */
.hero{position:relative;min-height:100svh;display:flex;align-items:center;padding-block:8rem 4rem;isolation:isolate;overflow:hidden}
.hero__canvas{position:absolute;inset:0;z-index:-2;width:100%;height:100%}
.hero__veil{position:absolute;inset:0;z-index:-1;
  background:
    radial-gradient(60% 55% at 22% 62%,rgba(14,12,11,.72),transparent 72%),
    radial-gradient(60% 60% at 74% 34%,rgba(240,34,46,.14),transparent 62%),
    linear-gradient(180deg,transparent 45%,rgba(14,12,11,.55) 82%,var(--bg) 100%)}
.hero__inner{position:relative}
.eyebrow{font-family:var(--f-display);text-transform:uppercase;letter-spacing:.28em;font-size:.78rem;color:var(--red-2);margin-bottom:1.6rem}
.hero__title{font-size:var(--s-4);font-weight:800;max-width:16ch}
.hero__title .line{display:block;padding-block:.02em}
.hero__title .line>span{display:block;opacity:1;transform:none}
.js .hero__title .line>span{transition:opacity .85s cubic-bezier(.16,1,.3,1),transform .85s cubic-bezier(.16,1,.3,1)}
.js .hero__title:not(.in) .line>span{opacity:0;transform:translateY(42px)}
.js .hero__title.in .line:nth-child(2)>span{transition-delay:.1s}
.hero__title em{background:var(--grad);-webkit-background-clip:text;background-clip:text;color:transparent}
.hero__sub{margin-top:1.6rem;font-size:var(--s-1);color:var(--muted);max-width:44ch}
.hero__cta{display:flex;flex-wrap:wrap;gap:1rem;margin-top:2.4rem}
.scroll-cue{position:absolute;left:50%;bottom:1.6rem;transform:translateX(-50%);display:flex;flex-direction:column;align-items:center;gap:.5rem;
  font-family:var(--f-display);font-size:.7rem;letter-spacing:.2em;text-transform:uppercase;color:var(--muted-2)}
.scroll-cue span{width:1px;height:38px;background:linear-gradient(var(--red),transparent);animation:cue 1.8s ease-in-out infinite}
@keyframes cue{0%,100%{opacity:.3;transform:scaleY(.6)}50%{opacity:1;transform:scaleY(1)}}

/* ---------- marquee ---------- */
.marquee{border-block:1px solid var(--line);background:var(--bg-2);overflow:hidden;padding-block:1rem}
.marquee__track{display:flex;align-items:center;gap:2.4rem;width:max-content;
  font-family:var(--f-display);font-size:clamp(1.1rem,2.6vw,1.7rem);font-weight:500;color:var(--muted);
  animation:scroll 26s linear infinite}
.marquee__track i{color:var(--red);font-size:.7em;font-style:normal}
.marquee:hover .marquee__track{animation-play-state:paused}
@keyframes scroll{to{transform:translateX(-50%)}}

/* ---------- sections ---------- */
.section{padding-block:clamp(4.5rem,11vw,9rem);position:relative}
.sec-tag{font-family:var(--f-display);font-size:.85rem;letter-spacing:.16em;text-transform:uppercase;color:var(--muted);display:flex;align-items:center;gap:.7rem}
.sec-tag span{color:var(--red);font-weight:700}
.sec-head{margin-bottom:clamp(2.5rem,6vw,4.5rem)}
.sec-head .big{margin-top:1rem}
.big{font-size:var(--s-3);max-width:20ch}
.lead{font-size:var(--s-1);color:var(--muted);max-width:52ch;margin-top:1.4rem}

.grid-2{display:grid;grid-template-columns:200px 1fr;gap:clamp(1.5rem,5vw,4rem);align-items:start}
.col-sticky{position:sticky;top:110px}

.ticks{list-style:none;margin-top:2.2rem;display:grid;gap:1rem}
.ticks li{padding-left:2rem;position:relative;color:var(--ink);font-size:var(--s-1)}
.ticks li::before{content:"";position:absolute;left:0;top:.55em;width:1rem;height:1rem;border-radius:3px;
  background:var(--grad);box-shadow:0 0 16px -2px rgba(240,34,46,.6)}

/* ---------- servicios (light section) ---------- */
.servicios{background:var(--paper);color:#1b1712;border-radius:36px;margin-inline:clamp(0px,2vw,20px)}
.servicios .sec-tag{color:#8a7f6c}
.servicios .sec-tag span{color:var(--red)}
.servicios .big{color:#1b1712}
.cards{display:grid;grid-template-columns:repeat(3,1fr);gap:1.4rem}
.card{position:relative;background:var(--paper-2);border:1px solid #e7ddca;border-radius:22px;padding:2rem 1.8rem 2.2rem;overflow:hidden;
  transform-style:preserve-3d;transition:transform .3s ease,box-shadow .3s ease,border-color .3s}
.card::before{content:"";position:absolute;inset:0;border-radius:inherit;padding:1px;background:var(--grad);
  -webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;mask-composite:exclude;
  opacity:0;transition:opacity .3s}
.card:hover{transform:translateY(-6px);box-shadow:0 30px 60px -30px rgba(0,0,0,.3)}
.card:hover::before{opacity:1}
.card__num{font-family:var(--f-display);font-weight:800;font-size:.9rem;color:var(--red)}
.card__icon{width:34px;height:34px;color:#1b1712;margin:1.4rem 0 1rem}
.card h3{font-size:var(--s-1);color:#1b1712;margin-bottom:.6rem}
.card p{color:#6b6252}

/* ---------- proceso timeline ---------- */
.timeline{list-style:none;position:relative;display:grid;gap:2.2rem;padding-left:2.5rem}
.timeline::before{content:"";position:absolute;left:11px;top:8px;bottom:8px;width:2px;background:var(--line-2)}
.timeline::after{content:"";position:absolute;left:11px;top:8px;width:2px;height:var(--progress,0%);background:var(--grad);
  box-shadow:0 0 18px -2px rgba(240,34,46,.7);transition:height .2s linear}
.timeline li{position:relative;display:grid;grid-template-columns:auto 1fr;gap:1.4rem;align-items:start}
.timeline__n{position:absolute;left:calc(-2.5rem + 0px);transform:translateX(-25%);
  width:26px;height:26px;border-radius:50%;background:var(--bg);border:2px solid var(--line-2);
  display:grid;place-items:center;font-family:var(--f-display);font-weight:700;font-size:.8rem;color:var(--muted);z-index:1}
.timeline li.in .timeline__n{border-color:var(--red);color:var(--ink)}
.timeline h3{font-size:var(--s-1);margin-bottom:.5rem}
.timeline p{color:var(--muted);max-width:46ch}

/* ---------- pilares ---------- */
.pillars{display:grid;grid-template-columns:repeat(3,1fr);gap:2.5rem;border-top:1px solid var(--line);padding-top:3rem}
.pillars h3{font-size:var(--s-2);margin-bottom:.7rem}
.pillars p{color:var(--muted);max-width:32ch}

/* ---------- CTA ---------- */
.cta{position:relative;padding-block:clamp(5rem,12vw,10rem);text-align:center;overflow:hidden;isolation:isolate}
.cta__ring{position:absolute;left:50%;top:50%;width:min(120vw,900px);aspect-ratio:1;z-index:-1;
  transform:translate(-50%,-50%);border-radius:50%;
  background:conic-gradient(from 0deg,rgba(240,34,46,0),var(--red),var(--amber),rgba(240,34,46,0));
  filter:blur(60px);opacity:.35;animation:spin 18s linear infinite}
@keyframes spin{to{transform:translate(-50%,-50%) rotate(1turn)}}
.cta__inner{max-width:44rem;margin-inline:auto}
.cta__title{font-size:var(--s-3);margin:1rem 0 1.2rem}
.cta__sub{color:var(--muted);font-size:var(--s-1);margin-bottom:2.4rem}
.cta__actions{display:flex;gap:1rem;justify-content:center;flex-wrap:wrap}

/* ---------- footer ---------- */
.footer{border-top:1px solid var(--line);padding-block:3.5rem;background:var(--bg-2)}
.footer__inner{display:flex;flex-wrap:wrap;gap:1.5rem 3rem;align-items:center;justify-content:space-between}
.footer__brand{font-family:var(--f-display)}
.footer__brand span{font-weight:700;font-size:1.3rem}
.footer__brand em{color:var(--muted);margin-left:.6rem}
.footer__links{display:flex;gap:1.6rem;font-family:var(--f-display);color:var(--muted)}
.footer__links a:hover{color:var(--ink)}
.footer__legal-links{display:flex;gap:1.4rem;font-size:.85rem}
.footer__legal-links a{color:var(--muted);border-bottom:1px solid transparent}
.footer__legal-links a:hover{color:var(--ink);border-bottom-color:var(--line-2)}
.footer__legal{color:var(--muted-2);font-size:.82rem;width:100%}

/* ---------- páginas legales ---------- */
.legalpage{max-width:760px;margin-inline:auto;padding:7rem var(--pad) 5rem}
.legalpage a.back{font-family:var(--f-display);font-size:.9rem;color:var(--muted);display:inline-flex;gap:.4rem;align-items:center}
.legalpage a.back:hover{color:var(--ink)}
.legalpage h1{font-size:var(--s-3);margin:1.6rem 0 .4rem}
.legalpage .updated{color:var(--muted-2);font-size:.85rem;margin-bottom:2.6rem}
.legalpage h2{font-family:var(--f-display);font-size:var(--s-1);margin:2.4rem 0 .7rem}
.legalpage p,.legalpage li{color:var(--muted);margin-bottom:.9rem}
.legalpage ul{padding-left:1.3rem}
.legalpage strong{color:var(--ink)}
.legalpage .foot{margin-top:3.5rem;border-top:1px solid var(--line);padding-top:1.4rem;font-size:.85rem;color:var(--muted-2)}
.legalpage .foot a{color:var(--muted)}

/* ---------- floating WA ---------- */
.wa-float{position:fixed;right:18px;bottom:18px;z-index:80;width:56px;height:56px;border-radius:50%;
  display:none;align-items:center;justify-content:center;color:#fff;background:var(--grad);
  box-shadow:0 12px 30px -8px rgba(240,34,46,.7);transition:transform .18s}
.wa-float:hover{transform:scale(1.08)}
@media (max-width:900px){.wa-float{display:flex}}

/* ---------- reveal (defensive: visible salvo que JS lo oculte y aún no revele) ---------- */
[data-reveal]{opacity:1;transform:none}
.js [data-reveal]{transition:opacity .7s cubic-bezier(.16,1,.3,1),transform .7s cubic-bezier(.16,1,.3,1)}
.js [data-reveal]:not(.in){opacity:0;transform:translateY(26px)}

/* ---------- responsive ---------- */
@media (max-width:900px){
  .nav__links{display:none}
  .grid-2{grid-template-columns:1fr}
  .col-sticky{position:static}
  .cards{grid-template-columns:1fr}
  .pillars{grid-template-columns:1fr;gap:2rem}
  .servicios{border-radius:24px}
}
@media (max-width:520px){
  .nav__cta{display:none}
  .hero__cta .btn{width:100%}
}

/* ---------- motion preferences ---------- */
@media (prefers-reduced-motion:reduce){
  .marquee__track{animation:none}
  .cta__ring{animation:none}
  .preloader__mark svg{animation:none}
  .btn--grad{animation:none}
  .scroll-cue span{animation:none}
  .hero__title .line>span{transition-duration:.001s}
}
