
:root{
  --dark:#07140D;
  --black:#1F1F1F;
  --text:#4F4F4F;
  --muted:#8A8A8A;
  --green:#084013;
  --green2:#1F5F4A;
  --bright:#A7D928;
  --surface:#F7F7F4;
  --line:rgba(0,0,0,.08);
  --radius:28px;
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;font-family:Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;background:var(--surface);color:var(--black);-webkit-font-smoothing:antialiased}
a{color:inherit;text-decoration:none}
img{max-width:100%;display:block}
.container{width:min(1180px, calc(100% - 40px));margin:0 auto}
.site-header{position:fixed;top:0;left:0;right:0;height:82px;display:flex;align-items:center;justify-content:space-between;padding:0 clamp(22px,4vw,56px);z-index:100;background:rgba(250,250,248,.9);backdrop-filter:blur(18px);border-bottom:1px solid rgba(0,0,0,.06)}
.brand img{height:52px;width:auto}
.nav{display:flex;align-items:center;gap:22px;font-size:12px;font-weight:700;color:var(--text)}
.nav a:hover{color:var(--green)}
.nav-cta{padding:11px 18px;border-radius:999px;background:var(--green);color:#fff!important}
.lang-switch{display:flex;padding:3px;border:1px solid rgba(0,0,0,.12);border-radius:999px;background:#fff}
.lang-switch button{border:0;background:transparent;padding:7px 10px;border-radius:999px;font-size:12px;font-weight:700;cursor:pointer;color:var(--text)}
.lang-switch button.active{background:var(--green);color:#fff}
.menu-button{display:none;border:0;background:transparent;gap:5px;flex-direction:column;cursor:pointer}
.menu-button span{width:24px;height:2px;background:var(--black)}
.section{padding:112px 0}
.surface{background:#fff;border-top:1px solid rgba(0,0,0,.05);border-bottom:1px solid rgba(0,0,0,.05)}
.section-dark{position:relative;overflow:hidden;background:var(--dark);color:#fff}
.hero{padding:150px 0 86px;min-height:900px;display:flex;align-items:center}
.hero-bg-lines:before{content:"";position:absolute;inset:0;background:radial-gradient(circle at 70% 26%,rgba(167,217,40,.18),transparent 24%),linear-gradient(115deg,#06140C 0%,#06140C 30%,rgba(8,64,19,.88) 46%,rgba(8,64,19,.08) 64%,transparent 100%)}
.hero-bg-lines:after{content:"";position:absolute;left:-80px;bottom:-100px;width:380px;height:680px;transform:rotate(-28deg);background:linear-gradient(to bottom,rgba(167,217,40,.55),rgba(8,64,19,.45),transparent);filter:blur(3px)}
.hero-grid{position:relative;display:grid;grid-template-columns:.82fr 1.18fr;gap:56px;align-items:center}
.eyebrow{display:inline-flex;align-items:center;gap:14px;text-transform:uppercase;letter-spacing:.22em;font-size:12px;font-weight:750;color:var(--bright);margin-bottom:30px}
.eyebrow span:first-child{display:block;width:48px;height:1px;background:var(--bright)}
.hero h1{margin:0;font-size:clamp(56px,7.2vw,96px);line-height:.94;letter-spacing:-.065em;max-width:760px}
.hero p{font-size:18px;line-height:1.75;color:rgba(255,255,255,.73);max-width:580px;margin:30px 0 0}
.actions{display:flex;align-items:center;gap:24px;margin-top:40px;flex-wrap:wrap}
.button{display:inline-flex;align-items:center;justify-content:center;border-radius:999px;padding:16px 26px;font-size:14px;font-weight:800}
.button-bright{background:var(--bright);color:var(--dark);box-shadow:0 18px 45px rgba(167,217,40,.18)}
.text-link{font-size:14px;font-weight:750;color:var(--green)}
.text-link.dark{color:#fff}
.location-line{display:flex;align-items:center;gap:12px;margin-top:48px;color:rgba(255,255,255,.65);font-size:14px}
.location-line i{width:8px;height:8px;background:var(--bright);border-radius:999px}
.hero-image-card{position:relative;min-height:660px;border-radius:34px;overflow:hidden;border:1px solid rgba(255,255,255,.12);box-shadow:0 28px 90px rgba(0,0,0,.35)}
.hero-image-card img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.hero-image-card:after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,rgba(7,20,13,.65),rgba(7,20,13,.08),transparent)}
.diagonal-accent{position:absolute;left:-60px;top:0;height:100%;width:110px;transform:rotate(22deg);background:rgba(167,217,40,.28);filter:blur(2px)}
.hero-caption{position:absolute;left:32px;right:32px;bottom:32px;padding:20px 24px;border:1px solid rgba(255,255,255,.15);border-radius:22px;background:rgba(7,20,13,.74);backdrop-filter:blur(14px);font-size:14px;font-weight:750;color:rgba(255,255,255,.88)}
.metrics{position:relative;margin-top:-34px;z-index:4}
.metrics-grid{display:grid;grid-template-columns:repeat(4,1fr);background:#fff;border:1px solid rgba(0,0,0,.06);border-radius:28px;overflow:hidden;box-shadow:0 14px 45px rgba(0,0,0,.08)}
.metrics-grid div{padding:30px;border-right:1px solid rgba(0,0,0,.06)}
.metrics-grid div:last-child{border-right:0}
.metrics-grid strong{display:block;color:var(--green);font-size:42px;letter-spacing:-.05em}
.metrics-grid span{display:block;margin-top:7px;color:var(--text);font-size:14px}
.two-col{display:grid;grid-template-columns:1fr 1fr;gap:70px;align-items:center}
.copy .label,.label{font-size:12px;text-transform:uppercase;letter-spacing:.2em;color:var(--green2);font-weight:800;margin:0 0 18px}
.label.bright{color:var(--bright)}
h2{font-size:clamp(42px,4.8vw,60px);line-height:1;letter-spacing:-.055em;margin:0}
.copy p:not(.label){font-size:16px;line-height:1.85;color:var(--text)}
.section-dark .copy p:not(.label),.assurance .copy p:not(.label){color:rgba(255,255,255,.70)}
.image-frame{position:relative;margin:0;border-radius:var(--radius);overflow:hidden;min-height:520px;background:#ddd}
.image-frame img{width:100%;height:100%;min-height:520px;object-fit:cover}
.image-frame:after{content:"";position:absolute;inset:0;background:linear-gradient(to top,rgba(0,0,0,.55),transparent 50%)}
.image-frame figcaption{position:absolute;z-index:2;bottom:26px;left:26px;right:26px;color:#fff;font-size:14px;font-weight:650}
.section-head{max-width:790px;margin-bottom:48px}
.section-head p{font-size:18px;line-height:1.7;color:var(--text)}
.capability-grid{display:grid;grid-template-columns:1fr 1fr;gap:28px}
.capability-card{background:var(--surface);border:1px solid rgba(0,0,0,.06);border-radius:var(--radius);overflow:hidden;box-shadow:0 14px 45px rgba(0,0,0,.04)}
.capability-card>img{width:100%;height:350px;object-fit:cover}
.card-body{padding:32px}
.card-body h3{font-size:38px;letter-spacing:-.04em;margin:0 0 12px}
.card-body p{color:var(--text);line-height:1.7}
.card-body ul{list-style:none;padding:0;margin:28px 0 0;display:grid;grid-template-columns:1fr 1fr;gap:14px}
.card-body li{border-top:1px solid rgba(0,0,0,.12);padding-top:12px;color:var(--text);font-size:14px}
.service-strip{display:grid;grid-template-columns:repeat(4,1fr);gap:18px;margin-top:28px}
.service-strip a{position:relative;min-height:205px;border-radius:22px;overflow:hidden;background:#111;color:#fff}
.service-strip img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:.72}
.service-strip a:after{content:"";position:absolute;inset:0;background:linear-gradient(to top,rgba(0,0,0,.72),transparent)}
.service-strip span{position:absolute;z-index:2;left:18px;right:18px;bottom:18px;font-weight:750}
.model{padding:110px 0}
.model-grid{display:grid;grid-template-columns:.75fr 1.25fr;gap:58px;align-items:center}
.model-panel{position:relative;border-radius:var(--radius);overflow:hidden;min-height:600px;border:1px solid rgba(255,255,255,.12)}
.model-panel>img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:.55}
.model-panel:after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,rgba(7,20,13,.86),rgba(7,20,13,.38))}
.steps{position:relative;z-index:2;display:grid;grid-template-columns:repeat(3,1fr);gap:16px;padding:32px;align-items:end;min-height:600px}
.steps article{border:1px solid rgba(255,255,255,.13);border-radius:24px;background:rgba(255,255,255,.07);padding:24px;backdrop-filter:blur(12px)}
.steps span{display:block;color:rgba(255,255,255,.45);font-weight:800;margin-bottom:44px}
.steps h3{margin:0;color:#fff;font-size:21px}
.steps p{color:rgba(255,255,255,.68);line-height:1.65;font-size:14px}
.projects-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:24px}
.projects-grid article{position:relative;border-radius:var(--radius);overflow:hidden;min-height:360px;background:#111}
.projects-grid img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.projects-grid article:after{content:"";position:absolute;inset:0;background:linear-gradient(to top,rgba(0,0,0,.78),rgba(0,0,0,.06))}
.projects-grid div{position:absolute;z-index:2;left:26px;right:26px;bottom:26px;color:#fff}
.projects-grid span{font-size:12px;text-transform:uppercase;letter-spacing:.14em;color:rgba(255,255,255,.68)}
.projects-grid h3{margin:14px 0 0;font-size:30px;letter-spacing:-.04em}
.assurance{background:#0E1711;color:#fff}
.dark-frame{background:#060b08}
.commit-list{display:grid;gap:12px;margin-top:30px}
.commit-list span{display:flex;gap:12px;align-items:center;color:rgba(255,255,255,.78);border-top:1px solid rgba(255,255,255,.12);padding-top:14px}
.commit-list span:before{content:"";width:7px;height:7px;background:var(--bright);border-radius:50%;flex:0 0 auto}
.commitment-box{display:grid;grid-template-columns:.8fr 1.2fr;gap:50px;background:#fff;border:1px solid rgba(0,0,0,.06);border-radius:var(--radius);padding:48px;box-shadow:0 14px 45px rgba(0,0,0,.04)}
.commitment-box div{display:grid;grid-template-columns:1fr 1fr;gap:18px 28px}
.commitment-box p{border-top:1px solid rgba(0,0,0,.12);padding-top:16px;margin:0;color:var(--text)}
.contact-grid{display:grid;grid-template-columns:.85fr 1.15fr;gap:70px}
.contact-details{display:grid;gap:10px;margin-top:36px;color:var(--text)}
.form{display:grid;grid-template-columns:1fr 1fr;gap:18px;background:var(--surface);border:1px solid rgba(0,0,0,.06);border-radius:var(--radius);padding:32px}
.form label{display:grid;gap:8px;font-size:12px;font-weight:750;text-transform:uppercase;letter-spacing:.12em;color:var(--muted)}
.form .full{grid-column:1/-1}
input,textarea{width:100%;border:1px solid rgba(0,0,0,.12);border-radius:14px;background:#fff;min-height:50px;padding:12px 14px;font:inherit;outline:none}
textarea{min-height:140px;resize:vertical}
input:focus,textarea:focus{border-color:var(--green)}
.form button{justify-self:start;border:0;background:var(--green);color:#fff;border-radius:999px;padding:15px 24px;font-weight:800;cursor:pointer}
.footer{background:#1F1F1F;color:#fff;padding:56px 0}
.footer-grid{display:grid;grid-template-columns:1.2fr .8fr .8fr;gap:50px}
.footer img{height:58px;background:transparent;border-radius:0;padding:0;margin-bottom:20px;display:block;object-fit:contain}.footer-brand img{height:62px;filter:none;box-shadow:none}
.footer p,.footer a,.footer span{color:rgba(255,255,255,.62);font-size:14px;line-height:1.8}
.footer nav,.footer-contact{display:grid;gap:8px;align-content:start}

@media(max-width:980px){
  .menu-button{display:flex}
  .nav{position:fixed;top:78px;left:0;right:0;display:none;flex-direction:column;align-items:flex-start;background:rgba(250,250,248,.98);padding:24px;border-bottom:1px solid rgba(0,0,0,.06)}
  .nav.open{display:flex}
  .hero{min-height:auto;padding-top:118px}
  .hero-grid,.two-col,.model-grid,.contact-grid,.commitment-box{grid-template-columns:1fr}
  .hero-image-card{min-height:520px}
  .metrics-grid,.capability-grid,.projects-grid{grid-template-columns:1fr 1fr}
  .service-strip{grid-template-columns:1fr 1fr}
  .steps{grid-template-columns:1fr;min-height:auto}
  .model-panel{min-height:auto}
  .footer-grid{grid-template-columns:1fr}
}
@media(max-width:640px){
  .container{width:min(100% - 28px,1180px)}
  .section{padding:76px 0}
  .hero h1{font-size:48px}
  .hero-image-card{min-height:420px;border-radius:26px}
  .metrics-grid,.capability-grid,.projects-grid,.service-strip,.commitment-box div,.form{grid-template-columns:1fr}
  .metrics-grid div{border-right:0;border-bottom:1px solid rgba(0,0,0,.06)}
  .card-body ul{grid-template-columns:1fr}
  .image-frame,.image-frame img{min-height:420px}
}


/* Refinement pass */
.hero-image-card img,.image-frame img,.capability-card>img,.projects-grid img,.service-strip img{filter:saturate(.92) contrast(1.04)}
.capability-card,.projects-grid article,.image-frame,.hero-image-card{isolation:isolate}
.capability-card{transition:transform .35s ease,box-shadow .35s ease}.capability-card:hover{transform:translateY(-4px);box-shadow:0 22px 70px rgba(0,0,0,.08)}
.projects-grid article{transition:transform .35s ease}.projects-grid article:hover{transform:translateY(-4px)}
.section-head{border-left:3px solid var(--green);padding-left:24px}.section-dark .section-head{border-left-color:var(--bright)}
.copy p:not(.label){max-width:680px}.hero-copy{padding-bottom:18px}.metrics-grid strong{font-weight:760}.card-body li{min-height:42px}.footer img{object-fit:contain}
@media(max-width:980px){.hero{padding-top:126px}.section-head{padding-left:18px}}
@media(max-width:640px){.hero{padding-top:118px}.actions{gap:16px}.button{width:100%}.text-link{width:100%;justify-content:center;text-align:center}}


.service-strip a {
  cursor: pointer;
  transition: transform .35s ease, box-shadow .35s ease;
}
.service-strip a:hover {
  transform: translateY(-4px);
  box-shadow: 0 22px 55px rgba(0,0,0,.16);
}
.service-strip a:hover img {
  transform: scale(1.045);
}
.service-strip img {
  transition: transform .65s ease;
}

.service-detail-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 24px;
  margin-top: 34px;
}
.service-detail-grid article {
  scroll-margin-top: 110px;
  display: grid;
  grid-template-columns: 180px 1fr;
  gap: 24px;
  align-items: center;
  border: 1px solid rgba(0,0,0,.07);
  border-radius: 24px;
  background: #fff;
  overflow: hidden;
  min-height: 170px;
  box-shadow: 0 12px 36px rgba(0,0,0,.035);
}
.service-detail-grid img {
  width: 100%;
  height: 100%;
  min-height: 170px;
  object-fit: cover;
}
.service-detail-grid div {
  padding: 22px 22px 22px 0;
}
.service-detail-grid span {
  display: block;
  color: var(--green2);
  font-size: 12px;
  font-weight: 800;
  letter-spacing: .18em;
  margin-bottom: 12px;
}
.service-detail-grid h3 {
  margin: 0 0 10px;
  font-size: 22px;
  letter-spacing: -.03em;
}
.service-detail-grid p {
  margin: 0;
  color: var(--text);
  line-height: 1.65;
  font-size: 14px;
}

@media(max-width:980px){
  .service-detail-grid{grid-template-columns:1fr}
}
@media(max-width:640px){
  .service-detail-grid article{grid-template-columns:1fr}
  .service-detail-grid div{padding:22px}
}


/* v4 — grouped capability details */
.service-details {
  display: grid;
  gap: 46px;
  margin-top: 42px;
}
.service-group {
  border: 1px solid rgba(0,0,0,.07);
  border-radius: 30px;
  background: #fff;
  padding: 34px;
  box-shadow: 0 18px 55px rgba(0,0,0,.045);
}
.service-group-head {
  display: grid;
  grid-template-columns: .42fr 1fr;
  gap: 30px;
  align-items: end;
  margin-bottom: 28px;
  padding-bottom: 24px;
  border-bottom: 1px solid rgba(0,0,0,.08);
}
.service-group-head span {
  color: var(--green2);
  text-transform: uppercase;
  letter-spacing: .22em;
  font-size: 12px;
  font-weight: 850;
}
.service-group-head h3 {
  margin: 0;
  font-size: clamp(30px, 3.2vw, 42px);
  line-height: 1;
  letter-spacing: -.045em;
}
.service-group-head p {
  grid-column: 2;
  margin: -14px 0 0;
  max-width: 720px;
  color: var(--text);
  line-height: 1.65;
}

.service-details .service-detail-grid {
  margin-top: 0;
}

.service-details .service-detail-grid article {
  box-shadow: none;
  background: #F7F7F4;
}

.service-details .service-detail-grid article:hover {
  background: #fff;
  box-shadow: 0 16px 45px rgba(0,0,0,.06);
}

@media(max-width:980px){
  .service-group-head {
    grid-template-columns: 1fr;
    gap: 12px;
    align-items: start;
  }
  .service-group-head p {
    grid-column: auto;
    margin: 0;
  }
}
@media(max-width:640px){
  .service-group {
    padding: 22px;
    border-radius: 24px;
  }
}


/* v5 — lighter capability details and inline CTAs */
.service-group {
  padding: 30px;
}
.service-detail-grid {
  gap: 18px;
}
.service-detail-grid article {
  grid-template-columns: 150px 1fr;
  min-height: 146px;
}
.service-detail-grid img {
  min-height: 146px;
}
.service-detail-grid div {
  padding: 18px 18px 18px 0;
}
.service-detail-grid span {
  margin-bottom: 9px;
}
.service-detail-grid h3 {
  font-size: 20px;
  margin-bottom: 8px;
}
.service-detail-grid p {
  line-height: 1.55;
}

.service-group-cta {
  margin-top: 24px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 24px;
  border-radius: 22px;
  background: #0E1711;
  padding: 20px 22px;
  color: #fff;
}
.service-group-cta p {
  margin: 0;
  color: rgba(255,255,255,.72);
  line-height: 1.55;
}
.service-group-cta a {
  flex: 0 0 auto;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: 999px;
  background: var(--bright);
  color: var(--dark);
  padding: 12px 18px;
  font-size: 13px;
  font-weight: 850;
}
.service-group-cta a:hover {
  background: #fff;
}

.service-strip a::before {
  content: "Ver detalhe";
  position: absolute;
  z-index: 3;
  top: 16px;
  right: 16px;
  border: 1px solid rgba(255,255,255,.24);
  border-radius: 999px;
  padding: 6px 10px;
  font-size: 11px;
  font-weight: 750;
  color: rgba(255,255,255,.85);
  background: rgba(0,0,0,.18);
  backdrop-filter: blur(8px);
  opacity: 0;
  transform: translateY(-4px);
  transition: .25s ease;
}
html[lang="en"] .service-strip a::before {
  content: "View detail";
}
.service-strip a:hover::before {
  opacity: 1;
  transform: translateY(0);
}

@media(max-width:760px){
  .service-group-cta {
    align-items: flex-start;
    flex-direction: column;
  }
  .service-group-cta a {
    width: 100%;
  }
}
@media(max-width:640px){
  .service-detail-grid article {
    grid-template-columns: 1fr;
  }
  .service-detail-grid div {
    padding: 20px;
  }
}


/* Multipage v1 */
.button-dark {
  background: var(--green);
  color: #fff;
}
.button-dark:hover {
  background: var(--green2);
}
.center-cta {
  display: flex;
  justify-content: center;
  margin-top: 34px;
}
.final-cta {
  max-width: 860px;
  text-align: center;
}
.final-cta p {
  color: var(--text);
  line-height: 1.7;
  max-width: 650px;
  margin: 22px auto 30px;
}
.compact-panel {
  min-height: 420px;
}
.internal-hero {
  padding: 148px 0 86px;
}
.internal-hero-grid {
  position: relative;
  display: grid;
  grid-template-columns: .92fr 1.08fr;
  gap: 58px;
  align-items: center;
}
.internal-hero h1 {
  font-size: clamp(50px, 6.8vw, 84px);
  line-height: .96;
  letter-spacing: -.06em;
  margin: 0;
}
.internal-hero p:not(.label) {
  color: rgba(255,255,255,.72);
  line-height: 1.75;
  font-size: 18px;
  max-width: 640px;
}
.internal-hero-image {
  position: relative;
  min-height: 500px;
  border-radius: 34px;
  overflow: hidden;
  border: 1px solid rgba(255,255,255,.12);
  margin: 0;
}
.internal-hero-image img {
  width: 100%;
  height: 100%;
  min-height: 500px;
  object-fit: cover;
}
.internal-hero-image:after {
  content:"";
  position:absolute;
  inset:0;
  background:linear-gradient(90deg,rgba(7,20,13,.48),transparent);
}
.cred-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 18px;
}
.cred-grid article {
  background: #fff;
  border: 1px solid rgba(0,0,0,.07);
  border-radius: 24px;
  padding: 28px;
}
.cred-grid strong {
  display: block;
  font-size: 42px;
  color: var(--green);
  letter-spacing: -.04em;
}
.cred-grid span {
  color: var(--text);
}
.statement-box {
  max-width: 930px;
}
.statement-box p {
  max-width: 760px;
  color: var(--text);
  font-size: 18px;
  line-height: 1.75;
}
.service-page-grid {
  display: grid;
  gap: 28px;
}
.service-page-grid article {
  display: grid;
  grid-template-columns: 420px 1fr;
  gap: 34px;
  align-items: center;
  border-radius: 28px;
  background: #fff;
  border: 1px solid rgba(0,0,0,.07);
  overflow: hidden;
  box-shadow: 0 16px 50px rgba(0,0,0,.045);
}
.service-page-grid img {
  width: 100%;
  height: 290px;
  object-fit: cover;
}
.service-page-grid article div {
  padding: 30px 34px 30px 0;
}
.service-page-grid span,
.process-grid span {
  display: block;
  color: var(--green2);
  font-size: 12px;
  font-weight: 850;
  letter-spacing: .22em;
  margin-bottom: 16px;
}
.service-page-grid h2 {
  font-size: clamp(30px,3.5vw,46px);
}
.service-page-grid p {
  color: var(--text);
  line-height: 1.7;
  max-width: 680px;
}
.process-grid {
  display: grid;
  grid-template-columns: repeat(3,1fr);
  gap: 24px;
}
.process-grid article,
.assurance-grid article {
  border-radius: 28px;
  background: #fff;
  border: 1px solid rgba(0,0,0,.07);
  padding: 34px;
  box-shadow: 0 14px 45px rgba(0,0,0,.04);
}
.process-grid h2,
.assurance-grid h2 {
  font-size: clamp(28px,3vw,40px);
}
.process-grid p,
.assurance-grid p {
  color: var(--text);
  line-height: 1.7;
}
.project-page article {
  min-height: 470px;
}
.assurance-grid {
  display: grid;
  grid-template-columns: repeat(3,1fr);
  gap: 24px;
}
@media(max-width:980px){
  .internal-hero-grid,
  .service-page-grid article,
  .process-grid,
  .assurance-grid {
    grid-template-columns: 1fr;
  }
  .internal-hero-image,
  .internal-hero-image img {
    min-height: 420px;
  }
  .service-page-grid article div {
    padding: 30px;
  }
}
@media(max-width:640px){
  .internal-hero {
    padding-top: 124px;
  }
  .cred-grid {
    grid-template-columns: 1fr;
  }
}


/* Multipage v2 — hubs and service pages */
.breadcrumb {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  margin-bottom: 26px;
  color: rgba(255,255,255,.62);
  font-size: 13px;
  font-weight: 750;
}
.breadcrumb a {
  color: rgba(255,255,255,.78);
}
.breadcrumb a:hover {
  color: var(--bright);
}
.breadcrumb span {
  color: rgba(255,255,255,.35);
}
.breadcrumb strong {
  color: var(--bright);
  font-weight: 750;
}

.hub-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 26px;
}
.hub-card {
  position: relative;
  display: grid;
  grid-template-columns: 230px 1fr;
  gap: 28px;
  align-items: center;
  overflow: hidden;
  border-radius: 28px;
  background: #fff;
  border: 1px solid rgba(0,0,0,.07);
  box-shadow: 0 16px 50px rgba(0,0,0,.045);
  transition: transform .35s ease, box-shadow .35s ease;
}
.hub-card:hover {
  transform: translateY(-4px);
  box-shadow: 0 24px 70px rgba(0,0,0,.08);
}
.hub-card img {
  width: 100%;
  height: 100%;
  min-height: 230px;
  object-fit: cover;
  transition: transform .7s ease;
}
.hub-card:hover img {
  transform: scale(1.045);
}
.hub-card div {
  padding: 26px 26px 26px 0;
}
.hub-card span {
  display: block;
  color: var(--green2);
  font-size: 12px;
  font-weight: 850;
  letter-spacing: .22em;
  margin-bottom: 14px;
}
.hub-card h2 {
  font-size: clamp(26px,2.7vw,36px);
  margin-bottom: 12px;
}
.hub-card p {
  color: var(--text);
  line-height: 1.65;
  margin: 0 0 18px;
}
.hub-card em {
  font-style: normal;
  color: var(--green);
  font-weight: 850;
  font-size: 13px;
}

.service-layout {
  display: grid;
  grid-template-columns: 1fr 360px;
  gap: 54px;
  align-items: start;
}
.service-main > p:not(.label) {
  color: var(--text);
  line-height: 1.75;
  font-size: 18px;
  max-width: 760px;
}
.service-points {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 18px;
  margin-top: 40px;
}
.service-points article {
  border-radius: 24px;
  background: #fff;
  border: 1px solid rgba(0,0,0,.07);
  padding: 26px;
  box-shadow: 0 14px 45px rgba(0,0,0,.04);
}
.service-points span {
  display:block;
  color: var(--green2);
  font-size: 12px;
  font-weight: 850;
  letter-spacing: .22em;
  margin-bottom: 30px;
}
.service-points h3 {
  margin: 0 0 10px;
  font-size: 22px;
  letter-spacing: -.03em;
}
.service-points p {
  margin: 0;
  color: var(--text);
  line-height: 1.6;
}

.service-sidebar {
  position: sticky;
  top: 106px;
  border-radius: 26px;
  background: #0E1711;
  color: #fff;
  padding: 26px;
}
.service-sidebar h3 {
  margin: 0 0 18px;
  font-size: 20px;
}
.service-sidebar div {
  display: grid;
  gap: 10px;
}
.service-sidebar a {
  display: grid;
  grid-template-columns: 38px 1fr;
  gap: 12px;
  align-items: center;
  border-top: 1px solid rgba(255,255,255,.12);
  padding-top: 12px;
  color: rgba(255,255,255,.72);
}
.service-sidebar a:hover {
  color: #fff;
}
.service-sidebar span {
  color: var(--bright);
  font-size: 12px;
  font-weight: 850;
}
.service-sidebar strong {
  font-size: 14px;
  line-height: 1.35;
}

.cta-split {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 36px;
}
.cta-split p {
  color: var(--text);
  max-width: 650px;
  line-height: 1.7;
}

@media(max-width:1080px){
  .hub-grid,
  .service-layout {
    grid-template-columns: 1fr;
  }
  .service-sidebar {
    position: static;
  }
}
@media(max-width:760px){
  .hub-card {
    grid-template-columns: 1fr;
  }
  .hub-card div {
    padding: 24px;
  }
  .service-points {
    grid-template-columns: 1fr;
  }
  .cta-split {
    align-items: flex-start;
    flex-direction: column;
  }
}


/* Multipage v4 — Home and navigation refinement */
.nav a.active {
  color: var(--green);
}
.nav a.active:not(.nav-cta)::after {
  content: "";
  display: block;
  height: 2px;
  margin-top: 6px;
  background: var(--green);
  border-radius: 999px;
}
.hero-paths {
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
  margin-top: 26px;
}
.hero-paths a {
  display: inline-flex;
  align-items: center;
  border: 1px solid rgba(255,255,255,.16);
  border-radius: 999px;
  padding: 10px 14px;
  color: rgba(255,255,255,.78);
  background: rgba(255,255,255,.06);
  backdrop-filter: blur(10px);
  font-size: 13px;
  font-weight: 750;
  transition: .25s ease;
}
.hero-paths a:hover {
  color: var(--dark);
  background: var(--bright);
  border-color: var(--bright);
}
.section-head-wide {
  max-width: 920px;
}
.card-actions {
  display: flex;
  align-items: center;
  gap: 18px;
  flex-wrap: wrap;
  margin-top: 26px;
}
.card-actions .button {
  padding: 13px 18px;
  font-size: 13px;
}
.route-band {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 18px;
  margin-top: 28px;
}
.route-band a {
  display: grid;
  gap: 8px;
  border-radius: 24px;
  background: #0E1711;
  color: #fff;
  padding: 24px;
  transition: transform .3s ease, background .3s ease;
}
.route-band a:hover {
  transform: translateY(-3px);
  background: var(--green);
}
.route-band strong {
  font-size: 22px;
  letter-spacing: -.03em;
}
.route-band span {
  color: rgba(255,255,255,.68);
  line-height: 1.55;
}
.actions.centered {
  justify-content: center;
}
.final-cta .label {
  justify-content: center;
  text-align: center;
}

@media(max-width:760px){
  .route-band {
    grid-template-columns: 1fr;
  }
  .card-actions {
    align-items: stretch;
    flex-direction: column;
  }
  .card-actions .button,
  .card-actions .text-link {
    width: 100%;
    justify-content: center;
  }
}


/* Multipage v5 — cover-derived institutional assets */
.brand-panel {
  padding: 94px 0;
}
.brand-panel-grid {
  display: grid;
  grid-template-columns: .82fr 1.18fr;
  gap: 54px;
  align-items: center;
}
.brand-panel-grid h2 {
  color: #fff;
}
.brand-panel-grid p:not(.label) {
  color: rgba(255,255,255,.72);
  line-height: 1.75;
  max-width: 650px;
}
.brand-panel-grid figure {
  position: relative;
  margin: 0;
  min-height: 420px;
  border-radius: 30px;
  overflow: hidden;
  border: 1px solid rgba(255,255,255,.12);
  box-shadow: 0 28px 90px rgba(0,0,0,.24);
}
.brand-panel-grid figure img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.brand-panel-grid figure:after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(90deg, rgba(7,20,13,.42), transparent 58%);
}
.about-cover-panel {
  padding: 96px 0;
}
.about-cover-panel .brand-panel-grid {
  grid-template-columns: 1.08fr .92fr;
}
.visual-cta {
  position: relative;
  overflow: hidden;
  max-width: 1180px;
  min-height: 480px;
  display: grid;
  place-items: center;
  border-radius: 34px;
  color: #fff;
  padding: 64px;
}
.visual-cta > img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.visual-cta:after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(90deg, rgba(7,20,13,.84), rgba(7,20,13,.56), rgba(7,20,13,.16));
}
.visual-cta > div {
  position: relative;
  z-index: 2;
  max-width: 760px;
  text-align: center;
}
.visual-cta .label {
  color: var(--bright);
}
.visual-cta h2 {
  color: #fff;
}
.visual-cta p:not(.label) {
  color: rgba(255,255,255,.76);
}
.visual-cta .text-link {
  color: #fff;
}

@media(max-width:980px){
  .brand-panel-grid,
  .about-cover-panel .brand-panel-grid {
    grid-template-columns: 1fr;
  }
  .brand-panel-grid figure {
    min-height: 360px;
  }
  .visual-cta {
    padding: 42px 24px;
    min-height: 440px;
  }
}


/* Multipage v6 — contact hero image */
.page-contact .internal-hero-image img {
  object-position: center center;
}


/* v8 — service pages aligned with presentation logic */
.service-hero {
  padding: 134px 0 72px;
  min-height: 720px;
}
.service-hero-grid {
  position: relative;
  display: grid;
  grid-template-columns: .9fr 1.1fr;
  gap: 58px;
  align-items: center;
}
.service-hero h1 {
  margin: 0;
  font-size: clamp(50px, 6.6vw, 86px);
  line-height: .95;
  letter-spacing: -.06em;
}
.service-hero p:not(.label) {
  color: rgba(255,255,255,.76);
  line-height: 1.75;
  font-size: 19px;
  max-width: 640px;
}
.service-hero-image {
  margin: 0;
  position: relative;
  min-height: 560px;
  border-radius: 34px;
  overflow: hidden;
  border: 1px solid rgba(255,255,255,.12);
  box-shadow: 0 28px 90px rgba(0,0,0,.28);
}
.service-hero-image img {
  width: 100%;
  height: 100%;
  min-height: 560px;
  object-fit: cover;
}
.service-hero-image:after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(90deg, rgba(7,20,13,.42), transparent 58%);
}
.service-content-grid {
  display: grid;
  grid-template-columns: 1fr 360px;
  gap: 54px;
  align-items: start;
}
.service-content-main {
  min-width: 0;
}
.service-gallery {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 18px;
  margin-bottom: 34px;
}
.service-gallery figure {
  margin: 0;
  min-height: 210px;
  border-radius: 22px;
  overflow: hidden;
  background: #ddd;
  border: 1px solid rgba(0,0,0,.06);
  box-shadow: 0 12px 32px rgba(0,0,0,.045);
}
.service-gallery img {
  width: 100%;
  height: 100%;
  min-height: 210px;
  object-fit: cover;
  filter: saturate(.95) contrast(1.03);
  transition: transform .65s ease;
}
.service-gallery figure:hover img {
  transform: scale(1.045);
}
.value-cards {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 18px;
}
.value-cards article {
  border-radius: 24px;
  background: #fff;
  border: 1px solid rgba(0,0,0,.07);
  padding: 28px;
  box-shadow: 0 14px 45px rgba(0,0,0,.04);
}
.value-cards span {
  display: block;
  color: var(--green2);
  font-size: 12px;
  font-weight: 850;
  letter-spacing: .22em;
  margin-bottom: 34px;
}
.value-cards h3 {
  margin: 0 0 12px;
  font-size: 24px;
  letter-spacing: -.035em;
}
.value-cards p {
  margin: 0;
  color: var(--text);
  line-height: 1.65;
}
@media(max-width:1080px){
  .service-hero-grid,
  .service-content-grid {
    grid-template-columns: 1fr;
  }
  .service-sidebar {
    position: static;
  }
}
@media(max-width:760px){
  .service-gallery,
  .value-cards {
    grid-template-columns: 1fr;
  }
  .service-hero {
    padding-top: 122px;
  }
  .service-hero-image,
  .service-hero-image img {
    min-height: 420px;
  }
}


/* v9 — service page fix */
.service-hero-image {
  background: rgba(255,255,255,.04);
}
.service-hero-image img {
  display: block;
  opacity: 1;
}
.value-cards h3,
.value-cards p {
  overflow-wrap: normal;
  word-break: normal;
}


/* v10 — Structural Works page model */
.page-structural_works .service-hero-image img {
  object-position: center center;
}

.value-cards-stacked {
  grid-template-columns: 1fr;
  gap: 14px;
}

.value-cards-stacked article {
  display: grid;
  grid-template-columns: 86px 1fr;
  gap: 22px;
  align-items: start;
  padding: 24px 28px;
  min-height: auto;
}

.value-cards-stacked article > span {
  margin-bottom: 0;
  padding-top: 6px;
}

.value-cards-stacked h3 {
  margin-bottom: 7px;
}

.value-cards-stacked p {
  max-width: 760px;
}

@media(max-width:640px){
  .value-cards-stacked article {
    grid-template-columns: 1fr;
    gap: 10px;
  }
}


/* v11 — Structural model refinement */
.page-structural_works .service-gallery {
  margin-bottom: 42px;
}

.page-structural_works .service-content-grid {
  align-items: start;
}

.page-structural_works .service-sidebar {
  margin-top: 0;
}

.page-structural_works .value-cards-stacked {
  gap: 16px;
}

.page-structural_works .value-cards-stacked article {
  border-radius: 22px;
}

.page-construction .hub-card[href="structural-works.html"] img {
  object-position: center center;
}


/* v12 — External Finishes page model */
.page-external_finishes .service-hero-image img {
  object-position: center center;
}

.page-external_finishes .service-gallery {
  margin-bottom: 42px;
}

.page-external_finishes .value-cards-stacked {
  gap: 16px;
}

.page-external_finishes .value-cards-stacked article {
  border-radius: 22px;
}

.page-construction .hub-card[href="external-finishes.html"] img {
  object-position: center center;
}


/* v13 — Construction complete */
.page-structural_works .service-gallery,
.page-external_finishes .service-gallery,
.page-interior_finishes .service-gallery,
.page-technical_infrastructures .service-gallery,
.page-project_design_management .service-gallery {
  margin-bottom: 42px;
}

.page-structural_works .value-cards-stacked,
.page-external_finishes .value-cards-stacked,
.page-interior_finishes .value-cards-stacked,
.page-technical_infrastructures .value-cards-stacked,
.page-project_design_management .value-cards-stacked {
  grid-template-columns: 1fr;
  gap: 16px;
}

.page-structural_works .value-cards-stacked article,
.page-external_finishes .value-cards-stacked article,
.page-interior_finishes .value-cards-stacked article,
.page-technical_infrastructures .value-cards-stacked article,
.page-project_design_management .value-cards-stacked article {
  display: grid;
  grid-template-columns: 86px 1fr;
  gap: 22px;
  align-items: start;
  padding: 24px 28px;
  border-radius: 22px;
}

.page-structural_works .value-cards-stacked article > span,
.page-external_finishes .value-cards-stacked article > span,
.page-interior_finishes .value-cards-stacked article > span,
.page-technical_infrastructures .value-cards-stacked article > span,
.page-project_design_management .value-cards-stacked article > span {
  margin-bottom: 0;
  padding-top: 6px;
}

.page-structural_works .value-cards-stacked p,
.page-external_finishes .value-cards-stacked p,
.page-interior_finishes .value-cards-stacked p,
.page-technical_infrastructures .value-cards-stacked p,
.page-project_design_management .value-cards-stacked p {
  max-width: 760px;
}

.page-construction .hub-card[href="structural-works.html"] img,
.page-construction .hub-card[href="external-finishes.html"] img,
.page-construction .hub-card[href="interior-finishes.html"] img,
.page-construction .hub-card[href="technical-infrastructures.html"] img,
.page-construction .hub-card[href="project-design-management.html"] img {
  object-position: center center;
}

@media(max-width:640px){
  .page-structural_works .value-cards-stacked article,
  .page-external_finishes .value-cards-stacked article,
  .page-interior_finishes .value-cards-stacked article,
  .page-technical_infrastructures .value-cards-stacked article,
  .page-project_design_management .value-cards-stacked article {
    grid-template-columns: 1fr;
    gap: 10px;
  }
}


/* v14 — Project Design & Management special page */
.pdm-hero {
  padding: 134px 0 72px;
  min-height: 720px;
}
.pdm-hero-grid {
  position: relative;
  display: grid;
  grid-template-columns: .92fr 1.08fr;
  gap: 58px;
  align-items: center;
}
.pdm-hero h1 {
  margin: 0;
  font-size: clamp(48px, 6.4vw, 82px);
  line-height: .95;
  letter-spacing: -.06em;
}
.pdm-hero p:not(.label) {
  color: rgba(255,255,255,.76);
  line-height: 1.75;
  font-size: 19px;
  max-width: 650px;
}
.pdm-hero-image {
  margin: 0;
  position: relative;
  min-height: 560px;
  border-radius: 34px;
  overflow: hidden;
  border: 1px solid rgba(255,255,255,.12);
  box-shadow: 0 28px 90px rgba(0,0,0,.28);
}
.pdm-hero-image img {
  width: 100%;
  height: 100%;
  min-height: 560px;
  object-fit: cover;
  object-position: center center;
}
.pdm-hero-image:after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(90deg, rgba(7,20,13,.38), transparent 58%);
}
.pdm-metrics {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 18px;
  margin-bottom: 42px;
}
.pdm-metrics article {
  border-radius: 24px;
  background: #fff;
  border: 1px solid rgba(0,0,0,.07);
  padding: 30px;
  box-shadow: 0 14px 45px rgba(0,0,0,.04);
}
.pdm-metrics strong {
  display: block;
  color: var(--green);
  font-size: clamp(34px, 4vw, 48px);
  line-height: 1;
  letter-spacing: -.04em;
  margin-bottom: 12px;
}
.pdm-metrics span {
  display: block;
  color: var(--text);
  line-height: 1.55;
  font-weight: 650;
}
.pdm-strengths {
  border-radius: 28px;
  background: #fff;
  border: 1px solid rgba(0,0,0,.07);
  padding: 34px;
  box-shadow: 0 14px 45px rgba(0,0,0,.04);
}
.pdm-strengths > div {
  display: grid;
  gap: 14px;
}
.pdm-strengths article {
  display: grid;
  grid-template-columns: 70px 1fr;
  gap: 22px;
  border-top: 1px solid rgba(0,0,0,.08);
  padding-top: 18px;
}
.pdm-strengths article:first-child {
  border-top: 0;
  padding-top: 0;
}
.pdm-strengths span {
  color: var(--green2);
  font-size: 12px;
  font-weight: 850;
  letter-spacing: .22em;
  padding-top: 6px;
}
.pdm-strengths h3 {
  margin: 0 0 7px;
  font-size: 24px;
  letter-spacing: -.035em;
}
.pdm-strengths p {
  margin: 0;
  color: var(--text);
  line-height: 1.65;
}
.page-project_design_management .service-sidebar {
  margin-top: 0;
}
.page-construction .hub-card[href="project-design-management.html"] img {
  object-position: center center;
}
@media(max-width:1080px){
  .pdm-hero-grid {
    grid-template-columns: 1fr;
  }
}
@media(max-width:760px){
  .pdm-metrics {
    grid-template-columns: 1fr;
  }
  .pdm-strengths article {
    grid-template-columns: 1fr;
    gap: 8px;
  }
  .pdm-hero-image,
  .pdm-hero-image img {
    min-height: 420px;
  }
}


/* v15 — Fix PDM strength cards layout */
.pdm-strengths article {
  grid-template-columns: 70px minmax(0, 1fr);
  align-items: start;
}

.pdm-strengths article > div {
  min-width: 0;
}

.pdm-strengths article > div h3 {
  margin: 0 0 8px;
}

.pdm-strengths article > div p {
  margin: 0;
  color: var(--text);
  line-height: 1.65;
  max-width: 760px;
}

@media(max-width:760px){
  .pdm-strengths article {
    grid-template-columns: 1fr;
  }
}


/* v16 — Cleaner value cards without decorative numbers */
.value-cards-stacked article {
  grid-template-columns: 1fr !important;
  padding: 26px 30px;
}

.value-cards-stacked article > div {
  min-width: 0;
}

.value-cards-stacked article > div h3,
.value-cards-stacked article > h3 {
  margin: 0 0 8px;
}

.value-cards-stacked article > div p,
.value-cards-stacked article > p {
  max-width: 820px;
}

/* Keep numbering where it has navigational/structural function */
.service-sidebar span,
.breadcrumb span,
.pdm-strengths span,
.process-grid span,
.steps span {
  display: initial;
}

@media(max-width:640px){
  .value-cards-stacked article {
    padding: 22px;
  }
}


/* v17 — Industrial complete */
.page-maintenance_facility_services .service-gallery,
.page-structural_fabrication_assembly .service-gallery,
.page-advanced_surface_protection .service-gallery,
.page-integrated_piping_systems .service-gallery {
  margin-bottom: 42px;
}

.page-maintenance_facility_services .value-cards-stacked,
.page-structural_fabrication_assembly .value-cards-stacked,
.page-advanced_surface_protection .value-cards-stacked,
.page-integrated_piping_systems .value-cards-stacked {
  grid-template-columns: 1fr;
  gap: 16px;
}

.page-maintenance_facility_services .value-cards-stacked article,
.page-structural_fabrication_assembly .value-cards-stacked article,
.page-advanced_surface_protection .value-cards-stacked article,
.page-integrated_piping_systems .value-cards-stacked article {
  display: grid;
  grid-template-columns: 1fr;
  padding: 26px 30px;
  border-radius: 22px;
}

.page-maintenance_facility_services .value-cards-stacked p,
.page-structural_fabrication_assembly .value-cards-stacked p,
.page-advanced_surface_protection .value-cards-stacked p,
.page-integrated_piping_systems .value-cards-stacked p {
  max-width: 820px;
}

.page-industrial .hub-card[href="maintenance-facility-services.html"] img,
.page-industrial .hub-card[href="structural-fabrication-assembly.html"] img,
.page-industrial .hub-card[href="advanced-surface-protection.html"] img,
.page-industrial .hub-card[href="integrated-piping-systems.html"] img,
.page-industrial .hub-card[href="industrial-procurement.html"] img {
  object-position: center center;
}

.procurement-metrics strong {
  font-size: clamp(28px, 3.2vw, 42px);
}

.procurement-strengths article {
  grid-template-columns: 70px minmax(0, 1fr);
}

.procurement-strengths article > div {
  min-width: 0;
}

.procurement-strengths article > div h3 {
  margin: 0 0 8px;
}

.procurement-strengths article > div p {
  max-width: 760px;
}

@media(max-width:760px){
  .procurement-strengths article {
    grid-template-columns: 1fr;
  }
}


/* v18 — Assurance hero image refinement */
.page-assurance .internal-hero-image img {
  object-position: center center;
}


/* v19 — Projects hero image */
.page-projects .internal-hero-image img {
  object-position: center center;
}


/* v20 — Homepage category images */
.page-index .capability-card img {
  object-position: center center;
  filter: saturate(.92) contrast(1.03);
}

.page-index .capability-card:first-child img {
  object-position: center center;
}

.page-index .capability-card:nth-child(2) img {
  object-position: center center;
}

.page-index .capability-card {
  overflow: hidden;
}

.page-index .capability-card::before {
  content: "";
  position: absolute;
  inset: 0 0 auto 0;
  height: 52%;
  pointer-events: none;
  background: linear-gradient(180deg, rgba(7,20,13,.10), transparent 70%);
  z-index: 1;
}

.page-index .capability-card .card-body {
  position: relative;
  z-index: 2;
}


/* v21 — Home editorial refinement */
.page-index .stats {
  margin-top: -54px;
  position: relative;
  z-index: 5;
}

.page-index .two-col {
  padding-top: 34px;
}

/* Removed repeated brand panel from Home; keep class available for other pages */
.page-index #capabilities {
  padding-top: 104px;
}

/* Model block: less heavy image treatment and more controlled height */
.page-index .model {
  padding: 104px 0;
}

.page-index .model .image-card img,
.page-index .model figure img {
  filter: brightness(.72) saturate(.85);
}

.page-index .model .image-card::after,
.page-index .model figure::after {
  opacity: .22;
}

/* Projects on Home: more compact, less dominant */
.page-index .projects {
  padding-top: 96px;
  padding-bottom: 96px;
}

.page-index .project-grid {
  margin-top: 34px;
}

/* Assurance on Home: keep institutional, reduce visual weight */
.page-index .assurance {
  padding: 96px 0;
}

.page-index .assurance .image-card,
.page-index .assurance figure {
  max-height: 560px;
}

/* CTA final: stronger technical/contact image, less repeated cover identity */
.page-index .visual-cta > img {
  filter: brightness(.58) saturate(.9) contrast(1.04);
}

.page-index .visual-cta:after {
  background: linear-gradient(90deg, rgba(7,20,13,.86), rgba(7,20,13,.58), rgba(7,20,13,.18));
}

.page-index .contact.surface {
  padding-top: 104px;
  padding-bottom: 104px;
}

/* Remove visual redundancy from capability route band if older cached markup exists */
.page-index .route-band {
  display: none;
}

@media(max-width:760px){
  .page-index .stats {
    margin-top: 0;
  }
  .page-index #capabilities,
  .page-index .model,
  .page-index .projects,
  .page-index .assurance,
  .page-index .contact.surface {
    padding-top: 72px;
    padding-bottom: 72px;
  }
}


/* v22 — Home fixes: proof strip, model image, assurance image, contact CTA */
.page-index .metrics {
  display: none;
}

.proof-strip {
  position: relative;
  z-index: 5;
  margin-top: -38px;
  padding: 0 0 34px;
}

.proof-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  background: rgba(255,255,255,.96);
  border: 1px solid rgba(0,0,0,.07);
  border-radius: 26px;
  box-shadow: 0 18px 55px rgba(0,0,0,.08);
  overflow: hidden;
  max-width: 1060px;
}

.proof-grid div {
  padding: 24px 30px;
  border-left: 1px solid rgba(0,0,0,.07);
}

.proof-grid div:first-child {
  border-left: 0;
}

.proof-grid span {
  display: block;
  color: var(--green);
  font-size: clamp(28px, 3vw, 42px);
  line-height: 1;
  font-weight: 900;
  letter-spacing: -.04em;
  margin-bottom: 8px;
}

.proof-grid p {
  margin: 0;
  color: var(--text);
  font-size: 14px;
  line-height: 1.4;
}

/* Give the next section clean spacing after the slimmer proof strip */
.page-index .proof-strip + .section .two-col {
  padding-top: 58px;
}

/* Model: image must be readable, not buried under darkness */
.page-index .model .model-panel img,
.page-index .model .image-card img,
.page-index .model figure img {
  filter: brightness(.92) saturate(.92) contrast(1.02) !important;
  opacity: 1;
}

.page-index .model .model-panel::after,
.page-index .model .image-card::after,
.page-index .model figure::after {
  background: linear-gradient(90deg, rgba(7,20,13,.28), rgba(7,20,13,.05)) !important;
  opacity: .18 !important;
}

/* Assurance on Home: use the more institutional procurement/control image */
.page-index .assurance .image-frame img {
  object-position: center center;
  filter: brightness(.86) saturate(.94) contrast(1.03);
}

.page-index .assurance .image-frame:after {
  background: linear-gradient(180deg, transparent 42%, rgba(7,20,13,.50));
}

/* Contact CTA: single clear action */
.page-index .visual-cta .actions.centered {
  justify-content: center;
  gap: 0;
}

.page-index .visual-cta .actions.centered .button {
  min-width: 180px;
}

@media(max-width:820px){
  .proof-strip {
    margin-top: 0;
    padding: 26px 0;
  }
  .proof-grid {
    grid-template-columns: repeat(2, 1fr);
  }
  .proof-grid div:nth-child(3) {
    border-left: 0;
    border-top: 1px solid rgba(0,0,0,.07);
  }
  .proof-grid div:nth-child(4) {
    border-top: 1px solid rgba(0,0,0,.07);
  }
}

@media(max-width:520px){
  .proof-grid {
    grid-template-columns: 1fr;
  }
  .proof-grid div {
    border-left: 0;
    border-top: 1px solid rgba(0,0,0,.07);
  }
  .proof-grid div:first-child {
    border-top: 0;
  }
}


/* v23 — Category hero images on main Construction / Industrial pages */
.page-construction .service-hero img,
.page-construction .page-hero img,
.page-construction .category-hero img,
.page-industrial .service-hero img,
.page-industrial .page-hero img,
.page-industrial .category-hero img {
  object-position: center center;
  filter: saturate(.94) contrast(1.03);
}

.page-construction .service-hero .image-card::after,
.page-construction .page-hero .image-card::after,
.page-construction .category-hero .image-card::after,
.page-industrial .service-hero .image-card::after,
.page-industrial .page-hero .image-card::after,
.page-industrial .category-hero .image-card::after {
  background: linear-gradient(180deg, rgba(7,20,13,.08), rgba(7,20,13,.22));
}


/* v24 — Metrics integrated into hero */
.page-index .proof-strip,
.page-index .metrics {
  display: none !important;
}

.hero-facts {
  display: flex;
  flex-wrap: wrap;
  gap: 12px 20px;
  margin-top: 28px;
  padding-top: 24px;
  border-top: 1px solid rgba(255,255,255,.14);
  max-width: 660px;
}

.hero-facts span {
  display: inline-flex;
  align-items: baseline;
  gap: 7px;
  color: rgba(255,255,255,.62);
  font-size: 13px;
  line-height: 1.2;
}

.hero-facts strong {
  color: var(--bright);
  font-size: 18px;
  line-height: 1;
  font-weight: 900;
  letter-spacing: -.03em;
}

.hero-facts em {
  font-style: normal;
  color: rgba(255,255,255,.68);
}

@media(max-width:640px){
  .hero-facts {
    display: grid;
    grid-template-columns: 1fr;
    gap: 10px;
  }
}


/* v25 — Company metrics */
.hero-facts,
.page-index .proof-strip,
.page-index .metrics {
  display: none !important;
}

.company-metrics {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 26px;
  margin: 30px 0 30px;
  padding-top: 26px;
  border-top: 1px solid rgba(0,0,0,.10);
  max-width: 640px;
}

.company-metrics div {
  min-width: 0;
}

.company-metrics strong {
  display: block;
  color: var(--black);
  font-size: clamp(34px, 4vw, 48px);
  line-height: .95;
  letter-spacing: -.055em;
  font-weight: 850;
  margin-bottom: 9px;
}

.company-metrics span {
  display: block;
  color: var(--text);
  font-size: 13px;
  line-height: 1.45;
  max-width: 130px;
}

@media(max-width:760px){
  .company-metrics {
    grid-template-columns: 1fr;
    gap: 18px;
  }
  .company-metrics span {
    max-width: none;
  }
}


/* v26 — Company metrics refined to match presentation scale */
.company-metrics {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 34px;
  margin: 28px 0 28px;
  padding-top: 22px;
  border-top: 1px solid rgba(0,0,0,.09);
  max-width: 560px;
}

.company-metrics strong {
  display: block;
  color: var(--black);
  font-size: clamp(24px, 2.1vw, 31px);
  line-height: 1;
  letter-spacing: -.035em;
  font-weight: 800;
  margin-bottom: 7px;
}

.company-metrics span {
  display: block;
  color: var(--text);
  font-size: 13px;
  line-height: 1.35;
  max-width: 105px;
}

@media(max-width:760px){
  .company-metrics {
    grid-template-columns: repeat(3, 1fr);
    gap: 18px;
    max-width: none;
  }

  .company-metrics strong {
    font-size: 24px;
  }

  .company-metrics span {
    font-size: 12px;
    max-width: 95px;
  }
}

@media(max-width:520px){
  .company-metrics {
    grid-template-columns: 1fr;
    gap: 14px;
  }

  .company-metrics span {
    max-width: none;
  }
}


/* v27 — Center metric content only */
.company-metrics {
  max-width: 520px;
  gap: 26px;
}

.company-metrics div {
  text-align: center;
}

.company-metrics span {
  margin-left: auto;
  margin-right: auto;
  max-width: 115px;
}

@media(max-width:760px){
  .company-metrics {
    max-width: 520px;
  }
}


/* v28 — Discreet process strip in Home / Model */
.model-process-strip {
  width: min(1060px, calc(100% - 48px));
  margin: 46px auto 0;
  padding: 18px 24px;
  border-radius: 999px;
  background: rgba(255,255,255,.96);
  border: 1px solid rgba(255,255,255,.16);
  box-shadow: 0 18px 55px rgba(0,0,0,.16);
  display: flex;
  justify-content: center;
  align-items: center;
  gap: 18px;
  text-align: center;
}

.model-process-strip span {
  color: var(--black);
  font-size: 13px;
  line-height: 1.35;
  font-weight: 750;
  letter-spacing: -.01em;
}

.model-process-strip i {
  width: 4px;
  height: 4px;
  border-radius: 50%;
  background: var(--green2);
  flex: 0 0 auto;
}

@media(max-width:980px){
  .model-process-strip {
    border-radius: 28px;
    flex-wrap: wrap;
    gap: 12px 16px;
  }
}

@media(max-width:620px){
  .model-process-strip {
    display: grid;
    grid-template-columns: 1fr;
    border-radius: 24px;
    text-align: left;
  }

  .model-process-strip i {
    display: none;
  }
}


/* v29 — Model process as discreet white text block */
.model-process-strip {
  width: min(1080px, calc(100% - 48px)) !important;
  margin: 42px auto 0 !important;
  padding: 24px 0 0 !important;
  border-radius: 0 !important;
  background: transparent !important;
  border: 0 !important;
  border-top: 1px solid rgba(255,255,255,.14) !important;
  box-shadow: none !important;
  display: flex !important;
  justify-content: center !important;
  align-items: center !important;
  gap: 18px !important;
  text-align: center !important;
}

.model-process-strip span {
  color: rgba(255,255,255,.78) !important;
  font-size: 13px !important;
  line-height: 1.45 !important;
  font-weight: 650 !important;
  letter-spacing: 0 !important;
}

.model-process-strip i {
  width: auto !important;
  height: auto !important;
  border-radius: 0 !important;
  background: transparent !important;
  flex: 0 0 auto !important;
}

.model-process-strip i::before {
  content: "|";
  color: rgba(255,255,255,.28);
  font-style: normal;
}

@media(max-width:980px){
  .model-process-strip {
    flex-wrap: wrap !important;
    gap: 10px 14px !important;
  }
}

@media(max-width:620px){
  .model-process-strip {
    display: grid !important;
    grid-template-columns: 1fr !important;
    text-align: left !important;
    gap: 10px !important;
  }

  .model-process-strip i {
    display: none !important;
  }
}


/* v30 — Home / strategic sectors refined */
.projects-grid div {
  left: 26px;
  right: 26px;
  bottom: 24px;
}

.projects-grid h3 {
  margin: 0;
  font-size: 30px;
  letter-spacing: -.04em;
}

.projects-grid span {
  display: none;
}

.projects-process-strip {
  margin: 28px auto 0;
  display: flex;
  justify-content: center;
  align-items: center;
  gap: 18px;
  text-align: center;
  flex-wrap: wrap;
  max-width: 900px;
}

.projects-process-strip span {
  color: var(--black) !important;
  font-size: 13px !important;
  line-height: 1.45 !important;
  font-weight: 650 !important;
  letter-spacing: 0 !important;
}

.projects-process-strip i {
  width: auto;
  height: auto;
  background: transparent;
  flex: 0 0 auto;
}

.projects-process-strip i::before {
  content: "|";
  color: rgba(31,31,31,.26);
  font-style: normal;
}

@media(max-width:640px){
  .projects-process-strip {
    display: grid;
    grid-template-columns: 1fr;
    gap: 8px;
  }

  .projects-process-strip i {
    display: none;
  }
}


/* v33 — Home assurance refined: text left, image right, no caption, discreet text block */
.page-index .assurance .assurance-home-grid {
  align-items: center;
}

.page-index .assurance .assurance-home-grid .copy {
  order: 1;
}

.page-index .assurance .assurance-home-grid figure {
  order: 2;
}

.page-index .assurance .assurance-home-grid figure figcaption {
  display: none !important;
}

.assurance-process-strip {
  width: min(1080px, calc(100% - 48px));
  margin: 42px auto 0;
  padding: 24px 0 0;
  border-top: 1px solid rgba(255,255,255,.14);
  display: flex;
  justify-content: center;
  align-items: center;
  gap: 18px;
  text-align: center;
}

.assurance-process-strip span {
  color: rgba(255,255,255,.78);
  font-size: 13px;
  line-height: 1.45;
  font-weight: 650;
  letter-spacing: 0;
}

.assurance-process-strip i {
  width: auto;
  height: auto;
  background: transparent;
  flex: 0 0 auto;
}

.assurance-process-strip i::before {
  content: "|";
  color: rgba(255,255,255,.28);
  font-style: normal;
}

@media(max-width:980px){
  .assurance-process-strip {
    flex-wrap: wrap;
    gap: 10px 14px;
  }
}

@media(max-width:620px){
  .assurance-process-strip {
    display: grid;
    grid-template-columns: 1fr;
    text-align: left;
    gap: 10px;
  }

  .assurance-process-strip i {
    display: none;
  }
}


/* v34 — Technical cleanup */
.page-index .capability-card .card-actions {
  gap: 0;
}

.page-index .capability-card .card-actions .button {
  width: fit-content;
}

@media(max-width:760px){
  .page-index .capability-card .card-actions .button {
    width: 100%;
  }
}


/* v35 — Refined site frame: header, hero CTA, footer */

/* Header */
.refined-header {
  position: fixed;
  top: 18px;
  left: 0;
  right: 0;
  z-index: 1000;
  background: transparent;
  border: 0;
  box-shadow: none;
  padding: 0;
}

.refined-header .header-shell {
  width: min(1280px, calc(100% - 40px));
  margin: 0 auto;
  height: 72px;
  border-radius: 999px;
  background: rgba(255,255,255,.92);
  border: 1px solid rgba(0,0,0,.07);
  box-shadow: 0 18px 55px rgba(0,0,0,.10);
  backdrop-filter: blur(18px);
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 0 12px 0 22px;
}

.refined-header .brand {
  display: inline-flex;
  align-items: center;
  flex: 0 0 auto;
}

.refined-header .brand img {
  height: 38px;
  width: auto;
  display: block;
}

.refined-header .nav {
  display: flex;
  align-items: center;
  gap: 3px;
}

.refined-header .nav a:not(.nav-cta) {
  color: rgba(31,31,31,.66);
  font-size: 13px;
  font-weight: 650;
  letter-spacing: -.01em;
  padding: 10px 10px;
  border-radius: 999px;
  transition: color .25s ease, background .25s ease;
}

.refined-header .nav a:not(.nav-cta):hover {
  color: var(--black);
  background: rgba(8,64,19,.06);
}

.refined-header .nav a.active:not(.nav-cta) {
  color: var(--green);
  background: rgba(8,64,19,.08);
}

.refined-header .nav a.active:not(.nav-cta)::after {
  display: none;
}

.refined-header .nav-cta {
  margin-left: 8px;
  background: var(--green);
  color: #fff;
  border-radius: 999px;
  padding: 12px 18px;
  font-size: 13px;
  font-weight: 800;
  box-shadow: 0 10px 24px rgba(8,64,19,.18);
}

.refined-header .nav-cta:hover {
  background: var(--green2);
}

.refined-header .lang-switch {
  margin-left: 10px;
  background: rgba(31,31,31,.05);
  border: 1px solid rgba(0,0,0,.06);
  border-radius: 999px;
  padding: 3px;
  display: inline-flex;
  gap: 2px;
}

.refined-header .lang-switch button {
  border: 0;
  background: transparent;
  color: rgba(31,31,31,.55);
  border-radius: 999px;
  padding: 7px 8px;
  font-size: 11px;
  font-weight: 800;
  cursor: pointer;
}

.refined-header .lang-switch button.active {
  background: #fff;
  color: var(--green);
  box-shadow: 0 2px 8px rgba(0,0,0,.08);
}

/* Hero CTA */
.button-hero-primary {
  position: relative;
  display: inline-flex;
  align-items: center;
  gap: 10px;
  background: linear-gradient(135deg, var(--green), var(--green2));
  color: #fff;
  border: 1px solid rgba(255,255,255,.14);
  border-radius: 999px;
  padding: 15px 22px;
  font-size: 14px;
  font-weight: 850;
  box-shadow: 0 18px 42px rgba(0,0,0,.22);
}

.button-hero-primary::after {
  content: "→";
  font-weight: 800;
  transition: transform .25s ease;
}

.button-hero-primary:hover {
  transform: translateY(-1px);
  background: linear-gradient(135deg, #0A4A18, var(--green2));
}

.button-hero-primary:hover::after {
  transform: translateX(3px);
}

/* Footer */
.refined-footer {
  background:
    radial-gradient(circle at 20% 0%, rgba(31,95,74,.28), transparent 32%),
    linear-gradient(180deg, #0E1711, #060B08);
  color: #fff;
  padding: 74px 0 30px;
  border-top: 1px solid rgba(255,255,255,.08);
}

.footer-top {
  display: grid;
  grid-template-columns: 1fr auto;
  gap: 48px;
  align-items: end;
  padding-bottom: 44px;
  border-bottom: 1px solid rgba(255,255,255,.10);
}

.footer-brand img {
  width: 172px;
  height: auto;
  display: block;
  margin-bottom: 22px;
}

.footer-brand p {
  margin: 0;
  max-width: 420px;
  color: rgba(255,255,255,.68);
  line-height: 1.65;
}

.footer-cta {
  text-align: right;
}

.footer-cta h3 {
  margin: 0 0 16px;
  color: #fff;
  font-size: clamp(26px, 3vw, 38px);
  line-height: 1;
  letter-spacing: -.055em;
}

.footer-cta a {
  display: inline-flex;
  align-items: center;
  border-radius: 999px;
  background: #fff;
  color: var(--green);
  padding: 13px 18px;
  font-size: 13px;
  font-weight: 850;
}

.footer-cta a:hover {
  background: var(--bright);
  color: var(--dark);
}

.footer-main {
  display: grid;
  grid-template-columns: 1.1fr 1fr 1.2fr;
  gap: 40px;
  padding: 42px 0;
  border-bottom: 1px solid rgba(255,255,255,.10);
}

.footer-col {
  display: grid;
  align-content: start;
  gap: 11px;
}

.footer-col strong {
  color: rgba(255,255,255,.92);
  font-size: 12px;
  letter-spacing: .16em;
  text-transform: uppercase;
  margin-bottom: 8px;
}

.footer-col a,
.footer-col span {
  color: rgba(255,255,255,.62);
  font-size: 14px;
  line-height: 1.5;
}

.footer-col a:hover {
  color: #fff;
}

.refined-footer .footer-contact {
  display: grid;
  gap: 11px;
}

.footer-bottom {
  display: flex;
  justify-content: space-between;
  gap: 24px;
  padding-top: 24px;
  color: rgba(255,255,255,.42);
  font-size: 12px;
}

/* Avoid old footer grid rules conflicting */
.refined-footer .footer-grid {
  display: none !important;
}

@media(max-width:1180px){
  .refined-header .nav a:not(.nav-cta) {
    padding: 10px 7px;
    font-size: 12px;
  }
  .refined-header .brand img {
    height: 34px;
  }
}

@media(max-width:980px){
  .refined-header {
    top: 10px;
  }

  .refined-header .header-shell {
    width: min(100% - 24px, 760px);
    height: 66px;
    padding: 0 14px 0 18px;
  }

  .refined-header .menu-button {
    display: inline-flex;
    position: relative;
    right: auto;
    top: auto;
    transform: none;
  }

  .refined-header .nav {
    position: absolute;
    top: 76px;
    right: 12px;
    left: 12px;
    display: none;
    flex-direction: column;
    align-items: stretch;
    gap: 4px;
    padding: 18px;
    border-radius: 24px;
    background: rgba(255,255,255,.96);
    border: 1px solid rgba(0,0,0,.08);
    box-shadow: 0 24px 70px rgba(0,0,0,.16);
  }

  .refined-header .nav.open,
  .refined-header .nav.is-open,
  .refined-header [data-nav].open,
  .refined-header [data-nav].is-open {
    display: flex;
  }

  .refined-header .nav a:not(.nav-cta),
  .refined-header .nav-cta {
    width: 100%;
    text-align: center;
    justify-content: center;
  }

  .refined-header .lang-switch {
    justify-content: center;
    margin: 8px 0 4px;
  }

  .footer-top,
  .footer-main {
    grid-template-columns: 1fr;
  }

  .footer-cta {
    text-align: left;
  }

  .footer-bottom {
    flex-direction: column;
  }
}

@media(max-width:620px){
  .refined-header .brand img {
    height: 30px;
  }

  .refined-footer {
    padding-top: 58px;
  }

  .footer-brand img {
    width: 148px;
  }
}


/* v36 Premium Refinement — from v35 base, not rejected hybrid nav */

/* Priority 1 — Refine navbar without changing navigation model */
.refined-header {
  top: 14px;
}

.refined-header .header-shell {
  height: 62px;
  width: min(1240px, calc(100% - 44px));
  border-radius: 999px;
  background: rgba(255,255,255,.88);
  border: 1px solid rgba(0,0,0,.055);
  box-shadow: 0 12px 34px rgba(0,0,0,.075);
  padding: 0 10px 0 18px;
}

.refined-header .brand img {
  height: 32px;
}

.refined-header .nav {
  gap: 0;
}

.refined-header .nav a:not(.nav-cta) {
  font-size: 12.5px;
  font-weight: 620;
  color: rgba(31,31,31,.60);
  padding: 9px 8px;
}

.refined-header .nav a:not(.nav-cta):hover {
  background: rgba(8,64,19,.045);
  color: rgba(31,31,31,.86);
}

.refined-header .nav a.active:not(.nav-cta) {
  background: transparent;
  color: var(--green);
}

.refined-header .nav-cta {
  padding: 10px 15px;
  font-size: 12.5px;
  box-shadow: none;
  background: #084013;
}

.refined-header .lang-switch {
  margin-left: 8px;
  background: transparent;
  border: 1px solid rgba(0,0,0,.07);
}

.refined-header .lang-switch button {
  padding: 6px 7px;
  font-size: 10.5px;
}

/* Priority 3 — More discreet hero CTA */
.button-hero-primary {
  padding: 13px 19px;
  font-size: 13.5px;
  box-shadow: 0 10px 28px rgba(0,0,0,.18);
  background: #084013;
  border-color: rgba(255,255,255,.12);
}

.button-hero-primary:hover {
  background: #1F5F4A;
  transform: translateY(-1px);
}

/* Priority 5 — Company metrics refinement */
.company-metrics {
  max-width: 500px;
  gap: 22px;
  margin: 26px 0 28px;
  padding-top: 22px;
  border-top: 1px solid rgba(0,0,0,.085);
}

.company-metrics strong {
  font-size: clamp(23px, 2vw, 29px);
  font-weight: 780;
  letter-spacing: -.035em;
  margin-bottom: 6px;
}

.company-metrics span {
  font-size: 12.5px;
  line-height: 1.35;
  color: rgba(79,79,79,.92);
}

/* Priority 4 — Make the three process text blocks a consistent system */
.model-process-strip,
.projects-process-strip,
.assurance-process-strip {
  font-size: 13px;
}

.model-process-strip span,
.projects-process-strip span,
.assurance-process-strip span {
  font-size: 13px !important;
  line-height: 1.45 !important;
  font-weight: 640 !important;
  letter-spacing: 0 !important;
}

.model-process-strip,
.assurance-process-strip {
  margin-top: 38px !important;
  padding-top: 22px !important;
}

.projects-process-strip {
  margin-top: 26px !important;
}

/* Priority 6 — Home model image clearer and more relevant */
.page-index .model .model-panel img,
.page-index .model .image-card img,
.page-index .model figure img {
  filter: brightness(.98) saturate(.96) contrast(1.02) !important;
  object-position: center center;
}

.page-index .model .model-panel::after,
.page-index .model .image-card::after,
.page-index .model figure::after {
  background: linear-gradient(90deg, rgba(7,20,13,.16), rgba(7,20,13,.02)) !important;
  opacity: .12 !important;
}

/* Priority 7 — Projects section refinement */
.projects-grid article:after {
  background: linear-gradient(to top, rgba(0,0,0,.64), rgba(0,0,0,.05));
}

.projects-grid h3 {
  font-size: clamp(24px, 2.5vw, 28px);
  letter-spacing: -.04em;
}

.projects-grid article {
  min-height: 340px;
}

/* Priority 2 — Footer refinement */
.refined-footer {
  padding: 64px 0 28px;
  background:
    radial-gradient(circle at 12% 0%, rgba(31,95,74,.20), transparent 30%),
    linear-gradient(180deg, #0C140F, #050806);
}

.footer-top {
  padding-bottom: 36px;
}

.footer-brand img {
  width: 154px;
  margin-bottom: 18px;
}

.footer-brand p {
  color: rgba(255,255,255,.62);
  max-width: 390px;
}

.footer-cta h3 {
  font-size: clamp(24px, 2.5vw, 34px);
  letter-spacing: -.05em;
}

.footer-cta a {
  padding: 12px 16px;
  font-size: 12.5px;
}

.footer-main {
  padding: 34px 0;
  gap: 34px;
}

.footer-col strong {
  font-size: 11px;
  letter-spacing: .14em;
}

.footer-col a,
.footer-col span {
  font-size: 13.5px;
  color: rgba(255,255,255,.58);
}

.footer-bottom {
  padding-top: 22px;
}

/* Priority 10 — Mobile tightening */
@media(max-width:980px){
  .refined-header .header-shell {
    height: 60px;
  }

  .refined-header .brand img {
    height: 30px;
  }

  .refined-header .nav {
    top: 70px;
  }

  .hero-copy {
    padding-top: 18px;
  }

  .company-metrics {
    grid-template-columns: repeat(3, 1fr);
    gap: 14px;
    max-width: none;
  }

  .projects-grid article {
    min-height: 300px;
  }
}

@media(max-width:620px){
  .company-metrics {
    grid-template-columns: 1fr;
    text-align: left;
    gap: 12px;
  }

  .company-metrics div {
    text-align: left;
  }

  .company-metrics span {
    margin-left: 0;
    margin-right: 0;
    max-width: none;
  }

  .model-process-strip,
  .projects-process-strip,
  .assurance-process-strip {
    text-align: left !important;
  }

  .projects-grid article {
    min-height: 280px;
  }

  .footer-cta h3 {
    max-width: 320px;
  }
}


/* v37 — Comparison version with 3D transparent logos */
.refined-header .brand img {
  height: 36px;
  width: auto;
}

.footer-brand img {
  width: 168px;
  height: auto;
}

@media(max-width:980px){
  .refined-header .brand img {
    height: 33px;
  }
}

@media(max-width:620px){
  .refined-header .brand img {
    height: 31px;
  }

  .footer-brand img {
    width: 156px;
  }
}


/* v38 — Footer logo fix */
.footer-brand img {
  width: 158px;
  height: auto;
  display: block;
  margin-bottom: 18px;
}

/* v44 — Footer logo locked: cropped source + true left alignment */
.footer-top {
  align-items: start;
}

.footer-brand {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  justify-content: flex-start;
}

.footer-brand img {
  width: 104px;
  height: auto;
  display: block;
  margin: 0 0 14px 0;
}

.footer-brand p {
  margin: 0;
  max-width: 360px;
}

@media(max-width:620px){
  .footer-brand img {
    width: 98px;
    margin-left: 0;
  }
}


/* v46 — Projetos selecionados com galeria/modal */
.projects-categories-section {
  padding-bottom: 38px;
}

.selected-projects-section {
  padding-top: 86px;
}

.selected-projects-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 24px;
  margin-top: 38px;
}

.selected-project-card {
  position: relative;
  min-height: 360px;
  border: 0;
  padding: 0;
  border-radius: 28px;
  overflow: hidden;
  background: #101712;
  cursor: pointer;
  text-align: left;
  box-shadow: 0 24px 70px rgba(0,0,0,.12);
  transition: transform .28s ease, box-shadow .28s ease;
}

.selected-project-card:hover {
  transform: translateY(-4px);
  box-shadow: 0 30px 88px rgba(0,0,0,.18);
}

.selected-project-card img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform .45s ease;
}

.selected-project-card:hover img {
  transform: scale(1.035);
}

.selected-project-card:after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(to top, rgba(0,0,0,.72), rgba(0,0,0,.12) 58%, rgba(0,0,0,.04));
}

.selected-project-card > div {
  position: absolute;
  z-index: 1;
  left: 26px;
  right: 26px;
  bottom: 24px;
  color: #fff;
}

.selected-project-card span {
  display: block;
  margin-bottom: 9px;
  color: rgba(255,255,255,.72);
  font-size: 11px;
  font-weight: 800;
  letter-spacing: .13em;
  text-transform: uppercase;
}

.selected-project-card h3 {
  margin: 0 0 8px;
  color: #fff;
  font-size: clamp(24px, 2vw, 30px);
  line-height: 1;
  letter-spacing: -.045em;
}

.selected-project-card p {
  margin: 0;
  color: rgba(255,255,255,.72);
  font-size: 14px;
  line-height: 1.5;
}

.project-modal {
  position: fixed;
  inset: 0;
  z-index: 5000;
  display: none;
}

.project-modal.is-open {
  display: block;
}

.project-modal-backdrop {
  position: absolute;
  inset: 0;
  background: rgba(2,8,5,.82);
  backdrop-filter: blur(10px);
}

.project-modal-dialog {
  position: absolute;
  inset: 34px;
  display: grid;
  grid-template-columns: 330px 1fr;
  grid-template-rows: 1fr auto;
  gap: 26px;
  padding: 30px;
  border-radius: 34px;
  background: #F7F7F4;
  box-shadow: 0 40px 140px rgba(0,0,0,.35);
  overflow: hidden;
}

.project-modal-close {
  position: absolute;
  top: 18px;
  right: 18px;
  z-index: 3;
  width: 42px;
  height: 42px;
  border: 0;
  border-radius: 50%;
  background: #084013;
  color: #fff;
  font-size: 26px;
  line-height: 1;
  cursor: pointer;
}

.project-modal-head {
  align-self: center;
  padding-right: 12px;
}

.project-modal-head h2 {
  margin: 0 0 18px;
  font-size: clamp(34px, 4vw, 54px);
  line-height: .96;
  letter-spacing: -.06em;
}

.project-modal-head p:not(.label) {
  color: var(--muted);
  line-height: 1.65;
}

.project-modal-stage {
  position: relative;
  min-height: 520px;
  border-radius: 28px;
  overflow: hidden;
  background: #101712;
}

.project-modal-stage img {
  width: 100%;
  height: 100%;
  min-height: 520px;
  object-fit: contain;
  display: block;
  background: #101712;
}

.project-modal-nav {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  z-index: 2;
  width: 46px;
  height: 46px;
  border: 0;
  border-radius: 50%;
  background: rgba(255,255,255,.92);
  color: var(--green);
  font-size: 38px;
  line-height: 1;
  cursor: pointer;
}

.project-modal-nav.prev { left: 16px; }
.project-modal-nav.next { right: 16px; }

.project-modal-count {
  grid-column: 1 / 2;
  align-self: end;
  color: var(--muted);
  font-size: 13px;
  font-weight: 700;
}

.project-modal-thumbs {
  grid-column: 2 / 3;
  display: flex;
  gap: 10px;
  overflow-x: auto;
  padding-bottom: 2px;
}

.project-modal-thumbs button {
  flex: 0 0 96px;
  height: 64px;
  border: 2px solid transparent;
  border-radius: 14px;
  overflow: hidden;
  padding: 0;
  background: transparent;
  cursor: pointer;
  opacity: .62;
}

.project-modal-thumbs button.active {
  border-color: var(--green);
  opacity: 1;
}

.project-modal-thumbs img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}

@media(max-width:1000px){
  .selected-projects-grid {
    grid-template-columns: repeat(2, 1fr);
  }

  .project-modal-dialog {
    inset: 18px;
    grid-template-columns: 1fr;
    grid-template-rows: auto 1fr auto auto;
    overflow-y: auto;
  }

  .project-modal-stage,
  .project-modal-stage img {
    min-height: 360px;
  }

  .project-modal-count,
  .project-modal-thumbs {
    grid-column: 1 / 2;
  }
}

@media(max-width:620px){
  .selected-projects-grid {
    grid-template-columns: 1fr;
  }

  .selected-project-card {
    min-height: 320px;
  }

  .project-modal-dialog {
    inset: 10px;
    padding: 18px;
    border-radius: 24px;
  }

  .project-modal-head h2 {
    font-size: 34px;
  }

  .project-modal-stage,
  .project-modal-stage img {
    min-height: 280px;
  }

  .project-modal-nav {
    width: 40px;
    height: 40px;
    font-size: 32px;
  }
}


/* v51 — Gallery modal visual refinement */
.project-modal-backdrop {
  background: rgba(8, 12, 9, .86);
  backdrop-filter: blur(12px);
}

.project-modal-dialog {
  background:
    radial-gradient(circle at 20% 0%, rgba(31,95,74,.14), transparent 32%),
    linear-gradient(180deg, #171B17, #101310);
  border: 1px solid rgba(255,255,255,.08);
  box-shadow: 0 42px 150px rgba(0,0,0,.42);
}

.project-modal-head h2 {
  color: #fff;
}

.project-modal-head .label,
.project-modal-head p:not(.label),
.project-modal-count {
  color: rgba(255,255,255,.62);
}

.project-modal-stage {
  background: #1A1D19;
  border: 1px solid rgba(255,255,255,.12);
  box-shadow:
    inset 0 0 0 1px rgba(0,0,0,.25),
    0 22px 70px rgba(0,0,0,.30);
}

.project-modal-stage img {
  background: #1A1D19;
  box-shadow: 0 0 0 1px rgba(255,255,255,.08);
}

.project-modal-thumbs button {
  background: #1A1D19;
  border-color: rgba(255,255,255,.08);
}

.project-modal-thumbs button.active {
  border-color: rgba(255,255,255,.74);
}

.project-modal-nav {
  background: rgba(255,255,255,.88);
  box-shadow: 0 10px 30px rgba(0,0,0,.22);
}

.project-modal-close {
  background: rgba(255,255,255,.92);
  color: #084013;
  box-shadow: 0 10px 30px rgba(0,0,0,.22);
}


/* v52 — Gallery modal subtle refinement */
.project-modal-backdrop {
  background: rgba(6, 8, 7, .84);
  backdrop-filter: blur(10px);
}

.project-modal-dialog {
  background:
    radial-gradient(circle at 18% 0%, rgba(31,95,74,.08), transparent 30%),
    linear-gradient(180deg, #141714, #0D100E);
  border: 1px solid rgba(255,255,255,.055);
  box-shadow: 0 38px 130px rgba(0,0,0,.40);
}

.project-modal-stage {
  background: #171917;
  border: 1px solid rgba(255,255,255,.075);
  box-shadow:
    inset 0 0 0 1px rgba(0,0,0,.18),
    0 18px 56px rgba(0,0,0,.24);
}

.project-modal-stage img {
  background: #171917;
  box-shadow: 0 0 0 1px rgba(255,255,255,.045);
}

.project-modal-nav {
  background: rgba(255,255,255,.72);
  color: #084013;
  box-shadow: 0 8px 24px rgba(0,0,0,.18);
}

.project-modal-nav:hover {
  background: rgba(255,255,255,.90);
}

.project-modal-close {
  background: rgba(255,255,255,.76);
  color: #084013;
  box-shadow: 0 8px 24px rgba(0,0,0,.18);
}

.project-modal-close:hover {
  background: rgba(255,255,255,.92);
}

.project-modal-thumbs button {
  background: #171917;
  border-color: rgba(255,255,255,.055);
  opacity: .52;
}

.project-modal-thumbs button.active {
  border-color: rgba(255,255,255,.55);
  opacity: 1;
}

.project-modal-head .label {
  color: rgba(255,255,255,.54);
}

.project-modal-head p:not(.label),
.project-modal-count {
  color: rgba(255,255,255,.56);
}


/* v67 — Projetos: fluxo corrigido */
.projects-context-strip {
  background: #F7F7F4;
  padding: 26px 0 0;
}

.projects-context-strip-inner {
  border-top: 1px solid rgba(31,31,31,.10);
  padding-top: 22px;
}

.projects-context-strip p {
  margin: 0;
  color: #084013;
  font-size: 12px;
  font-weight: 800;
  letter-spacing: .12em;
  text-transform: uppercase;
}

.selected-projects-section {
  padding-top: 44px;
}

.selected-projects-section .compact-heading {
  margin-bottom: 28px;
}

.selected-projects-section .compact-heading h2 {
  max-width: 980px;
}

.selected-projects-section .compact-heading p:not(.label) {
  max-width: 860px;
}

@media(max-width: 760px) {
  .projects-context-strip {
    padding-top: 22px;
  }
  .selected-projects-section {
    padding-top: 38px;
  }
}


/* v68 — Projetos: setores integrados no hero */
.projects-context-strip {
  display: none !important;
}

.internal-hero .hero-sector-line {
  margin-top: clamp(34px, 5vw, 64px);
  padding-bottom: clamp(24px, 3.5vw, 42px);
  display: flex;
  justify-content: center;
  align-items: center;
  gap: 14px;
  color: rgba(255,255,255,.82);
  font-size: 12px;
  font-weight: 800;
  letter-spacing: .13em;
  text-transform: uppercase;
}

.internal-hero .hero-sector-line span {
  display: inline-flex;
  align-items: center;
  white-space: nowrap;
}

.internal-hero .hero-sector-line span + span::before {
  content: "·";
  margin-right: 14px;
  color: rgba(255,255,255,.52);
}

.selected-projects-section {
  padding-top: clamp(58px, 7vw, 88px);
}

@media(max-width: 760px) {
  .internal-hero .hero-sector-line {
    flex-wrap: wrap;
    justify-content: flex-start;
    gap: 10px;
    font-size: 11px;
    letter-spacing: .11em;
  }

  .internal-hero .hero-sector-line span + span::before {
    margin-right: 10px;
  }
}


/* v69 — Ajustes finos Projetos */
.internal-hero .hero-sector-line {
  margin-top: clamp(42px, 6.2vw, 86px);
  padding-bottom: clamp(14px, 2.2vw, 26px);
}

.selected-projects-section {
  padding-top: clamp(44px, 5.6vw, 68px);
}

.selected-projects-section .compact-heading {
  margin-bottom: 24px;
}


/* v88 — Botões mínimos da galeria
   Base v78. Apenas X e setas. Sem alterar layout/modal/imagens/textos. */

/* X — pequeno, discreto, com rotação */
.project-modal-close {
  width: 28px !important;
  height: 28px !important;
  min-width: 28px !important;
  min-height: 28px !important;
  border-radius: 7px !important;
  line-height: 1 !important;
  font-size: 18px !important;
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  transition:
    transform 180ms ease,
    background-color 180ms ease,
    color 180ms ease,
    border-color 180ms ease,
    opacity 180ms ease !important;
}

.project-modal-close:hover {
  transform: rotate(90deg) scale(1.04) !important;
}

.project-modal-close:active {
  transform: rotate(90deg) scale(.96) !important;
}

/* Setas — tamanho semelhante ao X, quadradas, sem 3D */
.project-modal-nav {
  width: 28px !important;
  height: 28px !important;
  min-width: 28px !important;
  min-height: 28px !important;
  border-radius: 7px !important;
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  font-size: 19px !important;
  font-weight: 400 !important;
  line-height: 1 !important;
  background: rgba(255,255,255,.86) !important;
  color: #1F1F1F !important;
  border: 1px solid rgba(31,31,31,.10) !important;
  box-shadow: 0 6px 18px rgba(0,0,0,.12) !important;
  backdrop-filter: blur(8px) !important;
  transition:
    background-color 180ms ease,
    color 180ms ease,
    border-color 180ms ease,
    box-shadow 180ms ease,
    opacity 180ms ease !important;
}

/* hover no botão: subtil, sem rotação e sem 3D */
.project-modal-nav:hover {
  background: #084013 !important;
  color: #FFFFFF !important;
  border-color: rgba(8,64,19,.35) !important;
  box-shadow: 0 8px 22px rgba(0,0,0,.16) !important;
}

/* deslocamento horizontal apenas do símbolo */
.project-modal-nav::before {
  display: inline-block;
  transition: transform 180ms ease !important;
}

.project-modal-nav.prev::before {
  content: "‹";
}

.project-modal-nav.next::before {
  content: "›";
}

.project-modal-nav.prev:hover::before {
  transform: translateX(-2px);
}

.project-modal-nav.next:hover::before {
  transform: translateX(2px);
}

/* esconder o caractere original se existir como texto no HTML */
.project-modal-nav {
  font-size: 0 !important;
}

.project-modal-nav::before {
  font-size: 19px !important;
  line-height: 1 !important;
}

/* manter posição original das setas */
.project-modal-nav.prev:hover,
.project-modal-nav.next:hover,
.project-modal-nav.prev:active,
.project-modal-nav.next:active {
  transform: translateY(-50%) !important;
}

@media (max-width: 760px) {
  .project-modal-close,
  .project-modal-nav {
    width: 26px !important;
    height: 26px !important;
    min-width: 26px !important;
    min-height: 26px !important;
    border-radius: 6px !important;
  }

  .project-modal-close {
    font-size: 17px !important;
  }

  .project-modal-nav::before {
    font-size: 18px !important;
  }
}

@media (hover: none) {
  .project-modal-close:hover,
  .project-modal-close:active,
  .project-modal-nav.prev:hover,
  .project-modal-nav.next:hover,
  .project-modal-nav.prev:active,
  .project-modal-nav.next:active {
    transform: none !important;
  }

  .project-modal-nav.prev:hover::before,
  .project-modal-nav.next:hover::before {
    transform: none !important;
  }
}

@media (prefers-reduced-motion: reduce) {
  .project-modal-close,
  .project-modal-nav,
  .project-modal-nav::before {
    transition-duration: .001ms !important;
  }

  .project-modal-close:hover,
  .project-modal-close:active,
  .project-modal-nav.prev:hover,
  .project-modal-nav.next:hover,
  .project-modal-nav.prev:active,
  .project-modal-nav.next:active,
  .project-modal-nav.prev:hover::before,
  .project-modal-nav.next:hover::before {
    transform: none !important;
  }
}


/* v89 — Refinamento Apple-like dos botões da galeria
   Base v88. Mantém tamanho. Botões ficam estáveis; só os símbolos se movem. */

/* Uniformizar X e setas no mesmo sistema visual */
.project-modal-close,
.project-modal-nav {
  width: 28px !important;
  height: 28px !important;
  min-width: 28px !important;
  min-height: 28px !important;
  border-radius: 7px !important;
  background: rgba(255,255,255,.86) !important;
  color: #1F1F1F !important;
  border: 1px solid rgba(31,31,31,.10) !important;
  box-shadow: 0 6px 18px rgba(0,0,0,.12) !important;
  backdrop-filter: blur(8px) !important;
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  transition:
    background-color 180ms ease,
    color 180ms ease,
    border-color 180ms ease,
    box-shadow 180ms ease,
    opacity 180ms ease !important;
}

/* Hover igual para X e setas */
.project-modal-close:hover,
.project-modal-nav:hover {
  background: #084013 !important;
  color: #FFFFFF !important;
  border-color: rgba(8,64,19,.35) !important;
  box-shadow: 0 8px 22px rgba(0,0,0,.16) !important;
}

/* O botão X não roda; só o símbolo */
.project-modal-close {
  font-size: 0 !important;
  transform: none !important;
}

.project-modal-close::before {
  content: "×";
  display: inline-block;
  font-size: 18px !important;
  line-height: 1 !important;
  font-weight: 400 !important;
  transition: transform 180ms ease !important;
  transform-origin: center center;
}

.project-modal-close:hover,
.project-modal-close:active {
  transform: none !important;
}

.project-modal-close:hover::before {
  transform: rotate(90deg) scale(1.04);
}

.project-modal-close:active::before {
  transform: rotate(90deg) scale(.96);
}

/* Setas: botão parado; só o símbolo desliza */
.project-modal-nav {
  font-size: 0 !important;
  transform: translateY(-50%) !important;
}

.project-modal-nav::before {
  display: inline-block;
  font-size: 19px !important;
  line-height: 1 !important;
  font-weight: 400 !important;
  transition: transform 180ms ease !important;
}

.project-modal-nav.prev::before {
  content: "‹";
}

.project-modal-nav.next::before {
  content: "›";
}

.project-modal-nav.prev:hover,
.project-modal-nav.next:hover,
.project-modal-nav.prev:active,
.project-modal-nav.next:active {
  transform: translateY(-50%) !important;
}

.project-modal-nav.prev:hover::before {
  transform: translateX(-2px);
}

.project-modal-nav.next:hover::before {
  transform: translateX(2px);
}

.project-modal-nav.prev:active::before {
  transform: translateX(-1px) scale(.96);
}

.project-modal-nav.next:active::before {
  transform: translateX(1px) scale(.96);
}

@media (max-width: 760px) {
  .project-modal-close,
  .project-modal-nav {
    width: 26px !important;
    height: 26px !important;
    min-width: 26px !important;
    min-height: 26px !important;
    border-radius: 6px !important;
  }

  .project-modal-close::before {
    font-size: 17px !important;
  }

  .project-modal-nav::before {
    font-size: 18px !important;
  }
}

@media (hover: none) {
  .project-modal-close:hover::before,
  .project-modal-close:active::before,
  .project-modal-nav.prev:hover::before,
  .project-modal-nav.next:hover::before,
  .project-modal-nav.prev:active::before,
  .project-modal-nav.next:active::before {
    transform: none !important;
  }
}

@media (prefers-reduced-motion: reduce) {
  .project-modal-close,
  .project-modal-close::before,
  .project-modal-nav,
  .project-modal-nav::before {
    transition-duration: .001ms !important;
  }

  .project-modal-close:hover::before,
  .project-modal-close:active::before,
  .project-modal-nav.prev:hover::before,
  .project-modal-nav.next:hover::before,
  .project-modal-nav.prev:active::before,
  .project-modal-nav.next:active::before {
    transform: none !important;
  }
}


/* v90 — Botões gerais Apple-like
   Base v89. Só botões/CTAs gerais. Não mexe em modal, imagens, textos, galerias ou layout. */

/* Sistema de botões principais */
.button,
.nav-cta,
button[type="submit"],
.footer-cta a,
.card-actions a {
  position: relative;
  overflow: hidden;
  transition:
    transform 180ms cubic-bezier(.22,.61,.36,1),
    background-color 180ms ease,
    color 180ms ease,
    border-color 180ms ease,
    box-shadow 180ms ease,
    opacity 180ms ease !important;
  will-change: transform;
}

/* Hover: feedback pequeno, sem efeito 3D */
.button:hover,
.nav-cta:hover,
button[type="submit"]:hover,
.footer-cta a:hover,
.card-actions a:hover {
  transform: translateY(-1px) !important;
}

/* Click: sensação de pressão leve */
.button:active,
.nav-cta:active,
button[type="submit"]:active,
.footer-cta a:active,
.card-actions a:active {
  transform: translateY(0) scale(.985) !important;
}

/* Brilho/respiração muito subtil em botões com fundo */
.button::before,
.nav-cta::before,
button[type="submit"]::before,
.footer-cta a::before,
.card-actions a::before {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
  background: linear-gradient(120deg, rgba(255,255,255,.00), rgba(255,255,255,.16), rgba(255,255,255,.00));
  transform: translateX(-120%);
  transition: transform 520ms cubic-bezier(.22,.61,.36,1);
}

.button:hover::before,
.nav-cta:hover::before,
button[type="submit"]:hover::before,
.footer-cta a:hover::before,
.card-actions a:hover::before {
  transform: translateX(120%);
}

/* Setas/links dentro dos botões: deslocamento mínimo e direcional */
.button span,
.nav-cta span,
.card-actions a span,
.footer-cta a span,
.text-link span {
  display: inline-block;
  transition: transform 180ms cubic-bezier(.22,.61,.36,1);
}

.button:hover span,
.nav-cta:hover span,
.card-actions a:hover span,
.footer-cta a:hover span,
.text-link:hover span {
  transform: translateX(1px);
}

/* Links de texto: microfeedback discreto */
.text-link,
.footer a,
.nav a:not(.nav-cta) {
  text-underline-offset: 5px;
  transition: color 180ms ease, opacity 180ms ease;
}

/* Focus acessível, mas discreto */
:where(a, button, input, textarea, select):focus-visible {
  outline: 2px solid rgba(8,64,19,.72);
  outline-offset: 4px;
  border-radius: 8px;
}

.section-dark :where(a, button):focus-visible,
.project-modal :where(button):focus-visible {
  outline-color: rgba(255,255,255,.78);
}

/* Estado desativado, caso venha a existir */
.button:disabled,
button[type="submit"]:disabled {
  opacity: .48;
  cursor: not-allowed;
  transform: none !important;
}

/* Não aplicar brilho a botões da galeria/modal */
.project-modal .button::before,
.project-modal button::before {
  background: none;
}

/* Reduzir movimento quando pedido pelo sistema */
@media (hover: none) {
  .button:hover,
  .nav-cta:hover,
  button[type="submit"]:hover,
  .footer-cta a:hover,
  .card-actions a:hover,
  .button:hover span,
  .nav-cta:hover span,
  .card-actions a:hover span,
  .footer-cta a:hover span,
  .text-link:hover span {
    transform: none !important;
  }

  .button:hover::before,
  .nav-cta:hover::before,
  button[type="submit"]:hover::before,
  .footer-cta a:hover::before,
  .card-actions a:hover::before {
    transform: translateX(-120%);
  }
}

@media (prefers-reduced-motion: reduce) {
  .button,
  .nav-cta,
  button[type="submit"],
  .footer-cta a,
  .card-actions a,
  .button::before,
  .nav-cta::before,
  button[type="submit"]::before,
  .footer-cta a::before,
  .card-actions a::before,
  .button span,
  .nav-cta span,
  .card-actions a span,
  .footer-cta a span,
  .text-link span {
    transition-duration: .001ms !important;
  }

  .button:hover,
  .nav-cta:hover,
  button[type="submit"]:hover,
  .footer-cta a:hover,
  .card-actions a:hover,
  .button:active,
  .nav-cta:active,
  button[type="submit"]:active,
  .footer-cta a:active,
  .card-actions a:active,
  .button:hover span,
  .nav-cta:hover span,
  .card-actions a:hover span,
  .footer-cta a:hover span,
  .text-link:hover span {
    transform: none !important;
  }
}


/* v91 — Botões consistentes
   Base v90. Corrige chips Construção/Industrial/Modelo e último Enviar mensagem.
   Não altera textos, imagens, galerias, modal, ordem ou estrutura. */

/* Hero chips: Construção / Industrial / Modelo */
.hero-paths a {
  position: relative;
  overflow: hidden;
  transition:
    transform 180ms cubic-bezier(.22,.61,.36,1),
    background-color 180ms ease,
    color 180ms ease,
    border-color 180ms ease,
    box-shadow 180ms ease,
    opacity 180ms ease !important;
  will-change: transform;
}

.hero-paths a:hover {
  transform: translateY(-1px) !important;
}

.hero-paths a:active {
  transform: translateY(0) scale(.985) !important;
}

.hero-paths a::before {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
  background: linear-gradient(120deg, rgba(255,255,255,.00), rgba(255,255,255,.14), rgba(255,255,255,.00));
  transform: translateX(-120%);
  transition: transform 520ms cubic-bezier(.22,.61,.36,1);
}

.hero-paths a:hover::before {
  transform: translateX(120%);
}

.hero-paths a span {
  position: relative;
  z-index: 1;
  display: inline-block;
  transition: transform 180ms cubic-bezier(.22,.61,.36,1);
}

.hero-paths a:hover span {
  transform: translateX(1px);
}

/* Footer / último CTA: manter comportamento MB, sem hover branco */
.footer-cta a {
  background: #084013 !important;
  color: #FFFFFF !important;
  border-color: rgba(8,64,19,.35) !important;
}

.footer-cta a:hover {
  background: #1F5F4A !important;
  color: #FFFFFF !important;
  border-color: rgba(31,95,74,.55) !important;
  transform: translateY(-1px) !important;
}

.footer-cta a:active {
  background: #084013 !important;
  color: #FFFFFF !important;
  transform: translateY(0) scale(.985) !important;
}

/* CTA final em blocos claros/escuros: impedir que o hover fique branco quando deve manter marca */
.final-cta .button,
.final-cta .button-dark,
.cta-split .button,
.cta-split .button-dark {
  transition:
    transform 180ms cubic-bezier(.22,.61,.36,1),
    background-color 180ms ease,
    color 180ms ease,
    border-color 180ms ease,
    box-shadow 180ms ease,
    opacity 180ms ease !important;
}

.final-cta .button:hover,
.final-cta .button-dark:hover,
.cta-split .button:hover,
.cta-split .button-dark:hover {
  transform: translateY(-1px) !important;
}

.final-cta .button:active,
.final-cta .button-dark:active,
.cta-split .button:active,
.cta-split .button-dark:active {
  transform: translateY(0) scale(.985) !important;
}

/* Reduzir movimento quando pedido pelo sistema */
@media (hover: none) {
  .hero-paths a:hover,
  .hero-paths a:active,
  .hero-paths a:hover span,
  .footer-cta a:hover,
  .footer-cta a:active,
  .final-cta .button:hover,
  .final-cta .button-dark:hover,
  .cta-split .button:hover,
  .cta-split .button-dark:hover {
    transform: none !important;
  }

  .hero-paths a:hover::before {
    transform: translateX(-120%);
  }
}

@media (prefers-reduced-motion: reduce) {
  .hero-paths a,
  .hero-paths a::before,
  .hero-paths a span,
  .footer-cta a,
  .final-cta .button,
  .final-cta .button-dark,
  .cta-split .button,
  .cta-split .button-dark {
    transition-duration: .001ms !important;
  }

  .hero-paths a:hover,
  .hero-paths a:active,
  .hero-paths a:hover span,
  .footer-cta a:hover,
  .footer-cta a:active,
  .final-cta .button:hover,
  .final-cta .button-dark:hover,
  .cta-split .button:hover,
  .cta-split .button-dark:hover {
    transform: none !important;
  }
}

/* v93 — Correção real dos botões/textos hero
   Ajustes visíveis via HTML + traduções JS. */

.button::before,
.nav-cta::before,
button[type="submit"]::before,
.footer-cta a::before,
.card-actions a::before,
.hero-paths a::before {
  opacity: 0;
  transform: translateX(-130%) !important;
  transition:
    transform 520ms cubic-bezier(.22,.61,.36,1),
    opacity 140ms ease !important;
}

.button:hover::before,
.nav-cta:hover::before,
button[type="submit"]:hover::before,
.footer-cta a:hover::before,
.card-actions a:hover::before,
.hero-paths a:hover::before {
  opacity: 1;
  transform: translateX(130%) !important;
}

.button:not(:hover)::before,
.nav-cta:not(:hover)::before,
button[type="submit"]:not(:hover)::before,
.footer-cta a:not(:hover)::before,
.card-actions a:not(:hover)::before,
.hero-paths a:not(:hover)::before {
  opacity: 0;
}

.hero-paths a {
  white-space: nowrap;
}

/* v94 — Correção dos botões do hero
   Corrige setas duplicadas/desligadas e reforça diferença visual dos chips. */

/* Hero primary: sem seta visual automática/pseudo. O botão inteiro reage como bloco. */
.hero-actions .button-hero-primary::after {
  content: none !important;
}

.hero-actions .button-hero-primary:hover {
  transform: translateY(-1px) !important;
}

.hero-actions .button-hero-primary:active {
  transform: translateY(0) scale(.985) !important;
}

/* Secondary link: uma única seta, integrada no próprio texto. O bloco inteiro move-se ligeiramente. */
.hero-actions .text-link.dark {
  display: inline-flex !important;
  align-items: center !important;
  gap: 0 !important;
}

.hero-actions .text-link.dark span {
  display: inline-block !important;
  transition: transform 180ms cubic-bezier(.22,.61,.36,1) !important;
}

.hero-actions .text-link.dark:hover span {
  transform: translateX(2px) !important;
}

/* Remover pseudo-setas/brilhos que possam duplicar o texto nos links do hero */
.hero-actions .text-link.dark::after,
.hero-actions .text-link.dark::before {
  content: none !important;
}

/* Chips do hero: seta integrada, estado hover mais claramente diferente */
.hero-paths a {
  display: inline-flex !important;
  align-items: center !important;
  gap: 5px !important;
  position: relative !important;
  overflow: hidden !important;
}

.hero-paths a span,
.hero-paths a em {
  position: relative !important;
  z-index: 1 !important;
  display: inline-block !important;
  font-style: normal !important;
  transition: transform 180ms cubic-bezier(.22,.61,.36,1) !important;
}

.hero-paths a em {
  opacity: .72 !important;
  font-size: .95em !important;
}

.hero-paths a:hover {
  background: #084013 !important;
  color: #FFFFFF !important;
  border-color: rgba(255,255,255,.22) !important;
  box-shadow: 0 8px 22px rgba(0,0,0,.18) !important;
  transform: translateY(-1px) !important;
}

.hero-paths a:hover span,
.hero-paths a:hover em {
  color: #FFFFFF !important;
}

.hero-paths a:hover em {
  transform: translateX(2px) !important;
  opacity: 1 !important;
}

.hero-paths a:active {
  transform: translateY(0) scale(.985) !important;
}

/* Chips ativos continuam a ter destaque, mas coerentes com o novo sistema */
.hero-paths a.active,
.hero-paths a[aria-current="page"] {
  background: #A7E80F !important;
  color: #1F1F1F !important;
  border-color: rgba(167,232,15,.45) !important;
}

.hero-paths a.active em,
.hero-paths a[aria-current="page"] em {
  color: #1F1F1F !important;
  opacity: .8 !important;
}

/* Brilho continua, mas sem parecer efeito de saída */
.hero-paths a::before,
.hero-actions .button-hero-primary::before {
  opacity: 0;
  transform: translateX(-130%) !important;
  transition:
    transform 520ms cubic-bezier(.22,.61,.36,1),
    opacity 140ms ease !important;
}

.hero-paths a:hover::before,
.hero-actions .button-hero-primary:hover::before {
  opacity: 1;
  transform: translateX(130%) !important;
}

.hero-paths a:not(:hover)::before,
.hero-actions .button-hero-primary:not(:hover)::before {
  opacity: 0;
}

@media (hover: none) {
  .hero-actions .button-hero-primary:hover,
  .hero-actions .text-link.dark:hover span,
  .hero-paths a:hover,
  .hero-paths a:active,
  .hero-paths a:hover em {
    transform: none !important;
  }
}

@media (prefers-reduced-motion: reduce) {
  .hero-actions .button-hero-primary,
  .hero-actions .button-hero-primary::before,
  .hero-actions .text-link.dark span,
  .hero-paths a,
  .hero-paths a::before,
  .hero-paths a span,
  .hero-paths a em {
    transition-duration: .001ms !important;
  }

  .hero-actions .button-hero-primary:hover,
  .hero-actions .text-link.dark:hover span,
  .hero-paths a:hover,
  .hero-paths a:active,
  .hero-paths a:hover em {
    transform: none !important;
  }
}

/* v95 — Afinação dos botões do hero
   Corrige Fale connosco sem seta e comportamento por bloco; Ver capacidades como link; chips mais distintos. */

/* Fale connosco: sem setas/pseudo-elementos, botão inteiro reage */
.hero-actions .button-hero-primary::after,
.hero-actions .button-hero-primary span::after,
.hero-actions .button-hero-primary *::after {
  content: none !important;
  display: none !important;
}

.hero-actions .button-hero-primary span,
.hero-actions .button-hero-primary:hover span,
.hero-actions .button-hero-primary * {
  transform: none !important;
}

.hero-actions .button-hero-primary {
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  gap: 0 !important;
}

.hero-actions .button-hero-primary:hover {
  transform: translateY(-1px) !important;
}

.hero-actions .button-hero-primary:active {
  transform: translateY(0) scale(.985) !important;
}

/* Ver capacidades: comportamento de link, deslocamento horizontal como bloco */
.hero-actions .text-link.dark {
  display: inline-flex !important;
  align-items: center !important;
  gap: 0 !important;
  transition: transform 180ms cubic-bezier(.22,.61,.36,1), color 180ms ease, opacity 180ms ease !important;
}

.hero-actions .text-link.dark:hover {
  transform: translateX(2px) !important;
}

.hero-actions .text-link.dark span,
.hero-actions .text-link.dark:hover span {
  transform: none !important;
}

/* Remover setas automáticas/pseudo no Ver capacidades */
.hero-actions .text-link.dark::before,
.hero-actions .text-link.dark::after,
.hero-actions .text-link.dark span::before,
.hero-actions .text-link.dark span::after {
  content: none !important;
  display: none !important;
}

/* Chips: hover mais distinto e menos parecido com estado normal */
.hero-paths a:hover {
  background: #084013 !important;
  color: #FFFFFF !important;
  border-color: rgba(255,255,255,.30) !important;
  box-shadow: 0 10px 26px rgba(0,0,0,.22) !important;
  transform: translateY(-1px) !important;
}

.hero-paths a:hover span,
.hero-paths a:hover em {
  color: #FFFFFF !important;
}

.hero-paths a:hover em {
  transform: translateX(2px) !important;
  opacity: 1 !important;
}

/* Estado ativo dos chips fica claro e separado do hover */
.hero-paths a.active,
.hero-paths a[aria-current="page"] {
  background: #A7E80F !important;
  color: #1F1F1F !important;
  border-color: rgba(167,232,15,.55) !important;
  box-shadow: none !important;
}

.hero-paths a.active span,
.hero-paths a.active em,
.hero-paths a[aria-current="page"] span,
.hero-paths a[aria-current="page"] em {
  color: #1F1F1F !important;
}

/* Evitar brilho de saída excessivo nos CTAs do hero */
.hero-actions .button-hero-primary:not(:hover)::before,
.hero-paths a:not(:hover)::before {
  opacity: 0 !important;
  transform: translateX(-130%) !important;
}

@media (hover: none) {
  .hero-actions .button-hero-primary:hover,
  .hero-actions .button-hero-primary:active,
  .hero-actions .text-link.dark:hover,
  .hero-paths a:hover,
  .hero-paths a:active,
  .hero-paths a:hover em {
    transform: none !important;
  }
}

@media (prefers-reduced-motion: reduce) {
  .hero-actions .button-hero-primary,
  .hero-actions .text-link.dark,
  .hero-paths a,
  .hero-paths a em {
    transition-duration: .001ms !important;
  }

  .hero-actions .button-hero-primary:hover,
  .hero-actions .button-hero-primary:active,
  .hero-actions .text-link.dark:hover,
  .hero-paths a:hover,
  .hero-paths a:active,
  .hero-paths a:hover em {
    transform: none !important;
  }
}

/* v96 — Fale connosco sem seta
   Intervenção cirúrgica: apenas o botão principal do hero. */

/* Isolar o botão principal do hero e anular qualquer seta textual/pseudo */
.hero-actions .no-arrow-cta,
.hero-actions .button-hero-primary.no-arrow-cta {
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  gap: 0 !important;
  transform: none;
}

/* Remover setas geradas por pseudo-elementos no botão e em qualquer filho */
.hero-actions .no-arrow-cta::after,
.hero-actions .button-hero-primary.no-arrow-cta::after,
.hero-actions .no-arrow-cta > *::after,
.hero-actions .button-hero-primary.no-arrow-cta > *::after {
  content: "" !important;
  display: none !important;
  width: 0 !important;
  height: 0 !important;
  margin: 0 !important;
  opacity: 0 !important;
  transform: none !important;
}

/* Remover deslocamentos de filhos: o botão todo reage como bloco */
.hero-actions .no-arrow-cta span,
.hero-actions .no-arrow-cta:hover span,
.hero-actions .button-hero-primary.no-arrow-cta span,
.hero-actions .button-hero-primary.no-arrow-cta:hover span,
.hero-actions .no-arrow-cta *,
.hero-actions .no-arrow-cta:hover * {
  transform: none !important;
}

/* Reação do botão inteiro */
.hero-actions .no-arrow-cta:hover,
.hero-actions .button-hero-primary.no-arrow-cta:hover {
  transform: translateY(-1px) !important;
}

.hero-actions .no-arrow-cta:active,
.hero-actions .button-hero-primary.no-arrow-cta:active {
  transform: translateY(0) scale(.985) !important;
}

/* Manter brilho aprovado sem gerar seta */
.hero-actions .no-arrow-cta::before,
.hero-actions .button-hero-primary.no-arrow-cta::before {
  content: "" !important;
}

@media (hover: none) {
  .hero-actions .no-arrow-cta:hover,
  .hero-actions .button-hero-primary.no-arrow-cta:hover,
  .hero-actions .no-arrow-cta:active,
  .hero-actions .button-hero-primary.no-arrow-cta:active {
    transform: none !important;
  }
}

@media (prefers-reduced-motion: reduce) {
  .hero-actions .no-arrow-cta,
  .hero-actions .button-hero-primary.no-arrow-cta,
  .hero-actions .no-arrow-cta::before,
  .hero-actions .button-hero-primary.no-arrow-cta::before {
    transition-duration: .001ms !important;
  }

  .hero-actions .no-arrow-cta:hover,
  .hero-actions .button-hero-primary.no-arrow-cta:hover,
  .hero-actions .no-arrow-cta:active,
  .hero-actions .button-hero-primary.no-arrow-cta:active {
    transform: none !important;
  }
}

/* v97 — Fale connosco sem seta real
   Remove o botão da classe button-hero-primary que gerava ::after content:"→".
   Mantém o mesmo aspeto visual, mas sem seta. */

.button-hero-primary-clean {
  position: relative;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0 !important;
  background: #084013;
  color: #fff;
  border: 1px solid rgba(255,255,255,.12);
  border-radius: 999px;
  padding: 13px 19px;
  font-size: 13.5px;
  font-weight: 850;
  box-shadow: 0 10px 28px rgba(0,0,0,.18);
  overflow: hidden;
  transition:
    transform 180ms cubic-bezier(.22,.61,.36,1),
    background-color 180ms ease,
    color 180ms ease,
    border-color 180ms ease,
    box-shadow 180ms ease,
    opacity 180ms ease !important;
}

.button-hero-primary-clean::after,
.button-hero-primary-clean > *::after {
  content: none !important;
  display: none !important;
}

.button-hero-primary-clean::before {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
  background: linear-gradient(120deg, rgba(255,255,255,.00), rgba(255,255,255,.16), rgba(255,255,255,.00));
  opacity: 0;
  transform: translateX(-130%);
  transition:
    transform 520ms cubic-bezier(.22,.61,.36,1),
    opacity 140ms ease !important;
}

.button-hero-primary-clean:hover {
  background: #1F5F4A;
  color: #FFFFFF;
  transform: translateY(-1px) !important;
}

.button-hero-primary-clean:hover::before {
  opacity: 1;
  transform: translateX(130%);
}

.button-hero-primary-clean:not(:hover)::before {
  opacity: 0;
  transform: translateX(-130%);
}

.button-hero-primary-clean:active {
  transform: translateY(0) scale(.985) !important;
}

/* Garantia extra: se por algum motivo a classe antiga voltar ao botão no-arrow, não pode mostrar seta */
.button-hero-primary.no-arrow-cta::after,
.actions .button-hero-primary.no-arrow-cta::after,
.actions .no-arrow-cta::after {
  content: none !important;
  display: none !important;
  width: 0 !important;
  opacity: 0 !important;
  margin: 0 !important;
}

@media (hover: none) {
  .button-hero-primary-clean:hover,
  .button-hero-primary-clean:active {
    transform: none !important;
  }

  .button-hero-primary-clean:hover::before {
    transform: translateX(-130%);
    opacity: 0;
  }
}

@media (prefers-reduced-motion: reduce) {
  .button-hero-primary-clean,
  .button-hero-primary-clean::before {
    transition-duration: .001ms !important;
  }

  .button-hero-primary-clean:hover,
  .button-hero-primary-clean:active {
    transform: none !important;
  }
}


/* v99 — Links/menu corrigidos
   Base v97 aprovada. Só menu e links. */

/* MENU */
.nav a:not(.nav-cta) {
  position: relative;
  border-radius: 999px;
  transition: color 160ms ease, background-color 160ms ease, opacity 160ms ease !important;
}

.nav a:not(.nav-cta)::after {
  content: "";
  position: absolute;
  left: 50%;
  bottom: -6px;
  width: 0;
  height: 2px;
  border-radius: 999px;
  background: #084013;
  opacity: 0;
  transform: translateX(-50%);
  transition: width 160ms cubic-bezier(.22,.61,.36,1), opacity 160ms ease !important;
}

.nav a:not(.nav-cta):hover {
  color: #084013 !important;
  background: rgba(8,64,19,.055) !important;
  opacity: 1 !important;
}

.nav a:not(.nav-cta):hover::after {
  width: 18px;
  opacity: .9;
}

/* ativo com underline */
.nav a.active:not(.nav-cta),
.nav a[aria-current="page"]:not(.nav-cta) {
  color: #084013 !important;
  background: transparent !important;
}

.nav a.active:not(.nav-cta)::after,
.nav a[aria-current="page"]:not(.nav-cta)::after {
  width: 18px !important;
  opacity: .9 !important;
}

/* Contactar no menu */
.nav-cta {
  transition: transform 160ms cubic-bezier(.22,.61,.36,1), background-color 160ms ease, color 160ms ease, box-shadow 160ms ease !important;
}

.nav-cta:hover {
  transform: translateY(-1px) !important;
}

.nav-cta:active {
  transform: translateY(0) scale(.985) !important;
}

/* FOOTER — underline só no tamanho do texto */
.footer a:not(.button),
.refined-footer a:not(.button) {
  position: relative;
  display: inline-block !important;
  width: auto !important;
  max-width: max-content !important;
  transition: color 160ms ease, opacity 160ms ease !important;
}

.footer a:not(.button)::after,
.refined-footer a:not(.button)::after {
  content: "";
  position: absolute;
  left: 0;
  bottom: -3px;
  width: 0;
  height: 1px;
  background: currentColor;
  opacity: .65;
  transition: width 170ms cubic-bezier(.22,.61,.36,1), opacity 170ms ease !important;
}

.footer a:not(.button):hover,
.refined-footer a:not(.button):hover {
  color: #FFFFFF !important;
  opacity: 1 !important;
}

.footer a:not(.button):hover::after,
.refined-footer a:not(.button):hover::after {
  width: 100%;
  opacity: .85;
}

/* não interferir com hero aprovado */
.hero-actions .text-link.dark::before,
.hero-actions .text-link.dark::after,
.hero-actions .text-link.dark span::before,
.hero-actions .text-link.dark span::after,
.hero-paths a::after,
.hero-paths a span::after,
.hero-paths a em::after {
  content: none !important;
  display: none !important;
}

/* impedir efeitos globais tipo fade/flash adicionados por experiências anteriores */
html,
body {
  transition: none !important;
}

.nav a:focus-visible,
.text-link:focus-visible,
.footer a:focus-visible,
.refined-footer a:focus-visible {
  outline: 2px solid rgba(8,64,19,.72);
  outline-offset: 5px;
  border-radius: 8px;
}

@media (hover: none) {
  .nav a:not(.nav-cta):hover { background: transparent !important; }
  .nav a:not(.nav-cta):hover::after,
  .footer a:not(.button):hover::after,
  .refined-footer a:not(.button):hover::after {
    width: 0;
    opacity: 0;
  }
  .nav-cta:hover,
  .nav-cta:active {
    transform: none !important;
  }
}


/* v100 — Links/menu sem flash + ativo com underline
   Base v99. Mantém hover menu e footer aprovados. */

/* Remover qualquer vestígio de transição global/fade de página */
html,
body,
body.ux-ready,
body.ux-leaving {
  opacity: 1 !important;
  transform: none !important;
  animation: none !important;
  transition: none !important;
}

/* Garantir que nenhum link/menu cria transição de página */
a,
.nav a,
.nav-cta {
  -webkit-tap-highlight-color: transparent;
}

/* Item ativo do menu: underline curto forçado e visível */
.site-header .nav a.active:not(.nav-cta),
.site-header .nav a[aria-current="page"]:not(.nav-cta),
.nav a.active:not(.nav-cta),
.nav a[aria-current="page"]:not(.nav-cta) {
  position: relative !important;
  color: #084013 !important;
  background: transparent !important;
}

.site-header .nav a.active:not(.nav-cta)::after,
.site-header .nav a[aria-current="page"]:not(.nav-cta)::after,
.nav a.active:not(.nav-cta)::after,
.nav a[aria-current="page"]:not(.nav-cta)::after {
  content: "" !important;
  position: absolute !important;
  left: 50% !important;
  bottom: -6px !important;
  display: block !important;
  width: 18px !important;
  height: 2px !important;
  min-width: 18px !important;
  max-width: 18px !important;
  margin: 0 !important;
  border-radius: 999px !important;
  background: #084013 !important;
  opacity: .9 !important;
  transform: translateX(-50%) !important;
}

/* Hover do menu mantém o comportamento aprovado da v99 */
.site-header .nav a:not(.nav-cta):hover::after,
.nav a:not(.nav-cta):hover::after {
  width: 18px !important;
  opacity: .9 !important;
}

/* Footer mantém comportamento aprovado, mas sem risco de linha longa */
.footer a:not(.button),
.refined-footer a:not(.button) {
  display: inline-block !important;
  width: auto !important;
  max-width: max-content !important;
}

.footer a:not(.button)::after,
.refined-footer a:not(.button)::after {
  max-width: 100% !important;
}

/* Não interferir com hero aprovado */
.hero-actions .text-link.dark::before,
.hero-actions .text-link.dark::after,
.hero-actions .text-link.dark span::before,
.hero-actions .text-link.dark span::after,
.hero-paths a::after,
.hero-paths a span::after,
.hero-paths a em::after {
  content: none !important;
  display: none !important;
}


/* v103 — Thumbnails da galeria corrigidas
   Base v100 aprovada. Corrige thumbnails cortadas sem mexer no modal/layout principal. */

.project-modal-thumbs {
  display: flex !important;
  align-items: center !important;
  gap: 10px !important;
  min-height: 64px !important;
  height: auto !important;
  padding-top: 10px !important;
  padding-bottom: 12px !important;
  overflow-x: auto !important;
  overflow-y: visible !important;
  scrollbar-gutter: stable !important;
}

.project-modal-thumbs button {
  flex: 0 0 auto !important;
  width: 74px !important;
  height: 52px !important;
  min-width: 74px !important;
  min-height: 52px !important;
  display: block !important;
  overflow: hidden !important;
  border-radius: 10px !important;
  box-sizing: border-box !important;
}

.project-modal-thumbs button img,
.project-modal-thumbs img {
  display: block !important;
  width: 100% !important;
  height: 100% !important;
  min-height: 0 !important;
  object-fit: cover !important;
}

/* Dar espaço real ao contador + thumbnails dentro do modal */
.project-modal-count {
  margin-top: 8px !important;
  margin-bottom: 0 !important;
}

@media (max-width: 760px) {
  .project-modal-thumbs {
    min-height: 58px !important;
    padding-top: 8px !important;
    padding-bottom: 10px !important;
  }

  .project-modal-thumbs button {
    width: 64px !important;
    height: 46px !important;
    min-width: 64px !important;
    min-height: 46px !important;
  }
}


/* v104 — Thumbnails da galeria corrigidas final
   Base v103. Mais espaço inferior real para as miniaturas, sem mexer na imagem principal. */

/* O modal precisa de reservar espaço vertical para a linha de thumbnails */
.project-modal-dialog {
  padding-bottom: 42px !important;
  row-gap: 18px !important;
}

/* A zona das thumbnails deixa de ficar colada ao limite inferior */
.project-modal-thumbs {
  grid-column: 2 / 3;
  align-self: start !important;
  display: flex !important;
  align-items: center !important;
  gap: 10px !important;
  min-height: 76px !important;
  height: 76px !important;
  padding-top: 8px !important;
  padding-bottom: 14px !important;
  margin-bottom: 4px !important;
  overflow-x: auto !important;
  overflow-y: hidden !important;
  scrollbar-gutter: stable !important;
}

/* Thumbnails um pouco mais compactas para caberem confortavelmente */
.project-modal-thumbs button {
  flex: 0 0 78px !important;
  width: 78px !important;
  height: 52px !important;
  min-width: 78px !important;
  min-height: 52px !important;
  max-height: 52px !important;
  padding: 0 !important;
  box-sizing: border-box !important;
  border-radius: 10px !important;
  overflow: hidden !important;
}

/* A imagem da thumbnail ocupa o botão, sem altura herdada estranha */
.project-modal-thumbs button img,
.project-modal-thumbs img {
  display: block !important;
  width: 100% !important;
  height: 100% !important;
  min-height: 0 !important;
  max-height: none !important;
  object-fit: cover !important;
}

/* Contador alinhado com a linha inferior, mas sem esmagar thumbnails */
.project-modal-count {
  align-self: center !important;
  margin-top: 0 !important;
  margin-bottom: 14px !important;
}

/* Em ecrãs mais baixos, reduzir ligeiramente a imagem grande para criar espaço inferior sem scroll feio */
@media (max-height: 820px) and (min-width: 1001px) {
  .project-modal-dialog {
    padding-bottom: 36px !important;
  }

  .project-modal-stage,
  .project-modal-stage img {
    min-height: 480px !important;
  }

  .project-modal-thumbs {
    min-height: 72px !important;
    height: 72px !important;
  }

  .project-modal-thumbs button {
    flex-basis: 74px !important;
    width: 74px !important;
    min-width: 74px !important;
    height: 50px !important;
    min-height: 50px !important;
  }
}

/* Mobile/tablet mantém thumbnails visíveis sem cortar */
@media (max-width: 1000px) {
  .project-modal-dialog {
    padding-bottom: 30px !important;
  }

  .project-modal-thumbs {
    grid-column: 1 / 2 !important;
    min-height: 68px !important;
    height: 68px !important;
    padding-bottom: 12px !important;
  }

  .project-modal-thumbs button {
    flex-basis: 68px !important;
    width: 68px !important;
    min-width: 68px !important;
    height: 48px !important;
    min-height: 48px !important;
  }

  .project-modal-count {
    grid-column: 1 / 2 !important;
    margin-bottom: 0 !important;
  }
}


/* v105 — Modal equilibrado
   Base v104. Mantém thumbnails inteiras, mas recupera presença da imagem principal. */

/* Menos padding inferior do que v104, mas ainda com respiro suficiente */
.project-modal-dialog {
  padding-bottom: 30px !important;
  row-gap: 14px !important;
}

/* Thumbnails inteiras, ligeiramente mais baixas e compactas */
.project-modal-thumbs {
  min-height: 66px !important;
  height: 66px !important;
  padding-top: 6px !important;
  padding-bottom: 8px !important;
  margin-bottom: 0 !important;
  overflow-x: auto !important;
  overflow-y: hidden !important;
  align-items: center !important;
}

/* Recupera tamanho visual próximo do original sem voltar a cortar */
.project-modal-thumbs button {
  flex: 0 0 82px !important;
  width: 82px !important;
  height: 50px !important;
  min-width: 82px !important;
  min-height: 50px !important;
  max-height: 50px !important;
  border-radius: 10px !important;
  box-sizing: border-box !important;
}

/* Imagem principal: voltar a dar mais presença */
.project-modal-stage,
.project-modal-stage img {
  min-height: 520px !important;
}

/* Só em ecrãs realmente baixos reduzir um pouco, menos agressivo que v104 */
@media (max-height: 820px) and (min-width: 1001px) {
  .project-modal-dialog {
    padding-bottom: 28px !important;
    row-gap: 12px !important;
  }

  .project-modal-stage,
  .project-modal-stage img {
    min-height: 505px !important;
  }

  .project-modal-thumbs {
    min-height: 64px !important;
    height: 64px !important;
    padding-top: 5px !important;
    padding-bottom: 7px !important;
  }

  .project-modal-thumbs button {
    flex-basis: 80px !important;
    width: 80px !important;
    min-width: 80px !important;
    height: 48px !important;
    min-height: 48px !important;
    max-height: 48px !important;
  }
}

/* Em ecrãs muito baixos, prioridade: não cortar thumbnails */
@media (max-height: 720px) and (min-width: 1001px) {
  .project-modal-stage,
  .project-modal-stage img {
    min-height: 470px !important;
  }

  .project-modal-thumbs {
    min-height: 62px !important;
    height: 62px !important;
  }

  .project-modal-thumbs button {
    height: 46px !important;
    min-height: 46px !important;
    max-height: 46px !important;
  }
}

/* Mobile/tablet: manter thumbnails visíveis */
@media (max-width: 1000px) {
  .project-modal-dialog {
    padding-bottom: 28px !important;
  }

  .project-modal-thumbs {
    min-height: 64px !important;
    height: 64px !important;
    padding-top: 6px !important;
    padding-bottom: 8px !important;
  }

  .project-modal-thumbs button {
    flex-basis: 68px !important;
    width: 68px !important;
    min-width: 68px !important;
    height: 46px !important;
    min-height: 46px !important;
    max-height: 46px !important;
  }
}


/* v108 — Ritmo vertical global
   Base v105 aprovada.
   Reduz vazios estruturais em todo o site. Homepage mais assertiva, páginas internas moderadas.
   Não altera textos, imagens, ordem, menu, botões, footer, modal ou galerias. */

/* Escala global mais compacta */
.section {
  padding-top: clamp(58px, 5.2vw, 88px) !important;
  padding-bottom: clamp(58px, 5.2vw, 88px) !important;
}

.surface,
.section.surface {
  padding-top: clamp(56px, 5vw, 82px) !important;
  padding-bottom: clamp(56px, 5vw, 82px) !important;
}

/* Headers de secção mais próximos do conteúdo */
.section-head {
  margin-bottom: clamp(26px, 2.8vw, 38px) !important;
}

.section-head p {
  margin-top: 14px !important;
}

/* Grelhas e blocos: menos distância vertical sem apertar os cards */
.capability-grid,
.projects-grid,
.project-grid,
.selected-projects-grid,
.service-grid,
.service-strip,
.proof-grid,
.cred-grid,
.steps,
.pdm-metrics,
.service-points {
  gap: clamp(18px, 2vw, 28px) !important;
}

/* Reduzir margens superiores internas comuns */
.section-head + .capability-grid,
.section-head + .projects-grid,
.section-head + .project-grid,
.section-head + .selected-projects-grid,
.section-head + .service-grid,
.section-head + .steps,
.section-head + .proof-grid {
  margin-top: clamp(24px, 2.6vw, 36px) !important;
}

/* Homepage: mais modular / menos ilhas */
.page-index .section {
  padding-top: clamp(46px, 4.4vw, 72px) !important;
  padding-bottom: clamp(46px, 4.4vw, 72px) !important;
}

.page-index .surface,
.page-index .section.surface {
  padding-top: clamp(46px, 4.2vw, 70px) !important;
  padding-bottom: clamp(46px, 4.2vw, 70px) !important;
}

/* Hero mantém a presença aprovada */
.page-index .hero {
  padding-top: 150px !important;
  padding-bottom: 86px !important;
  min-height: 900px !important;
}

/* Primeira secção depois do hero: reduzir o “buraco” inicial */
.page-index .hero + section,
.page-index .proof-strip,
.page-index .proof-strip + section {
  margin-top: 0 !important;
  padding-top: clamp(42px, 4vw, 66px) !important;
}

/* Empresa / blocos two-col: compactar sem colar */
.page-index .two-col {
  gap: clamp(34px, 4vw, 58px) !important;
  padding-top: 0 !important;
  padding-bottom: 0 !important;
}

/* Capacidades, Modelo, Projetos, Garantia: reduzir mais do que v107 */
.page-index #capabilities,
.page-index .model,
.page-index .projects,
.page-index .assurance {
  padding-top: clamp(48px, 4.5vw, 74px) !important;
  padding-bottom: clamp(48px, 4.5vw, 74px) !important;
}

/* Passagem entre secções escuras e claras: menos vazio branco */
.page-index .model + .projects,
.page-index .projects + .assurance,
.page-index .assurance + .contact,
.page-index .assurance + .visual-cta-section {
  margin-top: 0 !important;
}

/* Contacto/final: sem ficar esmagado, mas menos afastado */
.page-index .contact.surface,
.page-index .visual-cta-section,
.page-index .final-cta {
  padding-top: clamp(52px, 4.8vw, 78px) !important;
  padding-bottom: clamp(52px, 4.8vw, 78px) !important;
}

/* Páginas internas: compactação moderada */
body:not(.page-index) .page-hero,
body:not(.page-index) .hero {
  padding-top: clamp(124px, 9vw, 170px) !important;
  padding-bottom: clamp(64px, 6vw, 96px) !important;
}

body:not(.page-index) .section {
  padding-top: clamp(56px, 5vw, 84px) !important;
  padding-bottom: clamp(56px, 5vw, 84px) !important;
}

body:not(.page-index) .surface,
body:not(.page-index) .section.surface {
  padding-top: clamp(54px, 4.8vw, 80px) !important;
  padding-bottom: clamp(54px, 4.8vw, 80px) !important;
}

/* Cards grandes em páginas internas: manter ar, mas sem “ilhas” */
body:not(.page-index) .steps,
body:not(.page-index) .proof-grid,
body:not(.page-index) .cred-grid,
body:not(.page-index) .service-grid,
body:not(.page-index) .projects-grid {
  margin-top: clamp(22px, 2.4vw, 34px) !important;
}

/* Footer aprovado: não mexer na estética, só evitar espaço superior excessivo se houver secção final antes */
.refined-footer,
.footer {
  margin-top: 0 !important;
}

/* Mobile: reduzir distância vertical de forma clara */
@media (max-width: 760px) {
  .section,
  .surface,
  .section.surface,
  .page-index .section,
  .page-index .surface,
  .page-index .section.surface,
  body:not(.page-index) .section,
  body:not(.page-index) .surface {
    padding-top: 42px !important;
    padding-bottom: 42px !important;
  }

  .page-index .hero {
    padding-top: 126px !important;
    padding-bottom: 64px !important;
    min-height: auto !important;
  }

  body:not(.page-index) .page-hero,
  body:not(.page-index) .hero {
    padding-top: 116px !important;
    padding-bottom: 56px !important;
  }

  .section-head {
    margin-bottom: 24px !important;
  }

  .page-index .two-col {
    gap: 28px !important;
  }
}


/* v108 — Homepage scroll reveal mantido de forma seletiva */
.home-reveal {
  opacity: 0;
  transform: translateY(10px);
  transition:
    opacity 520ms cubic-bezier(.22,.61,.36,1),
    transform 520ms cubic-bezier(.22,.61,.36,1) !important;
  will-change: opacity, transform;
}

.home-reveal.is-visible {
  opacity: 1;
  transform: translateY(0);
}

.home-reveal.reveal-delay-1 { transition-delay: 55ms; }
.home-reveal.reveal-delay-2 { transition-delay: 95ms; }
.home-reveal.reveal-delay-3 { transition-delay: 135ms; }

.hero .home-reveal,
.site-header .home-reveal,
.refined-footer .home-reveal,
.footer .home-reveal,
.project-modal .home-reveal,
.hero-actions .home-reveal,
.hero-paths .home-reveal {
  opacity: 1 !important;
  transform: none !important;
  transition: none !important;
}

html,
body,
body.ux-ready,
body.ux-leaving {
  opacity: 1 !important;
  transform: none !important;
  animation: none !important;
}

@media (prefers-reduced-motion: reduce) {
  .home-reveal,
  .home-reveal.is-visible,
  .home-reveal.reveal-delay-1,
  .home-reveal.reveal-delay-2,
  .home-reveal.reveal-delay-3 {
    opacity: 1 !important;
    transform: none !important;
    transition-duration: .001ms !important;
    transition-delay: 0ms !important;
  }
}


/* v109 — Ritmo vertical fine tune
   Base v108. Afina consistência entre secções e transições claro/escuro. */

.page-index section + section,
body:not(.page-index) section + section {
  margin-top: 0 !important;
}

.page-index .section,
.page-index .surface,
.page-index .section.surface {
  padding-top: clamp(38px, 3.6vw, 62px) !important;
  padding-bottom: clamp(38px, 3.6vw, 62px) !important;
}

.page-index .hero {
  padding-top: 150px !important;
  padding-bottom: 76px !important;
  min-height: 880px !important;
}

.page-index .hero + section,
.page-index .proof-strip,
.page-index .proof-strip + section {
  padding-top: clamp(34px, 3.2vw, 54px) !important;
  padding-bottom: clamp(34px, 3.2vw, 54px) !important;
}

.page-index .two-col,
body:not(.page-index) .two-col {
  gap: clamp(30px, 3.4vw, 50px) !important;
}

.page-index .two-col > *,
body:not(.page-index) .two-col > * {
  margin-top: 0 !important;
  margin-bottom: 0 !important;
}

.section-head {
  margin-bottom: clamp(22px, 2.4vw, 32px) !important;
}

.section-head p {
  margin-top: 10px !important;
  margin-bottom: 0 !important;
}

.page-index #capabilities,
.page-index .model,
.page-index .projects,
.page-index .assurance,
.page-index .contact.surface,
.page-index .visual-cta-section,
.page-index .final-cta {
  padding-top: clamp(40px, 3.8vw, 64px) !important;
  padding-bottom: clamp(40px, 3.8vw, 64px) !important;
}

.page-index .model + .projects,
.page-index .projects + .assurance,
.page-index .assurance + .contact,
.page-index .assurance + .visual-cta-section,
.page-index .dark-section + .section,
.page-index .section-dark + .section {
  padding-top: clamp(36px, 3.4vw, 56px) !important;
}

.page-index .section + .model,
.page-index .surface + .model,
.page-index #capabilities + .model {
  padding-top: clamp(40px, 3.6vw, 60px) !important;
}

.capability-grid,
.projects-grid,
.project-grid,
.selected-projects-grid,
.service-grid,
.service-strip,
.proof-grid,
.cred-grid,
.steps,
.pdm-metrics,
.service-points {
  gap: clamp(16px, 1.8vw, 26px) !important;
}

.section-head + .capability-grid,
.section-head + .projects-grid,
.section-head + .project-grid,
.section-head + .selected-projects-grid,
.section-head + .service-grid,
.section-head + .steps,
.section-head + .proof-grid,
.section-head + .cred-grid,
.section-head + .pdm-metrics,
.section-head + .service-points {
  margin-top: clamp(20px, 2.2vw, 30px) !important;
}

body:not(.page-index) .section,
body:not(.page-index) .surface,
body:not(.page-index) .section.surface {
  padding-top: clamp(46px, 4.2vw, 72px) !important;
  padding-bottom: clamp(46px, 4.2vw, 72px) !important;
}

body:not(.page-index) .page-hero,
body:not(.page-index) .hero {
  padding-top: clamp(120px, 8.4vw, 160px) !important;
  padding-bottom: clamp(52px, 5vw, 78px) !important;
}

body:not(.page-index) .steps,
body:not(.page-index) .proof-grid,
body:not(.page-index) .cred-grid,
body:not(.page-index) .service-grid,
body:not(.page-index) .projects-grid,
body:not(.page-index) .selected-projects-grid {
  margin-top: clamp(18px, 2vw, 28px) !important;
  margin-bottom: 0 !important;
}

section:last-of-type {
  padding-bottom: clamp(46px, 4vw, 72px) !important;
}

.refined-footer,
.footer {
  margin-top: 0 !important;
}

@media (max-width: 760px) {
  .section,
  .surface,
  .section.surface,
  .page-index .section,
  .page-index .surface,
  .page-index .section.surface,
  body:not(.page-index) .section,
  body:not(.page-index) .surface {
    padding-top: 36px !important;
    padding-bottom: 36px !important;
  }

  .page-index .hero {
    padding-top: 122px !important;
    padding-bottom: 58px !important;
    min-height: auto !important;
  }

  body:not(.page-index) .page-hero,
  body:not(.page-index) .hero {
    padding-top: 110px !important;
    padding-bottom: 46px !important;
  }

  .section-head {
    margin-bottom: 22px !important;
  }

  .page-index .two-col,
  body:not(.page-index) .two-col {
    gap: 24px !important;
  }
}


/* v111 — Ritmo + anti-flash
   Base v109. Mantém ritmo e scroll reveal. Corrige flashes de carregamento/repintura. */

/* Fundo inicial coerente para evitar flash branco/solto durante reload local */
html {
  background: #00190D !important;
  color-scheme: light;
}

body {
  opacity: 1 !important;
  visibility: visible !important;
  background: #FFFFFF;
  transform: none !important;
  animation: none !important;
}

/* Páginas de fundo escuro mantêm fundo escuro desde o primeiro paint */
.page-index,
.page-dark,
body[class*="dark"],
body.page-index {
  background-color: #00190D;
}

/* Mas secções claras continuam claras */
.surface,
.section.surface,
.page-index .surface,
body:not(.page-index) .surface {
  background-color: #FFFFFF;
}

/* Neutralizar qualquer classe antiga de saída/fade sem remover animações locais aprovadas */
body.ux-leaving,
body.is-leaving,
body.page-leaving,
.ux-leaving,
.is-leaving,
.page-leaving,
.fade-out,
.page-transition {
  opacity: 1 !important;
  visibility: visible !important;
  transform: none !important;
  animation: none !important;
  transition: none !important;
}

/* Evitar que o browser mostre highlight/flicker de clique */
a,
button,
.nav a,
.nav-cta {
  -webkit-tap-highlight-color: transparent;
}

/* Header e footer não devem piscar/recompor com animações globais */
.site-header,
.refined-footer,
.footer {
  opacity: 1 !important;
  visibility: visible !important;
  animation: none !important;
}

/* Manter modal sempre fora desta lógica */
.project-modal,
.project-modal-dialog,
.project-modal * {
  backface-visibility: hidden;
}

/* Scroll reveal mantém-se, mas sem elementos ficarem invisíveis tempo demais */
.home-reveal {
  transition:
    opacity 420ms cubic-bezier(.22,.61,.36,1),
    transform 420ms cubic-bezier(.22,.61,.36,1) !important;
}

.home-reveal.reveal-delay-1 { transition-delay: 45ms !important; }
.home-reveal.reveal-delay-2 { transition-delay: 75ms !important; }
.home-reveal.reveal-delay-3 { transition-delay: 105ms !important; }


/* v113 — Anti-flash sem contaminar paleta
   Base v111. Mantém ritmo, scroll reveal e anti-flash, mas remove fundos globais que alteravam cores originais. */

/* Anti-flash deve atuar só no primeiro paint, não na paleta do layout */
html {
  background: #FFFFFF !important;
  color-scheme: light;
}

body {
  opacity: 1 !important;
  visibility: visible !important;
  transform: none !important;
  animation: none !important;
}

/* Anular a regra problemática da v111:
   .page-index, body.page-index e body[class*="dark"] não podem forçar o site inteiro para verde escuro. */
.page-index,
body.page-index,
.page-dark,
body[class*="dark"] {
  background-color: initial !important;
  background: initial !important;
}

/* Repor apenas os fundos estruturais óbvios, sem nivelar todos os blocos claros */
body {
  background-color: #FFFFFF !important;
}

/* Secções escuras reais continuam escuras */
.hero,
.page-index .hero,
.section-dark,
.dark-section,
.page-index .model,
.model,
.page-index .assurance,
.assurance,
.refined-footer,
.footer,
.project-modal {
  background-color: #00190D !important;
}

/* Contactos/CTA visual não deve herdar escurecimento global da página */
.contact,
.contact.surface,
.visual-cta-section,
.final-cta {
  background: inherit;
}

/* Se o contacto estiver dentro de card/imagem, manter imagem e overlay próprios, sem escurecer texto globalmente */
.contact h1,
.contact h2,
.contact h3,
.contact p,
.visual-cta-section h1,
.visual-cta-section h2,
.visual-cta-section h3,
.visual-cta-section p,
.final-cta h1,
.final-cta h2,
.final-cta h3,
.final-cta p {
  color: inherit;
}

/* Blocos claros devem voltar à sua cor original definida antes desta camada.
   Não forçar #fff em todos, apenas impedir escurecimento herdado. */
.surface:not(.section-dark):not(.dark-section),
.section.surface:not(.section-dark):not(.dark-section) {
  background-color: revert-layer;
}

/* Fallback para browsers sem revert-layer: usar a cor original do CSS quando existir; senão manter branco neutro */
@supports not (background-color: revert-layer) {
  .surface:not(.section-dark):not(.dark-section),
  .section.surface:not(.section-dark):not(.dark-section) {
    background-color: #FFFFFF;
  }
}

/* Neutralizar estados de saída/fade sem mexer em cores locais */
body.ux-leaving,
body.is-leaving,
body.page-leaving,
.ux-leaving,
.is-leaving,
.page-leaving,
.fade-out,
.page-transition {
  opacity: 1 !important;
  visibility: visible !important;
  transform: none !important;
  animation: none !important;
  transition: none !important;
}

/* Header/footer/modal mantêm as regras aprovadas; sem alteração de paleta local */
.site-header,
.refined-footer,
.footer,
.project-modal {
  opacity: 1 !important;
  visibility: visible !important;
}


/* v114 — Paleta clara alternada
   Base v113. Mantém ritmo/anti-flash/scroll e repõe hierarquia entre secções claras consecutivas.
   Regra: dois blocos claros seguidos não devem parecer da mesma cor. */

/* Tokens de fundo subtis — sem mudar cores da marca */
:root {
  --mb-bg-page: #FFFFFF;
  --mb-bg-soft: #F6F7F4;
  --mb-bg-soft-2: #F2F4F0;
  --mb-bg-panel: #FAFAF8;
}

/* Fundo base claro limpo */
html,
body {
  background: var(--mb-bg-page) !important;
}

/* Escuros reais continuam escuros */
.hero,
.page-index .hero,
.section-dark,
.dark-section,
.page-index .model,
.model,
.page-index .assurance,
.assurance,
.refined-footer,
.footer,
.project-modal {
  background-color: #00190D !important;
}

/* Repor contraste dos textos em blocos escuros reais */
.hero,
.hero h1,
.hero h2,
.hero h3,
.hero p,
.hero li,
.model,
.model h1,
.model h2,
.model h3,
.model p,
.model li,
.assurance,
.assurance h1,
.assurance h2,
.assurance h3,
.assurance p,
.assurance li,
.section-dark,
.section-dark h1,
.section-dark h2,
.section-dark h3,
.section-dark p,
.section-dark li,
.dark-section,
.dark-section h1,
.dark-section h2,
.dark-section h3,
.dark-section p,
.dark-section li {
  color: inherit;
}

/* Homepage: alternância editorial dos blocos claros principais */
.page-index section:not(.hero):not(.model):not(.assurance):not(.section-dark):not(.dark-section):not(.project-modal):nth-of-type(odd) {
  background-color: var(--mb-bg-page) !important;
}

.page-index section:not(.hero):not(.model):not(.assurance):not(.section-dark):not(.dark-section):not(.project-modal):nth-of-type(even) {
  background-color: var(--mb-bg-soft) !important;
}

/* Exceções: CTAs visuais com imagem/overlay devem manter fundo próprio e texto claro quando aplicável */
.page-index .visual-cta-section,
.page-index .final-cta,
.page-index .contact {
  background-color: var(--mb-bg-page) !important;
}

/* Se o CTA/contacto tiver imagem escura, texto deve ser claro e não contaminado por regras de secção clara */
.visual-cta,
.visual-cta h1,
.visual-cta h2,
.visual-cta h3,
.visual-cta p,
.final-cta .visual-cta,
.final-cta .visual-cta h1,
.final-cta .visual-cta h2,
.final-cta .visual-cta h3,
.final-cta .visual-cta p {
  color: #FFFFFF !important;
}

/* Páginas internas: alternância subtil entre secções claras consecutivas */
body:not(.page-index) section:not(.hero):not(.page-hero):not(.model):not(.assurance):not(.section-dark):not(.dark-section):nth-of-type(odd) {
  background-color: var(--mb-bg-page) !important;
}

body:not(.page-index) section:not(.hero):not(.page-hero):not(.model):not(.assurance):not(.section-dark):not(.dark-section):nth-of-type(even) {
  background-color: var(--mb-bg-soft) !important;
}

/* Cards/painéis dentro de fundos soft precisam continuar a destacar-se */
section:not(.section-dark):not(.dark-section):not(.hero):not(.model):not(.assurance) .card,
section:not(.section-dark):not(.dark-section):not(.hero):not(.model):not(.assurance) .capability-card,
section:not(.section-dark):not(.dark-section):not(.hero):not(.model):not(.assurance) .service-card,
section:not(.section-dark):not(.dark-section):not(.hero):not(.model):not(.assurance) .feature-card,
section:not(.section-dark):not(.dark-section):not(.hero):not(.model):not(.assurance) .project-card,
section:not(.section-dark):not(.dark-section):not(.hero):not(.model):not(.assurance) .hub-card,
section:not(.section-dark):not(.dark-section):not(.hero):not(.model):not(.assurance) .steps article,
section:not(.section-dark):not(.dark-section):not(.hero):not(.model):not(.assurance) .proof-grid > *,
section:not(.section-dark):not(.dark-section):not(.hero):not(.model):not(.assurance) .cred-grid > * {
  background-color: #FFFFFF;
}

/* Blocos métricos e painéis claros podem usar ligeira variação para não desaparecerem em fundo branco */
section:nth-of-type(odd):not(.section-dark):not(.dark-section):not(.hero):not(.model):not(.assurance) .metric,
section:nth-of-type(odd):not(.section-dark):not(.dark-section):not(.hero):not(.model):not(.assurance) .stat,
section:nth-of-type(odd):not(.section-dark):not(.dark-section):not(.hero):not(.model):not(.assurance) .panel {
  background-color: var(--mb-bg-panel);
}

/* Garantir que overlays/imagens e modal não são afetados pela alternância */
.project-modal,
.project-modal *,
.gallery-modal,
.gallery-modal *,
.hero-media,
.image-frame,
.visual-cta {
  background-color: revert;
}

/* Fallback se revert gerar herança indesejada em algum browser */
.project-modal,
.project-modal-dialog {
  background-color: #00190D !important;
}

/* Texto em fundos claros mantém paleta original */
section:not(.section-dark):not(.dark-section):not(.hero):not(.model):not(.assurance) h1,
section:not(.section-dark):not(.dark-section):not(.hero):not(.model):not(.assurance) h2,
section:not(.section-dark):not(.dark-section):not(.hero):not(.model):not(.assurance) h3 {
  color: #1F1F1F;
}

section:not(.section-dark):not(.dark-section):not(.hero):not(.model):not(.assurance) p,
section:not(.section-dark):not(.dark-section):not(.hero):not(.model):not(.assurance) li {
  color: #4F4F4F;
}


/* v115 — Paleta/textos corrigidos
   Base v114. Mantém claros alternados, mas corrige contraste em escuros e cards com imagem. */

/* Secções escuras: texto tem de ser claro, não herdado de regras de secções claras */
.hero,
.page-index .hero,
.internal-hero,
.service-hero,
.about-cover-panel,
.section-dark,
.dark-section,
.model,
.page-index .model,
.assurance,
.page-index .assurance {
  color: rgba(255, 255, 255, 0.88) !important;
}

.hero h1,
.hero h2,
.hero h3,
.hero .eyebrow,
.hero .kicker,
.page-index .hero h1,
.page-index .hero h2,
.page-index .hero h3,
.internal-hero h1,
.internal-hero h2,
.internal-hero h3,
.service-hero h1,
.service-hero h2,
.service-hero h3,
.about-cover-panel h1,
.about-cover-panel h2,
.about-cover-panel h3,
.section-dark h1,
.section-dark h2,
.section-dark h3,
.dark-section h1,
.dark-section h2,
.dark-section h3,
.model h1,
.model h2,
.model h3,
.page-index .model h1,
.page-index .model h2,
.page-index .model h3,
.assurance h1,
.assurance h2,
.assurance h3,
.page-index .assurance h1,
.page-index .assurance h2,
.page-index .assurance h3 {
  color: #FFFFFF !important;
}

.hero p,
.hero li,
.page-index .hero p,
.page-index .hero li,
.internal-hero p,
.internal-hero li,
.service-hero p,
.service-hero li,
.about-cover-panel p,
.about-cover-panel li,
.section-dark p,
.section-dark li,
.dark-section p,
.dark-section li,
.model p,
.model li,
.page-index .model p,
.page-index .model li,
.assurance p,
.assurance li,
.page-index .assurance p,
.page-index .assurance li {
  color: rgba(255, 255, 255, 0.78) !important;
}

/* Eyebrows em escuro mantêm verde luminoso */
.hero .eyebrow,
.hero .kicker,
.internal-hero .eyebrow,
.internal-hero .kicker,
.service-hero .eyebrow,
.service-hero .kicker,
.section-dark .eyebrow,
.section-dark .kicker,
.dark-section .eyebrow,
.dark-section .kicker,
.model .eyebrow,
.model .kicker,
.assurance .eyebrow,
.assurance .kicker {
  color: #A7E92F !important;
}

/* Links/ações em escuro: legíveis */
.hero a:not(.btn):not(.nav-cta),
.section-dark a:not(.btn):not(.nav-cta),
.dark-section a:not(.btn):not(.nav-cta),
.model a:not(.btn):not(.nav-cta),
.assurance a:not(.btn):not(.nav-cta) {
  color: #FFFFFF !important;
}

/* Cards com imagem/overlay: texto sempre claro.
   Isto corrige os project cards e cards semelhantes que a v114 contaminou. */
.project-card,
.selected-project-card,
.hub-card,
.service-card.media-card,
.image-card,
.card-media,
[class*="project-card"],
[class*="media-card"] {
  color: #FFFFFF !important;
}

.project-card h1,
.project-card h2,
.project-card h3,
.project-card h4,
.project-card p,
.project-card span,
.selected-project-card h1,
.selected-project-card h2,
.selected-project-card h3,
.selected-project-card h4,
.selected-project-card p,
.selected-project-card span,
.hub-card h1,
.hub-card h2,
.hub-card h3,
.hub-card h4,
.hub-card p,
.hub-card span,
.service-card.media-card h1,
.service-card.media-card h2,
.service-card.media-card h3,
.service-card.media-card h4,
.service-card.media-card p,
.service-card.media-card span,
.image-card h1,
.image-card h2,
.image-card h3,
.image-card h4,
.image-card p,
.image-card span,
.card-media h1,
.card-media h2,
.card-media h3,
.card-media h4,
.card-media p,
.card-media span,
[class*="project-card"] h1,
[class*="project-card"] h2,
[class*="project-card"] h3,
[class*="project-card"] h4,
[class*="project-card"] p,
[class*="project-card"] span,
[class*="media-card"] h1,
[class*="media-card"] h2,
[class*="media-card"] h3,
[class*="media-card"] h4,
[class*="media-card"] p,
[class*="media-card"] span {
  color: #FFFFFF !important;
}

/* Pequenas etiquetas/categorias nos cards com imagem */
.project-card .eyebrow,
.project-card .kicker,
.project-card small,
.selected-project-card .eyebrow,
.selected-project-card .kicker,
.selected-project-card small,
.hub-card .eyebrow,
.hub-card .kicker,
.hub-card small,
[class*="project-card"] .eyebrow,
[class*="project-card"] .kicker,
[class*="project-card"] small {
  color: rgba(255,255,255,0.78) !important;
}

/* Painéis/cards claros continuam escuros no texto */
section:not(.section-dark):not(.dark-section):not(.hero):not(.model):not(.assurance) .card:not(.project-card):not(.selected-project-card):not(.hub-card):not(.media-card):not(.image-card),
section:not(.section-dark):not(.dark-section):not(.hero):not(.model):not(.assurance) .capability-card,
section:not(.section-dark):not(.dark-section):not(.hero):not(.model):not(.assurance) .feature-card,
section:not(.section-dark):not(.dark-section):not(.hero):not(.model):not(.assurance) .steps article,
section:not(.section-dark):not(.dark-section):not(.hero):not(.model):not(.assurance) .proof-grid > *,
section:not(.section-dark):not(.dark-section):not(.hero):not(.model):not(.assurance) .cred-grid > * {
  color: #1F1F1F !important;
}

section:not(.section-dark):not(.dark-section):not(.hero):not(.model):not(.assurance) .card:not(.project-card):not(.selected-project-card):not(.hub-card):not(.media-card):not(.image-card) p,
section:not(.section-dark):not(.dark-section):not(.hero):not(.model):not(.assurance) .capability-card p,
section:not(.section-dark):not(.dark-section):not(.hero):not(.model):not(.assurance) .feature-card p,
section:not(.section-dark):not(.dark-section):not(.hero):not(.model):not(.assurance) .steps article p,
section:not(.section-dark):not(.dark-section):not(.hero):not(.model):not(.assurance) .proof-grid > * p,
section:not(.section-dark):not(.dark-section):not(.hero):not(.model):not(.assurance) .cred-grid > * p {
  color: #4F4F4F !important;
}

/* Modal/galeria: não herdar correções de cards */
.project-modal,
.project-modal * {
  color: inherit;
}

.project-modal h1,
.project-modal h2,
.project-modal h3,
.project-modal p,
.project-modal span {
  color: inherit;
}


/* v116 — Cards Construção/Industrial corrigidos
   Base v115. Corrige cards claros com imagem lateral nas páginas construction/industrial.
   Estes cards NÃO são overlays de imagem; devem ter texto escuro. */

/* Páginas de capacidade: cards claros de serviços */
body:not(.page-index) .service-grid .service-card,
body:not(.page-index) .service-grid .card,
body:not(.page-index) .capability-grid .capability-card,
body:not(.page-index) .capability-grid .card {
  color: #1F1F1F !important;
}

/* Títulos e números dos cards claros */
body:not(.page-index) .service-grid .service-card h1,
body:not(.page-index) .service-grid .service-card h2,
body:not(.page-index) .service-grid .service-card h3,
body:not(.page-index) .service-grid .service-card h4,
body:not(.page-index) .service-grid .service-card .number,
body:not(.page-index) .service-grid .service-card .index,
body:not(.page-index) .service-grid .service-card .eyebrow,
body:not(.page-index) .service-grid .service-card .kicker,
body:not(.page-index) .service-grid .card h1,
body:not(.page-index) .service-grid .card h2,
body:not(.page-index) .service-grid .card h3,
body:not(.page-index) .service-grid .card h4,
body:not(.page-index) .service-grid .card .number,
body:not(.page-index) .service-grid .card .index,
body:not(.page-index) .service-grid .card .eyebrow,
body:not(.page-index) .service-grid .card .kicker,
body:not(.page-index) .capability-grid .capability-card h1,
body:not(.page-index) .capability-grid .capability-card h2,
body:not(.page-index) .capability-grid .capability-card h3,
body:not(.page-index) .capability-grid .capability-card h4,
body:not(.page-index) .capability-grid .capability-card .number,
body:not(.page-index) .capability-grid .capability-card .index,
body:not(.page-index) .capability-grid .capability-card .eyebrow,
body:not(.page-index) .capability-grid .capability-card .kicker {
  color: #1F1F1F !important;
}

/* Números/etiquetas verdes nos cards claros */
body:not(.page-index) .service-grid .service-card small,
body:not(.page-index) .service-grid .service-card .num,
body:not(.page-index) .service-grid .service-card .label,
body:not(.page-index) .service-grid .service-card .tag,
body:not(.page-index) .service-grid .card small,
body:not(.page-index) .service-grid .card .num,
body:not(.page-index) .service-grid .card .label,
body:not(.page-index) .service-grid .card .tag,
body:not(.page-index) .capability-grid .capability-card small,
body:not(.page-index) .capability-grid .capability-card .num,
body:not(.page-index) .capability-grid .capability-card .label,
body:not(.page-index) .capability-grid .capability-card .tag {
  color: #084013 !important;
}

/* Texto descritivo dos cards claros */
body:not(.page-index) .service-grid .service-card p,
body:not(.page-index) .service-grid .service-card li,
body:not(.page-index) .service-grid .service-card span:not(.num):not(.label):not(.tag),
body:not(.page-index) .service-grid .card p,
body:not(.page-index) .service-grid .card li,
body:not(.page-index) .service-grid .card span:not(.num):not(.label):not(.tag),
body:not(.page-index) .capability-grid .capability-card p,
body:not(.page-index) .capability-grid .capability-card li,
body:not(.page-index) .capability-grid .capability-card span:not(.num):not(.label):not(.tag) {
  color: #4F4F4F !important;
}

/* Links "Ver detalhe" nos cards claros */
body:not(.page-index) .service-grid .service-card a,
body:not(.page-index) .service-grid .card a,
body:not(.page-index) .capability-grid .capability-card a {
  color: #084013 !important;
}

/* As imagens dentro destes cards não recebem fundo nem cor */
body:not(.page-index) .service-grid .service-card img,
body:not(.page-index) .service-grid .card img,
body:not(.page-index) .capability-grid .capability-card img {
  color: initial !important;
}

/* Proteção: cards de projetos com overlay continuam com texto claro */
body:not(.page-index) .projects-grid .project-card,
body:not(.page-index) .selected-projects-grid .project-card,
body:not(.page-index) .projects-grid .selected-project-card,
body:not(.page-index) .selected-projects-grid .selected-project-card,
.page-index .project-card,
.page-index .selected-project-card {
  color: #FFFFFF !important;
}

body:not(.page-index) .projects-grid .project-card h1,
body:not(.page-index) .projects-grid .project-card h2,
body:not(.page-index) .projects-grid .project-card h3,
body:not(.page-index) .projects-grid .project-card p,
body:not(.page-index) .projects-grid .project-card span,
body:not(.page-index) .selected-projects-grid .project-card h1,
body:not(.page-index) .selected-projects-grid .project-card h2,
body:not(.page-index) .selected-projects-grid .project-card h3,
body:not(.page-index) .selected-projects-grid .project-card p,
body:not(.page-index) .selected-projects-grid .project-card span,
.page-index .project-card h1,
.page-index .project-card h2,
.page-index .project-card h3,
.page-index .project-card p,
.page-index .project-card span,
.page-index .selected-project-card h1,
.page-index .selected-project-card h2,
.page-index .selected-project-card h3,
.page-index .selected-project-card p,
.page-index .selected-project-card span {
  color: #FFFFFF !important;
}


/* v117 — Textos cards/modal corrigidos
   Base v116.
   Corrige apenas:
   1) cards claros das páginas Construção/Industrial;
   2) texto lateral do modal/galeria de projetos.
*/

/* =========================================================
   1) Construção / Industrial — cards claros com imagem lateral
   ========================================================= */

/* Estes cards são claros, não overlays. A v115/v116 ainda deixava filhos com texto branco por causa de regras genéricas. */
body.page-construction .service-card,
body.page-construction .service-card *,
body.page-construction .scope-card,
body.page-construction .scope-card *,
body.page-construction .capability-card,
body.page-construction .capability-card *,
body.page-construction .service-tile,
body.page-construction .service-tile *,
body.page-construction .card,
body.page-construction .card *,
body.page-industrial .service-card,
body.page-industrial .service-card *,
body.page-industrial .scope-card,
body.page-industrial .scope-card *,
body.page-industrial .capability-card,
body.page-industrial .capability-card *,
body.page-industrial .service-tile,
body.page-industrial .service-tile *,
body.page-industrial .card,
body.page-industrial .card * {
  color: #1F1F1F !important;
}

/* Descrições dentro desses cards */
body.page-construction .service-card p,
body.page-construction .scope-card p,
body.page-construction .capability-card p,
body.page-construction .service-tile p,
body.page-construction .card p,
body.page-industrial .service-card p,
body.page-industrial .scope-card p,
body.page-industrial .capability-card p,
body.page-industrial .service-tile p,
body.page-industrial .card p {
  color: #4F4F4F !important;
}

/* Números/etiquetas e links nesses cards */
body.page-construction .service-card small,
body.page-construction .service-card .num,
body.page-construction .service-card .number,
body.page-construction .service-card .eyebrow,
body.page-construction .service-card .kicker,
body.page-construction .service-card a,
body.page-construction .scope-card small,
body.page-construction .scope-card .num,
body.page-construction .scope-card .number,
body.page-construction .scope-card .eyebrow,
body.page-construction .scope-card .kicker,
body.page-construction .scope-card a,
body.page-construction .capability-card small,
body.page-construction .capability-card .num,
body.page-construction .capability-card .number,
body.page-construction .capability-card .eyebrow,
body.page-construction .capability-card .kicker,
body.page-construction .capability-card a,
body.page-construction .service-tile small,
body.page-construction .service-tile .num,
body.page-construction .service-tile .number,
body.page-construction .service-tile .eyebrow,
body.page-construction .service-tile .kicker,
body.page-construction .service-tile a,
body.page-industrial .service-card small,
body.page-industrial .service-card .num,
body.page-industrial .service-card .number,
body.page-industrial .service-card .eyebrow,
body.page-industrial .service-card .kicker,
body.page-industrial .service-card a,
body.page-industrial .scope-card small,
body.page-industrial .scope-card .num,
body.page-industrial .scope-card .number,
body.page-industrial .scope-card .eyebrow,
body.page-industrial .scope-card .kicker,
body.page-industrial .scope-card a,
body.page-industrial .capability-card small,
body.page-industrial .capability-card .num,
body.page-industrial .capability-card .number,
body.page-industrial .capability-card .eyebrow,
body.page-industrial .capability-card .kicker,
body.page-industrial .capability-card a,
body.page-industrial .service-tile small,
body.page-industrial .service-tile .num,
body.page-industrial .service-tile .number,
body.page-industrial .service-tile .eyebrow,
body.page-industrial .service-tile .kicker,
body.page-industrial .service-tile a {
  color: #084013 !important;
}

/* Como algumas páginas podem não ter classe no body, aplicar também por ficheiro via seletor de navegação ativo aproximado/estrutura interna */
.service-list .service-card,
.service-list .service-card *,
.services-list .service-card,
.services-list .service-card *,
.scope-grid .scope-card,
.scope-grid .scope-card *,
.capabilities-list .capability-card,
.capabilities-list .capability-card *,
.service-content .service-card,
.service-content .service-card * {
  color: #1F1F1F !important;
}

.service-list .service-card p,
.services-list .service-card p,
.scope-grid .scope-card p,
.capabilities-list .capability-card p,
.service-content .service-card p {
  color: #4F4F4F !important;
}

.service-list .service-card a,
.services-list .service-card a,
.scope-grid .scope-card a,
.capabilities-list .capability-card a,
.service-content .service-card a {
  color: #084013 !important;
}

/* =========================================================
   2) Modal/galeria — texto lateral em fundo escuro
   ========================================================= */

.project-modal,
.project-modal-dialog,
.project-modal-panel,
.project-modal-info,
.project-modal-copy,
.project-modal-sidebar {
  color: rgba(255,255,255,0.78) !important;
}

.project-modal h1,
.project-modal h2,
.project-modal h3,
.project-modal .project-modal-title,
.project-modal .modal-title,
.project-modal [class*="title"] {
  color: #FFFFFF !important;
}

.project-modal p,
.project-modal li,
.project-modal .project-modal-description,
.project-modal .modal-description,
.project-modal [class*="description"] {
  color: rgba(255,255,255,0.74) !important;
}

.project-modal .eyebrow,
.project-modal .kicker,
.project-modal small,
.project-modal .project-type,
.project-modal [class*="category"] {
  color: rgba(255,255,255,0.68) !important;
}

.project-modal-count,
.project-modal .counter,
.project-modal [class*="count"] {
  color: rgba(255,255,255,0.72) !important;
}

/* Proteção: thumbnails e botões do modal mantêm estilos próprios */
.project-modal button,
.project-modal button *,
.project-modal-thumbs,
.project-modal-thumbs *,
.project-modal-close,
.project-modal-close *,
.project-modal-prev,
.project-modal-prev *,
.project-modal-next,
.project-modal-next * {
  color: inherit;
}


/* v118 — Hub cards corrigidos
   Base v117.
   Corrige definitivamente os cards .hub-card claros das páginas Construção e Industrial.
   Mantém modal de projetos internos corrigido. */

/* Construção/Industrial: hub-card é card claro com imagem lateral, NÃO overlay */
body.page-construction .hub-card,
body.page-construction .hub-card *,
body.page-industrial .hub-card,
body.page-industrial .hub-card * {
  color: #1F1F1F !important;
}

/* Títulos dentro dos hub-cards */
body.page-construction .hub-card h1,
body.page-construction .hub-card h2,
body.page-construction .hub-card h3,
body.page-construction .hub-card h4,
body.page-industrial .hub-card h1,
body.page-industrial .hub-card h2,
body.page-industrial .hub-card h3,
body.page-industrial .hub-card h4 {
  color: #1F1F1F !important;
}

/* Descrições */
body.page-construction .hub-card p,
body.page-construction .hub-card li,
body.page-industrial .hub-card p,
body.page-industrial .hub-card li {
  color: #4F4F4F !important;
}

/* Números/etiquetas */
body.page-construction .hub-card small,
body.page-construction .hub-card .num,
body.page-construction .hub-card .number,
body.page-construction .hub-card .index,
body.page-construction .hub-card .eyebrow,
body.page-construction .hub-card .kicker,
body.page-industrial .hub-card small,
body.page-industrial .hub-card .num,
body.page-industrial .hub-card .number,
body.page-industrial .hub-card .index,
body.page-industrial .hub-card .eyebrow,
body.page-industrial .hub-card .kicker {
  color: #084013 !important;
}

/* Links */
body.page-construction .hub-card a,
body.page-construction .hub-card a *,
body.page-industrial .hub-card a,
body.page-industrial .hub-card a * {
  color: #084013 !important;
}

/* Imagens dentro dos hub-cards não herdam cor */
body.page-construction .hub-card img,
body.page-industrial .hub-card img {
  color: initial !important;
}

/* Proteção: hub-cards nas páginas Construção/Industrial devem ter fundo de card claro */
body.page-construction .hub-card,
body.page-industrial .hub-card {
  background-color: #FFFFFF !important;
}

/* Proteção: hub-cards da homepage/projetos que funcionem como overlay NÃO são afetados por esta correção,
   porque a regra está limitada a body.page-construction/body.page-industrial. */

/* Modal dos projetos internos: manter texto claro */
.project-modal,
.project-modal-dialog,
.project-modal-panel,
.project-modal-info,
.project-modal-copy,
.project-modal-sidebar {
  color: rgba(255,255,255,0.78) !important;
}

.project-modal h1,
.project-modal h2,
.project-modal h3,
.project-modal .project-modal-title,
.project-modal .modal-title,
.project-modal [class*="title"] {
  color: #FFFFFF !important;
}

.project-modal p,
.project-modal li,
.project-modal .project-modal-description,
.project-modal .modal-description,
.project-modal [class*="description"] {
  color: rgba(255,255,255,0.74) !important;
}


/* v119 — Scroll reveal páginas internas
   Base v118 aprovada.
   Aplica fade + subida mínima apenas em blocos seguros das páginas internas.
   Não altera cores, textos, layout, modal, galerias, menu, footer ou botões. */

.internal-reveal {
  opacity: 0;
  transform: translateY(10px);
  transition:
    opacity 500ms cubic-bezier(.22,.61,.36,1),
    transform 500ms cubic-bezier(.22,.61,.36,1) !important;
  will-change: opacity, transform;
}

.internal-reveal.is-visible {
  opacity: 1;
  transform: translateY(0);
}

.internal-reveal.reveal-delay-1 { transition-delay: 55ms; }
.internal-reveal.reveal-delay-2 { transition-delay: 95ms; }
.internal-reveal.reveal-delay-3 { transition-delay: 135ms; }

/* Nunca aplicar reveal a zonas sensíveis */
.site-header .internal-reveal,
.hero .internal-reveal,
.internal-hero .internal-reveal,
.service-hero .internal-reveal,
.page-hero .internal-reveal,
.refined-footer .internal-reveal,
.footer .internal-reveal,
.project-modal .internal-reveal,
.project-modal .internal-reveal *,
.project-modal-dialog .internal-reveal,
.project-modal-thumbs .internal-reveal,
.project-modal-stage .internal-reveal,
.nav .internal-reveal,
.nav-cta.internal-reveal,
button.internal-reveal,
.button.internal-reveal {
  opacity: 1 !important;
  transform: none !important;
  transition: none !important;
}

/* Se algum card sensível for marcado por engano, proteger o interior visual */
.project-card.internal-reveal,
.selected-project-card.internal-reveal,
[class*="project-card"].internal-reveal {
  transition:
    opacity 500ms cubic-bezier(.22,.61,.36,1),
    transform 500ms cubic-bezier(.22,.61,.36,1) !important;
}

/* Sem qualquer transição de página */
html,
body,
body.ux-ready,
body.ux-leaving,
body.is-leaving,
body.page-leaving {
  opacity: 1 !important;
  visibility: visible !important;
  animation: none !important;
}

/* Acessibilidade */
@media (prefers-reduced-motion: reduce) {
  .internal-reveal,
  .internal-reveal.is-visible,
  .internal-reveal.reveal-delay-1,
  .internal-reveal.reveal-delay-2,
  .internal-reveal.reveal-delay-3 {
    opacity: 1 !important;
    transform: none !important;
    transition-duration: .001ms !important;
    transition-delay: 0ms !important;
  }
}


/* v120 — Scroll reveal internas corrigido
   Complementa v119 para apanhar Modelo, Projetos, Garantia e Contactos.
   Não altera cores, texto, layout, modal, menu, botões ou footer. */

.internal-reveal-v120 {
  opacity: 0;
  transform: translateY(10px);
  transition:
    opacity 500ms cubic-bezier(.22,.61,.36,1),
    transform 500ms cubic-bezier(.22,.61,.36,1) !important;
  will-change: opacity, transform;
}

.internal-reveal-v120.is-visible {
  opacity: 1;
  transform: translateY(0);
}

.internal-reveal-v120.reveal-delay-1 { transition-delay: 55ms; }
.internal-reveal-v120.reveal-delay-2 { transition-delay: 95ms; }
.internal-reveal-v120.reveal-delay-3 { transition-delay: 135ms; }

/* Proteções */
.site-header .internal-reveal-v120,
.nav .internal-reveal-v120,
.hero .internal-reveal-v120,
.internal-hero .internal-reveal-v120,
.service-hero .internal-reveal-v120,
.page-hero .internal-reveal-v120,
.refined-footer .internal-reveal-v120,
.footer .internal-reveal-v120,
.project-modal .internal-reveal-v120,
.project-modal-dialog .internal-reveal-v120,
.project-modal-stage .internal-reveal-v120,
.project-modal-thumbs .internal-reveal-v120,
button.internal-reveal-v120,
.button.internal-reveal-v120,
.nav-cta.internal-reveal-v120 {
  opacity: 1 !important;
  transform: none !important;
  transition: none !important;
}

@media (prefers-reduced-motion: reduce) {
  .internal-reveal-v120,
  .internal-reveal-v120.is-visible,
  .internal-reveal-v120.reveal-delay-1,
  .internal-reveal-v120.reveal-delay-2,
  .internal-reveal-v120.reveal-delay-3 {
    opacity: 1 !important;
    transform: none !important;
    transition-duration: .001ms !important;
    transition-delay: 0ms !important;
  }
}


/* v121 — Scroll reveal página Projetos corrigido
   Base v120. Só ativa reveal nos blocos da página Projetos.
   Modal/galeria permanece excluído. */

.projects-reveal-v121 {
  opacity: 0;
  transform: translateY(10px);
  transition:
    opacity 500ms cubic-bezier(.22,.61,.36,1),
    transform 500ms cubic-bezier(.22,.61,.36,1) !important;
  will-change: opacity, transform;
}

.projects-reveal-v121.is-visible {
  opacity: 1;
  transform: translateY(0);
}

.projects-reveal-v121.reveal-delay-1 { transition-delay: 55ms; }
.projects-reveal-v121.reveal-delay-2 { transition-delay: 95ms; }
.projects-reveal-v121.reveal-delay-3 { transition-delay: 135ms; }

/* Proteção absoluta do modal/galeria */
.project-modal .projects-reveal-v121,
.project-modal-dialog .projects-reveal-v121,
.project-modal-stage .projects-reveal-v121,
.project-modal-thumbs .projects-reveal-v121,
.project-modal button.projects-reveal-v121,
.project-modal img.projects-reveal-v121 {
  opacity: 1 !important;
  transform: none !important;
  transition: none !important;
}

@media (prefers-reduced-motion: reduce) {
  .projects-reveal-v121,
  .projects-reveal-v121.is-visible,
  .projects-reveal-v121.reveal-delay-1,
  .projects-reveal-v121.reveal-delay-2,
  .projects-reveal-v121.reveal-delay-3 {
    opacity: 1 !important;
    transform: none !important;
    transition-duration: .001ms !important;
    transition-delay: 0ms !important;
  }
}


/* v122 — Scroll reveal Projetos forçado
   Marca explicitamente elementos de projects.html.
   Modal/galeria continua excluído. */

.projects-reveal-force {
  opacity: 0;
  transform: translateY(10px);
  transition:
    opacity 500ms cubic-bezier(.22,.61,.36,1),
    transform 500ms cubic-bezier(.22,.61,.36,1) !important;
  will-change: opacity, transform;
}

.projects-reveal-force.is-visible {
  opacity: 1;
  transform: translateY(0);
}

.projects-reveal-force.reveal-delay-1 { transition-delay: 55ms; }
.projects-reveal-force.reveal-delay-2 { transition-delay: 95ms; }
.projects-reveal-force.reveal-delay-3 { transition-delay: 135ms; }

/* Proteção absoluta: nada dentro do modal fica escondido */
.project-modal .projects-reveal-force,
.project-modal-dialog .projects-reveal-force,
.project-modal-stage .projects-reveal-force,
.project-modal-thumbs .projects-reveal-force {
  opacity: 1 !important;
  transform: none !important;
  transition: none !important;
}

@media (prefers-reduced-motion: reduce) {
  .projects-reveal-force,
  .projects-reveal-force.is-visible {
    opacity: 1 !important;
    transform: none !important;
    transition-duration: .001ms !important;
    transition-delay: 0ms !important;
  }
}


/* v123 — Scroll reveal Projetos definitivo
   Base v122. Força o reveal em projects.html com !important.
   Modal/galeria excluído. */

body.page-projects .projects-reveal-v123 {
  opacity: 0 !important;
  transform: translateY(12px) !important;
  transition:
    opacity 520ms cubic-bezier(.22,.61,.36,1) !important,
    transform 520ms cubic-bezier(.22,.61,.36,1) !important;
  will-change: opacity, transform;
}

body.page-projects .projects-reveal-v123.is-visible {
  opacity: 1 !important;
  transform: translateY(0) !important;
}

body.page-projects .projects-reveal-v123.reveal-delay-1 { transition-delay: 60ms !important; }
body.page-projects .projects-reveal-v123.reveal-delay-2 { transition-delay: 105ms !important; }
body.page-projects .projects-reveal-v123.reveal-delay-3 { transition-delay: 150ms !important; }

/* Garantir que o modal nunca fica escondido por esta regra */
body.page-projects .project-modal .projects-reveal-v123,
body.page-projects .project-modal-dialog .projects-reveal-v123,
body.page-projects .project-modal-stage .projects-reveal-v123,
body.page-projects .project-modal-thumbs .projects-reveal-v123,
body.page-projects .project-modal,
body.page-projects .project-modal * {
  opacity: revert !important;
  transform: none !important;
}

@media (prefers-reduced-motion: reduce) {
  body.page-projects .projects-reveal-v123,
  body.page-projects .projects-reveal-v123.is-visible {
    opacity: 1 !important;
    transform: none !important;
    transition-duration: .001ms !important;
    transition-delay: 0ms !important;
  }
}


/* v124 — Projetos reveal no bloco de texto
   Base v123. Inclui bloco inicial de texto da página Projetos no reveal. */

body.page-projects .projects-reveal-v124 {
  opacity: 0 !important;
  transform: translateY(12px) !important;
  transition:
    opacity 520ms cubic-bezier(.22,.61,.36,1) !important,
    transform 520ms cubic-bezier(.22,.61,.36,1) !important;
  will-change: opacity, transform;
}

body.page-projects .projects-reveal-v124.is-visible {
  opacity: 1 !important;
  transform: translateY(0) !important;
}

body.page-projects .projects-reveal-v124.reveal-delay-1 { transition-delay: 55ms !important; }

/* Modal/galeria continua excluído */
body.page-projects .project-modal .projects-reveal-v124,
body.page-projects .project-modal-dialog .projects-reveal-v124,
body.page-projects .project-modal-stage .projects-reveal-v124,
body.page-projects .project-modal-thumbs .projects-reveal-v124 {
  opacity: revert !important;
  transform: none !important;
  transition: none !important;
}

@media (prefers-reduced-motion: reduce) {
  body.page-projects .projects-reveal-v124,
  body.page-projects .projects-reveal-v124.is-visible {
    opacity: 1 !important;
    transform: none !important;
    transition-duration: .001ms !important;
    transition-delay: 0ms !important;
  }
}


/* v125 — Projetos texto inicial corrigido
   O bloco "Projetos selecionados / Intervenções reais..." passa a usar o mesmo reveal dos cards. */

body.page-projects .projects-heading-reveal-v125 {
  opacity: 0 !important;
  transform: translateY(12px) !important;
  transition:
    opacity 520ms cubic-bezier(.22,.61,.36,1) !important,
    transform 520ms cubic-bezier(.22,.61,.36,1) !important;
  transition-delay: 0ms !important;
  will-change: opacity, transform;
}

body.page-projects .projects-heading-reveal-v125.is-visible {
  opacity: 1 !important;
  transform: translateY(0) !important;
}

/* Modal continua fora */
body.page-projects .project-modal .projects-heading-reveal-v125,
body.page-projects .project-modal-dialog .projects-heading-reveal-v125 {
  opacity: revert !important;
  transform: none !important;
  transition: none !important;
}


/* v127 — Setas do modal estabilizadas
   As setas da galeria devem ser pontos fixos. 
   Hover só altera cor/fundo, sem deslocação, subida ou scale. */

.project-modal .modal-nav,
.project-modal .gallery-nav,
.project-modal .modal-arrow,
.project-modal .project-modal-nav,
.project-modal button[class*="prev"],
.project-modal button[class*="next"],
.project-modal button[aria-label*="anterior" i],
.project-modal button[aria-label*="seguinte" i],
.project-modal button[aria-label*="previous" i],
.project-modal button[aria-label*="next" i] {
  transform: none !important;
  translate: none !important;
  transition:
    background-color 180ms ease,
    color 180ms ease,
    border-color 180ms ease,
    opacity 180ms ease !important;
  will-change: auto !important;
}

.project-modal .modal-nav:hover,
.project-modal .gallery-nav:hover,
.project-modal .modal-arrow:hover,
.project-modal .project-modal-nav:hover,
.project-modal button[class*="prev"]:hover,
.project-modal button[class*="next"]:hover,
.project-modal button[aria-label*="anterior" i]:hover,
.project-modal button[aria-label*="seguinte" i]:hover,
.project-modal button[aria-label*="previous" i]:hover,
.project-modal button[aria-label*="next" i]:hover,
.project-modal .modal-nav:focus-visible,
.project-modal .gallery-nav:focus-visible,
.project-modal .modal-arrow:focus-visible,
.project-modal .project-modal-nav:focus-visible,
.project-modal button[class*="prev"]:focus-visible,
.project-modal button[class*="next"]:focus-visible,
.project-modal button[aria-label*="anterior" i]:focus-visible,
.project-modal button[aria-label*="seguinte" i]:focus-visible,
.project-modal button[aria-label*="previous" i]:focus-visible,
.project-modal button[aria-label*="next" i]:focus-visible {
  transform: none !important;
  translate: none !important;
}

.project-modal .modal-nav:active,
.project-modal .gallery-nav:active,
.project-modal .modal-arrow:active,
.project-modal .project-modal-nav:active,
.project-modal button[class*="prev"]:active,
.project-modal button[class*="next"]:active,
.project-modal button[aria-label*="anterior" i]:active,
.project-modal button[aria-label*="seguinte" i]:active,
.project-modal button[aria-label*="previous" i]:active,
.project-modal button[aria-label*="next" i]:active {
  transform: none !important;
  translate: none !important;
}


/* v131 — Correção texto dos 3 cards da homepage
   Escopo: apenas página Início, bloco "Experiência aplicada em setores estratégicos".
   Objetivo: corrigir texto escuro/quase invisível sobre imagens.
   Não afetar cards de outras páginas. */

.page-index .selected-project-card,
.page-index .project-card,
.page-index .sector-card,
.page-index .capability-card.home-sector-card,
.page-index [data-project="residential"],
.page-index [data-project="institutional"],
.page-index [data-project="industrial"] {
  color: #FFFFFF !important;
}

/* Textos/títulos nos 3 cards de setores da homepage */
.page-index .selected-project-card h1,
.page-index .selected-project-card h2,
.page-index .selected-project-card h3,
.page-index .selected-project-card h4,
.page-index .selected-project-card p,
.page-index .selected-project-card span,
.page-index .selected-project-card small,
.page-index .selected-project-card em,
.page-index .project-card h1,
.page-index .project-card h2,
.page-index .project-card h3,
.page-index .project-card h4,
.page-index .project-card p,
.page-index .project-card span,
.page-index .project-card small,
.page-index .project-card em,
.page-index .sector-card h1,
.page-index .sector-card h2,
.page-index .sector-card h3,
.page-index .sector-card h4,
.page-index .sector-card p,
.page-index .sector-card span,
.page-index .sector-card small,
.page-index .sector-card em {
  color: #FFFFFF !important;
}

/* Legendas/categorias ligeiramente mais suaves, mas legíveis */
.page-index .selected-project-card span,
.page-index .selected-project-card small,
.page-index .selected-project-card em,
.page-index .project-card span,
.page-index .project-card small,
.page-index .project-card em,
.page-index .sector-card span,
.page-index .sector-card small,
.page-index .sector-card em {
  color: rgba(255,255,255,0.82) !important;
}

/* Descrições legíveis, sem branco agressivo */
.page-index .selected-project-card p,
.page-index .project-card p,
.page-index .sector-card p {
  color: rgba(255,255,255,0.82) !important;
}

/* Reforçar overlay apenas nestes cards da homepage para leitura do texto */
.page-index .selected-project-card::after,
.page-index .project-card::after,
.page-index .sector-card::after {
  background:
    linear-gradient(180deg, rgba(0,0,0,0.08) 0%, rgba(0,0,0,0.46) 68%, rgba(0,0,0,0.68) 100%) !important;
}

/* Caso os textos estejam dentro de div interno */
.page-index .selected-project-card > div,
.page-index .project-card > div,
.page-index .sector-card > div {
  color: #FFFFFF !important;
  position: relative;
  z-index: 2;
}

/* Proteção: não afetar modal/galeria nem cards fora da homepage */
.project-modal .selected-project-card,
.project-modal .project-card,
.project-modal .sector-card,
body:not(.page-index) .selected-project-card,
body:not(.page-index) .project-card,
body:not(.page-index) .sector-card {
  color: inherit;
}


/* v131B — Correção real dos 3 cards da homepage
   Escopo exato: página Início, bloco "Experiência aplicada em setores estratégicos",
   estrutura real: .projects-grid > article.
   Não aplicar a cards de outras páginas, modal, galerias ou hubs internos. */

body.page-index .projects-grid > article {
  color: #FFFFFF !important;
}

body.page-index .projects-grid > article h1,
body.page-index .projects-grid > article h2,
body.page-index .projects-grid > article h3,
body.page-index .projects-grid > article h4,
body.page-index .projects-grid > article p,
body.page-index .projects-grid > article span,
body.page-index .projects-grid > article small,
body.page-index .projects-grid > article em,
body.page-index .projects-grid > article div {
  color: #FFFFFF !important;
  position: relative;
  z-index: 2;
}

body.page-index .projects-grid > article h3 {
  color: #FFFFFF !important;
  text-shadow: 0 2px 14px rgba(0,0,0,0.42);
}

body.page-index .projects-grid > article p,
body.page-index .projects-grid > article span,
body.page-index .projects-grid > article small,
body.page-index .projects-grid > article em {
  color: rgba(255,255,255,0.86) !important;
  text-shadow: 0 2px 12px rgba(0,0,0,0.36);
}

/* Overlay localizado só nos 3 cards da homepage */
body.page-index .projects-grid > article::after {
  content: "";
  position: absolute;
  inset: 0;
  border-radius: inherit;
  pointer-events: none;
  z-index: 1;
  background:
    linear-gradient(180deg, rgba(0,0,0,0.04) 0%, rgba(0,0,0,0.42) 62%, rgba(0,0,0,0.72) 100%) !important;
}

/* Garantir que a imagem fica atrás do overlay/texto */
body.page-index .projects-grid > article img {
  position: relative;
  z-index: 0;
}

/* Proteção explícita: nada disto deve afetar outras páginas */
body:not(.page-index) .projects-grid > article::after {
  content: none;
}


/* v131C — Correção de posição do texto nos 3 cards da homepage
   Escopo exato: página Início, .projects-grid > article.
   Mantém texto branco e evita corte na base do card. */

body.page-index .projects-grid > article {
  overflow: hidden !important;
}

body.page-index .projects-grid > article > div {
  position: absolute !important;
  left: 2rem !important;
  right: 2rem !important;
  bottom: 1.8rem !important;
  z-index: 3 !important;
  margin: 0 !important;
  transform: none !important;
  color: #FFFFFF !important;
}

body.page-index .projects-grid > article > div h3 {
  margin: 0 !important;
  padding: 0 !important;
  line-height: 1.02 !important;
  color: #FFFFFF !important;
  text-shadow: 0 2px 16px rgba(0,0,0,0.48);
  max-width: 92%;
}

body.page-index .projects-grid > article::after {
  z-index: 1 !important;
  background:
    linear-gradient(180deg, rgba(0,0,0,0.03) 0%, rgba(0,0,0,0.34) 58%, rgba(0,0,0,0.76) 100%) !important;
}

body.page-index .projects-grid > article img {
  z-index: 0 !important;
}

/* Mobile/tablet: manter texto visível sem encostar à base */
@media (max-width: 768px) {
  body.page-index .projects-grid > article > div {
    left: 1.25rem !important;
    right: 1.25rem !important;
    bottom: 1.25rem !important;
  }
}


/* v132 — Scroll reveal discreto nos cards aprovados
   Sem zoom, sem bounce, sem deslocação lateral.
   Escopo aplicado por JS só nas páginas/blocos definidos. */

.v132-scroll-reveal {
  opacity: 0;
  transform: translateY(18px);
  transition:
    opacity 620ms ease,
    transform 620ms ease;
  transition-delay: var(--v132-delay, 0ms);
  will-change: opacity, transform;
}

.v132-scroll-reveal.v132-in-view {
  opacity: 1;
  transform: translateY(0);
}

@media (prefers-reduced-motion: reduce) {
  .v132-scroll-reveal {
    opacity: 1 !important;
    transform: none !important;
    transition: none !important;
  }
}


/* v132B — Atraso progressivo mais perceptível
   Aplicado só nos blocos já aprovados:
   - Modelo: 3 cards das etapas
   - Sobre Nós: 4 cards das métricas
   - Industrial/Aprovisionamento Industrial: 3 cards Gestão/Coordenação/Execução
   Garantia mantém reveal sem atraso. */

/* Modelo */
body.page-execution_model .process-grid > article:nth-child(1).v132-scroll-reveal { --v132-delay: 0ms !important; }
body.page-execution_model .process-grid > article:nth-child(2).v132-scroll-reveal { --v132-delay: 180ms !important; }
body.page-execution_model .process-grid > article:nth-child(3).v132-scroll-reveal { --v132-delay: 360ms !important; }

/* Sobre Nós — métricas/credenciais */
body.page-about .cred-grid > article:nth-child(1).v132-scroll-reveal,
body.page-about .metrics-grid > article:nth-child(1).v132-scroll-reveal,
body.page-about .stats-grid > article:nth-child(1).v132-scroll-reveal { --v132-delay: 0ms !important; }

body.page-about .cred-grid > article:nth-child(2).v132-scroll-reveal,
body.page-about .metrics-grid > article:nth-child(2).v132-scroll-reveal,
body.page-about .stats-grid > article:nth-child(2).v132-scroll-reveal { --v132-delay: 160ms !important; }

body.page-about .cred-grid > article:nth-child(3).v132-scroll-reveal,
body.page-about .metrics-grid > article:nth-child(3).v132-scroll-reveal,
body.page-about .stats-grid > article:nth-child(3).v132-scroll-reveal { --v132-delay: 320ms !important; }

body.page-about .cred-grid > article:nth-child(4).v132-scroll-reveal,
body.page-about .metrics-grid > article:nth-child(4).v132-scroll-reveal,
body.page-about .stats-grid > article:nth-child(4).v132-scroll-reveal { --v132-delay: 480ms !important; }

/* Industrial / Aprovisionamento Industrial — 3 cards pequenos */
body.page-industrial_procurement .pdm-feature-cards > article:nth-child(1).v132-scroll-reveal,
body.page-industrial_procurement .pdm-cards > article:nth-child(1).v132-scroll-reveal,
body.page-industrial_procurement .procurement-cards > article:nth-child(1).v132-scroll-reveal,
body.page-industrial_procurement .summary-cards > article:nth-child(1).v132-scroll-reveal { --v132-delay: 0ms !important; }

body.page-industrial_procurement .pdm-feature-cards > article:nth-child(2).v132-scroll-reveal,
body.page-industrial_procurement .pdm-cards > article:nth-child(2).v132-scroll-reveal,
body.page-industrial_procurement .procurement-cards > article:nth-child(2).v132-scroll-reveal,
body.page-industrial_procurement .summary-cards > article:nth-child(2).v132-scroll-reveal { --v132-delay: 160ms !important; }

body.page-industrial_procurement .pdm-feature-cards > article:nth-child(3).v132-scroll-reveal,
body.page-industrial_procurement .pdm-cards > article:nth-child(3).v132-scroll-reveal,
body.page-industrial_procurement .procurement-cards > article:nth-child(3).v132-scroll-reveal,
body.page-industrial_procurement .summary-cards > article:nth-child(3).v132-scroll-reveal { --v132-delay: 320ms !important; }

/* Garantia — sem atraso */
body.page-assurance .v132-scroll-reveal {
  --v132-delay: 0ms !important;
}


/* v132C — Atraso progressivo realmente visível
   Correção sobre v132/v132B.
   O atraso passa a ser definido de forma robusta por página/estrutura real,
   com valores mais perceptíveis. Garantia mantém sem atraso. */

.v132-scroll-reveal {
  transition:
    opacity 760ms cubic-bezier(.22,.61,.36,1),
    transform 760ms cubic-bezier(.22,.61,.36,1) !important;
  transition-delay: var(--v132-delay, 0ms) !important;
}

/* Página Modelo — cards 01/02/03 */
body.page-execution_model .process-grid > article:nth-child(1),
body.page-execution-model .process-grid > article:nth-child(1) {
  --v132-delay: 0ms !important;
}
body.page-execution_model .process-grid > article:nth-child(2),
body.page-execution-model .process-grid > article:nth-child(2) {
  --v132-delay: 350ms !important;
}
body.page-execution_model .process-grid > article:nth-child(3),
body.page-execution-model .process-grid > article:nth-child(3) {
  --v132-delay: 700ms !important;
}

/* Página Sobre Nós — 4 cards pequenos de métricas */
body.page-about .cred-grid > article:nth-child(1),
body.page-about .metrics-grid > article:nth-child(1),
body.page-about .stats-grid > article:nth-child(1) {
  --v132-delay: 0ms !important;
}
body.page-about .cred-grid > article:nth-child(2),
body.page-about .metrics-grid > article:nth-child(2),
body.page-about .stats-grid > article:nth-child(2) {
  --v132-delay: 250ms !important;
}
body.page-about .cred-grid > article:nth-child(3),
body.page-about .metrics-grid > article:nth-child(3),
body.page-about .stats-grid > article:nth-child(3) {
  --v132-delay: 500ms !important;
}
body.page-about .cred-grid > article:nth-child(4),
body.page-about .metrics-grid > article:nth-child(4),
body.page-about .stats-grid > article:nth-child(4) {
  --v132-delay: 750ms !important;
}

/* Industrial / Aprovisionamento Industrial — 3 cards Gestão/Coordenação/Execução.
   Inclui classes possíveis e fallback por artigos dentro do bloco pdm-content. */
body.page-industrial_procurement .pdm-feature-cards > article:nth-child(1),
body.page-industrial-procurement .pdm-feature-cards > article:nth-child(1),
body.page-industrial_procurement .pdm-cards > article:nth-child(1),
body.page-industrial-procurement .pdm-cards > article:nth-child(1),
body.page-industrial_procurement .procurement-cards > article:nth-child(1),
body.page-industrial-procurement .procurement-cards > article:nth-child(1),
body.page-industrial_procurement .summary-cards > article:nth-child(1),
body.page-industrial-procurement .summary-cards > article:nth-child(1),
body.page-industrial_procurement .pdm-content article:nth-of-type(1),
body.page-industrial-procurement .pdm-content article:nth-of-type(1) {
  --v132-delay: 0ms !important;
}
body.page-industrial_procurement .pdm-feature-cards > article:nth-child(2),
body.page-industrial-procurement .pdm-feature-cards > article:nth-child(2),
body.page-industrial_procurement .pdm-cards > article:nth-child(2),
body.page-industrial-procurement .pdm-cards > article:nth-child(2),
body.page-industrial_procurement .procurement-cards > article:nth-child(2),
body.page-industrial-procurement .procurement-cards > article:nth-child(2),
body.page-industrial_procurement .summary-cards > article:nth-child(2),
body.page-industrial-procurement .summary-cards > article:nth-child(2),
body.page-industrial_procurement .pdm-content article:nth-of-type(2),
body.page-industrial-procurement .pdm-content article:nth-of-type(2) {
  --v132-delay: 300ms !important;
}
body.page-industrial_procurement .pdm-feature-cards > article:nth-child(3),
body.page-industrial-procurement .pdm-feature-cards > article:nth-child(3),
body.page-industrial_procurement .pdm-cards > article:nth-child(3),
body.page-industrial-procurement .pdm-cards > article:nth-child(3),
body.page-industrial_procurement .procurement-cards > article:nth-child(3),
body.page-industrial-procurement .procurement-cards > article:nth-child(3),
body.page-industrial_procurement .summary-cards > article:nth-child(3),
body.page-industrial-procurement .summary-cards > article:nth-child(3),
body.page-industrial_procurement .pdm-content article:nth-of-type(3),
body.page-industrial-procurement .pdm-content article:nth-of-type(3) {
  --v132-delay: 600ms !important;
}

/* Página Garantia — sem atraso */
body.page-assurance .v132-scroll-reveal {
  --v132-delay: 0ms !important;
  transition-delay: 0ms !important;
}


/* v132D — atraso progressivo corrigido especificamente em industrial-procurement.html
   Corrige a página Aprovisionamento Industrial, que herdava body class errada.
   Não altera Modelo, Sobre Nós, Garantia, Projetos, Construção/Industrial geral ou Contactos. */

.v132-industrial-delay-1.v132-scroll-reveal {
  --v132-delay: 0ms !important;
  transition-delay: 0ms !important;
}

.v132-industrial-delay-2.v132-scroll-reveal {
  --v132-delay: 350ms !important;
  transition-delay: 350ms !important;
}

.v132-industrial-delay-3.v132-scroll-reveal {
  --v132-delay: 700ms !important;
  transition-delay: 700ms !important;
}

/* Garante que estes 3 cards só aparecem depois do respetivo delay */
.v132-industrial-delay-1,
.v132-industrial-delay-2,
.v132-industrial-delay-3 {
  transition:
    opacity 760ms cubic-bezier(.22,.61,.36,1),
    transform 760ms cubic-bezier(.22,.61,.36,1) !important;
}


/* v139B2 — keep CTA button labels on one line after EN translation */
.button,
.footer-cta a,
.final-cta a,
.form button,
.nav-cta,
.hero-actions a {
  white-space: nowrap;
}

/* v140 — Mobile refinement only
   Base: MB_Massiv_Bau_Site_Final. Scope intentionally limited to mobile/tablet widths.
   Preserves content, desktop layout, PT/EN, SEO, galleries and existing JS functionality. */

@media (max-width: 980px) {
  /* Mobile menu: compact floating panel aligned right, not full-width */
  .refined-header .nav,
  .site-header.refined-header .nav {
    left: auto !important;
    right: 12px !important;
    top: 70px !important;
    width: min(320px, calc(100vw - 32px)) !important;
    max-width: calc(100vw - 32px) !important;
    align-items: stretch !important;
    padding: 14px !important;
    gap: 4px !important;
    border-radius: 22px !important;
    background: rgba(255,255,255,.985) !important;
    border: 1px solid rgba(0,0,0,.075) !important;
    box-shadow: 0 22px 64px rgba(0,0,0,.18) !important;
    backdrop-filter: blur(18px) !important;
  }

  .refined-header .nav a:not(.nav-cta),
  .refined-header .nav-cta {
    min-height: 42px !important;
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    padding: 10px 12px !important;
    border-radius: 14px !important;
    font-size: 13px !important;
    line-height: 1.2 !important;
  }

  .refined-header .lang-switch {
    width: max-content !important;
    align-self: center !important;
    margin: 8px auto 4px !important;
  }

  /* Hero titles: lighter mobile scale only */
  .hero h1,
  .internal-hero h1,
  .service-hero h1,
  .pdm-hero h1 {
    font-size: clamp(38px, 8.8vw, 54px) !important;
    line-height: .98 !important;
    letter-spacing: -.055em !important;
  }

  .hero p,
  .internal-hero p:not(.label),
  .service-hero p:not(.label),
  .pdm-hero p:not(.label) {
    font-size: 16px !important;
    line-height: 1.65 !important;
  }

  .internal-hero,
  .service-hero,
  .pdm-hero {
    padding-top: 118px !important;
  }

  .internal-hero-image,
  .internal-hero-image img,
  .service-hero-image,
  .service-hero-image img,
  .pdm-hero-image,
  .pdm-hero-image img {
    min-height: 340px !important;
  }

  /* Construction / Industrial hub cards: more controlled mobile hierarchy */
  .page-construction .hub-grid,
  .page-industrial .hub-grid {
    gap: 18px !important;
  }

  .page-construction .hub-card,
  .page-industrial .hub-card {
    grid-template-columns: 132px 1fr !important;
    gap: 0 !important;
    align-items: stretch !important;
    min-height: 174px !important;
    border-radius: 22px !important;
    overflow: hidden !important;
    background: rgba(255,255,255,.98) !important;
    box-shadow: 0 14px 42px rgba(0,0,0,.06) !important;
  }

  .page-construction .hub-card img,
  .page-industrial .hub-card img {
    min-height: 100% !important;
    height: 100% !important;
    object-fit: cover !important;
    filter: brightness(.86) saturate(.9) contrast(1.04) !important;
  }

  .page-construction .hub-card div,
  .page-industrial .hub-card div {
    padding: 18px 18px 17px !important;
    display: flex !important;
    flex-direction: column !important;
    justify-content: center !important;
    min-width: 0 !important;
  }

  .page-construction .hub-card span,
  .page-industrial .hub-card span {
    margin-bottom: 8px !important;
    font-size: 10px !important;
    letter-spacing: .18em !important;
  }

  .page-construction .hub-card h2,
  .page-industrial .hub-card h2 {
    font-size: clamp(21px, 4.8vw, 28px) !important;
    line-height: 1.02 !important;
    letter-spacing: -.045em !important;
    margin: 0 0 8px !important;
    overflow-wrap: anywhere !important;
  }

  .page-construction .hub-card p,
  .page-industrial .hub-card p {
    font-size: 13.5px !important;
    line-height: 1.48 !important;
    margin: 0 0 12px !important;
    color: rgba(79,79,79,.92) !important;
  }

  .page-construction .hub-card em,
  .page-industrial .hub-card em {
    font-size: 12px !important;
    line-height: 1.2 !important;
  }

  /* Contact page: more premium spacing and clearer separation */
  .page-contact .contact.surface {
    padding-top: 74px !important;
    padding-bottom: 78px !important;
  }

  .page-contact .contact-grid {
    gap: 32px !important;
  }

  .page-contact .contact-details {
    margin-top: 24px !important;
    padding: 20px !important;
    border-radius: 22px !important;
    background: #fff !important;
    border: 1px solid rgba(0,0,0,.065) !important;
    box-shadow: 0 12px 36px rgba(0,0,0,.045) !important;
  }

  .page-contact .form {
    padding: 24px !important;
    border-radius: 24px !important;
    gap: 16px !important;
    background: #fff !important;
    box-shadow: 0 14px 44px rgba(0,0,0,.055) !important;
  }

  .page-contact input,
  .page-contact textarea {
    min-height: 54px !important;
    border-radius: 16px !important;
    padding: 13px 15px !important;
  }

  .page-contact textarea {
    min-height: 132px !important;
  }
}

@media (max-width: 640px) {
  .section {
    padding-top: 74px;
    padding-bottom: 74px;
  }

  /* Metrics remain 2x2 on normal phones; only very narrow screens fall to 1 column. */
  .metrics-grid,
  .proof-grid,
  .cred-grid,
  body:not(.page-index) .cred-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
  }

  .metrics-grid div,
  .proof-grid div,
  .cred-grid article {
    padding: 20px 18px !important;
    min-width: 0 !important;
  }

  .metrics-grid div,
  .proof-grid div {
    border-left: 0 !important;
    border-right: 0 !important;
    border-bottom: 0 !important;
    border-top: 1px solid rgba(0,0,0,.07) !important;
  }

  .metrics-grid div:nth-child(-n+2),
  .proof-grid div:nth-child(-n+2) {
    border-top: 0 !important;
  }

  .metrics-grid div:nth-child(odd),
  .proof-grid div:nth-child(odd) {
    border-right: 1px solid rgba(0,0,0,.07) !important;
  }

  .metrics-grid strong,
  .proof-grid span,
  .cred-grid strong {
    font-size: clamp(29px, 8vw, 38px) !important;
    line-height: 1 !important;
  }

  .metrics-grid span,
  .proof-grid p,
  .cred-grid span {
    font-size: 12.5px !important;
    line-height: 1.35 !important;
  }

  .hero h1,
  .internal-hero h1,
  .service-hero h1,
  .pdm-hero h1 {
    font-size: clamp(35px, 10.2vw, 46px) !important;
    line-height: 1 !important;
  }

  .internal-hero-image,
  .internal-hero-image img,
  .service-hero-image,
  .service-hero-image img,
  .pdm-hero-image,
  .pdm-hero-image img {
    min-height: 300px !important;
    border-radius: 24px !important;
  }

  .page-construction .hub-card,
  .page-industrial .hub-card {
    grid-template-columns: 118px 1fr !important;
    min-height: 166px !important;
    border-radius: 20px !important;
  }

  .page-construction .hub-card div,
  .page-industrial .hub-card div {
    padding: 16px !important;
  }

  .page-construction .hub-card h2,
  .page-industrial .hub-card h2 {
    font-size: clamp(20px, 5.9vw, 25px) !important;
  }

  .page-construction .hub-card p,
  .page-industrial .hub-card p {
    font-size: 13px !important;
    line-height: 1.42 !important;
  }

  .page-contact .form {
    grid-template-columns: 1fr !important;
  }

  .page-contact .form button {
    width: 100% !important;
    justify-content: center !important;
  }
}

@media (max-width: 430px) {
  .refined-header .nav,
  .site-header.refined-header .nav {
    right: 10px !important;
    width: min(304px, calc(100vw - 28px)) !important;
  }

  .page-construction .hub-card,
  .page-industrial .hub-card {
    grid-template-columns: 104px 1fr !important;
    min-height: 160px !important;
  }

  .page-construction .hub-card div,
  .page-industrial .hub-card div {
    padding: 15px 14px !important;
  }

  .page-construction .hub-card h2,
  .page-industrial .hub-card h2 {
    font-size: 20px !important;
  }

  .page-construction .hub-card p,
  .page-industrial .hub-card p {
    font-size: 12.5px !important;
  }
}

@media (max-width: 340px) {
  .metrics-grid,
  .proof-grid,
  .cred-grid,
  body:not(.page-index) .cred-grid {
    grid-template-columns: 1fr !important;
  }

  .metrics-grid div,
  .proof-grid div {
    border-right: 0 !important;
    border-top: 1px solid rgba(0,0,0,.07) !important;
  }

  .metrics-grid div:first-child,
  .proof-grid div:first-child {
    border-top: 0 !important;
  }

  .page-construction .hub-card,
  .page-industrial .hub-card {
    grid-template-columns: 1fr !important;
  }

  .page-construction .hub-card img,
  .page-industrial .hub-card img {
    height: 152px !important;
    min-height: 152px !important;
  }
}

/* Project gallery modal: compact mobile treatment only. */
@media (max-width: 760px) {
  .project-modal-backdrop {
    background: rgba(2,8,5,.78) !important;
    backdrop-filter: blur(8px) !important;
  }

  .project-modal-dialog {
    inset: 8px !important;
    max-height: calc(100dvh - 16px) !important;
    grid-template-columns: 1fr !important;
    grid-template-rows: auto minmax(0, 1fr) auto auto !important;
    gap: 10px !important;
    row-gap: 10px !important;
    padding: 14px 14px 16px !important;
    padding-bottom: 16px !important;
    border-radius: 22px !important;
    overflow-y: auto !important;
    background: #F7F7F4 !important;
  }

  .project-modal-close {
    top: 12px !important;
    right: 12px !important;
    width: 38px !important;
    height: 38px !important;
  }

  .project-modal-head {
    padding: 0 44px 2px 0 !important;
    align-self: start !important;
  }

  .project-modal-head .label {
    margin-bottom: 7px !important;
    font-size: 10px !important;
    letter-spacing: .18em !important;
  }

  .project-modal-head h2 {
    margin: 0 0 7px !important;
    font-size: clamp(25px, 7.2vw, 34px) !important;
    line-height: 1 !important;
    letter-spacing: -.052em !important;
  }

  .project-modal-head p:not(.label) {
    margin: 0 !important;
    font-size: 13px !important;
    line-height: 1.42 !important;
    color: rgba(79,79,79,.84) !important;
  }

  .project-modal-stage {
    min-height: 0 !important;
    height: min(50vh, 410px) !important;
    max-height: 410px !important;
    border-radius: 18px !important;
    background: #EDEDE8 !important;
    border: 1px solid rgba(0,0,0,.055) !important;
  }

  .project-modal-stage img {
    min-height: 0 !important;
    height: 100% !important;
    max-height: 410px !important;
    object-fit: contain !important;
    background: #EDEDE8 !important;
  }

  .project-modal-nav {
    width: 38px !important;
    height: 38px !important;
    font-size: 0 !important;
    background: rgba(255,255,255,.94) !important;
    box-shadow: 0 10px 26px rgba(0,0,0,.12) !important;
  }

  .project-modal-nav.prev { left: 10px !important; }
  .project-modal-nav.next { right: 10px !important; }

  .project-modal-count {
    grid-column: 1 / -1 !important;
    align-self: start !important;
    margin: 0 !important;
    padding: 1px 2px 0 !important;
    font-size: 12px !important;
    line-height: 1.2 !important;
  }

  .project-modal-thumbs {
    grid-column: 1 / -1 !important;
    min-height: 54px !important;
    height: 54px !important;
    padding: 4px 0 2px !important;
    margin: 0 !important;
    gap: 8px !important;
  }

  .project-modal-thumbs button {
    flex: 0 0 60px !important;
    width: 60px !important;
    min-width: 60px !important;
    height: 42px !important;
    min-height: 42px !important;
    max-height: 42px !important;
    border-radius: 9px !important;
  }
}

@media (max-width: 390px), (max-height: 740px) and (max-width: 760px) {
  .project-modal-dialog {
    inset: 6px !important;
    max-height: calc(100dvh - 12px) !important;
    padding: 12px !important;
    gap: 8px !important;
    row-gap: 8px !important;
  }

  .project-modal-head h2 {
    font-size: 25px !important;
  }

  .project-modal-head p:not(.label) {
    font-size: 12.5px !important;
    line-height: 1.35 !important;
  }

  .project-modal-stage {
    height: min(44vh, 340px) !important;
  }

  .project-modal-thumbs {
    min-height: 50px !important;
    height: 50px !important;
  }

  .project-modal-thumbs button {
    flex-basis: 56px !important;
    width: 56px !important;
    min-width: 56px !important;
    height: 39px !important;
    min-height: 39px !important;
  }
}

/* v141 — Mobile correction pass
   Scope: mobile/tablet only. Corrects Home metrics, compact floating menu, mobile footer grid,
   project modal spacing/legibility, hero title scale and contact bottom safety spacing. */

@media (max-width: 980px) {
  /* Menu: much narrower floating panel. Text is allowed to wrap so the panel stays compact. */
  .refined-header .nav,
  .site-header.refined-header .nav {
    left: auto !important;
    right: 10px !important;
    top: 66px !important;
    width: clamp(136px, 34vw, 190px) !important;
    max-width: 34vw !important;
    min-width: 136px !important;
    padding: 9px !important;
    gap: 2px !important;
    border-radius: 18px !important;
    background: rgba(255,255,255,.992) !important;
    box-shadow: 0 18px 48px rgba(0,0,0,.18) !important;
  }

  .refined-header .nav a:not(.nav-cta),
  .refined-header .nav-cta {
    min-height: 34px !important;
    padding: 7px 8px !important;
    border-radius: 11px !important;
    font-size: 10.5px !important;
    line-height: 1.12 !important;
    white-space: normal !important;
    text-align: center !important;
  }

  .refined-header .lang-switch {
    margin: 5px auto 3px !important;
    transform: scale(.86) !important;
    transform-origin: center !important;
  }

  /* Home metrics: the three metrics must not collapse into one vertical column on normal phones. */
  .page-index .company-metrics {
    grid-template-columns: repeat(3, minmax(0, 1fr)) !important;
    gap: 10px !important;
    align-items: start !important;
    max-width: none !important;
    margin: 24px 0 26px !important;
    padding-top: 20px !important;
  }

  .page-index .company-metrics div {
    text-align: center !important;
    min-width: 0 !important;
  }

  .page-index .company-metrics strong {
    font-size: clamp(22px, 6.2vw, 28px) !important;
    line-height: 1 !important;
    margin-bottom: 6px !important;
  }

  .page-index .company-metrics span {
    max-width: 96px !important;
    margin-left: auto !important;
    margin-right: auto !important;
    font-size: 11.5px !important;
    line-height: 1.25 !important;
  }

  /* Footer: keep the three navigation/contact blocks side by side where phone width allows. */
  .refined-footer .footer-main {
    grid-template-columns: repeat(3, minmax(0, 1fr)) !important;
    gap: 18px !important;
    align-items: start !important;
    padding: 30px 0 28px !important;
  }

  .refined-footer .footer-col {
    min-width: 0 !important;
    gap: 7px !important;
  }

  .refined-footer .footer-col strong {
    font-size: 9.5px !important;
    letter-spacing: .105em !important;
    margin-bottom: 5px !important;
    overflow-wrap: anywhere !important;
  }

  .refined-footer .footer-col a,
  .refined-footer .footer-col span {
    font-size: 11px !important;
    line-height: 1.32 !important;
    overflow-wrap: anywhere !important;
  }

  .refined-footer .footer-top {
    padding-bottom: 28px !important;
  }

  .footer-bottom {
    gap: 10px !important;
  }

  /* Hero titles: second lighter mobile pass. */
  .hero h1,
  .internal-hero h1,
  .service-hero h1,
  .pdm-hero h1 {
    font-size: clamp(34px, 8.1vw, 46px) !important;
    line-height: .96 !important;
    letter-spacing: -.052em !important;
  }

  .section-head h2,
  .copy h2 {
    font-size: clamp(31px, 7.4vw, 42px) !important;
    line-height: .98 !important;
  }

  .page-contact .contact.surface {
    padding-bottom: 96px !important;
  }
}

@media (max-width: 640px) {
  /* Keep Home metrics in one compact row on normal phones; this block must override older max-width:620 rules. */
  .page-index .company-metrics {
    grid-template-columns: repeat(3, minmax(0, 1fr)) !important;
    gap: 8px !important;
    text-align: center !important;
  }

  .page-index .company-metrics div {
    text-align: center !important;
  }

  .page-index .company-metrics span {
    max-width: 88px !important;
    margin-left: auto !important;
    margin-right: auto !important;
    font-size: 10.8px !important;
  }

  .refined-footer .footer-main {
    grid-template-columns: repeat(3, minmax(0, 1fr)) !important;
    gap: 14px !important;
  }

  .refined-footer .footer-col strong {
    font-size: 9px !important;
  }

  .refined-footer .footer-col a,
  .refined-footer .footer-col span {
    font-size: 10.5px !important;
  }
}

@media (max-width: 430px) {
  .refined-header .nav,
  .site-header.refined-header .nav {
    right: 9px !important;
    width: clamp(132px, 34vw, 150px) !important;
    max-width: 34vw !important;
    min-width: 132px !important;
    padding: 8px !important;
  }

  .refined-header .nav a:not(.nav-cta),
  .refined-header .nav-cta {
    min-height: 32px !important;
    padding: 6px 6px !important;
    font-size: 10px !important;
  }

  .hero h1,
  .internal-hero h1,
  .service-hero h1,
  .pdm-hero h1 {
    font-size: clamp(32px, 8.6vw, 38px) !important;
    line-height: .96 !important;
  }

  .section-head h2,
  .copy h2 {
    font-size: clamp(29px, 7.7vw, 35px) !important;
  }
}

@media (max-width: 360px) {
  .page-index .company-metrics,
  .refined-footer .footer-main {
    grid-template-columns: 1fr !important;
  }

  .page-index .company-metrics div,
  .refined-footer .footer-col {
    text-align: left !important;
  }

  .page-index .company-metrics span {
    max-width: none !important;
    margin-left: 0 !important;
    margin-right: 0 !important;
  }

  .refined-header .nav,
  .site-header.refined-header .nav {
    width: min(150px, calc(100vw - 22px)) !important;
    max-width: calc(100vw - 22px) !important;
  }
}

/* Project modal v141: tighter and clearer on phones. */
@media (max-width: 760px) {
  .project-modal-dialog {
    inset: 6px !important;
    max-height: calc(100dvh - 12px) !important;
    display: grid !important;
    grid-template-rows: auto minmax(0, 1fr) auto auto !important;
    gap: 7px !important;
    row-gap: 7px !important;
    padding: 12px 12px 14px !important;
    border-radius: 20px !important;
    background: #F7F7F4 !important;
    overflow-y: auto !important;
  }

  .project-modal-head {
    padding: 0 42px 0 0 !important;
  }

  .project-modal-head h2 {
    color: #1F1F1F !important;
    font-size: clamp(22px, 6.4vw, 29px) !important;
    line-height: .98 !important;
    margin-bottom: 5px !important;
  }

  .project-modal-head .label {
    color: rgba(8,64,19,.82) !important;
    margin-bottom: 5px !important;
  }

  .project-modal-head p:not(.label) {
    color: rgba(79,79,79,.82) !important;
    font-size: 12.2px !important;
    line-height: 1.32 !important;
    display: -webkit-box !important;
    -webkit-line-clamp: 2 !important;
    -webkit-box-orient: vertical !important;
    overflow: hidden !important;
  }

  .project-modal-stage {
    height: min(46vh, 360px) !important;
    max-height: 360px !important;
    border-radius: 16px !important;
    background: #F1F1EC !important;
    border: 1px solid rgba(0,0,0,.055) !important;
  }

  .project-modal-stage img {
    object-fit: contain !important;
    background: #F1F1EC !important;
  }

  .project-modal-count {
    font-size: 12px !important;
    line-height: 1 !important;
    padding: 0 !important;
    color: rgba(31,31,31,.62) !important;
    text-align: center !important;
  }

  .project-modal-thumbs {
    height: 48px !important;
    min-height: 48px !important;
    padding: 2px 0 0 !important;
    gap: 7px !important;
  }

  .project-modal-thumbs button {
    flex: 0 0 52px !important;
    width: 52px !important;
    min-width: 52px !important;
    height: 36px !important;
    min-height: 36px !important;
    border-radius: 8px !important;
  }

  .project-modal-close {
    top: 10px !important;
    right: 10px !important;
    width: 34px !important;
    height: 34px !important;
  }

  .project-modal-nav {
    width: 34px !important;
    height: 34px !important;
  }
}

@media (max-width: 390px), (max-height: 740px) and (max-width: 760px) {
  .project-modal-dialog {
    padding: 10px 10px 12px !important;
    gap: 6px !important;
    row-gap: 6px !important;
  }

  .project-modal-stage {
    height: min(40vh, 300px) !important;
  }

  .project-modal-head h2 {
    font-size: 22px !important;
  }

  .project-modal-head p:not(.label) {
    font-size: 11.8px !important;
    line-height: 1.25 !important;
  }

  .project-modal-thumbs {
    height: 44px !important;
    min-height: 44px !important;
  }

  .project-modal-thumbs button {
    flex-basis: 48px !important;
    width: 48px !important;
    min-width: 48px !important;
    height: 34px !important;
    min-height: 34px !important;
  }
}

/* v142 — Mobile final correction pass
   Scope: mobile/tablet only. Corrects menu usability, project cards text visibility,
   footer contact wrapping and project modal vertical balance. Desktop remains untouched. */

@media (max-width: 980px) {
  /* Menu: compact but usable. 1/3 width was too narrow for real navigation labels. */
  .refined-header .nav,
  .site-header.refined-header .nav {
    right: 10px !important;
    width: clamp(184px, 46vw, 230px) !important;
    min-width: 184px !important;
    max-width: 48vw !important;
    padding: 10px !important;
    gap: 3px !important;
  }

  .refined-header .nav a:not(.nav-cta),
  .refined-header .nav-cta {
    min-height: 36px !important;
    padding: 8px 9px !important;
    font-size: 11px !important;
    line-height: 1.16 !important;
  }
}

@media (max-width: 640px) {
  /* Projects listing/gallery cards: never truncate approved PT/EN descriptions with ellipsis. */
  body.page-projects .selected-projects-grid {
    gap: 20px !important;
  }

  body.page-projects .selected-project-card {
    min-height: 420px !important;
  }

  body.page-projects .selected-project-card > div {
    left: 22px !important;
    right: 22px !important;
    bottom: 22px !important;
    max-height: none !important;
    overflow: visible !important;
  }

  body.page-projects .selected-project-card h3 {
    font-size: clamp(24px, 7vw, 29px) !important;
    line-height: 1.02 !important;
    margin-bottom: 9px !important;
  }

  body.page-projects .selected-project-card p {
    display: block !important;
    -webkit-line-clamp: unset !important;
    -webkit-box-orient: initial !important;
    max-height: none !important;
    overflow: visible !important;
    text-overflow: clip !important;
    white-space: normal !important;
    font-size: 13.2px !important;
    line-height: 1.42 !important;
    color: rgba(255,255,255,.78) !important;
  }

  /* Footer: 2 columns plus full-width contact block avoids broken e-mail addresses. */
  .refined-footer .footer-main {
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
    gap: 22px 24px !important;
  }

  .refined-footer .footer-col:nth-child(3) {
    grid-column: 1 / -1 !important;
    max-width: none !important;
  }

  .refined-footer .footer-col a,
  .refined-footer .footer-col span {
    font-size: 12px !important;
    line-height: 1.45 !important;
    overflow-wrap: normal !important;
    word-break: normal !important;
  }

  .refined-footer .footer-contact a,
  .refined-footer .footer-contact span {
    overflow-wrap: anywhere !important;
    word-break: normal !important;
  }
}

@media (max-width: 430px) {
  .refined-header .nav,
  .site-header.refined-header .nav {
    width: clamp(176px, 46vw, 210px) !important;
    min-width: 176px !important;
    max-width: 48vw !important;
  }

  .refined-header .nav a:not(.nav-cta),
  .refined-header .nav-cta {
    font-size: 10.7px !important;
  }

  body.page-projects .selected-project-card {
    min-height: 430px !important;
  }
}

@media (max-width: 360px) {
  .refined-header .nav,
  .site-header.refined-header .nav {
    width: min(210px, calc(100vw - 22px)) !important;
    max-width: calc(100vw - 22px) !important;
    min-width: 0 !important;
  }

  .refined-footer .footer-main {
    grid-template-columns: 1fr !important;
  }

  .refined-footer .footer-col:nth-child(3) {
    grid-column: auto !important;
  }
}

@media (max-width: 760px) {
  /* Modal: remove the artificial vertical dead zone between image, counter and thumbnails. */
  .project-modal-dialog {
    display: grid !important;
    grid-template-rows: auto auto auto auto !important;
    align-content: start !important;
    gap: 6px !important;
    row-gap: 6px !important;
    overflow-y: auto !important;
  }

  .project-modal-head {
    padding-bottom: 0 !important;
  }

  .project-modal-stage {
    height: min(38vh, 310px) !important;
    max-height: 310px !important;
    margin: 0 !important;
  }

  .project-modal-stage img {
    height: 100% !important;
    max-height: 310px !important;
    object-fit: contain !important;
  }

  .project-modal-count {
    margin: 2px 0 0 !important;
    padding: 0 !important;
    color: rgba(31,31,31,.78) !important;
    font-weight: 700 !important;
    text-align: center !important;
  }

  .project-modal-thumbs {
    height: 48px !important;
    min-height: 48px !important;
    padding: 2px 0 0 !important;
    margin: 0 !important;
  }

  .project-modal-thumbs button {
    height: 36px !important;
    min-height: 36px !important;
    max-height: 36px !important;
  }
}

@media (max-width: 390px), (max-height: 740px) and (max-width: 760px) {
  .project-modal-stage {
    height: min(34vh, 270px) !important;
    max-height: 270px !important;
  }

  .project-modal-stage img {
    max-height: 270px !important;
  }

  .project-modal-head p:not(.label) {
    font-size: 12.2px !important;
    line-height: 1.3 !important;
  }
}

/* v143 — Mobile vertical rhythm refinement
   Scope: mobile/tablet only. Tightens excessive vertical space in internal heroes,
   Contact, Assurance and Execution Model without changing content, desktop or JS. */

@media (max-width: 760px) {
  /* Light global correction: internal heroes were occupying too much vertical height on phones. */
  .internal-hero {
    padding-top: 112px !important;
    padding-bottom: 46px !important;
  }

  .internal-hero-grid {
    gap: 28px !important;
  }

  .internal-hero .label {
    margin-bottom: 10px !important;
  }

  .internal-hero h1 {
    margin-bottom: 14px !important;
  }

  .internal-hero p:not(.label) {
    margin-top: 0 !important;
    margin-bottom: 0 !important;
    line-height: 1.48 !important;
  }

  .internal-hero-image,
  .internal-hero-image img {
    min-height: 315px !important;
  }

  /* Contact page: functional page, so the form/direct contact must arrive sooner. */
  body.page-contact .internal-hero {
    padding-bottom: 34px !important;
  }

  body.page-contact .internal-hero-grid {
    gap: 24px !important;
  }

  body.page-contact .section.contact.surface {
    padding-top: 32px !important;
    padding-bottom: 48px !important;
  }

  body.page-contact .contact-grid {
    gap: 30px !important;
  }

  body.page-contact .copy h2 {
    margin-top: 0 !important;
    margin-bottom: 10px !important;
  }

  body.page-contact .copy p {
    margin-top: 0 !important;
    margin-bottom: 18px !important;
  }

  /* Assurance: these are quick proof cards, not long-form blocks. */
  body.page-assurance main > .section:first-of-type {
    padding-top: 36px !important;
    padding-bottom: 28px !important;
  }

  body.page-assurance .assurance-grid {
    gap: 16px !important;
  }

  body.page-assurance .assurance-grid article {
    padding: 24px 22px !important;
    border-radius: 22px !important;
    min-height: 0 !important;
  }

  body.page-assurance .assurance-grid h2 {
    font-size: clamp(24px, 6.4vw, 30px) !important;
    line-height: 1.02 !important;
    margin-bottom: 8px !important;
  }

  body.page-assurance .assurance-grid p {
    line-height: 1.52 !important;
    margin: 0 !important;
  }

  body.page-assurance main > .section.surface {
    padding-top: 26px !important;
  }

  /* Execution Model: keep card presence, remove unused height and large transition gap. */
  body.page-execution_model main > .section:first-of-type,
  body.page-execution-model main > .section:first-of-type {
    padding-top: 36px !important;
    padding-bottom: 28px !important;
  }

  body.page-execution_model .process-grid,
  body.page-execution-model .process-grid {
    gap: 16px !important;
  }

  body.page-execution_model .process-grid article,
  body.page-execution-model .process-grid article {
    padding: 24px 22px !important;
    border-radius: 22px !important;
    min-height: 0 !important;
  }

  body.page-execution_model .process-grid span,
  body.page-execution-model .process-grid span {
    margin-bottom: 10px !important;
  }

  body.page-execution_model .process-grid h2,
  body.page-execution-model .process-grid h2 {
    font-size: clamp(24px, 6.4vw, 30px) !important;
    line-height: 1.02 !important;
    margin-bottom: 8px !important;
  }

  body.page-execution_model .process-grid p,
  body.page-execution-model .process-grid p {
    line-height: 1.52 !important;
    margin: 0 !important;
  }

  body.page-execution_model main > .section.surface,
  body.page-execution-model main > .section.surface {
    padding-top: 26px !important;
  }

  /* Shared follow-up box rhythm on the two affected pages. */
  body.page-assurance .commitment-box,
  body.page-execution_model .commitment-box,
  body.page-execution-model .commitment-box {
    padding: 30px 24px !important;
    gap: 22px !important;
    border-radius: 24px !important;
  }

  body.page-assurance .commitment-box h2,
  body.page-execution_model .commitment-box h2,
  body.page-execution-model .commitment-box h2 {
    margin-top: 0 !important;
    margin-bottom: 0 !important;
    font-size: clamp(28px, 7.2vw, 36px) !important;
    line-height: 1.02 !important;
  }

  body.page-assurance .commitment-box div,
  body.page-execution_model .commitment-box div,
  body.page-execution-model .commitment-box div {
    gap: 14px !important;
  }

  body.page-assurance .commitment-box p,
  body.page-execution_model .commitment-box p,
  body.page-execution-model .commitment-box p {
    padding-top: 12px !important;
    line-height: 1.42 !important;
  }
}

@media (max-width: 390px) {
  .internal-hero {
    padding-top: 104px !important;
    padding-bottom: 40px !important;
  }

  .internal-hero-image,
  .internal-hero-image img {
    min-height: 285px !important;
  }

  body.page-contact .section.contact.surface,
  body.page-assurance main > .section:first-of-type,
  body.page-execution_model main > .section:first-of-type,
  body.page-execution-model main > .section:first-of-type {
    padding-top: 28px !important;
  }
}

/* v144 — Mobile correction pass
   Scope: mobile/tablet only. Home visual order, project modal full descriptions,
   footer mobile layout. Desktop rules remain untouched. */

@media (max-width: 760px) {
  /* Home mobile: restore a clearer hero sequence — message, image, then actions. */
  body.page-index .hero-grid {
    display: grid !important;
    grid-template-columns: 1fr !important;
    gap: 22px !important;
    align-items: start !important;
  }

  body.page-index .hero-copy {
    display: contents !important;
  }

  body.page-index .hero-copy .eyebrow { order: 1 !important; }
  body.page-index .hero-copy h1 { order: 2 !important; }
  body.page-index .hero-copy > p { order: 3 !important; }
  body.page-index .hero-image-card { order: 4 !important; margin-top: 8px !important; }
  body.page-index .hero-copy .actions { order: 5 !important; margin-top: 8px !important; }
  body.page-index .hero-copy .hero-paths { order: 6 !important; margin-top: 4px !important; }
  body.page-index .hero-copy .location-line { order: 7 !important; margin-top: 10px !important; }

  body.page-index .hero-image-card {
    min-height: 390px !important;
  }

  /* Project modal: approved descriptions must not be truncated with ellipsis. */
  .project-modal-head p:not(.label) {
    display: block !important;
    -webkit-line-clamp: unset !important;
    -webkit-box-orient: initial !important;
    max-height: none !important;
    overflow: visible !important;
    text-overflow: clip !important;
    white-space: normal !important;
    font-size: 12.1px !important;
    line-height: 1.28 !important;
    margin: 0 !important;
  }

  .project-modal-head {
    padding-right: 44px !important;
  }

  .project-modal-dialog {
    gap: 7px !important;
    row-gap: 7px !important;
  }

  .project-modal-stage {
    height: min(33vh, 280px) !important;
    max-height: 280px !important;
  }

  .project-modal-stage img {
    max-height: 280px !important;
  }

  /* Footer mobile: EMPRESA + CAPACIDADES stacked left, CONTACTOS as a right-hand card. */
  .refined-footer .footer-main {
    display: grid !important;
    grid-template-columns: minmax(0, .92fr) minmax(168px, 1fr) !important;
    grid-template-rows: auto auto !important;
    column-gap: 22px !important;
    row-gap: 22px !important;
    align-items: start !important;
  }

  .refined-footer .footer-main .footer-col:nth-child(1) {
    grid-column: 1 !important;
    grid-row: 1 !important;
  }

  .refined-footer .footer-main .footer-col:nth-child(2) {
    grid-column: 1 !important;
    grid-row: 2 !important;
  }

  .refined-footer .footer-main .footer-col:nth-child(3) {
    grid-column: 2 !important;
    grid-row: 1 / span 2 !important;
    padding: 18px 16px !important;
    border: 1px solid rgba(255,255,255,.10) !important;
    border-radius: 20px !important;
    background: rgba(255,255,255,.045) !important;
    gap: 9px !important;
    max-width: none !important;
    min-width: 0 !important;
  }

  .refined-footer .footer-contact a,
  .refined-footer .footer-contact span {
    font-size: 11.5px !important;
    line-height: 1.42 !important;
    overflow-wrap: anywhere !important;
    word-break: normal !important;
  }
}

@media (max-width: 390px) {
  body.page-index .hero-image-card {
    min-height: 350px !important;
  }

  .project-modal-stage {
    height: min(29vh, 240px) !important;
    max-height: 240px !important;
  }

  .project-modal-stage img {
    max-height: 240px !important;
  }
}

@media (max-width: 360px) {
  .refined-footer .footer-main {
    grid-template-columns: 1fr !important;
  }

  .refined-footer .footer-main .footer-col:nth-child(1),
  .refined-footer .footer-main .footer-col:nth-child(2),
  .refined-footer .footer-main .footer-col:nth-child(3) {
    grid-column: 1 !important;
    grid-row: auto !important;
  }
}

/* v145 — Conservative mobile polish
   Scope: mobile/tablet only. Tightens Home hero image/actions, footer contact card, and modal excess bottom space.
   No desktop rules and no JavaScript changes. */

@media (max-width: 760px) {
  /* Home: keep approved order, but reduce vertical drag before the CTA group. */
  body.page-index .hero-grid {
    gap: 16px !important;
  }

  body.page-index .hero-image-card {
    min-height: 330px !important;
    margin-top: 4px !important;
    border-radius: 24px !important;
  }

  body.page-index .hero-copy .actions {
    margin-top: 4px !important;
    gap: 9px !important;
  }

  body.page-index .hero-copy .hero-paths {
    margin-top: 2px !important;
    gap: 8px !important;
  }

  body.page-index .hero-copy .location-line {
    margin-top: 8px !important;
  }

  /* Project modal: keep full descriptions, but allow the dialog to finish closer to the thumbnails. */
  .project-modal-dialog {
    bottom: auto !important;
    height: auto !important;
    max-height: calc(100dvh - 16px) !important;
    align-content: start !important;
    grid-template-rows: auto auto auto auto !important;
    padding-bottom: 10px !important;
  }

  .project-modal-stage {
    height: min(31vh, 260px) !important;
    max-height: 260px !important;
  }

  .project-modal-stage img {
    max-height: 260px !important;
  }

  .project-modal-thumbs {
    min-height: 48px !important;
    height: 48px !important;
    padding-bottom: 0 !important;
  }

  .project-modal-thumbs button {
    height: 38px !important;
    min-height: 38px !important;
    max-height: 38px !important;
  }

  /* Footer: keep the v144 concept, but make the contact card less heavy and better aligned. */
  .refined-footer .footer-main {
    grid-template-columns: minmax(0, .96fr) minmax(156px, .92fr) !important;
    column-gap: 14px !important;
    row-gap: 14px !important;
  }

  .refined-footer .footer-main .footer-col:nth-child(3) {
    padding: 14px 12px !important;
    border-radius: 16px !important;
    gap: 7px !important;
    align-self: start !important;
  }

  .refined-footer .footer-col strong {
    margin-bottom: 6px !important;
  }

  .refined-footer .footer-col a,
  .refined-footer .footer-col span,
  .refined-footer .footer-contact a,
  .refined-footer .footer-contact span {
    font-size: 11.2px !important;
    line-height: 1.34 !important;
  }
}

@media (max-width: 390px) {
  body.page-index .hero-image-card {
    min-height: 300px !important;
  }

  .project-modal-dialog {
    max-height: calc(100dvh - 12px) !important;
    padding-bottom: 8px !important;
  }

  .project-modal-stage {
    height: min(28vh, 230px) !important;
    max-height: 230px !important;
  }

  .project-modal-stage img {
    max-height: 230px !important;
  }
}

@media (max-width: 360px) {
  /* Preserve safe single-column fallback for very narrow phones. */
  .refined-footer .footer-main {
    grid-template-columns: 1fr !important;
  }
}


/* v151 — Mobile-only footer hierarchy and project-modal CTA refinement
   Base: v145. Desktop untouched. Header untouched. */
@media (max-width: 760px) {
  /* Footer brand hierarchy: footer logo must not visually dominate the fixed header logo on phones. */
  .refined-footer .footer-top {
    gap: 20px !important;
    padding-bottom: 22px !important;
  }

  .refined-footer .footer-brand img {
    width: 118px !important;
    margin-bottom: 10px !important;
  }

  .refined-footer .footer-brand p {
    max-width: none !important;
    font-size: 12px !important;
    line-height: 1.32 !important;
    white-space: nowrap !important;
  }

  /* Footer CTA: keep the approved wording, but make the mobile title lighter and more likely to fit on one line. */
  .refined-footer .footer-cta h3 {
    font-size: clamp(18px, 4.9vw, 21px) !important;
    line-height: 1.02 !important;
    letter-spacing: -.035em !important;
    margin-bottom: 10px !important;
    white-space: nowrap !important;
  }

  .refined-footer .footer-cta a {
    padding: 10px 14px !important;
    font-size: 12px !important;
  }

  /* Home already has a strong final contact card immediately before the footer. Avoid duplicate CTA in the mobile footer only. */
  body.page-index .refined-footer .footer-cta {
    display: none !important;
  }

  body.page-index .refined-footer .footer-top {
    padding-bottom: 18px !important;
  }

  /* Project modal CTA: place it in the dark overlay space below the thumbnails, not inside the light modal panel. */
  .project-modal-mobile-cta {
    position: absolute !important;
    left: 16px !important;
    right: 16px !important;
    bottom: 14px !important;
    z-index: 2 !important;
    display: flex !important;
    align-items: center !important;
    justify-content: space-between !important;
    gap: 14px !important;
    padding: 12px 14px !important;
    border-radius: 18px !important;
    border: 1px solid rgba(255,255,255,.14) !important;
    background: rgba(6,11,8,.78) !important;
    box-shadow: 0 16px 44px rgba(0,0,0,.24) !important;
    backdrop-filter: blur(8px) !important;
  }

  .project-modal-mobile-cta p {
    margin: 0 !important;
    color: rgba(255,255,255,.92) !important;
    font-size: 15px !important;
    line-height: 1.15 !important;
    font-weight: 720 !important;
    letter-spacing: -.02em !important;
  }

  .project-modal-mobile-cta a {
    flex: 0 0 auto !important;
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    min-height: 36px !important;
    padding: 9px 14px !important;
    border-radius: 999px !important;
    background: #fff !important;
    color: #084013 !important;
    font-size: 12px !important;
    font-weight: 850 !important;
    line-height: 1 !important;
    text-decoration: none !important;
  }

  .project-modal-dialog {
    max-height: calc(100dvh - 104px) !important;
  }
}

@media (min-width: 761px) {
  .project-modal-mobile-cta {
    display: none !important;
  }
}

@media (max-width: 380px) {
  .refined-footer .footer-brand p {
    white-space: normal !important;
    font-size: 11.5px !important;
  }

  .refined-footer .footer-cta h3 {
    white-space: normal !important;
    font-size: 19px !important;
  }

  .project-modal-mobile-cta {
    left: 12px !important;
    right: 12px !important;
    bottom: 10px !important;
    padding: 10px 12px !important;
  }

  .project-modal-mobile-cta p {
    font-size: 14px !important;
  }

  .project-modal-mobile-cta a {
    min-height: 34px !important;
    padding: 8px 12px !important;
  }

  .project-modal-dialog {
    max-height: calc(100dvh - 92px) !important;
  }
}

/* v153 — Mobile-only footer correction
   Base: v151. Desktop untouched. Header untouched. Modal CTA kept from v151.
   Goals: smaller footer logo, no contact card, right-aligned footer CTA, reduced footer height. */
@media (max-width: 760px) {
  .refined-footer {
    padding-top: 38px !important;
    padding-bottom: 20px !important;
  }

  .refined-footer .footer-top {
    display: grid !important;
    grid-template-columns: minmax(0, .72fr) minmax(0, 1fr) !important;
    align-items: end !important;
    gap: 12px !important;
    padding-bottom: 16px !important;
  }

  /* The footer mark is a signature, not a second hero logo. Keep it close to header scale on mobile. */
  .refined-footer .footer-brand img {
    width: 62px !important;
    height: auto !important;
    margin: 0 0 6px 0 !important;
  }

  .refined-footer .footer-brand p {
    max-width: none !important;
    margin: 0 !important;
    font-size: 10.8px !important;
    line-height: 1.18 !important;
    white-space: nowrap !important;
  }

  /* Footer CTA on mobile: right edge of the title aligns with the right edge of the button. */
  .refined-footer .footer-cta {
    display: grid !important;
    justify-items: end !important;
    align-self: end !important;
    text-align: right !important;
    gap: 8px !important;
  }

  .refined-footer .footer-cta h3 {
    max-width: none !important;
    margin: 0 !important;
    font-size: clamp(17px, 4.55vw, 20px) !important;
    line-height: 1.02 !important;
    letter-spacing: -.035em !important;
    white-space: nowrap !important;
    text-align: right !important;
  }

  .refined-footer .footer-cta a {
    justify-self: end !important;
    padding: 9px 13px !important;
    font-size: 11.6px !important;
    line-height: 1 !important;
  }

  /* Home already closes with a strong contact card. Keep the mobile footer lean there. */
  body.page-index .refined-footer .footer-top {
    grid-template-columns: 1fr !important;
    gap: 0 !important;
  }

  body.page-index .refined-footer .footer-cta {
    display: none !important;
  }

  /* Footer links: reduce height without using a contact card. */
  .refined-footer .footer-main {
    display: grid !important;
    grid-template-columns: minmax(0, .72fr) minmax(0, .74fr) minmax(126px, 1.24fr) !important;
    grid-template-rows: auto !important;
    align-items: start !important;
    column-gap: 8px !important;
    row-gap: 8px !important;
    padding: 18px 0 16px !important;
  }

  .refined-footer .footer-main .footer-col:nth-child(1),
  .refined-footer .footer-main .footer-col:nth-child(2),
  .refined-footer .footer-main .footer-col:nth-child(3) {
    grid-row: 1 !important;
    padding: 0 !important;
    margin: 0 !important;
    border: 0 !important;
    border-radius: 0 !important;
    background: transparent !important;
    box-shadow: none !important;
    max-width: none !important;
    width: auto !important;
    min-width: 0 !important;
  }

  .refined-footer .footer-main .footer-col:nth-child(1) { grid-column: 1 !important; }
  .refined-footer .footer-main .footer-col:nth-child(2) { grid-column: 2 !important; }
  .refined-footer .footer-main .footer-col:nth-child(3) {
    grid-column: 3 !important;
    justify-self: end !important;
    text-align: right !important;
  }

  .refined-footer .footer-col {
    gap: 5px !important;
  }

  .refined-footer .footer-col strong {
    font-size: 9.5px !important;
    line-height: 1.1 !important;
    letter-spacing: .105em !important;
    margin-bottom: 3px !important;
  }

  .refined-footer .footer-col a,
  .refined-footer .footer-col span,
  .refined-footer .footer-contact a,
  .refined-footer .footer-contact span {
    font-size: 10.3px !important;
    line-height: 1.18 !important;
    overflow-wrap: normal !important;
    word-break: normal !important;
    hyphens: none !important;
  }

  .refined-footer .footer-contact a,
  .refined-footer .footer-contact span {
    white-space: nowrap !important;
  }

  .refined-footer .footer-bottom {
    display: flex !important;
    flex-direction: row !important;
    justify-content: space-between !important;
    align-items: center !important;
    gap: 8px !important;
    padding-top: 12px !important;
    font-size: 10px !important;
    line-height: 1.15 !important;
    white-space: nowrap !important;
  }
}

@media (max-width: 380px) {
  .refined-footer .footer-brand img {
    width: 58px !important;
  }

  .refined-footer .footer-brand p {
    font-size: 10.4px !important;
  }

  .refined-footer .footer-cta h3 {
    font-size: 18px !important;
  }

  .refined-footer .footer-main {
    grid-template-columns: minmax(0, .68fr) minmax(0, .7fr) minmax(120px, 1.2fr) !important;
    column-gap: 6px !important;
  }

  .refined-footer .footer-col a,
  .refined-footer .footer-col span,
  .refined-footer .footer-contact a,
  .refined-footer .footer-contact span {
    font-size: 9.8px !important;
  }

  .refined-footer .footer-bottom {
    font-size: 9.6px !important;
    gap: 6px !important;
  }
}

@media (max-width: 340px) {
  .refined-footer .footer-brand p,
  .refined-footer .footer-cta h3,
  .refined-footer .footer-bottom,
  .refined-footer .footer-contact a,
  .refined-footer .footer-contact span {
    white-space: normal !important;
  }

  .refined-footer .footer-main {
    grid-template-columns: 1fr 1fr !important;
  }

  .refined-footer .footer-main .footer-col:nth-child(1) {
    grid-column: 1 !important;
    grid-row: 1 !important;
  }

  .refined-footer .footer-main .footer-col:nth-child(2) {
    grid-column: 2 !important;
    grid-row: 1 !important;
  }

  .refined-footer .footer-main .footer-col:nth-child(3) {
    grid-column: 1 / -1 !important;
    grid-row: 2 !important;
    justify-self: end !important;
  }

  .refined-footer .footer-bottom {
    flex-wrap: wrap !important;
  }
}

/* v154 — Mobile footer final alignment pass
   Base: v153. Desktop untouched. Header untouched. Modal CTA untouched.
   Goals: footer brand stays compact; CTA sits below brand (not beside it) and right-aligns internally;
   footer columns use left-aligned starts, with CONTACTOS text left-aligned and no card. */
@media (max-width: 760px) {
  .refined-footer {
    padding-top: 36px !important;
    padding-bottom: 20px !important;
  }

  .refined-footer .footer-top {
    display: block !important;
    padding-bottom: 16px !important;
  }

  .refined-footer .footer-brand {
    display: block !important;
    max-width: none !important;
  }

  .refined-footer .footer-brand img {
    width: 54px !important;
    height: auto !important;
    margin: 0 0 6px 0 !important;
  }

  .refined-footer .footer-brand p {
    margin: 0 !important;
    max-width: none !important;
    font-size: 10.6px !important;
    line-height: 1.18 !important;
    white-space: nowrap !important;
  }

  /* CTA sits below the brand block. The sentence and button share the same right edge,
     but the block is kept inside the footer container, not pushed out of view. */
  .refined-footer .footer-cta {
    display: grid !important;
    justify-items: end !important;
    text-align: right !important;
    gap: 8px !important;
    margin: 18px 0 0 auto !important;
    max-width: min(100%, 330px) !important;
    overflow: hidden !important;
  }

  .refined-footer .footer-cta h3 {
    margin: 0 !important;
    max-width: 100% !important;
    font-size: clamp(17px, 4.35vw, 19px) !important;
    line-height: 1.02 !important;
    letter-spacing: -.035em !important;
    white-space: nowrap !important;
    text-align: right !important;
  }

  .refined-footer .footer-cta a {
    justify-self: end !important;
    min-width: 118px !important;
    padding: 9px 14px !important;
    font-size: 11.6px !important;
    line-height: 1 !important;
  }

  body.page-index .refined-footer .footer-top {
    display: block !important;
    padding-bottom: 16px !important;
  }

  body.page-index .refined-footer .footer-cta {
    display: none !important;
  }

  /* Three compact columns. Every column is left-aligned inside its own start edge.
     CONTACTOS is not a card and no longer uses right-aligned text. */
  .refined-footer .footer-main {
    display: grid !important;
    grid-template-columns: minmax(0, .72fr) minmax(0, .72fr) minmax(168px, 1.35fr) !important;
    align-items: start !important;
    column-gap: 10px !important;
    row-gap: 8px !important;
    padding: 16px 0 15px !important;
  }

  .refined-footer .footer-main .footer-col:nth-child(1),
  .refined-footer .footer-main .footer-col:nth-child(2),
  .refined-footer .footer-main .footer-col:nth-child(3) {
    grid-row: 1 !important;
    padding: 0 !important;
    margin: 0 !important;
    border: 0 !important;
    border-radius: 0 !important;
    background: transparent !important;
    box-shadow: none !important;
    max-width: none !important;
    width: auto !important;
    min-width: 0 !important;
    justify-self: stretch !important;
    text-align: left !important;
  }

  .refined-footer .footer-main .footer-col:nth-child(1) { grid-column: 1 !important; }
  .refined-footer .footer-main .footer-col:nth-child(2) { grid-column: 2 !important; }
  .refined-footer .footer-main .footer-col:nth-child(3) { grid-column: 3 !important; }

  .refined-footer .footer-col {
    gap: 5px !important;
  }

  .refined-footer .footer-col strong {
    font-size: 9.4px !important;
    line-height: 1.1 !important;
    letter-spacing: .105em !important;
    margin-bottom: 3px !important;
    text-align: left !important;
  }

  .refined-footer .footer-col a,
  .refined-footer .footer-col span,
  .refined-footer .footer-contact a,
  .refined-footer .footer-contact span {
    font-size: 10.3px !important;
    line-height: 1.2 !important;
    text-align: left !important;
    overflow-wrap: normal !important;
    word-break: normal !important;
    hyphens: none !important;
  }

  .refined-footer .footer-contact a,
  .refined-footer .footer-contact span {
    white-space: nowrap !important;
  }

  .refined-footer .footer-bottom {
    display: flex !important;
    flex-direction: row !important;
    justify-content: space-between !important;
    align-items: center !important;
    gap: 10px !important;
    padding-top: 12px !important;
    font-size: 10px !important;
    line-height: 1.15 !important;
    white-space: nowrap !important;
  }
}

@media (max-width: 380px) {
  .refined-footer .footer-brand img {
    width: 52px !important;
  }

  .refined-footer .footer-brand p {
    font-size: 10.2px !important;
  }

  .refined-footer .footer-cta h3 {
    font-size: 17px !important;
  }

  .refined-footer .footer-main {
    grid-template-columns: minmax(0, .68fr) minmax(0, .68fr) minmax(156px, 1.32fr) !important;
    column-gap: 8px !important;
  }

  .refined-footer .footer-col a,
  .refined-footer .footer-col span,
  .refined-footer .footer-contact a,
  .refined-footer .footer-contact span {
    font-size: 9.8px !important;
  }

  .refined-footer .footer-bottom {
    font-size: 9.6px !important;
    gap: 6px !important;
  }
}

@media (max-width: 340px) {
  .refined-footer .footer-brand p,
  .refined-footer .footer-cta h3,
  .refined-footer .footer-bottom,
  .refined-footer .footer-contact a,
  .refined-footer .footer-contact span {
    white-space: normal !important;
  }

  .refined-footer .footer-main {
    grid-template-columns: 1fr 1fr !important;
  }

  .refined-footer .footer-main .footer-col:nth-child(1) {
    grid-column: 1 !important;
    grid-row: 1 !important;
  }

  .refined-footer .footer-main .footer-col:nth-child(2) {
    grid-column: 2 !important;
    grid-row: 1 !important;
  }

  .refined-footer .footer-main .footer-col:nth-child(3) {
    grid-column: 1 / -1 !important;
    grid-row: 2 !important;
  }

  .refined-footer .footer-bottom {
    flex-wrap: wrap !important;
  }
}

/* v155 — Mobile footer micro-alignment
   Base: v154. Desktop untouched. Header untouched. Modal CTA untouched.
   Goal: move CONTACTOS slightly right while keeping its internal text left-aligned. */
@media (max-width: 760px) {
  .refined-footer .footer-main .footer-col:nth-child(3) {
    justify-self: end !important;
    width: max-content !important;
    max-width: 100% !important;
    text-align: left !important;
  }

  .refined-footer .footer-contact a,
  .refined-footer .footer-contact span {
    text-align: left !important;
  }
}

@media (max-width: 380px) {
  .refined-footer .footer-main .footer-col:nth-child(3) {
    width: max-content !important;
    max-width: 100% !important;
  }
}

@media (max-width: 340px) {
  .refined-footer .footer-main .footer-col:nth-child(3) {
    justify-self: stretch !important;
    width: auto !important;
    max-width: none !important;
  }
}

/* v156 — Mobile footer CONTACTOS final micro-offset
   Base: v155. Desktop untouched. Moves CONTACTOS slightly left while keeping
   the column left-aligned internally and the email on one line. */
@media (max-width: 760px) {
  .refined-footer .footer-main .footer-col:nth-child(3) {
    justify-self: end !important;
    width: max-content !important;
    max-width: calc(100% - 22px) !important;
    transform: translateX(-22px) !important;
    text-align: left !important;
  }
}

@media (max-width: 380px) {
  .refined-footer .footer-main .footer-col:nth-child(3) {
    max-width: calc(100% - 16px) !important;
    transform: translateX(-16px) !important;
  }
}

@media (max-width: 340px) {
  .refined-footer .footer-main .footer-col:nth-child(3) {
    justify-self: stretch !important;
    width: auto !important;
    max-width: none !important;
    transform: none !important;
  }
}

/* v159 — Service detail sidebar heading contrast fix
   Base: v158. Fixes low contrast of "Outras capacidades" / "Other capabilities" on dark sidebar cards. */
.service-sidebar h3,
.service-sidebar [data-i18n="service.related"] {
  color: rgba(255,255,255,.82) !important;
}


/* v160 — Project card action affordance and direct contact anchors */
body.page-projects .selected-project-card > div {
  bottom: 58px;
}

.selected-project-card .project-card-action {
  position: absolute;
  z-index: 2;
  right: 26px;
  bottom: 24px;
  color: rgba(255,255,255,.88);
  font-size: 12px;
  line-height: 1;
  font-weight: 800;
  letter-spacing: .01em;
  text-shadow: 0 2px 14px rgba(0,0,0,.42);
  pointer-events: none;
}

#contact-direct {
  scroll-margin-top: 118px;
}

@media(max-width:980px){
  #contact-direct {
    scroll-margin-top: 104px;
  }
}

#contact-form {
  scroll-margin-top: 118px;
}

@media(max-width:980px){
  #contact-form {
    scroll-margin-top: 104px;
  }
}

