/* Contraste Autónomo — estilos */
:root{
  --ink:#10121A; --ink-2:#1A1D26; --ink-3:#262A35;
  --orange:#F46C00; --orange-hi:#FF7F1A; --amber:#D68A00;
  --text:#1E2029; --mute:#5D6270; --line:#E4E5E9; --soft:#F4F4F6; --white:#FFFFFF;
  --head:"Montserrat", "Helvetica Neue", Arial, sans-serif;
  --body:"Archivo", "Helvetica Neue", Arial, sans-serif;
  --wrap:1180px; --pad:clamp(18px,4vw,32px);
  box-sizing:border-box;
  padding-bottom:env(safe-area-inset-bottom,0px);
}
@media (prefers-color-scheme: dark){ :root:not([data-theme="light"]){ --soft:#F4F4F6; --white:#FFFFFF; } }
:root[data-theme="dark"]{ --soft:#F4F4F6; --white:#FFFFFF; }
*,*::before,*::after{box-sizing:inherit}
html{scroll-behavior:smooth; scroll-padding-top:calc(env(safe-area-inset-top,0px) + 80px)}
body{margin:0; background:var(--white); color:var(--text); font-family:var(--body); font-size:16px; line-height:1.6; -webkit-font-smoothing:antialiased}
img{max-width:100%; display:block}
a{color:inherit}
h1,h2,h3,h4{font-family:var(--head); margin:0; line-height:1.15; color:inherit}
:focus-visible{outline:3px solid var(--orange); outline-offset:3px; border-radius:3px}
.wrap{max-width:var(--wrap); margin:0 auto; padding:0 var(--pad)}
.tbc{background:linear-gradient(transparent 60%, rgba(214,138,0,.32) 60%); padding:0 2px}

/* Etiqueta de secção com marcador (como na referência) */
.label{display:inline-block; font-family:var(--head); font-weight:800; font-size:15px; text-transform:uppercase; letter-spacing:.03em; padding:0 4px; background:linear-gradient(transparent 48%, var(--orange) 48%, var(--orange) 92%, transparent 92%)}
.sec-head{text-align:center; max-width:760px; margin:0 auto}
.sec-head h2{font-size:clamp(26px,3.2vw,36px); font-weight:800; margin-top:10px}
.sec-head p{color:var(--mute); margin:12px auto 0; max-width:58ch}
section{padding:clamp(64px,8vw,104px) 0}

/* Botões */
.btn{display:inline-flex; align-items:center; justify-content:center; gap:10px; min-height:48px; padding:0 24px; border-radius:4px; font-family:var(--head); font-weight:800; font-size:14px; text-transform:uppercase; letter-spacing:.03em; text-decoration:none; border:2px solid var(--orange); cursor:pointer; transition:background .15s, color .15s, border-color .15s}
.btn svg{width:18px; height:18px; flex:none}
.btn-fill{background:var(--orange); color:var(--ink)}
.btn-fill:hover{background:var(--orange-hi); border-color:var(--orange-hi)}
.btn-line{background:rgba(16,18,26,.35); color:var(--white)}
.btn-line:hover{background:var(--orange); color:var(--ink)}
.btn-dark{background:var(--ink); border-color:var(--ink); color:var(--white)}
.btn-dark:hover{background:var(--ink-3); border-color:var(--ink-3)}

/* Cabeçalho */
.header{position:absolute; top:0; left:0; right:0; z-index:40; color:var(--white); padding-top:env(safe-area-inset-top,0px)}
.topbar{border-bottom:1px solid rgba(255,255,255,.12); font-size:14px}
.topbar .wrap{display:flex; align-items:center; justify-content:space-between; gap:20px; height:44px}
.topbar a{text-decoration:none}
.tb-item{display:flex; align-items:center; gap:8px; color:#E6E7EB}
.tb-item svg{width:16px; height:16px; color:var(--orange); flex:none}
.tb-social{display:flex; gap:14px}
.tb-social svg{width:18px; height:18px; color:var(--white)}
.nav .wrap{display:flex; align-items:center; justify-content:space-between; gap:24px; height:84px}
.brand{display:flex; align-items:center; gap:14px; text-decoration:none}
.brand img{width:44px}
.brand-txt{font-family:var(--head); font-weight:900; font-size:17px; line-height:1}
.brand-txt b{display:block; color:var(--orange); font-weight:900}
.brand-sub{font-size:12px; line-height:1.35; color:#D8DAE0; border-left:1px solid rgba(255,255,255,.25); padding-left:14px}
.menu{display:flex; align-items:center; gap:32px; list-style:none; margin:0; padding:0}
.menu a{font-family:var(--head); font-weight:700; font-size:14px; text-decoration:none; padding:6px 0; border-bottom:2px solid transparent}
.menu a:hover,.menu a.on{border-color:var(--orange)}
.menu .btn{border-bottom:2px solid var(--orange); min-height:42px; padding:0 18px; font-size:13px}
.menu-btn{display:none; background:none; border:0; color:var(--white); width:44px; height:44px; padding:10px; cursor:pointer}
.menu-btn svg{width:24px; height:24px}
.nav.stuck{position:fixed; top:0; left:0; right:0; background:rgba(16,18,26,.96); backdrop-filter:blur(8px); -webkit-backdrop-filter:blur(8px); box-shadow:0 6px 20px rgba(0,0,0,.25); padding-top:env(safe-area-inset-top,0px); animation:drop .25s ease}
.nav.stuck .wrap{height:70px}
@keyframes drop{from{transform:translateY(-100%)}to{transform:none}}

/* Hero */
.hero{position:relative; min-height:min(760px,100vh); display:flex; align-items:center; color:var(--white); background:var(--ink); overflow:hidden; padding:calc(170px + env(safe-area-inset-top,0px)) 0 120px}
.hero-bg{position:absolute; inset:0; width:100%; height:100%; object-fit:cover}
.hero::after{content:""; position:absolute; inset:0; background:radial-gradient(ellipse 62% 58% at 50% 46%, rgba(16,18,26,.6) 0%, rgba(16,18,26,0) 72%), linear-gradient(180deg, rgba(16,18,26,.85) 0%, rgba(16,18,26,.6) 45%, rgba(16,18,26,.88) 100%)}
.hero .wrap{position:relative; z-index:1; text-align:center; width:100%}
.hero h1{font-size:clamp(34px,4.6vw,56px); font-weight:900; line-height:1.04; letter-spacing:-.02em; margin:0 auto; text-wrap:balance; text-shadow:0 2px 24px rgba(0,0,0,.4)}
.hero h1 span{display:block; color:var(--orange); font-size:.46em; font-weight:700; letter-spacing:-.005em; line-height:1.2; margin-top:.55em}
.hero p.sub{font-size:clamp(16px,1.4vw,18px); line-height:1.7; max-width:50ch; margin:24px auto 0; color:#E9EBEF; text-wrap:balance}
.hero-cta{display:flex; flex-wrap:wrap; justify-content:center; gap:14px; margin-top:32px}
.trustbar{display:inline-flex; flex-wrap:wrap; justify-content:center; gap:10px 26px; margin:46px auto 0; padding:14px 26px; background:rgba(16,18,26,.7); border:1px solid rgba(255,255,255,.1); border-radius:6px; font-size:15px; font-weight:600}
.trustbar span{display:flex; align-items:center; gap:9px}
.trustbar span::before{content:""; width:9px; height:9px; border-radius:50%; background:var(--orange)}
.badge{position:absolute; left:0; bottom:0; z-index:2; background:var(--white); color:var(--ink); padding:12px 20px 12px var(--pad); border-top-right-radius:6px; font-size:13px; line-height:1.3; display:flex; align-items:center; gap:12px}
.badge svg{width:30px; height:30px; color:var(--orange); flex:none}
.badge b{display:block; font-family:var(--head); font-size:14px}

/* Serviços (carrossel de cartões) */
.carousel{position:relative; margin-top:44px}
.track{display:grid; grid-auto-flow:column; grid-auto-columns:calc((100% - 48px)/3); gap:24px; overflow-x:auto; scroll-snap-type:x mandatory; scrollbar-width:none; padding:6px 4px 24px}
.track::-webkit-scrollbar{display:none}
.card{scroll-snap-align:start; background:var(--soft); border-radius:4px; overflow:hidden; display:flex; flex-direction:column; box-shadow:0 8px 22px -12px rgba(16,18,26,.25)}
.card .img{position:relative; aspect-ratio:16/10; background:var(--ink-2)}
.card .img img{position:absolute; inset:0; width:100%; height:100%; object-fit:cover}
.card-body{padding:24px 24px 28px; text-align:center; display:flex; flex-direction:column; align-items:center; flex:1}
.card h3{font-size:22px; font-weight:800}
.card p{color:var(--mute); font-size:15px; margin:12px 0 0}
.checks{list-style:none; margin:14px 0 22px; padding:0; font-size:14px; font-weight:600; text-align:left}
.checks li{display:flex; align-items:center; gap:8px; padding:2px 0}
.checks svg{width:16px; height:16px; color:var(--orange); flex:none}
.card .btn{margin-top:auto; min-height:42px; font-size:13px}
.arrow{position:absolute; top:34%; z-index:2; width:44px; height:52px; border:0; border-radius:4px; background:var(--ink); color:var(--white); display:grid; place-items:center; cursor:pointer}
.arrow:hover{background:var(--orange); color:var(--ink)}
.arrow svg{width:22px; height:22px}
.arrow.prev{left:-22px} .arrow.next{right:-22px}
.arrow:disabled{opacity:.35; cursor:default; background:var(--ink)}
.counter{text-align:center; font-size:14px; color:var(--mute); margin-top:4px}

/* Galeria */
.gallery{display:grid; grid-template-columns:repeat(4,1fr); gap:14px; margin-top:44px}
.gallery figure{position:relative; margin:0; aspect-ratio:4/3; border:3px solid var(--orange); border-radius:4px; overflow:hidden; background:var(--ink-2)}
.gallery img{position:absolute; inset:0; width:100%; height:100%; object-fit:cover; transition:transform .4s}
.gallery figure:hover img{transform:scale(1.05)}
.gallery figcaption{position:absolute; left:0; right:0; bottom:0; padding:28px 12px 10px; font-size:13px; font-weight:600; color:var(--white); background:linear-gradient(transparent, rgba(16,18,26,.88)); opacity:0; transition:opacity .2s}
.gallery figure:hover figcaption,.gallery figure:focus-within figcaption{opacity:1}
.gallery-note{text-align:center; color:var(--mute); font-size:14px; margin:22px 0 0}

/* Porquê escolher (cartão escuro) */
.why{position:relative; padding-top:clamp(40px,5vw,64px)}
.why-card{position:relative; border-radius:4px; overflow:hidden; color:var(--white); background:var(--ink); padding:clamp(56px,6vw,76px) clamp(24px,5vw,64px) clamp(40px,5vw,60px)}
.why-card > img{position:absolute; inset:0; width:100%; height:100%; object-fit:cover}
.why-card::after{content:""; position:absolute; inset:0; background:linear-gradient(90deg, rgba(16,18,26,.96) 0%, rgba(16,18,26,.88) 55%, rgba(16,18,26,.6) 100%)}
.why-in{position:relative; z-index:1; max-width:640px}
.why-flag{position:absolute; z-index:2; top:0; left:-36px; width:270px; height:68px; background:var(--orange); transform:skewX(-32deg); transform-origin:top left}
.why-tag{position:absolute; z-index:3; top:18px; left:clamp(24px,5vw,64px); background:var(--ink); color:var(--white); font-family:var(--head); font-weight:800; font-size:13px; text-transform:uppercase; padding:6px 12px; letter-spacing:.03em}
.why h2{font-size:clamp(26px,3vw,34px); font-weight:800}
.why-grid{display:grid; grid-template-columns:repeat(3,1fr); gap:30px 24px; margin-top:36px}
.why-item{text-align:center}
.why-item svg{width:34px; height:34px; color:var(--orange); margin:0 auto 10px}
.why-item h3{font-size:15px; font-weight:700; line-height:1.35}

/* Como funciona */
.process{display:grid; grid-template-columns:1fr 3fr; gap:32px; align-items:start}
.process-intro h2{font-size:clamp(24px,2.6vw,30px); font-weight:800; margin:12px 0 22px}
.steps{display:grid; grid-template-columns:repeat(3,1fr); gap:22px}
.step{position:relative; background:var(--soft); border-left:5px solid var(--orange); padding:28px 22px 26px; border-radius:2px}
.step .num{position:absolute; top:0; right:0; background:var(--orange); color:var(--ink); font-family:var(--head); font-weight:800; font-size:12px; padding:4px 10px}
.step svg{width:30px; height:30px; color:var(--ink)}
.step h3{font-size:18px; font-weight:800; margin:14px 0 8px}
.step p{margin:0; font-size:15px; color:var(--mute)}

/* Avaliações */
.reviews{background:var(--ink); color:var(--white); padding:0}
.rev-top{padding:56px 0 40px; border-bottom:1px solid rgba(255,255,255,.08)}
.rev-top .wrap{display:flex; flex-wrap:wrap; justify-content:space-between; align-items:center; gap:20px}
.rev-top h2{font-size:clamp(24px,2.8vw,32px); font-weight:800; max-width:24ch}
.rev-body{background:var(--white); color:var(--text); padding:48px 0 64px}
.rev-body .wrap{display:grid; grid-template-columns:220px 1fr; gap:36px; align-items:center}
.g-sum{text-align:center}
.g-sum b{display:block; font-family:var(--head); font-weight:900; font-size:22px; letter-spacing:.04em}
.stars{display:flex; justify-content:center; gap:3px; color:#F5B400; margin:6px 0}
.stars svg{width:20px; height:20px}
.g-sum small{display:block; font-size:13px; color:var(--mute)}
.g-logo{font-family:var(--head); font-weight:800; font-size:26px; margin-top:8px; letter-spacing:-.02em}
.g-logo i{font-style:normal}
.rev-grid{display:grid; grid-template-columns:repeat(3,1fr); gap:20px}
.rev{border:1px solid var(--line); border-radius:6px; padding:20px; box-shadow:0 6px 18px -12px rgba(16,18,26,.3); margin:0}
.rev-head{display:flex; align-items:center; gap:12px}
.avatar{width:42px; height:42px; border-radius:50%; display:grid; place-items:center; color:var(--white); font-family:var(--head); font-weight:800}
.rev-head b{display:block; font-size:15px}
.rev-head small{color:var(--mute); font-size:13px}
.rev .stars{justify-content:flex-start; margin:12px 0 8px}
.rev .stars svg{width:16px; height:16px}
.rev blockquote{margin:0; font-size:15px; color:var(--text)}
.rev a{display:inline-block; margin-top:10px; font-size:14px; color:#1A63D8; text-decoration:none}

/* Sobre nós */
.about{display:grid; grid-template-columns:1.05fr .95fr; gap:clamp(36px,6vw,80px); align-items:center}
.about h2{font-size:clamp(28px,3.2vw,38px); font-weight:800; margin:12px 0 20px}
.about p{margin:0 0 14px; color:var(--mute); max-width:58ch}
.about strong{color:var(--text)}
.values{list-style:none; margin:22px 0 28px; padding:0; display:grid; gap:12px}
.values li{display:grid; grid-template-columns:28px 1fr; gap:12px; align-items:start}
.values svg{width:24px; height:24px; color:var(--orange); margin-top:2px}
.values b{font-family:var(--head)}
.about-photo{position:relative; margin:0}
.about-photo::before{content:""; position:absolute; inset:24px -18px -18px 24px; background:var(--orange); border-radius:4px}
.about-photo .ph{position:relative; aspect-ratio:4/5; border-radius:4px; overflow:hidden; background:var(--ink-2)}
.about-photo img{position:absolute; inset:0; width:100%; height:100%; object-fit:cover}
.about-photo figcaption{position:absolute; left:-1px; bottom:28px; background:var(--ink); color:var(--white); padding:14px 20px; font-size:13px; line-height:1.35; border-left:5px solid var(--orange)}
.about-photo figcaption b{display:block; font-family:var(--head); font-size:15px}

/* Contacto */
.contact-card{position:relative; display:grid; grid-template-columns:1fr 1.1fr; background:var(--ink); color:var(--white); border-radius:4px; overflow:hidden}
.contact-card .tag{position:absolute; top:0; right:0; z-index:2; background:var(--orange); color:var(--ink); font-family:var(--head); font-weight:800; font-size:13px; text-transform:uppercase; padding:6px 14px; letter-spacing:.03em}
.map{position:relative; min-height:460px; background:var(--ink-2); margin:28px 0 28px 28px; border-radius:2px; overflow:hidden}
.map iframe{position:absolute; inset:0; width:100%; height:100%; border:0}
.form{padding:clamp(28px,4vw,48px)}
.form h2{font-size:clamp(24px,2.6vw,30px); font-weight:800; text-align:center}
.form > p{text-align:center; color:#C7CAD3; font-size:15px; margin:12px auto 26px; max-width:52ch}
.fgrid{display:grid; grid-template-columns:1fr 1fr; gap:14px}
.fgrid .full{grid-column:1/-1}
.form label{position:absolute; width:1px; height:1px; overflow:hidden; clip:rect(0 0 0 0)}
.form input,.form select,.form textarea{width:100%; font:inherit; font-size:15px; color:var(--text); background:var(--white); border:1px solid transparent; border-radius:2px; padding:12px 14px; min-height:46px}
.form textarea{min-height:110px; resize:vertical}
.form select{appearance:none; background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%2310121A' stroke-width='2.4'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E"); background-repeat:no-repeat; background-position:right 12px center; background-size:16px}
.form input:focus,.form select:focus,.form textarea:focus{outline:none; border-color:var(--orange); box-shadow:0 0 0 3px rgba(244,108,0,.35)}
.form .btn{width:100%; margin-top:16px}
.form small{display:block; text-align:center; color:#9EA3AF; font-size:13px; margin-top:12px}
.status{color:var(--orange); text-align:center; font-size:14px; margin:12px 0 0}
.status:empty{display:none}

/* Faixa de contactos */
.strip{position:relative; z-index:2; margin-bottom:-46px}
.strip-in{display:grid; grid-template-columns:repeat(3,1fr); border-radius:4px; overflow:hidden; box-shadow:0 18px 40px -18px rgba(16,18,26,.5)}
.strip a,.strip div.s{display:flex; align-items:center; gap:16px; padding:22px 28px; background:var(--ink-2); color:var(--white); text-decoration:none}
.strip .hl{background:var(--orange); color:var(--ink)}
.strip .ic{width:46px; height:46px; border-radius:50%; background:var(--orange); color:var(--ink); display:grid; place-items:center; flex:none}
.strip .hl .ic{background:var(--ink); color:var(--orange)}
.strip .ic svg{width:22px; height:22px}
.strip span{font-size:14px; line-height:1.35}
.strip b{display:block; font-family:var(--head); font-size:16px}

/* Rodapé */
footer{position:relative; color:#C9CCD4; background:var(--ink); padding:110px 0 0; overflow:hidden}
footer > img{position:absolute; inset:0; width:100%; height:100%; object-fit:cover; opacity:.16}
footer .wrap{position:relative}
.fcols{display:grid; grid-template-columns:1.3fr 1fr 1.2fr 1fr; gap:36px; text-align:center}
.fcols img{width:190px; margin:0 auto 12px}
.fcols h4{color:var(--white); font-size:17px; font-weight:800; margin-bottom:16px}
.fcols ul{list-style:none; margin:0; padding:0; font-size:15px; line-height:2}
.fcols a{text-decoration:none}
.fcols a:hover{color:var(--orange)}
.fsocial{display:flex; justify-content:center; gap:14px; margin-bottom:10px}
.fsocial svg{width:22px; height:22px; color:var(--white)}
.legal{margin-top:48px; padding:20px 0 26px; border-top:1px solid rgba(255,255,255,.1); display:flex; flex-wrap:wrap; justify-content:space-between; gap:10px 24px; font-size:13px; color:#9EA3AF}
.legal nav{display:flex; flex-wrap:wrap; gap:6px 20px}
.legal a{text-decoration:none}
.legal a:hover{color:var(--white)}

.wa{position:fixed; right:18px; bottom:calc(18px + env(safe-area-inset-bottom,0px)); z-index:60; width:58px; height:58px; border-radius:50%; background:#25D366; color:#fff; display:grid; place-items:center; box-shadow:0 10px 24px rgba(0,0,0,.35)}
.wa svg{width:30px; height:30px}

/* Responsivo */
@media (max-width:1024px){
  .track{grid-auto-columns:calc((100% - 24px)/2)}
  .gallery{grid-template-columns:repeat(3,1fr)}
  .process{grid-template-columns:1fr}
  .rev-body .wrap{grid-template-columns:1fr}
  .brand-sub{display:none}
}
@media (max-width:900px){
  .topbar .tb-hide{display:none}
  .menu{position:absolute; top:100%; left:0; right:0; flex-direction:column; align-items:stretch; gap:0; background:var(--ink); padding:8px var(--pad) 20px; display:none; border-top:1px solid rgba(255,255,255,.08)}
  .menu.open{display:flex}
  .menu li a{display:block; padding:14px 0; border-bottom:1px solid rgba(255,255,255,.08); font-size:16px}
  .menu .btn{margin-top:14px; width:100%}
  .nav .wrap{position:relative}
  .menu-btn{display:block}
  .about,.contact-card{grid-template-columns:1fr}
  .map{margin:0; min-height:280px; border-radius:0}
  .steps,.rev-grid{grid-template-columns:1fr}
  .strip-in{grid-template-columns:1fr}
  .fcols{grid-template-columns:1fr 1fr}
  .why-grid{grid-template-columns:repeat(2,1fr)}
  .about-photo{max-width:520px}
}
@media (max-width:640px){
  .track{grid-auto-columns:86%}
  .arrow{display:none}
  .gallery{grid-template-columns:repeat(2,1fr); gap:10px}
  .gallery figcaption{opacity:1}
  .fgrid{grid-template-columns:1fr}
  .fcols{grid-template-columns:1fr}
  .hero-cta .btn{width:100%}
  .trustbar{display:grid; grid-template-columns:1fr 1fr; text-align:left; font-size:14px; padding:14px 18px}
  .badge{position:relative; margin-top:0; border-radius:0; width:100%}
  .hero{padding-bottom:70px; flex-direction:column}
  .hero h1 span{font-size:.6em; margin-top:.45em}
  .hero p.sub{font-size:16px}
  .topbar .tb-mail{display:none}
}
@media (prefers-reduced-motion:reduce){ html{scroll-behavior:auto} *{transition:none!important; animation:none!important} }

/* Páginas simples (404 e Política de Privacidade) */
.page-top{background:var(--ink); color:var(--white); padding:22px 0}
.page-top .wrap{display:flex; align-items:center; justify-content:space-between; gap:20px}
.page-top .brand img{width:40px}
.page{max-width:760px; margin:0 auto; padding:clamp(48px,7vw,88px) var(--pad)}
.page h1{font-size:clamp(28px,3.4vw,40px); font-weight:800; margin:12px 0 18px}
.page h2{font-size:20px; font-weight:800; margin:34px 0 10px}
.page p,.page li{color:var(--mute)}
.page ul{padding-left:20px}
.page a{color:var(--orange); font-weight:600}
.page .btn{color:var(--ink)}
.page-404{text-align:center; min-height:60vh; display:flex; flex-direction:column; justify-content:center; align-items:center}
.page-404 .big{font-family:var(--head); font-weight:900; font-size:clamp(80px,14vw,150px); line-height:1; color:var(--orange)}
.page-foot{background:var(--ink); color:#9EA3AF; font-size:13px; padding:22px 0; text-align:center}
