
:root{
--bg:#FFFFFF;
--bg-alt:#F2F6F9;
--bg-card:#F5F8FA;
--line:#DCE4EA;
--ink:#132A3A;
--ink-dim:#5A6B79;
--ink-dimmer:#8B99A6;
--accent:#E0791F;
--accent-dark:#B85F16;
--accent-2:#1E76B4;
--steel:#123A56;
--danger:#D9603B;
--radius:2px;
--maxw:1180px;
--ease:cubic-bezier(.22,1,.36,1);
}

*{box-sizing:border-box;}
html{scroll-behavior:smooth;}
@media (prefers-reduced-motion: reduce){
html{scroll-behavior:auto;}
*{animation-duration:0.001ms !important; animation-iteration-count:1 !important; transition-duration:0.001ms !important;}
}

body{
margin:0;
background:var(--bg);
color:var(--ink);
font-family:'IBM Plex Sans', sans-serif;
-webkit-font-smoothing:antialiased;
overflow-x:hidden;
}

h1,h2,h3,h4{
font-family:'Oswald', sans-serif;
text-transform:uppercase;
letter-spacing:0.02em;
margin:0;
font-weight:600;
}

.mono{
font-family:'IBM Plex Mono', monospace;
}

a{color:inherit;}
img{max-width:100%; display:block;}

.wrap{
max-width:var(--maxw);
margin:0 auto;
padding:0 28px;
}

