/* Fuentes del manual, autoalojadas: Fraunces variable (opsz, wght, SOFT, WONK) y General Sans */
@font-face{font-family:"Fraunces";font-style:normal;font-weight:100 900;font-display:swap;src:url("fonts/fraunces-var.woff2") format("woff2")}
@font-face{font-family:"Fraunces";font-style:italic;font-weight:100 900;font-display:swap;src:url("fonts/fraunces-var-italic.woff2") format("woff2")}
@font-face{font-family:"General Sans";font-style:normal;font-weight:400;font-display:swap;src:url("fonts/GeneralSans-Regular.woff2") format("woff2")}
@font-face{font-family:"General Sans";font-style:normal;font-weight:500;font-display:swap;src:url("fonts/GeneralSans-Medium.woff2") format("woff2")}
@font-face{font-family:"General Sans";font-style:normal;font-weight:600;font-display:swap;src:url("fonts/GeneralSans-Semibold.woff2") format("woff2")}


:root{
  --cream:#F9F8F6; --ink:#000; --g1:#EFEDE9; --g2:#D9D6D0; --g3:#8F8B84; --g4:#3A3936;
  --green:#64F154; --cyan:#7BF6EB; --purple:#D8C1F5; --yellow:#FCDE03;
  --display:"Fraunces",Georgia,serif;
  --text:"General Sans",system-ui,-apple-system,"Helvetica Neue",Arial,sans-serif;
  --pad:clamp(20px,4vw,64px); --max:1440px;
  --ease-out:cubic-bezier(0.23,1,0.32,1); --ease-in-out:cubic-bezier(0.77,0,0.175,1);
  --ease:var(--ease-out); --d-press:140ms; --d-ui:200ms; --d-frame:600ms;
}
*{box-sizing:border-box}
html{scroll-behavior:smooth;color-scheme:light}
body{margin:0;background:var(--cream);color:var(--ink);font-family:var(--text);font-size:17px;line-height:1.5;-webkit-font-smoothing:antialiased}
img,svg{display:block;max-width:100%}
a{color:inherit;text-decoration:none}
a:hover,button:hover{color:inherit}
:focus-visible{outline:3px solid var(--cyan);outline-offset:3px}
h1,h2,h3{margin:0;font-weight:900;font-variation-settings:"SOFT" 100,"WONK" 1;font-family:var(--display);letter-spacing:-.01em;text-wrap:balance}
p{margin:0}
.disp{font-family:var(--display);font-weight:900;font-variation-settings:"SOFT" 100,"WONK" 1}
.wrap{max-width:var(--max);margin:0 auto;padding-left:var(--pad);padding-right:var(--pad)}
.lbl{font-size:12px;letter-spacing:.06em;text-transform:uppercase;color:var(--g3);font-weight:600}

/* language switching */
body [lang="es"]{display:none}
html[data-lang="es"] body [lang="es"]{display:revert}
html[data-lang="es"] body [lang="en"]{display:none}

/* placeholders */
.ph{position:relative;background:var(--g4);color:var(--cream);overflow:hidden;display:flex;align-items:center;justify-content:center;text-align:center;
  background-image:repeating-linear-gradient(135deg,rgba(255,255,255,.06) 0 2px,transparent 2px 18px)}
.ph .t{font-size:13px;line-height:1.45;opacity:.85;padding:16px;max-width:36ch}
.ph .t b{display:block;font-size:12px;letter-spacing:.08em;text-transform:uppercase;opacity:.6;margin-bottom:4px}
.ph .play{width:56px;height:56px;border-radius:50%;border:1.5px solid rgba(255,255,255,.6);display:grid;place-items:center;margin:0 auto 12px}
.ph .play::after{content:"";border-left:14px solid var(--cream);border-top:9px solid transparent;border-bottom:9px solid transparent;margin-left:4px}
.ph.light{background:var(--g1);color:var(--g4);background-image:repeating-linear-gradient(135deg,rgba(0,0,0,.05) 0 2px,transparent 2px 18px)}
.ph.light .play{border-color:rgba(0,0,0,.4)}.ph.light .play::after{border-left-color:var(--g4)}

