/* =========================================================
   DANISS BLUE — v4
   Identidad: azul #0259F6, blanco, negro #0A0A0A, azules suaves,
   Franie (títulos), Geist (texto), Geist Mono (detalles),
   bordes redondeados, líneas finas con ✦ y mucho aire.
   v4: saludo protagonista, cursor de dos líneas, franja de proyectos,
   páginas de proyectos / casos / servicios, logos reales, vidrio sutil
   y movimiento con jerarquía (respuestas 200 ms, entradas ~650 ms).
   Breakpoint mobile principal: 768px.
   ========================================================= */
@font-face{font-family:"Franie";src:url("../assets/fonts/franie-bold.woff2") format("woff2");font-weight:700;font-display:swap}
@font-face{font-family:"Franie";src:url("../assets/fonts/franie-extrabold.woff2") format("woff2");font-weight:800;font-display:swap}
@font-face{font-family:"Franie";src:url("../assets/fonts/franie-black.woff2") format("woff2");font-weight:900;font-display:swap}
/* PP Neue Machina (Pangram Pangram): Ultrabold para títulos, Regular para el resto (prueba v20).
   Volver a Franie/Geist = devolver --display y --text a sus valores anteriores (abajo, comentados). */
@font-face{font-family:"PP Neue Machina";src:url("../assets/fonts/neue-machina-regular.woff2") format("woff2");font-weight:300 600;font-style:normal;font-display:swap}
@font-face{font-family:"PP Neue Machina";src:url("../assets/fonts/neue-machina-regular-italic.woff2") format("woff2");font-weight:300 600;font-style:italic;font-display:swap}
@font-face{font-family:"PP Neue Machina";src:url("../assets/fonts/neue-machina-ultrabold.woff2") format("woff2");font-weight:700 900;font-style:normal;font-display:swap}
@font-face{font-family:"PP Neue Machina";src:url("../assets/fonts/neue-machina-ultrabold-italic.woff2") format("woff2");font-weight:700 900;font-style:italic;font-display:swap}

:root{
  --blue:#0259F6;
  --blue-dark:#0041C2;
  --blue-soft:#EDF3FF;
  --blue-mist:#DCE7FF;
  --white:#FFFFFF;
  --ink:#0A0A0A;
  --gray:#55585F;
  --line:#E4E7EE;
  --red:#D92D20;

  --display:"PP Neue Machina","Arial Black",system-ui,sans-serif;   /* antes: "Franie","Arial Black",system-ui,sans-serif */
  --text:"PP Neue Machina",system-ui,-apple-system,"Segoe UI",sans-serif;   /* antes: "Geist",system-ui,-apple-system,"Segoe UI",sans-serif */
  --mono:"Geist Mono",ui-monospace,"SFMono-Regular",Menlo,Consolas,monospace;

  --r-xs:10px; --r-sm:16px; --r-md:24px; --r-lg:32px; --r-xl:44px; --pill:999px;
  --spring:cubic-bezier(.16,1,.3,1);
  --pop:cubic-bezier(.34,1.56,.64,1);
  --fast:.22s;            /* respuestas de botones y hovers */
  --enter:.65s;           /* entradas de bloques */
  --gut:24px;
  --maxw:1240px;
  --header-h:84px;
  --shadow:0 30px 60px -32px rgba(2,89,246,.55);
  --shadow-soft:0 18px 40px -24px rgba(10,10,10,.35);
  /* vidrio */
  --glass-bg:rgba(255,255,255,.66);
  --glass-border:rgba(2,89,246,.14);
  --glass-blur:14px;
  --glass-dark-bg:rgba(10,10,10,.78);
  /* semánticos: cambian en modo oscuro */
  --bg:#FFFFFF;          /* fondo de página */
  --surface:#FFFFFF;     /* tarjetas, pills, campos */
  --fg:#0A0A0A;          /* texto principal */
  --inverse:#0A0A0A;     /* hover oscuro de botones */
  --on-inverse:#FFFFFF;
  --err-bg:#FDECEA;
  color-scheme:light;
}
/* Modo oscuro: lo elige la persona (botón) o sigue al dispositivo */
:root[data-theme="dark"]{
  --blue:#3D7BFF; --blue-dark:#2A62E6; --blue-soft:#0F1A31; --blue-mist:#22365F;
  --bg:#0A0A0A; --surface:#14161B; --fg:#F2F4F8; --gray:#A6ABB6; --line:#262A33;
  --inverse:#FFFFFF; --on-inverse:#0A0A0A; --err-bg:rgba(217,45,32,.16);
  --glass-bg:rgba(20,22,27,.66); --glass-border:rgba(255,255,255,.09); --glass-dark-bg:rgba(36,39,47,.86);
  --shadow:0 30px 60px -32px rgba(61,123,255,.55); --shadow-soft:0 18px 40px -24px rgba(0,0,0,.8);
  color-scheme:dark;
}
@media (prefers-color-scheme:dark){
  :root:not([data-theme="light"]){
  --blue:#3D7BFF; --blue-dark:#2A62E6; --blue-soft:#0F1A31; --blue-mist:#22365F;
  --bg:#0A0A0A; --surface:#14161B; --fg:#F2F4F8; --gray:#A6ABB6; --line:#262A33;
  --inverse:#FFFFFF; --on-inverse:#0A0A0A; --err-bg:rgba(217,45,32,.16);
  --glass-bg:rgba(20,22,27,.66); --glass-border:rgba(255,255,255,.09); --glass-dark-bg:rgba(36,39,47,.86);
  --shadow:0 30px 60px -32px rgba(61,123,255,.55); --shadow-soft:0 18px 40px -24px rgba(0,0,0,.8);
  color-scheme:dark;
  }
}
*,*::before,*::after{box-sizing:border-box}
[hidden]{display:none !important}
html{scroll-behavior:smooth;scrollbar-width:none;background:var(--bg);overflow-x:clip;scroll-padding-top:calc(var(--header-h) + 12px)}
html::-webkit-scrollbar{display:none}
body{margin:0;background:var(--bg);color:var(--fg);transition:background-color .35s,color .35s;font-family:var(--text);font-size:16px;line-height:1.6;overflow-x:clip;-webkit-font-smoothing:antialiased}
img{max-width:100%;display:block}
a{color:inherit;text-decoration:none}
ul,ol{list-style:none;margin:0;padding:0}
h1,h2,h3,p,figure,dl,dd{margin:0}
button,input,textarea{font:inherit;color:inherit}
button{background:none;border:0;padding:0;cursor:pointer}
::selection{background:var(--blue);color:var(--white)}
:focus-visible{outline:2.5px solid var(--blue);outline-offset:4px;border-radius:var(--r-xs)}
.has-cursor, .has-cursor *{cursor:none !important}
.has-cursor input,.has-cursor textarea{cursor:text !important}
.skip{position:fixed;left:16px;top:-80px;z-index:200;background:var(--ink);color:var(--white);padding:12px 18px;border-radius:var(--pill);font-weight:600;transition:top .3s}
.skip:focus{top:16px}

/* ---------- vidrio sutil ---------- */
.glass{background:var(--glass-bg);-webkit-backdrop-filter:blur(var(--glass-blur)) saturate(1.4);backdrop-filter:blur(var(--glass-blur)) saturate(1.4);border:1px solid var(--glass-border);box-shadow:0 10px 30px -18px rgba(2,89,246,.35)}
.glass-dark{background:var(--glass-dark-bg);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border:1px solid rgba(255,255,255,.12)}
@supports not ((backdrop-filter:blur(1px)) or (-webkit-backdrop-filter:blur(1px))){
  .glass{background:rgba(255,255,255,.96)}
  .glass-dark{background:var(--ink)}
}

/* ---------- caricaturas: limpias, sin contorno ---------- */
.sticker{filter:none}
/* rebote leve reservado para caricaturas */
.float{animation:float 4.6s ease-in-out infinite}
.float--b{animation-duration:5.2s;animation-delay:-1.4s}
.float--c{animation-duration:4s;animation-delay:-.7s}
@keyframes float{0%,100%{translate:0 0;rotate:0deg}50%{translate:0 -8px;rotate:-1.2deg}}
.is-off,.motion-paused .float,.motion-paused .ambient,.motion-paused .dot,.motion-paused .hero::before{animation-play-state:paused !important}

/* ---------- estructura editorial: líneas con ✦ ---------- */
.divider{position:relative;height:1px;background:var(--line);margin:0 0 clamp(56px,7vw,100px)}
.divider::before,.divider::after,.frame i{content:"✦";position:absolute;top:-10px;font:14px/20px var(--text);color:var(--blue);font-style:normal}
.divider::before{left:-7px}
.divider::after{right:-7px}
.frame{position:absolute;pointer-events:none;border-top:1px solid var(--line);border-bottom:1px solid var(--line);z-index:-1}
.frame i:nth-child(1){left:-7px;top:-10px}
.frame i:nth-child(2){right:-7px;top:-10px}
.frame i:nth-child(3){left:-7px;top:auto;bottom:-10px}
.frame i:nth-child(4){right:-7px;top:auto;bottom:-10px}

/* ---------- entrada (load) ---------- */
.js .appear{opacity:0;transform:translateY(24px)}
.js .appear--down{transform:translateY(-24px)}
.js .appear--pop{transform:translateY(28px) scale(.9)}
.is-loaded .appear{opacity:1;transform:none;transition:transform var(--enter) var(--spring) var(--d,0s),opacity .5s ease var(--d,0s)}
.js .appear--pop{transition-timing-function:var(--pop)}

/* letras / palabras divididas */
.split{display:inline-block;overflow:hidden;vertical-align:top;white-space:nowrap;padding:.22em .02em .1em;margin:-.22em -.02em -.1em}
.split > span{display:inline-block;transform:translateY(112%);transition:transform .7s var(--spring);transition-delay:calc(var(--d,0s) + var(--i,0) * 40ms)}
.no-split .split > span,.is-loaded .hero__title .split > span,.is-loaded .page-hero__title .split > span,.is-loaded .case-hero__title .split > span,.reveal.is-in .split > span,.reveal.is-in ~ * .split > span{transform:none}

/* ---------- reveal al scroll ---------- */
.js .reveal{opacity:0;transform:translateY(24px)}
.js .reveal.is-in{opacity:1;transform:none;transition:transform var(--enter) var(--spring) var(--d,0s),opacity .5s ease var(--d,0s)}
.js .title.reveal{opacity:1;transform:none}

/* ---------- texto “rodillo” en hover ---------- */
.roll{position:relative;display:inline-flex;overflow:hidden;vertical-align:bottom;line-height:1.2}
.roll__in{position:relative;display:block;transition:transform .35s var(--spring)}
.roll__in::after{content:attr(data-text);position:absolute;left:0;top:100%;white-space:nowrap}
a:hover .roll__in,button:hover .roll__in,a:focus-visible .roll__in{transform:translateY(-100%)}

/* =================== CURSOR (solo mouse) =================== */
.cursor{position:fixed;left:0;top:0;z-index:2300;pointer-events:none;display:none;opacity:0;transition:opacity .2s}
.has-cursor .cursor{display:block}
.cursor__box{position:absolute;left:0;top:0;width:14px;height:14px;border-radius:50%;background:var(--blue);border:1.5px solid var(--white);display:grid;place-items:center;will-change:transform;transition:width .32s var(--spring),height .32s var(--spring),scale .18s}
.cursor__label{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;width:84px;text-align:center;color:var(--white);font:600 12.5px/1.08 var(--mono);letter-spacing:.03em;text-transform:uppercase;opacity:0;transition:opacity .12s}
.cursor__label span{display:block;white-space:nowrap}
.cursor.is-label .cursor__box{width:104px;height:104px}
.cursor.is-label .cursor__label{opacity:1;transition:opacity .2s .12s}
.cursor.is-down .cursor__box{scale:.85}

/* =================== PROGRESO =================== */
.progress{position:fixed;right:10px;top:50%;transform:translateY(-50%);height:min(44vh,400px);z-index:60;display:flex;flex-direction:column;align-items:center;gap:6px;pointer-events:none}
.progress__arrow{font-size:9px;line-height:1;color:var(--blue)}
.progress__track{position:relative;flex:1;width:6px;border-radius:6px;background:var(--blue-soft)}
.progress__thumb{position:absolute;left:0;top:0;width:6px;height:22%;border-radius:6px;background:var(--blue);will-change:transform}

/* =================== HEADER =================== */
.header{position:fixed;inset:0 0 auto;z-index:80;display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:16px;padding:calc(16px + env(safe-area-inset-top,0px)) var(--gut) 16px;pointer-events:none}
.header > *{pointer-events:auto}
.logo{justify-self:start;display:flex;align-items:center;gap:8px;background:var(--surface);padding:6px 12px 6px 8px;border-radius:var(--pill);transition:transform .35s var(--spring)}
.logo:hover{transform:rotate(-3deg) scale(1.04)}
.logo__iso{height:30px;width:auto}
.logo__name{height:17px;width:auto}
.nav{position:relative;display:flex;gap:2px;padding:4px;border-radius:var(--pill)}
.nav__pill{position:absolute;top:4px;bottom:4px;left:0;width:0;border-radius:var(--pill);background:var(--blue);box-shadow:0 8px 20px -10px rgba(2,89,246,.8);transition:transform .45s var(--spring),width .45s var(--spring),opacity .25s;opacity:0}
.nav a{position:relative;z-index:1;font-size:14px;font-weight:500;color:var(--blue);padding:8px 15px;border-radius:var(--pill);transition:color var(--fast)}
.nav a.is-hl{color:var(--white)}
.mail{font:500 13px/1 var(--mono);color:var(--blue);padding:10px 14px;border-radius:var(--pill);transition:background var(--fast),color var(--fast),border-color var(--fast)}
.mail:hover{background:var(--blue);color:var(--white);border-color:var(--blue)}
.burger{display:none;width:48px;height:48px;border-radius:50%;background:var(--blue);position:relative;box-shadow:var(--shadow);z-index:2}
.burger span{position:absolute;left:14px;right:14px;height:3px;border-radius:3px;background:var(--white);transition:transform .4s var(--spring),top .4s var(--spring)}
.burger span:first-child{top:19px}
.burger span:last-child{top:27px}
.burger[aria-expanded="true"]{background:var(--white)}
.burger[aria-expanded="true"] span{background:var(--blue)}
.burger[aria-expanded="true"] span:first-child{top:23px;transform:rotate(45deg)}
.burger[aria-expanded="true"] span:last-child{top:23px;transform:rotate(-45deg)}

