/* ==========================================================================
   PREVINTEC — sections.css
   Hero, cabeceras de página, composiciones por sección, placeholders,
   panel de Tweaks y transiciones entre páginas.
   ========================================================================== */

/* ==========================================================================
   FONDO GLOBAL (canvas del shader)
   ========================================================================== */

.bg-canvas{
  position:fixed;
  inset:0;
  z-index:0;
  pointer-events:none;
  opacity:0;
  transition:opacity 1.4s var(--ease-out);
}
.bg-canvas.is-on{opacity:1}
html[data-theme="light"] .bg-canvas{opacity:0 !important}

/* Halo radial de fondo */
.bg-aura{
  position:fixed;inset:0;z-index:0;pointer-events:none;
  background:
    radial-gradient(58% 46% at 78% 6%,color-mix(in srgb,var(--navy-500) 34%,transparent),transparent 68%),
    radial-gradient(46% 38% at 8% 74%,color-mix(in srgb,var(--amber-600) 17%,transparent),transparent 70%);
  opacity:.85;
}
html[data-theme="light"] .bg-aura{
  background:
    radial-gradient(52% 40% at 82% 2%,color-mix(in srgb,var(--navy-400) 13%,transparent),transparent 66%),
    radial-gradient(44% 36% at 4% 70%,color-mix(in srgb,var(--amber-500) 11%,transparent),transparent 70%);
  opacity:.9;
}

/* El contenido siempre por encima del fondo */
.page{position:relative;z-index:1}

/* ==========================================================================
   TRANSICIÓN ENTRE PÁGINAS
   ========================================================================== */

.page-fade{
  position:fixed;inset:0;z-index:300;
  background:var(--navy-950);
  pointer-events:none;
  clip-path:inset(0 0 0 0);
  transition:clip-path .62s var(--ease-in-out);
}
html[data-theme="light"] .page-fade{background:var(--paper)}
.page-fade.is-gone{clip-path:inset(0 0 100% 0)}
.page-fade__mark{
  position:absolute;top:50%;left:50%;
  transform:translate(-50%,-50%);
  font-family:var(--font-mono);
  font-size:var(--fs-xs);
  letter-spacing:.3em;
  text-transform:uppercase;
  color:rgba(255,255,255,.45);
  opacity:1;
  transition:opacity .3s;
}
html[data-theme="light"] .page-fade__mark{color:var(--ink-300)}
.page-fade.is-gone .page-fade__mark{opacity:0}

/* Revelado al scroll — ENFOQUE SEGURO
   El estado oculto NO se aplica por CSS a todos los elementos. Lo añade el
   JavaScript (clase .rv-pending) únicamente a los bloques que están por
   debajo del pliegue en el momento de cargar. Así:
   · el contenido visible al entrar NUNCA se oculta;
   · si el JS falla o no se ejecuta, todo es visible;
   · hay un temporizador que retira cualquier ocultación residual. */
html.js .rv-pending{
  opacity:0;
  transform:translateY(26px);
  transition:opacity .85s var(--ease-out), transform .85s var(--ease-out);
  transition-delay:var(--rd,0ms);
}
html.js .rv-pending[data-reveal="left"]{transform:translateX(-30px)}
html.js .rv-pending[data-reveal="right"]{transform:translateX(30px)}
html.js .rv-pending[data-reveal="scale"]{transform:scale(.965) translateY(18px)}
html.js .rv-pending[data-reveal="clip"]{
  opacity:1;transform:none;
  clip-path:inset(0 0 100% 0);
  transition:clip-path 1.05s var(--ease-in-out);
}
html.js .rv-pending.is-in{
  opacity:1 !important;
  transform:none !important;
  clip-path:inset(0 0 0 0) !important;
}

html[data-effects="reduced"] .rv-pending{
  opacity:1 !important;transform:none !important;clip-path:none !important;
}

/* ==========================================================================
   HERO
   ========================================================================== */

