/* Tipos de letra alojados no próprio site (sem Google Fonts) */
@font-face{ font-family:'Inter'; font-style:normal; font-weight:400; font-display:swap; src:url('../fonts/inter-latin-400-normal.woff2') format('woff2'); }
@font-face{ font-family:'Inter'; font-style:normal; font-weight:500; font-display:swap; src:url('../fonts/inter-latin-500-normal.woff2') format('woff2'); }
@font-face{ font-family:'Inter'; font-style:normal; font-weight:600; font-display:swap; src:url('../fonts/inter-latin-600-normal.woff2') format('woff2'); }
@font-face{ font-family:'Inter'; font-style:normal; font-weight:700; font-display:swap; src:url('../fonts/inter-latin-700-normal.woff2') format('woff2'); }
@font-face{ font-family:'JetBrains Mono'; font-style:normal; font-weight:400; font-display:swap; src:url('../fonts/jetbrains-mono-latin-400-normal.woff2') format('woff2'); }
@font-face{ font-family:'JetBrains Mono'; font-style:normal; font-weight:500; font-display:swap; src:url('../fonts/jetbrains-mono-latin-500-normal.woff2') format('woff2'); }
@font-face{ font-family:'JetBrains Mono'; font-style:normal; font-weight:600; font-display:swap; src:url('../fonts/jetbrains-mono-latin-600-normal.woff2') format('woff2'); }

:root{
  --forest:#10746C;
  --forest-dark:#0B4E48;
  --aqua:#398478;
  --seafoam:#779B92;
  --sage:#CDD2BB;
  --ink:#10171A;
  --paper:#F7F8F3;
  --white:#FFFFFF;
  --font-display:'Space Grotesk', 'Arial Narrow', sans-serif;
  --font-body:'Inter', -apple-system, sans-serif;
  --font-mono:'JetBrains Mono', 'Courier New', monospace;
  --maxw:1200px;
}