/* menú móvil a pantalla completa */
.menu{position:fixed;inset:0;z-index:70;background:var(--blue);color:var(--white);display:flex;flex-direction:column;padding:calc(104px + env(safe-area-inset-top,0px)) 24px calc(28px + env(safe-area-inset-bottom,0px));gap:24px;overflow:hidden;clip-path:circle(0% at calc(100% - 46px) 40px);transition:clip-path .65s var(--spring)}
.menu.is-open{clip-path:circle(150% at calc(100% - 46px) 40px)}
.menu nav{display:flex;flex-direction:column;gap:2px;position:relative;z-index:1}
.menu nav a{display:flex;align-items:baseline;gap:12px;min-height:56px;font:900 clamp(34px,10.5vw,54px)/1.1 var(--display);text-transform:uppercase;padding:6px 0;border-bottom:1px solid rgba(255,255,255,.18);transform:translateY(32px);opacity:0;transition:transform .6s var(--spring),opacity .4s}
.menu nav a small{font:500 12px var(--mono);opacity:.7}
.menu.is-open nav a{transform:none;opacity:1}
.menu.is-open nav a:nth-child(1){transition-delay:.1s}
.menu.is-open nav a:nth-child(2){transition-delay:.16s}
.menu.is-open nav a:nth-child(3){transition-delay:.22s}
.menu.is-open nav a:nth-child(4){transition-delay:.28s}
.menu.is-open nav a:nth-child(5){transition-delay:.34s}
.menu__foot{display:flex;flex-direction:column;gap:10px;font:500 14px var(--mono);position:relative;z-index:1;opacity:0;transition:opacity .4s .35s}
.menu__foot a{min-height:32px;display:inline-flex;align-items:center}
.menu.is-open .menu__foot{opacity:1}
.menu__mascot{position:absolute;right:-8px;bottom:-10px;height:min(34vh,290px);transform:translateY(60%) rotate(8deg);transition:transform .8s var(--pop) .25s}
.menu.is-open .menu__mascot{transform:none}

/* =================== HERO =================== */
.hero{position:relative;min-height:max(100svh,720px);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:clamp(16px,2vw,26px);padding:calc(var(--header-h) + 28px) var(--gut) 96px;overflow:hidden;isolation:isolate;text-align:center}
.hero::before{content:"";position:absolute;left:50%;top:50%;width:min(80vw,1000px);aspect-ratio:1;translate:-50% -50%;border-radius:50%;background:radial-gradient(circle,var(--blue-soft) 0%,rgba(237,243,255,0) 65%);z-index:-1;animation:breathe 8s ease-in-out infinite}
@keyframes breathe{50%{scale:1.06}}
.frame--hero{inset:calc(var(--header-h) + 8px) var(--gut) 78px}

.trail-layer{position:absolute;inset:0;z-index:1;pointer-events:none;overflow:hidden}
.trail{position:absolute;left:0;top:0;width:var(--s,100px);transform:translate(-50%,-50%) rotate(var(--r,0deg)) scale(0);animation:trail-in .4s var(--pop) forwards}
.trail.is-out{animation:trail-out .55s ease forwards}
.trail svg{width:100%;height:auto;display:block}
@keyframes trail-in{to{transform:translate(-50%,-50%) rotate(var(--r,0deg)) scale(1)}}
@keyframes trail-out{from{transform:translate(-50%,-50%) rotate(var(--r,0deg)) scale(1);opacity:1}to{transform:translate(-50%,-50%) rotate(calc(var(--r,0deg) + 10deg)) scale(.4);opacity:0}}

.hero__pill{position:relative;z-index:3;display:inline-flex;align-items:center;gap:8px;font:600 13px/1 var(--mono);color:var(--blue);padding:10px 16px;border-radius:var(--pill)}
.dot{width:8px;height:8px;border-radius:50%;background:#19C37D;box-shadow:0 0 0 0 rgba(25,195,125,.55);animation:pulse 1.8s infinite;flex:none}
@keyframes pulse{70%{box-shadow:0 0 0 9px rgba(25,195,125,0)}100%{box-shadow:0 0 0 0 rgba(25,195,125,0)}}

/* título + saludo: la caricatura se para sobre “soy Daniss.” sin taparla */
.hero__stage{--t:clamp(52px,8.8vw,142px);position:relative;z-index:2;display:grid;grid-template-columns:auto minmax(0,1fr);grid-template-rows:auto auto;font-size:var(--t);text-align:left}
.hero__title{grid-column:1 / -1;grid-row:1 / 3;display:grid;grid-template-columns:subgrid;grid-template-rows:subgrid;margin:0;font-size:1em}
.hero__line{display:block;font:900 1em/.9 var(--display);text-transform:uppercase;letter-spacing:-.025em;color:var(--blue);white-space:nowrap}
.hero__line--1{grid-column:1;grid-row:1;align-self:end;padding-bottom:.02em}
.hero__line--2{grid-column:1 / -1;grid-row:2}
.hero__mascot{grid-column:2;grid-row:1;justify-self:center;align-self:end;position:relative;height:2.8em;aspect-ratio:400/711;margin-bottom:.05em;cursor:pointer;-webkit-tap-highlight-color:transparent;outline-offset:6px}
.hero__poses{position:absolute;inset:0;display:block;transition:scale .4s var(--pop)}
.hero__mascot:hover .hero__poses{scale:1.03}
.hero__mascot:active .hero__poses{scale:.97}
.hero__pose{position:absolute;inset:0;display:block;transition:opacity .18s}
.hero__pose img,.hero__pose.sticker{width:100%;height:100%;object-fit:contain;object-position:bottom center}
.hero__pose--alt{opacity:0;inset:auto 0 0;height:96%;margin:0 auto}
.hero__mascot.is-alt .hero__pose--main{opacity:0}
.hero__mascot.is-alt .hero__pose--alt{opacity:1}
.hero__bubble{position:absolute;z-index:4;left:72%;top:2%;font:800 15px/1 var(--display);letter-spacing:0;text-transform:none;color:var(--on-inverse);background:var(--inverse);padding:10px 14px;border-radius:var(--pill) var(--pill) var(--pill) 6px;white-space:nowrap;opacity:0;transform:translateY(8px) scale(.85);transform-origin:left bottom;transition:opacity .2s,transform .4s var(--pop);pointer-events:none}
.hero__mascot:hover .hero__bubble,.hero__mascot:focus-visible .hero__bubble,.hero__mascot.is-hello .hero__bubble{opacity:1;transform:none}

.hero__copy{position:relative;z-index:3;display:grid;gap:10px;justify-items:center;max-width:640px}
.hero__desc{font:500 13px/1.5 var(--mono);color:var(--blue);text-transform:uppercase;letter-spacing:.03em}
.hero__desc span{white-space:nowrap}
@media (max-width:560px){.hero__desc span{white-space:normal}}
.hero__claim{font:500 clamp(19px,1.9vw,27px)/1.25 var(--text);letter-spacing:-.02em;color:var(--fg);text-wrap:balance}
.hero__claim b{color:var(--blue);font-weight:600}
.hero__actions{position:relative;z-index:3;display:flex;flex-wrap:wrap;justify-content:center;gap:10px}
.hero__tags{position:relative;z-index:3;display:flex;flex-wrap:wrap;justify-content:center;gap:8px}
.hero__tags a{display:inline-flex;align-items:center;min-height:36px;font-size:13.5px;font-weight:500;color:var(--blue);background:var(--surface);border:1px solid var(--blue-mist);padding:6px 14px;border-radius:var(--pill);transition:background var(--fast),color var(--fast),border-color var(--fast),translate var(--fast)}
.hero__tags a:hover,.hero__tags a:focus-visible{background:var(--blue);color:var(--white);border-color:var(--blue);translate:0 -2px}
.hero__bottom{position:absolute;left:var(--gut);right:var(--gut);bottom:22px;z-index:3;display:grid;grid-template-columns:1fr auto 1fr;align-items:center;font:500 13px var(--mono);color:var(--blue)}
.clock{justify-self:start}
.clock time{font-variant-numeric:tabular-nums}

/* =================== SECCIONES Y BASES =================== */
.section{position:relative;max-width:var(--maxw);margin:0 auto;padding:clamp(40px,5vw,64px) var(--gut) clamp(80px,10vw,136px);text-align:center}
.section-head{display:flex;align-items:flex-end;justify-content:space-between;gap:24px;text-align:left}
.section-head .kicker{margin-bottom:18px}
.kicker{display:inline-flex;align-items:center;gap:8px;font:600 12.5px/1 var(--mono);text-transform:uppercase;letter-spacing:.06em;color:var(--blue);background:var(--blue-soft);padding:9px 14px;border-radius:var(--pill);margin-bottom:22px}
.title{font:900 clamp(34px,6vw,90px)/1 var(--display);text-transform:uppercase;letter-spacing:-.02em;color:var(--blue);text-wrap:balance}
.title--left{text-align:left}
.title--white{color:var(--white)}
.lead{max-width:58ch;margin:26px auto 0;color:var(--gray);font-size:17px;line-height:1.65}
.subtitle{margin-top:clamp(64px,8vw,110px);font:800 clamp(20px,2vw,26px)/1.1 var(--display);text-transform:uppercase;color:var(--blue)}
.statement{max-width:20ch;margin:clamp(64px,8vw,110px) auto 0;font:900 clamp(26px,4.2vw,60px)/1.02 var(--display);text-transform:uppercase;letter-spacing:-.02em;color:var(--blue);text-wrap:balance}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:10px;min-height:48px;margin-top:56px;background:var(--blue);color:var(--white);padding:17px 28px;border-radius:var(--pill);font:600 16px/1 var(--text);border:1.5px solid var(--blue);box-shadow:var(--shadow);transition:background var(--fast),box-shadow var(--fast),color var(--fast),border-color var(--fast)}
.btn:hover{background:var(--blue-dark);color:#FFFFFF;border-color:var(--blue-dark);box-shadow:var(--shadow)}
.btn--sm{margin-top:0;padding:14px 22px;font-size:15px}
.btn--ghost{background:var(--surface);color:var(--blue);border-color:var(--blue-mist);box-shadow:none;flex:none}
.btn--ghost:hover{background:var(--blue);color:var(--white);border-color:var(--blue)}
.btn--light{background:var(--white);color:var(--blue);border-color:var(--white);box-shadow:0 30px 60px -30px rgba(0,0,0,.45)}
.btn--light:hover{background:#EDF3FF;color:var(--blue-dark);border-color:#EDF3FF}
.section-head .btn{margin-top:0}

/* ---------- 02 Servicios (resumen en home) ---------- */
.services{display:grid;grid-template-columns:minmax(0,1fr) clamp(200px,22vw,290px);gap:clamp(24px,4vw,56px);margin-top:clamp(56px,7vw,90px);text-align:left;align-items:start}
.services__list{border-top:0}
.service{border-bottom:0}
.service__link{display:grid;grid-template-columns:56px minmax(0,1.25fr) minmax(0,1fr) 48px;align-items:center;gap:16px;padding:clamp(20px,2.4vw,30px) 12px;border-radius:var(--r-md);transition:background var(--fast)}
.service__n{font:600 14px var(--mono);color:#9AA0AC;transition:color var(--fast)}
.service__name{font:900 clamp(24px,3.2vw,46px)/1 var(--display);text-transform:uppercase;letter-spacing:-.02em;color:var(--fg);transition:color var(--fast),transform .45s var(--spring)}
.service__name small{display:block;margin-top:6px;font:500 14px/1.3 var(--text);text-transform:none;letter-spacing:0;color:var(--gray)}
.service__items{display:flex;flex-wrap:wrap;gap:6px}
.service__items li{font-size:13px;font-weight:500;color:var(--gray);border:1px solid var(--line);padding:6px 12px;border-radius:var(--pill);transition:border-color var(--fast),color var(--fast)}
.service__arrow{width:48px;height:48px;border-radius:50%;display:grid;place-items:center;font-size:19px;border:1px solid var(--blue-mist);color:var(--blue);transform:rotate(-45deg);transition:transform .45s var(--spring),background var(--fast),color var(--fast),border-color var(--fast)}
.service.is-active .service__link,.service__link:hover,.service__link:focus-visible{background:var(--blue-soft)}
.service.is-active .service__n,.service__link:hover .service__n,.service__link:focus-visible .service__n{color:var(--blue)}
.service.is-active .service__name,.service__link:hover .service__name{color:var(--blue);transform:translateX(6px)}
.service.is-active .service__items li,.service__link:hover .service__items li{border-color:var(--blue-mist);color:var(--blue)}
.service.is-active .service__arrow,.service__link:hover .service__arrow,.service__link:focus-visible .service__arrow{transform:none;background:var(--blue);color:var(--white);border-color:var(--blue)}
.services__side{position:relative;align-self:stretch}
.services__mascot{position:absolute;left:50%;top:0;width:min(100%,250px);height:auto;translate:-50% 0;transform:translateY(var(--y,0px)) rotate(var(--rot,0deg));transition:transform .7s var(--spring)}
.services__foot{display:flex;align-items:center;justify-content:space-between;gap:20px;flex-wrap:wrap;margin-top:44px}
.services__foot .btn{margin-top:0}
/* En celular y tablet chica, cada servicio es una tarjeta redondeada; con scroll quedan fijas
   debajo del menú y la siguiente sube y la tapa (sticky nativo). Escritorio: sin cambios.
   home.js iguala sus alturas para que al apilarse no asome ninguna. */
@media (max-width:900px){
  .services__list{display:grid;gap:16px}
  .service__link{padding:26px 20px;border-radius:26px;background:var(--surface);border:1px solid var(--line);box-shadow:0 1px 2px rgba(2,40,120,.04),0 -16px 36px -28px rgba(2,40,120,.4);transition:background var(--fast),scale .25s var(--e-out)}
  .service__link:active{scale:.985}
  .service.is-active .service__link{background:var(--surface)}
  .js .services__list .service.reveal{opacity:1;transform:none}
}
@media (max-width:900px) and (prefers-reduced-motion:no-preference){
  .service{position:sticky;top:calc(var(--header-h) + 12px + var(--si,0) * 10px);z-index:calc(var(--si,0) + 1)}
  .service:nth-child(2){--si:1}
  .service:nth-child(3){--si:2}
  .service:nth-child(4){--si:3}
}
.flow{display:inline-flex;gap:10px;flex-wrap:wrap;justify-content:center}
.flow span{font:800 14px/1 var(--display);text-transform:uppercase;color:var(--blue);background:var(--blue-soft);padding:12px 18px;border-radius:var(--pill)}
.flow i{font-style:normal;align-self:center;color:var(--blue)}

/* ---------- portadas (compartidas) ---------- */
.cover{position:relative;overflow:hidden;border-radius:var(--r-lg);background:var(--blue-soft);aspect-ratio:4/3;isolation:isolate}
.cover__frame{position:absolute;inset:0;transition:transform .6s var(--spring)}
.cover__frame img{width:100%;height:100%;object-fit:cover;object-position:var(--pos,center)}
/* captura web presentada como ventana: se reconoce el sitio sin inventar un mockup */
.cover--web{background:linear-gradient(160deg,var(--blue-soft),var(--blue-mist))}
.cover--web .cover__frame{inset:12% -6% -8% 8%;border-radius:14px 0 0 0;overflow:hidden;background:var(--surface);box-shadow:0 30px 50px -28px rgba(2,40,120,.55);padding-top:22px}
.cover__bar{position:absolute;top:0;left:0;right:0;height:22px;display:flex;align-items:center;gap:6px;padding-left:12px;background:var(--surface);border-bottom:1px solid var(--line)}
.cover__bar i{width:7px;height:7px;border-radius:50%;background:var(--blue-mist)}
.cover--web .cover__frame img{object-position:var(--pos,top left)}

/* tarjeta de proyecto */
.pcard{display:grid;gap:16px;color:var(--fg);text-align:left;border-radius:var(--r-lg)}
.pcard__cover{display:block;border-radius:var(--r-lg);outline-offset:6px}
.pcard__info{display:grid;grid-template-columns:minmax(0,1fr) auto;column-gap:14px;row-gap:4px;align-items:center}
.pcard__main{display:grid;row-gap:4px;outline-offset:4px;border-radius:var(--r-xs)}
.pcard__name{font:900 clamp(22px,2.2vw,32px)/1 var(--display);text-transform:uppercase;letter-spacing:-.01em;color:var(--blue);transition:transform .45s var(--spring)}
.pcard__link{outline-offset:4px;border-radius:var(--r-xs)}
.pcard__ext{display:inline-block;font:500 12px/1 var(--mono);text-transform:none;letter-spacing:0;color:var(--gray);margin-left:8px;padding:6px 2px;vertical-align:middle;border-bottom:1px solid transparent;transition:color var(--fast),border-color var(--fast)}
.pcard__ext:hover,.pcard__ext:focus-visible{color:var(--blue);border-color:var(--blue)}
.pcard__cat{font:500 13px/1.35 var(--mono);color:var(--gray)}
.pcard__arrow{width:46px;height:46px;border-radius:50%;display:grid;place-items:center;font-size:18px;border:1px solid var(--blue-mist);color:var(--blue);transform:rotate(-45deg);transition:transform .45s var(--spring),background var(--fast),color var(--fast),border-color var(--fast)}
.pcard:hover .cover__frame{transform:scale(1.03)}
.pcard:hover .cover--web .cover__frame{transform:translate(-2%,-3%)}
.pcard:hover .pcard__name{transform:translateX(6px)}
.pcard__arrow:hover,.pcard__arrow:focus-visible{transform:none;background:var(--blue);color:var(--white);border-color:var(--blue)}

/* ---------- 03 Trabajos: franja horizontal ---------- */
.strip{position:relative;margin-top:clamp(40px,5vw,64px)}
.strip__track{--edge:max(var(--gut),calc((100vw - var(--maxw)) / 2 + var(--gut)));display:flex;gap:20px;overflow-x:auto;scroll-snap-type:x mandatory;scroll-padding-inline:var(--edge);padding:6px var(--edge) 24px;margin-inline:calc(50% - 50vw);scrollbar-width:none;overscroll-behavior-x:contain;cursor:grab;outline-offset:-4px}
.strip__track::-webkit-scrollbar{display:none}
.strip__track.is-dragging{cursor:grabbing;scroll-snap-type:none;user-select:none}
.strip__track.is-dragging .pcard{pointer-events:none}
.strip__item{flex:none;width:clamp(290px,31vw,430px);scroll-snap-align:start}
.strip__controls{display:flex;align-items:center;gap:8px;margin-top:8px;text-align:left}
.strip__btn{width:48px;height:48px;border-radius:50%;display:grid;place-items:center;color:var(--blue);font-size:18px;transition:background var(--fast),color var(--fast),transform var(--fast)}
.strip__btn:hover{background:var(--blue);color:var(--white)}
.strip__btn:active{transform:scale(.94)}
.strip__play-icon{width:12px;height:14px;border-left:4px solid currentColor;border-right:4px solid currentColor}
.strip__btn--play.is-paused .strip__play-icon{width:0;height:0;border-style:solid;border-width:7px 0 7px 12px;border-color:transparent transparent transparent currentColor;border-right:0;margin-left:3px}
.strip__all{margin-left:auto;font-weight:600;color:var(--blue);min-height:44px;display:inline-flex;align-items:center}

/* ---------- 04 Fronteras ---------- */
.ticker{position:relative;overflow:hidden}
.ticker__track{display:flex;width:max-content;will-change:transform}
.band{position:relative;margin:clamp(150px,16vw,220px) calc(50% - 50vw) 0}
.ticker--countries{background:var(--blue);padding:22px 0;rotate:-2deg;scale:1.04}
.ticker--countries span,.ticker--countries i{font:900 clamp(40px,6.4vw,92px)/1 var(--display);text-transform:uppercase;letter-spacing:-.02em;color:var(--white);font-style:normal;padding:0 .3em;white-space:nowrap}
.ticker--countries i{font-family:var(--text);font-size:clamp(24px,3.4vw,50px);align-self:center}
.borders{isolation:isolate}
.borders__walker{position:absolute;bottom:100%;left:0;height:clamp(150px,17vw,240px);margin-bottom:0;transform:translateX(var(--walk,10vw));will-change:transform;z-index:-1}
.stamps{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;margin-top:64px;text-align:left}
.stamp{background:var(--blue-soft);border-radius:var(--r-md);padding:22px;display:grid;gap:10px;align-content:start;transition:background var(--fast),translate .4s var(--spring),rotate .4s var(--spring)}
.js .stamp.reveal.is-in:nth-child(odd),.stamp:nth-child(odd){rotate:-1.2deg}
.js .stamp.reveal.is-in:nth-child(even),.stamp:nth-child(even){rotate:1.2deg}
.stamp b{font:900 20px/1 var(--display);text-transform:uppercase;color:var(--blue)}
.stamp span{font-size:14px;color:var(--gray);line-height:1.5}
.stamp:hover{background:var(--blue);rotate:0deg;translate:0 -4px}
.stamp:hover b,.stamp:hover span{color:var(--white)}

/* ---------- 05 Sobre mí ---------- */
.about .title{font-size:clamp(32px,5.4vw,82px)}
.about__body{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.05fr);gap:clamp(32px,5vw,64px);align-items:center;margin-top:clamp(56px,7vw,96px);text-align:left}
.about__copy{display:grid;gap:16px;color:var(--gray);font-size:17px;line-height:1.7;max-width:56ch}
.about__copy p:first-child{color:var(--fg);font-size:clamp(19px,1.7vw,23px);line-height:1.5}
/* notas en columnas propias: nunca tocan las caras de Daniss ni del gato */
.about__visual{position:relative;display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);align-items:center;gap:clamp(10px,1.6vw,20px);padding:28px 8px 0;isolation:isolate}
.about__visual::before{content:"";position:absolute;inset:18% 10% 0;border-radius:var(--r-xl);background:var(--blue-soft);z-index:-1}
.about__mascot{grid-column:2;height:clamp(320px,38vw,520px);width:auto}
.about__note{font:600 12.5px/1.25 var(--mono);color:var(--blue);padding:10px 13px;border-radius:var(--pill);white-space:nowrap}
.about__note--1{grid-column:1;justify-self:end;align-self:start;margin-top:12%;rotate:-5deg}
.about__note--2{grid-column:3;justify-self:start;align-self:center;rotate:4deg}
.socials{display:flex;flex-wrap:wrap;gap:10px;margin-top:8px}
.socials a{display:inline-flex;align-items:center;min-height:44px;font-size:14px;font-weight:500;color:var(--blue);border:1px solid var(--blue-mist);padding:0 16px;border-radius:var(--pill);transition:background var(--fast),color var(--fast),border-color var(--fast)}
.socials a:hover{background:var(--blue);color:var(--white);border-color:var(--blue)}
.facts{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));margin-top:clamp(56px,7vw,90px);border-top:1px solid var(--line);border-bottom:1px solid var(--line);text-align:left}
.fact{display:grid;gap:6px;padding:20px 16px;border-left:1px solid var(--line);transition:background var(--fast)}
.fact:first-child{border-left:0}
.fact small,.fact dt{font:500 11.5px var(--mono);text-transform:uppercase;letter-spacing:.06em;color:var(--gray)}
.fact b,.fact dd{font:800 clamp(15px,1.4vw,19px)/1.2 var(--display);text-transform:uppercase;color:var(--blue)}
.fact:hover{background:var(--blue-soft)}
.pills{display:flex;flex-wrap:wrap;justify-content:center;gap:10px;margin-top:28px}
.pills li{background:var(--surface);border:1px solid var(--blue-mist);color:var(--blue);padding:12px 20px;border-radius:var(--pill);font-size:15px;font-weight:500;transition:background var(--fast),color var(--fast),transform .4s var(--pop),border-color var(--fast)}
.pills li.is-blue{background:var(--blue);color:var(--white);border-color:var(--blue)}
.pills li:hover{background:var(--blue);color:var(--white);border-color:var(--blue);transform:translateY(-4px) rotate(-2deg)}