::selection{background:var(--accent); color:#10161D;}

/* -------- scrollbar -------- */
::-webkit-scrollbar{width:10px;}
::-webkit-scrollbar-track{background:var(--bg);}
::-webkit-scrollbar-thumb{background:var(--steel); border-radius:10px;}

/* -------- foco -------- */
a:focus-visible, button:focus-visible, input:focus-visible, textarea:focus-visible{
outline:2px solid var(--accent);
outline-offset:3px;
}
/* =========================================================
    CORTINA DE ABERTURA (INTRO)
========================================================== */
body.curtain-lock{overflow:hidden; height:100vh;}

.curtain-intro{
position:fixed;
inset:0;
z-index:3000;
display:flex;
align-items:center;
justify-content:center;
}
.curtain-panel{
position:absolute;
top:0;
height:100%;
width:50%;
background:linear-gradient(160deg, var(--steel) 0%, var(--ink) 100%);
}
.curtain-panel.left{left:0;}
.curtain-panel.right{right:0;}
.curtain-logo{
position:relative;
z-index:2;
display:flex;
flex-direction:column;
align-items:center;
gap:14px;
opacity:0;
transform:scale(.9);
}
.curtain-logo img{height:104px; width:auto;}
.curtain-logo .curtain-tagline{
font-family:'IBM Plex Mono', monospace;
font-size:11px;
letter-spacing:0.22em;
text-transform:uppercase;
color:rgba(255,255,255,0.65);
}

/* a logo some com as cortinas ainda fechadas */
.curtain-intro.play .curtain-logo{
animation: curtainLogoIn .06s ease forwards, curtainLogoOut .04s ease 1.2s forwards;
}
@keyframes curtainLogoIn{ to{ opacity:1; transform:scale(1); } }
@keyframes curtainLogoOut{ to{ opacity:0; transform:scale(.92); } }

/* Cortinas se abrem */
.curtain-intro.play .curtain-panel.left{
animation: curtainLeft .7s cubic-bezier(.76,0,.24,1) 1.4s forwards;
}
.curtain-intro.play .curtain-panel.right{
animation: curtainRight .7s cubic-bezier(.76,0,.24,1) 1.4s forwards;
}
@keyframes curtainLeft{ to{ transform:translateX(-100%); } }
@keyframes curtainRight{ to{ transform:translateX(100%); } }

.curtain-intro.done{visibility:hidden; pointer-events:none;}

@media (prefers-reduced-motion: reduce){
.curtain-intro{display:none;}
}

/* =========================================================
    CABEÇALHO
========================================================== */
header{
position:fixed;
top:0; left:0; right:0;
z-index:1000;
padding:22px 0;
transition:padding .35s var(--ease), background .35s var(--ease), border-color .35s var(--ease), transform .35s var(--ease);
border-bottom:1px solid transparent;
transform: translateY(0);
}
header.scrolled{
padding:12px 0;
background:rgba(255,255,255,0.92);
backdrop-filter:blur(10px);
border-bottom:1px solid var(--line);
}
header.header-hide{
    transform: translateY(-100%);
}
.nav-inner{
display:flex;
align-items:center;
justify-content:space-between;
gap:20px;
}
.logo{
display:flex;
flex-direction:column;
line-height:1;
text-decoration:none;
flex-shrink:0;
}
.logo .logo-img{
height:56px;
width:auto;
display:block;
}
.logo small{
font-family:'IBM Plex Mono', monospace;
font-size:9.5px;
letter-spacing:0.14em;
color:var(--ink-dim);
margin-top:5px;
}

nav.primary-nav{
display:flex;
gap:2px;
align-items:center;
}
nav.primary-nav a{
font-family:'IBM Plex Mono', monospace;
font-size:12.5px;
letter-spacing:0.06em;
text-transform:uppercase;
text-decoration:none;
color:var(--ink-dim);
padding:9px 15px;
position:relative;
transition:color .2s;
}
nav.primary-nav a::after{
content:"";
position:absolute;
left:15px; right:15px; bottom:5px;
height:1px;
background:var(--accent);
transform:scaleX(0);
transform-origin:left;
transition:transform .3s var(--ease);
}
nav.primary-nav a:hover, nav.primary-nav a.active{color:var(--ink);}
nav.primary-nav a:hover::after, nav.primary-nav a.active::after{transform:scaleX(1);}

.nav-cta{
font-family:'IBM Plex Mono', monospace;
font-size:12px;
letter-spacing:0.06em;
text-transform:uppercase;
text-decoration:none;
color:#10161D !important;
background:var(--accent);
padding:10px 18px;
border:1px solid var(--accent);
transition:background .2s, color .2s;
white-space:nowrap;
}
.nav-cta:hover{background:transparent; color:var(--accent) !important;}

.menu-btn{
display:none;
flex-direction:column;
gap:5px;
background:none;
border:none;
cursor:pointer;
padding:8px;
}
.menu-btn span{
width:26px; height:2px; background:var(--ink); display:block; transition:.3s;
}
.menu-btn.open span:nth-child(1){transform:translateY(7px) rotate(45deg);}
.menu-btn.open span:nth-child(2){opacity:0;}
.menu-btn.open span:nth-child(3){transform:translateY(-7px) rotate(-45deg);}

/* =========================================================
    TITULO
========================================================== */
.hero{
position:relative;
min-height:100vh;
display:flex;
align-items:center;
padding:140px 0 80px;
overflow:hidden;
background:
    radial-gradient(1100px 700px at 78% 18%, rgba(30,118,180,0.10), transparent 60%),
    linear-gradient(180deg, #FFFFFF 0%, #F2F6F9 100%);
}
.hero-grid{
position:absolute; inset:0;
background-image:
    linear-gradient(rgba(18,58,86,0.055) 1px, transparent 1px),
    linear-gradient(90deg, rgba(18,58,86,0.055) 1px, transparent 1px);
background-size:44px 44px;
mask-image:linear-gradient(180deg, rgba(0,0,0,0.9), transparent 78%);
pointer-events:none;
}
.hero-inner{
position:relative;
z-index:2;
display:grid;
grid-template-columns:1.05fr 0.95fr;
gap:40px;
align-items:center;
width:100%;
}
.hero-inner::before{
content:"";
position:absolute;
top:0;
left:50%;
width:100vw;
height:100%;
transform:translateX(-50%);
background-image:
    linear-gradient(rgba(242,246,249,0.6), rgba(242,246,249,0.6)),
    url('../png/piso-industrial.png');
background-size:cover;
background-position:center;
background-repeat:no-repeat;
z-index:-1;
}
.eyebrow{
display:inline-flex;
align-items:center;
gap:10px;
font-family:'IBM Plex Mono', monospace;
font-size:12px;
letter-spacing:0.16em;
color:var(--accent-2);
margin-bottom:22px;
}
.eyebrow::before{
content:"";
width:26px; height:1px; background:var(--accent-2);
}
.hero h1{
font-size:clamp(34px, 4.6vw, 60px);
line-height:1.06;
color:var(--ink);
max-width:15ch;
}
.hero h1 em{
font-style:normal;
color:var(--accent);
}
.hero p.lead{
font-size:17px;
line-height:1.7;
color:var(--ink-dim);
max-width:46ch;
margin:24px 0 34px;
}
.btn-row{display:flex; gap:14px; flex-wrap:wrap;padding-bottom: 25px;}
.btn{
display:inline-flex;
align-items:center;
gap:10px;
font-family:'IBM Plex Mono', monospace;
font-size:13px;
letter-spacing:0.05em;
text-transform:uppercase;
text-decoration:none;
padding:15px 24px;
border:1px solid var(--line);
transition:all .25s var(--ease);
cursor:pointer;
background:none;
color:var(--ink);
}
.btn-primary{
background:var(--accent);
border-color:var(--accent);
color:#10161D;
}
.btn-primary:hover{background:var(--accent-dark); border-color:var(--accent-dark); transform:translateY(-2px);}
.btn-ghost:hover{border-color:var(--ink-dim); background:rgba(18,58,86,0.045); transform:translateY(-2px);}
.btn-wpp{
background:var(--accent-2);
border-color:var(--accent-2);
color:#FFFFFF;
}
.btn-wpp:hover{background:#155A8A; border-color:#155A8A; transform:translateY(-2px);}
.btn-wpp svg{width:16px; height:16px; flex-shrink:0;}
.nav-wpp{
display:inline-flex;
align-items:center;
gap:8px;
font-family:'IBM Plex Mono', monospace;
font-size:12px;
letter-spacing:0.06em;
text-transform:uppercase;
text-decoration:none;
color:#FFFFFF !important;
background:var(--accent-2);
padding:10px 16px;
border:1px solid var(--accent-2);
transition:background .2s, color .2s, border-color .2s;
white-space:nowrap;
}
.nav-wpp:hover{background:#155A8A; border-color:#155A8A;}
.nav-wpp svg{width:15px; height:15px; flex-shrink:0;}
.cta-group{display:flex; align-items:center; gap:10px;}

/* canvas de etapas do projeto */
.scope{
position:relative;
border:1px solid var(--line);
background:linear-gradient(180deg, #101823, #0B121A);
padding:18px;
}
.scope-head{
display:flex; justify-content:space-between; align-items:center;
font-family:'IBM Plex Mono', monospace;
font-size:10.5px;
letter-spacing:0.1em;
color:var(--ink-dimmer);
margin-bottom:12px;
text-transform:uppercase;
}
.scope-head .dot{width:7px;height:7px;border-radius:50%;background:var(--accent-2); display:inline-block; margin-right:6px; box-shadow:0 0 8px var(--accent-2);}
canvas#scopeCanvas{
width:100%; height:220px; display:block;
}
.scope-foot{
display:flex; justify-content:space-between;
font-family:'IBM Plex Mono', monospace;
font-size:10.5px;
color:var(--ink-dimmer);
margin-top:10px;
letter-spacing:0.05em;
}

/* norms ticker */
.ticker-wrap{
border-top:1px solid var(--line);
border-bottom:1px solid var(--line);
background:var(--bg-alt);
overflow:hidden;
padding:14px 0;
position:relative;
z-index:2;
}
.ticker-track{
display:flex;
width:max-content;
animation:ticker 26s linear infinite;
gap:56px;
}
.ticker-wrap:hover .ticker-track{animation-play-state:paused;}
@keyframes ticker{
from{transform:translateX(0);}
to{transform:translateX(-50%);}
}
.ticker-track span{
font-family:'IBM Plex Mono', monospace;
font-size:13px;
letter-spacing:0.1em;
color:var(--ink-dim);
white-space:nowrap;
display:flex; align-items:center; gap:56px;
}
.ticker-track span::after{
content:"NORMA APLICADA";
color:var(--ink-dimmer);
font-size:10px;
}

/* =========================================================
    DIVISOR DE SOLDA (ASSINATURA)
========================================================== */
.seam{
position:relative;
height:64px;
background:var(--bg);
display:flex; align-items:center; justify-content:center;
overflow:hidden;
}
.seam svg{width:100%; height:100%; max-width:var(--maxw);}
.seam .seam-line{
fill:none;
stroke:var(--line);
stroke-width:2;
}
.seam .seam-progress{
fill:none;
stroke:var(--accent);
stroke-width:2;
stroke-dasharray:1400;
stroke-dashoffset:1400;
filter:drop-shadow(0 0 6px rgba(224,121,31,0.7));
transition:stroke-dashoffset 1.4s var(--ease);
}
.seam.welded .seam-progress{stroke-dashoffset:0;}
.seam .spark{
fill:var(--accent);
opacity:0;
filter:drop-shadow(0 0 6px var(--accent));
}
.seam.welded .spark{
opacity:1;
animation:sparkfade 1.4s var(--ease) forwards;
}
@keyframes sparkfade{
0%{opacity:0;}
10%{opacity:1;}
100%{opacity:0; transform:translateX(1100px);}
}

/* =========================================================
    SECAO GENERICA
========================================================== */
section{
padding:110px 0;
position:relative;
}
.section-head{
display:flex;
justify-content:space-between;
align-items:flex-end;
gap:30px;
margin-bottom:56px;
flex-wrap:wrap;
}
.section-head .tag{
font-family:'IBM Plex Mono', monospace;
font-size:12px;
letter-spacing:0.16em;
color:var(--accent);
display:block;
margin-bottom:14px;
}
.section-head h2{
font-size:clamp(28px, 3.4vw, 42px);
color:var(--ink);
max-width:16ch;
}
.section-head .desc{
max-width:38ch;
color:var(--ink-dim);
font-size:15px;
line-height:1.7;
padding-bottom:4px;
}

.reveal{
opacity:0;
transform:translateY(28px);
transition:opacity .8s var(--ease), transform .8s var(--ease);
}
.reveal.in{opacity:1; transform:translateY(0);}

/* =========================================================
    QUEM SOMOS
========================================================== */
#sobre{background:var(--bg-alt);}
.sobre-grid{
display:grid;
grid-template-columns:0.9fr 1.1fr;
gap:70px;
align-items:start;
}
.sobre-grid p{
color:var(--ink-dim);
line-height:1.8;
font-size:16px;
margin:0 0 22px;
}
.core-list{
list-style:none;
margin:30px 0 0;
padding:0;
display:grid;
gap:0;
border-top:1px solid var(--line);
}
.core-list li{
display:flex;
align-items:center;
gap:16px;
padding:16px 0;
border-bottom:1px solid var(--line);
font-size:15px;
color:var(--ink);
}
.core-list li .ico{
width:8px; height:8px;
background:var(--accent-2);
flex-shrink:0;
transform:rotate(45deg);
}

.industries{
display:flex;
flex-wrap:wrap;
gap:10px;
margin-bottom:22px;
}
.chip{
font-family:'IBM Plex Mono', monospace;
font-size:12.5px;
letter-spacing:0.05em;
text-transform:uppercase;
background:none;
border:1px solid var(--line);
color:var(--ink-dim);
padding:11px 16px;
cursor:pointer;
transition:all .2s;
}
.chip:hover{border-color:var(--ink-dim); color:var(--ink);}
.chip.active{border-color:var(--accent); color:var(--accent); background:rgba(224,121,31,0.08);}

.industry-panel{
border:1px solid var(--line);
background:var(--bg-card);
padding:26px 28px;
min-height:120px;
}
.industry-panel .code{
font-family:'IBM Plex Mono', monospace;
font-size:11px;
color:var(--accent-2);
letter-spacing:0.1em;
display:block;
margin-bottom:10px;
}
.industry-panel h4{
font-size:19px;
margin-bottom:10px;
color:var(--ink);
}
.industry-panel p{
color:var(--ink-dim);
font-size:14.5px;
line-height:1.7;
margin:0;
}

/* =========================================================
    VALORES E PRINCIPIOS - tags
========================================================== */
#sobre{background:var(--bg-alt);}
#sobre .reveal .reveal{
    margin-top: 32px;
}

.sobre-grid{
display:grid;
grid-template-columns:0.9fr 1.1fr;
gap:70px;
align-items:start;
}
.sobre-grid p{
color:var(--ink-dim);
line-height:1.8;
font-size:16px;
margin:0 0 22px;
}
.core-list{
list-style:none;
margin:30px 0 0;
padding:0;
display:grid;
gap:0;
border-top:1px solid var(--line);
}
.core-list li{
display:flex;
align-items:center;
gap:16px;
padding:16px 0;
border-bottom:1px solid var(--line);
font-size:15px;
color:var(--ink);
}
.core-list li .ico{
width:8px; height:8px;
background:var(--accent-2);
flex-shrink:0;
transform:rotate(45deg);
}

.industries{
display:flex;
flex-wrap:wrap;
gap:10px;
margin-bottom:22px;
}
.values{
font-family:'IBM Plex Mono', monospace;
font-size:12.5px;
letter-spacing:0.05em;
text-transform:uppercase;
background:none;
border:1px solid var(--line);
color:var(--ink-dim);
padding:11px 16px;
cursor:pointer;
transition:all .2s;
}
.values:hover{border-color:var(--ink-dim); color:var(--ink);}
.values.active{border-color:var(--accent); color:var(--accent); background:rgba(224,121,31,0.08);}

.value-panel{
border:1px solid var(--line);
background:var(--bg-card);
padding:26px 28px;
min-height:120px;
}
.value-panel .code{
font-family:'IBM Plex Mono', monospace;
font-size:11px;
color:var(--accent-2);
letter-spacing:0.1em;
display:block;
margin-bottom:10px;
}
.value-panel h4{
font-size:19px;
margin-bottom:10px;
color:var(--ink);
}
.value-panel p{
color:var(--ink-dim);
font-size:14.5px;
line-height:1.7;
margin:0;
}

/* =========================================================
    Missão - tags
========================================================== */
#sobre{background:var(--bg-alt);}
#sobre .reveal .reveal{
    margin-top: 32px;
}

.sobre-grid{
display:grid;
grid-template-columns:0.9fr 1.1fr;
gap:70px;
align-items:start;
}
.sobre-grid p{
color:var(--ink-dim);
line-height:1.8;
font-size:16px;
margin:0 0 22px;
}
.core-list{
list-style:none;
margin:30px 0 0;
padding:0;
display:grid;
gap:0;
border-top:1px solid var(--line);
}
.core-list li{
display:flex;
align-items:center;
gap:16px;
padding:16px 0;
border-bottom:1px solid var(--line);
font-size:15px;
color:var(--ink);
}
.core-list li .ico{
width:8px; height:8px;
background:var(--accent-2);
flex-shrink:0;
transform:rotate(45deg);
}

.industries{
display:flex;
flex-wrap:wrap;
gap:10px;
margin-bottom:22px;
}
.mission{
font-family:'IBM Plex Mono', monospace;
font-size:12.5px;
letter-spacing:0.05em;
text-transform:uppercase;
background:none;
border:1px solid var(--line);
color:var(--ink-dim);
padding:11px 16px;
cursor:pointer;
transition:all .2s;
}
.mission:hover{border-color:var(--ink-dim); color:var(--ink);}
.mission.active{border-color:var(--accent); color:var(--accent); background:rgba(224,121,31,0.08);}

.mission-panel{
border:1px solid var(--line);
background:var(--bg-card);
padding:26px 28px;
min-height:120px;
}
.mission-panel .code{
font-family:'IBM Plex Mono', monospace;
font-size:11px;
color:var(--accent-2);
letter-spacing:0.1em;
display:block;
margin-bottom:10px;
}
.mission-panel h4{
font-size:19px;
margin-bottom:10px;
color:var(--ink);
}
.mission-panel p{
color:var(--ink-dim);
font-size:14.5px;
line-height:1.7;
margin:0;
}

/* =========================================================
    SERVICOS - tags
========================================================== */
.services-grid{
display:grid;
grid-template-columns:repeat(3, 1fr);
gap:1px;
background:var(--line);
border:1px solid var(--line);
}
.service-card{
background:var(--bg);
padding:32px 28px;
cursor:pointer;
position:relative;
transition:background .25s;
min-height:230px;
display:flex;
flex-direction:column;
}
.service-card:hover{background:var(--bg-card);}
.service-card .plate{
display:flex;
justify-content:space-between;
align-items:flex-start;
margin-bottom:22px;
}
.service-card .tagcode{
font-family:'IBM Plex Mono', monospace;
font-size:11px;
color:#FFFFFF;
background:var(--accent-2);
padding:4px 8px;
letter-spacing:0.08em;
}
.service-card .idx{
font-family:'IBM Plex Mono', monospace;
font-size:12px;
color:var(--ink-dimmer);
}
.service-card h3{
font-size:19px;
line-height:1.3;
color:var(--ink);
margin-bottom:14px;
}
.service-card .summary{
color:var(--ink-dim);
font-size:14px;
line-height:1.65;
margin:0;
}
.service-card .detail{
color:var(--ink-dim);
font-size:13.5px;
line-height:1.7;
max-height:0;
overflow:hidden;
transition:max-height .4s var(--ease), margin .4s var(--ease);
margin-top:0;
}
.service-card.open .detail{
max-height:220px;
margin-top:14px;
}
.service-card .expand-hint{
margin-top:auto;
padding-top:18px;
font-family:'IBM Plex Mono', monospace;
font-size:11px;
letter-spacing:0.08em;
color:var(--accent);
display:flex;
align-items:center;
gap:8px;
}
.service-card .expand-hint .plus{transition:transform .3s;}
.service-card.open .expand-hint .plus{transform:rotate(45deg);}

/* =========================================================
    REGIOES ATENDIDAS
========================================================== */
#regioes{background:var(--bg-alt);}
.regions-summary{
font-family:'IBM Plex Mono', monospace;
font-size:13px;
letter-spacing:0.04em;
color:var(--ink-dim);
margin:-30px 0 40px;
}
.regions-summary strong{color:var(--accent-2);}
.regions-grid{
display:grid;
grid-template-columns:repeat(3, 1fr);
gap:1px;
background:var(--line);
border:1px solid var(--line);
}
.region-card{
background:var(--bg);
padding:26px 26px;
display:flex;
gap:18px;
align-items:flex-start;
}
.region-card .state-badge{
flex-shrink:0;
width:46px; height:46px;
background:var(--accent-2);
color:#FFFFFF;
display:flex; align-items:center; justify-content:center;
font-family:'IBM Plex Mono', monospace;
font-size:13px;
font-weight:500;
letter-spacing:0.03em;
}
.region-card .state-name{
font-family:'Oswald', sans-serif;
font-size:16px;
text-transform:uppercase;
letter-spacing:0.02em;
color:var(--ink);
margin-bottom:6px;
}
.region-card .cities{
color:var(--ink-dim);
font-size:13.5px;
line-height:1.6;
margin:0;
}

/* =========================================================
    PROCESSO
========================================================== */
#processo{background:var(--bg-alt);}
.process-row{
display:grid;
grid-template-columns:repeat(4, 1fr);
gap:0;
position:relative;
}
.process-row::before{
content:"";
position:absolute;
top:17px; left:6%; right:6%;
height:1px;
background:var(--line);
z-index:0;
}
.process-step{
position:relative;
z-index:1;
padding:0 20px 0 0;
}
.process-step .num{
width:34px; height:34px;
border:1px solid var(--accent);
color:var(--accent);
background:var(--bg-alt);
display:flex; align-items:center; justify-content:center;
font-family:'IBM Plex Mono', monospace;
font-size:13px;
margin-bottom:22px;
}
.process-step h4{
font-size:16px;
margin-bottom:10px;
color:var(--ink);
}
.process-step p{
color:var(--ink-dim);
font-size:13.5px;
line-height:1.65;
max-width:26ch;
}

/* =========================================================
    PARCEIROS
========================================================== */
.partners-marquee{
overflow:hidden;
border-top:1px solid var(--line);
border-bottom:1px solid var(--line);
padding:44px 0;
}
.partners-track{
display:flex;
gap:90px;
width:max-content;
animation:ticker 22s linear infinite;
align-items:center;
}
.partners-marquee:hover .partners-track{
    animation-play-state:paused;
}
.partners-track img{
height:46px;
width:auto;
object-fit: contain;
filter:none;
opacity:0.5;
transition:filter .3s, opacity .3s;
}
.partners-track img:hover{filter:none; opacity:1;}

/* =========================================================
    GALERIA
========================================================== */
.gallery-grid{
display:grid;
grid-template-columns:repeat(4, 1fr);
gap:8px;
}
.gallery-grid button{
padding:0; border:none; background:none; cursor:pointer;
overflow:hidden;
aspect-ratio:4/3;
position:relative;
}
.gallery-grid button:nth-child(5n+1){grid-row:span 2; aspect-ratio:4/6.15;}
.gallery-grid img{
width:100%; height:100%; object-fit:cover;
transition:transform .5s var(--ease), filter .5s;
filter:saturate(0.85) brightness(0.92);
}
.gallery-grid button:hover img{transform:scale(1.06); filter:saturate(1) brightness(1);}
.gallery-grid button::after{
content:"+";
position:absolute; top:10px; right:10px;
width:26px; height:26px;
border:1px solid rgba(255,255,255,0.5);
color:#fff;
display:flex; align-items:center; justify-content:center;
font-size:16px;
opacity:0;
transition:opacity .3s;
}
.gallery-grid button:hover::after{opacity:1;}
.gallery-caption{
position:absolute; left:0; right:0; bottom:0;
padding:22px 14px 10px;
background:linear-gradient(180deg, rgba(19,42,58,0) 0%, rgba(13,26,36,0.82) 78%);
color:#fff;
text-align:left;
pointer-events:none;
}
.gallery-caption .gc-title{
font-family:'Oswald', sans-serif;
font-size:12.5px;
font-weight:600;
text-transform:uppercase;
letter-spacing:0.02em;
line-height:1.3;
}
.gallery-caption .gc-meta{
font-family:'IBM Plex Mono', monospace;
font-size:10px;
color:rgba(255,255,255,0.78);
margin-top:3px;
letter-spacing:0.03em;
}

/* lightbox */
.lightbox{
position:fixed; inset:0;
background:rgba(8,11,15,0.94);
z-index:2000;
display:none;
align-items:center;
justify-content:center;
padding:40px;
}
.lightbox.open{display:flex;}
.lightbox img{
max-width:min(90vw, 1000px);
max-height:80vh;
object-fit:contain;
border:1px solid rgba(255,255,255,0.15);
}
.lightbox-close, .lightbox-nav{
position:absolute;
background:none;
border:1px solid rgba(255,255,255,0.3);
color:#F2F6F9;
cursor:pointer;
font-family:'IBM Plex Mono', monospace;
font-size:14px;
padding:10px 14px;
transition:border-color .2s;
}
.lightbox-close:hover, .lightbox-nav:hover{border-color:var(--accent); color:var(--accent);}
.lightbox-close{top:26px; right:26px;}
.lightbox-nav.prev{left:26px; top:50%; transform:translateY(-50%);}
.lightbox-nav.next{right:26px; top:50%; transform:translateY(-50%);}
.lightbox-count{
position:absolute; bottom:26px; left:50%; transform:translateX(-50%);
font-family:'IBM Plex Mono', monospace;
font-size:12px; color:rgba(255,255,255,0.6); letter-spacing:0.1em;
text-align:center;
}
.lightbox-caption{
position:absolute; bottom:54px; left:50%; transform:translateX(-50%);
text-align:center;
max-width:90vw;
}
.lightbox-caption .lc-title{
font-family:'Oswald', sans-serif;
font-size:15px;
font-weight:600;
text-transform:uppercase;
letter-spacing:0.02em;
color:#F2F6F9;
}
.lightbox-caption .lc-meta{
font-family:'IBM Plex Mono', monospace;
font-size:11px;
color:rgba(255,255,255,0.65);
margin-top:4px;
letter-spacing:0.04em;
}

/* =========================================================
    CONTATO
========================================================== */
#contato{background:var(--bg-alt);}
.contato-grid{
display:grid;
grid-template-columns:0.85fr 1.15fr;
gap:60px;
}
.contact-info-block{
border-left:2px solid var(--accent);
padding-left:26px;
}
.contact-info-block .item{
margin-bottom:26px;
}
.contact-info-block .label{
font-family:'IBM Plex Mono', monospace;
font-size:11px;
letter-spacing:0.12em;
color:var(--ink-dimmer);
text-transform:uppercase;
display:block;
margin-bottom:8px;
}
.contact-info-block a, .contact-info-block .val{
text-decoration:none;
font-size:16px;
color:var(--ink);
display:block;
margin-bottom:2px;
}
.contact-info-block a:hover{color:var(--accent);}

form#contactForm{
display:grid;
gap:18px;
}
.form-row{display:grid; grid-template-columns:1fr 1fr; gap:18px;}
label{
font-family:'IBM Plex Mono', monospace;
font-size:11px;
letter-spacing:0.1em;
text-transform:uppercase;
color:var(--ink-dim);
margin-bottom:8px;
display:block;
}
input, textarea{
width:100%;
background:var(--bg-card);
border:1px solid var(--line);
color:var(--ink);
font-family:'IBM Plex Sans', sans-serif;
font-size:15px;
padding:13px 14px;
transition:border-color .2s;
}
input:focus, textarea:focus{border-color:var(--accent); outline:none;}
textarea{resize:vertical; min-height:120px;}
.form-msg{
font-family:'IBM Plex Mono', monospace;
font-size:13px;
color:var(--accent-2);
min-height:18px;
}

/* =========================================================
    FOOTER
========================================================== */
footer{
padding:50px 0 30px;
border-top:1px solid var(--line);
}
.footer-grid{
display:flex;
justify-content:space-between;
align-items:center;
flex-wrap:wrap;
gap:20px;
}
.footer-nav{display:flex; gap:22px; flex-wrap:wrap;}
.footer-nav a{
text-decoration:none;
color:var(--ink-dim);
font-family:'IBM Plex Mono', monospace;
font-size:12px;
letter-spacing:0.06em;
text-transform:uppercase;
}
.footer-nav a:hover{color:var(--accent);}
.footer-copy{
font-family:'IBM Plex Mono', monospace;
font-size:11.5px;
color:var(--ink-dimmer);
}

/* =========================================================
    RESPONSIVIDADE
========================================================== */
@media (max-width:980px){
.hero-inner{grid-template-columns:1fr;}
.scope{order:-1;}
.sobre-grid{grid-template-columns:1fr; gap:40px;}
.services-grid{grid-template-columns:repeat(2,1fr);}
.regions-grid{grid-template-columns:repeat(2,1fr);}
.process-row{grid-template-columns:repeat(2,1fr); row-gap:40px;}
.process-row::before{display:none;}
.contato-grid{grid-template-columns:1fr;}
.gallery-grid{grid-template-columns:repeat(3,1fr);}
}
@media (max-width:720px){
nav.primary-nav{
    position:fixed;
    top:0; right:0;
    height:100vh;
    width:78%;
    max-width:320px;
    background:var(--bg-alt);
    flex-direction:column;
    align-items:flex-start;
    justify-content:center;
    gap:6px;
    padding:0 36px;
    transform:translateX(100%);
    transition:transform .4s var(--ease);
    border-left:1px solid var(--line);
}
nav.primary-nav.open{transform:translateX(0);}
nav.primary-nav a{font-size:16px; padding:14px 0;}
nav.primary-nav a::after{left:0; right:0;}
.cta-group{flex-direction:column; align-items:flex-start; gap:10px; margin-top:14px; width:100%;}
.nav-cta, .nav-wpp{width:100%; justify-content:center;}
.menu-btn{display:flex;}
.form-row{grid-template-columns:1fr;}
.services-grid{grid-template-columns:1fr;}
.regions-grid{grid-template-columns:1fr;}
.gallery-grid{grid-template-columns:repeat(2,1fr);}
.gallery-grid button:nth-child(5n+1){grid-row:auto; aspect-ratio:4/3;}
section{padding:76px 0;}
.contact-info-block{border-left:none; border-top:2px solid var(--accent); padding-left:0; padding-top:20px;}
}