/* AUPA · estilos del sitio
   Layout: una sola página de scroll-telling — tapete verde → mesa de trabajo → interfaz → confianza y conversión.
   Look único de marca AUPA (papel, tapete, tinta, naranja del logo); no cambia con el tema del visor. */
:root{
  --paper:#F0EFE8; --paper-2:#E3E0D3; --surface:#FFFFFF;
  --ink:#1E1E1C; --ink-2:#454B47; --ink-3:#858C87; --line:#CED2CC;
  --mat:#23764F; --mat-deep:#0F3B2D; --mat-line:#5FA27E;
  --brand:#F25A28; --brand-hover:#F58C00; --brand-red:#E62E05; --spark:#B8F23A;
  --error:#C8211A;
  --f-display:"Instrument Sans","Helvetica Neue",Arial,sans-serif;
  --f-accent:"Playfair Display",Georgia,"Times New Roman",serif;
  --f-body:"Poppins",system-ui,-apple-system,"Segoe UI",sans-serif;
  --f-mono:"JetBrains Mono",ui-monospace,Menlo,monospace;
  --f-pixel:"Silkscreen",var(--f-mono);
  --ease:cubic-bezier(.2,.8,.2,1);
  --cut:6px 6px 0 var(--ink);
  color-scheme:light;
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{background:var(--paper);color:var(--ink);font-family:var(--f-body);font-size:16px;line-height:1.55;overflow-x:hidden}
img{max-width:100%;display:block}
a{color:inherit}
:focus-visible{outline:3px solid var(--brand);outline-offset:3px;border-radius:6px}
.wrap{max-width:1248px;margin:0 auto;padding-left:max(20px,env(safe-area-inset-left,0px));padding-right:max(20px,env(safe-area-inset-right,0px))}
.mono{font-family:var(--f-mono);font-size:12px;letter-spacing:.08em;text-transform:uppercase}
.acc{font-family:var(--f-accent);font-style:italic;font-weight:700;color:var(--brand);letter-spacing:-.02em}
h1,h2,h3{font-family:var(--f-display);font-weight:700;margin:0;text-wrap:balance;letter-spacing:-.025em}
p{margin:0}

/* ---------- Header cápsula ---------- */
.hdr{position:fixed;z-index:50;left:50%;top:calc(env(safe-area-inset-top,0px) + 18px);transform:translateX(-50%);
  display:flex;align-items:center;gap:28px;padding:8px 8px 8px 22px;border-radius:999px;
  background:rgba(240,239,232,.55);border:1px solid rgba(255,255,255,.7);
  -webkit-backdrop-filter:blur(18px) saturate(1.3);backdrop-filter:blur(18px) saturate(1.3);
  box-shadow:0 8px 24px rgba(0,0,0,.12);
  transition:padding .45s var(--ease),gap .45s var(--ease),background .35s,top .45s var(--ease),box-shadow .35s}
.hdr .logo{height:38px;width:auto;transition:height .45s var(--ease)}
.nav{display:flex;gap:22px;position:relative}
.nav a{text-decoration:none;font-size:15px;padding:6px 0;color:var(--ink);position:relative}
.nav .ind{position:absolute;bottom:0;height:3px;border-radius:3px;background:var(--ink);transition:left .45s var(--ease),width .45s var(--ease)}
.hdr .extra{display:flex;align-items:center;gap:8px;max-width:0;overflow:hidden;opacity:0;white-space:nowrap;
  transition:max-width .5s var(--ease),opacity .3s}
.hdr .extra span{font-family:var(--f-mono);font-size:11px;letter-spacing:.08em;background:var(--ink);color:var(--paper);padding:5px 10px;border-radius:999px;display:flex;gap:8px;align-items:center}
.dot{width:8px;height:8px;border-radius:50%;background:var(--spark);display:inline-block}
.pulse{animation:pulse 2s infinite}
@keyframes pulse{0%{box-shadow:0 0 0 0 rgba(184,242,58,.7)}70%{box-shadow:0 0 0 8px rgba(184,242,58,0)}100%{box-shadow:0 0 0 0 rgba(184,242,58,0)}}
@media (hover:hover){.hdr:hover .extra{max-width:180px;opacity:1}}
.hdr.compact{top:calc(env(safe-area-inset-top,0px) + 10px);gap:16px;padding:5px 5px 5px 16px;background:rgba(240,239,232,.88);box-shadow:0 6px 18px rgba(0,0,0,.16)}
.hdr.compact .logo{height:28px}
.hdr.compact .nav a.opt{display:none}
.hdr.compact .btn{padding:10px 16px;font-size:14px}
.menu-btn{display:none;width:44px;height:44px;border-radius:50%;border:0;background:var(--ink);color:var(--paper);align-items:center;justify-content:center;cursor:pointer}

/* ---------- Header: estilos por sección ---------- */
.hdr{transition:padding .45s var(--ease),gap .45s var(--ease),background .45s,top .45s var(--ease),box-shadow .45s,border-color .45s,border-radius .45s var(--ease),color .45s,transform .45s var(--ease)}
.logo-wrap{display:inline-flex;align-items:center;border-radius:999px;transition:background .45s,padding .45s}
.skin-tag{display:inline-flex;align-items:center;gap:6px;font-family:var(--f-mono);font-size:10px;letter-spacing:.08em;text-transform:uppercase;padding:5px 9px;border-radius:999px;border:1px solid currentColor;opacity:.75;white-space:nowrap}
.skin-tag i{width:6px;height:6px;border-radius:50%;background:currentColor;display:block}
.hdr.morph{animation:morph .5s var(--ease)}
@keyframes morph{0%{transform:translateX(-50%) scale(1)}35%{transform:translateX(-50%) scale(.94,1.08)}70%{transform:translateX(-50%) scale(1.03,.97)}100%{transform:translateX(-50%) scale(1)}}
.hdr .btn-dark{transition:background .3s,border-radius .45s,color .3s,box-shadow .3s}
.nav a{transition:color .3s,background .3s,padding .3s}
.nav .ind{transition:left .45s var(--ease),width .45s var(--ease),background .3s,height .3s,bottom .3s}

/* Liquid glass (hero) */
.hdr[data-skin="glass"]{background:linear-gradient(135deg,rgba(255,255,255,.62),rgba(240,239,232,.34));border:1px solid rgba(255,255,255,.75);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.9),inset 0 -8px 18px rgba(255,255,255,.18),0 10px 30px rgba(0,0,0,.14)}
.hdr[data-skin="glass"].compact{background:linear-gradient(135deg,rgba(255,255,255,.8),rgba(240,239,232,.6))}

/* Glass oscuro (secciones oscuras) */
.hdr[data-skin="glass-dark"]{background:linear-gradient(135deg,rgba(30,30,28,.72),rgba(30,30,28,.45));border:1px solid rgba(255,255,255,.18);color:var(--paper);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.18),0 10px 30px rgba(0,0,0,.35)}
.hdr[data-skin="glass-dark"] .nav a{color:var(--paper)}
.hdr[data-skin="glass-dark"] .nav .ind{background:var(--spark)}
.hdr[data-skin="glass-dark"] .logo-wrap{background:var(--paper);padding:3px 10px}
.hdr[data-skin="glass-dark"] .btn-dark{background:var(--brand);color:var(--ink)}
.hdr[data-skin="glass-dark"] .btn-dark svg{color:var(--ink)}

/* Recorte / collage (portafolio) */
.hdr[data-skin="recorte"]{background:var(--paper);border:2px solid var(--ink);border-radius:14px;box-shadow:6px 6px 0 var(--ink);
  -webkit-backdrop-filter:none;backdrop-filter:none;transform:translateX(-50%) rotate(-.6deg)}