/* ---------- Contadores ---------- */
.counters{max-width:var(--maxw);margin:0 auto;padding:0 var(--gut);display:grid;grid-template-columns:repeat(4,minmax(0,1fr))}
.counter{position:relative;display:grid;gap:10px;align-content:start;padding:clamp(28px,3.4vw,44px) clamp(20px,2.4vw,32px);border-top:1px solid var(--line);border-bottom:1px solid var(--line);border-left:1px solid var(--line);transition:background var(--fast)}
.counter:last-child{border-right:1px solid var(--line)}
.counter b{font:900 clamp(48px,6.2vw,96px)/1 var(--display);color:var(--blue);letter-spacing:-.02em;font-variant-numeric:tabular-nums}
.counter > span{font-size:15px;color:var(--gray)}
.counter:hover{background:var(--blue-soft)}
.counter--fun{background:var(--blue)}
.counter--fun b,.counter--fun > span{color:var(--white)}
.counter--fun b{display:inline-block;justify-self:start;transition:transform .7s var(--pop)}
.counter--fun:hover{background:var(--blue-dark)}
.counter--fun:hover b{transform:rotate(180deg) scale(1.08)}

/* ---------- 06 Experiencia (timeline) ---------- */
.timeline{position:relative;display:grid;gap:12px;margin-top:clamp(56px,7vw,96px);text-align:left}
.tl{position:relative;z-index:0;display:grid;grid-template-columns:clamp(150px,18vw,230px) minmax(0,1fr) 56px;gap:clamp(16px,3vw,40px);align-items:start;padding:clamp(26px,3vw,40px) clamp(22px,3vw,40px);border-radius:var(--r-lg);color:var(--fg)}
.tl::before{content:"";position:absolute;inset:0;z-index:-1;border-radius:inherit;background:var(--surface);border:1px solid var(--line);transition:background .3s,border-color .3s}
.tl__year{font:900 clamp(20px,2.2vw,30px)/1.1 var(--display);color:var(--blue);text-transform:uppercase;transform-origin:left center;transition:transform .45s var(--spring),color var(--fast)}
.tl__role{font:900 clamp(22px,2.6vw,38px)/1.05 var(--display);text-transform:uppercase;letter-spacing:-.01em;color:var(--fg);transition:color var(--fast)}
.tl__where{margin-top:8px;font-size:16px;color:var(--gray);transition:color var(--fast)}
.tl__where b{color:var(--blue);font-weight:700;transition:color var(--fast)}
.tl__where a{border-bottom:1.5px solid currentColor}
.tl__desc{margin-top:14px;font-size:16px;line-height:1.65;color:var(--gray);max-width:62ch;transition:color var(--fast)}
.tl__arrow{width:56px;height:56px;border-radius:50%;display:grid;place-items:center;font-size:20px;background:var(--surface);color:var(--blue);opacity:0;transform:translateX(-10px) rotate(-45deg);transition:opacity var(--fast),transform .4s var(--spring)}
.tl__pop{position:absolute;z-index:-2;right:110px;bottom:calc(100% - 26px);height:126px;width:auto;opacity:0;transform:translateY(70%) scale(.7);transform-origin:bottom center;transition:transform .5s var(--pop),opacity .2s;pointer-events:none}
.tl:hover::before{background:var(--blue);border-color:var(--blue)}
.tl:hover .tl__year{color:var(--white);transform:scale(1.15)}
.tl:hover .tl__role,.tl:hover .tl__where,.tl:hover .tl__where b,.tl:hover .tl__desc{color:var(--white)}
.tl:hover .tl__arrow{opacity:1;transform:none}
.tl:hover .tl__pop{opacity:1;transform:none}