@media(max-width:620px){
  body.page-projects .selected-project-card > div {
    bottom: 56px;
  }

  .selected-project-card .project-card-action {
    right: 24px;
    bottom: 22px;
    font-size: 12px;
  }
}


/* v162/v163 — credencial ANPG e UX mobile do formulário */
.anpg-credential{
  margin-top:20px;
  border:1px solid rgba(8,64,19,.12);
  border-radius:20px;
  background:linear-gradient(135deg,rgba(8,64,19,.035),rgba(255,255,255,.97));
  box-shadow:0 10px 28px rgba(0,0,0,.028);
  padding:18px 22px;
}
.anpg-credential p{
  margin:0;
  color:#4F4F4F;
  line-height:1.45;
}
.anpg-credential-title{
  color:#1F1F1F!important;
  font-size:clamp(16px,1.35vw,18px);
  font-weight:800;
  letter-spacing:-.01em;
  line-height:1.25;
  margin-bottom:4px!important;
}
.anpg-title-number{
  white-space:nowrap;
}
@media(max-width:640px){
  .anpg-credential{
    margin-top:16px;
    padding:16px 17px;
    border-radius:18px;
  }
  .anpg-credential-title{
    font-size:15px;
    line-height:1.25;
    margin-bottom:6px!important;
  }
  .anpg-credential-title span{
    display:block;
  }
  .anpg-credential p:not(.anpg-credential-title){
    font-size:13.5px;
    line-height:1.45;
  }
}


