/* KALKORA Labs v6: capa visual sobre styles.css (misma marca, más ritmo y movimiento con sentido) */
@font-face{font-family:"PlexMono";src:url(IBMPlexMono-Medium.woff) format("woff");font-weight:500;font-display:swap}
:root{--mono:"PlexMono",ui-monospace,Menlo,monospace;--r-lg:14px;--shadow:0 18px 40px -24px rgba(14,26,36,.35)}

/* ---------- hero oscuro ---------- */
.hero.band-ink{position:relative;overflow:hidden;padding:clamp(56px,8vw,112px) 0 0;min-height:calc(100dvh - 72px);display:flex;flex-direction:column;justify-content:center;isolation:isolate}
.hero.band-ink::after{content:"";position:absolute;inset:auto -20% -40% 30%;height:80%;background:radial-gradient(closest-side,rgba(43,196,138,.16),transparent 70%);z-index:-1;pointer-events:none}
.hero .hero-copy{max-width:640px}
.hero h1{font-size:clamp(52px,7.4vw,112px);line-height:.94;letter-spacing:-.045em;color:var(--white)}
.hero h1 .accent{color:var(--green);display:inline-block}
.hero .lede{color:var(--mist);max-width:34ch}
.band-ink .btn-line{color:var(--white);border-color:rgba(255,255,255,.45)}
.band-ink .btn-line:hover{background:var(--white);color:var(--ink);border-color:var(--white)}
.hero .decode .knot path{stroke:var(--mist);stroke-opacity:.5}
.hero .decode .gate{stroke:var(--white)}
.hero .decode .clear path{stroke:var(--green)}
.hero .decode .dot{fill:var(--green)}
.hero .decode text{fill:var(--white);font-family:var(--mono);font-size:12.5px;letter-spacing:.04em;text-transform:uppercase}
.decode .flow circle{fill:var(--green);opacity:0}
.hero-facts{display:grid;grid-template-columns:repeat(3,1fr);margin-top:clamp(48px,7vw,96px);border-top:1px solid var(--line-dark)}
.hero-facts li{padding:24px 28px 28px 0;font-size:15px;color:var(--mist)}
.hero-facts li+li{padding-left:28px;border-left:1px solid var(--line-dark)}
.hero-facts strong{display:block;margin-bottom:4px;font:500 12.5px/1.4 var(--mono);letter-spacing:.06em;text-transform:uppercase;color:var(--green)}
@media (max-width:920px){.hero.band-ink{min-height:0}}
@media (max-width:760px){.hero-facts{grid-template-columns:1fr}.hero-facts li+li{padding-left:0;border-left:0;border-top:1px solid var(--line-dark)}.hero-facts li{padding:18px 0}}
@media (prefers-reduced-motion:no-preference){
  .js .hero h1{opacity:0;transform:translateY(18px);animation:rise .9s var(--out) .05s forwards}
  .js .hero .lede{opacity:0;transform:translateY(14px);animation:rise .9s var(--out) .2s forwards}
  .js .hero .actions{opacity:0;transform:translateY(12px);animation:rise .9s var(--out) .32s forwards}
  .js .hero-facts li{opacity:0;animation:fade .8s var(--out) forwards}
  .js .hero-facts li:nth-child(1){animation-delay:1.9s}.js .hero-facts li:nth-child(2){animation-delay:2.05s}.js .hero-facts li:nth-child(3){animation-delay:2.2s}
  /* una señal recorre cada línea ordenada: el proceso ya fluye */
  .js .decode .flow circle{animation:flow 5.2s cubic-bezier(.45,0,.55,1) 2.6s infinite}
  .js .decode .flow circle:nth-child(2){animation-delay:3.4s}
  .js .decode .flow circle:nth-child(3){animation-delay:4.2s}
  .js .decode .flow circle:nth-child(4){animation-delay:5s}
}
@keyframes rise{to{opacity:1;transform:none}}
@keyframes flow{0%{transform:translateX(0);opacity:0}8%{opacity:1}70%{transform:translateX(252px);opacity:1}78%,100%{transform:translateX(252px);opacity:0}}

