:root{
  --bg:#0a0a0a;
  --panel:#101010;
  --panel-2:#151515;
  --text:#f5f5f2;
  --muted:#a3a3a3;
  --line:#262626;
  --red:#d0000b;
  --red-rgb:208 0 11;
  --red-hover:color-mix(in srgb, var(--red) 82%, white);
  --red-active:color-mix(in srgb, var(--red) 82%, black);
  --white:#ffffff;
  --radius:24px;
  --max:1180px;
}
*{box-sizing:border-box;margin:0;padding:0}
[hidden]{display:none !important}
html{scroll-behavior:smooth;overflow-x:hidden;background:var(--bg)}
body{
  font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;
  /* El fondo lo aporta el campo cinético global (.ronin-kinetic-bg, canvas fijo
     tras el contenido). El color base sólido vive en <html> como respaldo si el
     JS falla. Antes: dos radial-gradients decorativos (halo rojo + halo blanco). */
  background:transparent;
  color:var(--text);
  line-height:1.6;
  overflow-x:hidden;
}

/* ── Campo cinético RŌNIN — fondo global (KINETIC STATIC FIELD) ───────────
   Capa puramente decorativa. js/ronin-kinetic-background.js crea este <div>
   con un <canvas> dentro y lo inserta como primer hijo de <body>.
   z-index:-1 + <body> transparente + color base en <html>  →  el canvas queda
   tras absolutamente todo el contenido y nunca captura eventos.
   El gradiente da una variación tonal de grafito MUY leve para que el negro
   plano no compita con las esquirlas del canvas (sin manchas, sin color). */