/* Pre-publication accessibility: keyboard skip link */
.skip-link {
  position: fixed;
  top: 12px;
  left: 12px;
  z-index: 100000;
  padding: 11px 15px;
  border-radius: 8px;
  background: #ffffff;
  color: #084013;
  font-weight: 700;
  box-shadow: 0 8px 28px rgba(0,0,0,.18);
  transform: translateY(-180%);
  transition: transform 160ms ease;
}
.skip-link:focus {
  transform: translateY(0);
}

/* 404 page: reuses the approved visual system */
.page-404 .internal-hero {
  min-height: 62vh;
  display: flex;
  align-items: center;
}
.page-404 .error-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 14px;
  margin-top: 26px;
}


/* Static bilingual navigation and contact-form accessibility */
.lang-switch a{border:0;background:transparent;padding:7px 10px;border-radius:999px;font-size:12px;font-weight:700;cursor:pointer;color:var(--text);text-decoration:none;line-height:1.2}
.lang-switch a.active{background:var(--green);color:#fff}
.refined-header .lang-switch a{display:inline-flex;align-items:center;justify-content:center;min-width:34px}
.form-required-note,.privacy-note{margin:0;font-size:12px;line-height:1.55;letter-spacing:0;text-transform:none;color:var(--muted)}
.privacy-note a,.footer-bottom a{color:inherit;text-decoration:underline;text-underline-offset:3px}
.privacy-content{max-width:860px}
.privacy-content h2{margin-top:32px;margin-bottom:8px}
.privacy-content p{max-width:78ch}


/* Correcao honeypot — esconde o campo "Website" anti-spam do formulario de contacto */
.hp-field {
  position: absolute;
  left: -9999px;
  width: 1px;
  height: 1px;
  overflow: hidden;
}