/* nav */
.nav{position:fixed;top:0;left:0;right:0;z-index:50;display:flex;align-items:center;justify-content:space-between;padding:18px var(--pad);color:var(--cream);mix-blend-mode:difference}
.nav .brand{width:118px}
.nav ul{list-style:none;margin:0;padding:0;display:flex;gap:28px;font-size:14px;font-weight:500}
.nav a{position:relative}
.nav ul a::after{content:"";position:absolute;left:0;right:0;bottom:-4px;height:2px;background:var(--cyan);transform:scaleX(0);transform-origin:left;transition:transform var(--d-ui) var(--ease-out)}
@media(hover:hover) and (pointer:fine){.nav ul a:hover::after{transform:scaleX(1)}}
.nav ul a:focus-visible::after{transform:scaleX(1)}
.nav .right{display:flex;align-items:center;gap:18px;font-size:14px}
.langs{display:flex;gap:2px;border:1px solid currentColor;border-radius:999px;padding:2px}
.langs button{font:inherit;font-size:12px;font-weight:600;letter-spacing:.04em;background:none;border:0;color:inherit;padding:4px 10px;border-radius:999px;cursor:pointer}
.langs button{opacity:.55}
.langs button[aria-pressed="true"]{opacity:1;text-decoration:underline;text-underline-offset:3px;text-decoration-thickness:2px}
.btn{display:inline-flex;align-items:center;gap:10px;font:inherit;font-size:15px;font-weight:600;padding:12px 20px;border-radius:999px;border:1.5px solid currentColor;cursor:pointer;background:none;color:inherit;transition:background-color var(--d-ui) ease,color var(--d-ui) ease,border-color var(--d-ui) ease,transform var(--d-press) var(--ease-out)}
.btn:active{transform:scale(.97)}
.btn.solid{background:var(--ink);color:var(--cream);border-color:var(--ink)}
@media(hover:hover) and (pointer:fine){.btn.solid:hover,.btn.ghost:hover,.btn:hover{background:var(--cyan);color:var(--ink);border-color:var(--cyan)}}
.nav .btn{padding:8px 14px;font-size:13px}
@media(max-width:860px){.nav ul{display:none}.nav .brand{width:96px}}

/* hero */
.hero{background:var(--ink);color:var(--cream);padding:110px var(--pad) 72px}
.hero .inner{max-width:var(--max);margin:0 auto}
.frame{position:relative;aspect-ratio:2.81/1;border-radius:clamp(8px,1.2vw,18px);overflow:hidden;background:var(--g4)}
.frame .media{position:absolute;inset:0}
.frame .gl{position:absolute;top:0;bottom:0;width:36%;color:var(--cream);transition:transform var(--d-frame) var(--ease-out);will-change:transform}
.frame .gl svg{height:100%;width:100%}
.frame .gl.l{left:0}.frame .gl.r{right:0}
.frame.closed .gl.l{transform:translateX(44%)}.frame.closed .gl.r{transform:translateX(-44%)}
.hero .copy{display:grid;grid-template-columns:1.4fr 1fr;gap:48px;align-items:end;margin-top:56px}
.hero h1{font-size:clamp(40px,6.2vw,96px);line-height:.98}
.hero .sub{font-size:clamp(17px,1.4vw,21px);line-height:1.45;max-width:44ch;color:var(--g2)}
.hero .cta{display:flex;gap:12px;margin-top:26px;flex-wrap:wrap}
.hero .cta .btn{color:var(--cream)}
.hero .cta .btn.solid{background:var(--cream);color:var(--ink);border-color:var(--cream)}
@media(hover:hover) and (pointer:fine){.hero .cta .btn.solid:hover{background:var(--cyan);border-color:var(--cyan)}}
@media(max-width:860px){.frame .ph .t{font-size:0;padding:0}.frame .ph .t b{display:none}.frame .ph .play{margin:0;width:44px;height:44px}.hero{padding-top:90px}.hero .copy{grid-template-columns:1fr;gap:24px;margin-top:36px}.frame{aspect-ratio:2.81/1}}