.ronin-kinetic-bg{
  position:fixed;
  inset:0;
  z-index:-1;
  pointer-events:none;
  overflow:hidden;
  contain:layout paint;
  background:
    radial-gradient(125% 90% at 50% 0%, #111114 0%, #0b0b0d 52%, #08080a 100%);
}
.ronin-kinetic-bg canvas{display:block;width:100%;height:100%}
a{color:inherit;text-decoration:none}
button,input,textarea{font:inherit}
a:focus-visible,button:focus-visible,summary:focus-visible,input:focus-visible,textarea:focus-visible{
  outline:2px solid var(--red);outline-offset:3px;border-radius:6px;
}
.container{width:min(calc(100% - 36px),var(--max));margin-inline:auto}

/* ── Sistema de reveal editorial ─────────────────
   [data-reveal]  → aparece al entrar en viewport (main.js añade .is-visible)
   .reveal-dN     → retraso escalonado dentro de un grupo
   Solo se oculta si <html class="js">: si el JS falla, el contenido se ve. */
.js [data-reveal]{
  opacity:0;transform:translateY(22px);
  transition:opacity .65s cubic-bezier(.16,1,.3,1),transform .65s cubic-bezier(.16,1,.3,1);
}
.js [data-reveal].reveal-d1{transition-delay:.07s}
.js [data-reveal].reveal-d2{transition-delay:.14s}
.js [data-reveal].reveal-d3{transition-delay:.21s}
.js [data-reveal].is-visible{opacity:1;transform:none}
.js [data-reveal].hero-rule{transform:scaleX(0);transform-origin:left}
.js [data-reveal].hero-rule.is-visible{transform:scaleX(1)}
@media(prefers-reduced-motion:reduce){
  .js [data-reveal]{opacity:1 !important;transform:none !important}
}

.eyebrow{
  display:inline-flex;align-items:center;gap:9px;
  color:#d8d8d8;font-size:.78rem;text-transform:uppercase;
  letter-spacing:.14em;font-weight:800;
}
.eyebrow::before{content:"";width:26px;height:2px;background:var(--red);border-radius:99px}
.pill{
  display:inline-flex;align-items:center;gap:8px;
  border:1px solid #323232;background:rgba(255,255,255,.03);
  padding:8px 12px;border-radius:999px;color:#d0d0d0;font-size:.83rem;
}
.dot{width:8px;height:8px;border-radius:50%;background:var(--red);box-shadow:0 0 18px rgb(var(--red-rgb) / .9)}
/* Cabecera base — la usan la home, servicios y el área privada.
   El área privada NO carga main.js: se queda en este estado sólido, que es
   el que tenía antes de V2. (css/area-privada.css neutraliza además .ap-context.) */
nav{
  position:sticky;top:0;z-index:50;
  backdrop-filter:blur(18px);
  background:rgba(7,7,7,.78);
  border-bottom:1px solid rgba(255,255,255,.06);
}
/* Solo la web pública: arranca limpia y se solidifica al hacer scroll (main.js). */
nav.site-nav{
  background:rgba(7,7,7,.42);
  border-bottom-color:transparent;
  transition:background .3s ease,border-color .3s ease;
}
nav.site-nav.is-scrolled{
  background:rgba(7,7,7,.9);
  border-bottom-color:rgba(255,255,255,.09);
}
.nav-inner{
  height:76px;display:flex;align-items:center;justify-content:space-between;gap:24px;
}
.brand{display:flex;align-items:center;gap:12px;font-weight:900;letter-spacing:.02em}
.logo-horizontal{width:148px;aspect-ratio:817/210;position:relative;overflow:hidden;display:block}
.logo-horizontal img{position:absolute;top:50%;left:50%;width:148%;height:auto;transform:translate(-50%,-50%)}
.nav-links{display:flex;align-items:center;gap:28px;color:#b9b9b9;font-size:.9rem}
.nav-links a:hover{color:#fff}
.nav-right{display:flex;align-items:center;gap:14px}
.nav-cta,.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:9px;
  padding:13px 18px;border-radius:12px;font-weight:800;border:1px solid transparent;
  transition:.2s ease;cursor:pointer;
}
.nav-cta,.btn-primary{background:var(--red);color:#fff;box-shadow:0 10px 30px rgb(var(--red-rgb) / .18)}
.nav-cta:hover,.btn-primary:hover{background:var(--red-hover);transform:translateY(-1px)}
.nav-cta:active,.btn-primary:active{background:var(--red-active);transform:translateY(0) scale(.97)}
.btn-secondary{border-color:#343434;background:rgba(255,255,255,.035);color:#eee}
.btn-secondary:hover{border-color:#535353;background:rgba(255,255,255,.06)}
.btn-secondary:active{background:rgba(255,255,255,.09);transform:scale(.97)}

/* Acceso al área privada del diagnóstico — utilidad secundaria, no CTA */
.ico-lock{flex:0 0 auto;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:square;stroke-linejoin:miter}
.nav-privado{
  display:inline-flex;align-items:center;gap:7px;
  color:#8f8f8f;font-size:.82rem;font-weight:700;letter-spacing:.01em;
  transition:color .2s ease;
}
.nav-privado:hover,.nav-privado:focus-visible{color:#d8d8d8}
.mobile-links .mobile-privado{display:flex;align-items:center;gap:10px;color:#9a9a9a}
.mobile-links .mobile-privado:hover,.mobile-links .mobile-privado:focus-visible{color:#fff}

.menu-toggle{
  display:none;flex-direction:column;justify-content:center;align-items:center;gap:5px;
  width:44px;height:44px;flex:0 0 auto;border-radius:10px;border:1px solid #323232;
  background:rgba(255,255,255,.03);cursor:pointer;transition:.2s ease;
}
.menu-toggle:active,.menu-close:active{background:rgba(255,255,255,.09);transform:scale(.94)}
.menu-bar{width:19px;height:2px;background:#eee;border-radius:2px;transition:transform .2s ease,opacity .2s ease}
.menu-toggle[aria-expanded="true"] .menu-bar:nth-child(1){transform:translateY(7px) rotate(45deg)}
.menu-toggle[aria-expanded="true"] .menu-bar:nth-child(2){opacity:0}
.menu-toggle[aria-expanded="true"] .menu-bar:nth-child(3){transform:translateY(-7px) rotate(-45deg)}

.mobile-menu{
  position:fixed;inset:0;z-index:70;background:rgba(4,4,4,.62);
  opacity:0;pointer-events:none;transition:opacity .25s ease;overflow:hidden;
}
.mobile-menu.open{opacity:1;pointer-events:auto}
.mobile-menu-inner{
  position:absolute;top:0;right:0;height:100%;width:min(86vw,360px);
  background:#0c0c0c;border-left:1px solid var(--line);
  padding:20px 24px 32px;display:flex;flex-direction:column;gap:28px;
  transform:translateX(100%);transition:transform .28s ease;overflow-y:auto;
}
.mobile-menu.open .mobile-menu-inner{transform:translateX(0)}
.mobile-menu-head{display:flex;align-items:center;justify-content:space-between}
.menu-close{
  width:38px;height:38px;border-radius:10px;border:1px solid #323232;
  background:rgba(255,255,255,.03);color:#eee;font-size:1rem;cursor:pointer;transition:.2s ease;
}
.mobile-links{display:flex;flex-direction:column;gap:2px}
.mobile-links a{padding:15px 4px;border-bottom:1px solid var(--line);font-size:1.05rem;font-weight:700;color:#ddd}
.mobile-links a:hover,.mobile-links a:focus-visible{color:#fff}
.mobile-cta{width:100%;margin-top:4px}

/* ── Hero ────────────────────────────────────────
   Una sola columna, editorial. El isotipo funciona
   como elemento gráfico de fondo. Los problemas
   pasan a su propia sección (#te-suena). */
.hero{padding:132px 0 96px;position:relative;overflow:hidden}
.hero-mark{
  position:absolute;top:-20%;right:-12%;width:min(56vw,760px);height:auto;
  opacity:.055;pointer-events:none;user-select:none;z-index:0;
  animation:hero-mark-in 1s cubic-bezier(.16,1,.3,1) both;
}
@keyframes hero-mark-in{
  from{opacity:0;transform:scale(.94) translateY(14px)}
  to{opacity:.055;transform:scale(1) translateY(0)}
}
.hero-inner{position:relative;z-index:1}
h1{
  font-size:clamp(3rem,6.2vw,5.7rem);line-height:.94;letter-spacing:-.055em;
  max-width:min(100%,20ch);margin:22px 0 0;font-weight:950;
  text-wrap:balance;overflow-wrap:break-word;
}
h1 .accent{color:var(--red)}
.hero-rule{
  display:block;width:min(220px,42vw);height:3px;background:var(--red);
  border-radius:99px;margin:28px 0 26px;
}
.lead{font-size:clamp(1.08rem,1.9vw,1.32rem);color:#bcbcbc;max-width:60ch;line-height:1.7}
.hero-actions{display:flex;gap:12px;flex-wrap:wrap;margin-top:34px}
.hero-note{margin-top:24px;color:#8a8a8a;font-size:.87rem;max-width:56ch}

/* ── ¿Te suena? — listado editorial de problemas ─ */
.problems{padding-top:40px}
.problem-list{list-style:none;border-top:1px solid var(--line)}
.problem-row{
  display:flex;gap:26px;align-items:baseline;padding:30px 8px 30px 0;
  border-bottom:1px solid var(--line);transition:padding-left .25s ease,background .25s ease;
}
.problem-row-num{
  font-size:1rem;font-weight:900;color:#5c5c5c;letter-spacing:.04em;flex:0 0 auto;
  transition:color .25s ease;
}
.problem-row-body h3{font-size:clamp(1.25rem,2.6vw,1.85rem);letter-spacing:-.03em;line-height:1.15}
.problem-row-body p{color:#8f8f8f;font-size:.96rem;margin-top:8px;max-width:60ch}
.problem-row:hover{padding-left:12px;background:linear-gradient(90deg,rgb(var(--red-rgb) / .06),transparent 60%)}
.problem-row:hover .problem-row-num{color:var(--red)}

/* ── Proof strip ─────────────────────────────────*/
.proof-strip{padding:18px 0 70px}
.proof{
  border-top:1px solid var(--line);border-bottom:1px solid var(--line);
  display:grid;grid-template-columns:repeat(3,1fr)
}
.proof div{padding:24px 26px;text-align:center;border-right:1px solid var(--line);font-size:.92rem;color:#a8a8a8;line-height:1.55}
.proof div:last-child{border-right:0}
.proof strong{color:#fff;display:block;margin-bottom:5px;font-size:.98rem}

section{padding:92px 0}
:where(section,header,main)[id]{scroll-margin-top:92px}
.section-head{display:grid;grid-template-columns:.75fr 1.25fr;gap:70px;align-items:end;margin-bottom:44px}
h2{font-size:clamp(2.25rem,5vw,4.2rem);line-height:1;letter-spacing:-.055em;margin-top:16px}
.section-copy{color:#9c9c9c;max-width:640px;font-size:1.03rem}

/* ── Servicios (home) — filas editoriales ────────
   Tres áreas, no tres cards iguales. Cada fila es
   un enlace a la sección correspondiente de
   servicios.html. */
.services{border-top:1px solid var(--line)}
.service-row{
  display:grid;grid-template-columns:auto 1fr auto;gap:34px;align-items:start;
  padding:40px 10px 40px 0;border-bottom:1px solid var(--line);
  color:inherit;transition:padding-left .28s ease,background .28s ease;
}
.service-row-num{font-size:1rem;font-weight:900;color:#5c5c5c;letter-spacing:.04em;transition:color .28s ease}
.service-row-kicker{
  display:block;font-size:.74rem;font-weight:800;text-transform:uppercase;letter-spacing:.14em;color:#8a8a8a;
}
.service-row-body h3{font-size:clamp(1.5rem,3vw,2.2rem);letter-spacing:-.03em;line-height:1.1;margin:10px 0 12px}
.service-row-body>p{color:#9a9a9a;font-size:.98rem;max-width:62ch}
.service-row-tags{list-style:none;display:flex;flex-wrap:wrap;gap:8px;margin-top:18px}
.service-row-tags li{
  font-size:.76rem;font-weight:700;color:#c4c4c4;border:1px solid #2c2c2c;
  border-radius:999px;padding:6px 11px;
}
.service-row .ideal{
  margin-top:18px;color:#b3b3b3;font-size:.86rem;line-height:1.55;max-width:60ch;
}
.service-row .ideal strong{color:#fff}
.service-row-cue{
  align-self:center;font-size:1.4rem;color:#5c5c5c;
  transition:color .28s ease,transform .28s ease;
}
.service-row:hover,.service-row:focus-visible{
  padding-left:14px;background:linear-gradient(90deg,rgb(var(--red-rgb) / .07),transparent 55%);
  outline:none;
}
.service-row:hover .service-row-num,
.service-row:focus-visible .service-row-num{color:var(--red)}
.service-row:hover .service-row-cue,
.service-row:focus-visible .service-row-cue{color:var(--red);transform:translateX(5px)}
.service-row:focus-visible{box-shadow:inset 3px 0 0 var(--red)}

.mid-cta{padding:0 0 40px}
.mid-cta-inner{
  border:1px solid var(--line);border-radius:24px;
  background:linear-gradient(145deg,rgb(var(--red-rgb) / .09),rgba(255,255,255,.02));
  padding:32px 40px;display:flex;align-items:center;justify-content:space-between;gap:24px;flex-wrap:wrap;
}
.mid-cta-text{font-size:1.05rem;font-weight:700;color:#eaeaea;max-width:540px}
.mid-cta-text span{display:block;color:#9c9c9c;font-weight:500;font-size:.92rem;margin-top:6px}

/* ── Proceso — recorrido con columna sticky ──────
   Desktop: el índice + progreso quedan fijos y las
   tarjetas de paso pasan por delante; main.js marca
   el paso activo. Mobile: secuencia vertical simple. */
.process-layout{display:grid;grid-template-columns:.82fr 1.18fr;gap:64px;align-items:start}
.process-aside{position:sticky;top:120px;display:flex;flex-direction:column;gap:22px}
.process-index{list-style:none;display:flex;flex-direction:column;gap:14px}
.process-index-item{
  display:flex;align-items:center;gap:12px;font-size:1.15rem;font-weight:800;
  letter-spacing:-.02em;color:#5a5a5a;transition:color .3s ease;
}
.process-index-num{
  font-size:.72rem;font-weight:900;letter-spacing:.1em;color:#444;transition:color .3s ease;
}
.process-index-item.is-active{color:var(--text)}
.process-index-item.is-active .process-index-num{color:var(--red)}
.process-index-item.is-done{color:#8a8a8a}
.process-progress{position:relative;width:2px;height:120px;background:var(--line);margin-left:3px}
.process-progress-fill{position:absolute;left:0;top:0;width:100%;height:0;background:var(--red);transition:height .5s ease}
.process-track{display:flex;flex-direction:column}
.process-step{
  min-height:clamp(300px,46vh,440px);display:flex;flex-direction:column;justify-content:center;
  padding:36px 0;border-top:1px solid var(--line);
  opacity:.32;transition:opacity .45s ease;
}
.process-step:first-child{border-top:0}
.process-step.is-active{opacity:1}
.process-step-tag{color:var(--red);font-weight:900;font-size:.8rem;letter-spacing:.12em;text-transform:uppercase}
.process-step h3{font-size:clamp(1.8rem,4vw,3rem);letter-spacing:-.04em;margin:18px 0 14px}
.process-step p{color:#9a9a9a;font-size:1.02rem;max-width:52ch;line-height:1.7}
.process-note{margin-top:26px;color:#9c9c9c;font-size:.95rem;max-width:640px}

/* ── Índice de casos (portfolio) ─────────────────*/
.case-list{list-style:none;display:flex;flex-wrap:wrap;gap:10px;margin-bottom:26px}
.case-list-item{
  font-size:.78rem;font-weight:800;letter-spacing:.06em;text-transform:uppercase;
  color:#7a7a7a;border:1px solid var(--line);border-radius:999px;padding:7px 13px;
}
.case-list-item span{color:var(--red);margin-right:6px}
.case-list-item.is-current{color:#dcdcdc;border-color:#3a3a3a}

/* ── Distintivo real / demo en casos ─────────────*/
.case-badge{
  font-size:.68rem;font-weight:800;letter-spacing:.08em;text-transform:uppercase;
  padding:5px 10px;border-radius:999px;margin-left:auto;
}
.case-badge-real{color:#7fd18b;border:1px solid rgba(127,209,139,.35);background:rgba(127,209,139,.08)}
.case-badge-demo{color:#c9b06a;border:1px solid rgba(201,176,106,.35);background:rgba(201,176,106,.08)}

/* ── Banda de precios (home) ─────────────────────*/
.price-teaser{padding:56px 0}
.price-teaser-inner{
  border:1px solid var(--line);border-radius:24px;padding:36px 40px;
  background:linear-gradient(150deg,#131313,#0b0b0b);
  display:flex;align-items:center;justify-content:space-between;gap:28px;flex-wrap:wrap;
}
.price-teaser-copy h2{font-size:clamp(1.8rem,3.4vw,2.6rem);margin:10px 0 10px}
.price-teaser-copy p{color:#9a9a9a;font-size:.98rem;max-width:52ch}
.price-teaser .btn{flex:0 0 auto}

/* ── Case study (portfolio) ─────────────────────
   Reusable pattern: any future case gets its own
   .case-<slug> modifier that only redefines
   --case-accent / --case-accent-rgb. Everything else
   (layout, motion, chat mock, browser frame) is shared. */
.case-study{
  --case-accent:var(--red);--case-accent-rgb:var(--red-rgb);
  position:relative;overflow:hidden;
  border:1px solid var(--line);border-radius:32px;background:var(--panel);
  padding:44px;transition:border-color .3s ease;
}
.case-study::before{
  content:"";position:absolute;inset:0;pointer-events:none;
  background:radial-gradient(circle at 88% 8%,rgb(var(--case-accent-rgb) / .1),transparent 30rem);
}
.case-study:hover{border-color:rgb(var(--case-accent-rgb) / .4)}
.case-drakkar{--case-accent:#9c864c;--case-accent-rgb:156 134 76}

.case-top{display:flex;align-items:baseline;gap:14px;margin-bottom:28px;position:relative}
.case-number{font-size:1.3rem;font-weight:950;color:#3a3a3a;letter-spacing:-.02em}
.case-eyebrow{
  display:inline-flex;align-items:center;gap:9px;
  color:#d8d8d8;font-size:.78rem;text-transform:uppercase;letter-spacing:.14em;font-weight:800;
}
.case-eyebrow::before{content:"";width:26px;height:2px;background:var(--case-accent);border-radius:99px}

.case-grid{
  display:grid;grid-template-columns:.85fr 1.15fr;gap:14px 52px;align-items:start;position:relative;
  grid-template-areas:"info visual" "cta visual";
}
.case-info{grid-area:info;display:flex;flex-direction:column;align-items:flex-start}
.case-visual{grid-area:visual;align-self:center}
.case-cta{grid-area:cta;align-self:start}
.case-client{display:flex;align-items:center;gap:12px;margin-bottom:20px}
.case-client-logo{width:34px;height:34px;object-fit:contain}
.case-client-name{font-weight:800;letter-spacing:.02em;color:#e6e6e6;font-size:.95rem}
.case-info h3{font-size:1.9rem;letter-spacing:-.03em;line-height:1.12;margin-bottom:24px;max-width:480px}
.case-block{margin-bottom:20px}
.case-block:last-of-type{margin-bottom:26px}
.case-label{
  display:block;color:#7f7f7f;font-size:.76rem;font-weight:800;
  text-transform:uppercase;letter-spacing:.1em;margin-bottom:9px;
}
.case-block p{color:#a3a3a3;font-size:.95rem;line-height:1.65}
.case-block p strong{color:#e6e6e6}
.case-tags{list-style:none;display:flex;flex-wrap:wrap;gap:9px;margin-bottom:28px}
.case-tags li{
  border:1px solid rgb(var(--case-accent-rgb) / .35);color:rgb(var(--case-accent-rgb) / 1);
  background:rgb(var(--case-accent-rgb) / .08);
  font-size:.72rem;font-weight:800;letter-spacing:.06em;text-transform:uppercase;
  padding:7px 12px;border-radius:999px;
}
.case-cta{border-color:rgb(var(--case-accent-rgb) / .4)}
.case-cta:hover{border-color:rgb(var(--case-accent-rgb) / .7);background:rgb(var(--case-accent-rgb) / .08)}

.case-visual{position:relative;padding-bottom:44px}
.case-visual-mark{
  position:absolute;width:150%;max-width:680px;height:auto;left:62%;top:38%;
  transform:translate(-50%,-50%);opacity:.09;pointer-events:none;user-select:none;z-index:0;
}
.case-browser{
  position:relative;z-index:1;width:100%;max-width:520px;margin-inline:auto;
  border:1px solid #302a1c;border-radius:16px;background:#0b0b0b;overflow:hidden;
  box-shadow:0 30px 70px rgba(0,0,0,.5);transform:rotate(-1.4deg);
  transition:transform .3s ease,box-shadow .3s ease;
}
.case-browser-top{
  height:34px;display:flex;align-items:center;gap:6px;padding:0 12px;
  background:#0e0e0e;border-bottom:1px solid rgb(var(--case-accent-rgb) / .2);
}
.case-browser-top span{width:7px;height:7px;border-radius:50%;background:#333}
.case-browser-url{
  margin-left:8px;font-size:.68rem;color:#7a7a7a;letter-spacing:.02em;
  font-family:ui-monospace,SFMono-Regular,Menlo,monospace;
}
.case-browser-shot{display:block;width:100%;height:auto}

.case-chat{
  position:absolute;left:-14px;bottom:-22px;z-index:2;width:min(240px,58%);
  border:1px solid rgb(var(--case-accent-rgb) / .3);border-radius:14px;
  background:#0c0c0c;box-shadow:0 20px 45px rgba(0,0,0,.5);overflow:hidden;
}
.case-chat-header{
  display:flex;align-items:center;gap:8px;padding:9px 11px;
  background:#0a0a0a;border-bottom:1px solid rgb(var(--case-accent-rgb) / .2);
}
.case-chat-avatar{
  width:26px;height:26px;border-radius:50%;flex:0 0 auto;overflow:hidden;
  background:var(--case-accent);display:flex;align-items:center;justify-content:center;
}
.case-chat-avatar img{width:100%;height:100%;object-fit:contain;transform:scale(1.5) translateY(-4%)}
.case-chat-id{display:flex;flex-direction:column;line-height:1.2}
.case-chat-name{font-size:.68rem;font-weight:800;color:#f0f0f0}
.case-chat-status{font-size:.6rem;color:var(--case-accent)}
.case-chat-msg{padding:0 11px;margin:10px 0 8px;font-size:.68rem;line-height:1.5;color:#d4d4d4}
.case-chat-suggestions{display:flex;flex-wrap:wrap;gap:5px;padding:0 11px 11px}
.case-chat-suggestions span{
  font-size:.6rem;font-weight:700;color:rgb(var(--case-accent-rgb) / 1);
  border:1px solid rgb(var(--case-accent-rgb) / .35);border-radius:999px;padding:4px 9px;
}

/* entrance: fires once via .is-visible (IntersectionObserver in main.js).
   Todo va bajo .js: si el JS falla, el caso se ve completo y estático. */
.case-study[data-reveal]{opacity:1;transform:none}   /* el padre no se mueve; animan los hijos */
.js .case-top,.js .case-client,.js .case-info h3,.js .case-block,.js .case-tags,.js .case-cta{
  opacity:0;transform:translateY(16px);
  transition:opacity .6s cubic-bezier(.16,1,.3,1),transform .6s cubic-bezier(.16,1,.3,1);
}
.js .case-browser{opacity:0;transform:rotate(-1.4deg) translateY(20px)}
.js .case-study:not(.is-visible) .case-browser{transition:none}
.js .case-chat{opacity:0;transform:translateY(14px)}
.js .case-visual-mark{transition:opacity 1s ease}
.js .case-study:not(.is-visible) .case-visual-mark{opacity:0}
@media(prefers-reduced-motion:reduce){
  .js .case-top,.js .case-client,.js .case-info h3,.js .case-block,.js .case-tags,
  .js .case-cta,.js .case-browser,.js .case-chat{opacity:1 !important;transform:none !important}
}

.case-study.is-visible .case-top{transition-delay:.02s}
.case-study.is-visible .case-client{transition-delay:.08s}
.case-study.is-visible .case-info h3{transition-delay:.14s}
.case-study.is-visible .case-block{transition-delay:.2s}
.case-study.is-visible .case-block ~ .case-block{transition-delay:.26s}
.case-study.is-visible .case-tags{transition-delay:.32s}
.case-study.is-visible .case-cta{transition-delay:.38s}
.case-study.is-visible .case-top,
.case-study.is-visible .case-client,
.case-study.is-visible .case-info h3,
.case-study.is-visible .case-block,
.case-study.is-visible .case-tags,
.case-study.is-visible .case-cta{opacity:1;transform:translateY(0)}
.case-study.is-visible .case-browser{
  opacity:1;transform:rotate(-1.4deg) translateY(0);
  transition:opacity .7s cubic-bezier(.16,1,.3,1) .16s,transform .7s cubic-bezier(.16,1,.3,1) .16s,box-shadow .3s ease;
}
.case-study.is-visible .case-chat{
  opacity:1;transform:translateY(0);
  transition:opacity .6s cubic-bezier(.16,1,.3,1) .38s,transform .6s cubic-bezier(.16,1,.3,1) .38s;
}
.case-study.is-visible .case-visual-mark{opacity:.09}

.case-study:hover .case-browser{transform:rotate(-1.4deg) translateY(-4px);box-shadow:0 36px 80px rgba(0,0,0,.55)}

.about{display:grid;grid-template-columns:.55fr 1.45fr;gap:56px;align-items:center}
.about-placeholder{
  aspect-ratio:1/1;max-width:280px;border-radius:24px;border:1px dashed #3a3a3a;
  background:linear-gradient(160deg,#141414,#0a0a0a);
  display:grid;place-items:center;color:#5a5a5a;font-weight:900;font-size:2.6rem;letter-spacing:.05em;
}
.about-copy .lead-small{color:#a3a3a3;font-size:1.03rem;max-width:600px;margin-top:12px;line-height:1.7}
.about-location{margin-top:18px;color:#7f7f7f;font-size:.85rem;font-weight:700;text-transform:uppercase;letter-spacing:.08em}

.principle{
  padding:54px;border:1px solid #3c1c1c;border-radius:30px;position:relative;overflow:hidden;
  background:linear-gradient(145deg,rgb(var(--red-rgb) / .11),rgb(var(--red-rgb) / .025));
  display:grid;grid-template-columns:.8fr 1.2fr;gap:65px;align-items:center
}
.principle-mark{position:absolute;right:-40px;bottom:-40px;width:170px;height:auto;opacity:.06;pointer-events:none;z-index:0}
.principle h2{margin-top:0}
.principle>div,.principle>blockquote{position:relative;z-index:1}
.principle blockquote{
  font-size:clamp(1.3rem,2.5vw,2rem);line-height:1.35;font-weight:800;letter-spacing:-.02em
}
.principle blockquote span{color:var(--red)}
.faq{display:grid;grid-template-columns:.75fr 1.25fr;gap:70px}
.faq-list{border-top:1px solid var(--line)}
details{border-bottom:1px solid var(--line);padding:20px 0}
summary{
  cursor:pointer;list-style:none;font-weight:800;display:flex;justify-content:space-between;
  gap:20px;transition:color .2s ease;
}
summary:hover{color:#fff}
summary::-webkit-details-marker{display:none}
summary::after{
  content:"+";color:var(--red);font-size:1.4rem;line-height:1;flex:0 0 auto;
  transition:transform .25s ease;
}
details[open] summary::after{transform:rotate(45deg)}
details p{color:#919191;padding:13px 0 2px;max-width:750px}
details[open] p{animation:faq-in .3s cubic-bezier(.16,1,.3,1) both}
@keyframes faq-in{from{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:none}}
.contact{
  border:1px solid var(--line);border-radius:32px;background:var(--panel);
  display:grid;grid-template-columns:.9fr 1.1fr;overflow:hidden
}
.contact-copy{padding:54px;background:linear-gradient(150deg,#131313,#0c0c0c)}
.contact-copy h2{margin-bottom:22px}
.contact-copy p{color:#969696;margin-bottom:25px}
.contact-trust{display:grid;gap:11px;color:#c5c5c5;font-size:.9rem}
.contact-trust div::before{content:"✓";color:var(--red);margin-right:10px;font-weight:900}
form{padding:48px;display:grid;gap:15px}
label{font-size:.78rem;color:#a7a7a7;font-weight:800;text-transform:uppercase;letter-spacing:.08em}
input,textarea{
  width:100%;border:1px solid #303030;background:#0b0b0b;color:#fff;border-radius:12px;
  padding:14px 15px;outline:none;transition:.2s
}
input:focus,textarea:focus{border-color:#6f2727;box-shadow:0 0 0 3px rgb(var(--red-rgb) / .07)}
textarea{min-height:125px;resize:vertical}
.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.field{display:grid;gap:7px}
.success{display:none;color:#cfcfcf;background:#111;border:1px solid #2b2b2b;padding:12px 14px;border-radius:10px;font-size:.85rem}
footer{padding:46px 0 54px;color:#8a8a8a}
.footer-inner{display:flex;justify-content:space-between;align-items:center;gap:20px 40px;border-top:1px solid var(--line);padding-top:26px;font-size:.84rem;flex-wrap:wrap}
.footer-brand{display:flex;flex-direction:column;gap:14px}
.footer-brand p{max-width:320px}
.footer-links{display:flex;flex-wrap:wrap;gap:8px 20px}
.footer-links a{color:#9a9a9a;transition:color .2s ease}
.footer-links a:hover,.footer-links a:focus-visible{color:#fff}

@media(max-width:920px){
  .nav-links{display:none}
  .nav-privado{display:none}
  .menu-toggle{display:flex}
  .section-head,.principle,.faq,.contact,.about{grid-template-columns:1fr}
  .hero{padding:96px 0 64px}
  .proof{grid-template-columns:1fr}
  .proof div{border-right:0;border-bottom:1px solid var(--line)}
  .proof div:last-child{border-bottom:0}
  .section-head{gap:24px}
  .principle{gap:28px;padding:38px}
  .case-study{padding:30px}
  .case-grid{grid-template-columns:1fr;grid-template-areas:"info" "visual" "cta";gap:28px}
  .case-visual{padding-bottom:40px;margin-top:8px}
  .case-cta{align-self:flex-start}
  .contact-copy,form,.mid-cta-inner,.price-teaser-inner{padding:32px}
  .about{gap:26px}
  .about-placeholder{max-width:180px}

  /* Proceso: sin sticky, secuencia vertical simple */
  .process-layout{grid-template-columns:1fr;gap:0}
  .process-aside{display:none}
  .process-step{min-height:auto;opacity:1;padding:26px 0}
  .process-step h3{font-size:clamp(1.6rem,7vw,2.2rem)}
}
@media(max-width:620px){
  .container{width:min(calc(100% - 24px),var(--max))}
  nav .nav-cta{padding:10px 13px;font-size:.8rem}
  .hero{padding:76px 0 52px}
  h1{font-size:clamp(2.3rem,9vw,3.4rem)}
  section{padding:70px 0}
  .form-grid{grid-template-columns:1fr}
  .service-row{grid-template-columns:auto 1fr;gap:18px 20px}
  .service-row-cue{display:none}
  .problem-row{gap:16px}
  .case-study{padding:22px}
  .case-info h3{font-size:1.55rem}
  .case-chat{width:min(200px,64%);left:-8px;bottom:-18px}
  .case-chat-msg{font-size:.64rem}
  .footer-inner{flex-direction:column;align-items:flex-start}
  .principle{padding:28px}
  .mid-cta-inner,.price-teaser-inner{padding:24px}
}
@media(max-width:480px){
  .nav-cta{display:none}
}
@media(prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *{animation-duration:.001ms !important;animation-iteration-count:1 !important;transition-duration:.001ms !important}
}