.hdr[data-skin="recorte"] .nav a{font-family:var(--f-mono);font-size:13px;text-transform:uppercase;letter-spacing:.06em}
.hdr[data-skin="recorte"] .nav .ind{height:8px;bottom:6px;background:var(--spark);z-index:-1;border-radius:0}
.hdr[data-skin="recorte"] .btn-dark{border-radius:8px;background:var(--brand);color:var(--ink)}
.hdr[data-skin="recorte"] .btn-dark svg{color:var(--ink)}
.hdr[data-skin="recorte"] .skin-tag{border-style:dashed}
@keyframes morph-r{0%{transform:translateX(-50%) rotate(-.6deg) scale(1)}40%{transform:translateX(-50%) rotate(-2deg) scale(.95,1.06)}100%{transform:translateX(-50%) rotate(-.6deg) scale(1)}}
.hdr[data-skin="recorte"].morph{animation:morph-r .5s var(--ease)}

/* Pixel art (proceso) */
.hdr[data-skin="pixel"]{background:var(--ink);color:var(--spark);border:0;border-radius:0;-webkit-backdrop-filter:none;backdrop-filter:none;
  clip-path:polygon(0 8px,4px 8px,4px 4px,8px 4px,8px 0,calc(100% - 8px) 0,calc(100% - 8px) 4px,calc(100% - 4px) 4px,calc(100% - 4px) 8px,100% 8px,100% calc(100% - 8px),calc(100% - 4px) calc(100% - 8px),calc(100% - 4px) calc(100% - 4px),calc(100% - 8px) calc(100% - 4px),calc(100% - 8px) 100%,8px 100%,8px calc(100% - 4px),4px calc(100% - 4px),4px calc(100% - 8px),0 calc(100% - 8px));
  box-shadow:none;filter:drop-shadow(4px 4px 0 var(--mat))}
.hdr[data-skin="pixel"] .nav a{font-family:var(--f-pixel);font-size:12px;text-transform:uppercase;letter-spacing:.06em;color:var(--paper)}
.hdr[data-skin="pixel"] .nav a.on{color:var(--spark)}
.hdr[data-skin="pixel"] .nav .ind{height:4px;border-radius:0;background:repeating-linear-gradient(90deg,var(--spark) 0 4px,transparent 4px 8px)}
.hdr[data-skin="pixel"] .logo-wrap{background:var(--paper);border-radius:0;padding:3px 8px}
.hdr[data-skin="pixel"] .btn-dark{border-radius:0;background:var(--spark);color:var(--ink);font-family:var(--f-pixel);font-size:12px;text-transform:uppercase}
.hdr[data-skin="pixel"] .btn-dark svg{color:var(--ink)}
.hdr[data-skin="pixel"] .skin-tag{border-radius:0;font-family:var(--f-pixel)}
.hdr[data-skin="pixel"] .skin-tag i{border-radius:0;animation:blink 1s steps(2) infinite}
@keyframes blink{50%{opacity:0}}
@keyframes morph-p{0%{transform:translateX(-50%)}25%{transform:translateX(calc(-50% - 4px))}50%{transform:translateX(calc(-50% + 4px))}75%{transform:translateX(calc(-50% - 2px))}100%{transform:translateX(-50%)}}
.hdr[data-skin="pixel"].morph{animation:morph-p .4s steps(4)}

/* Tipo Notion (servicios, diagnóstico) */
.hdr[data-skin="notion"]{background:#FFFFFF;border:1px solid rgba(55,53,47,.16);border-radius:10px;color:#37352F;
  -webkit-backdrop-filter:none;backdrop-filter:none;box-shadow:0 1px 2px rgba(15,15,15,.06),0 6px 20px rgba(15,15,15,.08);padding:6px 6px 6px 14px;gap:14px}
