/* =========================================================
   SIMATRI — A Arte do Micrómetro
   ========================================================= */
:root{
  --bg:#08080a;
  --bg-rgb:8,8,10;
  --bg-2:#0f0f12;
  --bg-deep:#050506;
  --ink:#eeebe5;
  --ink-rgb:238,235,229;
  --ink-2:#a9a59e;
  --ink-3:#5d5a56;
  --tile:#111;
  --cur:#fff;
  --cur-ink:#000;
  --grain:.07;
  --line:rgba(238,235,229,.12);
  --red:#ff2800;
  --red-2:#c00a27;
  --serif:"Instrument Serif", "Times New Roman", serif;
  --sans:"Inter Tight", system-ui, -apple-system, "Segoe UI", sans-serif;
  --mono:"JetBrains Mono", ui-monospace, Consolas, monospace;
  --pad:clamp(16px, 4vw, 64px);
  --ease:cubic-bezier(.19,1,.22,1);
  --ease-io:cubic-bezier(.77,0,.175,1);
}
:root[data-theme="light"]{
  --bg:#f5f3ef;
  --bg-rgb:245,243,239;
  --bg-2:#eceae4;
  --bg-deep:#edebe6;
  --ink:#15161a;
  --ink-rgb:21,22,26;
  --ink-2:#5d5b56;
  --ink-3:#8c8882;
  --tile:#dedbd5;
  --cur:#15161a;
  --cur-ink:#fff;
  --grain:.035;
  --line:rgba(21,22,26,.16);
}
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
html{-webkit-text-size-adjust:100%;scroll-behavior:auto}
body{background:var(--bg);color:var(--ink);font-family:var(--sans);font-size:16px;line-height:1.5;overflow-x:hidden;-webkit-font-smoothing:antialiased}
body.is-loading{overflow:hidden}
body.no-scroll{overflow:hidden}
img,video{display:block;max-width:100%}
a{color:inherit;text-decoration:none}
button{font:inherit;color:inherit;background:none;border:0;cursor:pointer}
::selection{background:var(--red);color:#000}
.mono{font-family:var(--mono);font-size:11px;letter-spacing:.08em;text-transform:uppercase}
em{font-family:var(--serif);font-style:italic;font-weight:400;letter-spacing:-.01em}
.label{display:flex;gap:14px;align-items:center;color:var(--ink-2);margin-bottom:clamp(28px,5vw,64px)}
.label span{color:var(--red)}
.label::after{content:"";flex:0 0 60px;height:1px;background:var(--line)}
.h2{font-size:clamp(40px,7vw,112px);line-height:.92;font-weight:600;letter-spacing:-.045em}
.h2 em{color:var(--red);font-size:1.06em}
section{position:relative}

/* ---------- grain ---------- */
.grain{position:fixed;inset:-50%;z-index:90;pointer-events:none;opacity:var(--grain);
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='200' height='200'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
  will-change:transform;animation:grain 1.6s steps(5) infinite}
@keyframes grain{0%{transform:translate(0,0)}20%{transform:translate(-5%,3%)}40%{transform:translate(4%,-6%)}60%{transform:translate(-3%,5%)}80%{transform:translate(6%,2%)}100%{transform:translate(0,0)}}

/* ---------- loader ---------- */
.loader{position:fixed;inset:0;z-index:200;display:grid;place-items:center;background:var(--bg);overflow:hidden}
.loader__grid{position:absolute;inset:0;opacity:.35;
  background-image:linear-gradient(var(--line) 1px,transparent 1px),linear-gradient(90deg,var(--line) 1px,transparent 1px);
  background-size:48px 48px;mask-image:radial-gradient(circle at 50% 50%,#000,transparent 70%)}
.loader__top,.loader__bottom{position:absolute;left:var(--pad);right:var(--pad);display:flex;justify-content:space-between;gap:16px;color:var(--ink-2)}
.loader__top{top:28px}.loader__bottom{bottom:28px}
.loader__count{position:relative;font-family:var(--mono);font-weight:300;font-size:clamp(56px,13vw,200px);letter-spacing:-.05em;line-height:1;display:flex;align-items:baseline;gap:.15em}
.loader__count small{font-size:.22em;color:var(--red);letter-spacing:0}
.loader__bar{position:absolute;left:var(--pad);right:var(--pad);bottom:72px;height:1px;background:var(--line)}
.loader__bar i{position:absolute;inset:0;background:var(--red);transform-origin:left;transform:scaleX(0)}
.loader__curtain{position:absolute;left:0;right:0;height:50.5%;background:var(--bg);transform:translateY(0);z-index:3;pointer-events:none;opacity:0}
.loader__curtain--a{top:0}.loader__curtain--b{bottom:0}
.loader.is-done{background:transparent;pointer-events:none}
.loader.is-done > :not(.loader__curtain){opacity:0;transition:opacity .35s}
.loader.is-done .loader__curtain{opacity:1;transition:transform 1.3s var(--ease-io) .2s}
.loader.is-done .loader__curtain--a{transform:translateY(-101%)}
.loader.is-done .loader__curtain--b{transform:translateY(101%)}

/* ---------- cursor ---------- */
.cursor{position:fixed;left:0;top:0;z-index:150;pointer-events:none;mix-blend-mode:difference;display:none}
.has-cursor .cursor{display:block}
.has-cursor, .has-cursor a, .has-cursor button, .has-cursor [data-cursor]{cursor:none}
.cursor__dot{position:absolute;will-change:transform;width:6px;height:6px;margin:-3px 0 0 -3px;border-radius:50%;background:var(--cur)}
.cursor__ring{position:absolute;will-change:transform;width:40px;height:40px;margin:-20px 0 0 -20px;border:1px solid var(--cur);border-radius:50%;transition:width .45s var(--ease),height .45s var(--ease),margin .45s var(--ease),background .3s,border-color .3s}
.cursor__ring::before,.cursor__ring::after{content:"";position:absolute;background:var(--cur);opacity:.75}
.cursor__ring::before{left:50%;top:-8px;bottom:-8px;width:1px;transform:translateX(-.5px);opacity:.5}
.cursor__ring::after{top:50%;left:-8px;right:-8px;height:1px;transform:translateY(-.5px);opacity:.5}
.cursor__label{position:absolute;will-change:transform;transform:translate(-50%,-50%);color:var(--cur-ink);font-size:10px;white-space:nowrap;opacity:0;transition:opacity .25s}
.cursor.is-big .cursor__ring{width:96px;height:96px;margin:-48px 0 0 -48px;background:var(--cur);border-color:var(--cur)}
.cursor.is-big .cursor__ring::before,.cursor.is-big .cursor__ring::after{opacity:0}
.cursor.is-big .cursor__label{opacity:1}
.cursor.is-big .cursor__dot{opacity:0}
.cursor.is-hover .cursor__ring{width:64px;height:64px;margin:-32px 0 0 -32px}
.cursor.is-down .cursor__ring{width:28px;height:28px;margin:-14px 0 0 -14px}

/* ---------- nav ---------- */
.nav{position:fixed;top:0;left:0;right:0;z-index:100;display:flex;align-items:center;gap:32px;padding:18px var(--pad);mix-blend-mode:difference;transition:transform .6s var(--ease)}
.nav.is-hidden{transform:translateY(-110%)}
.nav__logo img{height:34px;width:auto}
.nav__links{display:flex;gap:28px;margin-left:auto;font-size:14px;font-weight:500}
.nav__links a{position:relative;padding:4px 0}
.nav__links a::after{content:"";position:absolute;left:0;right:0;bottom:0;height:1px;background:currentColor;transform:scaleX(0);transform-origin:right;transition:transform .5s var(--ease)}
.nav__links a:hover::after{transform:scaleX(1);transform-origin:left}
.nav__readout{display:flex;gap:16px;color:#bbb;min-width:210px;justify-content:flex-end}
.nav__readout b{font-weight:400;color:var(--ink)}
.nav__burger{display:none;width:44px;height:44px;position:relative;margin-left:auto}
.nav__burger span{position:absolute;left:10px;right:10px;height:1.5px;background:var(--ink);transition:transform .5s var(--ease)}
.nav__burger span:first-child{top:18px}.nav__burger span:last-child{top:25px}
.menu-open .nav__burger span:first-child{transform:translateY(3.5px) rotate(45deg)}
.menu-open .nav__burger span:last-child{transform:translateY(-3.5px) rotate(-45deg)}
.menu-open .nav{mix-blend-mode:normal}
.menu-open .nav__logo img{filter:invert(1)}
.menu-open .nav__burger span{background:#000}
.menu{position:fixed;inset:0;z-index:99;background:var(--red);color:#000;display:flex;flex-direction:column;justify-content:center;padding:var(--pad);clip-path:circle(0% at calc(100% - 40px) 40px);transition:clip-path .9s var(--ease-io);visibility:hidden}
.menu-open .menu{clip-path:circle(150% at calc(100% - 40px) 40px);visibility:visible}
.menu__inner{display:flex;flex-direction:column}
.menu__inner a{font-size:clamp(44px,13vw,96px);font-weight:700;letter-spacing:-.05em;line-height:1.02;display:flex;align-items:baseline;gap:14px}
.menu__inner em{font-size:.3em;font-family:var(--mono);font-style:normal}
.menu__foot{position:absolute;left:var(--pad);right:var(--pad);bottom:28px;display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap}

/* ---------- hero ---------- */
.hero{height:100vh;height:100svh;min-height:560px;overflow:hidden;display:flex;flex-direction:column;justify-content:flex-end;padding:0 var(--pad) clamp(28px,5vh,56px)}
.hero__canvas{position:absolute;inset:0;width:100%;height:100%}
.hero__vignette{position:absolute;inset:0;pointer-events:none;background:radial-gradient(ellipse at 50% 40%,transparent 30%,rgba(var(--bg-rgb),.65) 75%,var(--bg) 100%),linear-gradient(transparent 55%,rgba(var(--bg-rgb),.9))}
.hero__meta{position:absolute;top:96px;left:var(--pad);display:flex;flex-direction:column;gap:6px;color:var(--ink-2)}
.hero__title{position:relative;font-size:calc(clamp(56px,12.6vw,230px) * var(--hs,1));line-height:.84;font-weight:700;letter-spacing:-.065em;margin-bottom:clamp(24px,4vh,48px)}
.hero__title .line{display:block;overflow:hidden;padding-bottom:.04em}
.hero__title .w{display:inline-block;transform:translateY(110%);transition:transform 1.4s var(--ease)}
.hero__title .line:nth-child(2) .w{transition-delay:.12s}
.is-ready .hero__title .w{transform:none}
.hero__title em{color:var(--red);font-size:1.08em;letter-spacing:-.03em;padding-right:.02em}
.hero__foot{position:relative;display:flex;align-items:flex-end;justify-content:space-between;gap:32px;flex-wrap:wrap}
.hero__lede{max-width:440px;color:var(--ink-2);font-size:clamp(15px,1.25vw,18px)}
.hero__scroll{position:absolute;right:var(--pad);top:50%;writing-mode:vertical-rl;display:flex;align-items:center;gap:12px;color:var(--ink-2)}
.hero__scroll i{width:1px;height:64px;background:var(--line);position:relative;overflow:hidden}
.hero__scroll i::after{content:"";position:absolute;left:0;right:0;height:40%;background:var(--red);animation:drip 2s var(--ease-io) infinite}
@keyframes drip{0%{transform:translateY(-100%)}100%{transform:translateY(260%)}}
.hero__spec{position:absolute;top:96px;right:var(--pad);display:flex;gap:28px;text-align:right}
.hero__spec small{display:block;color:var(--ink-3);font-size:10px}
.hero__spec b{font-weight:400;font-size:13px}
.hero > *:not(canvas):not(.hero__vignette){opacity:0;transition:opacity 1.2s var(--ease) .5s}
.is-ready .hero > *:not(canvas):not(.hero__vignette){opacity:1}
.is-ready .hero__title{opacity:1}

/* ---------- button ---------- */
.btn{position:relative;display:inline-flex;align-items:center;gap:18px;padding:18px 18px 18px 28px;border:1px solid var(--line);border-radius:999px;font-weight:500;overflow:hidden;isolation:isolate;transition:color .5s var(--ease),border-color .5s}
.btn::before{content:"";position:absolute;inset:0;background:var(--ink);border-radius:inherit;transform:translateY(101%);transition:transform .6s var(--ease);z-index:-1}
.btn:hover{color:var(--bg);border-color:var(--ink)}
.btn:hover::before{transform:none}
.btn i{font-style:normal;display:grid;place-items:center;width:34px;height:34px;border-radius:50%;background:var(--red);color:#000;transition:transform .6s var(--ease)}
.btn:hover i{transform:rotate(-45deg)}

/* ---------- ticker ---------- */
.ticker{border-block:1px solid var(--line);padding:22px 0;overflow:hidden;background:var(--bg)}
.ticker__track,.srow{display:flex;width:max-content;will-change:transform}
.ticker__track span{font-size:clamp(20px,2.4vw,34px);font-weight:500;letter-spacing:-.03em;padding:0 28px;white-space:nowrap}
.ticker__track b{color:var(--red);font-weight:400;align-self:center}

/* ---------- manifesto ---------- */
.manifesto{padding:clamp(96px,16vw,220px) var(--pad)}
.manifesto__text{font-size:clamp(28px,4.4vw,72px);line-height:1.06;font-weight:500;letter-spacing:-.04em;max-width:1400px}
.manifesto__text .mw{opacity:.14;transition:opacity .35s,color .35s}
.manifesto__text .mw.on{opacity:1}
.manifesto__text .mw.accent.on{color:var(--red);font-family:var(--serif);font-style:italic;font-weight:400}
.manifesto__cols{display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(24px,4vw,64px);margin-top:clamp(64px,10vw,140px);border-top:1px solid var(--line);padding-top:32px}
.mcol small{color:var(--red);display:block;margin-bottom:14px}
.mcol p{color:var(--ink-2);max-width:360px}

/* ---------- reveal ---------- */
.reveal{opacity:0;transform:translateY(40px);transition:opacity 1.1s var(--ease),transform 1.1s var(--ease)}
.reveal.in{opacity:1;transform:none}

/* ---------- infinite gallery ---------- */
.gallery{padding-top:clamp(40px,6vw,80px)}
.gallery__head{padding:0 var(--pad) clamp(32px,4vw,56px);display:grid;grid-template-columns:1fr auto;align-items:end;gap:24px}
.gallery__head .label{grid-column:1/-1;margin-bottom:24px}
.gallery__hint{color:var(--ink-2);text-align:right}
.hint-touch{display:none}
@media (hover:none){.hint-desk{display:none}.hint-touch{display:inline}}
.inf{position:relative;height:100vh;height:100svh;min-height:520px;overflow:hidden;background:var(--bg-deep);touch-action:none;user-select:none;-webkit-user-select:none;border-block:1px solid var(--line)}
.inf.is-grab{cursor:grabbing}
.inf__world{position:absolute;inset:0;transform-origin:50% 50%;will-change:transform}
.tile{position:absolute;left:0;top:0;overflow:hidden;background:var(--tile);will-change:transform;contain:layout paint}
.tile img{width:100%;height:100%;object-fit:cover;transform:scale(1.12);transition:transform 1.2s var(--ease),filter .8s,opacity .8s;filter:grayscale(.18) contrast(1.06) brightness(.95) saturate(.9);opacity:0;pointer-events:none;-webkit-user-drag:none}
.tile img.ld{opacity:1}
.tile::after{content:attr(data-n);position:absolute;left:10px;bottom:8px;font-family:var(--mono);font-size:10px;letter-spacing:.08em;color:var(--ink);opacity:0;transition:opacity .4s}
.tile::before{content:"";position:absolute;inset:0;z-index:1;border:1px solid transparent;transition:border-color .4s;pointer-events:none}
.tile.is-hot img{transform:scale(1.02);filter:none}
.tile.is-hot::after{opacity:1}
.tile.is-hot::before{border-color:var(--red)}
.inf.has-hot .tile:not(.is-hot) img{filter:grayscale(1) brightness(.4)}
.inf__edge{position:absolute;left:0;right:0;height:18%;pointer-events:none;z-index:2}
.inf__edge--t{top:0;background:linear-gradient(var(--bg-deep),transparent)}
.inf__edge--b{bottom:0;background:linear-gradient(transparent,var(--bg-deep))}
.inf__hud{position:absolute;z-index:5;left:var(--pad);right:var(--pad);bottom:22px;display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;pointer-events:none}
.inf__hud > *{pointer-events:auto}
.inf__filters{display:flex;gap:4px;padding:4px;border:1px solid var(--line);border-radius:999px;background:rgba(var(--bg-rgb),.7);backdrop-filter:blur(7px);-webkit-backdrop-filter:blur(7px);flex-wrap:wrap}
.inf__filters button{padding:9px 14px;border-radius:999px;font-size:10px;letter-spacing:.1em;color:var(--ink-2);transition:background .4s,color .4s}
.inf__filters button:hover{color:var(--ink)}
.inf__filters button.is-on{background:var(--ink);color:var(--bg)}
.inf__coords{display:flex;gap:18px;color:var(--ink-3)}
.inf__coords b{color:var(--ink);font-weight:400;display:inline-block;min-width:4ch}
.inf__full{padding:12px 18px;border:1px solid var(--line);border-radius:999px;background:rgba(var(--bg-rgb),.7);backdrop-filter:blur(7px);-webkit-backdrop-filter:blur(7px);font-size:10px;letter-spacing:.1em;transition:background .4s,color .4s}
.inf__full:hover{background:var(--red);color:#000;border-color:var(--red)}
.inf__full .t-close{display:none}
.inf.is-full .inf__full .t-open{display:none}.inf.is-full .inf__full .t-close{display:inline}
.inf.is-full{position:fixed;inset:0;z-index:120;height:100%;border:0}
.inf__caption{position:absolute;z-index:5;left:var(--pad);top:26px;display:flex;align-items:baseline;gap:14px;pointer-events:none;opacity:0;transform:translateY(8px);transition:opacity .4s,transform .5s var(--ease)}
.inf.has-hot .inf__caption{opacity:1;transform:none}
.inf__caption span{color:var(--red)}
.inf__caption strong{font-size:clamp(22px,2.6vw,40px);letter-spacing:-.04em;font-weight:600}
.inf__caption em{color:var(--ink-2);font-size:clamp(18px,2vw,28px)}
.inf.is-full .inf__caption{top:84px}

/* strip */
.strip{padding:clamp(40px,6vw,80px) 0;overflow:hidden}
.strip__track{display:flex;gap:14px;width:max-content;will-change:transform}
.strip__item{flex:0 0 auto;height:clamp(140px,20vw,280px);aspect-ratio:4/5;overflow:hidden;border-radius:2px;transform-origin:50% 50%}
.strip__item:nth-child(3n+2){aspect-ratio:16/10}
.strip__item:nth-child(4n+3){aspect-ratio:1}
.strip__item img{width:100%;height:100%;object-fit:cover;filter:grayscale(.2) brightness(.85)}

/* ---------- numbers ---------- */
.numbers{padding:clamp(96px,12vw,180px) var(--pad)}
.numbers__grid{display:grid;grid-template-columns:repeat(4,1fr);border-top:1px solid var(--line)}
.num{padding:32px 24px 32px 0;border-right:1px solid var(--line)}
.num + .num{padding-left:24px}
.num:last-child{border-right:0}
.num b{display:block;font-weight:600;font-size:clamp(56px,8vw,140px);letter-spacing:-.06em;line-height:.9;font-variant-numeric:tabular-nums}
.num b i{font-style:normal;color:var(--red);font-weight:300}
.num small{display:block;font-family:var(--serif);font-style:italic;font-size:clamp(20px,2vw,30px);color:var(--ink-2);margin:6px 0 20px}
.num p{color:var(--ink-2);font-size:14px;max-width:240px}

/* ---------- services ---------- */
.services{padding:clamp(40px,6vw,80px) var(--pad) clamp(96px,12vw,180px)}
.services .h2{margin-bottom:clamp(48px,7vw,96px)}
.svc{list-style:none;border-top:1px solid var(--line)}
.svc__row{position:relative;display:grid;grid-template-columns:80px 1.2fr 1fr 40px;align-items:center;gap:24px;padding:clamp(24px,3.2vw,44px) 0;border-bottom:1px solid var(--line);overflow:hidden;isolation:isolate}
.svc__row::before{content:"";position:absolute;inset:0;background:var(--red);transform:scaleY(0);transform-origin:bottom;transition:transform .7s var(--ease);z-index:-1}
.svc__row h3{font-size:clamp(28px,4.2vw,64px);font-weight:600;letter-spacing:-.045em;line-height:1;transition:transform .7s var(--ease)}
.svc__row p{color:var(--ink-2);max-width:420px;transition:color .5s}
.svc__row i{font-style:normal;font-size:28px;transition:transform .7s var(--ease)}
.svc__n{color:var(--red);transition:color .5s}
@media (hover:hover){
  .svc__row:hover::before{transform:scaleY(1)}
  .svc__row:hover{color:#000}
  .svc__row:hover p,.svc__row:hover .svc__n{color:#000}
  .svc__row:hover h3{transform:translateX(24px)}
  .svc__row:hover i{transform:rotate(-45deg)}
}
.svc__float{position:fixed;left:0;top:0;width:clamp(240px,24vw,380px);aspect-ratio:4/5;pointer-events:none;z-index:40;opacity:0;transition:opacity .4s;overflow:hidden;border-radius:4px}
.svc__float.on{opacity:1}
.svc__img{position:absolute;inset:-10%;background-size:cover;background-position:center;transition:background-image .2s}

/* ---------- tech ---------- */
.tech__stage{height:220vh;position:relative}
.tech__pin{position:sticky;top:0;height:100vh;height:100svh;display:grid;place-items:center;overflow:hidden}
.tech__hud{position:absolute;left:var(--pad);right:var(--pad);bottom:28px;display:flex;justify-content:space-between;color:var(--ink-2);z-index:2}
.tech__hud span:first-child{color:var(--red)}
.tech__media{position:absolute;inset:0;clip-path:inset(22% 30% 22% 30% round 8px);will-change:clip-path}
.tech__media video{width:100%;height:100%;object-fit:cover;filter:saturate(.6) contrast(1.1) brightness(.7)}
.tech__overlay{position:relative;z-index:2;text-align:center;padding:0 var(--pad);pointer-events:none}
.tech__overlay .label{justify-content:center}
.tech__overlay .label::after{display:none}
.tech__title{font-size:clamp(48px,10vw,176px);font-weight:700;letter-spacing:-.06em;line-height:.88;mix-blend-mode:difference}
.tech__title em{color:var(--red);mix-blend-mode:normal}
.tech__cards{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;padding:clamp(48px,6vw,96px) var(--pad) clamp(96px,12vw,160px)}
.tcard{background:var(--bg-2);border:1px solid var(--line);border-radius:4px;overflow:hidden;display:flex;flex-direction:column;transition:border-color .5s,transform .7s var(--ease)}
.tcard:hover{border-color:rgba(255,40,0,.6);transform:translateY(-6px)}
.tcard video,.tcard img{width:100%;aspect-ratio:4/3;object-fit:cover;filter:grayscale(.3)}
.tcard > div{padding:22px 22px 28px}
.tcard span{color:var(--red)}
.tcard h3{font-size:22px;letter-spacing:-.03em;font-weight:600;margin:10px 0 8px}
.tcard p{color:var(--ink-2);font-size:14px}

/* ---------- sectors ---------- */
.sectors{padding:0 0 clamp(96px,12vw,160px);overflow:hidden}
.sectors .label{padding:0 var(--pad)}
.srow span{font-size:clamp(56px,11vw,190px);font-weight:700;letter-spacing:-.06em;line-height:1;padding:0 .25em;white-space:nowrap}
.srow span.o{color:transparent;-webkit-text-stroke:1px var(--ink-2);font-family:var(--serif);font-style:italic;font-weight:400;letter-spacing:-.02em}
.srow span:hover{color:var(--red);-webkit-text-stroke-color:var(--red)}

/* ---------- contact ---------- */
.contact{padding:clamp(96px,12vw,180px) var(--pad);border-top:1px solid var(--line);overflow:hidden}
.contact__title{font-size:clamp(56px,12.5vw,220px);line-height:.86;font-weight:700;letter-spacing:-.065em}
.contact__title em{color:var(--red);font-size:1.06em}
.contact__cta{position:relative;flex:0 0 auto;width:clamp(140px,16vw,240px);aspect-ratio:1;border-radius:50%;background:var(--red);color:#000;display:grid;place-items:center;font-weight:600;font-size:clamp(14px,1.2vw,18px);text-align:center;transition:background .4s,color .4s}
.contact__cta:hover{background:var(--ink)}
.contact__cta span{display:block;padding:0 20px}
.contact__grid{display:grid;grid-template-columns:repeat(4,1fr);gap:24px;margin-top:clamp(64px,9vw,128px);border-top:1px solid var(--line);padding-top:28px}
.contact__grid small{color:var(--ink-3);display:block;margin-bottom:12px}
.contact__grid p{font-size:16px}
.contact__grid a{background:linear-gradient(currentColor,currentColor) 0 100%/0 1px no-repeat;transition:background-size .5s var(--ease)}
.contact__grid a:hover{background-size:100% 1px;color:var(--red)}

/* ---------- footer ---------- */
.foot{position:relative;padding:48px var(--pad) 0;border-top:1px solid var(--line);overflow:hidden}
.foot__logo{height:40px;width:auto;margin-bottom:32px}
.foot__links{display:flex;flex-wrap:wrap;gap:12px 28px;color:var(--ink-2)}
.foot__links a:hover{color:var(--red)}
.foot__base{display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap;color:var(--ink-3);padding:28px 0;margin-top:40px;border-top:1px solid var(--line)}
.foot__giant{font-size:20.5vw;font-weight:800;letter-spacing:-.07em;line-height:.74;text-align:center;color:transparent;-webkit-text-stroke:1px rgba(var(--ink-rgb),.18);user-select:none;margin-bottom:-1vw;background:linear-gradient(var(--red),var(--red)) 0 100%/100% 0 no-repeat;-webkit-background-clip:text;background-clip:text;transition:background-size 1.4s var(--ease)}
.foot:hover .foot__giant{background-size:100% 100%}

/* ---------- lightbox ---------- */
.lb{position:fixed;inset:0;z-index:160;display:grid;place-items:center;visibility:hidden;pointer-events:none}
.lb.open{visibility:visible;pointer-events:auto}
.lb__bg{position:absolute;inset:0;background:rgba(var(--bg-rgb),.94);backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px);opacity:0;transition:opacity .6s var(--ease)}
.lb.open .lb__bg{opacity:1}
.lb__fig{position:relative;z-index:1;display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:40px;align-items:end;width:min(1400px,92vw)}
.lb__frame{overflow:hidden;clip-path:inset(50% 50% 50% 50%);transition:clip-path 1s var(--ease-io)}
.lb.open .lb__frame{clip-path:inset(0 0 0 0)}
.lb__frame img{width:100%;max-height:78vh;object-fit:contain;transform:scale(1.15);transition:transform 1.4s var(--ease),opacity .35s}
.lb.open .lb__frame img{transform:none}
.lb__frame img.swap{opacity:0}
.lb__cap{opacity:0;transform:translateY(20px);transition:opacity .6s .4s,transform .8s var(--ease) .4s}
.lb.open .lb__cap{opacity:1;transform:none}
.lb__cap span{color:var(--red);display:block;margin-bottom:12px}
.lb__cap strong{display:block;font-size:clamp(30px,3vw,48px);letter-spacing:-.045em;line-height:1;font-weight:600}
.lb__cap em{display:block;font-size:24px;color:var(--ink-2);margin:6px 0 18px}
.lb__cap p{color:var(--ink-2);font-size:14px}
.lb__btn,.lb__close{position:absolute;z-index:2;width:56px;height:56px;border-radius:50%;border:1px solid var(--line);display:grid;place-items:center;font-size:18px;background:rgba(var(--bg-rgb),.6);transition:background .4s,color .4s,border-color .4s}
.lb__btn:hover,.lb__close:hover{background:var(--red);border-color:var(--red);color:#000}
.lb__prev{left:24px;top:50%;margin-top:-28px}
.lb__next{right:24px;top:50%;margin-top:-28px}
.lb__close{top:24px;right:24px}

/* ---------- responsive ---------- */
@media (max-width:1100px){
  .nav__readout{display:none}
  .tech__cards{grid-template-columns:repeat(2,1fr)}
  .svc__row{grid-template-columns:56px 1fr 40px}
  .svc__row p{grid-column:2/3}
  .svc__row i{grid-row:1;grid-column:3}
}
@media (max-width:860px){
  .nav__links{display:none}
  .nav__burger{display:block}
  .hero__spec{display:none}
  .hero__scroll{display:none}
  .manifesto__cols{grid-template-columns:1fr}
  .numbers__grid{grid-template-columns:repeat(2,1fr)}
  .num{border-bottom:1px solid var(--line)}
  .num:nth-child(2n){border-right:0}
  .num:nth-child(odd){padding-left:0}
  .contact__grid{grid-template-columns:repeat(2,1fr)}
  .contact__cta{position:relative;right:auto;top:auto;margin-top:40px}
  .gallery__head{grid-template-columns:1fr}
  .gallery__hint{text-align:left}
  .inf__coords{display:none}
  .lb__fig{grid-template-columns:1fr;gap:20px}
  .lb__prev,.lb__next{top:auto;bottom:24px;margin:0}
  .lb__prev{left:auto;right:92px}
}
@media (max-width:520px){
  .tech__cards{grid-template-columns:1fr}
  .contact__grid{grid-template-columns:1fr}
  .numbers__grid{grid-template-columns:1fr}
  .num{border-right:0;padding-left:0 !important}
  .hero__meta{top:84px}
  .inf__hud{bottom:14px}
  .inf__filters button{padding:8px 10px}
  .lb__cap em{font-size:20px}
}
@media (hover:none){
  .inf{touch-action:pan-y;height:80vh;height:80svh}
  .inf.is-full{touch-action:none;height:100%}
}
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.01ms !important;animation-iteration-count:1 !important;transition-duration:.01ms !important}
  .grain{display:none}
}

/* ---------- lang ---------- */
.lang{display:flex;gap:10px;color:#999}
.lang b{color:var(--ink);font-weight:500}
.lang a:hover{color:var(--ink)}
.menu__lang{display:flex;gap:16px;margin-top:32px}
.menu__lang b{text-decoration:underline}
.hero__title .brk{display:inline}

/* ---------- contact form ---------- */
.contact__top{display:flex;align-items:flex-end;justify-content:space-between;gap:32px}
.cform{margin-top:clamp(56px,8vw,112px);display:grid;gap:8px;max-width:1100px}
.cform__row{display:grid;grid-template-columns:1fr 1fr;gap:8px 40px}
.field{display:block;position:relative;padding-top:18px}
.field span{color:var(--ink-3);display:block;transition:color .4s}
.field input,.field textarea{width:100%;background:transparent;border:0;border-bottom:1px solid var(--line);color:var(--ink);font:500 clamp(20px,2vw,28px)/1.3 var(--sans);letter-spacing:-.02em;padding:10px 0 14px;outline:none;resize:vertical;border-radius:0;transition:border-color .4s}
.field textarea{min-height:120px}
.field:focus-within span{color:var(--red)}
.field input:focus,.field textarea:focus{border-color:var(--red)}
.cform__foot{display:flex;align-items:flex-end;justify-content:space-between;gap:32px;flex-wrap:wrap;margin-top:16px}
.field--captcha{flex:0 1 320px}
.cform__status{min-height:1.5em;margin-top:12px;color:var(--ink-2)}
.cform__status.ok{color:#7ddc8a}.cform__status.err{color:var(--red)}
.cform__note{font-size:13px;color:var(--ink-3)}
.cform__note a{text-decoration:underline}
.cform.is-sending button{opacity:.5;pointer-events:none}

/* ---------- COMPETE ---------- */
.foot__compete{display:inline-block;margin-top:36px;background:#fff;padding:10px 14px;border-radius:4px;max-width:100%}
.foot__compete img{height:auto;width:min(560px,100%)}

@media (max-width:1100px){.lang{display:none}}
@media (max-width:860px){
  .contact__top{flex-direction:column;align-items:flex-start}
  .contact__cta{margin-top:0}
  .cform__row{grid-template-columns:1fr}
}
@media (max-width:600px){
  .hero__title{font-size:calc(clamp(52px,15.5vw,120px) * max(var(--hs,1), .72))}
  .hero__title .brk{display:block}
}

/* ---------- tema claro: ajustes ---------- */
:root[data-theme="light"] .nav{mix-blend-mode:normal}
:root[data-theme="light"] .nav__logo img{filter:invert(1)}
:root[data-theme="light"] .nav__readout{color:var(--ink-2)}
:root[data-theme="light"] .foot__logo{filter:invert(1)}
:root[data-theme="light"] .cursor{mix-blend-mode:normal}
:root[data-theme="light"] .tile img{filter:grayscale(.1) contrast(1.02) brightness(1) saturate(.95)}
:root[data-theme="light"] .inf.has-hot .tile:not(.is-hot) img{filter:grayscale(1) brightness(1.08) opacity(.55)}
:root[data-theme="light"] .tech__title{mix-blend-mode:normal;color:#fff}
:root[data-theme="light"] .tcard video,:root[data-theme="light"] .tcard img{filter:none}
:root[data-theme="light"] .menu-open .nav__logo img{filter:none}
.theme{display:grid;place-items:center;width:34px;height:34px;border-radius:50%;border:1px solid var(--line);font-size:13px;line-height:1;flex:0 0 auto;transition:background .4s,color .4s,border-color .4s}
.theme:hover{background:var(--ink);color:var(--bg);border-color:var(--ink)}
.theme .ico-sun{display:none}
:root[data-theme="light"] .theme .ico-sun{display:block}
:root[data-theme="light"] .theme .ico-moon{display:none}
@media (max-width:1100px){.theme{margin-left:auto}}