*{box-sizing:border-box; margin:0; padding:0;}
html{scroll-behavior:smooth; scroll-padding-top:84px;}
body{
  font-family:var(--font-body);
  color:var(--ink);
  background:var(--paper);
  -webkit-font-smoothing:antialiased;
  overflow-x:hidden;
}
img{max-width:100%; display:block;}
a{color:inherit; text-decoration:none;}
.wrap{max-width:var(--maxw); margin:0 auto; padding:0 6vw;}
h1,h2,h3{font-family:var(--font-display); font-weight:600; letter-spacing:-.01em; line-height:1.08; color:var(--ink);}
p{line-height:1.6; color:#33403d;}

.eyebrow{
  font-family:var(--font-mono); font-size:.78rem; letter-spacing:.1em;
  color:var(--aqua); text-transform:uppercase; font-weight:500; margin-bottom:.8rem;
}

/* ============ buttons & links ============ */
.btn{
  -webkit-appearance:none; -moz-appearance:none; appearance:none;
  border:none; cursor:pointer;
  display:inline-flex; align-items:center; gap:.5rem;
  padding:.85rem 1.6rem; border-radius:8px; font-weight:600; font-size:.95rem;
  font-family:inherit; background:var(--forest); color:var(--white);
  transition:transform .2s ease, box-shadow .2s ease, background .2s ease;
}
.btn:hover{ background:var(--forest-dark); }
.btn-light{ background:var(--white); color:var(--forest-dark); }
.btn-light:hover{ background:var(--white); color:var(--forest-dark); transform:translateY(-2px); box-shadow:0 10px 24px rgba(0,0,0,.18); }
.btn-outline{ border:1.5px solid rgba(255,255,255,.6); color:var(--white); }
.btn-outline:hover{ background:rgba(255,255,255,.12); }
.link-arrow{
  display:inline-flex; align-items:center; gap:.5rem; font-weight:600; color:var(--forest);
  border-bottom:2px solid var(--sage); padding-bottom:.2rem; transition:border-color .2s ease, gap .2s ease;
}
.link-arrow:after{ content:'›'; font-size:1.2em; line-height:0; }
.link-arrow:hover{ border-color:var(--forest); gap:.7rem; }

/* ============ header ============ */
.site-header{
  position:fixed; top:0; left:0; right:0; z-index:100;
  padding:1.1rem 0; transition:background .3s ease, padding .3s ease, box-shadow .3s ease;
}
.site-header.is-scrolled{ background:rgba(247,248,243,.92); backdrop-filter:blur(8px); padding:.7rem 0; box-shadow:0 1px 0 rgba(16,23,26,.06); }
.header-inner{ display:flex; align-items:center; justify-content:space-between; }
.brand img{ height:34px; width:auto; filter:brightness(0) invert(1); transition:filter .3s ease; }
.site-header.is-scrolled .brand img{ filter:none; }
.main-nav{ display:flex; align-items:center; gap:2.2rem; font-size:.95rem; font-weight:500; }
.main-nav a{ color:var(--white); transition:color .2s ease; }
.site-header.is-scrolled .main-nav a{ color:var(--ink); }
.main-nav a:hover{ color:var(--sage); }
.site-header.is-scrolled .main-nav a:hover{ color:var(--forest); }
.nav-cta{
  background:var(--forest); color:var(--white) !important; padding:.55rem 1.2rem; border-radius:7px;
}
.nav-cta:hover{ background:var(--forest-dark); color:var(--white) !important; }
.nav-toggle{ display:none; flex-direction:column; gap:5px; background:none; border:none; cursor:pointer; padding:.4rem; }
.nav-toggle span{ width:24px; height:2px; background:var(--white); transition:.25s; }
.site-header.is-scrolled .nav-toggle span{ background:var(--ink); }

/* ============ hero ============ */
.hero{
  position:relative; height:100vh; min-height:560px; max-height:900px;
  display:flex; align-items:center; overflow:hidden; color:var(--white);
}
.hero-slides{ position:absolute; inset:0; }
.hero-slide{
  position:absolute; inset:0; background-size:cover; background-position:center;
  background-image:var(--bg); opacity:0; transition:opacity 1.4s ease;
}
.hero-slide.is-active{ opacity:1; }
.hero-scrim{
  position:absolute; inset:0;
  background:linear-gradient(180deg, rgba(11,20,18,.55) 0%, rgba(11,20,18,.35) 45%, rgba(11,20,18,.75) 100%);
}
.hero-content{ position:relative; z-index:2; padding-top:4rem; }
.hero .coord{ font-family:var(--font-mono); font-size:.78rem; letter-spacing:.12em; color:var(--sage); text-transform:uppercase; margin-bottom:1rem; }
.hero h1{ font-size:clamp(2.6rem, 6vw, 4.6rem); color:var(--white); margin-bottom:1.1rem; max-width:14ch; }
.hero-sub{ font-size:1.15rem; max-width:46ch; color:rgba(255,255,255,.88); margin-bottom:2.2rem; }
.hero-actions{ display:flex; gap:1rem; flex-wrap:wrap; }
.hero-dots{
  position:absolute; bottom:2.2rem; left:50%; transform:translateX(-50%); z-index:3;
  display:flex; gap:.5rem;
}
.hero-dots button{
  width:8px; height:8px; border-radius:50%; border:none; background:rgba(255,255,255,.4); cursor:pointer; transition:.25s;
}
.hero-dots button.is-active{ background:var(--white); width:22px; border-radius:5px; }

/* ============ trust strip ============ */
.trust-strip{ background:var(--forest-dark); padding:2.4rem 0; color:var(--white); }
.trust-inner{ display:grid; grid-template-columns:repeat(4,1fr); gap:2rem; }
.trust-stat{ display:flex; flex-direction:column; gap:.3rem; }
.trust-stat .num{ font-family:var(--font-display); font-size:2.4rem; font-weight:700; color:var(--sage); }
.trust-stat .label{ font-size:.85rem; color:rgba(255,255,255,.8); max-width:18ch; }

/* ============ services ============ */
.services{ padding:6.5rem 0; }
.section-head{ max-width:640px; margin-bottom:3.2rem; }
.section-head h2{ font-size:clamp(1.9rem, 3vw, 2.6rem); margin-bottom:.9rem; }
.section-head p{ font-size:1.05rem; }
.section-head--on-dark h2{ color:var(--white); }
.section-head--on-dark p{ color:var(--sage); }

.service-icon-grid{
  display:grid; grid-template-columns:repeat(3, 1fr); gap:1.4rem;
}
.service-tile{
  display:flex; flex-direction:column; align-items:flex-start; gap:.5rem;
  background:var(--white); border:1px solid #e5e7e2; border-radius:14px;
  padding:1.8rem 1.6rem; transition:transform .2s ease, box-shadow .2s ease, border-color .2s ease;
}
.service-tile:hover{ transform:translateY(-3px); box-shadow:0 14px 30px rgba(16,23,26,.08); border-color:var(--sage); }
.service-tile-icon{
  width:52px; height:52px; border-radius:12px; background:var(--sage);
  display:flex; align-items:center; justify-content:center; margin-bottom:.4rem;
}
.service-tile-icon svg{ width:26px; height:26px; color:var(--forest-dark); }
.service-tile h3{ font-size:1.05rem; color:var(--ink); }
.service-tile p{ font-size:.88rem; color:#556; margin:0; }
.tile-arrow{ font-size:.85rem; font-weight:600; color:var(--forest); margin-top:.3rem; }

/* ============ about teaser ============ */
.about-teaser{ background:var(--white); padding:6.5rem 0; }
.about-inner{ display:grid; grid-template-columns:1fr 1fr; gap:4rem; align-items:center; }
.about-copy h2{ font-size:clamp(1.9rem, 3vw, 2.5rem); margin-bottom:1.1rem; }
.about-copy p{ margin-bottom:1.1rem; font-size:1.02rem; }
.about-photo img{ border-radius:14px; }

/* ============ partners ============ */
.partners{ padding:3.5rem 0; background:var(--white); border-top:1px solid #ececE6; border-bottom:1px solid #ececE6; }
.partners-lede{ text-align:center; color:#667; font-size:.95rem; margin-bottom:2rem; }
.partners-grid{ display:flex; flex-wrap:wrap; align-items:center; justify-content:center; gap:2.8rem; }
.partner-logo{ height:34px; width:auto; max-width:120px; object-fit:contain; opacity:.85; transition:opacity .2s ease, transform .2s ease; filter:grayscale(15%); }
.partner-logo:hover{ opacity:1; transform:translateY(-2px); }

/* ============ certifications ============ */
.certs{ background:var(--forest); color:var(--white); padding:6.5rem 0; position:relative; overflow:hidden; }
.certs-grid{ display:grid; grid-template-columns:1.2fr 1fr; gap:3rem; }
.cert-block h3{ color:var(--white); font-size:1.15rem; margin-bottom:1.2rem; }
.cert-list{ list-style:none; display:flex; flex-direction:column; }
.cert-list li{ padding:.85rem 0; border-bottom:1px solid rgba(255,255,255,.16); font-size:.92rem; color:rgba(255,255,255,.88); }
.cert-list li:last-child{ border-bottom:none; }
.cert-list strong{ font-family:var(--font-mono); color:var(--sage); margin-right:.6rem; }
.cert-card{ background:rgba(255,255,255,.08); border:1px solid rgba(255,255,255,.16); border-radius:12px; padding:1.2rem 1.4rem; margin-bottom:1rem; display:flex; gap:1rem; align-items:flex-start; }
.cert-tag{ font-family:var(--font-mono); font-size:.72rem; letter-spacing:.06em; background:var(--sage); color:var(--forest-dark); padding:.3rem .55rem; border-radius:5px; flex-shrink:0; }
.cert-card p{ color:rgba(255,255,255,.9); font-size:.92rem; }
.cert-card strong{ color:var(--white); }

/* ============ featured project ============ */
.project{ padding:6.5rem 0; background:var(--paper); }
.project-inner{ display:grid; grid-template-columns:.85fr 1.15fr; gap:4rem; align-items:center; }
.project-photo img{ border-radius:14px; aspect-ratio:4/5; object-fit:cover; }
.project-copy h2{ font-size:clamp(1.9rem, 3vw, 2.5rem); margin:.4rem 0 1.1rem; }
.project-copy p{ font-size:1.02rem; margin-bottom:1.4rem; max-width:52ch; }

/* ============ CTA final ============ */
.cta-final{ background:var(--forest-dark); color:var(--white); padding:5rem 0; text-align:center; }
.cta-inner h2{ color:var(--white); font-size:clamp(1.8rem, 3.4vw, 2.6rem); margin-bottom:1.8rem; }

/* ============ footer ============ */
.site-footer{ background:var(--ink); color:rgba(255,255,255,.7); padding:3rem 0; }
.footer-inner{ display:flex; align-items:flex-start; justify-content:space-between; flex-wrap:wrap; gap:1.8rem 2rem; }
.footer-brand{ display:flex; flex-direction:column; align-items:flex-start; gap:.7rem; }
.footer-brand img{ height:26px; filter:brightness(0) invert(1); opacity:.85; }
.footer-brand p{ color:rgba(255,255,255,.55); font-size:.85rem; max-width:26ch; }
.footer-social{ display:flex; gap:.7rem; }
.footer-social a{
  width:32px; height:32px; border-radius:50%; background:rgba(255,255,255,.1);
  display:flex; align-items:center; justify-content:center; color:rgba(255,255,255,.7);
  transition:background .2s ease, color .2s ease;
}
.footer-social a:hover{ background:var(--forest); color:#fff; }
.footer-social svg{ width:16px; height:16px; }
.footer-nav{ display:flex; flex-direction:column; gap:.6rem; font-size:.9rem; }
.footer-nav a:hover{ color:var(--white); }
.footer-legal{ display:flex; flex-direction:column; gap:.6rem; font-size:.85rem; }
.footer-legal a{ color:rgba(255,255,255,.5); }
.footer-legal a:hover{ color:var(--white); }
.footer-copy{ font-size:.8rem; color:rgba(255,255,255,.45); }

/* ============ responsive ============ */
@media (max-width:900px){
  .main-nav{
    position:fixed; top:0; right:0; height:100vh; width:min(78vw,320px);
    background:var(--white); flex-direction:column; align-items:flex-start; justify-content:flex-start;
    padding:6rem 2rem 2rem; gap:1.6rem; transform:translateX(100%); transition:transform .35s ease;
    box-shadow:-8px 0 30px rgba(0,0,0,.15);
  }
  .main-nav.is-open{ transform:translateX(0); }
  .main-nav a{ color:var(--ink) !important; font-size:1.05rem; }
  .nav-toggle{ display:flex; }
  .nav-toggle span{ background:var(--white); }
  .site-header.is-scrolled .nav-toggle span, .nav-open .nav-toggle span{ background:var(--ink); }

  .trust-inner{ grid-template-columns:1fr 1fr; }
  .service-icon-grid{ grid-template-columns:1fr 1fr; }
  .about-inner, .certs-grid, .project-inner{ grid-template-columns:1fr; gap:2.2rem; }
  .about-photo{ order:-1; }
  .project-photo{ max-width:340px; }
}
@media (max-width:560px){
  .service-icon-grid{ grid-template-columns:1fr; }
  .trust-inner{ grid-template-columns:1fr 1fr; gap:1.4rem; }
  .services, .about-teaser, .certs, .project{ padding:4rem 0; }
}

/* ============ interior page hero ============ */
.page-hero{ background:var(--forest); color:var(--white); padding:9rem 0 3.4rem; }
.page-hero .eyebrow{ color:var(--sage); }
.page-hero h1{ color:var(--white); font-size:clamp(2rem, 4vw, 2.8rem); }

/* ============ contact page ============ */
.contact-section{ padding:5rem 0 6.5rem; }
.contact-inner{ display:grid; grid-template-columns:.8fr 1.2fr; gap:4rem; }
.contact-info h2{ font-size:1.6rem; margin-bottom:1rem; }
.contact-line{ font-size:1.02rem; margin-bottom:.6rem; }
.contact-line a{ color:var(--forest); font-weight:600; }
.contact-line a:hover{ text-decoration:underline; }
.contact-note-inline{ font-size:.82rem; color:#889; font-weight:400; }
.contact-note{ font-size:.8rem; color:#889; margin-top:1.2rem; }

.contact-form{ background:var(--white); border:1px solid #e5e7e2; border-radius:14px; padding:2rem; }
.form-row{ margin-bottom:1.2rem; }
.form-row label{ display:block; font-weight:600; font-size:.9rem; margin-bottom:.4rem; }
.form-row input, .form-row textarea{
  width:100%; padding:.75rem .9rem; border:1px solid #dde0dc; border-radius:8px;
  font-family:inherit; font-size:1rem; resize:vertical;
}
.form-row input:focus, .form-row textarea:focus{ outline:2px solid var(--forest); outline-offset:1px; }
.contact-form .btn{ width:100%; }
.form-status{ margin-top:1rem; font-size:.9rem; min-height:1.2em; }
.form-status-ok{ color:#1e6b33; }
.form-status-err{ color:#c0392b; }

@media (max-width:900px){
  .contact-inner{ grid-template-columns:1fr; gap:2rem; }
}

/* ============ service detail pages ============ */
.service-hero{
  position:relative; padding:11rem 0 4.5rem; background:var(--forest-dark); color:#fff; overflow:hidden;
}
.service-hero .wrap{ position:relative; z-index:2; }
.service-hero-icon{
  width:56px; height:56px; border-radius:14px; background:rgba(255,255,255,.14);
  display:flex; align-items:center; justify-content:center; margin-bottom:1.4rem;
}
.service-hero-icon svg{ width:28px; height:28px; color:var(--sage); }
.service-hero h1{ color:#fff; font-size:clamp(2rem,4.4vw,3.1rem); max-width:18ch; margin-bottom:1rem; }
.service-hero .lede{ color:rgba(255,255,255,.85); font-size:1.08rem; max-width:56ch; }
.service-breadcrumb{ font-family:var(--font-mono); font-size:.78rem; color:var(--sage); text-transform:uppercase; letter-spacing:.08em; margin-bottom:1rem; }
.service-breadcrumb a{ color:var(--sage); border-bottom:1px solid rgba(205,210,187,.4); }

.narrative{ padding:5.5rem 0; }
.narrative-step{
  display:grid; grid-template-columns:1fr 1fr; gap:3.5rem; align-items:center;
  padding:3rem 0;
}
.js-reveal .narrative-step{
  opacity:0; transform:translateY(24px);
  transition:opacity .7s ease, transform .7s ease;
}
.js-reveal .narrative-step.is-visible{ opacity:1; transform:translateY(0); }
.narrative-step:nth-child(even) .narrative-media{ order:2; }
.narrative-media img{ border-radius:14px; width:100%; aspect-ratio:4/3; object-fit:cover; }
.narrative-copy .step-num{ font-family:var(--font-mono); color:var(--forest); font-size:.85rem; letter-spacing:.08em; margin-bottom:.6rem; display:block; }
.narrative-copy h3{ font-size:1.5rem; margin-bottom:.9rem; }
.narrative-copy p{ font-size:1rem; }

.info-list{ background:var(--paper); padding:5rem 0; }
.info-list-grid{ display:grid; grid-template-columns:1fr 1fr; gap:2.5rem; }
.info-list ul{ list-style:none; }
.info-list li{ display:flex; gap:.8rem; padding:.9rem 0; border-bottom:1px solid #e2e5de; font-size:1rem; color:#33403d; }
.info-list li:last-child{ border-bottom:none; }
.info-list li:before{ content:'→'; color:var(--forest); font-weight:700; flex-shrink:0; }

.related-services{ padding:4rem 0 6rem; }
.related-services h2{ font-size:1.5rem; margin-bottom:1.6rem; }
.related-grid{ display:grid; grid-template-columns:repeat(3,1fr); gap:1.2rem; }

@media (max-width:900px){
  .service-hero{ padding:8.5rem 0 3.5rem; }
  .narrative-step{ grid-template-columns:1fr; gap:1.6rem; padding:1.8rem 0; }
  .narrative-step:nth-child(even) .narrative-media{ order:0; }
  .info-list-grid{ grid-template-columns:1fr; gap:1rem; }
  .related-grid{ grid-template-columns:1fr; }
}
@media (prefers-reduced-motion: reduce){
  .hero-slide{ transition:none; }
  .service-tile{ transition:none; }
  .narrative-step{ opacity:1; transform:none; transition:none; }
  html{ scroll-behavior:auto; }
}
/* ============ passos só com texto (serviços sem foto) ============ */
.narrative-step--text{ grid-template-columns:1fr; max-width:720px; }
.narrative-step--text .narrative-copy{ border-left:3px solid var(--forest); padding-left:1.6rem; }

/* ============ aviso de pré-visualização (só para quem tem sessão no painel) ============ */
.preview-banner{
  position:relative; z-index:40; background:#FFF4D6; color:#5b4300; border-bottom:1px solid #eed9a0;
  padding:.75rem 6vw; font-size:.9rem; text-align:center; margin-top:72px;
}
.preview-banner + .page-hero, .preview-banner + .service-hero{ padding-top:4rem; }

/* ============ notícias ============ */
.news-section{ padding:4.5rem 0 6rem; }
.news-home{ padding:5.5rem 0; }
.news-home .link-arrow{ margin-top:2rem; display:inline-block; }
.news-grid{ display:grid; grid-template-columns:repeat(auto-fill, minmax(290px, 1fr)); gap:1.6rem; }
.news-card{
  display:flex; flex-direction:column; background:var(--white); border:1px solid #e5e7e2; border-radius:14px;
  overflow:hidden; transition:border-color .2s ease, transform .2s ease;
}
.news-card:hover{ border-color:var(--seafoam); transform:translateY(-2px); }
.news-card-media{ aspect-ratio:16/10; overflow:hidden; background:#eef0ea; }
.news-card-media img{ width:100%; height:100%; object-fit:cover; }
.news-card-body{ padding:1.4rem 1.5rem 1.6rem; display:flex; flex-direction:column; gap:.55rem; flex:1; }
.news-card-body time{ font-family:var(--font-mono); font-size:.78rem; color:var(--aqua); }
.news-card-body h3{ font-size:1.2rem; line-height:1.25; }
.news-card-body p{ font-size:.95rem; }
.news-card-body .tile-arrow{ margin-top:auto; padding-top:.4rem; }
.news-empty{
  border:1px dashed #ccd0c6; border-radius:14px; padding:3rem 2rem; text-align:center; max-width:560px; margin:0 auto;
}
.news-empty h3{ font-size:1.2rem; margin-bottom:.6rem; }
.page-hero .eyebrow a{ text-decoration:underline; text-underline-offset:3px; }

.news-article{ padding:4rem 0 6rem; }
.news-article-inner{ max-width:calc(760px + 12vw); }
.news-lede{ font-size:1.2rem; line-height:1.55; color:var(--ink); margin-bottom:2rem; }
.news-figure{ margin:0 0 2rem; }
.news-figure img{ width:100%; border-radius:14px; }
.news-body p{ font-size:1.05rem; line-height:1.7; margin-bottom:1.2rem; max-width:68ch; }
.news-video{ position:relative; aspect-ratio:16/9; margin:2rem 0; border-radius:14px; overflow:hidden; background:var(--ink); }
.news-video iframe{ position:absolute; inset:0; width:100%; height:100%; border:0; }
.news-article .link-arrow{ margin-top:1.5rem; display:inline-block; }

/* ============ página partilhada: Cadastro, GPR e Avarias ============ */
.svc-sections{ padding:5rem 0 2rem; }
.svc-sections-grid{ display:grid; grid-template-columns:repeat(auto-fit, minmax(300px, 1fr)); gap:1.4rem; }
.svc-section{ background:var(--white); border:1px solid #e5e7e2; border-radius:14px; padding:1.8rem 1.7rem; scroll-margin-top:96px; }
.svc-section:target{ border-color:var(--forest); box-shadow:0 0 0 3px rgba(16,116,108,.12); }
.svc-section .service-tile-icon{ margin-bottom:1.1rem; }
.svc-section h2{ font-size:1.35rem; margin-bottom:.8rem; }
.svc-section p{ font-size:.98rem; }
.section-hidden-badge{ display:inline-block; vertical-align:middle; font:600 .7rem var(--font-body); background:#FFF4D6; color:#5b4300; border:1px solid #eed9a0; border-radius:999px; padding:.2rem .6rem; margin-left:.4rem; }
@media (max-width:900px){ .svc-sections-grid{ grid-template-columns:1fr; } .svc-sections{ padding-top:3.5rem; } }

.svc-section.is-highlight{ border-color:var(--forest); box-shadow:0 0 0 3px rgba(16,116,108,.12); }

/* ============ fases em 3 passos (partilhado: Topografia, Estudos de rede) ============ */
/* ============ fases (botões) ============ */
.topo-steps{ display:grid; grid-template-columns:repeat(3,1fr); gap:.6rem; margin-top:1rem; }
.topo-step{
  position:relative; overflow:hidden; display:flex; align-items:center; gap:.6rem; text-align:left;
  font:600 .95rem var(--font-body); color:#5d6964; background:var(--white); border:1px solid #dfe3dc;
  border-radius:10px; padding:.8rem 1rem; cursor:pointer; transition:color .2s ease, border-color .2s ease;
}
.topo-step:hover{ border-color:var(--seafoam); }
.topo-step-num{
  display:inline-grid; place-items:center; width:1.6rem; height:1.6rem; border-radius:50%;
  font:500 .8rem var(--font-mono); background:#eef1eb; color:#5d6964; flex:0 0 auto; transition:background .2s ease, color .2s ease;
}
.topo-step.is-active, .topo-step.is-done{ color:var(--ink); }
.topo-step.is-active{ border-color:var(--forest); }
.topo-step.is-active .topo-step-num, .topo-step.is-done .topo-step-num{ background:var(--forest); color:#fff; }
.topo-step-bar{ position:absolute; left:0; bottom:0; height:3px; width:0; background:var(--forest); }
.topo-step.is-timing .topo-step-bar{ animation:topoBar 5.2s linear forwards; }
@keyframes topoBar{ to{ width:100%; } }

.topo-captions{ position:relative; margin-top:1.4rem; min-height:7.5rem; }
.topo-caption{ position:absolute; inset:0 auto auto 0; max-width:62ch; opacity:0; transform:translateY(6px); transition:opacity .45s ease, transform .45s ease; pointer-events:none; }
.topo-caption.is-visible{ opacity:1; transform:none; pointer-events:auto; }
.topo-caption h3{ font-size:1.35rem; margin-bottom:.5rem; }


@media (max-width:760px){
  .topo-step{ flex-direction:column; align-items:flex-start; gap:.35rem; padding:.7rem .75rem; font-size:.88rem; }
  .topo-captions{ min-height:10.5rem; }
}

/* ============ Estudos de rede: caso real ============ */
.estudo{ padding:4.5rem 0 3rem; }
.estudo-kicker{ font:500 .8rem var(--font-mono); letter-spacing:.08em; text-transform:uppercase; color:var(--aqua); margin-bottom:1rem; }
.estudo-bottom{ display:grid; grid-template-columns:1fr 260px; gap:1.6rem; align-items:start; margin-top:1rem; }
.estudo-bottom .topo-steps{ margin-top:0; }
.estudo-map{ position:relative; }
.estudo-stage{ position:relative; aspect-ratio:1420/895; border-radius:16px; overflow:hidden; background:#1a2a28; }
.estudo-img{ position:absolute; inset:0; width:100%; height:100%; object-fit:cover; transition:opacity .9s ease, filter .6s ease; }
.estudo-img--sol{ opacity:0; }
.estudo-stage[data-stage="1"] .estudo-img--sol, .estudo-stage[data-stage="2"] .estudo-img--sol{ opacity:1; }
.estudo-stage[data-stage="2"] .estudo-img--sol{ filter:brightness(.55) saturate(.8); }
.estudo-pill{
  position:absolute; left:1rem; top:1rem; max-width:calc(100% - 2rem); display:flex; align-items:center; gap:.55rem;
  background:rgba(255,255,255,.95); color:var(--ink); font:600 .9rem var(--font-body); padding:.6rem .9rem; border-radius:10px;
  box-shadow:0 4px 18px rgba(0,0,0,.18); opacity:0; transform:translateY(-6px); transition:opacity .45s ease, transform .45s ease;
}
.estudo-stage[data-stage="0"] .estudo-pill--0, .estudo-stage[data-stage="1"] .estudo-pill--1{ opacity:1; transform:none; transition-delay:.5s; }
.dot{ display:inline-block; width:10px; height:10px; border-radius:50%; flex:0 0 auto; }
.dot-red{ background:#EF3B3B; } .dot-green{ background:#2AB54F; } .dot-blue{ background:#1F8AE3; }
.estudo-legend{
  position:absolute; right:1rem; top:1rem; display:flex; gap:.9rem; background:rgba(8,28,26,.72); color:#fff;
  font:500 .75rem var(--font-mono); padding:.45rem .75rem; border-radius:8px; transition:opacity .4s ease;
}
.estudo-legend span{ display:flex; align-items:center; gap:.35rem; }
.estudo-stage[data-stage="2"] .estudo-legend{ opacity:0; }
.estudo-card{
  position:absolute; right:4%; top:50%; width:min(340px, 70%); transform:translate(0,-46%); opacity:0;
  background:var(--white); border-radius:14px; padding:1.3rem 1.4rem 1.1rem; box-shadow:0 18px 50px rgba(0,0,0,.35);
  transition:opacity .5s ease, transform .5s ease;
}
.estudo-stage[data-stage="2"] .estudo-card{ opacity:1; transform:translate(0,-50%); transition-delay:.3s; }
.estudo-card-title{ font:600 .78rem var(--font-mono); letter-spacing:.08em; text-transform:uppercase; color:var(--aqua); margin-bottom:.7rem; }
.estudo-row{ display:flex; justify-content:space-between; align-items:center; padding:.55rem 0; border-bottom:1px solid #eceee9; font-size:.95rem; opacity:0; transform:translateX(8px); transition:opacity .35s ease, transform .35s ease; }
.estudo-row span{ display:flex; align-items:center; gap:.5rem; }
.estudo-row span::before{ content:""; width:9px; height:9px; border-radius:50%; background:#EF3B3B; }
.estudo-row.r-green span::before{ background:#2AB54F; }
.estudo-row strong{ font:600 1rem var(--font-mono); }
.estudo-stage[data-stage="2"] .estudo-row{ opacity:1; transform:none; }
.estudo-stage[data-stage="2"] .estudo-row:nth-of-type(1){ transition-delay:.6s; }
.estudo-stage[data-stage="2"] .estudo-row:nth-of-type(2){ transition-delay:.8s; }
.estudo-stage[data-stage="2"] .estudo-row:nth-of-type(3){ transition-delay:1s; }
.estudo-stage[data-stage="2"] .estudo-row:nth-of-type(4){ transition-delay:1.2s; }
.estudo-card-foot{ font-size:.82rem; color:#5d6964; margin-top:.8rem; line-height:1.45; }
.estudo-photo{ margin:0; position:relative; border-radius:14px; overflow:hidden; background:#1a2a28; aspect-ratio:3/4; }
.estudo-photo img{ width:100%; height:100%; object-fit:cover; display:block; }
.estudo-photo figcaption{ position:absolute; left:.7rem; right:.7rem; bottom:.7rem; background:rgba(8,28,26,.72); color:#fff; font-size:.8rem; padding:.45rem .7rem; border-radius:8px; }
@media (max-width:900px){
  .estudo-bottom{ grid-template-columns:1fr; }
  .estudo-photo{ aspect-ratio:4/3; max-width:520px; }
  .estudo-legend{ position:static; margin-top:.6rem; width:max-content; max-width:100%; background:none; color:var(--ink); padding:0; }
  .estudo-map{ display:flex; flex-direction:column; }
  .estudo-photo img{ object-position:50% 35%; }
}
@media (max-width:600px){
  .estudo{ padding-top:3rem; }
  .estudo-pill{ left:.5rem; top:.5rem; font-size:.75rem; padding:.4rem .6rem; max-width:calc(100% - 1rem); }
  .estudo-legend{ font-size:.72rem; gap:.8rem; }
  .estudo-card{ right:50%; width:86%; transform:translate(50%,-46%); padding:.8rem 1rem .7rem; }
  .estudo-stage[data-stage="2"] .estudo-card{ transform:translate(50%,-50%); }
  .estudo-row{ padding:.3rem 0; font-size:.8rem; }
  .estudo-card-foot{ display:none; }
}
@media (prefers-reduced-motion: reduce){ .estudo-stage *{ transition:none !important; } }

/* ============ Cadastro: números ============ */
.cadastro-stats{ padding:3.5rem 0 0; }
.cadastro-stats-grid{ display:grid; grid-template-columns:repeat(2, minmax(0, 320px)); gap:1.4rem; }
.cadastro-stats .trust-stat{ background:var(--white); border:1px solid #e5e7e2; border-radius:14px; padding:1.4rem 1.6rem; }
.cadastro-stats .trust-stat .num{ color:var(--forest); }
.cadastro-stats .trust-stat .label{ color:#4a5550; }
@media (max-width:600px){ .cadastro-stats-grid{ grid-template-columns:1fr; } }

/* ============ Estudos: decisão de nova ligação ============ */
.decisao{ padding:4rem 0 1rem; }
.decisao-grid{ display:grid; grid-template-columns:1fr 1.25fr; gap:2.8rem; align-items:start; }
.decisao-copy h2{ font-size:clamp(1.5rem, 2.6vw, 2rem); margin-bottom:.9rem; }
.decisao-flow{ list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:.9rem; counter-reset:none; }
.dz-q{ position:relative; background:var(--white); border:1px solid #e5e7e2; border-radius:14px; padding:1.1rem 1.2rem 1.1rem 3.6rem; }
.dz-q + .dz-q::before{ content:""; position:absolute; left:1.9rem; top:-.95rem; width:2px; height:.95rem; background:#cfd6cf; }
.dz-n{ position:absolute; left:1rem; top:1rem; width:1.8rem; height:1.8rem; border-radius:50%; background:var(--forest); color:#fff; display:grid; place-items:center; font:500 .85rem var(--font-mono); }
.dz-q strong{ display:block; font-size:1rem; margin-bottom:.2rem; }
.dz-q span{ color:#5d6964; font-size:.9rem; }
.dz-yes, .dz-no{ margin-top:.75rem; display:flex; align-items:center; gap:.6rem; font-weight:600; font-size:.92rem; border-radius:10px; padding:.55rem .75rem; }
.dz-yes{ background:#e8f5ec; color:#1e6b33; }
.dz-no{ background:#fff1e3; color:#8a4b12; }
.dz-tag{ font:600 .72rem var(--font-mono); text-transform:uppercase; letter-spacing:.06em; padding:.15rem .45rem; border-radius:6px; background:rgba(255,255,255,.75); color:inherit !important; }
.dz-split{ display:grid; grid-template-columns:1fr 1fr; gap:.6rem; }
@media (max-width:900px){ .decisao-grid{ grid-template-columns:1fr; gap:1.6rem; } }
@media (max-width:520px){ .dz-split{ grid-template-columns:1fr; } }

/* ============ BIM MEP: animação de scroll ============ */
.bim-story{ position:relative; background:var(--paper); }
.bim-pin{ position:sticky; top:0; height:100vh; height:100svh; display:flex; flex-direction:column; padding-top:72px; overflow:hidden; }
.bim-visual{ flex:1 1 auto; min-height:0; display:flex; align-items:center; justify-content:center; container-type:size; padding:1rem 4vw; }
.bim-frame{ position:relative; width:min(100cqw, 150cqh); aspect-ratio:3/2; border-radius:14px; overflow:hidden; background:#e9ebe8; box-shadow:0 10px 40px rgba(0,0,0,.08); }
.bim-img, .bim-cloud{ position:absolute; inset:0; width:100%; height:100%; object-fit:cover; }
.bim-cloud{ opacity:0; background:#0E2C29; }
.bim-img--modelo{ clip-path:inset(0 100% 0 0); }
.bim-img--redes{ clip-path:inset(100% 0 0 0); }
.bim-frame.is-twin .bim-img--redes{ filter:saturate(.75) brightness(.92); transition:filter .6s ease; }
.bim-plane{ position:absolute; opacity:0; pointer-events:none; transition:opacity .2s ease; }
.bim-plane--v{ top:0; bottom:0; width:0; border-left:2px solid #22c3e6; box-shadow:0 0 18px 4px rgba(34,195,230,.45); }
.bim-plane--h{ left:0; right:0; height:0; border-top:2px solid #22c3e6; box-shadow:0 0 18px 4px rgba(34,195,230,.45); }
.bim-plane span{ position:absolute; font:600 .7rem var(--font-mono); letter-spacing:.06em; text-transform:uppercase; color:#fff; background:#0f7fa0; padding:.25rem .5rem; border-radius:6px; white-space:nowrap; }
.bim-plane--v span{ top:1rem; left:.5rem; }
.bim-plane--h span{ left:1rem; top:.5rem; }
.bim-clash, .bim-tag{ position:absolute; transform:translate(-50%,-50%); display:flex; align-items:center; gap:.45rem; opacity:0; transition:opacity .35s ease, transform .35s ease; pointer-events:none; }
.bim-clash.is-on, .bim-tag.is-on{ opacity:1; }
.bim-clash i{ width:22px; height:22px; border-radius:50%; background:rgba(229,57,53,.25); border:2px solid #e53935; flex:0 0 auto; animation:bimPulse 1.4s ease-out infinite; }
.bim-clash span{ font:600 .72rem var(--font-body); color:#fff; background:#c62828; padding:.28rem .55rem; border-radius:6px; white-space:nowrap; }
.bim-tag{ transform:translate(-8px,-50%); }
.bim-tag i{ width:10px; height:10px; border-radius:50%; background:#2AB54F; box-shadow:0 0 0 4px rgba(42,181,79,.25); flex:0 0 auto; animation:bimBlink 1.8s ease-in-out infinite; }
.bim-tag span{ font:500 .74rem var(--font-mono); color:var(--ink); background:rgba(255,255,255,.96); border:1px solid #d9e2dc; padding:.32rem .6rem; border-radius:7px; white-space:nowrap; box-shadow:0 4px 14px rgba(0,0,0,.12); }
.bim-tag b{ font-weight:600; color:var(--forest); margin-right:.25rem; }
@keyframes bimPulse{ 0%{ box-shadow:0 0 0 0 rgba(229,57,53,.5); } 100%{ box-shadow:0 0 0 14px rgba(229,57,53,0); } }
@keyframes bimBlink{ 0%,100%{ opacity:1; } 50%{ opacity:.35; } }
.bim-axes{ position:absolute; right:.8rem; bottom:.8rem; width:54px; height:54px; opacity:.75; }
.bim-axes path{ stroke:#5b6b66; stroke-width:2; fill:none; }
.bim-axes text{ font:600 9px var(--font-mono); fill:#5b6b66; }
.bim-badge{ position:absolute; left:.8rem; bottom:.8rem; font:500 .65rem var(--font-mono); letter-spacing:.06em; text-transform:uppercase; color:#5b6b66; background:rgba(255,255,255,.85); padding:.2rem .5rem; border-radius:5px; }
.bim-caption{ flex:0 0 auto; position:relative; background:var(--forest); color:#fff; padding:1.4rem 6vw; min-height:clamp(150px, 19vh, 210px); display:flex; align-items:center; }
.bim-explainers{ position:relative; width:100%; max-width:760px; min-height:6.5rem; }
.bim-explainer{ position:absolute; inset:0 auto auto 0; opacity:0; transform:translateY(8px); transition:opacity .4s ease, transform .4s ease; }
.bim-explainer.is-visible{ opacity:1; transform:none; }
.bim-eyebrow{ font:600 1.25rem var(--font-body); margin-bottom:.4rem; color:#fff; }
.bim-explainer p:last-child{ color:rgba(255,255,255,.9); font-size:.95rem; max-width:62ch; }
.bim-dots{ position:absolute; right:6vw; top:50%; transform:translateY(-50%); display:flex; flex-direction:column; gap:.5rem; }
.bim-dot{ width:8px; height:8px; border-radius:50%; background:rgba(255,255,255,.35); transition:background .3s ease, transform .3s ease; }
.bim-dot.is-active{ background:#fff; transform:scale(1.35); }
@media (max-width:700px){
  .bim-pin{ padding-top:60px; }
  .bim-visual{ padding:.6rem 3vw; }
  .bim-caption{ min-height:34vh; padding:1.1rem 6vw 1.1rem; }
  .bim-clash span, .bim-tag span{ font-size:.58rem; padding:.2rem .4rem; }
  .bim-clash i{ width:14px; height:14px; }
  .bim-plane span{ font-size:.55rem; }
  .bim-eyebrow{ font-size:1.05rem; }
  .bim-explainer p:last-child{ font-size:.88rem; }
  .bim-axes{ width:38px; height:38px; }
}
.dz-q .dz-n{ color:#fff; font-size:.85rem; }

/* ============ Cadastro: caso real ============ */
.cad-case{ padding:3rem 0 3.5rem; }
.cad-case-grid{ display:grid; grid-template-columns:1.75fr 1fr; gap:1.4rem; align-items:stretch; }
.cad-case-map{ margin:0; }
.cad-case-map img{ width:100%; border-radius:16px; display:block; aspect-ratio:1406/896; object-fit:cover; }
.cad-legend{ display:flex; flex-wrap:wrap; gap:.4rem 1.1rem; margin-top:.8rem; font:500 .78rem var(--font-mono); color:#4a5550; }
.cad-legend span{ display:flex; align-items:center; gap:.4rem; }
.cad-legend .ln{ width:18px; height:4px; border-radius:2px; }
.ln-aer{ background:#FFD400; } .ln-sub{ background:#FF7A1F; }
.cad-legend .pt{ width:9px; height:9px; border-radius:50%; border:1.5px solid #333; }
.pt-ap{ background:#fff; } .pt-col{ background:#B4F05C; }
.cad-legend .sq{ width:10px; height:10px; border:1.5px solid #333; }
.sq-arm{ background:#1FC2E8; } .sq-pt{ background:#E53939; }
.cad-case-card{ background:var(--white); border:1px solid #e5e7e2; border-radius:16px; padding:1.6rem 1.6rem 1.3rem; display:flex; flex-direction:column; }
.cad-case-card h2{ font-size:1.25rem; line-height:1.3; margin-bottom:1rem; }
.cad-case-row{ display:flex; align-items:baseline; gap:.9rem; padding:.6rem 0; border-bottom:1px solid #eceee9; }
.cad-case-row strong{ font:600 1.35rem var(--font-mono); color:var(--forest); min-width:4.6rem; }
.cad-case-row span{ font-size:.95rem; color:var(--ink); line-height:1.35; }
.cad-case-row small{ color:#5d6964; font-size:.82rem; }
.cad-case-big strong{ font-size:1.7rem; }
.cad-case-foot{ margin-top:auto; padding-top:1rem; font-size:.88rem; color:#5d6964; line-height:1.5; }
@media (max-width:900px){ .cad-case-grid{ grid-template-columns:1fr; } }

.cad-case-row strong{ white-space:nowrap; }
.cad-case-zoom{ position:relative; display:block; cursor:zoom-in; }
.cad-zoom-hint{ position:absolute; right:.8rem; top:.8rem; font:600 .72rem var(--font-body); color:#fff; background:rgba(8,28,26,.72); padding:.35rem .6rem; border-radius:7px; opacity:.85; }
.cad-case-zoom:hover .cad-zoom-hint{ opacity:1; }
@media (max-width:600px){ .cad-case-row strong{ min-width:4.2rem; font-size:1.15rem; } .cad-case-big strong{ font-size:1.4rem; } }

/* ============ Cadastro: vistas aérea / SIG / CAD ============ */
.cad-tabs{ display:flex; gap:.4rem; margin-bottom:.7rem; flex-wrap:wrap; }
.cad-tab{ font:600 .85rem var(--font-body); color:var(--ink); background:var(--white); border:1px solid #dfe3dc; border-radius:999px; padding:.5rem 1rem; cursor:pointer; }
.cad-tab[aria-selected="true"]{ background:var(--forest); color:#fff; border-color:var(--forest); }
.cad-stage{ position:relative; aspect-ratio:1406/896; border-radius:16px; overflow:hidden; background:#e9ebe6; }
.cad-stage .cad-aerial, .cad-stage .cad-aerial img{ position:absolute; inset:0; width:100%; height:100%; border-radius:0; }
.cad-stage .cad-aerial img{ object-fit:cover; aspect-ratio:auto; }
.cad-map{ position:absolute; inset:0; touch-action:none; cursor:grab; user-select:none; }
.cad-map:active{ cursor:grabbing; }
.cad-map > svg{ width:100%; height:100%; display:block; }
.cad-map path, .cad-map line{ vector-effect:non-scaling-stroke; fill:none; }
.cad-map .hit{ stroke:transparent; stroke-width:12; pointer-events:stroke; }
.cad-map .hit-pt{ stroke:transparent; stroke-width:16; stroke-linecap:round; pointer-events:stroke; cursor:pointer; }
.cad-map .dot-out, .cad-map .dot-in{ stroke-linecap:round; pointer-events:none; }
.cad-map .L-arm .dot-out, .cad-map .L-arm .dot-in, .cad-map .L-pt .dot-out, .cad-map .L-pt .dot-in{ stroke-linecap:square; }
.cad-tip{ position:absolute; z-index:5; min-width:170px; background:#fff; color:var(--ink); border:1px solid #d6ddd8; border-radius:9px; padding:.55rem .7rem; box-shadow:0 8px 24px rgba(0,0,0,.18); font-size:.8rem; pointer-events:none; display:flex; flex-direction:column; gap:.1rem; }
.cad-tip strong{ font-size:.85rem; color:var(--forest); }
.cad-tip span{ color:#4a5550; }
.cad-ctrl{ position:absolute; right:.7rem; top:.7rem; display:flex; flex-direction:column; gap:.3rem; }
.cad-ctrl button{ width:32px; height:32px; border-radius:8px; border:1px solid #d3d9d4; background:rgba(255,255,255,.95); font:600 1rem var(--font-body); color:var(--ink); cursor:pointer; }
.cad-north{ position:absolute; right:.8rem; top:8.6rem; width:22px; opacity:.85; }
.cad-north path{ fill:var(--ink); } .cad-north text{ font:700 7px var(--font-mono); fill:var(--ink); }
.cad-scale{ position:absolute; left:.8rem; bottom:.8rem; display:flex; align-items:flex-end; gap:.45rem; font:600 .72rem var(--font-mono); color:var(--ink); }
.cad-scale span{ display:block; height:7px; border:2px solid var(--ink); border-top:none; }
.cad-scale em{ font-style:normal; }
.cad-coords{ position:absolute; left:.8rem; top:.7rem; font:500 .72rem var(--font-mono); color:#5d6964; display:none; }
.cad-titleblock{ position:absolute; right:.8rem; bottom:.8rem; display:none; flex-direction:column; border:1px solid #5b5b5b; padding:.35rem .6rem; font:500 .66rem var(--font-mono); color:#bdbdbd; background:rgba(0,0,0,.55); gap:.05rem; }
.cad-titleblock strong{ color:#fff; letter-spacing:.08em; font-size:.72rem; }
.cad-hint{ position:absolute; left:50%; bottom:.7rem; transform:translateX(-50%); margin:0; font-size:.7rem; color:#5d6964; background:rgba(255,255,255,.8); padding:.2rem .55rem; border-radius:6px; white-space:nowrap; }
.cad-legend .cad-layer{ display:flex; align-items:center; gap:.4rem; font:500 .78rem var(--font-mono); color:#4a5550; background:none; border:0; padding:.15rem 0; cursor:pointer; }
.cad-legend .cad-layer:disabled{ cursor:default; }
.cad-legend .cad-layer[aria-pressed="false"]{ opacity:.4; text-decoration:line-through; }
.cad-legend .lg-c{ display:none; }
.cad-viewer[data-mode="cad"] .cad-legend .lg-n{ display:none; }
.cad-viewer[data-mode="cad"] .cad-legend .lg-c{ display:inline; }

/* --- vista SIG: fundo claro --- */
.cad-viewer[data-mode="sig"] .cad-stage{ background:#f3f4ef; }
.cad-viewer[data-mode="sig"] .L-grid line{ stroke:#e1e5de; stroke-width:1; }
.cad-viewer[data-mode="sig"] .L-aer path{ stroke:#D9A400; stroke-width:2.2; }
.cad-viewer[data-mode="sig"] .L-sub path{ stroke:#FF6A13; stroke-width:2.6; stroke-dasharray:6 4; }
.cad-viewer[data-mode="sig"] .L-ap .dot-out{ stroke:#2b2b2b; stroke-width:8; } .cad-viewer[data-mode="sig"] .L-ap .dot-in{ stroke:#fff; stroke-width:5; }
.cad-viewer[data-mode="sig"] .L-col .dot-out{ stroke:#1f5f2e; stroke-width:9; } .cad-viewer[data-mode="sig"] .L-col .dot-in{ stroke:#6fd07a; stroke-width:6; }
.cad-viewer[data-mode="sig"] .L-arm .dot-out{ stroke:#0d4f66; stroke-width:11; } .cad-viewer[data-mode="sig"] .L-arm .dot-in{ stroke:#1FC2E8; stroke-width:8; }
.cad-viewer[data-mode="sig"] .L-pt .dot-out{ stroke:#6d1414; stroke-width:17; } .cad-viewer[data-mode="sig"] .L-pt .dot-in{ stroke:#E53939; stroke-width:13; }

/* --- vista CAD: fundo escuro, cores de camadas --- */
.cad-viewer[data-mode="cad"] .cad-stage{ background:#16181a; }
.cad-viewer[data-mode="cad"] .cad-map{ cursor:crosshair; }
.cad-viewer[data-mode="cad"] .L-grid line{ stroke:#24272a; stroke-width:1; }
.cad-viewer[data-mode="cad"] .L-aer path{ stroke:#FFFF00; stroke-width:1.2; }
.cad-viewer[data-mode="cad"] .L-sub path{ stroke:#FF3BFF; stroke-width:1.4; stroke-dasharray:8 3 2 3; }
.cad-viewer[data-mode="cad"] .L-ap .dot-out{ stroke:#ffffff; stroke-width:6; } .cad-viewer[data-mode="cad"] .L-ap .dot-in{ stroke:#16181a; stroke-width:3; }
.cad-viewer[data-mode="cad"] .L-col .dot-out{ stroke:#00FF66; stroke-width:6; } .cad-viewer[data-mode="cad"] .L-col .dot-in{ stroke:#16181a; stroke-width:3; }
.cad-viewer[data-mode="cad"] .L-arm .dot-out{ stroke:#00E5FF; stroke-width:9; } .cad-viewer[data-mode="cad"] .L-arm .dot-in{ stroke:#16181a; stroke-width:5; }
.cad-viewer[data-mode="cad"] .L-pt .dot-out{ stroke:#FF3030; stroke-width:14; } .cad-viewer[data-mode="cad"] .L-pt .dot-in{ stroke:#16181a; stroke-width:9; }
.cad-viewer[data-mode="cad"] .cad-coords, .cad-viewer[data-mode="cad"] .cad-titleblock{ display:flex; }
.cad-viewer[data-mode="cad"] .cad-coords{ color:#9aa39f; }
.cad-viewer[data-mode="cad"] .cad-scale, .cad-viewer[data-mode="cad"] .cad-scale em{ color:#d0d0d0; }
.cad-viewer[data-mode="cad"] .cad-scale span{ border-color:#d0d0d0; }
.cad-viewer[data-mode="cad"] .cad-north path{ fill:#d0d0d0; } .cad-viewer[data-mode="cad"] .cad-north text{ fill:#d0d0d0; }
.cad-viewer[data-mode="cad"] .cad-ctrl button{ background:#2a2d30; color:#e8e8e8; border-color:#44484c; }
.cad-viewer[data-mode="cad"] .cad-hint{ background:rgba(0,0,0,.55); color:#bdbdbd; }
.cad-viewer[data-mode="cad"] .cad-tip{ background:#1f2225; color:#e6e6e6; border-color:#44484c; }
.cad-viewer[data-mode="cad"] .cad-tip strong{ color:#FFFF00; } .cad-viewer[data-mode="cad"] .cad-tip span{ color:#bdbdbd; }
@media (max-width:600px){
  .cad-hint{ display:none; }
  .cad-titleblock{ display:none !important; }
  .cad-north{ top:7.4rem; }
  .cad-ctrl button{ width:28px; height:28px; }
}
.cad-stage [hidden], .cad-viewer [hidden]{ display:none !important; }
.cad-hint{ top:.7rem; bottom:auto; } .cad-viewer[data-mode="cad"] .cad-coords{ top:auto; bottom:2.6rem; }



/* ============ Carrossel: slides com notícia ============ */
.hero-content{ transition:opacity .6s ease, transform .6s ease; }
.hero.show-news .hero-content{ opacity:0; transform:translateY(10px); pointer-events:none; }
.hero-news{ position:absolute; z-index:3; left:0; right:0; top:50%; transform:translateY(-44%); opacity:0; pointer-events:none; transition:opacity .6s ease, transform .6s ease; }
.hero-news.is-active{ opacity:1; transform:translateY(-50%); pointer-events:auto; }
.hero-news > *{ max-width:620px; }
.hero-news-kicker{ display:inline-block; font:600 .75rem var(--font-mono); letter-spacing:.1em; text-transform:uppercase; color:var(--forest-dark); background:var(--sage); padding:.35rem .7rem; border-radius:6px; margin-bottom:1rem; }
.hero-news h2{ color:#fff; font-size:clamp(1.9rem, 4vw, 3.2rem); line-height:1.12; margin-bottom:1rem; }
.hero-news-text{ color:rgba(255,255,255,.9); font-size:1.08rem; line-height:1.6; margin-bottom:1.3rem; }
.hero-news-facts{ display:flex; flex-wrap:wrap; gap:.7rem; margin-bottom:1.5rem; }
.hero-news-count, .hero-news-ref{ display:flex; flex-direction:column; justify-content:center; background:rgba(8,28,26,.55); border:1px solid rgba(255,255,255,.22); border-radius:12px; padding:.7rem 1rem; color:#fff; text-decoration:none; backdrop-filter:blur(4px); }
.hero-news-count strong{ font:600 1.7rem var(--font-mono); line-height:1; }
.hero-news-count span, .hero-news-ref em{ font-size:.78rem; color:rgba(255,255,255,.8); font-style:normal; margin-top:.25rem; }
.hero-news-ref span{ font-weight:600; font-size:.95rem; }
.hero-news-ref:hover{ background:rgba(8,28,26,.75); }
.hero.show-news .hero-scrim{ background:linear-gradient(90deg, rgba(11,20,18,.82) 0%, rgba(11,20,18,.55) 45%, rgba(11,20,18,.15) 100%); }
@media (max-width:700px){
  .hero-news{ top:auto; bottom:4.2rem; transform:none; }
  .hero-news.is-active{ transform:none; }
  .hero-news h2{ font-size:1.6rem; }
  .hero-news-text{ display:none; }
  .hero-news-count strong{ font-size:1.3rem; }
  .hero.show-news .hero-scrim{ background:linear-gradient(180deg, rgba(11,20,18,.2) 0%, rgba(11,20,18,.85) 60%); }
}

/* ===========================================================
 *  TELEMÓVEL — revisão geral
 *  Princípio: as imagens aparecem inteiras (redimensionadas),
 *  sem cortes; o texto vai para baixo delas quando não cabe por cima.
 * =========================================================== */
.m-legend{ display:none; }
@media (max-width:700px){
  /* --- topo da página inicial: imagem inteira em cima, texto por baixo --- */
  .hero{ height:auto; min-height:0; max-height:none; display:block; padding-top:60px; background:var(--forest-dark); }
  .hero-slides{ position:relative; inset:auto; aspect-ratio:16/9; }
  .hero-scrim, .hero.show-news .hero-scrim{ display:none; }
  .hero-content{ padding:1.6rem 6vw 2.4rem; opacity:1; transform:none; }
  .hero h1{ font-size:2.1rem; margin-bottom:.8rem; }
  .hero-sub{ font-size:1rem; margin-bottom:1.4rem; }
  .hero .coord{ margin-bottom:.7rem; }
  .hero.show-news .hero-content{ display:none; }
  .hero-news, .hero-news.is-active{ position:static; transform:none; opacity:1; pointer-events:auto; padding:1.6rem 6vw 2.6rem; }
  .hero-news{ display:none; }
  .hero-news.is-active{ display:block; }
  .hero-news-text{ display:block; font-size:.95rem; }
  .hero-news h2{ font-size:1.55rem; }
  .hero-dots{ top:calc(60px + 56.25vw - 26px); bottom:auto; }

  /* --- espaçamentos mais curtos --- */
  .services, .about-teaser, .certs, .project{ padding:3.4rem 0; }
  .cta-final{ padding:3.2rem 0; }
  .narrative{ padding:2.4rem 0; }
  .info-list{ padding:3rem 0; }
  .related-services{ padding:2.6rem 0 3.4rem; }
  .svc-sections{ padding:2.6rem 0 1rem; }
  .cad-case, .estudo, .decisao, .topo{ padding-top:2.4rem; padding-bottom:2rem; }
  .cadastro-stats{ padding-top:2.2rem; }

  /* --- cartões de serviços: compactos, ícone ao lado --- */
  .service-icon-grid{ grid-template-columns:1fr; gap:.7rem; }
  .service-icon-grid .service-tile{ display:grid; grid-template-columns:44px 1fr; column-gap:.9rem; row-gap:.2rem; padding:1rem 1.1rem; align-items:start; }
  .service-icon-grid .service-tile .service-tile-icon{ grid-row:1 / span 3; width:44px; height:44px; margin:0; }
  .service-icon-grid .service-tile h3{ font-size:1rem; margin:0; }
  .service-icon-grid .service-tile p{ font-size:.86rem; margin:0; }
  .service-icon-grid .service-tile .tile-arrow{ font-size:.82rem; }
  .related-grid{ grid-template-columns:1fr 1fr; gap:.7rem; }
  .related-grid .service-tile{ padding:.9rem .9rem 1rem; }
  .related-grid .service-tile h3{ font-size:.88rem; line-height:1.25; }
  .related-grid .service-tile .service-tile-icon{ width:38px; height:38px; margin-bottom:.6rem; }

  /* --- imagens inteiras, sem cortes --- */
  .narrative-media img{ aspect-ratio:auto; height:auto; }
  .estudo-photo{ aspect-ratio:auto; max-width:360px; margin:0 auto; }
  .estudo-photo img{ height:auto; }
  .topo-static img{ aspect-ratio:auto; }

  /* --- Cadastro: números lado a lado --- */
  .cadastro-stats-grid{ grid-template-columns:1fr 1fr; gap:.7rem; }
  .cadastro-stats .trust-stat{ padding:1rem 1.1rem; }
  .cadastro-stats .trust-stat .num{ font-size:2rem; }

  /* --- Topografia: nomes das fases cabem --- */
  .topo-step{ font-size:.78rem; padding:.6rem .55rem; }

  /* --- BIM: imagem e texto juntos, legendas numeradas --- */
  .bim-pin{ justify-content:center; padding-top:56px; }
  .bim-visual{ flex:0 0 auto; height:calc(94vw * 2 / 3 + 1.2rem); }
  .bim-caption{ min-height:0; padding:1.1rem 6vw 1.3rem; }
  .bim-explainers{ min-height:0; }
  .bim-explainer{ position:relative; inset:auto; display:none; }
  .bim-explainer.is-visible{ display:block; }
  .bim-clash span, .bim-tag span{ display:none; }
  .bim-clash i, .bim-tag i{ width:18px; height:18px; display:grid; place-items:center; font:700 10px var(--font-mono); color:#fff; border-radius:50%; }
  .bim-clash i{ background:#e53935; }
  .bim-tag i{ background:#2AB54F; box-shadow:0 0 0 3px rgba(42,181,79,.3); }
  .bim-clash i::after, .bim-tag i::after{ content:attr(data-n); }
  .bim-plane span{ display:none; }

  /* --- legendas numeradas (GPR e BIM) --- */
  .m-legend{ display:flex; flex-wrap:wrap; gap:.35rem .8rem; list-style:none; margin:.8rem 0 0; padding:0; font:500 .76rem var(--font-mono); color:rgba(255,255,255,.9); }
  .m-legend li{ display:flex; align-items:center; gap:.35rem; }
  .m-legend b{ display:inline-grid; place-items:center; width:17px; height:17px; border-radius:50%; background:#6BE6C8; color:#08302b; font-size:.65rem; }
  [data-legend-for="fault"] .m-legend b{ background:#ff9a7a; }
  [data-legend-for="coord"] .m-legend b{ background:#e53935; color:#fff; }
  [data-legend-for="twin"] .m-legend b{ background:#2AB54F; color:#fff; }
}
@media (max-width:700px){ .topo-step{ font-size:.72rem; letter-spacing:-.01em; } }

@media (max-width:700px){ .hero-slide{ background-image:var(--bg-m, var(--bg)); } }

/* campo anti-spam do formulário: invisível para pessoas */
.hp-field{ position:absolute !important; left:-9999px; width:1px; height:1px; overflow:hidden; }

/* ============ menu do telemóvel: fechar pelo X, pelo fundo ou com Esc ============ */
.nav-close, .nav-backdrop{ display:none; }
@media (max-width:900px){
  .main-nav{ z-index:120; }
  .nav-close{ display:grid; place-items:center; position:absolute; top:1.1rem; right:1.1rem; width:40px; height:40px; border-radius:50%; border:1px solid #e1e5de; background:var(--white); color:var(--ink); font-size:1.4rem; line-height:1; cursor:pointer; }
  .nav-backdrop{ display:block; position:fixed; inset:0; z-index:99; background:rgba(8,20,18,.45); opacity:0; pointer-events:none; transition:opacity .3s ease; }
  .nav-backdrop.is-open{ opacity:1; pointer-events:auto; }
  body.nav-locked{ overflow:hidden; }
}
@media (max-width:900px){ .main-nav a.nav-cta{ color:#fff !important; } }

/* ============ Topo: a rede que forma o logótipo ============ */
.hero-rede{ position:relative; height:100vh; height:100svh; min-height:640px; overflow:hidden; color:#fff; isolation:isolate;
  background:radial-gradient(ellipse at 72% 45%, #0E3B35 0%, #07231F 62%); }
.hero-rede::after{ content:""; position:absolute; inset:0; z-index:0; pointer-events:none;
  background-image:linear-gradient(rgba(107,230,200,.045) 1px, transparent 1px), linear-gradient(90deg, rgba(107,230,200,.045) 1px, transparent 1px); background-size:64px 64px; }
.hero-rede canvas{ position:absolute; inset:0; width:100%; height:100%; z-index:1; }
.hr-logo{ position:absolute; z-index:2; opacity:0; transform:scale(.985); transition:opacity .9s ease, transform 1.2s cubic-bezier(.2,.8,.2,1); pointer-events:none; filter:drop-shadow(0 0 30px rgba(107,230,200,.25)); }
.hero-rede.is-logo .hr-logo{ opacity:1; transform:none; }
.hr-content{ position:absolute; z-index:3; left:0; right:0; bottom:clamp(3rem, 11vh, 7.5rem); pointer-events:none; }
.hr-copy{ max-width:600px; pointer-events:auto; }
.hr-news{ display:inline-flex; align-items:center; gap:.6rem; font-size:.9rem; font-weight:500; color:#fff; text-decoration:none; background:rgba(255,255,255,.08); border:1px solid rgba(255,255,255,.2); -webkit-backdrop-filter:blur(10px); backdrop-filter:blur(10px); padding:.45rem .9rem .45rem .5rem; border-radius:980px; margin-bottom:1.4rem; max-width:100%; transition:background .25s ease; }
.hr-news:hover{ background:rgba(255,255,255,.16); }
.hr-news b{ background:var(--sage); color:#07231F; font-size:.75rem; font-weight:700; padding:.2rem .55rem; border-radius:980px; flex:0 0 auto; }
.hr-news span{ overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.hero-rede h1{ color:#fff; max-width:11ch; font-size:clamp(2.6rem, 5vw, 4.4rem); line-height:1.02; letter-spacing:-.035em; margin-bottom:1.2rem; }
.hr-lede{ color:rgba(255,255,255,.86); font-size:clamp(1.05rem, 1.4vw, 1.2rem); line-height:1.5; max-width:32em; margin-bottom:2rem; }
.hr-actions{ display:flex; flex-wrap:wrap; gap:.8rem; }
.hr-readout{ position:absolute; z-index:3; right:6vw; bottom:clamp(3rem, 11vh, 7.5rem); text-align:right; font:500 .82rem var(--font-mono); color:rgba(255,255,255,.72); display:flex; flex-direction:column; align-items:flex-end; gap:.15rem; }
.hr-readout strong{ font:600 1.6rem var(--font-mono); color:#fff; }
.hr-hint{ font-style:normal; font-family:var(--font-body); font-size:.78rem; color:rgba(255,255,255,.6); opacity:0; transition:opacity .6s ease; }
.hr-hint.is-on{ opacity:1; }
.hero-rede::before{ content:""; position:absolute; inset:0; z-index:2; pointer-events:none; background:linear-gradient(90deg, rgba(7,35,31,.8) 0%, rgba(7,35,31,.35) 38%, rgba(7,35,31,0) 55%); }
@media (max-width:800px){
  .hero-rede{ min-height:640px; }
  .hr-content{ bottom:2.6rem; }
  .hero-rede h1{ font-size:2.4rem; }
  .hr-readout{ display:none; }
  .hero-rede::before{ background:linear-gradient(0deg, rgba(7,35,31,.95) 0%, rgba(7,35,31,.55) 42%, rgba(7,35,31,0) 60%); }
}

/* ============ Faixa: a nossa equipa no terreno ============ */
.team-strip{ padding:4.5rem 0 4rem; overflow:hidden; }
.team-strip-title{ font-size:clamp(1.5rem, 2.6vw, 2.1rem); margin-bottom:1.6rem; }
.team-strip-track{ display:flex; gap:1rem; width:max-content; animation:teamScroll 36s linear infinite; }
.team-strip figure{ margin:0; flex:0 0 auto; width:clamp(260px, 32vw, 460px); aspect-ratio:16/9; border-radius:16px; overflow:hidden; background:#e8ebe5; }
.team-strip img{ width:100%; height:100%; object-fit:cover; display:block; }
@keyframes teamScroll{ to{ transform:translateX(-50%); } }
/* com "reduzir movimento" ligado, continua a andar, mas mais devagar */
@media (prefers-reduced-motion: reduce){ .team-strip-track{ animation-duration:70s; } }
@media (max-width:700px){ .team-strip{ padding:3rem 0 2.6rem; } }

/* ============ Lente GPR (Deteção no subsolo e de avarias) ============ */
.lente-sec{ padding:4rem 0 2rem; }
.ln-stage{ position:relative; aspect-ratio:1400/933; border-radius:18px; overflow:hidden; background:#0E2C29; cursor:crosshair; --r:120px; touch-action:pan-y; }
.ln-stage img{ position:absolute; inset:0; width:100%; height:100%; object-fit:cover; }
.ln-base{ filter:brightness(.8) saturate(.9); }
.ln-scan{ clip-path:circle(var(--r) at var(--x, 50%) var(--y, 60%)); }
.ln-lens{ position:absolute; left:var(--x, 50%); top:var(--y, 60%); width:calc(var(--r) * 2); height:calc(var(--r) * 2); transform:translate(-50%,-50%); border-radius:50%; pointer-events:none;
  border:1.5px solid rgba(107,230,200,.95); box-shadow:0 0 0 1px rgba(7,35,31,.35), 0 0 36px rgba(107,230,200,.35), inset 0 0 26px rgba(107,230,200,.22); }
.ln-lens::before{ content:""; position:absolute; inset:-9px; border-radius:50%; background:repeating-conic-gradient(rgba(107,230,200,.85) 0 1deg, transparent 1deg 10deg);
  -webkit-mask:radial-gradient(circle, transparent calc(50% - 4px), #000 calc(50% - 4px) 50%, transparent 50%); mask:radial-gradient(circle, transparent calc(50% - 4px), #000 calc(50% - 4px) 50%, transparent 50%); }
.ln-stage.is-locked .ln-lens{ border-color:#fff; }
.ln-read{ position:absolute; left:calc(var(--x, 50%) + var(--r) * .7); top:calc(var(--y, 60%) - var(--r) * .78); font:600 .76rem var(--font-mono); color:#07231F; background:rgba(255,255,255,.9); padding:.3rem .6rem; border-radius:6px; white-space:nowrap; pointer-events:none; }
.ln-read.is-hit{ background:#6BE6C8; }
.ln-mark{ position:absolute; transform:translate(-50%,-50%); display:flex; align-items:center; gap:.4rem; opacity:0; transition:opacity .3s ease; pointer-events:none; }
.ln-mark.is-in{ opacity:1; }
.ln-mark i{ width:12px; height:12px; border-radius:50%; background:#6BE6C8; box-shadow:0 0 0 4px rgba(107,230,200,.3); flex:0 0 auto; }
.ln-mark span{ font:600 .72rem var(--font-body); color:#fff; background:rgba(7,35,31,.82); padding:.25rem .5rem; border-radius:6px; white-space:nowrap; }
.ln-mark span b{ font-family:var(--font-mono); color:#6BE6C8; font-weight:600; }
.ln-mark.is-fault i{ background:#ff8a65; box-shadow:0 0 0 4px rgba(255,138,101,.35); animation:lnPulse 1.4s ease-out infinite; }
.ln-mark.is-fault span b{ color:#ffb199; }
@keyframes lnPulse{ 0%{ box-shadow:0 0 0 0 rgba(255,138,101,.6); } 100%{ box-shadow:0 0 0 14px rgba(255,138,101,0); } }
.ln-radar{ position:absolute; right:1rem; bottom:1rem; width:min(380px, 60%); background:rgba(7,20,18,.92); border:1px solid rgba(107,230,200,.35); border-radius:12px; padding:.6rem .7rem .7rem; color:#fff; box-shadow:0 14px 40px rgba(0,0,0,.4); cursor:default; }
.ln-radar-head{ display:flex; justify-content:space-between; align-items:center; margin-bottom:.4rem; }
.ln-radar-title{ font:600 .78rem var(--font-mono); color:#6BE6C8; }
.ln-radar-close{ width:26px; height:26px; border-radius:50%; border:1px solid rgba(255,255,255,.3); background:transparent; color:#fff; cursor:pointer; line-height:1; }
.ln-radar canvas{ display:block; width:100%; height:190px; border-radius:6px; }
.ln-caption{ display:grid; grid-template-columns:1fr 1.3fr; gap:2rem; margin-top:1.4rem; align-items:start; }
.ln-caption h2{ font-size:clamp(1.4rem, 2.4vw, 1.9rem); }
.lente-txt{ padding:2.5rem 0 4rem; }
.lente-txt-grid{ display:grid; grid-template-columns:1fr 1.3fr; gap:2rem; border-top:1px solid #e3e7e0; padding-top:2.5rem; }
.lente-txt h2{ font-size:clamp(1.3rem, 2.2vw, 1.7rem); }
@media (max-width:700px){
  .ln-caption, .lente-txt-grid{ grid-template-columns:1fr; gap:.8rem; }
  .ln-mark span{ font-size:.62rem; padding:.18rem .4rem; }
  .ln-read{ font-size:.62rem; left:auto; right:.5rem; top:.5rem; }
  .ln-radar{ position:fixed; z-index:200; left:.6rem; right:.6rem; bottom:.6rem; width:auto; padding:.55rem .6rem .6rem; }
  .ln-radar canvas{ height:170px; }
  .lente-sec{ padding-top:2.4rem; }
}
@media (prefers-reduced-motion: reduce){ .ln-mark.is-fault i{ animation:none; } }

.ln-radar-list{ list-style:none; margin:.5rem 0 0; padding:0; display:flex; flex-wrap:wrap; gap:.3rem .8rem; font:500 .72rem var(--font-mono); color:#dfe9e6; }
.ln-radar-list li{ display:flex; align-items:center; gap:.35rem; }
.ln-radar-list b{ display:inline-grid; place-items:center; width:16px; height:16px; border-radius:50%; background:#6BE6C8; color:#07231F; font-size:.62rem; }
.ln-radar-list li.is-fault b{ background:#ff8a65; }

/* ============ Projetos: da nuvem de pontos à planta ============ */
.nuvem-cad{ padding:4rem 0 1.5rem; }
.nc-stage{ position:relative; aspect-ratio:16/9; border-radius:18px; overflow:hidden; background:#0C1715; }
.nc-stage img{ display:none; }
.nc-stage canvas, .nc-stage .cad-plan{ position:absolute; inset:0; width:100%; height:100%; }
.cad-plan{ opacity:0; transition:opacity 1s ease; }
.cad-plan.is-on{ opacity:1; }
.cad-plan line, .cad-plan path, .cad-plan rect, .cad-plan circle{ fill:none; vector-effect:non-scaling-stroke; }
.cp-grid line{ stroke:#1b2926; stroke-width:1; }
.cp-parcel path{ stroke:#7d8a86; stroke-width:1; stroke-dasharray:6 4; }
.cp-road path{ stroke:#b9c2bf; stroke-width:1.2; }
.cp-line path{ stroke:#FFD400; stroke-width:2.4; }
.cp-apoio rect{ stroke:#ffffff; stroke-width:1.6; }
.cp-ocr circle, .cp-ocr path{ stroke:#FF4D4D; stroke-width:2.2; }
.cp-callout path{ stroke:#FF4D4D; stroke-width:1.2; }
.cad-plan text{ font-family:var(--font-mono); font-size:17px; fill:#d8dfdc; }
.cp-dim text{ fill:#6BE6C8; font-size:15px; }
.cp-ocr-t{ fill:#ff8a8a !important; font-weight:600; }
.cp-par-t{ fill:#8f9c98 !important; font-size:14px !important; }
.cp-box{ stroke:#586662 !important; fill:rgba(12,23,21,.85) !important; }
.cp-leg-t{ fill:#fff !important; font-weight:600; letter-spacing:.04em; }
.cp-leg-s{ fill:#8f9c98 !important; font-size:13px !important; }
.cp-legend text{ font-size:14px; }
.cp-l-line{ stroke:#FFD400 !important; stroke-width:2.4 !important; } .cp-l-ap{ stroke:#fff !important; stroke-width:1.6 !important; }
.cp-l-ocr{ stroke:#FF4D4D !important; stroke-width:2 !important; } .cp-l-par{ stroke:#7d8a86 !important; stroke-dasharray:6 4; }
.cp-north path{ fill:#d8dfdc !important; } .cp-north text{ font-weight:700; }
.nc-replay{ position:absolute; right:1rem; bottom:1rem; font:600 .82rem var(--font-body); color:#07231F; background:#fff; border:0; border-radius:980px; padding:.5rem 1rem; cursor:pointer; }
.nc-steps{ display:grid; grid-template-columns:1fr 1fr; gap:1rem; margin-top:1.2rem; }
.nc-step{ display:flex; gap:.9rem; padding:1rem 1.1rem; border:1px solid #e3e7e0; border-radius:14px; background:var(--white); opacity:.55; transition:opacity .4s ease, border-color .4s ease; }
.nc-step.is-active{ opacity:1; border-color:var(--forest); }
.nc-step > span{ flex:0 0 auto; display:grid; place-items:center; width:28px; height:28px; border-radius:50%; background:var(--forest); color:#fff; font:600 .85rem var(--font-mono); }
.nc-step h3{ font-size:1.05rem; margin-bottom:.25rem; }
.nc-step p{ font-size:.92rem; }
@media (max-width:700px){ .nc-steps{ grid-template-columns:1fr; } .nuvem-cad{ padding-top:2.4rem; } .nc-stage{ aspect-ratio:4/3; } .cad-plan text{ font-size:22px; } }

/* ===========================================================
 *  AFINAÇÕES DE DESIGN (inspiradas na Apple)
 *  Letra do sistema (SF nos aparelhos Apple, Inter nos outros), escala de
 *  títulos, botões em pílula, cabeçalho em vidro fosco, cartões mais limpos.
 *  As cores e as animações das páginas não mudam.
 * =========================================================== */
:root{
  --font-display: -apple-system, BlinkMacSystemFont, "SF Pro Display", "Inter", system-ui, sans-serif;
  --font-body: -apple-system, BlinkMacSystemFont, "SF Pro Text", "Inter", system-ui, sans-serif;
  --ease: cubic-bezier(.2,.8,.2,1);
}
body{
  font-family: var(--font-body);
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
}
/* escala tipográfica (1,25) e títulos mais apertados */
h1{ letter-spacing:-.03em; font-weight:650; }
h2{ font-size:clamp(1.9rem, 3.4vw, 3rem); letter-spacing:-.025em; line-height:1.08; font-weight:650; }
h3{ letter-spacing:-.012em; font-weight:600; }
p{ line-height:1.55; }
.section-head p, .about-copy p{ max-width:60ch; }
/* rótulos em letra normal, em vez de MAIÚSCULAS espaçadas */
.eyebrow{ font-family:var(--font-body); text-transform:none; letter-spacing:0; font-size:1rem; font-weight:600; color:var(--forest); margin-bottom:.6rem; }
/* botões em pílula, com reação ao rato e ao toque */
.btn, .nav-cta{ border-radius:980px; min-height:44px; padding:.75rem 1.4rem; transition:transform .35s var(--ease), background .25s var(--ease), box-shadow .35s var(--ease), color .25s var(--ease); }
.btn:hover, .nav-cta:hover{ transform:translateY(-1px) scale(1.02); }
.btn:active, .nav-cta:active{ transform:scale(.97); transition-duration:.1s; }
.btn:focus-visible, a:focus-visible, button:focus-visible{ outline:3px solid var(--sage); outline-offset:3px; }
/* cabeçalho em vidro fosco ao descer a página */
.site-header.is-scrolled{ background:rgba(247,248,244,.72); -webkit-backdrop-filter:saturate(180%) blur(20px); backdrop-filter:saturate(180%) blur(20px); box-shadow:0 1px 0 rgba(0,0,0,.06); }
/* cartões de serviços: mais limpos, elevação só ao passar o rato */
.service-tile{ border:none; border-radius:18px; box-shadow:0 1px 2px rgba(11,78,72,.06), 0 0 0 1px rgba(11,78,72,.06); transition:transform .45s var(--ease), box-shadow .45s var(--ease); }
.service-tile:hover{ transform:translateY(-3px); box-shadow:0 18px 40px rgba(11,78,72,.12), 0 0 0 1px rgba(11,78,72,.05); }
.service-tile-icon{ border-radius:12px; }


.btn-outline{ background:transparent; }
.btn-outline:hover{ background:rgba(255,255,255,.12); }

/* lente: sem pontos (a etiqueta basta), tabela das deteções ao lado do texto */
.ln-mark i{ display:none; }
.ln-caption{ grid-template-columns:1fr 1fr; gap:2.4rem; }
.ln-caption-copy h2{ margin-bottom:.7rem; }
.ln-table{ background:var(--white); border:1px solid #e3e7e0; border-radius:14px; padding:1rem 1.1rem .8rem; }
.ln-table-head{ display:flex; justify-content:space-between; align-items:baseline; margin-bottom:.6rem; }
.ln-table-head strong{ font-size:1rem; }
.ln-count{ font:600 .8rem var(--font-mono); color:var(--forest); }
.ln-rows{ list-style:none; margin:0; padding:0; }
.ln-rows li{ display:grid; grid-template-columns:1fr 90px 52px; align-items:center; gap:.7rem; padding:.45rem 0; border-top:1px solid #eef0ea; font-size:.9rem; color:#8b9692; transition:color .4s ease; }
.ln-rows li b{ font:600 .85rem var(--font-mono); text-align:right; color:#b5bdb9; transition:color .4s ease; }
.ln-row-bar{ height:6px; border-radius:3px; background:#eef0ea; overflow:hidden; }
.ln-row-bar i{ display:block; height:100%; background:var(--forest); border-radius:3px; transform:scaleX(0); transform-origin:left; transition:transform .8s cubic-bezier(.2,.8,.2,1); }
.ln-rows li.is-found{ color:var(--ink); }
.ln-rows li.is-found b{ color:var(--forest); }
.ln-rows li.is-found .ln-row-bar i{ transform:scaleX(1); }
.ln-rows li.is-fault.is-found b{ color:#c2410c; }
.ln-rows li.is-fault .ln-row-bar i{ background:#ff8a65; }
.ln-rows li .ln-row-name::before{ content:"○"; margin-right:.45rem; color:#c2c9c5; }
.ln-rows li.is-found .ln-row-name::before{ content:"●"; color:#10746C; }
.ln-rows li.is-fault.is-found .ln-row-name::before{ color:#ff8a65; }
@media (max-width:700px){ .ln-caption{ grid-template-columns:1fr; gap:1.2rem; } .ln-rows li{ grid-template-columns:1fr 70px 48px; font-size:.85rem; } }

/* BIM: imagem maior (corta ligeiramente as margens de cima e de baixo, que são fundo) */
@media (min-width:701px){
  .bim-visual{ padding:0; overflow:hidden; background:#e9ebe8; }
  .bim-frame{ width:min(100cqw, 180cqh); border-radius:0; box-shadow:none; }
}

/* ============ logótipo em vetor: claro sobre o topo escuro, cores originais ao descer ============ */
:root{ color-scheme: light only; }
.brand img{ filter:none !important; height:46px; width:auto; }
.brand .logo-on-light{ display:none; }
.site-header.is-scrolled .brand .logo-on-dark{ display:none; }
.site-header.is-scrolled .brand .logo-on-light{ display:block; }
.site-footer .logo-on-light{ display:none; }
.site-footer .logo-on-dark{ height:54px; width:auto; filter:none; }
@media (max-width:700px){ .brand img{ height:40px; } }

/* ============ topo da página inicial no telemóvel: mais claro e com o símbolo em destaque ============ */
@media (max-width:800px){
  .hero-rede{ background:radial-gradient(ellipse at 50% 28%, #16564E 0%, #0C3A34 55%, #082B26 100%); }
  .hero-rede::after{ background-image:linear-gradient(rgba(107,230,200,.07) 1px, transparent 1px), linear-gradient(90deg, rgba(107,230,200,.07) 1px, transparent 1px); }
  .hero-rede::before{ background:linear-gradient(0deg, rgba(8,43,38,.92) 0%, rgba(8,43,38,.4) 38%, rgba(8,43,38,0) 55%); }
  .hr-logo{ filter:drop-shadow(0 0 24px rgba(107,230,200,.45)) brightness(1.08); }
}

@media (max-width:700px){
  .topo-step{ min-width:0; font-size:.7rem; letter-spacing:-.01em; padding:.6rem .45rem; white-space:nowrap; line-height:1.2; }
}

.lbl-s{ display:none; }
@media (max-width:700px){ .lbl-l{ display:none; } .lbl-s{ display:inline; } }

/* ============ menu: painel de serviços ============ */
.header-inner{ position:relative; }
.nav-dd{ display:flex; align-items:center; }
.nav-dd-top{ display:inline-flex; align-items:center; gap:.35rem; }
.nav-chev{ width:12px; height:12px; fill:none; stroke:currentColor; stroke-width:1.6; stroke-linecap:round; stroke-linejoin:round; transition:transform .25s ease; }
.nav-dd-panel{ position:absolute; top:calc(100% + .6rem); left:50%; width:min(940px, 94vw); transform:translate(-50%, 8px); opacity:0; visibility:hidden; pointer-events:none;
  background:var(--white); border-radius:20px; padding:1.4rem 1.4rem 1rem; box-shadow:0 24px 60px rgba(7,35,31,.18), 0 0 0 1px rgba(11,78,72,.06);
  transition:opacity .22s ease, transform .3s cubic-bezier(.2,.8,.2,1), visibility 0s .3s; z-index:130; }
.nav-dd-panel::before{ content:""; position:absolute; left:0; right:0; top:-1.6rem; height:1.6rem; }   /* ponte para o rato não perder o painel */
.nav-dd.is-open .nav-dd-panel{ opacity:1; visibility:visible; pointer-events:auto; transform:translate(-50%, 0); transition:opacity .22s ease, transform .3s cubic-bezier(.2,.8,.2,1); }
.nav-dd.is-open .nav-chev{ transform:rotate(180deg); }
.nav-dd-grid{ display:grid; grid-template-columns:repeat(3, 1fr); gap:1.2rem; }
.nav-dd-h{ font:600 .78rem var(--font-body); color:var(--forest); margin:0 0 .5rem .6rem; }
.main-nav .nav-dd-panel a{ color:var(--ink); }
.nav-dd-item{ display:flex; gap:.75rem; align-items:flex-start; padding:.6rem; border-radius:12px; transition:background .2s ease; }
.nav-dd-item:hover{ background:#f1f4ef; }
.nav-dd-ic{ flex:0 0 auto; width:36px; height:36px; border-radius:10px; background:var(--sage); display:grid; place-items:center; color:var(--forest-dark); }
.nav-dd-ic svg{ width:20px; height:20px; }
.nav-dd-item b{ display:block; font-size:.92rem; font-weight:600; line-height:1.25; }
.nav-dd-item small{ display:block; font-size:.8rem; color:#5d6964; line-height:1.35; margin-top:.15rem; font-weight:400; }
.main-nav .nav-dd-all{ display:block; margin-top:.8rem; padding:.8rem .6rem 0; border-top:1px solid #eceee9; font-size:.88rem; font-weight:600; color:var(--forest); }
@media (max-width:900px){
  .nav-dd{ flex-direction:column; align-items:stretch; width:100%; }
  .nav-dd-top{ justify-content:space-between; width:100%; }
  .nav-dd-panel{ position:static; width:auto; transform:none; box-shadow:none; padding:0; border-radius:0; background:transparent; display:none; opacity:1; visibility:visible; pointer-events:auto; transition:none; }
  .nav-dd-panel::before{ display:none; }
  .nav-dd.is-open .nav-dd-panel{ display:block; transform:none; margin:.4rem 0 .2rem; }
  .nav-dd-grid{ grid-template-columns:1fr; gap:.6rem; }
  .nav-dd-h{ margin:.5rem 0 .2rem; }
  .nav-dd-item{ padding:.45rem 0; }
  .nav-dd-item small{ display:none; }
  .nav-dd-ic{ width:30px; height:30px; } .nav-dd-ic svg{ width:17px; height:17px; }
  .main-nav .nav-dd-all{ padding:.6rem 0 0; margin-top:.4rem; }
}

/* ============ página Serviços ============ */
.page-hero-lede{ color:rgba(255,255,255,.86); font-size:1.12rem; max-width:40em; margin-top:1rem; line-height:1.55; }
.svc-chain{ padding:4.5rem 0 2rem; }
.chain{ list-style:none; margin:2rem 0 0; padding:0; display:grid; grid-template-columns:repeat(6, 1fr); gap:0; position:relative; }
.chain::before{ content:""; position:absolute; left:calc(100% / 12); right:calc(100% / 12); top:19px; height:2px; background:linear-gradient(90deg, var(--forest), var(--seafoam)); }
.chain-step{ position:relative; text-align:center; padding:0 .5rem; }
.chain-n{ position:relative; z-index:1; display:inline-grid; place-items:center; width:40px; height:40px; border-radius:50%; background:var(--forest); color:#fff; font:600 .95rem var(--font-mono); box-shadow:0 0 0 6px var(--paper); }
.chain-stage{ font-weight:600; margin:.8rem 0 .4rem; }
.chain-step a{ display:block; font-size:.88rem; color:var(--forest); line-height:1.35; margin-top:.2rem; }
.chain-step a:hover{ text-decoration:underline; }
.svc-group{ padding:2.4rem 0 1rem; }
.svc-group:last-of-type{ padding-bottom:4.5rem; }
.svc-group-h{ font-size:1.35rem; margin-bottom:1.1rem; padding-bottom:.6rem; border-bottom:1px solid #e3e7e0; }
.svc-group-grid{ display:grid; grid-template-columns:repeat(auto-fill, minmax(290px, 1fr)); gap:1.1rem; }
.svc-card{ display:flex; flex-direction:column; gap:.55rem; background:var(--white); border-radius:18px; padding:1.4rem 1.4rem 1.2rem; box-shadow:0 1px 2px rgba(11,78,72,.06), 0 0 0 1px rgba(11,78,72,.06); transition:transform .45s cubic-bezier(.2,.8,.2,1), box-shadow .45s cubic-bezier(.2,.8,.2,1); color:var(--ink); }
.svc-card:hover{ transform:translateY(-3px); box-shadow:0 18px 40px rgba(11,78,72,.12), 0 0 0 1px rgba(11,78,72,.05); }
.svc-card h3{ font-size:1.12rem; }
.svc-card p{ font-size:.93rem; color:#4a5550; }
.svc-card .svc-card-del{ margin-top:auto; padding-top:.6rem; border-top:1px solid #eef0ea; font-size:.88rem; color:var(--ink); }
.svc-card-del span{ display:block; font-size:.74rem; font-weight:600; color:var(--forest); margin-bottom:.15rem; }
.svc-card .service-tile-icon svg{ width:24px; height:24px; }
.cta-final p{ color:rgba(255,255,255,.85); margin:-.4rem 0 1.4rem; }
@media (max-width:900px){
  .chain{ grid-template-columns:1fr; gap:1.2rem; }
  .chain::before{ left:19px; right:auto; top:20px; bottom:20px; width:2px; height:auto; background:linear-gradient(180deg, var(--forest), var(--seafoam)); }
  .chain-step{ text-align:left; display:grid; grid-template-columns:40px 1fr; column-gap:1rem; padding:0; }
  .chain-n{ grid-row:1 / span 3; }
  .chain-stage{ margin:.5rem 0 .1rem; }
}

/* ============ Trabalhos realizados ============ */
.works-section{ padding:4rem 0 5.5rem; }
.work-filter{ display:flex; flex-wrap:wrap; gap:.5rem; margin-bottom:1.8rem; }
.work-filter button{ font:600 .85rem var(--font-body); color:var(--ink); background:var(--white); border:1px solid #dfe3dc; border-radius:980px; padding:.5rem 1rem; cursor:pointer; }
.work-filter button[aria-pressed="true"]{ background:var(--forest); color:#fff; border-color:var(--forest); }
.works-grid{ display:grid; grid-template-columns:repeat(auto-fill, minmax(320px, 1fr)); gap:1.4rem; }
.work-card{ display:flex; flex-direction:column; background:var(--white); border-radius:18px; overflow:hidden; color:var(--ink); box-shadow:0 1px 2px rgba(11,78,72,.06), 0 0 0 1px rgba(11,78,72,.06); transition:transform .45s cubic-bezier(.2,.8,.2,1), box-shadow .45s cubic-bezier(.2,.8,.2,1); }
.work-card[hidden]{ display:none; }
.work-card:hover{ transform:translateY(-3px); box-shadow:0 18px 40px rgba(11,78,72,.12), 0 0 0 1px rgba(11,78,72,.05); }
.work-card-media{ aspect-ratio:16/10; background:#e9ece6; overflow:hidden; }
.work-card-media img{ width:100%; height:100%; object-fit:cover; transition:transform .8s cubic-bezier(.2,.8,.2,1); }
.work-card:hover .work-card-media img{ transform:scale(1.04); }
.work-card-body{ padding:1.2rem 1.3rem 1.3rem; display:flex; flex-direction:column; gap:.5rem; flex:1; }
.work-card-body h3{ font-size:1.15rem; line-height:1.3; }
.work-card-body p{ font-size:.92rem; color:#4a5550; }
.work-card-body .tile-arrow{ margin-top:auto; padding-top:.3rem; }
.work-meta{ font:500 .8rem var(--font-mono) !important; color:var(--aqua) !important; }
.work-tags{ display:flex; flex-wrap:wrap; gap:.35rem; }
.work-tags span, .work-tags a{ font-size:.72rem; font-weight:600; color:var(--forest-dark); background:#e7efe9; padding:.2rem .55rem; border-radius:980px; }
.work-tags-lg{ margin-bottom:1.6rem; }
.work-tags-lg a{ font-size:.82rem; padding:.35rem .8rem; }
.work-tags-lg a:hover{ background:var(--sage); }
.work-gallery{ display:grid; grid-template-columns:repeat(auto-fill, minmax(220px, 1fr)); gap:.8rem; margin:2rem 0; }
.work-gallery img{ width:100%; aspect-ratio:4/3; object-fit:cover; border-radius:12px; display:block; }
.work-actions{ display:flex; flex-wrap:wrap; gap:1.5rem; margin-top:1.5rem; }
.project-links{ display:flex; flex-wrap:wrap; gap:1.4rem; }
@media (max-width:700px){ .works-grid{ grid-template-columns:1fr; } .works-section{ padding-top:2.6rem; } }

/* ============ Estudos: fluxograma da nova ligação ============ */
.decisao-grid{ grid-template-columns:.8fr 1.4fr; align-items:center; }
.decisao-chart{ background:var(--white); border-radius:20px; padding:1.4rem; box-shadow:0 1px 2px rgba(11,78,72,.06), 0 0 0 1px rgba(11,78,72,.06); }
.fc{ width:100%; height:auto; display:block; font-family:var(--font-body); }
.fc-node rect{ fill:#fff; stroke:#d7ddd6; stroke-width:1.5; }
.fc-t{ font-size:17px; font-weight:600; fill:var(--ink); }
.fc-s{ font-size:13.5px; fill:#5d6964; }
.fc-start rect{ fill:var(--forest-dark); stroke:none; }
.fc-start .fc-t{ fill:#fff; }
.fc-q rect{ fill:#f4f7f2; stroke:var(--forest); stroke-width:1.5; stroke-dasharray:5 4; }
.fc-qi{ fill:var(--forest); }
.fc-qt{ fill:#fff; font-size:15px; font-weight:700; }
.fc-yes rect{ fill:#e8f5ec; stroke:#9fd4ae; }
.fc-yes .fc-t{ fill:#1e6b33; }
.fc-new rect{ fill:#fff1e3; stroke:#f0c395; }
.fc-new .fc-t{ fill:#8a4b12; }
.fc-link{ fill:none; stroke:#9aa7a2; stroke-width:1.8; }
#fcArrow path{ fill:#9aa7a2; }
.fc-lbl rect{ fill:#fff; stroke:#d7ddd6; }
.fc-lbl text{ font:600 12px var(--font-mono); fill:var(--ink); }
.fc-lbl-sim rect{ fill:#e8f5ec; stroke:#9fd4ae; } .fc-lbl-sim text{ fill:#1e6b33; }
.fc-lbl-nao rect{ fill:#fff1e3; stroke:#f0c395; } .fc-lbl-nao text{ fill:#8a4b12; }
/* desenha-se quando aparece no ecrã (a classe is-drawn é posta pelo main.js) */
.fc-node, .fc-lbl{ opacity:0; transform:translateY(6px); transition:opacity .45s ease, transform .45s cubic-bezier(.2,.8,.2,1); transition-delay:calc(var(--d) * 130ms); }
.fc-link{ stroke-dasharray:120; stroke-dashoffset:120; transition:stroke-dashoffset .5s ease; transition-delay:calc(var(--d) * 130ms); }
.decisao-chart.is-drawn .fc-node, .decisao-chart.is-drawn .fc-lbl{ opacity:1; transform:none; }
.decisao-chart.is-drawn .fc-link{ stroke-dashoffset:0; }
.decisao-flow{ display:none; }
@media (max-width:760px){
  .decisao-chart{ display:none; }
  .decisao-flow{ display:flex; }
  .decisao-grid{ grid-template-columns:1fr; }
}
@media (prefers-reduced-motion: reduce){ .fc-node, .fc-lbl, .fc-link{ transition:none; opacity:1; transform:none; stroke-dashoffset:0; } }

/* ============ formulário: telefone com indicativo ============ */
.tel-field{ display:grid; grid-template-columns:minmax(0, 190px) 1fr; gap:.5rem; }
.tel-field select{ font:inherit; font-size:.95rem; padding:.75rem .6rem; border:1px solid #d9ded7; border-radius:10px; background:#fff; color:var(--ink); }
.field-hint{ display:block; font-size:.8rem; color:#6b7672; margin-top:.35rem; }
.field-hint.is-err{ color:#c62828; font-weight:600; }
@media (max-width:520px){ .tel-field{ grid-template-columns:1fr; } }

/* ============ parceiros: faixa a deslizar ============ */
.partners-marquee{ overflow:hidden; -webkit-mask-image:linear-gradient(90deg, transparent, #000 10%, #000 90%, transparent); mask-image:linear-gradient(90deg, transparent, #000 10%, #000 90%, transparent); }
.partners-track{ display:flex; align-items:center; gap:4rem; width:max-content; animation:partnersScroll 28s linear infinite; padding:.5rem 0; }
.partners-track .partner-logo{ height:44px; width:auto; filter:grayscale(1); opacity:.7; transition:filter .35s ease, opacity .35s ease; }
.partners-track .partner-logo:hover{ filter:none; opacity:1; }
@keyframes partnersScroll{ to{ transform:translateX(-50%); } }
@media (prefers-reduced-motion: reduce){ .partners-track{ animation-duration:60s; } }
@media (max-width:700px){ .partners-track{ gap:2.6rem; animation-duration:22s; } .partners-track .partner-logo{ height:36px; } }

/* temas da época: a faixa é uma mensagem, não um link */
.hr-news-theme{ cursor:default; }
.hero-rede[data-theme="natal"] .hr-news b{ background:#FF5A5A; color:#fff; }
.hero-rede[data-theme="seguranca"] .hr-news b{ background:#FFD400; color:#1a1a1a; }
.hero-rede[data-theme="natal"] .hr-logo{ filter:drop-shadow(0 0 26px rgba(255,212,0,.35)); }
.hr-news-theme{ border-radius:18px; align-items:flex-start; } .hr-news-theme span{ white-space:normal; line-height:1.4; }