/* ---------- 06b Experiencia: recorrido compacto (camino con línea y puntos, scroll interno) ---------- */
/* la línea de abajo del marco de la cabecera quedaba justo encima de los contadores: fuera */
.page-hero--exp .frame{border-bottom:0}
.page-hero--exp .frame i:nth-child(3),.page-hero--exp .frame i:nth-child(4){display:none}
.tl-scroll{position:relative;margin-top:clamp(8px,1.4vw,16px);max-height:min(72vh,760px);overflow-y:auto;overscroll-behavior-y:auto;scrollbar-width:thin;scrollbar-color:var(--blue-mist) transparent;border-radius:var(--r-lg);outline-offset:4px}
.tl-scroll::-webkit-scrollbar{width:6px}
.tl-scroll::-webkit-scrollbar-thumb{background:var(--blue-mist);border-radius:6px}
/* fundido arriba/abajo solo donde hay más para ver */
.tl-scroll.is-scrollable:not(.at-end){-webkit-mask-image:linear-gradient(to bottom,#000 calc(100% - 56px),transparent);mask-image:linear-gradient(to bottom,#000 calc(100% - 56px),transparent)}
.tl-scroll.is-scrollable:not(.at-start):not(.at-end){-webkit-mask-image:linear-gradient(to bottom,transparent,#000 40px,#000 calc(100% - 56px),transparent);mask-image:linear-gradient(to bottom,transparent,#000 40px,#000 calc(100% - 56px),transparent)}
.tl-scroll.is-scrollable.at-end:not(.at-start){-webkit-mask-image:linear-gradient(to bottom,transparent,#000 40px);mask-image:linear-gradient(to bottom,transparent,#000 40px)}
.timeline--path{margin-top:0;gap:10px;padding:6px 10px 10px 46px}
/* el camino: línea de fondo y la parte recorrida en azul (core.js pone --tp) */
.timeline--path::before,.timeline--path::after{content:"";position:absolute;left:18px;top:var(--tl-start,30px);bottom:var(--tl-end,30px);width:2px;border-radius:2px;background:var(--blue-mist)}
.timeline--path::after{background:var(--blue);transform-origin:50% 0;transform:scaleY(var(--tp,0));transition:transform .2s linear}
.timeline--path .tl{grid-template-columns:clamp(120px,14vw,180px) minmax(0,1fr) 48px;gap:clamp(14px,2.4vw,32px);padding:clamp(18px,2vw,26px) clamp(20px,2.4vw,32px)}
.timeline--path .tl::after{content:"";position:absolute;left:-35px;top:clamp(24px,2.4vw,32px);width:14px;height:14px;border-radius:50%;background:var(--surface);box-shadow:inset 0 0 0 3px var(--blue);transition:background .3s ease,scale .35s var(--pop)}
.timeline--path .tl:hover::after{background:var(--blue);scale:1.15}
.exp .divider{margin-bottom:clamp(28px,3.4vw,48px)}
.timeline--path .tl__year{font-size:clamp(18px,1.8vw,24px)}
.timeline--path .tl__role{font-size:clamp(20px,2.1vw,30px)}
.timeline--path .tl__where{margin-top:6px;font-size:15px}
.timeline--path .tl__desc{margin-top:8px;font-size:15px;line-height:1.55}
.timeline--path .tl__arrow{width:48px;height:48px;font-size:18px}
/* Área visual de cada etapa: el logo de la empresa; con hover (o al encenderse en mobile)
   se cruza con Saritah en Lottie, en el mismo lugar y del mismo tamaño (sin saltos) */
.timeline--path .tl{grid-template-columns:clamp(120px,14vw,180px) minmax(0,1fr) clamp(92px,8.6vw,120px)}
.tl__visual{position:relative;grid-column:3;grid-row:1;align-self:center;justify-self:center;width:100%;height:clamp(100px,9.4vw,128px)}
.tl__visual .tl__brand{position:absolute;left:50%;top:50%;width:clamp(60px,5.4vw,72px);height:clamp(60px,5.4vw,72px);margin:calc(clamp(60px,5.4vw,72px) / -2) 0 0 calc(clamp(60px,5.4vw,72px) / -2);padding:9px;border-radius:20px;background:#FFFFFF;box-shadow:0 0 0 1px var(--line),0 12px 26px -16px rgba(2,40,120,.45);object-fit:contain;transition:opacity .3s ease,scale .5s var(--pop),rotate .5s var(--pop)}
.tl__visual .tl__brand--globe{padding:2px}
.timeline--path .tl__pop{display:block;position:absolute;inset:0;width:100%;height:100%;aspect-ratio:auto !important;transform:none;z-index:1;opacity:0;scale:.8;translate:0 10px;transition:opacity .35s ease .06s,scale .55s var(--pop),translate .55s var(--pop);pointer-events:none}
.tl:hover .tl__brand,.tl.is-current .tl__brand,.tl:focus-within .tl__brand{opacity:0;scale:.55;rotate:-10deg}
.tl:hover .tl__pop,.tl.is-current .tl__pop,.tl:focus-within .tl__pop{opacity:1;scale:1;translate:none}
@media (max-width:768px){
  .tl-scroll{max-height:70svh}
  .timeline--path{padding:4px 4px 8px 34px;gap:12px}
  .timeline--path::before,.timeline--path::after{left:12px}
  .timeline--path .tl{grid-template-columns:minmax(0,1fr) 64px;gap:8px;padding:20px 18px}
  .timeline--path .tl__year{grid-column:1;grid-row:1;align-self:center}
  .timeline--path .tl__body{grid-column:1 / -1;grid-row:2}
  .tl__visual{grid-column:2;grid-row:1;width:64px;height:72px}
  .tl__visual .tl__brand{width:52px;height:52px;margin:-26px 0 0 -26px;padding:7px;border-radius:15px}
  .timeline--path .tl::after{left:-29px;top:26px;width:12px;height:12px}
  .timeline--path .tl.is-current::after{background:var(--blue);scale:1.15}
  .timeline--path .tl__year{font-size:14px}
  .timeline--path .tl__role{font-size:clamp(20px,6.2vw,26px)}
}
@media (prefers-reduced-motion:reduce){.timeline--path::after{transition:none}}
.exp__closing{display:flex;align-items:flex-end;justify-content:center;gap:clamp(16px,4vw,48px);margin-top:clamp(64px,8vw,110px)}
.exp__closing .statement{margin:0;text-align:left}
.exp__mascot{height:clamp(180px,20vw,260px);width:auto;flex:none}

/* ---------- 07 Playground con logos reales ---------- */
.ticker--tools{margin:clamp(44px,5vw,72px) calc(50% - 50vw) 0;padding:8px 0;-webkit-mask-image:linear-gradient(90deg,transparent,#000 10%,#000 90%,transparent);mask-image:linear-gradient(90deg,transparent,#000 10%,#000 90%,transparent)}
.tool{flex:none;display:inline-flex;align-items:center;gap:12px;margin-right:12px;background:var(--surface);border:1px solid var(--line);color:var(--fg);padding:14px 22px 14px 16px;border-radius:var(--pill);font-size:16px;font-weight:500;white-space:nowrap;box-shadow:0 10px 24px -20px rgba(2,40,120,.5);transition:border-color var(--fast),translate var(--fast),box-shadow var(--fast)}
.tool__logo{width:26px;height:26px;flex:none;background:var(--c,var(--blue));-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}
.tool__img{width:26px;height:26px;flex:none;object-fit:contain}
.tool--cat{border-style:dashed;border-color:var(--blue-mist);color:var(--blue);padding-left:22px}
.tool:hover{border-color:var(--blue);translate:0 -2px;box-shadow:var(--shadow)}
.play__mascot{height:clamp(170px,18vw,230px);width:auto;margin:48px auto 0}

/* ---------- 08 Behance ---------- */
.more__head{display:flex;align-items:center;justify-content:center;gap:clamp(12px,3vw,40px)}
.more__sign-wrap{--h:clamp(170px,17vw,240px);position:relative;flex:none;height:var(--h);aspect-ratio:203.2/299.9}
.more__sign{position:relative;height:100%}
.more__sign img{height:100%;width:auto}
.more__sign-text{position:absolute;left:26%;right:24%;top:28%;height:13.5%;display:grid;place-items:center;text-align:center;font:900 calc(var(--h) * .062)/.95 var(--display);text-transform:uppercase;color:var(--blue)}
.more__grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;margin-top:clamp(56px,7vw,90px);text-align:left}
.card{display:block;overflow:hidden;border-radius:var(--r-md);background:var(--blue);transition:box-shadow var(--fast)}
.card img{aspect-ratio:808/632;width:100%;object-fit:cover;transition:transform .6s var(--spring)}
.card span{display:flex;justify-content:space-between;align-items:center;color:var(--white);padding:14px 16px;font:800 14px/1 var(--display);text-transform:uppercase}
.card span::after{content:"↗";font-family:var(--text);transition:transform .3s var(--spring)}
.card:hover{box-shadow:var(--shadow)}
.card:hover img{transform:scale(1.04)}
.card:hover span::after{transform:translate(3px,-3px)}

/* ---------- marquee grande ---------- */
.ticker--big{border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:clamp(18px,2.4vw,30px) 0;margin-top:clamp(20px,3vw,40px)}
.ticker--big span,.ticker--big i{font:900 clamp(44px,8vw,128px)/1.1 var(--display);text-transform:uppercase;letter-spacing:-.02em;color:var(--blue);white-space:nowrap;padding:0 .25em;font-style:normal}
.ticker--big span.o{color:transparent;-webkit-text-stroke:2px var(--blue)}
.ticker--big i{font-family:var(--text);font-size:clamp(26px,4vw,60px);align-self:center}

/* ---------- 09 Contacto + mini brief ---------- */
.contact{padding-top:clamp(56px,7vw,96px)}
.contact__grid{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(0,1fr);gap:clamp(16px,2.4vw,28px);text-align:left;align-items:stretch}
.contact__card{grid-column:2;grid-row:1;position:relative;background:var(--blue);border-radius:var(--r-xl);padding:clamp(36px,4vw,56px);color:var(--white);overflow:hidden;isolation:isolate;display:flex;flex-direction:column;min-height:640px}
.contact__card::before,.contact__card::after{content:"";position:absolute;border-radius:50%;background:rgba(255,255,255,.08);z-index:-1}
.contact__card::before{width:420px;aspect-ratio:1;left:-160px;bottom:-200px}
.contact__card::after{width:300px;aspect-ratio:1;right:-90px;top:-110px}
.contact .kicker,.cta-band .kicker{background:rgba(255,255,255,.16);color:var(--white);align-self:flex-start}
.title--contact{color:var(--white);text-align:left;font-size:clamp(30px,3.5vw,52px)}
.contact__sub{margin-top:18px;font-size:18px;line-height:1.6;opacity:.92;max-width:34ch}
.contact__links{display:flex;flex-wrap:wrap;gap:8px;margin-top:28px}
.contact__links a{display:inline-flex;align-items:center;min-height:44px;font-size:14px;font-weight:500;border:1px solid rgba(255,255,255,.4);padding:0 16px;border-radius:var(--pill);transition:background var(--fast),color var(--fast),border-color var(--fast)}
.contact__links a:hover{background:var(--white);color:var(--blue);border-color:var(--white)}
.contact__place{margin-top:20px;font:500 13px/1.6 var(--mono);opacity:.85}
.contact__card .contact__mascot{flex:1 1 0;min-height:180px;max-height:420px;height:auto;width:auto;margin-top:20px;align-self:flex-end;margin-bottom:calc(-.6 * clamp(36px,4vw,56px));margin-right:calc(-.4 * clamp(36px,4vw,56px))}

.brief{grid-column:1;grid-row:1;position:relative;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-xl);padding:clamp(28px,3.6vw,52px);display:grid;gap:22px;align-content:start}
.field{display:grid;gap:8px;border:0;margin:0;padding:0;min-width:0}
.field label,.field legend{font-weight:600;font-size:15px;color:var(--fg);padding:0}
.field legend{margin-bottom:10px}
.field legend small{font:500 12px var(--mono);color:var(--gray);margin-left:6px}
.field input,.field textarea{width:100%;min-height:52px;background:var(--bg);border:1.5px solid var(--line);border-radius:var(--r-sm);padding:14px 18px;font-size:16px;line-height:1.4;transition:border-color var(--fast),box-shadow var(--fast)}
.field textarea{resize:vertical;min-height:130px}
.field input::placeholder,.field textarea::placeholder{color:#8B919D}
.field input:hover,.field textarea:hover{border-color:var(--blue-mist)}
.field input:focus,.field textarea:focus{outline:0;border-color:var(--blue);box-shadow:0 0 0 4px var(--blue-soft)}
.field.is-error input,.field.is-error textarea{border-color:var(--red);box-shadow:0 0 0 4px var(--err-bg)}
.field__error{font-size:13px;color:var(--red);font-weight:500}
.field__error:empty{display:none}
.brief__preset{font:500 13px/1.4 var(--mono);color:var(--blue);background:var(--blue-soft);padding:10px 14px;border-radius:var(--r-sm);margin:-2px 0 4px}
.choices{display:flex;flex-wrap:wrap;gap:8px}
.choice{position:relative;cursor:pointer}
.choice input{position:absolute;opacity:0;width:1px;height:1px;pointer-events:none}
.choice span{display:inline-flex;align-items:center;gap:6px;min-height:44px;font-size:14.5px;font-weight:500;color:var(--blue);background:var(--surface);border:1.5px solid var(--blue-mist);padding:0 16px;border-radius:var(--pill);transition:background var(--fast),color var(--fast),border-color var(--fast),transform .3s var(--pop)}
.choice:hover span{border-color:var(--blue)}
.choice input:checked + span{background:var(--blue);border-color:var(--blue);color:var(--white)}
.choice input:checked + span::before{content:"✓";font-size:12px}
.choice input:focus-visible + span{outline:2.5px solid var(--blue);outline-offset:3px}
.choice input:active + span{transform:scale(.96)}
.field.is-error .choice span{border-color:#F5B5AF}
.btn--submit{margin-top:6px;width:100%;position:relative;padding:20px 28px;font-size:17px}
.btn--submit[disabled]{opacity:.75;cursor:progress}
.btn__spinner{display:none;width:18px;height:18px;border-radius:50%;border:2.5px solid rgba(255,255,255,.4);border-top-color:var(--white);animation:spin .8s linear infinite}
.is-sending .btn__spinner{display:inline-block}
@keyframes spin{to{transform:rotate(360deg)}}
.brief__status:empty{display:none}
.brief__status{font:500 13.5px/1.5 var(--mono);color:var(--blue);background:var(--blue-soft);padding:12px 16px;border-radius:var(--r-sm)}
.brief__status.is-error{color:var(--red);background:var(--err-bg)}
.brief__micro{font-size:14px;color:var(--gray)}
.brief__micro a{color:var(--blue);font-weight:600;border-bottom:1.5px solid var(--blue-mist);transition:border-color var(--fast)}
.brief__micro a:hover{border-color:var(--blue)}
.brief__done{position:absolute;inset:0;z-index:2;background:var(--surface);border-radius:inherit;display:grid;place-content:center;justify-items:center;text-align:center;gap:10px;padding:32px;font-size:18px;color:var(--gray)}
.brief__done img{height:160px;width:auto;margin-bottom:8px}
.brief__done-title{font:900 clamp(30px,3.4vw,46px)/1 var(--display);text-transform:uppercase;color:var(--blue)}

/* =================== PÁGINAS: cabecera =================== */
.page-hero{position:relative;max-width:var(--maxw);margin:0 auto;padding:calc(var(--header-h) + 56px) var(--gut) clamp(40px,5vw,64px);display:grid;grid-template-columns:minmax(0,1fr) auto;gap:32px;align-items:end;isolation:isolate}
.page-hero .frame{inset:calc(var(--header-h) + 24px) var(--gut) 8px}
.page-hero__text{display:grid;justify-items:start;gap:4px}
.page-hero__title{font:900 clamp(52px,7.6vw,128px)/.9 var(--display);text-transform:uppercase;letter-spacing:-.03em;color:var(--blue)}
.page-hero__lead{max-width:52ch;margin-top:20px;font-size:18px;line-height:1.6;color:var(--gray)}
.page-hero__index{display:flex;flex-wrap:wrap;gap:8px;margin-top:24px}
.page-hero__index a{display:inline-flex;align-items:center;min-height:44px;padding:0 16px;border-radius:var(--pill);border:1px solid var(--blue-mist);color:var(--blue);font-weight:500;font-size:14px;transition:background var(--fast),color var(--fast)}
.page-hero__index a:hover{background:var(--blue);color:var(--white)}
.page-hero__art{position:relative;display:grid;justify-items:center;padding-top:44px}
.page-hero__art img,.page-hero__lottie{height:clamp(200px,24vw,320px);width:auto}
.page-hero__bubble{position:absolute;top:0;right:-6px;font:800 14px/1 var(--display);color:var(--blue);padding:10px 14px;border-radius:var(--pill);white-space:nowrap;rotate:3deg}
.ticker--values{border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:16px 0;margin-top:8px}
.ticker--values span,.ticker--values i{font:600 15px/1 var(--mono);text-transform:uppercase;letter-spacing:.06em;color:var(--blue);padding:0 18px;white-space:nowrap;font-style:normal}

/* =================== PÁGINA PROYECTOS =================== */
.projects-page{padding-top:clamp(40px,5vw,64px)}
.filters{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:36px}
.filter{min-height:44px;padding:0 18px;border-radius:var(--pill);border:1px solid var(--blue-mist);color:var(--blue);font-weight:500;font-size:14.5px;transition:background var(--fast),color var(--fast),border-color var(--fast)}
.filter:hover{border-color:var(--blue)}
.filter.is-on{background:var(--blue);color:var(--white);border-color:var(--blue)}
.pgrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:clamp(36px,4vw,56px) clamp(20px,3vw,36px);text-align:left}
.pgrid--3{grid-template-columns:repeat(3,minmax(0,1fr));margin-top:clamp(36px,4vw,56px)}
.pcard--grid .cover{aspect-ratio:16/11}

/* =================== CASO INDIVIDUAL =================== */
.case{padding-top:calc(var(--header-h) + 28px)}
.case-hero{max-width:var(--maxw);margin:0 auto;padding:0 var(--gut);display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.15fr);gap:clamp(28px,4vw,56px);align-items:center}
.case-hero__text{display:grid;justify-items:start;gap:4px}
.back{display:inline-flex;align-items:center;min-height:44px;padding:0 18px;border-radius:var(--pill);font-weight:600;font-size:14px;color:var(--blue);margin-bottom:26px;transition:background var(--fast),color var(--fast)}
.back:hover{background:var(--blue);color:var(--white)}
.case-hero__title{font:900 clamp(40px,7vw,112px)/.92 var(--display);text-transform:uppercase;letter-spacing:-.03em;color:var(--blue);max-width:100%}
.case-hero__intro{margin-top:22px;max-width:46ch;font-size:clamp(17px,1.5vw,20px);line-height:1.6;color:var(--gray)}
.case-hero__actions{display:flex;flex-wrap:wrap;gap:10px;margin-top:28px}
.case-hero__actions .btn{margin-top:0}
.case-hero__cover .cover{aspect-ratio:4/3;border-radius:var(--r-xl)}
.facts--case{max-width:var(--maxw);margin:clamp(40px,5vw,64px) auto 0;padding:0;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));border-left:0;border-right:0}
.facts--case .fact{padding:22px var(--gut)}
.facts--case .fact dd{font-size:clamp(14px,1.2vw,17px);text-transform:none;font-family:var(--text);font-weight:600;line-height:1.4}
.case-body{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:clamp(28px,5vw,72px);text-align:left;padding-top:clamp(56px,7vw,96px);padding-bottom:clamp(48px,6vw,80px)}
.case-body__col{display:grid;align-content:start;justify-items:start}
.case-body__lead{font-size:clamp(18px,1.6vw,22px);line-height:1.55;color:var(--fg)}
.decisions{display:grid;gap:12px}
.decisions li{position:relative;padding-left:30px;font-size:16.5px;line-height:1.6;color:var(--gray)}
.decisions li::before{content:"✦";position:absolute;left:0;top:0;color:var(--blue)}
.gallery{max-width:1400px;margin:0 auto;padding:0 var(--gut);display:grid;gap:clamp(14px,2vw,24px)}
.gallery__row{display:grid;gap:clamp(14px,2vw,24px)}
.gallery__row--2{grid-template-columns:repeat(2,minmax(0,1fr))}
.gallery__item{overflow:hidden;border-radius:var(--r-lg);background:var(--blue-soft);position:relative}
.gallery__item img{width:100%;height:100%;object-fit:cover}
.gallery__row--2 .gallery__item{aspect-ratio:4/3}
.gallery__item figcaption{position:absolute;left:14px;bottom:14px;font:500 12px/1.3 var(--mono);color:var(--ink);background:rgba(255,255,255,.88);padding:7px 11px;border-radius:var(--pill);max-width:calc(100% - 28px);opacity:0;transform:translateY(6px);transition:opacity var(--fast),transform var(--fast)}
.gallery__item:hover figcaption{opacity:1;transform:none}
.case-links{display:flex;justify-content:center;flex-wrap:wrap;gap:10px;padding:clamp(40px,5vw,64px) var(--gut) 0}
.case-links .btn{margin-top:0}
.more-projects{padding-top:clamp(64px,8vw,110px)}

/* banda de contacto (proyectos, casos, servicios) */
.cta-band{padding-top:clamp(24px,4vw,40px)}
.cta-band__card{position:relative;display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:end;gap:24px;text-align:left;background:var(--blue);border-radius:var(--r-xl);padding:clamp(36px,5vw,64px) clamp(28px,5vw,64px) 0;color:var(--white);overflow:hidden}
.cta-band__card > div{padding-bottom:clamp(36px,5vw,64px)}
.cta-band__text{max-width:44ch;margin-top:16px;font-size:17px;line-height:1.6;opacity:.92}
.cta-band__card .btn{margin-top:28px}
.cta-band__mascot{height:clamp(240px,26vw,360px);width:auto}

/* =================== PÁGINA SERVICIOS =================== */
.services-page{padding-top:clamp(24px,4vw,48px);text-align:left}
.srow{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.25fr) clamp(170px,18vw,240px);gap:clamp(24px,4vw,56px);padding:clamp(36px,5vw,64px) 0;border-top:1px solid var(--line);align-items:start;position:relative}
.services-page .srow{border-top:1px solid var(--line)}
.srow__head{display:grid;gap:14px;align-content:start}
.srow__n{font:600 14px var(--mono);color:var(--blue)}
.srow__name{font:900 clamp(28px,3vw,44px)/1.02 var(--display);text-transform:uppercase;letter-spacing:-.02em;color:var(--blue);text-wrap:balance}
.srow__body{display:grid;gap:16px;align-content:start;justify-items:start}
.srow__desc{font-size:clamp(18px,1.6vw,21px);line-height:1.55;color:var(--fg)}
.srow__solves{font-size:16px;line-height:1.6;color:var(--gray)}
.srow__solves b{color:var(--fg)}
.srow__label{font:600 12.5px var(--mono);text-transform:uppercase;letter-spacing:.06em;color:var(--gray);margin-top:6px}
.srow__items{display:flex;flex-wrap:wrap;gap:8px}
.srow__items li{font-size:14.5px;font-weight:500;color:var(--blue);background:var(--blue-soft);padding:9px 14px;border-radius:var(--pill)}
.srow .btn{margin-top:10px}
.srow__art{position:relative;align-self:center;border-radius:var(--r-xl);background:var(--blue-soft);aspect-ratio:4/5;overflow:hidden}
.srow__art img,.srow__art .lottie{position:absolute;inset:7%;width:86%;height:86%;object-fit:contain;transition:transform .5s var(--pop)}
.srow__art .lottie{aspect-ratio:auto !important}
.srow:hover .srow__art img{transform:translateY(-6px) rotate(-2deg)}
/* Servicios como tarjetas redondeadas apiladas (sticky stacking)
   Cada servicio es una tarjeta con fondo sólido. Con scroll, queda fija debajo del menú
   (cada una 10 px más abajo: se ven los bordes de las de atrás) y la siguiente sube y la
   tapa. --dwell es el tramo en que la tarjeta fija se ve ENTERA antes de que la siguiente
   la empiece a cubrir. js/motion.js (ServiceStack) iguala las alturas y, si una tarjeta no
   entra con los bordes de la pila, la deja fija recién cuando se vio hasta abajo (--stack-top);
   si ni así entra debajo del menú, o con movimiento reducido: .is-flat (tarjetas normales,
   sin apilar). Nunca se corta ni se tapa contenido. */
.services-page{--card-r:30px;--card-py:64px;--card-px:56px;--card-gap:28px;--stack-top:calc(var(--header-h) + 24px);--lip:10px;--dwell:clamp(96px,22vh,220px)}
.services-page .srow{box-sizing:border-box;margin-top:var(--card-gap);padding:var(--card-py) var(--card-px);border:1px solid var(--line);border-radius:var(--card-r);background:var(--surface);box-shadow:0 -12px 30px -16px rgba(2,40,120,.3),0 2px 10px -6px rgba(2,40,120,.1)}
.services-page .srow:first-of-type{margin-top:0}
.js .services-page .srow.reveal{opacity:1;transform:none}
@media (prefers-reduced-motion:no-preference){
  .services-page:not(.is-flat) .srow{position:sticky;top:calc(var(--stack-top) + var(--i,0) * var(--lip));z-index:calc(var(--i,0) + 1)}
  .services-page:not(.is-flat) .srow + .srow{margin-top:var(--dwell)}
  /* la última también se queda un tramo antes de que siga la página */
  .services-page:not(.is-flat)::after{content:"";display:block;height:var(--dwell)}
}
/* laptops bajas (1366 × 768): menos alto por dentro para que entre y se pueda apilar */
@media (min-width:1101px) and (max-height:820px){
  .services-page{--card-py:44px;--card-px:48px;--stack-top:calc(var(--header-h) + 16px);--lip:8px}
  .services-page .srow{grid-template-columns:minmax(0,.9fr) minmax(0,1.4fr) clamp(150px,13vw,200px);column-gap:clamp(24px,3vw,40px)}
}

/* ---------- footer ---------- */
.footer{display:grid;grid-template-columns:1fr auto auto 1fr;gap:16px;align-items:center;max-width:var(--maxw);margin:0 auto;padding:24px var(--gut) calc(30px + env(safe-area-inset-bottom,0px));border-top:1px solid var(--line);font:500 13px var(--mono);color:var(--blue)}
.footer__logo{display:flex;align-items:center;gap:8px}
.footer__logo img:first-child{height:24px;width:auto}
.footer__logo img:last-child{height:13px;width:auto}
.footer .available{display:inline-flex;align-items:center;gap:8px;background:var(--blue-soft);padding:8px 14px;border-radius:var(--pill);font-weight:600}
.footer__copy{justify-self:end}
.motion-toggle{display:inline-flex;align-items:center;gap:8px;min-height:40px;padding:0 14px;border-radius:var(--pill);border:1px solid var(--blue-mist);color:var(--blue);font:500 12.5px var(--mono);transition:background var(--fast),color var(--fast)}
.motion-toggle:hover{background:var(--blue);color:var(--white)}
.motion-toggle__icon{width:9px;height:11px;border-left:3px solid currentColor;border-right:3px solid currentColor}
.motion-toggle[aria-pressed="true"] .motion-toggle__icon{width:0;height:0;border-style:solid;border-width:6px 0 6px 10px;border-color:transparent transparent transparent currentColor;border-right:0}

/* ---------- flotantes: CTA + WhatsApp ---------- */
.floaters{position:fixed;right:calc(22px + env(safe-area-inset-right,0px));bottom:calc(22px + env(safe-area-inset-bottom,0px));z-index:90;display:flex;align-items:center;gap:10px;pointer-events:none}
.float-cta,.wa{pointer-events:auto;opacity:0;transform:translateY(10px);visibility:hidden;transition:opacity .35s ease,transform .45s var(--spring),visibility 0s .45s,box-shadow var(--fast),background var(--fast)}
.floaters.is-visible .float-cta,.floaters.is-visible .wa{opacity:1;transform:none;visibility:visible;transition:opacity .35s ease,transform .45s var(--spring),visibility 0s,box-shadow var(--fast),background var(--fast)}
.floaters.is-visible .wa{transition-delay:.06s}
.float-cta{display:inline-flex;align-items:center;min-height:52px;font:600 14.5px/1 var(--text);color:var(--white);padding:0 22px;border-radius:var(--pill);box-shadow:0 20px 40px -20px rgba(0,0,0,.5)}
.float-cta:hover{background:var(--blue);box-shadow:var(--shadow)}
.float-cta__short{display:none}
.wa{display:inline-flex;align-items:center;height:54px;min-width:54px;padding:0 15px;border-radius:var(--pill);background:var(--blue);color:var(--white);box-shadow:var(--shadow)}
.wa__icon{width:24px;height:24px;flex:none}
.wa__label{max-width:0;overflow:hidden;white-space:nowrap;font:600 14px/1 var(--text);opacity:0;transition:max-width .4s var(--spring),opacity .25s,margin .4s var(--spring)}
.floaters.is-visible .wa:hover,.floaters.is-visible .wa:focus-visible{transform:translateY(-2px) scale(1.05)}
.wa:hover .wa__label,.wa:focus-visible .wa__label{max-width:220px;opacity:1;margin-left:10px}
.wa:hover,.wa:focus-visible{box-shadow:0 26px 50px -22px rgba(2,89,246,.75)}
.wa:focus-visible,.float-cta:focus-visible{outline:2.5px solid var(--blue);outline-offset:4px}
.floaters.is-hidden .float-cta,.floaters.is-hidden .wa{opacity:0;transform:translateY(10px);visibility:hidden;transition:opacity .25s,transform .35s var(--spring),visibility 0s .35s}
.menu-open .floaters{display:none}

/* =================== v5: tema, idioma, Lottie, radio =================== */
/* header: grupo derecho (mail, idioma, tema, menú) */
.header__right{justify-self:end;display:flex;align-items:center;gap:8px}
.icon-btn{width:44px;height:44px;border-radius:50%;display:grid;place-items:center;color:var(--blue);transition:background var(--fast),color var(--fast),transform .35s var(--spring)}
.icon-btn:hover{background:var(--blue);color:#FFFFFF}
.icon-btn:active{transform:scale(.92)}
.icon-btn svg{width:20px;height:20px}
.theme-toggle .i-sun{display:none}
.theme-toggle[aria-pressed="true"] .i-sun{display:block}
.theme-toggle[aria-pressed="true"] .i-moon{display:none}
.lang{display:inline-grid;place-items:center;min-width:44px;height:44px;padding:0 12px;border-radius:var(--pill);font:600 12.5px/1 var(--mono);letter-spacing:.06em;color:var(--blue);transition:background var(--fast),color var(--fast)}
.lang:hover{background:var(--blue);color:#FFFFFF}
.menu__foot .lang{justify-content:start;padding:0;height:auto;min-height:32px;color:#FFFFFF}
@supports not ((backdrop-filter:blur(1px)) or (-webkit-backdrop-filter:blur(1px))){
  :root[data-theme="dark"] .glass{background:var(--surface)}
}

/* caricaturas animadas: el SVG fijo queda debajo hasta que la animación está lista */
.lottie{position:relative;display:block;flex:none}
.lottie__still,.lottie__stage{position:absolute;inset:0;width:100%;height:100%}
.lottie__still{object-fit:contain;object-position:bottom center}
.lottie__stage svg{display:block;width:100% !important;height:100% !important}
.lottie.is-ready .lottie__still{visibility:hidden}
.lottie__slot{position:absolute;left:0;top:0;transform-origin:0 0;display:grid;place-items:center;text-align:center;pointer-events:none;font:900 calc(var(--k,1) * 15px)/.95 var(--display);text-transform:uppercase;color:var(--blue)}

/* caricaturas animadas en webp */
.anim{display:block}
.borders__walker.anim{width:auto}
/* hero: el saludo nuevo viene limpio, sin contorno */
.hero__tags li{display:contents}

/* 03 trabajos: Daniss se asoma desde el título */
.section-head > div{min-width:0}
.work__title{--tf:clamp(34px,6vw,90px);position:relative;padding-left:calc(var(--tf) * 1.6)}
.work__peek{position:absolute;left:0;top:50%;translate:0 -54%;height:calc(var(--tf) * 2.1);z-index:3;cursor:pointer}

/* 07 playground: al pasar el mouse salen tus herramientas por detrás */
.play{isolation:isolate}
.play > :not(.trail-layer){position:relative;z-index:2}
.play .trail-layer{z-index:0}
.trail__logo{width:100%;height:auto;display:block;filter:drop-shadow(0 12px 18px rgba(2,40,120,.25))}
:root[data-theme="dark"] .tool__img--mono,:root[data-theme="dark"] .trail__logo[src*="chatgpt"]{filter:invert(1)}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]) .tool__img--mono,:root:not([data-theme="light"]) .trail__logo[src*="chatgpt"]{filter:invert(1)}}

/* proyectos: estado del filtro y etiquetas del caso */
.filter-status{font:500 13px/1.4 var(--mono);color:var(--gray);margin:-18px 0 28px;min-height:1px;text-align:left}
.filter-status:empty{display:none}
.case-tags{display:flex;flex-wrap:wrap;gap:8px;margin-top:18px}
.case-tag{display:inline-flex;align-items:center;min-height:36px;padding:0 14px;border-radius:var(--pill);border:1px solid var(--blue-mist);color:var(--blue);font-size:13.5px;font-weight:500;transition:background var(--fast),color var(--fast),border-color var(--fast)}
.case-tag:hover{background:var(--blue);color:#FFFFFF;border-color:var(--blue)}

/* ---------- Radio Miau: reproductor con forma de gato ---------- */
.radio{position:fixed;left:calc(20px + env(safe-area-inset-left,0px));bottom:calc(20px + env(safe-area-inset-bottom,0px));z-index:90;display:flex;align-items:center;gap:8px;transition:opacity .3s,visibility 0s,transform .45s var(--spring)}
html:not(.past-hero) .radio:not(.is-playing),.in-quiet-zone .radio,.menu-open .radio{opacity:0;visibility:hidden;transform:translateY(12px);transition:opacity .25s,visibility 0s .3s,transform .35s}
.radio__cat{position:relative;width:66px;height:66px;flex:none;filter:drop-shadow(0 14px 18px rgba(2,40,120,.32));transition:transform .4s var(--pop)}
.radio__cat:hover{transform:translateY(-3px) rotate(-4deg)}
.radio__cat:active{transform:scale(.92)}
.radio__cat svg{width:100%;height:100%;overflow:visible;display:block}
.radio__cat .cat-head,.radio__cat .cat-ear{fill:var(--blue);stroke:#0A0A0A;stroke-width:3;stroke-linejoin:round}
.radio__cat .cat-ear-in{fill:#FFB8D9}
.radio__cat .cat-eye{fill:#FFFFFF}
.radio__cat .cat-pupil{fill:#0A0A0A}
.radio__cat .cat-closed{fill:none;stroke:#FFFFFF;stroke-width:3;stroke-linecap:round;opacity:0}
.radio__cat .cat-whisk{stroke:#FFFFFF;stroke-width:2;stroke-linecap:round}
.radio__cat .cat-nose{fill:#FFB8D9}
.radio__cat .cat-badge{fill:#FFFFFF;stroke:#0A0A0A;stroke-width:2.5}
.radio__cat .cat-play,.radio__cat .cat-pause{fill:var(--blue)}
.radio__cat .cat-pause{display:none}
.radio__cat .cat-ear--l{transform-origin:20px 22px}
.radio__cat .cat-ear--r{transform-origin:44px 22px}
.radio.is-playing .cat-eye,.radio.is-playing .cat-pupil{opacity:0}
.radio.is-playing .cat-closed{opacity:1}
.radio.is-playing .cat-play{display:none}
.radio.is-playing .cat-pause{display:block}
.radio.is-playing .cat-ear--l{animation:ear-l .42s ease-in-out infinite alternate}
.radio.is-playing .cat-ear--r{animation:ear-r .42s ease-in-out infinite alternate .21s}
.radio.is-playing .radio__cat{animation:bob .84s ease-in-out infinite}
@keyframes ear-l{to{transform:rotate(-12deg)}}
@keyframes ear-r{to{transform:rotate(12deg)}}
@keyframes bob{50%{translate:0 -3px}}
.radio__notes{position:absolute;left:50%;top:0;pointer-events:none}
.radio__notes i{position:absolute;font:700 16px/1 var(--text);font-style:normal;color:var(--blue);opacity:0}
.radio.is-playing .radio__notes i{animation:note 2.4s ease-out infinite}
.radio.is-playing .radio__notes i:nth-child(2){animation-delay:.8s;left:14px}
.radio.is-playing .radio__notes i:nth-child(3){animation-delay:1.6s;left:-14px}
@keyframes note{0%{opacity:0;transform:translate(0,0) rotate(0)}15%{opacity:1}100%{opacity:0;transform:translate(10px,-46px) rotate(18deg)}}
.radio__info{display:flex;align-items:center;gap:4px;max-width:0;overflow:hidden;opacity:0;padding:0;border-radius:var(--pill);white-space:nowrap;transition:max-width .45s var(--spring),opacity .25s,padding .45s var(--spring)}
.radio:hover .radio__info,.radio:focus-within .radio__info,.radio.is-peek .radio__info,.radio.is-resume .radio__info{max-width:300px;opacity:1;padding:6px 6px 6px 16px}
.radio__text{display:grid;line-height:1.15;margin-right:4px}
.radio__name{font:600 10.5px/1.2 var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--gray)}
.radio__track{font:600 14px/1.2 var(--text);color:var(--fg)}
.radio__track span{font:500 11px var(--mono);color:var(--blue);margin-right:6px}
.radio__next{width:40px;height:40px;border-radius:50%;display:grid;place-items:center;color:var(--blue);transition:background var(--fast),color var(--fast)}
.radio__next:hover{background:var(--blue);color:#FFFFFF}
.radio__next svg{width:16px;height:16px}
.qa .radio{display:none}
@media (max-width:768px){
  .radio{left:calc(14px + env(safe-area-inset-left,0px));bottom:calc(14px + env(safe-area-inset-bottom,0px))}
  .radio__cat{width:52px;height:52px}
  .radio{flex-direction:column-reverse;align-items:flex-start}
  .radio__info{display:none}
  .radio.is-peek .radio__info,.radio:focus-within .radio__info{display:flex;max-width:220px}
  .radio__name{display:none}
  .header__right{gap:4px}
  .header__right .lang,.header__right .theme-toggle{width:40px;min-width:40px;height:40px;padding:0}
  .work__title{--tf:clamp(28px,8.6vw,44px);padding-left:calc(var(--tf) * 1.9)}
  .work__peek{height:calc(var(--tf) * 2.6);translate:0 -50%}
}
@media (prefers-reduced-motion:reduce){
  .radio.is-playing .cat-ear--l,.radio.is-playing .cat-ear--r,.radio.is-playing .radio__cat,.radio.is-playing .radio__notes i{animation:none !important}
}
.motion-paused .radio.is-playing .cat-ear--l,.motion-paused .radio.is-playing .cat-ear--r,.motion-paused .radio.is-playing .radio__cat{animation-play-state:paused}

/* ventanita de YouTube de la radio (el reproductor oficial debe verse: 200 × 200 mínimo) */
.radio__tv{position:absolute;left:0;bottom:calc(100% + 12px);width:224px;padding:8px 12px 12px;border-radius:var(--r-md);box-shadow:var(--shadow-soft)}
.radio__tv-bar{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:6px;font:600 10.5px/1 var(--mono);letter-spacing:.06em;text-transform:uppercase;color:var(--gray)}
.radio__tv-close{width:32px;height:32px;border-radius:50%;display:grid;place-items:center;font-size:20px;line-height:1;color:var(--blue);transition:background var(--fast),color var(--fast)}
.radio__tv-close:hover{background:var(--blue);color:#FFFFFF}
.radio__tv-screen{width:200px;height:200px;border-radius:var(--r-sm);overflow:hidden;background:#0A0A0A}
.radio__tv-screen iframe{display:block;width:200px;height:200px;border:0}
.radio.has-tv{opacity:1;visibility:visible;transform:none}

/* =================== TABLET =================== */
@media (max-width:1100px){
  .stamps{grid-template-columns:repeat(2,minmax(0,1fr))}
  .more__grid{grid-template-columns:repeat(3,minmax(0,1fr))}
  .facts{grid-template-columns:repeat(4,minmax(0,1fr))}
  .fact:nth-child(5){border-left:0}
  .fact:nth-child(n+5){border-top:1px solid var(--line)}
  .facts--case .fact{border-top:0;border-left:1px solid var(--line)}
  .service__link{grid-template-columns:44px minmax(0,1fr) 48px}
  .service__items{grid-column:2;grid-row:2}
  .service__arrow{grid-column:3;grid-row:1}
  .contact__grid{grid-template-columns:minmax(0,1fr)}
  .contact__card,.brief{grid-column:1}
  .contact__grid{gap:24px}
  .contact__card{grid-row:2;min-height:0;padding-right:clamp(36px,30vw,280px)}
  .brief{grid-row:1}
  .contact__mascot{position:absolute;right:24px;bottom:0;margin:0;height:300px}
  .pgrid--3{grid-template-columns:repeat(2,minmax(0,1fr))}
  .pgrid--3 .pcard:nth-child(3){display:none}
  .srow{grid-template-columns:minmax(0,1fr) minmax(0,1.3fr)}
  .srow__head{grid-column:1;grid-row:1}
  .srow__body{grid-column:2;grid-row:1 / span 2}
  .srow__art{grid-column:1;grid-row:2;align-self:start;width:min(100%,200px)}
  .services-page{--card-r:24px;--card-py:48px;--card-px:32px;--card-gap:24px;--stack-top:calc(var(--header-h) + 20px);--lip:8px}
  .about__note{white-space:normal;max-width:12ch}
}

/* =================== MOBILE (≤768) =================== */
@media (max-width:768px){
  :root{--gut:18px;--header-h:76px;--glass-blur:8px}
  body{font-size:15px}
  .header{grid-template-columns:1fr auto;padding-top:calc(12px + env(safe-area-inset-top,0px))}
  .nav,.mail{display:none}
  .burger{display:block}
  .progress{display:none}

  /* hero en una columna: título, saludo grande y acciones, sin amontonar */
  .hero{min-height:auto;justify-content:flex-start;gap:14px;padding:calc(var(--header-h) + 16px) var(--gut) 72px}
  .frame--hero{inset:calc(var(--header-h) + 4px) 10px 40px}
  .hero__pill{font-size:12px;padding:8px 12px}
  .hero__stage{--t:clamp(44px,14vw,66px);grid-template-columns:minmax(0,1fr);justify-items:center;text-align:center}
  .hero__stage{grid-template-rows:auto auto auto}
  .hero__title{grid-row:1 / 4}
  .hero__line--1{grid-column:1;grid-row:1;padding:0}
  .hero__mascot{grid-column:1;grid-row:2;height:min(44svh,340px);margin:6px 0 .08em}
  .hero__line--2{grid-column:1;grid-row:3;white-space:normal}
  .hero__bubble{left:66%;font-size:13px;padding:8px 12px}
  .hero__desc{font-size:11.5px}
  .hero__claim{font-size:clamp(17px,5vw,20px)}
  .hero__actions .btn{min-height:48px}
  .hero__tags,.hero__bottom{display:none}

  .section{padding-bottom:clamp(64px,16vw,96px)}
  .divider{margin-bottom:48px}
  .title{font-size:clamp(28px,8.6vw,44px)}
  .about .title{font-size:clamp(24px,7.4vw,38px)}
  .statement{font-size:clamp(22px,7vw,34px)}
  .lead{font-size:16px}
  .section-head{flex-direction:column;align-items:flex-start;gap:16px}

  .services{grid-template-columns:minmax(0,1fr);margin-top:36px}
  .services__side{order:-1;height:160px}
  .services__mascot{width:auto;height:160px;transform:none !important}
  .service__link{grid-template-columns:36px minmax(0,1fr) 44px;padding:20px 4px;border-radius:var(--r-sm)}
  .service__items{grid-column:2 / -1}
  .service__arrow{width:44px;height:44px}
  .service__name{font-size:clamp(24px,7.4vw,32px)}
  .services__foot{flex-direction:column;align-items:stretch}

  /* franja: deslizar con el dedo, se ve parte de la siguiente */
  .strip__track{gap:14px;scroll-padding-inline:var(--gut)}
  .strip__item{width:min(80vw,330px)}
  .strip__controls{flex-wrap:wrap}
  .strip__btn--play{display:none}
  .pcard__name{font-size:clamp(22px,6.6vw,28px)}

  .band{margin-top:150px}
  .borders__walker{height:124px}
  .stamps{grid-template-columns:minmax(0,1fr);gap:12px}

  .about__body{grid-template-columns:minmax(0,1fr)}
  .about__visual{order:-1;grid-template-columns:auto auto;justify-content:center;row-gap:16px;padding-top:24px}
  .about__mascot{grid-column:1 / -1;grid-row:1;height:min(50svh,380px);justify-self:center}
  .about__note{grid-row:2;rotate:0deg;margin:0;white-space:nowrap;max-width:none;font-size:12px}
  .about__note--1{grid-column:1;justify-self:end;align-self:center}
  .about__note--2{grid-column:2;justify-self:start}
  .about__visual::before{inset:10% 4% 20%}
  .facts{grid-template-columns:repeat(2,minmax(0,1fr))}
  .fact{border-left:0;border-top:1px solid var(--line)}
  .fact:nth-child(-n+2){border-top:0}
  .fact:nth-child(even){border-left:1px solid var(--line)}
  .facts:not(.facts--case) .fact:last-child{grid-column:1 / -1}

  .counters{grid-template-columns:repeat(2,minmax(0,1fr))}
  .counter{border-left:0;border-right:0 !important;border-bottom:0;padding:24px 16px}
  .counter:nth-child(even){border-left:1px solid var(--line)}
  .counter:nth-child(n+3){border-bottom:1px solid var(--line)}

  .timeline{gap:14px}
  .tl{grid-template-columns:minmax(0,1fr);gap:10px;padding:24px 20px}
  .tl::before{background:var(--blue-soft);border-color:transparent}
  .tl__year{font-size:15px;justify-self:start;background:var(--surface);padding:8px 12px;border-radius:var(--pill)}
  .tl__role{font-size:clamp(22px,7vw,30px)}
  .tl__arrow,.tl__pop{display:none}
  .tl:hover::before{background:var(--blue-soft);border-color:transparent}
  .tl:hover .tl__year{transform:none;color:var(--blue)}
  .tl:hover .tl__role{color:var(--fg)}
  .tl:hover .tl__where,.tl:hover .tl__desc{color:var(--gray)}
  .tl:hover .tl__where b{color:var(--blue)}
  .exp__closing{flex-direction:column;align-items:center}
  .exp__closing .statement{text-align:center}

  .tool{padding:12px 18px 12px 14px;font-size:15px}
  .more__head{flex-direction:column}
  .more__grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
  .card span{font-size:12px;padding:11px 12px}

  .contact__card{padding:36px 22px 0;min-height:0}
  .contact__mascot{position:static;height:200px;align-self:center;margin:24px auto 0}
  .brief{padding:26px 18px;border-radius:var(--r-lg)}
  .contact__grid{gap:20px}
  .choice span{font-size:14px;padding:0 14px}
  .field legend small{display:block;margin:4px 0 0}

  .page-hero{grid-template-columns:minmax(0,1fr);padding-top:calc(var(--header-h) + 32px);gap:8px}
  .page-hero__title{font-size:clamp(44px,13.4vw,72px)}
  .page-hero__art{justify-self:end;padding-top:36px;margin-top:-24px}
  .page-hero__art img,.page-hero__lottie{height:170px}
  .page-hero__lead{font-size:16px}
  .pgrid,.pgrid--3{grid-template-columns:minmax(0,1fr);gap:40px}
  .pgrid--3 .pcard:nth-child(3){display:grid}
  .pcard--grid .cover{aspect-ratio:4/3}

  .case{padding-top:calc(var(--header-h) + 12px)}
  .case-hero{grid-template-columns:minmax(0,1fr)}
  .case-hero__title{font-size:clamp(38px,12vw,64px)}
  .back{margin-bottom:18px}
  .facts--case{grid-template-columns:repeat(2,minmax(0,1fr))}
  .facts--case .fact{padding:18px var(--gut);border-left:0;border-top:1px solid var(--line)}
  .facts--case .fact:nth-child(even){border-left:1px solid var(--line)}
  .facts--case .fact:nth-child(-n+2){border-top:0}
  .case-body{grid-template-columns:minmax(0,1fr)}
  .gallery__row--2{grid-template-columns:minmax(0,1fr)}
  .gallery__item figcaption{opacity:1;transform:none;position:static;display:block;background:none;padding:10px 4px 0;max-width:none}
  .gallery__item{background:none;overflow:visible}
  .gallery__item img{border-radius:var(--r-md);height:auto}
  .gallery__row--2 .gallery__item{aspect-ratio:auto}

  .cta-band__card{grid-template-columns:minmax(0,1fr);padding:32px 22px 0}
  .cta-band__card > div{padding-bottom:0}
  .cta-band__mascot{justify-self:center;height:190px;margin-top:8px}

  .srow{grid-template-columns:minmax(0,1fr) 92px;gap:18px;padding:36px 0}
  .srow__head{grid-column:1;grid-row:1;align-self:center}
  .srow__art{grid-column:2;grid-row:1;width:92px;align-self:start}
  .srow__body{grid-column:1 / -1;grid-row:2}
  .srow .btn{width:100%}
  .services-page{--card-r:20px;--card-py:32px;--card-px:20px;--card-gap:20px;--stack-top:calc(var(--header-h) + 14px);--lip:6px;--dwell:clamp(72px,16vh,140px)}

  .footer{grid-template-columns:1fr;justify-items:start;gap:12px;padding-bottom:calc(96px + env(safe-area-inset-bottom,0px))}
  .footer__copy{justify-self:start}

  .floaters{left:var(--gut);right:var(--gut);bottom:calc(14px + env(safe-area-inset-bottom,0px));justify-content:flex-end}
  .float-cta{min-height:48px;padding:0 20px;font-size:14px;background:var(--blue);box-shadow:var(--shadow)}
  .float-cta__long{display:none}
  .float-cta__short{display:inline}
  .wa{height:48px;min-width:48px;padding:0 12px}
  .wa__label{display:none}
}

/* modo revisión (?qa) */
.qa .appear,.qa .reveal{opacity:1 !important;transform:none !important;transition:none !important}
.qa .split > span{transform:none !important;transition:none !important}
.qa .hero{min-height:900px}
.qa .header{position:absolute}
.qa .progress,.qa .floaters{display:none}
.qa .menu{transition:none}
@media (max-width:768px){.qa .hero{min-height:0}}

/* =================== MOVIMIENTO REDUCIDO =================== */
@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  .js .appear,.js .reveal{opacity:1 !important;transform:none !important;transition:none !important}
  .split > span{transform:none !important;transition:none !important}
  .float,.hero::before,.dot,.trail{animation:none !important}
  .borders__walker{transform:translateX(10vw) !important}
  /* cintas quietas: se muestran como una fila que se puede recorrer */
  .ticker{overflow-x:auto;scrollbar-width:thin}
  .ticker--tools .ticker__track{flex-wrap:wrap;justify-content:center;width:auto;padding:0 var(--gut);gap:10px 0}
  .ticker--tools [aria-hidden="true"]{display:none}
  *,*::before,*::after{transition-duration:.01ms !important}
}

/* solo para lectores de pantalla (jerarquía de títulos) */
.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}

/* ---------- Sobre Daniss v2: editorial, asimétrica, con personalidad ---------- */
.about2 .about__body{display:none}
.about2__grid{position:relative;display:grid;grid-template-columns:repeat(12,minmax(0,1fr));column-gap:clamp(16px,2.4vw,32px);align-items:start;margin-top:clamp(28px,3.6vw,48px);text-align:left}
/* titular enorme, en dos líneas que suben desde una máscara */
.about2__title{grid-column:1 / -1;grid-row:1;margin:0;font:900 clamp(52px,8.4vw,132px)/.86 var(--display);text-transform:uppercase;letter-spacing:-.035em;color:var(--fg)}
.about2__line{display:block;overflow:hidden;padding:.06em 0 .04em}
.about2__line > span{display:inline-block;transition:transform .9s var(--e-out) var(--d,0s)}
.js .about2__line.reveal{opacity:1;transform:none}
.js .about2__line:not(.is-in) > span{transform:translateY(105%)}
.about2__line--blue{color:var(--blue)}
.about2__wave{display:inline-block;font-style:normal;font-size:.62em;vertical-align:.18em;transform-origin:70% 80%;cursor:default}
.about2__line.is-in .about2__wave{animation:about-wave 1.6s ease-in-out .9s 2}
.about2__title:hover .about2__wave{animation:about-wave .9s ease-in-out infinite}
@keyframes about-wave{0%,100%{rotate:0deg}15%{rotate:16deg}30%{rotate:-8deg}45%{rotate:14deg}60%{rotate:-4deg}75%{rotate:10deg}}
/* frase grande con palabras clave en azul que se subrayan al aparecer */
.about2__lead{grid-column:1 / 8;grid-row:1;align-self:center;margin:clamp(12px,2vw,28px) 0 0;max-width:none;font:900 clamp(22px,2vw,30px)/1.12 var(--display);text-transform:uppercase;letter-spacing:-.02em;color:var(--fg);text-wrap:pretty}
.about2__lead mark{color:var(--blue);background:linear-gradient(var(--blue-mist),var(--blue-mist)) 0 88% / 0 .2em no-repeat;transition:background-size .8s var(--e-out) .5s}
.about2__lead.is-in mark{background-size:100% .2em}
.about2__lead mark + mark{transition-delay:.7s}
.about2__pixel{position:relative;display:inline-block;color:var(--blue);white-space:nowrap}
.about2__circle{position:absolute;left:-12%;top:-22%;width:124%;height:144%;color:var(--blue);overflow:visible;pointer-events:none}
.about2__circle path{stroke-dasharray:640;stroke-dashoffset:640;transition:stroke-dashoffset 1.2s var(--e-out) 1s}
.about2__lead.is-in .about2__circle path{stroke-dashoffset:0}
/* Saritah con su gato, stickers que flotan y garabatos a mano */
.about2__visual{position:relative;grid-column:8 / 13;grid-row:1 / 3;align-self:start;margin:clamp(16px,2.4vw,32px) 0 0;display:grid;place-items:center;min-height:clamp(380px,40vw,560px);isolation:isolate}
.about2__blob{position:absolute;inset:12% 4% 4%;z-index:-1;border-radius:44% 56% 48% 52% / 52% 44% 56% 48%;background:var(--blue-soft);animation:about-blob 14s ease-in-out infinite alternate}
@keyframes about-blob{to{border-radius:56% 44% 54% 46% / 44% 56% 46% 54%;rotate:6deg}}
.about2__mascot{height:clamp(320px,34vw,480px);width:auto;transition:scale .5s var(--pop)}
.about2__visual:hover .about2__mascot{scale:1.03}
.about2__note{position:absolute;z-index:2;font:600 12.5px/1.2 var(--mono);color:var(--blue);padding:10px 13px;border-radius:var(--pill);white-space:nowrap;transition:rotate .45s var(--pop),scale .45s var(--pop),translate .45s var(--pop)}
.about2__note--1{left:-2%;top:18%;rotate:-6deg;animation:float 5s ease-in-out infinite}
.about2__note--2{right:-2%;top:46%;rotate:5deg;animation:float 5.6s ease-in-out -1.6s infinite}
.about2__note--3{left:6%;bottom:12%;rotate:3deg;background:var(--blue);color:#FFFFFF;box-shadow:0 12px 26px -14px rgba(2,89,246,.7);animation:float 4.8s ease-in-out -.8s infinite}
.about2__note:hover{rotate:0deg;scale:1.08}
.about2__spark{position:absolute;right:10%;top:6%;width:clamp(26px,2.6vw,38px);color:var(--blue);animation:about-spin 9s linear infinite}
@keyframes about-spin{to{rotate:360deg}}
.about2__arrow{position:absolute;left:-14%;top:58%;width:clamp(70px,7vw,110px);color:var(--fg);rotate:-8deg;opacity:.85}
.about2__arrow path{stroke-dasharray:220;stroke-dashoffset:220;transition:stroke-dashoffset 1.1s var(--e-out) .6s}
.about2__visual.is-in .about2__arrow path{stroke-dashoffset:0}
/* texto: dos párrafos corridos hacia la derecha (composición asimétrica) */
.about2__body{grid-column:1 / 5;grid-row:2;display:grid;gap:16px;margin-top:clamp(28px,3.4vw,48px);max-width:52ch;font-size:clamp(17px,1.35vw,19px);line-height:1.7;color:var(--gray)}
.about2__body b{color:var(--blue);font-weight:700}
.about2__body p:first-child{color:var(--fg)}
/* cita grande a todo el ancho */
.about2__quote{grid-column:1 / 13;grid-row:3;margin:clamp(48px,6vw,88px) 0 0;padding-left:clamp(0px,8vw,120px);max-width:26ch;box-sizing:content-box;font:900 clamp(28px,3.9vw,60px)/1.02 var(--display);text-transform:uppercase;letter-spacing:-.025em;color:var(--fg);text-wrap:balance}
.about2__quote em{font-style:normal;color:var(--blue)}
/* nota a mano: papelito crema con cinta, un poco torcido */
.about2__memo{position:relative;grid-column:5 / 8;grid-row:2;justify-self:center;align-self:start;margin-top:clamp(36px,4.4vw,64px);width:min(100%,300px);padding:26px 22px 22px;background:#FFF6DC;color:#0A0A0A;border-radius:6px 18px 8px 22px / 18px 8px 22px 6px;box-shadow:0 1px 0 rgba(0,0,0,.04),0 18px 30px -18px rgba(10,10,10,.35),0 4px 8px -6px rgba(10,10,10,.2);rotate:-3deg;transition:rotate .5s var(--pop),translate .5s var(--pop),box-shadow .4s ease}
.js .about2__memo.reveal:not(.is-in){transform:translateY(24px) rotate(-6deg)}
.about2__memo:hover{rotate:0deg;translate:0 -4px;box-shadow:0 1px 0 rgba(0,0,0,.04),0 26px 40px -22px rgba(10,10,10,.4),0 6px 10px -8px rgba(10,10,10,.2)}
.about2__memo p{font:600 clamp(21px,1.75vw,25px)/1.12 "Caveat","Comic Sans MS",cursive;letter-spacing:.005em}
.about2__memo em{font-style:normal;font-weight:700;color:var(--blue)}
.about2__tape{position:absolute;left:50%;top:-11px;width:84px;height:22px;translate:-50% 0;rotate:4deg;background:rgba(2,89,246,.22);border-radius:2px}
.about2__doodle{display:block;width:58px;margin:10px 0 0 auto;color:var(--blue)}
:root[data-theme="dark"] .about2__memo{color:#0A0A0A}
/* cierre: la posdata y las redes */
.about2__foot{grid-column:1 / 13;grid-row:3;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:20px 32px;margin-top:clamp(32px,4vw,56px);padding-top:clamp(20px,2.4vw,28px);border-top:1px solid var(--line)}
.about2__ps{font:500 14px/1.5 var(--mono);color:var(--gray);max-width:46ch}
.about2__star{display:inline-block;color:var(--blue);font-size:1.3em;animation:about-spin 6s linear infinite;transition:scale .3s var(--pop)}
.about2__ps:hover .about2__star{animation-duration:.9s;scale:1.3}
.about2__socials{display:flex;flex-wrap:wrap;gap:10px}
.about2__soc{position:relative;overflow:hidden;isolation:isolate;display:inline-flex;align-items:center;gap:10px;min-height:48px;padding:0 8px 0 20px;border-radius:var(--pill);border:1px solid var(--blue-mist);color:var(--blue);font:600 15px/1 var(--text);transition:color .3s ease,border-color .3s ease,translate .45s var(--pop),rotate .45s var(--pop)}
.about2__soc::before{content:"";position:absolute;inset:0;z-index:-1;background:var(--blue);border-radius:inherit;transform:translateY(102%);transition:transform .45s var(--e-out)}
.about2__soc i{display:grid;place-items:center;width:34px;height:34px;border-radius:50%;background:var(--blue-soft);font-style:normal;font-size:14px;transition:rotate .45s var(--pop),background .3s ease,color .3s ease}
.about2__soc:hover,.about2__soc:focus-visible{color:#FFFFFF;border-color:var(--blue);translate:0 -3px}
.about2__socials li:nth-child(odd) .about2__soc:hover{rotate:-2deg}
.about2__socials li:nth-child(even) .about2__soc:hover{rotate:2deg}
.about2__soc:hover::before,.about2__soc:focus-visible::before{transform:none}
.about2__soc:hover i,.about2__soc:focus-visible i{rotate:45deg;background:#FFFFFF;color:var(--blue)}
.about2__soc:active{scale:.96}
.about2 .subtitle{margin-top:clamp(56px,7vw,96px)}
@media (max-width:1024px){
  .about2__title{grid-column:1 / -1}
  .about2__lead{grid-column:1 / 8}
  .about2__visual{grid-column:8 / 13;grid-row:1 / 3;min-height:340px}
  .about2__body{grid-column:1 / 5}
  .about2__note--1{left:-8%}
  .about2__arrow{display:none}
}
@media (max-width:768px){
  .about2__grid{grid-template-columns:minmax(0,1fr)}
  .about2__lead,.about2__visual,.about2__body,.about2__memo,.about2__foot{grid-column:1;grid-row:auto}
  .about2__title{font-size:clamp(52px,17vw,84px)}
  .about2__lead{max-width:none;font-size:clamp(22px,6.6vw,30px);line-height:1.12}
  .about2__visual{min-height:0;margin-top:28px;padding:24px 0 8px}
  .about2__mascot{height:min(46svh,340px)}
  .about2__note{font-size:11.5px;padding:8px 11px}
  .about2__note--1{left:0;top:8%}
  .about2__note--2{right:0;top:52%}
  .about2__note--3{left:4%;bottom:4%}
  .about2__body{margin-top:24px;font-size:16px}
  .about2__memo{justify-self:start;width:min(100%,320px);margin:32px 0 8px 6px}
  .about2__foot{flex-direction:column;align-items:flex-start}
}
@media (prefers-reduced-motion:reduce){
  .about2__blob,.about2__spark,.about2__star,.about2__note{animation:none}
  .js .about2__line:not(.is-in) > span{transform:none}
  .about2__circle path,.about2__arrow path{stroke-dashoffset:0;transition:none}
  .about2__lead mark{background-size:100% .2em}
}

/* portada animada (Lottie) en la tarjeta del proyecto: llena el marco como una imagen */
.cover__lottie{position:absolute;inset:0;width:100%;height:100%;background:#041831}
.cover__lottie svg{display:block;width:100% !important;height:100% !important}

/* radio: Drako (stickers de BUFI) en vez del gato — apagada: Drako mafioso; sonando: Drako feliz */
.radio__drako{position:relative;display:block;width:100%;height:100%}
.radio__face{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;transition:opacity .3s ease,scale .45s var(--pop)}
.radio__face--on{opacity:0;scale:.82}
.radio.is-playing .radio__face--off{opacity:0;scale:.82}
.radio.is-playing .radio__face--on{opacity:1;scale:1}
.radio__badge{position:absolute;right:-3px;bottom:-1px;width:24px !important;height:24px !important}
@media (prefers-reduced-motion:reduce){.radio__face{transition:opacity .2s ease}}
/* caso clásico con animación arriba (TecnoTools): el Lottie ocupa el lugar de la portada */
.case-hero__lottie{overflow:hidden;border-radius:var(--r-xl);background:#FFFFFF;box-shadow:0 0 0 1px var(--line)}
.case-hero__lottie .lottie{width:100%}

/* galería: fila de piezas cuadradas (identidad) */
.gallery__row--4{grid-template-columns:repeat(4,minmax(0,1fr))}
.gallery__row--4 .gallery__item{aspect-ratio:1/1}
@media (max-width:900px){.gallery__row--4{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:768px){.gallery__row--4 .gallery__item{aspect-ratio:auto}}

/* =========================================================
   Correcciones UX/UI en celular (oct 2026)
   ========================================================= */
@media (max-width:768px){
  /* header: el logo respira dentro de su cápsula (proporción original) */
  .logo{gap:6px;padding:7px 12px 7px 9px}
  .logo__iso{height:24px}
  .logo__name{height:14px}

  /* formulario de contacto más compacto: etiquetas más chicas y bien separadas */
  .brief{padding:22px 18px 24px;gap:20px;border-radius:var(--r-lg)}
  .field{gap:7px}
  .field label,.field legend{font-size:14.5px}
  .field legend{margin-bottom:8px}
  .field legend small{display:block;margin:4px 0 0}
  .field input,.field textarea{min-height:48px;padding:12px 14px}
  .field textarea{min-height:112px}
  .choices{gap:8px 6px}
  .choice span{min-height:38px;padding:0 13px;font-size:13.5px;border-width:1.25px}
  .choice input:checked + span::before{font-size:11px}
  .brief .btn--submit{width:100%;justify-content:center}
  #brief{scroll-margin-top:calc(var(--header-h) + 12px)}

  /* tarjetas de servicios: etiquetas y círculo de la flecha sin pisarse */
  .service__link{row-gap:12px}
  .service__items{gap:6px}
  .service__items li{font-size:12.5px;padding:5px 11px}
  .service__arrow{align-self:start;flex:none}
}
@media (max-width:360px){
  .logo{padding:6px 10px 6px 8px}
  .logo__iso{height:22px}
  .logo__name{height:13px}
  .header__right{gap:3px}
  .header__right .lang,.header__right .theme-toggle{width:38px;min-width:38px;height:38px}
  .choice span{padding:0 11px;font-size:13px}
}

/* burbujas en carrusel (celular y tablet): una sola fila que se desliza con el dedo.
   El fundido de la derecha avisa que hay más; el relleno final deja ver la última entera. */
@media (max-width:768px){
  .page-hero__index,.service__items,.srow__items,.filters,.cs-hero__tags,.contact__links{
    display:flex;flex-wrap:nowrap;justify-content:flex-start;justify-self:stretch;width:100%;min-width:0;max-width:100%;
    overflow-x:auto;overflow-y:hidden;overscroll-behavior-x:contain;scroll-snap-type:x proximity;scrollbar-width:none;
    padding-right:32px;padding-bottom:2px;
    -webkit-mask-image:linear-gradient(90deg,#000 calc(100% - 36px),transparent);mask-image:linear-gradient(90deg,#000 calc(100% - 36px),transparent)}
  .page-hero__index::-webkit-scrollbar,.service__items::-webkit-scrollbar,.srow__items::-webkit-scrollbar,.filters::-webkit-scrollbar,.cs-hero__tags::-webkit-scrollbar,.contact__links::-webkit-scrollbar{display:none}
  .page-hero__index > *,.service__items > *,.srow__items > *,.filters > *,.cs-hero__tags > *,.contact__links > *{flex:none;white-space:nowrap;scroll-snap-align:start}
  /* la caricatura de la portada ya no sube sobre la fila de burbujas */
  .page-hero__art{margin-top:14px;justify-self:center}
  /* personaje de la portada al centro, con su globo centrado encima */
  .page-hero__bubble{left:50%;right:auto;translate:-50% 0}
}

/* Marca → Digital → Experiencia: un conector (puntos unidos por una línea), no botones */
.flow{display:flex;flex-wrap:nowrap;align-items:center;gap:10px;pointer-events:none;user-select:none}
.flow span{display:inline-flex;align-items:center;gap:8px;padding:0;background:none;border-radius:0;font:600 12.5px/1 var(--mono);letter-spacing:.1em;color:var(--blue);white-space:nowrap}
.flow span::before{content:"";flex:none;width:9px;height:9px;border-radius:50%;border:2px solid var(--blue);background:var(--bg)}
.flow span:last-child::before{background:var(--blue)}
.flow i{position:relative;flex:0 0 clamp(36px,4vw,60px);height:1.5px;font-size:0;background:var(--blue-mist)}
.flow i::after{content:"";position:absolute;right:-1px;top:50%;translate:0 -50%;border-left:6px solid var(--blue-mist);border-top:4px solid transparent;border-bottom:4px solid transparent}
@media (max-width:768px){
  .services__foot .flow{width:100%;justify-content:center;gap:8px}
  .flow i{flex:1 1 20px;min-width:14px;max-width:64px}
  .flow span{font-size:11.5px;letter-spacing:.08em;gap:6px}
  /* tarjetas de servicios: relleno a los costados (antes quedaba en 4 px) */
  .service__link{padding:20px 18px 22px 14px;grid-template-columns:30px minmax(0,1fr) 44px;column-gap:12px}
}
@media (max-width:360px){
  .service__link{padding:18px 14px 20px 12px;grid-template-columns:24px minmax(0,1fr) 40px;column-gap:10px}
  .service__arrow{width:40px;height:40px}
  .flow span{font-size:10.5px;letter-spacing:.05em}
  .flow span::before{width:7px;height:7px}
}
/* inicio en celular: la caricatura del saludo un poco más chica (misma proporción) */
@media (max-width:768px){
  .hero__mascot{height:min(34svh,270px)}
}
@media (max-width:360px){
  .hero__mascot{height:min(32svh,230px)}
}
/* inicio en celular: "Ver todos los servicios" arriba del conector Marca → Digital → Experiencia */
@media (max-width:768px){
  .services__foot{gap:22px}
  .services__foot .btn{order:-1}
}
/* menos aire entre secciones, alrededor de las líneas divisorias ✦ */
.section{padding-top:clamp(32px,4vw,52px);padding-bottom:clamp(56px,7vw,96px)}
.divider{margin-bottom:clamp(40px,5vw,72px)}
@media (max-width:768px){
  .section{padding-top:24px;padding-bottom:40px}
  .divider{margin-bottom:32px}
}
@media (max-width:768px){.hero{padding-bottom:44px}}
/* experiencia: nombre del estudio como link (sin mostrar la dirección) */
.tl__link{color:inherit;text-decoration:underline;text-decoration-thickness:1.5px;text-underline-offset:3px;text-decoration-color:currentColor;transition:opacity .2s}
.tl__link span{display:inline-block;font-size:.85em;transition:translate .3s var(--e-out)}
.tl__link:hover{opacity:.8}
.tl__link:hover span{translate:2px -2px}
.tl__link:focus-visible{outline:2px solid currentColor;outline-offset:3px;border-radius:4px}
/* celular: un solo botón flotante (WhatsApp). "Empezar proyecto" no flota (el formulario y la tarjeta
   "¿Trabajamos juntos?" cumplen ese rol) y la Radio Miau pasa al final de la página, debajo del pie. */
@media (max-width:768px){
  .float-cta{display:none !important}
  .radio{position:relative;left:auto;right:auto;bottom:auto;z-index:1;flex-direction:row;align-items:center;justify-content:flex-start;width:max-content;max-width:calc(100% - 110px);margin:0 0 calc(28px + env(safe-area-inset-bottom,0px)) var(--gut)}
  html:not(.past-hero) .radio:not(.is-playing),.in-quiet-zone .radio,.radio.is-away{opacity:1;visibility:visible;transform:none}
  .radio__info,.radio.is-peek .radio__info,.radio:focus-within .radio__info{display:flex;max-width:240px;opacity:1;padding:6px 6px 6px 14px}
  .radio__name{display:inline}
}
/* página 404 */
.notfound{display:grid;justify-items:center;gap:14px;padding-top:calc(var(--header-h) + clamp(40px,8vw,96px));min-height:70svh;align-content:center}
.notfound__art{width:clamp(140px,18vw,220px);height:auto;margin-bottom:6px}
.notfound .lead{max-width:44ch}
.notfound__actions{display:flex;flex-wrap:wrap;justify-content:center;gap:10px;margin-top:10px}
.notfound__actions .btn{margin-top:0}
/* aviso de cookies (Google Analytics) */
.consent{position:fixed;left:50%;bottom:calc(22px + env(safe-area-inset-bottom,0px));z-index:120;width:min(520px,calc(100vw - 32px));display:flex;align-items:center;gap:16px;padding:14px 14px 14px 20px;border-radius:22px;opacity:0;transform:translate(-50%,14px);transition:opacity .3s ease,transform .45s var(--spring)}
.consent.is-in{opacity:1;transform:translate(-50%,0)}
.consent__text{margin:0;font:400 13.5px/1.45 var(--text);color:var(--fg)}
.consent__actions{display:flex;gap:8px;flex:none}
.consent__btn{min-height:40px;padding:10px 16px;font-size:14px;box-shadow:none}
.footer__cookies{font:inherit;color:inherit;text-decoration:underline;text-underline-offset:3px;background:none;border:0;padding:0;cursor:pointer}
@media (max-width:560px){
  .consent{flex-direction:column;align-items:stretch;gap:12px;padding:16px;bottom:calc(16px + env(safe-area-inset-bottom,0px))}
  .consent__actions .consent__btn{flex:1}
}
@media (prefers-reduced-motion:reduce){.consent{transition:opacity .2s}}