/* ---------- postura ---------- */
.stance .h2{font-size:clamp(40px,5.4vw,76px);line-height:.98;letter-spacing:-.04em}
.tenets>div{padding:22px 0 0;border-top:1px solid var(--line)}
.tenets h3::before{display:none}
.tenets h3{font-size:20px}

/* ---------- señales: fichas ---------- */
.signals dl{gap:var(--s2);grid-template-columns:1fr 1fr}
.signals dl div{display:block;padding:clamp(24px,2.6vw,34px);border:0;border-radius:var(--r-lg);background:var(--white);box-shadow:0 1px 0 rgba(14,26,36,.06);position:relative;overflow:hidden;transition:transform .35s var(--out),box-shadow .35s var(--out)}
.signals dl div::before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--green-deep);transform:scaleY(0);transform-origin:top;transition:transform .45s var(--out)}
.signals dl div:hover{transform:translateY(-3px);box-shadow:var(--shadow)}
.signals dl div:hover::before{transform:scaleY(1)}
.signals dt{font-size:clamp(20px,1.9vw,24px);margin-bottom:10px}
@media (max-width:920px){.signals dl{grid-template-columns:1fr}}

/* ---------- servicios ---------- */
.svc article{border-radius:var(--r-lg);transition:transform .35s var(--out),box-shadow .35s var(--out),border-color .35s}
.svc article:not(.lead-svc):hover{transform:translateY(-3px);box-shadow:var(--shadow);border-color:#C9D0D5}
.svc .lead-svc{position:relative;overflow:hidden}
.svc .lead-svc::after{content:"[";position:absolute;right:-.08em;bottom:-.32em;font-size:clamp(220px,24vw,340px);line-height:1;font-weight:600;color:rgba(43,196,138,.08);pointer-events:none}
.svc .lead-svc>*{position:relative;z-index:1}

/* ---------- método: columna fija y pasos ---------- */
.method-grid{display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);gap:clamp(40px,6vw,104px);align-items:start}
.method-side{position:sticky;top:112px}
.method-side .lede{margin-top:var(--s2);max-width:36ch}
.core-word{display:flex;gap:.08em;margin-top:var(--s5);font-size:clamp(88px,11vw,168px);line-height:.85;font-weight:600;letter-spacing:-.04em;user-select:none}
.core-word span{color:rgba(255,255,255,.12);transition:color .5s var(--out),transform .5s var(--out)}
.core-word span.on{color:var(--green);transform:translateY(-6px)}
.method .steps{display:block;counter-reset:none}
.method .steps::before{display:none}
.method .steps li{display:grid;grid-template-columns:56px 1fr;column-gap:24px;padding:0 0 clamp(48px,9vh,96px);position:relative}
.method .steps li::after{content:"";position:absolute;left:27px;top:64px;bottom:8px;width:1px;background:var(--line-dark)}
.method .steps li:last-child{padding-bottom:0}
.method .steps li:last-child::after{display:none}
.method .steps .k{grid-row:span 4;margin:0;transition:background-color .4s var(--out),color .4s var(--out)}
.method .steps h3{font-size:clamp(24px,2.4vw,32px);margin:10px 0 8px}
.method .steps .out{max-width:40ch}
.method .steps .out span{font-family:var(--mono);font-size:11.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--green);margin-bottom:2px}
.js-steps .method .steps li{opacity:.4;transition:opacity .5s var(--out)}
.js-steps .method .steps li.on{opacity:1}
.js-steps .method .steps li.on .k{background:var(--green);color:var(--ink)}
@media (max-width:920px){
  .method-grid{grid-template-columns:1fr}
  .method-side{position:static}
  .core-word{display:none}
  .js-steps .method .steps li{opacity:1}
}