.hero{
  position:relative;
  min-height:min(94svh,980px);
  display:flex;
  align-items:center;
  padding-top:calc(var(--nav-h) + clamp(2rem,6vw,5rem));
  padding-bottom:clamp(3rem,7vw,6rem);
  overflow:hidden;
}

.hero__grid{
  display:grid;
  grid-template-columns:minmax(0,1.06fr) minmax(0,.94fr);
  gap:clamp(2rem,5vw,4.5rem);
  align-items:center;
}

.hero__title{
  font-size:var(--fs-5xl);
  margin-bottom:clamp(1rem,2vw,1.6rem);
}
.hero__title .line{display:block;overflow:hidden}
.hero__title .line > span{
  display:block;
  transform:translateY(105%);
  animation:lineUp 1.1s var(--ease-out) forwards;
}
.hero__title .line:nth-child(1) > span{animation-delay:.08s}
.hero__title .line:nth-child(2) > span{animation-delay:.19s}
.hero__title .line:nth-child(3) > span{animation-delay:.3s}
@keyframes lineUp{to{transform:translateY(0)}}

.hero__sub{
  font-size:var(--fs-lg);
  max-width:56ch;
  margin-bottom:clamp(1.5rem,3vw,2.4rem);
  color:var(--text-2);
}
.hero__eyebrow{margin-bottom:clamp(1rem,2vw,1.5rem)}
.hero .btn-row{margin-bottom:clamp(1.6rem,3vw,2.4rem)}

/* Fila de micro-datos bajo los botones */
.hero__facts{
  display:flex;flex-wrap:wrap;gap:1.6rem;
  padding-top:clamp(1.2rem,2.5vw,1.8rem);
  border-top:1px solid var(--border);
}
.hero__fact{display:grid;gap:.2rem}
.hero__fact b{
  font-family:var(--font-display);
  font-size:var(--fs-xl);
  font-weight:800;
  letter-spacing:-.03em;
  color:var(--text);
  line-height:1;
}
.hero__fact span{
  font-family:var(--font-mono);
  font-size:.6rem;
  letter-spacing:.1em;
  text-transform:uppercase;
  color:var(--text-3);
}

/* Escena del hero: maqueta flotante + capas */
.hero__scene{
  position:relative;
  perspective:1400px;
}
.hero__mock{
  transform:rotateY(-11deg) rotateX(4deg) translateZ(0);
  transform-style:preserve-3d;
  transition:transform .9s var(--ease-out);
  will-change:transform;
}
.hero__scene:hover .hero__mock{transform:rotateY(-5deg) rotateX(2deg) translateY(-8px)}

.hero__chip{
  position:absolute;
  display:flex;align-items:center;gap:.55rem;
  padding:.6rem .95rem;
  border-radius:var(--radius-pill);
  background:color-mix(in srgb,var(--surface-solid) 88%,transparent);
  border:1px solid var(--border-strong);
  box-shadow:var(--shadow);
  backdrop-filter:blur(14px);
  -webkit-backdrop-filter:blur(14px);
  font-family:var(--font-mono);
  font-size:.62rem;
  letter-spacing:.05em;
  color:var(--text-2);
  white-space:nowrap;
  animation:floaty 6.5s var(--ease-in-out) infinite;
  z-index:4;
}
.hero__chip i{
  width:7px;height:7px;border-radius:50%;
  background:var(--green-500);flex:none;
  box-shadow:0 0 0 4px color-mix(in srgb,var(--green-500) 22%,transparent);
}
.hero__chip--a{top:-1.1rem;left:-1.4rem;animation-delay:-1.2s}
.hero__chip--b{bottom:1.6rem;right:-1.6rem;animation-delay:-3.4s}
.hero__chip--c{top:42%;right:-2.2rem;animation-delay:-5s}
@keyframes floaty{
  0%,100%{transform:translateY(0)}
  50%{transform:translateY(-11px)}
}