.hdr[data-skin="notion"] .nav{gap:2px}
.hdr[data-skin="notion"] .nav a{font-family:ui-sans-serif,-apple-system,"Segoe UI",Helvetica,Arial,sans-serif;font-size:14px;color:#37352F;padding:6px 10px;border-radius:6px}
.hdr[data-skin="notion"] .nav a:hover{background:rgba(55,53,47,.08)}
.hdr[data-skin="notion"] .nav a.on{background:rgba(55,53,47,.08)}
.hdr[data-skin="notion"] .nav .ind{height:0}
.hdr[data-skin="notion"] .btn-dark{border-radius:6px;border-width:1px;background:#37352F;color:#fff;font-family:ui-sans-serif,-apple-system,"Segoe UI",Helvetica,Arial,sans-serif;font-size:14px;padding:9px 14px!important}
.hdr[data-skin="notion"] .btn-dark svg{color:#fff;width:16px;height:16px}
.hdr[data-skin="notion"] .skin-tag{border:0;background:rgba(35,131,226,.12);color:#1F6FC5;border-radius:4px;opacity:1;font-family:ui-sans-serif,-apple-system,"Segoe UI",sans-serif;text-transform:none;letter-spacing:0;font-size:12px}
.hdr[data-skin="notion"] .menu-btn{border-radius:6px}

/* Tinta (CTA naranja) */
.hdr[data-skin="ink"]{background:var(--ink);color:var(--paper);border:2px solid var(--ink);-webkit-backdrop-filter:none;backdrop-filter:none;box-shadow:0 12px 30px rgba(0,0,0,.3)}
.hdr[data-skin="ink"] .nav a{color:var(--paper)}
.hdr[data-skin="ink"] .nav .ind{background:var(--brand)}
.hdr[data-skin="ink"] .logo-wrap{background:var(--paper);padding:3px 10px}
.hdr[data-skin="ink"] .btn-dark{background:var(--brand);color:var(--ink);border-color:var(--paper)}
.hdr[data-skin="ink"] .btn-dark svg{color:var(--ink)}

.hdr[data-skin="pixel"] .menu-btn{background:var(--spark);color:var(--ink);border-radius:0}
.hdr[data-skin="ink"] .menu-btn,.hdr[data-skin="glass-dark"] .menu-btn{background:var(--brand);color:var(--ink)}
/* ---------- Botones ---------- */
.btn{display:inline-flex;align-items:center;gap:10px;font:500 16px/1 var(--f-body);padding:16px 24px;border-radius:999px;border:2px solid var(--ink);
  cursor:pointer;text-decoration:none;color:var(--ink);background:var(--surface);box-shadow:var(--cut);
  transition:transform .18s var(--ease),box-shadow .18s var(--ease),background .2s}
.btn svg{width:20px;height:20px;transition:transform .25s var(--ease)}
.btn:hover{transform:translate(4px,4px);box-shadow:2px 2px 0 var(--ink)}
.btn:hover svg{transform:translateX(3px)}
.btn:active{transform:translate(6px,6px);box-shadow:0 0 0 var(--ink)}
.btn-primary{background:var(--brand)}
.btn-primary:hover{background:var(--brand-hover)}
.btn-dark{background:var(--ink);color:var(--paper)}
.btn-dark svg{color:var(--spark)}
.btn-ghost{box-shadow:none;background:var(--paper)}
.btn-ghost:hover{box-shadow:none;transform:none;background:var(--paper-2)}

/* ---------- Hero ---------- */
.hero{position:relative;background:var(--mat);color:var(--paper);overflow:hidden;padding-block:150px 90px;isolation:isolate}
.grid-bg{position:absolute;inset:0;z-index:-1;
  background-image:linear-gradient(rgba(95,162,126,.5) 1px,transparent 1px),linear-gradient(90deg,rgba(95,162,126,.5) 1px,transparent 1px),
  linear-gradient(rgba(95,162,126,.18) 1px,transparent 1px),linear-gradient(90deg,rgba(95,162,126,.18) 1px,transparent 1px);
  background-size:120px 120px,120px 120px,24px 24px,24px 24px}
.ruler{position:absolute;top:98px;left:0;right:0;display:flex;z-index:-1;opacity:.6}
.ruler span{flex:0 0 120px;font-family:var(--f-mono);font-size:11px;padding-left:4px}
.hero-in{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:40px;align-items:center}
.kicker{display:inline-flex;align-items:center;gap:10px;background:var(--mat-deep);padding:7px 14px;border-radius:999px}
.title{font-size:clamp(46px,6.4vw,92px);line-height:.95;margin:22px 0 24px}
.title .w{display:inline-block;overflow:hidden;vertical-align:bottom;padding-bottom:.08em}
.title .w > span{display:inline-block;transform:translateY(0);transition:transform .9s var(--ease)}
.js .title.pre .w > span{transform:translateY(105%)}
.title .acc{font-size:1.08em;padding-right:.05em}
.lead{font-size:clamp(16px,1.4vw,19px);max-width:34em;opacity:.92}
.ctas{display:flex;flex-wrap:wrap;gap:16px;margin-top:32px}
.platforms{display:flex;flex-wrap:wrap;gap:18px;align-items:center;margin-top:30px;font-weight:500}
.scroll-cue{display:flex;gap:10px;align-items:center;margin-top:36px;text-decoration:none;color:var(--paper)}
.scroll-cue svg{width:18px;height:18px;animation:bob 1.8s var(--ease) infinite}
@keyframes bob{0%,100%{transform:translateY(0)}50%{transform:translateY(5px)}}

.collage{position:relative;height:560px}
.layer{position:absolute;transition:transform .5s var(--ease)}
.pola{background:var(--surface);border:2px solid var(--ink);box-shadow:var(--cut);padding:10px 10px 12px;color:var(--ink);cursor:pointer;
  transition:transform .35s var(--ease),box-shadow .35s var(--ease);transform:rotate(var(--r))}
.pola:hover,.pola.on{transform:rotate(0deg) translateY(-10px) scale(1.04);box-shadow:12px 14px 0 var(--ink);z-index:5}
.pola .cap{display:flex;justify-content:space-between;align-items:center;margin-top:10px;gap:10px}
.pola .reveal{max-height:0;overflow:hidden;opacity:0;transition:max-height .35s var(--ease),opacity .3s}
.pola:hover .reveal,.pola.on .reveal{max-height:40px;opacity:1}
.stamp{padding:14px 18px;border:2px dashed var(--ink);box-shadow:var(--cut);color:var(--ink);transform:rotate(var(--r))}
.stamp b{font-family:var(--f-pixel);font-weight:400;font-size:11px;letter-spacing:.12em;display:block}
.stamp strong{font-family:var(--f-display);font-size:26px;letter-spacing:-.02em}

/* ---------- Mini sitios ilustrativos ---------- */
.site{position:relative;overflow:hidden;background:var(--sbg);aspect-ratio:16/10;width:100%;max-width:100%}
.site .s-nav{position:absolute;left:6%;right:6%;top:6%;height:7%;display:flex;justify-content:space-between;align-items:center}
.site .s-nav i{display:block;height:40%;border-radius:4px;background:var(--sfg);opacity:.75}
.site .s-hero{position:absolute;left:6%;top:24%;width:50%}
.site .s-hero i{display:block;background:var(--sfg);border-radius:4px;margin-bottom:6%}
.site .s-img{position:absolute;right:6%;top:20%;width:34%;height:56%;border-radius:10px;background:var(--sacc)}
.site .s-cards{position:absolute;left:6%;right:6%;bottom:6%;height:14%;display:grid;grid-template-columns:repeat(4,1fr);gap:4%}
.site .s-cards i{border-radius:6px;background:var(--sfg);opacity:.15}
.site .s-btn{display:block;width:34%;height:9%;border-radius:999px;background:var(--sacc)}
.site .s-tag{position:absolute;left:8px;bottom:8px;font-family:var(--f-mono);font-size:9px;letter-spacing:.06em;background:rgba(255,255,255,.85);color:#1E1E1C;padding:3px 6px;border-radius:4px}
.t-selvoria{--sbg:#EDEBDD;--sfg:#2F4A36;--sacc:#9DB38A}
.t-raices{--sbg:#FBF3E6;--sfg:#6B2E12;--sacc:#E39A3B}
.t-hakim{--sbg:#E9EEF4;--sfg:#1D2F4D;--sacc:#4F7BC0}
.t-imperio{--sbg:#151515;--sfg:#F3F3F3;--sacc:#D9372B}
.t-robles{--sbg:#1C1410;--sfg:#F4E9DA;--sacc:#C98A3D}
.t-grivly{--sbg:#F4F7EF;--sfg:#14321F;--sacc:#C9F24B}


/* ---------- Capturas reales ---------- */
.shot{display:block;width:100%;max-width:100%;aspect-ratio:16/10;object-fit:cover;object-position:top center;background:var(--paper-2)}
.card .pv .shot{aspect-ratio:16/9.4}
.browser .scroller .shot.tall{height:100%;aspect-ratio:auto;object-position:center top;transition:object-position 4s var(--ease)}
.browser:hover .scroller .shot.tall{object-position:center bottom}
.video .frames .shot{height:100%;aspect-ratio:auto}
.video.playing .frames .shot{animation:pan 6s ease-in-out infinite alternate}
.zoom-modal .pan .shot{width:200%;max-width:none;aspect-ratio:auto}
.lens .zoom.shot{max-width:none}
/* ---------- Ticker ---------- */
.ticker{background:var(--ink);color:var(--paper);overflow:hidden;padding-block:20px;white-space:nowrap}
.track{display:inline-flex;gap:28px;align-items:center;animation:marquee 32s linear infinite;padding-left:28px}
.ticker:hover .track{animation-play-state:paused}
.track span{font-family:var(--f-display);font-weight:700;font-size:clamp(20px,2.2vw,30px);letter-spacing:-.02em}
.track svg{width:20px;height:20px;color:var(--brand);fill:var(--brand)}
@keyframes marquee{to{transform:translateX(-50%)}}

/* ---------- Secciones ---------- */
section{padding-block:clamp(72px,9vw,120px)}
.sh{display:flex;flex-wrap:wrap;gap:24px 48px;align-items:flex-end;justify-content:space-between;margin-bottom:48px}
.sh h2{font-size:clamp(36px,4.4vw,56px);line-height:1;margin-top:14px}
.sh h2 .acc{font-size:1.25em}
.sh p{max-width:32em;color:var(--ink-2)}
.dark{background:var(--ink);color:var(--paper)}
.dark .sh p,.dark .muted{color:#B4B8B3}
.reveal-up{transition:opacity .7s var(--ease),transform .7s var(--ease)}
.js .reveal-up.pre{opacity:0;transform:translateY(28px)}

/* ---------- Portafolio ---------- */
.filters{display:flex;flex-wrap:wrap;gap:10px;margin-bottom:32px}
.chip{font:500 15px/1 var(--f-body);padding:11px 18px;border-radius:999px;border:1.5px solid var(--ink);background:var(--surface);cursor:pointer;transition:background .2s,color .2s}
.chip[aria-pressed="true"]{background:var(--ink);color:var(--paper)}
.pgrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:28px 24px}
.card{background:var(--surface);border:2px solid var(--ink);border-radius:10px;overflow:hidden;box-shadow:var(--cut);
  transition:transform .4s var(--ease),opacity .4s var(--ease),box-shadow .3s}
.card.hide{display:none}
.card.fade{opacity:0;transform:scale(.97)}
.card .pv{position:relative;display:block;border-bottom:2px solid var(--ink);text-decoration:none}
.card .pv .site{aspect-ratio:16/9.4}
.lens-hint{position:absolute;right:12px;top:12px;display:flex;gap:6px;align-items:center;background:var(--ink);color:var(--paper);padding:6px 10px;border-radius:999px;font-family:var(--f-mono);font-size:11px;letter-spacing:.06em}
.lens-hint svg{width:14px;height:14px}
.lens{position:absolute;width:150px;height:150px;border-radius:50%;border:3px solid var(--ink);overflow:hidden;pointer-events:none;
  box-shadow:0 18px 40px -8px rgba(0,0,0,.35);opacity:0;transform:scale(.6);transition:opacity .2s,transform .25s var(--ease);background:var(--surface);z-index:3}
.lens.on{opacity:1;transform:scale(1)}
.lens .zoom{position:absolute;left:0;top:0;transform-origin:0 0}
.lens .open{position:absolute;left:50%;bottom:16px;transform:translateX(-50%);font-family:var(--f-mono);font-size:9px;letter-spacing:.06em;background:var(--ink);color:var(--paper);padding:3px 7px;border-radius:999px;white-space:nowrap}
@media (hover:hover) and (pointer:fine){.card[data-lens] .pv{cursor:none}}
.cb{padding:20px 24px 24px;display:grid;gap:10px}
.tags{display:flex;gap:8px;flex-wrap:wrap}
.tag{font-family:var(--f-mono);font-size:11px;letter-spacing:.06em;border:1.5px solid var(--ink);border-radius:999px;padding:5px 10px;display:inline-flex;gap:6px;align-items:center}
.tag.live{background:var(--spark)}
.tag.proto{background:#7CC4FF}
.tag.pend{background:var(--ink);color:var(--spark)}
.cb h3{font-size:28px}
.cb .foot{display:flex;justify-content:space-between;align-items:center;margin-top:4px}
.link{display:inline-flex;gap:6px;align-items:center;font-weight:500;text-decoration:none}
.link svg{width:18px;height:18px;transition:transform .25s var(--ease)}
.link:hover svg{transform:translateX(4px)}

/* modal táctil */
.zoom-modal{position:fixed;inset:0;z-index:80;background:rgba(15,20,18,.78);display:flex;align-items:center;justify-content:center;padding:24px max(16px,env(safe-area-inset-right,0px)) 24px max(16px,env(safe-area-inset-left,0px))}
.zoom-modal .box{background:var(--surface);border:2px solid var(--ink);border-radius:14px;max-width:920px;width:100%;overflow:hidden}
.zoom-modal .bar{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;border-bottom:2px solid var(--ink)}
.zoom-modal .pan{overflow:auto;max-height:70vh}
.zoom-modal .pan .site{width:200%;max-width:none}
.icon-btn{width:40px;height:40px;border-radius:50%;border:2px solid var(--ink);background:var(--paper);cursor:pointer;display:inline-flex;align-items:center;justify-content:center}
.icon-btn svg{width:18px;height:18px}

/* ---------- Figma gallery ---------- */
.fgrid{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(0,1fr);gap:24px}
.fcol{display:grid;gap:24px}
.browser{border-radius:14px;overflow:hidden;border:1px solid rgba(255,255,255,.14);background:#2A2A27;transition:transform .5s var(--ease)}
.browser .bbar{display:flex;gap:8px;align-items:center;padding:10px 14px}
.browser .bbar i{width:10px;height:10px;border-radius:50%;display:block}
.browser .url{margin-left:8px;font-family:var(--f-mono);font-size:11px;color:#9CA19D;background:rgba(255,255,255,.07);padding:3px 10px;border-radius:999px}
.browser .scroller{overflow:hidden;aspect-ratio:16/10}
.browser .scroller .site{aspect-ratio:16/20;transition:transform 3.5s var(--ease)}
.browser:hover .scroller .site{transform:translateY(-38%)}
.fmeta{display:flex;flex-wrap:wrap;gap:10px 14px;align-items:center;margin-top:14px}
.fmeta h3{font-size:24px}
.fmeta .link{margin-left:auto}

/* ---------- Proceso ---------- */
.steps{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;position:relative}
.progress{height:4px;background:var(--paper-2);border-radius:4px;margin-bottom:28px;overflow:hidden}
.progress i{display:block;height:100%;width:0;background:var(--brand);transition:width .2s linear}
.step{background:var(--ink);color:var(--paper);border-radius:10px;padding:24px;display:grid;gap:12px;align-content:start;transition:background .4s,transform .3s var(--ease)}
.step.cur{background:var(--mat);transform:translateY(-6px)}
.step .px{display:grid;grid-template-columns:repeat(5,8px);gap:0;width:40px;height:40px}
.step .px b{width:8px;height:8px;background:transparent;transition:background .15s}
.step .px b.f{background:var(--spark)}
.js .step.pre .px b.f{background:transparent}
.step .n{font-family:var(--f-pixel);font-size:12px;letter-spacing:.12em;color:var(--spark)}
.step h3{font-size:24px;letter-spacing:-.02em}
.step p{color:#B4B8B3;font-size:15px}

/* ---------- Servicios ---------- */
.svc{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));border-top:2px solid var(--ink)}
.srow{display:flex;gap:22px;padding:30px 28px 30px 0;border-bottom:1px solid var(--line);transition:background .3s,transform .3s var(--ease);text-decoration:none;align-items:flex-start;border-radius:0}
.srow:nth-child(odd){border-right:1px solid var(--line)}
.srow:nth-child(even){padding-left:28px}
.srow .ib{flex:0 0 56px;height:56px;border-radius:12px;background:var(--paper-2);display:flex;align-items:center;justify-content:center;transition:background .3s,transform .3s var(--ease)}
.srow .ib svg{width:26px;height:26px}
.srow h3{font-size:24px;margin-bottom:6px;letter-spacing:-.02em}
.srow p{color:var(--ink-2)}
.srow .go{margin-left:auto;flex:0 0 24px;transition:transform .3s var(--ease)}
.srow:hover{background:var(--paper)}
.srow:hover .ib{background:var(--brand);transform:rotate(-6deg)}
.srow:hover .go{transform:translate(3px,-3px)}
.srow > div{min-width:0}

/* ---------- Reel ---------- */
.reel{background:var(--mat-deep);color:var(--paper)}
.video{position:relative;border-radius:20px;overflow:hidden;background:var(--ink);aspect-ratio:16/8}
.video .frames{position:absolute;inset:0;display:grid;grid-template-columns:repeat(3,1fr);gap:0;opacity:.35;transition:opacity .4s}
.video.playing .frames{opacity:1}
.video .frames .site{aspect-ratio:auto;height:100%}
.video.playing .frames .site{animation:pan 6s ease-in-out infinite alternate}
@keyframes pan{to{transform:translateY(-12%) scale(1.08)}}
.play{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:112px;height:112px;border-radius:50%;background:var(--brand);border:2px solid var(--ink);box-shadow:var(--cut);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:transform .2s var(--ease),opacity .3s}
.play:hover{transform:translate(-50%,-50%) scale(1.06)}
.play svg{width:40px;height:40px;fill:var(--ink)}
.video.playing .play{opacity:0;pointer-events:none}
.ctrl{position:absolute;left:0;right:0;bottom:0;display:flex;gap:16px;align-items:center;padding:14px 22px;background:rgba(0,0,0,.45);color:var(--paper)}
.ctrl button{background:none;border:0;color:inherit;cursor:pointer;display:flex}
.ctrl svg{width:18px;height:18px}
.bar2{flex:1;height:4px;border-radius:4px;background:rgba(255,255,255,.25);overflow:hidden}
.bar2 i{display:block;height:100%;width:0;background:var(--brand)}

/* ---------- Testimonios ---------- */
.trow{display:grid;grid-template-columns:minmax(0,.8fr) repeat(3,minmax(0,1fr));gap:20px}
.rate{background:var(--ink);color:var(--paper);border-radius:12px;padding:28px;display:grid;gap:12px;align-content:start}
.rate .big{font-family:var(--f-display);font-size:64px;font-weight:700;line-height:1}
.stars{display:flex;gap:4px}
.stars svg{width:20px;height:20px}
.tcard{background:var(--surface);border:2px solid var(--ink);border-radius:10px;padding:24px;display:grid;gap:14px;align-content:start;transition:transform .3s var(--ease),box-shadow .3s}
.tcard:hover{transform:translateY(-4px);box-shadow:var(--cut)}
.tcard q{font-size:18px;quotes:"“" "”"}

/* ---------- Diagnóstico ---------- */
.dg{display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);gap:72px;align-items:start}
.dg h2{font-size:clamp(40px,4.4vw,56px);line-height:1}
.dg h2 .acc{display:block;font-size:1.3em}
.list{display:grid;gap:12px;margin-top:10px}
.list li{display:flex;gap:12px;align-items:flex-start;list-style:none}
.list svg{flex:0 0 20px;width:20px;height:20px;margin-top:3px}
ul.list{padding:0;margin:10px 0 0}
form{background:var(--paper);border:2px solid var(--ink);border-radius:20px;padding:clamp(22px,3.5vw,40px);box-shadow:var(--cut);display:grid;gap:20px}
form h3{font-size:32px}
.seg{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;border:0;padding:0;margin:0}
.seg legend{font-weight:500;margin-bottom:10px;padding:0}
.seg label{position:relative}
.seg input{position:absolute;opacity:0;inset:0}
.seg span{display:flex;justify-content:center;align-items:center;gap:6px;text-align:center;min-height:52px;padding:8px;border:1.5px solid var(--ink);border-radius:10px;background:var(--surface);font-weight:500;cursor:pointer;transition:background .2s,transform .15s}
.seg input:checked + span{background:var(--brand);border-width:2px}
.seg input:focus-visible + span{outline:3px solid var(--ink);outline-offset:2px}
.two{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}
.field{display:grid;gap:8px;min-width:0}
.field label{font-weight:500}
.field input,.field select,.field textarea{font:400 16px/1.4 var(--f-body);color:var(--ink);background:var(--surface);border:1.5px solid var(--ink);border-radius:10px;padding:12px 16px;width:100%;transition:box-shadow .2s,border-color .2s}
.field input:focus,.field select:focus,.field textarea:focus{outline:none;box-shadow:0 0 0 4px var(--spark)}
.field .help{font-size:14px;color:var(--ink-2);display:flex;gap:6px;align-items:center}
.field.err input,.field.err select{border-color:var(--error);border-width:2px}
.field.err .help{color:var(--error)}
.field.err{animation:shake .4s}
@keyframes shake{20%,60%{transform:translateX(-5px)}40%,80%{transform:translateX(5px)}}
.check{display:flex;gap:12px;align-items:center;font-size:14px}
.check input{width:22px;height:22px;accent-color:var(--ink)}
.hp{position:absolute;left:-9999px}
.status{border-radius:10px;padding:14px 16px;font-size:15px;display:flex;gap:10px;align-items:flex-start;border:2px solid var(--ink)}
.status.info{background:var(--spark)}
.status.bad{background:#FBE3DF;border-color:var(--error)}
.btn[aria-busy="true"]{pointer-events:none;opacity:.8}
.spin{width:18px;height:18px;border:2.5px solid currentColor;border-right-color:transparent;border-radius:50%;animation:rot .7s linear infinite}
@keyframes rot{to{transform:rotate(1turn)}}

/* ---------- CTA + footer ---------- */
.cta{background:var(--brand);text-align:center}
.cta h2{font-size:clamp(40px,6vw,88px);line-height:1}
.cta h2 .acc{color:var(--ink);font-size:1.1em}
.cta p{max-width:36em;margin:22px auto 32px;font-size:18px}
.cta .ctas{justify-content:center}
footer{background:var(--ink);color:var(--paper);padding-block:72px 32px}
.ftop{display:grid;grid-template-columns:minmax(0,1.4fr) repeat(3,minmax(0,1fr));gap:40px}
.fcolm{display:grid;gap:10px;align-content:start}
.fcolm .mono{color:#9CA19D;margin-bottom:6px}
.fcolm a{text-decoration:none}
.flogo{background:var(--paper);display:inline-block;padding:10px 16px;border-radius:999px;width:max-content}
.flogo img{height:34px}
.fbot{display:flex;flex-wrap:wrap;justify-content:space-between;gap:12px;border-top:1px solid rgba(255,255,255,.15);margin-top:56px;padding-top:24px;color:#9CA19D;font-size:14px}

/* ---------- WhatsApp + guía ---------- */
.wa{position:fixed;z-index:60;right:calc(24px + env(safe-area-inset-right,0px));bottom:calc(24px + env(safe-area-inset-bottom,0px));display:flex;align-items:center;gap:0;
  background:var(--ink);color:var(--paper);border:2px solid var(--spark);border-radius:999px;padding:7px;cursor:pointer;box-shadow:0 18px 40px -8px rgba(0,0,0,.35);
  transition:transform .4s var(--ease),opacity .3s,gap .35s var(--ease),padding .35s var(--ease);font:500 16px var(--f-body)}
.wa .ic{width:42px;height:42px;border-radius:50%;background:#25D366;display:flex;align-items:center;justify-content:center}
.wa .ic svg{width:22px;height:22px;color:#fff}
.wa .lb{max-width:0;overflow:hidden;white-space:nowrap;transition:max-width .4s var(--ease)}
.wa.hidden{transform:translateY(140%);opacity:0}
@media (hover:hover){.wa:hover{gap:10px;padding-right:18px}.wa:hover .lb{max-width:140px}}
.toast{position:fixed;z-index:90;left:50%;bottom:calc(96px + env(safe-area-inset-bottom,0px));transform:translateX(-50%) translateY(20px);background:var(--ink);color:var(--paper);padding:12px 18px;border-radius:12px;font-size:14px;opacity:0;pointer-events:none;transition:opacity .3s,transform .3s var(--ease);max-width:min(440px,calc(100vw - 32px));text-align:center}
.toast.on{opacity:1;transform:translateX(-50%) translateY(0)}



/* ---------- Intro ---------- */
.intro{position:fixed;inset:0;z-index:200;display:none;pointer-events:auto;cursor:pointer}
.intro.on{display:block}
.intro .half{position:absolute;left:0;right:0;height:50%;background:var(--mat);overflow:hidden;transition:transform .9s cubic-bezier(.7,0,.2,1)}
.intro .half.t{top:0}
.intro .half.b{bottom:0}
.intro .half::before{content:"";position:absolute;left:0;right:0;height:200%;
  background-image:linear-gradient(rgba(95,162,126,.5) 1px,transparent 1px),linear-gradient(90deg,rgba(95,162,126,.5) 1px,transparent 1px),linear-gradient(rgba(95,162,126,.18) 1px,transparent 1px),linear-gradient(90deg,rgba(95,162,126,.18) 1px,transparent 1px);
  background-size:120px 120px,120px 120px,24px 24px,24px 24px;opacity:0;transition:opacity .8s}
.intro .half.t::before{top:0}
.intro .half.b::before{bottom:0}
.intro.grid .half::before{opacity:1}
.intro.split .half.t{transform:translateY(-101%)}
.intro.split .half.b{transform:translateY(101%)}
.intro .cut{position:absolute;left:0;right:0;top:50%;height:0;border-top:2px dashed var(--paper);transform:scaleX(0);transform-origin:left;opacity:.9;transition:transform .7s cubic-bezier(.7,0,.2,1),opacity .3s}
.intro.cutting .cut{transform:scaleX(1)}
.intro.split .cut{opacity:0}
.intro .stage{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:28px;transition:opacity .35s,transform .6s cubic-bezier(.7,0,.2,1)}
.intro.split .stage{opacity:0;transform:scale(1.06)}
.intro .card{position:relative;background:var(--paper);border:2px solid var(--ink);box-shadow:8px 8px 0 var(--ink);padding:26px 34px;
  clip-path:inset(0 100% 0 0);transform:rotate(-3deg) scale(.92);transition:clip-path .8s cubic-bezier(.7,0,.2,1),transform .9s cubic-bezier(.34,1.56,.64,1)}
.intro.logo .card{clip-path:inset(0 0 0 0);transform:rotate(-2deg) scale(1)}
.intro .card img{height:clamp(64px,12vw,120px);width:auto;display:block}
.intro .crop{position:absolute;width:18px;height:18px;border-color:var(--paper);border-style:solid;opacity:0;transition:opacity .3s,transform .5s cubic-bezier(.34,1.56,.64,1)}
.intro.marks .crop{opacity:1;transform:none}
.intro .crop.a{left:-30px;top:-30px;border-width:2px 0 0 2px;transform:translate(-10px,-10px)}
.intro .crop.b{right:-30px;top:-30px;border-width:2px 2px 0 0;transform:translate(10px,-10px)}
.intro .crop.c{left:-30px;bottom:-30px;border-width:0 0 2px 2px;transform:translate(-10px,10px)}
.intro .crop.d{right:-30px;bottom:-30px;border-width:0 2px 2px 0;transform:translate(10px,10px)}
.intro .stamp-i{position:absolute;right:-60px;bottom:-34px;background:var(--brand);border:2px dashed var(--ink);padding:8px 12px;box-shadow:4px 4px 0 var(--ink);
  font-family:var(--f-pixel);font-size:11px;letter-spacing:.1em;color:var(--ink);transform:rotate(14deg) scale(0);transition:transform .5s cubic-bezier(.34,1.56,.64,1)}
.intro.stamp .stamp-i{transform:rotate(9deg) scale(1)}
.intro .meta{display:flex;gap:18px;align-items:center;color:var(--paper);font-family:var(--f-mono);font-size:12px;letter-spacing:.1em;text-transform:uppercase}
.intro .bar{width:min(260px,50vw);height:4px;background:rgba(240,239,232,.25);overflow:hidden}
.intro .bar i{display:block;height:100%;width:0;background:var(--spark)}
.intro .num{font-variant-numeric:tabular-nums;min-width:3.2em;text-align:right}
.intro .skip{position:absolute;right:max(20px,env(safe-area-inset-right,0px));bottom:calc(20px + env(safe-area-inset-bottom,0px));background:none;border:1px solid rgba(240,239,232,.5);color:var(--paper);border-radius:999px;padding:8px 14px;font:500 13px var(--f-body);cursor:pointer}
.intro .ruler-i{position:absolute;left:0;right:0;top:calc(env(safe-area-inset-top,0px) + 24px);display:flex;opacity:0;transition:opacity .6s .2s}
.intro.grid .ruler-i{opacity:.6}
.intro .ruler-i span{flex:0 0 120px;font-family:var(--f-mono);font-size:11px;color:var(--paper);padding-left:4px}
/* ---------- Movimiento reducido ---------- */
.rm *,.rm *::before,.rm *::after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important;scroll-behavior:auto!important}
.rm .layer{transform:none!important}
@media (prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important;scroll-behavior:auto!important}}

/* ---------- Responsive ---------- */
@media (max-width:980px){
  .hero-in{grid-template-columns:minmax(0,1fr)}
  .collage{height:420px;max-width:600px}
  .steps{grid-template-columns:repeat(2,minmax(0,1fr))}
  .trow{grid-template-columns:repeat(2,minmax(0,1fr))}
  .dg{grid-template-columns:minmax(0,1fr);gap:40px}
  .fgrid{grid-template-columns:minmax(0,1fr)}
  .ftop{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media (max-width:760px){
  .nav,.hdr .extra,.hdr .btn,.skin-tag{display:none}
  .menu-btn{display:inline-flex}
  .hdr{gap:12px;padding:6px 6px 6px 16px}
  .hdr .logo{height:30px}
  .pgrid,.svc{grid-template-columns:minmax(0,1fr)}
  .srow,.srow:nth-child(even){padding:24px 0;border-right:0}
  .srow:nth-child(odd){border-right:0}
  .collage{height:360px}
  .two{grid-template-columns:minmax(0,1fr)}
  .seg{grid-template-columns:minmax(0,1fr)}
  .stamp strong{font-size:20px}
}
@media (max-width:520px){
  .steps,.trow{grid-template-columns:minmax(0,1fr)}
  .ftop{grid-template-columns:minmax(0,1fr)}
  .guide-btn span{display:none}
}
.mnav{position:fixed;z-index:49;left:max(16px,env(safe-area-inset-left,0px));right:max(16px,env(safe-area-inset-right,0px));top:calc(env(safe-area-inset-top,0px) + 80px);background:var(--paper);border:2px solid var(--ink);border-radius:18px;padding:18px;display:grid;gap:4px;box-shadow:var(--cut)}
.mnav a{text-decoration:none;font-family:var(--f-display);font-size:26px;font-weight:700;padding:8px 4px}

/* ==========================================================
   Páginas internas (casos, diagnóstico, legales, 404, gracias)
   ========================================================== */
.skip-link{position:absolute;left:12px;top:-60px;z-index:300;background:var(--ink);color:var(--paper);padding:10px 16px;border-radius:999px;text-decoration:none;transition:top .2s}
.skip-link:focus{top:12px}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
[hidden]{display:none!important}
.intro-pending .intro{display:block}
.intro-pending body{overflow:hidden}

.page-hero{position:relative;background:var(--mat);color:var(--paper);overflow:hidden;padding-block:150px 72px;isolation:isolate}
.page-hero.ink{background:var(--ink)}
.page-hero h1{font-size:clamp(44px,6vw,84px);line-height:.95;margin:18px 0 22px}
.page-hero h1 .acc{font-size:1.08em}
.page-hero .lead{max-width:38em}
.crumbs{display:flex;flex-wrap:wrap;gap:8px;align-items:center;font-family:var(--f-mono);font-size:12px;letter-spacing:.08em;text-transform:uppercase}
.crumbs a{text-decoration:none;opacity:.8}
.crumbs a:hover{opacity:1;text-decoration:underline}
.crumbs span[aria-hidden]{opacity:.5}
.meta-row{display:flex;flex-wrap:wrap;gap:10px;margin-top:26px}
.meta-row .tag{border-color:var(--paper);color:var(--paper)}
.meta-row .tag.live,.meta-row .tag.proto{color:var(--ink);border-color:var(--ink)}

/* Caso de estudio */
.case-shot{margin-top:-40px;position:relative;z-index:2}
.case-shot .browser{border:2px solid var(--ink);box-shadow:var(--cut);background:#2A2A27}
.case-shot .browser .scroller{aspect-ratio:16/9}
.case-shot .browser .scroller .shot{aspect-ratio:auto;height:100%;object-fit:cover;object-position:top center}
.case-shot .browser.tallview .scroller .shot{transition:object-position 6s var(--ease)}
.case-shot .browser.tallview:hover .scroller .shot{object-position:center bottom}
.case-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px}
.case-box{background:var(--surface);border:2px solid var(--ink);border-radius:12px;padding:26px;display:grid;gap:12px;align-content:start}
.case-box h3{font-size:24px;letter-spacing:-.02em}
.case-box p,.case-box li{color:var(--ink-2)}
.case-box ul{margin:0;padding:0;display:grid;gap:10px}
.case-box li{list-style:none;display:flex;gap:10px;align-items:flex-start}
.case-box li svg{flex:0 0 18px;width:18px;height:18px;margin-top:3px;color:var(--mat)}
.case-box .num{font-family:var(--f-pixel);font-size:12px;letter-spacing:.12em;color:var(--brand)}
.tools{display:flex;flex-wrap:wrap;gap:10px}
.tools .tag{font-size:12px;padding:8px 14px;background:var(--surface)}
.gallery2{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(0,1fr);gap:24px;align-items:start}
.gallery2 figure{margin:0;display:grid;gap:10px}
.gallery2 figcaption{font-size:14px;color:var(--ink-2)}
.dark .gallery2 figcaption{color:#B4B8B3}
.next-case{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:0;border:2px solid var(--ink);border-radius:14px;overflow:hidden;text-decoration:none;background:var(--surface);box-shadow:var(--cut);transition:transform .2s var(--ease),box-shadow .2s var(--ease)}
.next-case:hover{transform:translate(4px,4px);box-shadow:2px 2px 0 var(--ink)}
.next-case .txt{padding:32px;display:grid;gap:10px;align-content:center}
.next-case .txt strong{font-family:var(--f-display);font-size:clamp(30px,3.6vw,48px);letter-spacing:-.025em;line-height:1}
.next-case img{width:100%;height:100%;object-fit:cover;object-position:top;border-left:2px solid var(--ink);aspect-ratio:16/10}
.case-nav{display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap;margin-bottom:28px}

/* Diagnóstico (página) */
.form-page{padding-top:140px;background:var(--surface)}

/* Legales */
.prose{max-width:760px}
.prose h2{font-size:28px;margin:44px 0 12px;letter-spacing:-.02em}
.prose p,.prose li{color:var(--ink-2);margin:0 0 12px}
.prose ul{padding-left:20px;margin:0 0 12px}
.prose a{color:var(--mat);font-weight:500}
.note{border:2px dashed var(--ink);border-radius:12px;padding:16px 18px;background:var(--paper);font-size:15px;display:flex;gap:10px;align-items:flex-start}
.note svg{flex:0 0 20px;width:20px;height:20px;margin-top:2px}

/* Gracias / 404 */
.center-page{min-height:100svh;display:flex;align-items:center;background:var(--mat);color:var(--paper);position:relative;isolation:isolate;padding-block:140px 80px;overflow:hidden}
.center-page .box{background:var(--paper);color:var(--ink);border:2px solid var(--ink);border-radius:20px;box-shadow:8px 8px 0 var(--ink);padding:clamp(28px,5vw,56px);max-width:720px;display:grid;gap:20px}
.center-page h1{font-size:clamp(40px,6vw,72px);line-height:.95}
.big404{font-family:var(--f-pixel);font-size:clamp(80px,16vw,180px);line-height:1;color:var(--spark);text-shadow:6px 6px 0 var(--ink)}
.next-steps{display:grid;gap:14px;margin:0;padding:0;counter-reset:s}
.next-steps li{list-style:none;display:flex;gap:14px;align-items:flex-start}
.next-steps li::before{counter-increment:s;content:counter(s);flex:0 0 32px;height:32px;border-radius:50%;background:var(--ink);color:var(--spark);font-family:var(--f-pixel);font-size:12px;display:flex;align-items:center;justify-content:center}

/* Reel: sin reproductor falso */
.video .ctrl .mono{opacity:.85}

@media (max-width:980px){
  .case-grid{grid-template-columns:minmax(0,1fr)}
  .gallery2{grid-template-columns:minmax(0,1fr)}
}
@media (max-width:760px){
  .next-case{grid-template-columns:minmax(0,1fr)}
  .next-case img{border-left:0;border-top:2px solid var(--ink)}
  .page-hero{padding-block:120px 64px}
  .case-shot{margin-top:-28px}
}

.reel .muted,.reel .sh p{color:#B4B8B3}

/* ==========================================================
   Efectos y animaciones (paridad con el prototipo y Figma)
   ========================================================== */
.intro-lock body{overflow:hidden}
[data-lens-box]{position:relative}
@media (hover:hover) and (pointer:fine){[data-lens-box]{cursor:none}}
.hdr .skin-tag{transition:opacity .3s}
.fprefs{display:flex;flex-wrap:wrap;gap:16px;align-items:center}
.fpref{display:inline-flex;gap:8px;align-items:center;font-size:13px;color:#B4B8B3;text-decoration:none;cursor:pointer}
.fpref svg{width:14px;height:14px;fill:currentColor}
.fpref:hover{color:var(--paper)}
.fpref input{width:16px;height:16px;accent-color:var(--brand)}

/* Transiciones entre páginas (como el PUSH del prototipo en Figma) */
@view-transition{navigation:auto}
.hdr{view-transition-name:aupa-hdr}
::view-transition-group(aupa-hdr){animation-duration:.45s}
::view-transition-old(root){animation:vt-out .45s cubic-bezier(.7,0,.2,1) both}
::view-transition-new(root){animation:vt-in .5s cubic-bezier(.2,.8,.2,1) both}
@keyframes vt-out{to{opacity:0;transform:translateX(-8%)}}
@keyframes vt-in{from{opacity:0;transform:translateX(8%)}}
.rm::view-transition-old(root),.rm::view-transition-new(root){animation:none}
@media (prefers-reduced-motion:reduce){::view-transition-old(root),::view-transition-new(root),::view-transition-group(*){animation:none!important}}

/* Menú móvil */
.mnav:not([hidden]){animation:mnav-in .38s var(--ease) both;transform-origin:top center}
.mnav:not([hidden]) a{animation:mnav-a .45s var(--ease) both}
.mnav a:nth-child(1){animation-delay:.04s}.mnav a:nth-child(2){animation-delay:.08s}.mnav a:nth-child(3){animation-delay:.12s}.mnav a:nth-child(4){animation-delay:.16s}.mnav a:nth-child(5){animation-delay:.2s}
@keyframes mnav-in{from{opacity:0;transform:translateY(-14px) scale(.97)}}
@keyframes mnav-a{from{opacity:0;transform:translateX(-14px)}}
.mnav a:last-child{color:var(--brand)}

/* Modal de vista ampliada */
.zoom-modal{animation:fade-in .25s ease both}
.zoom-modal .box{animation:pop-in .35s var(--ease) both}
.zoom-modal.out{animation:fade-out .2s ease both}
@keyframes fade-in{from{opacity:0}}
@keyframes fade-out{to{opacity:0}}
@keyframes pop-in{from{opacity:0;transform:translateY(24px) scale(.96)}}

/* Overlay "Enviando" (pantalla 06 del flujo) */
.sending{position:fixed;inset:0;z-index:150;background:rgba(15,20,18,.62);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);display:flex;align-items:center;justify-content:center;padding:20px;animation:fade-in .25s ease both}
.sending.out{animation:fade-out .2s ease both}
.sending .box{background:var(--paper);border:2px solid var(--ink);box-shadow:var(--cut);border-radius:18px;padding:30px 38px;display:grid;gap:12px;justify-items:center;text-align:center;animation:pop-in .35s var(--ease) both}
.sending .box strong{font-family:var(--f-display);font-size:24px;letter-spacing:-.02em}
.sending .spin{width:40px;height:40px;border-width:4px;color:var(--brand)}

/* Entrada de páginas internas */
.page-hero .crumbs,.page-hero h1,.page-hero .lead,.page-hero .meta-row,.page-hero .ctas{animation:rise .8s var(--ease) both}
.page-hero h1{animation-delay:.06s}.page-hero .lead{animation-delay:.14s}.page-hero .meta-row{animation-delay:.22s}.page-hero .ctas{animation-delay:.3s}
.case-shot .browser{animation:shot-in 1s .25s var(--ease) both}
@keyframes rise{from{opacity:0;transform:translateY(26px)}}
@keyframes shot-in{from{opacity:0;transform:translateY(46px) rotate(-1.2deg)}}
.case-box{transition:transform .3s var(--ease),box-shadow .3s var(--ease)}
.case-box:hover{transform:translateY(-6px);box-shadow:var(--cut)}
.next-case img{transition:transform .8s var(--ease)}
.next-case:hover img{transform:scale(1.05)}
.next-case{overflow:hidden}
.next-case .link svg{transition:transform .25s var(--ease)}
.next-case:hover .link svg{transform:translateX(5px)}

/* Gracias y 404 */
.center-page .box{animation:box-in .8s var(--ease) both}
@keyframes box-in{from{opacity:0;transform:translateY(34px) rotate(-2deg) scale(.96)}}
.next-steps li{animation:rise .6s var(--ease) both}
.next-steps li:nth-child(1){animation-delay:.45s}.next-steps li:nth-child(2){animation-delay:.6s}.next-steps li:nth-child(3){animation-delay:.75s}
.center-page .tag.live{animation:stamp-in .5s .3s cubic-bezier(.34,1.56,.64,1) both}
@keyframes stamp-in{from{transform:scale(0) rotate(14deg)}}
.big404{display:inline-block;animation:glitch 2.6s steps(1) infinite}
@keyframes glitch{0%,100%{transform:none;text-shadow:6px 6px 0 var(--ink)}90%{transform:translate(-5px,0);text-shadow:-6px 6px 0 var(--brand)}93%{transform:translate(4px,-3px);text-shadow:6px -4px 0 var(--ink),-4px 0 0 var(--spark)}96%{transform:translate(-2px,2px);text-shadow:6px 6px 0 var(--ink)}}

/* Indicadores de carrusel */
.dots{display:none}

@media (max-width:760px){
  /* Portafolio y galería Figma como carrusel (versión móvil en Figma) */
  [data-carousel]{display:flex!important;overflow-x:auto;scroll-snap-type:x mandatory;gap:16px;margin-inline:-20px;padding:6px 20px 22px;scrollbar-width:none;-webkit-overflow-scrolling:touch;scroll-padding-inline:20px}
  [data-carousel]::-webkit-scrollbar{display:none}
  .pgrid .card{flex:0 0 86%;scroll-snap-align:center}
  .fgrid .fcol{display:contents}
  .fgrid .reveal-up{flex:0 0 86%;scroll-snap-align:center}
  .fgrid .browser .scroller{aspect-ratio:4/5}
  .dots{display:flex;justify-content:center;gap:8px;margin-top:4px}
  .dots button{width:8px;height:8px;padding:0;border-radius:999px;border:0;background:var(--line);transition:width .3s var(--ease),background .3s}
  .dots button.on{width:26px;background:var(--ink)}
  .dark .dots button{background:#4A4F4B}.dark .dots button.on{background:var(--spark)}
  /* Servicios en acordeón */
  .srow{padding:20px 0!important;align-items:center}
  .srow > div p{max-height:0;opacity:0;overflow:hidden;transition:max-height .45s var(--ease),opacity .3s,margin .3s}
  .srow.open > div p{max-height:220px;opacity:1;margin-top:4px}
  .srow h3{margin-bottom:0;font-size:21px}
  .srow .go{transition:transform .35s var(--ease)}
  .srow:not(.open) .go{transform:rotate(90deg)}
  .srow.open{background:var(--paper)}
  .srow.open .ib{background:var(--brand);transform:rotate(-6deg)}
  .fbot{flex-direction:column}
}

/* ---------- Intro: el recorte solo afecta la tarjeta, no la estampilla ni las marcas ---------- */
.intro .stage{gap:clamp(56px,8vh,76px);padding:0 20px}
.intro .stage .card{background:none;border:0;border-radius:0;box-shadow:none;padding:0;clip-path:none;overflow:visible}
.intro.logo .stage .card{clip-path:none}
.intro .card .face{display:block;background:var(--paper);border:2px solid var(--ink);box-shadow:8px 8px 0 var(--ink);padding:26px 34px;
  clip-path:inset(-2px 100% -12px -2px);transition:clip-path .8s cubic-bezier(.7,0,.2,1)}
.intro.logo .card .face{clip-path:inset(-2px -12px -12px -2px)}
.intro .card img{height:clamp(56px,12vw,120px);max-height:22vh;width:auto}
.intro .stamp-i{white-space:nowrap;z-index:2}
.intro .meta{flex-wrap:wrap;justify-content:center;row-gap:10px;max-width:calc(100vw - 40px);text-align:center}
.intro .meta #introLabel{white-space:nowrap}
@media (max-width:520px){
  .intro .card .face{padding:18px 22px}
  .intro .stamp-i{right:-18px;bottom:-30px;font-size:10px;padding:6px 9px}
  .intro .crop{width:14px;height:14px}
  .intro .crop.a,.intro .crop.c{left:-20px}.intro .crop.b,.intro .crop.d{right:-20px}
  .intro .crop.a,.intro .crop.b{top:-20px}.intro .crop.c,.intro .crop.d{bottom:-20px}
  .intro .meta{font-size:11px;gap:10px 12px}
  .intro .bar{width:min(220px,70vw);order:3;flex-basis:100%;max-width:220px}
  .intro .num{min-width:0}
}
@media (max-height:440px){
  .intro .stage{gap:56px}
  .intro .card img{height:min(84px,20vh)}
  .intro .crop{width:14px;height:14px}
  .intro .crop.a,.intro .crop.c{left:-20px}.intro .crop.b,.intro .crop.d{right:-20px}
  .intro .crop.a,.intro .crop.b{top:-20px}.intro .crop.c,.intro .crop.d{bottom:-20px}
  .intro .stamp-i{bottom:-26px}
  .intro .ruler-i{display:none}
}

/* ---------- Páginas legales ---------- */
.legal-wrap{display:grid;grid-template-columns:minmax(0,280px) minmax(0,1fr);gap:56px;align-items:start}
.legal-aside{position:sticky;top:110px;display:grid;gap:26px}
.legal-tabs{display:flex;flex-wrap:wrap;gap:8px}
.legal-tabs .chip{font-size:13px;padding:9px 14px}
.legal-tabs .chip[aria-current]{background:var(--ink);color:var(--paper)}
.legal-toc ol{margin:10px 0 0;padding-left:20px;display:grid;gap:6px;font-size:14px}
.legal-toc a{text-decoration:none;color:var(--ink-2)}
.legal-toc a:hover{color:var(--ink);text-decoration:underline}
.prose h2{scroll-margin-top:110px}
.prose b{color:var(--ink)}
@media (max-width:980px){.legal-wrap{grid-template-columns:minmax(0,1fr);gap:28px}.legal-aside{position:static}.legal-toc{display:none}}

/* ---------- Testimonios (Fiverr) ---------- */
.tcard{margin:0}
.tcard blockquote{margin:0;display:grid;gap:8px}
.tcard .tr{font-size:14px;color:var(--ink-2);font-style:italic}
.tcard figcaption{display:grid;gap:6px;justify-items:start}
.tcard .src-link{display:inline-flex;gap:6px;align-items:center;text-decoration:none;color:var(--mat);font-size:11px}
.tcard .src-link:hover{text-decoration:underline}
.rate .btn svg{color:var(--ink)}

/* QA: el header no debe salirse en tablets */
@media (max-width:1180px){.hdr .skin-tag{display:none}}
@media (max-width:960px){.hdr .nav a.opt{display:none}.hdr{gap:18px}}
section[id]{scroll-margin-top:0}
/* QA: el logo y el botón del header nunca se encogen */
.hdr .logo-wrap{flex:0 0 auto}
.hdr .logo{max-width:none;flex-shrink:0}
.hdr .btn{white-space:nowrap;flex:0 0 auto}
.hdr .nav a{white-space:nowrap}

/* Logo pixel art en el header estilo Pixel art */
.hdr .logo-px{display:none;image-rendering:pixelated;image-rendering:crisp-edges}
.hdr[data-skin="pixel"] .logo:not(.logo-px){display:none}
.hdr[data-skin="pixel"] .logo-px{display:block;height:40px;width:auto}
.hdr.compact[data-skin="pixel"] .logo-px{height:30px}
@media (max-width:760px){.hdr[data-skin="pixel"] .logo-px{height:30px}}