/* ---------- formas de empezar ---------- */
.plans{border:0;gap:var(--s2);overflow:visible;align-items:stretch}
.plan{border:1px solid var(--line);border-radius:var(--r-lg);background:var(--white);transition:transform .35s var(--out),box-shadow .35s var(--out)}
.plan+.plan{border-left:1px solid var(--line)}
.plan:hover{transform:translateY(-3px);box-shadow:var(--shadow)}
.plan.pick{background:var(--ink);border-color:var(--ink);color:var(--white);box-shadow:var(--shadow)}
.plan.pick .tag{color:var(--green);font-family:var(--mono);font-size:12px;letter-spacing:.06em;text-transform:uppercase;font-weight:500}
.plan.pick>p,.plan.pick dt{color:var(--mist)}
.plan.pick dl{border-color:var(--line-dark)}
.plan.pick li svg{color:var(--green)}
.plan.pick .btn-line{background:var(--green);border-color:var(--green);color:var(--ink)}
.plan.pick .btn-line:hover{background:#45D19C;border-color:#45D19C}
.plan.pick :focus-visible{outline-color:var(--green)}
@media (min-width:921px){.plan.pick{transform:translateY(-12px)}.plan.pick:hover{transform:translateY(-15px)}}
@media (max-width:920px){.plan+.plan{border-top:1px solid var(--line)}}

/* ---------- quién ---------- */
.sectors li{transition:border-color .25s,background-color .25s}
.sectors li:hover{border-color:var(--green-deep);background:var(--green-wash)}

/* ---------- aparición al hacer scroll ---------- */
@media (prefers-reduced-motion:no-preference){
  .rv{opacity:0;transform:translateY(22px);transition:opacity .8s var(--out),transform .8s var(--out)}
  .rv.in{opacity:1;transform:none}
}

/* ---------- burbuja de WhatsApp ---------- */
.wa-float{position:fixed;right:clamp(16px,2.4vw,28px);bottom:calc(clamp(16px,2.4vw,28px) + env(safe-area-inset-bottom));z-index:50;display:inline-flex;align-items:center;gap:10px;height:56px;padding:0 16px;border-radius:999px;background:var(--green);color:var(--ink);text-decoration:none;font:600 15px/1 var(--sans);box-shadow:0 12px 28px -10px rgba(14,26,36,.5);transition:transform .35s var(--out),opacity .35s var(--out),box-shadow .35s var(--out),background-color .2s}
.wa-float svg{width:24px;height:24px;flex:none}
.wa-float:hover{background:#45D19C;box-shadow:0 16px 34px -10px rgba(14,26,36,.55)}
.wa-float:focus-visible{outline:3px solid var(--ink);outline-offset:3px}
.wa-float.off{opacity:0;transform:translateY(16px) scale(.96);pointer-events:none}
.has-cookie .wa-float{opacity:0;pointer-events:none}
@media (max-width:640px){.wa-float{width:56px;padding:0;justify-content:center}.wa-label{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}}
@media (prefers-reduced-motion:no-preference){
  .wa-float:not(.off)::before{content:"";position:absolute;inset:0;border-radius:inherit;box-shadow:0 0 0 0 rgba(43,196,138,.55);animation:ping 2.4s var(--out) 1s 2}
}
@keyframes ping{to{box-shadow:0 0 0 16px rgba(43,196,138,0)}}
.hero .wrap+.wrap{display:block}
@media (prefers-reduced-motion:no-preference){
  .plan.rv.in:hover,.svc article.rv.in:not(.lead-svc):hover{transform:translateY(-3px)}
}
@media (min-width:921px){.plan.pick.rv.in{transform:translateY(-12px)}.plan.pick.rv.in:hover{transform:translateY(-15px)}}
.hero.band-ink>.wrap{width:100%}
@media (max-width:600px){.hero .decode text{font-size:21px}}