/* Orbes decorativos */
.orb{
  position:absolute;
  border-radius:50%;
  filter:blur(56px);
  opacity:.5;
  pointer-events:none;
  animation:orbDrift 18s var(--ease-in-out) infinite;
}
.orb--amber{background:var(--amber-500)}
.orb--navy{background:var(--navy-500)}
@keyframes orbDrift{
  0%,100%{transform:translate(0,0) scale(1)}
  33%{transform:translate(26px,-22px) scale(1.09)}
  66%{transform:translate(-20px,18px) scale(.95)}
}

/* Indicador de scroll */
.scroll-hint{
  position:absolute;
  bottom:clamp(1.2rem,3vw,2.4rem);
  left:50%;transform:translateX(-50%);
  display:grid;justify-items:center;gap:.55rem;
  font-family:var(--font-mono);
  font-size:.55rem;
  letter-spacing:.22em;
  text-transform:uppercase;
  color:var(--text-3);
}
.scroll-hint i{
  width:1px;height:42px;
  background:linear-gradient(180deg,var(--accent),transparent);
  animation:hintPulse 2.4s var(--ease-in-out) infinite;
}
@keyframes hintPulse{0%,100%{opacity:.25;transform:scaleY(.6)}50%{opacity:1;transform:scaleY(1)}}

/* ==========================================================================
   CABECERA DE PÁGINA INTERIOR
   ========================================================================== */

.phead{
  position:relative;
  padding-top:calc(var(--nav-h) + clamp(3rem,7vw,6rem));
  padding-bottom:clamp(2.4rem,5vw,4rem);
  border-bottom:1px solid var(--border);
  overflow:hidden;
}
.phead__inner{display:grid;gap:clamp(1rem,2.4vw,1.7rem);max-width:88ch}
.phead h1{font-size:var(--fs-4xl);max-width:22ch}
.phead .lead{max-width:62ch}

.crumbs{
  display:flex;flex-wrap:wrap;align-items:center;gap:.55rem;
  font-family:var(--font-mono);
  font-size:.62rem;
  letter-spacing:.09em;
  text-transform:uppercase;
  color:var(--text-3);
}
.crumbs a:hover{color:var(--accent)}
.crumbs span{opacity:.4}

/* ==========================================================================
   TRES LÍNEAS DE SOLUCIÓN
   ========================================================================== */

