
@font-face{font-family:'Suisse Mono';src:url('/assets/fonts/suisse-mono.ttf') format('truetype');font-weight:400;font-display:swap}
@font-face{font-family:'Aktiv Grotesk';src:url('/assets/fonts/aktiv-light.woff2') format('woff2');font-weight:300;font-display:swap}
@font-face{font-family:'Aktiv Grotesk';src:url('/assets/fonts/aktiv-regular.woff2') format('woff2');font-weight:400;font-display:swap}
@font-face{font-family:'Aktiv Grotesk';src:url('/assets/fonts/aktiv-medium.woff2') format('woff2');font-weight:500;font-display:swap}
@font-face{font-family:'Aktiv Grotesk';src:url('/assets/fonts/aktiv-bold.woff2') format('woff2');font-weight:700;font-display:swap}
:root{--ink:#141414;--mut:#8a8a8a;--line:#e7e7e7;--bg:#fff;--pad:clamp(20px,5vw,64px);--mono:'Suisse Mono',ui-monospace,monospace}
*{box-sizing:border-box;margin:0;padding:0}
html{-webkit-font-smoothing:antialiased}
body{font-family:'Aktiv Grotesk',-apple-system,system-ui,sans-serif;font-weight:400;color:var(--ink);background:var(--bg);line-height:1.5;font-size:15px;opacity:1;transition:opacity .3s ease}
body.leaving{opacity:0}
/* loader (primera visita) */
#loader{position:fixed;inset:0;z-index:100;background:var(--bg);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:18px;transition:opacity .5s ease}
#loader.done{opacity:0;pointer-events:none}
html.seen #loader{display:none}
html.loading{overflow:hidden}
.loader-name{font-family:var(--mono);text-transform:lowercase;letter-spacing:.06em;font-size:clamp(15px,2vw,18px);color:var(--ink)}
.loader-bar{width:120px;height:1px;background:var(--line);position:relative;overflow:hidden}
.loader-bar::after{content:"";position:absolute;inset:0;background:var(--ink);transform:scaleX(0);transform-origin:left;animation:szload 1s cubic-bezier(.4,0,.2,1) forwards}
@keyframes szload{to{transform:scaleX(1)}}
@media(prefers-reduced-motion:reduce){#loader{transition:none}.loader-bar::after{animation:none;transform:scaleX(1)}}
/* Lenis smooth scroll */
html.lenis,html.lenis body{height:auto}
.lenis.lenis-smooth{scroll-behavior:auto!important}
.lenis.lenis-smooth [data-lenis-prevent]{overscroll-behavior:contain}
.lenis.lenis-stopped{overflow:hidden}
/* reveals */
[data-reveal]{opacity:0;transform:translateY(16px);transition:opacity .8s cubic-bezier(.22,1,.36,1),transform .8s cubic-bezier(.22,1,.36,1)}
[data-reveal].in{opacity:1;transform:none}
@media(prefers-reduced-motion:reduce){[data-reveal]{opacity:1;transform:none;transition:none}body{transition:none}}
/* Suisse Mono en etiquetas chicas (acento) */
.nav nav a,.filters button,.card-meta .typ,.phome-meta,.s-more span,.gsec,.meta dt,.next span,.striphint{font-family:var(--mono)}
a{color:inherit;text-decoration:none}
img{max-width:100%;display:block}
/* nav */
.nav{position:sticky;top:0;z-index:20;display:flex;justify-content:space-between;align-items:center;
padding:22px var(--pad);background:rgba(255,255,255,.92);backdrop-filter:blur(8px);border-bottom:1px solid transparent}
.nav .brand{font-family:var(--mono);font-weight:400;text-transform:lowercase;letter-spacing:.04em;font-size:17px;white-space:nowrap}
.navtoggle{display:none;flex-direction:column;justify-content:center;gap:6px;width:40px;height:40px;background:none;border:0;cursor:pointer;padding:0;margin-right:-8px}
.navtoggle span{display:block;width:22px;height:1.5px;background:var(--ink);transition:transform .25s,opacity .25s}
.nav.open .navtoggle span:nth-child(1){transform:translateY(3.75px) rotate(45deg)}
.nav.open .navtoggle span:nth-child(2){transform:translateY(-3.75px) rotate(-45deg)}
.nav nav{display:flex;gap:28px;align-items:center}
.nav nav a{font-size:13px;letter-spacing:.06em;text-transform:uppercase;color:var(--mut)}
.nav nav a:hover,.nav nav a.on{color:var(--ink)}
.nav .lang{display:inline-flex;gap:8px;margin-left:6px;padding-left:20px;border-left:1px solid var(--line)}
.nav .lang a{color:var(--mut)}
.nav .lang a.on{color:var(--ink)}
/* intro */
.intro{padding:clamp(48px,12vw,140px) var(--pad) clamp(32px,6vw,72px)}
.intro h1{font-weight:300;letter-spacing:-.02em;font-size:clamp(34px,6vw,68px);line-height:1.05}
.intro p{margin-top:22px;max-width:44ch;color:var(--mut);font-size:clamp(15px,1.4vw,18px)}
/* filters */
.filters{display:flex;gap:10px;flex-wrap:wrap;padding:0 var(--pad) 28px}
.filters button{border:1px solid var(--line);background:none;font:inherit;font-size:13px;letter-spacing:.04em;
padding:8px 16px;border-radius:100px;color:var(--mut);cursor:pointer;transition:.15s}
.filters button:hover{border-color:var(--ink);color:var(--ink)}
.filters button.on{background:var(--ink);border-color:var(--ink);color:#fff}
/* proyectos en la home: fila apilada + filmstrip horizontal */
.home-projects{padding-bottom:clamp(24px,4vw,56px)}
.phome{padding:clamp(28px,4vw,52px) 0;border-top:1px solid var(--line)}
.phome.hide{display:none}
.phome-head{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;padding:0 var(--pad) 18px}
.phome-title{display:flex;align-items:baseline;gap:16px;flex-wrap:wrap}
.phome-title h2{font-weight:400;font-size:clamp(20px,2.4vw,28px);letter-spacing:-.01em}
.phome-title .phome-meta{color:var(--mut);font-size:13px;letter-spacing:.02em}
.phome-title:hover h2{color:var(--mut)}
.strip-arrows{display:flex;gap:8px;flex:0 0 auto;align-self:center;align-items:center}
.sa{flex:0 0 auto;width:38px;height:38px;min-width:38px;padding:0;border:1px solid var(--line);background:none;border-radius:100px;font-size:18px;line-height:1;
color:var(--ink);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:.15s}
.sa:hover{background:var(--ink);color:#fff;border-color:var(--ink)}
.strip{display:flex;gap:clamp(12px,1.4vw,20px);overflow-x:auto;overflow-y:hidden;scroll-snap-type:x proximity;
padding:0 var(--pad);-webkit-overflow-scrolling:touch;scrollbar-width:none}
.strip::-webkit-scrollbar{display:none}
.s-item{flex:0 0 auto;margin:0;height:min(52vh,480px);background:#f3f3f3;overflow:hidden;scroll-snap-align:start}
.s-item img{height:100%;width:auto;display:block;transition:transform .6s ease;cursor:zoom-in}
.s-item:hover img{transform:scale(1.02)}
.s-more{flex:0 0 auto;height:min(52vh,480px);width:clamp(220px,26vw,320px);display:flex;flex-direction:column;
align-items:center;justify-content:center;gap:8px;border:1px solid var(--line);color:var(--ink);scroll-snap-align:start;transition:.2s}
.s-more:hover{background:var(--ink);color:#fff;border-color:var(--ink)}
.s-more span{font-size:12px;letter-spacing:.14em;text-transform:uppercase}
.s-more b{font-weight:400;font-size:15px}
/* studio teaser */
.studio{display:grid;grid-template-columns:1.2fr 1fr;gap:clamp(24px,4vw,64px);align-items:center;padding:clamp(48px,8vw,110px) var(--pad);border-top:1px solid var(--line)}
.studio-img{background:#f3f3f3;overflow:hidden;aspect-ratio:4/3}
.studio-img img{width:100%;height:100%;object-fit:cover}
.studio-txt h2{font-weight:300;font-size:clamp(26px,3.5vw,40px);letter-spacing:-.02em;margin-bottom:20px}
.studio-txt p{color:#444;font-size:clamp(15px,1.4vw,18px);max-width:46ch;margin-bottom:22px}
.txtlink{font-size:14px;letter-spacing:.02em;border-bottom:1px solid var(--ink);padding-bottom:2px}
.txtlink:hover{color:var(--mut);border-color:var(--mut)}
/* cta */
.cta{text-align:center;padding:clamp(64px,10vw,140px) var(--pad);border-top:1px solid var(--line)}
.cta h2{font-weight:300;font-size:clamp(28px,5vw,56px);letter-spacing:-.02em;margin-bottom:28px}
.cta-btn{display:inline-block;background:var(--ink);color:#fff;padding:15px 30px;border-radius:100px;font-size:14px;letter-spacing:.03em;transition:.15s}
.cta-btn:hover{opacity:.82}
/* project */
.project-head{padding:clamp(40px,8vw,96px) var(--pad) clamp(28px,4vw,48px);display:grid;grid-template-columns:minmax(0,1fr);gap:32px}
.project-head h1{font-weight:300;font-size:clamp(30px,5vw,56px);letter-spacing:-.02em}
.meta{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:20px;max-width:900px}
.meta dt{font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--mut);margin-bottom:4px}
.meta dd{font-size:15px}
.gallery{display:grid;grid-template-columns:1fr 1fr;gap:clamp(10px,1.4vw,20px);grid-auto-flow:row dense;padding:0 var(--pad)}
.g-item{margin:0;background:#f3f3f3;overflow:hidden}
.g-item img{width:100%;height:auto;cursor:zoom-in}
.gsec{grid-column:1 / -1;font-weight:400;font-size:12px;letter-spacing:.12em;text-transform:uppercase;color:var(--mut);margin:clamp(24px,4vw,48px) 0 2px;padding-top:clamp(16px,2vw,24px);border-top:1px solid var(--line)}
.gsec:first-child{margin-top:0;border-top:0;padding-top:0}
.g-item.landscape,.g-item.square{grid-column:1 / -1}
.g-item.portrait{grid-column:span 1}
.next{display:flex;flex-direction:column;gap:6px;padding:clamp(56px,9vw,120px) var(--pad);border-top:1px solid var(--line);margin-top:clamp(40px,6vw,80px)}
.next span{font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--mut)}
.next b{font-weight:400;font-size:clamp(22px,3.5vw,40px);letter-spacing:-.01em}
.next:hover b{color:var(--mut)}
/* pages */
.page{padding:clamp(48px,10vw,120px) var(--pad);max-width:820px}
.page h1{font-weight:300;font-size:clamp(30px,5vw,52px);letter-spacing:-.02em;margin-bottom:32px}
.prose p{margin-bottom:18px;font-size:clamp(15px,1.4vw,18px);color:#333;max-width:60ch}
.prose .big{font-size:clamp(22px,3vw,34px)}
.prose a{border-bottom:1px solid var(--line)}
.prose a:hover{border-color:var(--ink)}
/* contact form */
.contact .lead{font-family:'Aktiv Grotesk',sans-serif;font-size:clamp(17px,2vw,22px);font-weight:300;max-width:44ch;color:var(--ink);line-height:1.4;margin-bottom:clamp(32px,5vw,52px)}
.cform{display:flex;flex-direction:column;gap:22px;max-width:520px}
.cform .field{display:flex;flex-direction:column;gap:8px}
.cform .field span{font-family:'Suisse Int Mono','ui-monospace',monospace;font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--mut)}
.cform input,.cform textarea{width:100%;font-family:'Aktiv Grotesk',sans-serif;font-size:16px;color:var(--ink);background:transparent;border:0;border-bottom:1px solid var(--line);padding:10px 0;transition:border-color .15s}
.cform textarea{resize:vertical;line-height:1.5}
.cform input:focus,.cform textarea:focus{outline:none;border-bottom-color:var(--ink)}
.cform .cbtn{align-self:flex-start;margin-top:6px;border:0;cursor:pointer;font-family:inherit}
.cform.sent .field,.cform.sent .cbtn{display:none}
.cform-ok{font-family:'Aktiv Grotesk',sans-serif;font-size:clamp(17px,2vw,20px);font-weight:300;color:var(--ink)}
.cform-err{color:#b23b1e;font-size:15px}
.cform-err a{border-bottom:1px solid currentColor}
.contact-alt{margin-top:clamp(36px,6vw,60px);font-family:'Suisse Int Mono','ui-monospace',monospace;font-size:12px;letter-spacing:.04em;color:var(--mut)}
.contact-alt a{color:var(--ink);border-bottom:1px solid var(--line)}
.contact-alt a:hover{border-color:var(--ink)}
/* project description */
.project-desc{max-width:62ch;color:#555;font-size:clamp(15px,1.4vw,17px);margin-top:6px}
/* about */
.about-lead{padding:clamp(48px,10vw,120px) var(--pad) clamp(28px,4vw,48px)}
.about-lead .kicker{font-family:var(--mono);font-size:12px;letter-spacing:.14em;text-transform:uppercase;color:var(--mut)}
.about-lead h1{font-weight:400;font-size:clamp(28px,5vw,58px);letter-spacing:-.02em;line-height:1.14;max-width:20ch;margin-top:16px}
.about-hero{margin:0;padding:0 var(--pad)}
.about-hero img{width:100%;aspect-ratio:3/2;object-fit:cover;background:#f3f3f3;display:block}
.about-body{display:grid;grid-template-columns:1fr 2fr;gap:clamp(24px,5vw,80px);padding:clamp(48px,7vw,96px) var(--pad);align-items:start}
.about-aside{position:sticky;top:96px}
.about-text p{font-size:clamp(16px,1.6vw,20px);color:#333;margin-bottom:20px;max-width:60ch;line-height:1.6}
.about-text .txtlink{font-size:14px;margin-top:6px;display:inline-block;border-bottom:1px solid var(--ink);padding-bottom:2px}
.about-text .txtlink:hover{color:var(--mut);border-color:var(--mut)}
.about-figure{margin:0 var(--pad) clamp(48px,8vw,110px)}
.about-figure img{width:min(560px,100%);aspect-ratio:4/5;object-fit:cover;background:#f3f3f3;display:block}
/* services */
.services-intro .lead{font-family:'Aktiv Grotesk',sans-serif;font-size:clamp(18px,2.2vw,26px);font-weight:300;max-width:42ch;color:var(--ink);margin-top:10px;line-height:1.35}
.svc-list{padding:clamp(16px,3vw,40px) 0}
.svc{display:grid;grid-template-columns:1fr 1fr;align-items:center;gap:clamp(24px,4vw,64px);padding:clamp(22px,3.5vw,52px) var(--pad)}
.svc.rev .svc-img{order:2}
.svc-img{overflow:hidden;background:#f3f3f3;aspect-ratio:4/3}
.svc-img img{width:100%;height:100%;object-fit:cover;transition:transform .6s ease}
.svc:hover .svc-img img{transform:scale(1.03)}
.svc-num{font-family:var(--mono);font-size:12px;color:var(--mut);letter-spacing:.1em}
.svc-txt h2{font-weight:500;font-size:clamp(22px,2.6vw,30px);letter-spacing:-.01em;margin:10px 0 12px}
.svc-txt p{color:#555;max-width:44ch;font-size:clamp(15px,1.4vw,17px)}
.svc-local{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:20px;padding:clamp(32px,5vw,64px) var(--pad);border-top:1px solid var(--line)}
.svc-local p{color:var(--mut);max-width:54ch;font-size:14px}
/* FAQ (editorial: encabezado + acordeón numerado) */
.faq{display:grid;grid-template-columns:1fr 1.6fr;gap:clamp(24px,5vw,80px);align-items:start;padding:clamp(56px,9vw,120px) var(--pad);border-top:1px solid var(--line)}
.faq-head{position:sticky;top:96px}
.faq-kicker{font-family:var(--mono);font-size:12px;letter-spacing:.14em;color:var(--mut);text-transform:uppercase}
.faq-head h2{font-weight:500;font-size:clamp(28px,4vw,46px);letter-spacing:-.02em;line-height:1.05;margin:12px 0 20px}
.faq-head .txtlink{font-size:14px}
.qa{display:flex;gap:18px;padding:26px 0;border-top:1px solid var(--line)}
.qa:first-child{border-top:0;padding-top:4px}
.faq-n{font-family:var(--mono);font-size:12px;color:var(--mut);flex:0 0 auto;padding-top:5px}
.qa-body h3{font-weight:500;font-size:clamp(17px,1.7vw,21px);letter-spacing:-.01em;margin-bottom:9px}
.qa-body p{color:#666;font-size:clamp(15px,1.4vw,16px);max-width:60ch;line-height:1.6}
/* footer */
.foot{border-top:1px solid var(--line);padding:clamp(48px,7vw,84px) var(--pad) clamp(26px,3vw,36px);color:var(--mut);font-size:14px}
.foot-top{display:grid;grid-template-columns:1.6fr 1fr 1fr;gap:clamp(28px,4vw,56px);padding-bottom:clamp(40px,6vw,72px)}
.foot-brand .brand{font-family:var(--mono);text-transform:lowercase;letter-spacing:.04em;font-size:17px;color:var(--ink)}
.foot-brand p{margin-top:14px;max-width:34ch;line-height:1.6}
.foot-col{display:flex;flex-direction:column;gap:11px}
.foot-lbl{font-family:var(--mono);font-size:11px;text-transform:uppercase;letter-spacing:.12em;color:var(--mut);margin-bottom:4px}
.foot-col a{color:#555}
.foot-col a:hover{color:var(--ink)}
.foot-bottom{display:flex;justify-content:space-between;flex-wrap:wrap;gap:12px;padding-top:22px;border-top:1px solid var(--line);font-size:12px}
/* lightbox */
.lb{position:fixed;inset:0;background:rgba(255,255,255,.98);display:none;align-items:center;justify-content:center;z-index:50;padding:clamp(16px,4vw,64px)}
.lb.on{display:flex}
.lb img{max-width:100%;max-height:90vh;object-fit:contain;cursor:e-resize}
.lb-nav{position:absolute;top:50%;transform:translateY(-50%);width:52px;height:52px;border:1px solid var(--line);
background:rgba(255,255,255,.9);border-radius:100px;font-size:24px;line-height:1;color:var(--ink);cursor:pointer;
display:flex;align-items:center;justify-content:center;transition:.15s}
.lb-nav:hover{background:var(--ink);color:#fff;border-color:var(--ink)}
.lb-prev{left:clamp(12px,3vw,40px)}
.lb-next{right:clamp(12px,3vw,40px)}
.lb-close{position:absolute;top:clamp(12px,3vw,32px);right:clamp(12px,3vw,32px);width:44px;height:44px;border:none;
background:none;font-size:30px;line-height:1;color:var(--ink);cursor:pointer;opacity:.6;transition:.15s}
.lb-close:hover{opacity:1}
.lb-count{position:absolute;bottom:clamp(14px,3vw,32px);left:50%;transform:translateX(-50%);font-family:var(--mono);
font-size:12px;letter-spacing:.1em;color:var(--mut)}
.lb-more{display:none;flex-direction:column;align-items:center;gap:18px;text-align:center}
.lb-more.on{display:flex}
.lb-more span{font-family:var(--mono);font-size:12px;letter-spacing:.14em;text-transform:uppercase;color:var(--mut)}
.lb-more b{font-weight:500;font-size:clamp(24px,4vw,44px);letter-spacing:-.01em}
.lb-more-btn{margin-top:6px;background:var(--ink);color:#fff;padding:14px 30px;border-radius:100px;font-size:14px;letter-spacing:.03em;transition:.15s}
.lb-more-btn:hover{opacity:.82}
@media(max-width:720px){.lb-nav{display:none}}
/* responsive */
@media(max-width:720px){
.gallery{grid-template-columns:1fr}
.g-item.portrait{grid-column:1 / -1}
.meta{grid-template-columns:1fr 1fr;gap:16px}
.s-item,.s-more{height:46vh}
.s-more{width:74vw}
.strip .s-item.s-lead{order:-1}
.strip-arrows{display:none}
.studio{grid-template-columns:1fr;gap:24px}
.svc{grid-template-columns:1fr;gap:16px}
.svc.rev .svc-img{order:0}
.faq{grid-template-columns:1fr;gap:8px}
.faq-head{position:static}
.foot-top{grid-template-columns:1fr 1fr;gap:28px 20px}
.foot-brand{grid-column:1 / -1}
.about-body{grid-template-columns:1fr;gap:16px}
.about-aside{position:static}
/* menú móvil (hamburguesa) */
.nav{padding:16px var(--pad)}
.navtoggle{display:flex}
.nav nav{position:absolute;top:100%;left:0;right:0;flex-direction:column;align-items:stretch;gap:0;
background:rgba(255,255,255,.98);backdrop-filter:blur(10px);border-bottom:1px solid var(--line);
padding:6px var(--pad) 20px;opacity:0;visibility:hidden;transform:translateY(-6px);transition:opacity .2s,transform .2s,visibility .2s}
.nav.open nav{opacity:1;visibility:visible;transform:none}
.nav nav a{font-size:16px;padding:15px 0;border-bottom:1px solid var(--line)}
.nav .lang{border-left:0;margin:14px 0 0;padding:0;gap:20px}
.nav .lang a{font-size:14px}
}
/* peso de titulares (más bold) */
.intro h1,.phome-title h2,.studio-txt h2,.cta h2,.project-head h1,.page h1,.next b{font-weight:500}