/* accent cycle on hero glyph */
/* El manual: solo el glifo del wordmark cicla verde, amarillo, morado. Los glifos del marco van siempre en blanco roto. */
@keyframes glyph-cycle{0%,30%{fill:var(--green)}33.3%,63.3%{fill:var(--yellow)}66.6%,96.6%{fill:var(--purple)}100%{fill:var(--green)}}
.nav .brand .glyph{fill:var(--green);animation:glyph-cycle 18s linear infinite}
.frame .gl .acc{display:none}

/* sections */
section{padding:clamp(72px,9vw,140px) 0}
.sec-head{display:grid;grid-template-columns:1fr 2fr;gap:32px;align-items:baseline;margin-bottom:clamp(36px,5vw,64px)}
.sec-head h2{font-size:clamp(34px,4.4vw,64px);line-height:1;grid-column:2}
.sec-head .lbl{grid-column:1;grid-row:1}
@media(max-width:860px){.sec-head{grid-template-columns:1fr}.sec-head h2{grid-column:1}}

/* manifesto */
.manifesto{border-top:1px solid var(--g2)}
.manifesto .big{font-size:clamp(30px,4.6vw,66px);line-height:1.02;max-width:18ch}
.manifesto .grid{display:grid;grid-template-columns:1fr 1fr;gap:56px;align-items:start}
.manifesto .txt{font-size:clamp(17px,1.35vw,20px);line-height:1.5;max-width:52ch;display:grid;gap:18px;padding-top:12px}
.manifesto .txt .line{color:var(--g3);font-size:15px}
@media(max-width:860px){.manifesto .grid{grid-template-columns:1fr;gap:28px}}