.pillars{
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:1px;
  background:var(--border);
  border:1px solid var(--border);
  border-radius:var(--radius-lg);
  overflow:hidden;
}
.pillar{
  position:relative;
  background:var(--bg);
  padding:clamp(1.5rem,3.2vw,2.4rem);
  display:grid;gap:.85rem;align-content:start;
  transition:background-color .5s var(--ease-out);
  isolation:isolate;
  overflow:hidden;
}
html[data-theme="light"] .pillar{background:#fff}
.pillar::before{
  content:"";position:absolute;inset:0;z-index:-1;
  background:linear-gradient(170deg,color-mix(in srgb,var(--accent) 11%,transparent),transparent 60%);
  opacity:0;transition:opacity .55s var(--ease-out);
}
.pillar:hover::before{opacity:1}
.pillar__idx{
  font-family:var(--font-mono);
  font-size:.62rem;letter-spacing:.14em;
  color:var(--text-3);
}
.pillar h3{font-size:var(--fs-xl)}
.pillar p{font-size:var(--fs-sm)}
.pillar ul{display:grid;gap:.45rem;font-size:var(--fs-xs);color:var(--text-2)}
.pillar ul li{display:grid;grid-template-columns:14px 1fr;gap:.55rem;align-items:start}
.pillar ul li::before{
  content:"";width:5px;height:5px;border-radius:50%;
  background:var(--accent);margin-top:.5em;
}

/* ==========================================================================
   BLOQUE DEL SOFTWARE DESTACADO
   ========================================================================== */

.soft{
  position:relative;
  background:var(--navy-900);
  color:#fff;
  border-radius:var(--radius-xl);
  padding:clamp(1.6rem,4vw,3.4rem);
  overflow:hidden;
  isolation:isolate;
}
.soft::before{
  content:"";position:absolute;inset:0;z-index:-1;
  background:
    radial-gradient(70% 60% at 88% 4%,rgba(240,148,40,.19),transparent 62%),
    radial-gradient(60% 70% at 4% 96%,rgba(59,51,154,.5),transparent 66%);
}
.soft h2,.soft h3{color:#fff}
.soft p{color:rgba(255,255,255,.74)}
.soft__grid{
  display:grid;
  grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);
  gap:clamp(1.8rem,4.5vw,3.6rem);
  align-items:center;
}
.soft__meta{
  display:flex;flex-wrap:wrap;gap:.5rem;
  margin-block:.4rem 1.2rem;
}
.soft .badge{
  background:rgba(255,255,255,.07);
  border-color:rgba(255,255,255,.16);
  color:rgba(255,255,255,.78);
}
.soft .badge--accent{
  background:rgba(240,148,40,.16);
  border-color:rgba(240,148,40,.36);
  color:var(--amber-400);
}

/* ==========================================================================
   METODOLOGÍA — línea de pasos
   ========================================================================== */

.steps{
  position:relative;
  display:grid;
  grid-template-columns:repeat(4,minmax(0,1fr));
  gap:clamp(1rem,2.5vw,1.8rem);
}
.steps::before{
  content:"";position:absolute;
  top:25px;left:6%;right:6%;height:1px;
  background:repeating-linear-gradient(90deg,var(--border-strong) 0 6px,transparent 6px 12px);
  z-index:0;
}
.step{
  position:relative;z-index:1;
  display:grid;gap:.75rem;align-content:start;
}
.step__dot{
  width:50px;height:50px;border-radius:50%;
  display:grid;place-items:center;
  background:var(--bg);
  border:1px solid var(--border-strong);
  font-family:var(--font-mono);
  font-size:var(--fs-xs);
  color:var(--accent);
  transition:transform .5s var(--ease-spring), border-color .4s, box-shadow .4s;
}
.step:hover .step__dot{
  transform:scale(1.08);
  border-color:var(--accent);
  box-shadow:0 0 0 6px color-mix(in srgb,var(--accent) 12%,transparent);
}
.step h4{font-size:var(--fs-lg)}
.step p{font-size:var(--fs-sm)}

/* ==========================================================================
   PERFIL DEL FUNDADOR
   ========================================================================== */

.profile{
  display:grid;
  grid-template-columns:minmax(0,.62fr) minmax(0,1.38fr);
  gap:clamp(1.6rem,4vw,3.4rem);
  align-items:start;
}
.profile__portrait{
  position:relative;
  aspect-ratio:4/5;
  border-radius:var(--radius-lg);
  overflow:hidden;
  border:1px solid var(--border);
  background:var(--surface-2);
}
.profile__quote{
  font-family:var(--font-display);
  font-size:var(--fs-2xl);
  font-weight:700;
  letter-spacing:-.03em;
  line-height:1.24;
  color:var(--text);
  text-wrap:balance;
}
.profile__sign{
  display:grid;gap:.15rem;
  padding-top:1.2rem;border-top:1px solid var(--border);
  margin-top:.4rem;
}
.profile__sign b{font-family:var(--font-display);font-size:var(--fs-base);color:var(--text)}
.profile__sign span{
  font-family:var(--font-mono);font-size:.66rem;
  letter-spacing:.1em;text-transform:uppercase;color:var(--text-3);
}

/* ==========================================================================
   PLACEHOLDER DE IMAGEN
   ========================================================================== */

.ph{
  position:relative;
  display:grid;
  place-items:center;
  gap:.7rem;
  text-align:center;
  border-radius:var(--radius-lg);
  border:1px dashed var(--border-strong);
  background:
    repeating-linear-gradient(135deg,
      color-mix(in srgb,var(--text-3) 7%,transparent) 0 10px,
      transparent 10px 20px);
  padding:clamp(1.4rem,4vw,2.6rem);
  min-height:220px;
  color:var(--text-3);
  overflow:hidden;
  transition:border-color .4s var(--ease-out), background-color .4s;
}
.ph:hover{border-color:var(--accent)}
.ph__icon{
  width:44px;height:44px;border-radius:var(--radius-sm);
  display:grid;place-items:center;
  border:1px solid var(--border-strong);
  background:var(--surface-2);
  color:var(--text-3);
}
.ph__icon svg{width:20px;height:20px}
.ph__label{
  font-family:var(--font-mono);
  font-size:.66rem;
  letter-spacing:.1em;
  text-transform:uppercase;
  color:var(--text-2);
  max-width:34ch;
}
.ph__note{
  font-size:var(--fs-xs);
  color:var(--text-3);
  max-width:42ch;
  line-height:1.5;
}
.ph--tall{min-height:340px}
.ph--wide{min-height:180px}

/* ==========================================================================
   FRANJA CTA FINAL
   ========================================================================== */

.cta{
  position:relative;
  border-radius:var(--radius-xl);
  padding:clamp(2rem,5.5vw,4.4rem);
  overflow:hidden;
  isolation:isolate;
  background:linear-gradient(135deg,var(--navy-800),var(--navy-950) 70%);
  border:1px solid rgba(255,255,255,.09);
  color:#fff;
}
.cta::before{
  content:"";position:absolute;inset:0;z-index:-1;
  background:radial-gradient(58% 70% at 84% 12%,rgba(240,148,40,.24),transparent 64%);
}
.cta h2{color:#fff;max-width:24ch}
.cta p{color:rgba(255,255,255,.72);max-width:58ch}
.cta__grid{
  display:grid;
  grid-template-columns:minmax(0,1.3fr) minmax(0,.7fr);
  gap:clamp(1.6rem,4vw,3rem);
  align-items:center;
}

/* ==========================================================================
   CONTACTO — tarjetas de persona
   ========================================================================== */

.person{
  display:grid;
  grid-template-columns:auto 1fr;
  gap:1rem;
  align-items:start;
}
.person__avatar{
  width:54px;height:54px;border-radius:50%;
  display:grid;place-items:center;
  background:linear-gradient(135deg,var(--navy-600),var(--navy-800));
  color:#fff;
  font-family:var(--font-display);
  font-weight:800;
  font-size:1.02rem;
  letter-spacing:-.02em;
  flex:none;
  border:1px solid rgba(255,255,255,.14);
}
.person__role{
  font-family:var(--font-mono);
  font-size:.62rem;
  letter-spacing:.1em;
  text-transform:uppercase;
  color:var(--text-3);
  display:block;
  margin-top:.15rem;
}
.person__links{display:grid;gap:.35rem;margin-top:.65rem;font-size:var(--fs-sm)}
.person__links a{display:inline-flex;align-items:center;gap:.5rem;color:var(--text-2)}
.person__links a:hover{color:var(--accent)}
.person__links svg{width:15px;height:15px;color:var(--accent);flex:none}

/* ==========================================================================
   TIRA DE ESTÁNDARES
   ========================================================================== */

.stds{
  display:flex;flex-wrap:wrap;gap:.6rem;
}
.std{
  display:inline-flex;align-items:center;gap:.5rem;
  padding:.55em 1em;
  border-radius:var(--radius-pill);
  border:1px solid var(--border);
  background:var(--surface);
  font-family:var(--font-mono);
  font-size:.68rem;
  letter-spacing:.06em;
  color:var(--text-2);
  transition:border-color .35s,color .35s,transform .35s var(--ease-out);
}
.std:hover{border-color:var(--accent);color:var(--text);transform:translateY(-2px)}
.std::before{
  content:"";width:5px;height:5px;border-radius:50%;
  background:var(--green-500);flex:none;
}

/* ==========================================================================
   NAVEGACIÓN ENTRE SERVICIOS
   ========================================================================== */

.pager{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:1rem;
}
.pager a{
  display:grid;gap:.4rem;
  padding:1.3rem 1.5rem;
  border:1px solid var(--border);
  border-radius:var(--radius-lg);
  background:var(--surface);
  transition:border-color .4s,transform .4s var(--ease-out),background-color .4s;
}
.pager a:hover{border-color:var(--accent);transform:translateY(-3px)}
.pager small{
  font-family:var(--font-mono);font-size:.62rem;
  letter-spacing:.1em;text-transform:uppercase;color:var(--text-3);
}
.pager b{
  font-family:var(--font-display);font-size:var(--fs-lg);
  font-weight:700;letter-spacing:-.02em;color:var(--text);
}
.pager a:last-child{text-align:right;justify-items:end}

/* ==========================================================================
   PANEL DE TWEAKS
   ========================================================================== */

.tw{
  position:fixed;
  right:clamp(.9rem,2.5vw,1.6rem);
  bottom:clamp(.9rem,2.5vw,1.6rem);
  z-index:400;
  width:min(340px,calc(100vw - 1.8rem));
  max-height:min(76svh,660px);
  display:none;
  flex-direction:column;
  border-radius:var(--radius-lg);
  border:1px solid var(--border-strong);
  background:color-mix(in srgb,var(--surface-solid) 96%,transparent);
  backdrop-filter:blur(22px) saturate(160%);
  -webkit-backdrop-filter:blur(22px) saturate(160%);
  box-shadow:0 40px 90px -30px rgba(0,0,0,.75);
  overflow:hidden;
  color:var(--text);
}
html[data-tweaks="on"] .tw{display:flex}
.tw__head{
  display:flex;align-items:center;justify-content:space-between;gap:1rem;
  padding:1rem 1.1rem;
  border-bottom:1px solid var(--border);
  cursor:grab;
}
.tw__head:active{cursor:grabbing}
.tw__title{
  font-family:var(--font-display);
  font-size:var(--fs-sm);font-weight:800;letter-spacing:-.01em;
  display:flex;align-items:center;gap:.55rem;
}
.tw__title i{
  width:7px;height:7px;border-radius:50%;background:var(--accent);
  box-shadow:0 0 0 4px color-mix(in srgb,var(--accent) 18%,transparent);
}
.tw__close{
  width:30px;height:30px;border-radius:50%;
  display:grid;place-items:center;
  border:1px solid var(--border-strong);
  color:var(--text-2);
  transition:background-color .3s,color .3s;
}
.tw__close:hover{background:var(--surface-2);color:var(--text)}
.tw__body{
  padding:1.1rem;
  overflow-y:auto;
  display:grid;gap:1.4rem;
}
.tw__body::-webkit-scrollbar{width:8px}
.tw__body::-webkit-scrollbar-thumb{background:var(--border-strong);border-radius:8px}
.tw__group{display:grid;gap:.6rem}
.tw__legend{
  font-family:var(--font-mono);
  font-size:.6rem;letter-spacing:.13em;text-transform:uppercase;
  color:var(--text-3);
}
.tw__opts{display:flex;flex-wrap:wrap;gap:.4rem}
.tw__opt{
  padding:.5em .85em;
  border-radius:var(--radius-pill);
  border:1px solid var(--border-strong);
  background:var(--surface-2);
  font-size:var(--fs-xs);
  font-weight:600;
  color:var(--text-2);
  transition:all .3s var(--ease-out);
}
.tw__opt:hover{border-color:var(--accent);color:var(--text)}
.tw__opt[aria-pressed="true"]{
  background:var(--accent);
  border-color:var(--accent);
  color:var(--accent-ink);
}
.tw__swatches{display:flex;gap:.5rem;flex-wrap:wrap}
.tw__sw{
  width:38px;height:38px;border-radius:var(--radius-sm);
  border:2px solid transparent;
  box-shadow:0 0 0 1px var(--border-strong);
  transition:transform .3s var(--ease-spring), border-color .3s;
  overflow:hidden;
  display:grid;grid-template-columns:1fr 1fr;
}
.tw__sw:hover{transform:translateY(-2px) scale(1.05)}
.tw__sw[aria-pressed="true"]{border-color:var(--text)}
.tw__note{
  font-size:var(--fs-xs);color:var(--text-3);line-height:1.5;
  padding-top:.2rem;
}
.tw__hint{
  padding:.85rem 1.1rem;
  border-top:1px solid var(--border);
  font-size:.68rem;
  color:var(--text-3);
  line-height:1.5;
  background:var(--surface-2);
}

/* Botón para reabrir el panel si se cierra */
.tw-open{
  position:fixed;
  right:clamp(.9rem,2.5vw,1.6rem);
  bottom:clamp(.9rem,2.5vw,1.6rem);
  z-index:399;
  display:none;
  width:46px;height:46px;
  border-radius:50%;
  border:1px solid var(--border-strong);
  background:var(--surface-solid);
  color:var(--text);
  box-shadow:var(--shadow);
  place-items:center;
}
html[data-tweaks="on"] .tw-open{display:grid}
html[data-tweaks="on"] body.tw-open-on .tw-open{display:grid}

/* ==========================================================================
   CURSOR PERSONALIZADO
   ========================================================================== */

.cursor{
  position:fixed;
  top:0;left:0;
  z-index:500;
  width:10px;height:10px;
  border-radius:50%;
  background:var(--accent);
  pointer-events:none;
  opacity:0;
  mix-blend-mode:normal;
  transition:width .3s var(--ease-out), height .3s var(--ease-out),
             opacity .35s, background-color .3s, margin .3s var(--ease-out);
  will-change:transform;
}
.cursor.is-live{opacity:.92}
.cursor.is-big{
  width:38px;height:38px;
  margin:-14px 0 0 -14px;
  background:color-mix(in srgb,var(--accent) 26%,transparent);
  border:1px solid var(--accent);
}
@media (hover:none),(pointer:coarse){.cursor{display:none}}

/* ==========================================================================
   CARRUSEL HORIZONTAL
   ========================================================================== */

.rail{
  display:flex;
  gap:clamp(.9rem,2vw,1.4rem);
  overflow-x:auto;
  scroll-snap-type:x proximity;
  padding-bottom:1.2rem;
  padding-inline:clamp(1.1rem,4vw,3rem);
  margin-inline:calc(-1 * clamp(1.1rem,4vw,3rem));
  scrollbar-width:thin;
  cursor:grab;
}
.rail.is-drag{cursor:grabbing;scroll-snap-type:none}
.rail::-webkit-scrollbar{height:6px}
.rail::-webkit-scrollbar-track{background:var(--border);border-radius:6px}
.rail::-webkit-scrollbar-thumb{background:var(--border-strong);border-radius:6px}
.rail > *{
  flex:0 0 clamp(260px,32vw,400px);
  scroll-snap-align:start;
}
.rail__nav{display:flex;gap:.5rem;flex:none}
.rail__nav button{
  width:42px;height:42px;border-radius:50%;
  display:grid;place-items:center;
  border:1px solid var(--border-strong);
  color:var(--text-2);
  transition:border-color .3s,color .3s,background-color .3s;
}
.rail__nav button:hover{border-color:var(--accent);color:var(--text);background:var(--surface-2)}
.rail__nav svg{width:17px;height:17px}
.rail-head{
  display:flex;align-items:flex-end;justify-content:space-between;
  gap:1.5rem;flex-wrap:wrap;
  margin-bottom:clamp(1.4rem,3vw,2.2rem);
}

/* ==========================================================================
   BARRA LATERAL DE LAS PÁGINAS DE SERVICIO
   ========================================================================== */

.stack--sidebar{
  position:sticky;
  top:calc(var(--nav-h) + 2rem);
  gap:1rem;
  align-content:start;
}
/* En la barra lateral las tarjetas necesitan un fondo propio y más contraste
   que en el resto del sitio: comparten columna estrecha con el texto largo. */
.stack--sidebar .card{
  padding:1.3rem 1.35rem;
  gap:.7rem;
  background:var(--surface-solid);
  border-color:var(--border-strong);
  box-shadow:var(--shadow);
}
html[data-theme="dark"] .stack--sidebar .card{
  background:linear-gradient(180deg,rgba(255,255,255,.075),rgba(255,255,255,.035));
  border-color:rgba(255,255,255,.16);
}
.stack--sidebar .card p{
  color:var(--text-2);
}
.stack--sidebar .card .eyebrow{
  font-size:.6rem;
  letter-spacing:.12em;
  color:var(--text-3);
}
.stack--sidebar .list-check{
  gap:.6rem;
}
.stack--sidebar .list-check li{
  font-size:var(--fs-xs);
  line-height:1.5;
  grid-template-columns:17px 1fr;
  gap:.55rem;
  color:var(--text-2);
}
.stack--sidebar .list-check li::before{
  width:17px;height:17px;
  background-size:10px;
  margin-top:.2em;
}
.stack--sidebar .list-plain{
  gap:.5rem;
}
.stack--sidebar .list-plain li{
  font-size:var(--fs-xs);
  line-height:1.5;
  color:var(--text-2);
}
.stack--sidebar .card h3,
.stack--sidebar .card h4{
  font-size:var(--fs-base);
  line-height:1.32;
}

@media (max-width:1040px){
  .stack--sidebar{
    position:static;
    top:auto;
  }
}

/* ==========================================================================
   FOTOGRAFÍAS DEL SITIO
   ========================================================================== */

.foto{
  position:relative;
  overflow:hidden;
  border-radius:var(--radius-lg);
  border:1px solid var(--border);
  background:var(--surface-2);
  aspect-ratio:4 / 3;
  margin:0;
}
.foto img{
  width:100%;height:100%;
  object-fit:cover;
  display:block;
  transition:transform 1.1s var(--ease-out), filter .6s var(--ease-out);
  filter:saturate(.94) contrast(1.02);
}
.foto:hover img{transform:scale(1.03)}
/* Velo de marca: integra la fotografía con la paleta navy del sitio */
.foto::after{
  content:"";
  position:absolute;inset:0;
  pointer-events:none;
  background:
    linear-gradient(180deg,rgba(7,6,26,.10) 0%,rgba(7,6,26,0) 42%,rgba(7,6,26,.34) 100%),
    radial-gradient(90% 70% at 78% 8%,rgba(240,148,40,.10),transparent 62%);
  mix-blend-mode:multiply;
}
html[data-theme="light"] .foto::after{
  background:linear-gradient(180deg,rgba(18,17,32,.03) 0%,transparent 45%,rgba(18,17,32,.12) 100%);
  mix-blend-mode:normal;
}

@media (prefers-reduced-motion:reduce){
  .foto:hover img{transform:none}
}

/* ==========================================================================
   RESPONSIVE DE SECCIONES
   ========================================================================== */

@media (max-width:1080px){
  .hero__grid{grid-template-columns:minmax(0,1fr);gap:3rem}
  .hero{min-height:auto}
  .hero__mock{transform:none}
  .soft__grid{grid-template-columns:minmax(0,1fr)}
  .steps{grid-template-columns:repeat(2,minmax(0,1fr))}
  .steps::before{display:none}
  .profile{grid-template-columns:minmax(0,1fr)}
  .profile__portrait{max-width:320px;aspect-ratio:1}
  .pillars{grid-template-columns:minmax(0,1fr)}
  .cta__grid{grid-template-columns:minmax(0,1fr)}
  .hero__chip--c{display:none}
}

@media (max-width:620px){
  .steps{grid-template-columns:minmax(0,1fr)}
  .pager{grid-template-columns:minmax(0,1fr)}
  .pager a:last-child{text-align:left;justify-items:start}
  .hero__chip{font-size:.56rem;padding:.5rem .75rem}
  .hero__chip--a{left:0;top:-.7rem}
  .hero__chip--b{right:0;bottom:-.7rem}
  .contact-dock{bottom:auto;top:calc(var(--nav-h) + .6rem)}
  .contact-dock__btn{padding:.6rem .9rem}
  .tw{max-height:64svh}
}