/* work */
.work{background:var(--ink);color:var(--cream)}
.work .sec-head .lbl{color:var(--g3)}
.pieces{display:grid;gap:clamp(28px,4vw,56px)}
.piece{display:grid;grid-template-columns:1fr;gap:16px}
.piece .ph{border-radius:clamp(8px,1vw,14px)}
.piece .meta{display:grid;grid-template-columns:1fr auto;gap:12px;align-items:baseline;border-top:1px solid #2A2A2A;padding-top:14px}
.piece .meta h3{font-size:clamp(22px,2.2vw,32px);font-weight:700}
.piece .meta .client{color:var(--g3);font-size:14px;margin-top:2px}
.piece .meta .fmt{font-size:13px;color:var(--g2);text-align:right;white-space:nowrap}
.piece.wide .ph{aspect-ratio:16/9}
.row2{display:grid;grid-template-columns:1fr 1fr;gap:clamp(28px,4vw,56px)}
.row2 .piece .ph{aspect-ratio:4/5}
.row2 .piece:nth-child(2){margin-top:clamp(40px,8vw,120px)}
.row3{display:grid;grid-template-columns:1.7fr 1fr;gap:clamp(28px,4vw,56px);align-items:end}
.row3 .piece:first-child .ph{aspect-ratio:16/10}
.row3 .piece:last-child .ph{aspect-ratio:1/1}
.work .more{margin-top:48px;display:flex;justify-content:center}
.work .btn{color:var(--cream)}
@media(max-width:860px){.row2,.row3{grid-template-columns:1fr}.row2 .piece:nth-child(2){margin-top:0}.row3 .piece:last-child .ph{aspect-ratio:4/5}}

/* services */
.svc .rows{display:grid}
.svc .row{display:grid;grid-template-columns:1fr 1.6fr 1fr;gap:32px;padding:34px 0;border-top:1px solid var(--g2);align-items:start}
.svc .row:last-child{border-bottom:1px solid var(--g2)}
.svc h3{font-size:clamp(24px,2.4vw,34px);font-weight:700;line-height:1.05}
.svc p{max-width:52ch;font-size:17px}
.svc .out{font-size:14px;color:var(--g3);line-height:1.5}
.svc .out b{color:var(--ink);font-weight:600;display:block;margin-bottom:2px}
@media(max-width:860px){.svc .row{grid-template-columns:1fr;gap:12px;padding:26px 0}}

/* process */
.process{background:var(--g1)}
.steps{display:grid;grid-template-columns:repeat(5,1fr);gap:24px;counter-reset:s}
.step{border-top:2px solid var(--ink);padding-top:16px;counter-increment:s}
.step::before{content:counter(s,decimal-leading-zero);font-family:var(--display);font-weight:900;font-variation-settings:"SOFT" 100,"WONK" 1;font-size:28px;display:block;margin-bottom:10px}
.step h3{font-size:19px;font-weight:700;margin-bottom:8px;font-family:var(--text);letter-spacing:0}
.step p{font-size:15px;color:var(--g4);line-height:1.45}
@media(max-width:1100px){.steps{grid-template-columns:repeat(3,1fr)}}
@media(max-width:700px){.steps{grid-template-columns:1fr 1fr}}

/* directors */
.directors[hidden]{display:none!important}
.dirs.single{grid-template-columns:minmax(0,440px)}
.dirs{display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(20px,3vw,40px)}
.dir .ph{aspect-ratio:4/5;border-radius:10px}
.dir h3{font-size:24px;font-weight:700;margin-top:16px}
.dir .role{color:var(--g3);font-size:14px;margin:2px 0 10px}
.dir p{font-size:15px;color:var(--g4);line-height:1.5}
.dir p .fill{background:var(--yellow);padding:0 4px;border-radius:3px;color:var(--ink)}
@media(max-width:860px){.dirs{grid-template-columns:1fr}}

/* contact */
.contact{background:var(--ink);color:var(--cream)}
.contact .grid{display:grid;grid-template-columns:1fr 1fr;gap:64px;align-items:start}
.contact h2{font-size:clamp(38px,5vw,72px);line-height:.98}
.contact .side p{color:var(--g2);font-size:18px;max-width:40ch;margin-top:22px}
.contact .side .mail{display:inline-block;margin-top:28px;font-size:22px;font-weight:600;border-bottom:2px solid var(--cyan);padding-bottom:2px}
@media(hover:hover) and (pointer:fine){.contact .side .mail:hover{color:var(--cyan)}}
form{display:grid;gap:18px}
.f2{display:grid;grid-template-columns:1fr 1fr;gap:18px}
label{display:grid;gap:8px;font-size:13px;font-weight:600;letter-spacing:.02em;color:var(--g2)}
input,textarea,select{font:inherit;font-size:16px;color:var(--cream);background:transparent;border:0;border-bottom:1.5px solid #3A3936;padding:10px 0;border-radius:0;width:100%}
select{appearance:none;background-image:linear-gradient(45deg,transparent 50%,var(--g2) 50%),linear-gradient(135deg,var(--g2) 50%,transparent 50%);background-position:calc(100% - 14px) 50%,calc(100% - 8px) 50%;background-size:6px 6px;background-repeat:no-repeat}
select option{color:var(--ink)}
textarea{min-height:110px;resize:vertical}
input:focus,textarea:focus,select:focus{outline:0;border-bottom-color:var(--cyan)}
input::placeholder,textarea::placeholder{color:var(--g3)}
form .btn{justify-self:start;margin-top:8px;color:var(--cream)}
form .btn.solid{background:var(--cream);color:var(--ink);border-color:var(--cream)}
@media(hover:hover) and (pointer:fine){form .btn.solid:hover{background:var(--cyan);border-color:var(--cyan)}}
form .note{font-size:12.5px;color:var(--g3);line-height:1.45}
form .ok{display:none;background:var(--green);color:var(--ink);padding:14px 16px;border-radius:10px;font-weight:600}
@media(max-width:860px){.contact .grid{grid-template-columns:1fr;gap:36px}.f2{grid-template-columns:1fr}}

/* footer */
footer{background:var(--ink);color:var(--g3);border-top:1px solid #1E1E1E;padding:40px 0 34px;font-size:13px}
footer .row{display:flex;justify-content:space-between;align-items:flex-end;gap:24px;flex-wrap:wrap}
footer .wm{width:200px;color:var(--cream)}
footer ul{list-style:none;margin:0;padding:0;display:flex;gap:22px}
@media(hover:hover) and (pointer:fine){footer a:hover{color:var(--cream)}}
footer .iso{width:22px;color:var(--cream);margin-bottom:14px}

/* reveal */
.rv{opacity:1;transform:none}
@media(prefers-reduced-motion:no-preference){
  .frame.closed{transition:none}
  .hero .copy > *{animation:up .9s var(--ease) both}
  .hero .copy > :nth-child(2){animation-delay:.15s}
  @keyframes up{from{opacity:.001;transform:translateY(14px)}to{opacity:1;transform:none}}
}
@media(prefers-reduced-motion:reduce){
  /* Menos movimiento, no ninguno: fuera desplazamientos y escalas, se quedan fundidos cortos */
  .frame .gl{transition:none}
  .nav .brand .glyph{animation:none;fill:var(--green)}
  .hero .copy > *{animation:none}
  .btn:active{transform:none}
  .project-image img,.play-image img{transition:opacity 200ms ease}
  .piece:hover .project-image img,.play-open:hover img{transform:none}
}

/* Integrated project imagery and accessible navigation */
.nav{background:rgba(0,0,0,.96);mix-blend-mode:normal;color:var(--cream)}
html{scroll-padding-top:100px}
.skip-link{position:fixed;left:16px;top:-100px;z-index:100;background:var(--cyan);color:#000;padding:12px 18px;border-radius:6px}
.skip-link:focus{top:12px}
.hero-image img{width:100%;height:100%;object-fit:cover;object-position:50% 43%}
.project-image{position:relative;aspect-ratio:16/10;overflow:hidden;border-radius:clamp(8px,1vw,14px);background:var(--g4)}
.piece.wide .project-image{aspect-ratio:16/9}
.project-image img{width:100%;height:100%;object-fit:cover;transition:transform 600ms var(--ease-out)}
.piece:focus-visible .project-image img{transform:scale(1.025)}
@media(hover:hover) and (pointer:fine){.piece:hover .project-image img{transform:scale(1.025)}}
.project-arrow{position:absolute;bottom:20px;right:20px;background:var(--cream);color:#000;width:48px;height:48px;display:grid;place-items:center;border-radius:50%;font-size:25px}
.case-label{font-size:13px;white-space:nowrap;color:var(--g3)}
.piece .client{max-width:45ch}
form #err{background:var(--yellow)}
button:disabled{opacity:.6;cursor:wait}
@media(max-width:860px){
 .nav{flex-wrap:wrap;gap:12px;background:#000;color:var(--cream);mix-blend-mode:normal}
 .nav nav{order:3;width:100%}.nav ul{display:flex;gap:24px;font-size:13px}
 .nav .right{gap:10px}.nav .btn{font-size:11px;padding:8px 10px}
 .hero{padding-top:145px}.frame{aspect-ratio:2/1}
 .piece .meta{grid-template-columns:1fr;gap:8px}.project-arrow{width:40px;height:40px;right:12px;bottom:12px}
}
@media(max-width:380px){.nav .right>.btn{display:none}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}}


/* Superficies del navegador con color de marca */
::selection{background:var(--cyan);color:var(--ink)}
input,textarea,select{caret-color:var(--cyan)}
html{scrollbar-color:var(--g4) var(--ink)}
