/* Falcões de Alverca — site v4 (ronda 4 aprovada + estratégia comercial de 30 out 2026)
   Sistema visual tirado das viaturas: asfalto, branco da cabine, cinza da lona, vermelho da faixa, amarelo das letras.
   Regras: um nome em Serpentine, uma frase em Archivo; maiúsculas só no Serpentine; números só no Percurso e nos passos da cotação;
   um momento animado ao abrir; o resto responde ao toque. */
:root{
  --red:#E30613; --red-d:#B5050F; --yel:#FFE800;
  --asf:#262827; --asf2:#2F3231; --asf3:#3A3C3B; --sombra:#6D6E6B; --lona:#A3A6A2; --branco:#EEF1F0; --white:#FFFFFF;
  --tx:#262827; --tx2:#4E504F; --txd:#D9DCDA; --txd2:#C9CCCA;
  --gl:max(20px,env(safe-area-inset-left,0px)); --gr:max(20px,env(safe-area-inset-right,0px));
  color-scheme:dark;
}
@font-face{font-family:"Archivo";font-style:normal;font-weight:100 900;font-stretch:62% 125%;font-display:swap;src:url(../fonts/archivo-wdth.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+20AC,U+2122,U+2212}
@font-face{font-family:"Archivo";font-style:normal;font-weight:100 900;font-stretch:62% 125%;font-display:swap;src:url(../fonts/archivo-wdth-ext.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0}
@font-face{font-family:"Serpentine Stand-in";font-style:italic;font-weight:800;font-display:swap;src:url(../fonts/exo2-800i.woff2) format("woff2");unicode-range:U+0000-00FF,U+0152-0153,U+2000-206F}
@font-face{font-family:"Serpentine Stand-in";font-style:italic;font-weight:800;font-display:swap;src:url(../fonts/exo2-800i-ext.woff2) format("woff2");unicode-range:U+0100-02BA,U+1E00-1EFF}

*,*::before,*::after{box-sizing:border-box}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}
[hidden]{display:none!important}
body{margin:0;background:var(--asf);color:var(--white);font-family:Archivo,"Helvetica Neue",Arial,sans-serif;font-size:17px;line-height:1.55;-webkit-font-smoothing:antialiased}
img,svg{max-width:100%;display:block}
img{height:auto}   /* largura reduzida pelo ecrã: a altura acompanha (o logótipo do rodapé esticava) */
a{color:inherit}
p,ul,ol,dl,dd,figure{margin:0}
ul,ol{padding:0;list-style:none}
h1,h2,h3{margin:0;line-height:1.1;font-weight:800;text-wrap:balance}
button,input,select,textarea{font:inherit;color:inherit}
button{background:none;border:0;cursor:pointer;padding:0}
:focus-visible{outline:3px solid var(--yel);outline-offset:3px}
.light :focus-visible,.white :focus-visible,.form :focus-visible{outline-color:var(--red)}
.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.serp{font-family:"Serpentine Stand-in","Exo 2",Impact,sans-serif;font-style:italic;font-weight:800;text-transform:uppercase;letter-spacing:.005em;line-height:.95}
.c{max-width:1360px;margin:0 auto;padding-left:var(--gl);padding-right:var(--gr)}
.sec{padding-block:clamp(64px,8vw,112px)}
.dark{background:var(--asf);color:var(--white)}
.coal{background:var(--asf2);color:var(--white)}
.light{background:var(--branco);color:var(--tx)}
.red{background:var(--red);color:var(--white)}
.white{background:var(--white);color:var(--tx)}
.white .sh .sub{color:var(--tx2)}
.white .note{color:var(--tx2)}
sup{font-size:.6em;color:var(--yel);vertical-align:super;line-height:0;font-weight:700}
.light sup,.white sup,.form sup{color:var(--red)}
.note{font-size:13.5px;color:var(--txd2);max-width:70ch}
.light .note{color:var(--tx2)}

/* placas: vermelho da faixa com letras amarelas (só a partir de 24 px) */
.plate{display:inline-flex;align-items:center;gap:12px;background:var(--red);color:var(--yel);padding:10px 18px 9px;font-size:clamp(24px,2.2vw,30px)}
.plate .n{font-family:Archivo,sans-serif;font-style:normal;font-weight:700;font-size:14px;color:var(--white);letter-spacing:0}
.sh{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,46ch);gap:20px 48px;align-items:end;margin-bottom:clamp(28px,4vw,48px)}
.sh .plate{grid-column:1/-1;justify-self:start}
.sh h2,.sh h1{font-size:clamp(30px,3.6vw,46px);letter-spacing:-.01em}
.sh h1{font-size:clamp(32px,4.2vw,54px)}
.sh .sub{color:var(--txd2);font-size:17px}
.light .sh .sub{color:var(--tx2)}

/* botões: frases, sem setas */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:10px;min-height:52px;padding:0 26px;font-weight:700;font-size:16px;text-decoration:none;color:var(--white);background:var(--red);border:2px solid var(--red);white-space:nowrap;transition:background .2s,border-color .2s,color .2s}
.btn:hover{background:var(--red-d);border-color:var(--red-d)}
.btn-o{background:transparent;border-color:rgba(255,255,255,.7)}
.btn-o:hover{background:var(--white);border-color:var(--white);color:var(--asf)}
.light .btn-o,.white .btn-o,.form .btn-o{border-color:var(--asf);color:var(--asf)}
.light .btn-o:hover,.white .btn-o:hover,.form .btn-o:hover{background:var(--asf);color:var(--white)}
.btn-w{background:var(--white);border-color:var(--white);color:var(--asf)}
.btn-w:hover{background:var(--branco);border-color:var(--branco)}
.lnk{font-weight:700;text-decoration:none}
.lnk .t{text-decoration:underline;text-underline-offset:4px;text-decoration-thickness:2px}   /* v7.5: só o texto leva o sublinhado; o Chrome propagava-o para dentro da seta (::after) */
.ico{width:22px;height:22px;flex:0 0 22px;stroke:currentColor;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.chips{display:flex;flex-wrap:wrap;gap:8px}
.chip{display:inline-flex;align-items:center;min-height:36px;padding:6px 12px;border:1.5px solid rgba(255,255,255,.35);font-size:14px;font-weight:600}
.light .chip,.white .chip{border-color:var(--lona)}

/* cabeçalho */
.hdr{position:sticky;top:0;z-index:40;background:rgba(38,40,39,.92);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-bottom:1px solid rgba(255,255,255,.08)}
.hdr .row{display:flex;align-items:center;justify-content:space-between;gap:20px;min-height:72px}
.brand{display:flex;align-items:center;gap:12px;text-decoration:none}
.brand img{width:44px;height:44px}
.brand span{font-size:19px}
.hdr nav{display:flex;gap:28px}
.hdr nav a{text-decoration:none;font-size:15px;font-weight:600;padding:8px 0;border-bottom:2px solid transparent}
.hdr nav a:hover{border-bottom-color:var(--red)}
.hdr .act{display:flex;align-items:center;gap:20px}
.hdr .tel{display:flex;align-items:center;gap:8px;font-size:15px;font-weight:600;text-decoration:none;color:var(--txd);white-space:nowrap}
@media (min-width:1001px) and (max-width:1200px){.hdr .brand .serp{display:none}}
.hdr .btn{min-height:44px;padding:0 18px;font-size:15px}
.menu-b{display:none;align-items:center;gap:8px;min-height:44px;padding:0 12px;border:1.5px solid rgba(255,255,255,.5);font-weight:600;font-size:14px}
.menu{position:fixed;inset:0;z-index:60;background:var(--asf);padding:max(20px,env(safe-area-inset-top,0px)) var(--gr) 32px var(--gl);display:flex;flex-direction:column;gap:28px;overflow-y:auto}
.menu .top{display:flex;justify-content:space-between;align-items:center;min-height:52px}
.menu nav{display:flex;flex-direction:column}
.menu nav a{font-size:24px;font-weight:700;text-decoration:none;padding:14px 0;border-bottom:1px solid rgba(255,255,255,.12)}
.menu .direct{display:grid;gap:10px}

/* início */
.hero{position:relative;overflow:hidden;background:var(--asf);min-height:min(calc(100svh - 72px),900px);display:flex;align-items:flex-end}
.hero .bg{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:62% 45%}
.hero .g1{position:absolute;inset:0;background:linear-gradient(100deg,rgba(38,40,39,.96) 0%,rgba(38,40,39,.8) 34%,rgba(38,40,39,.2) 64%,rgba(38,40,39,.5) 100%)}
.hero .g2{position:absolute;inset:0;background:linear-gradient(180deg,rgba(38,40,39,.5) 0%,rgba(38,40,39,0) 28%,rgba(38,40,39,.15) 62%,rgba(38,40,39,.97) 100%)}
.hero .wrap{position:relative;width:100%;padding-block:clamp(36px,5vw,64px);display:grid;grid-template-columns:minmax(0,7fr) minmax(0,4fr);gap:40px;align-items:end}
.hero .block{display:flex;flex-direction:column;gap:20px;min-width:0}
.hero .id{display:flex;align-items:center;gap:22px;flex-wrap:wrap}
.hero .logo{width:clamp(96px,12vw,172px);height:auto;filter:drop-shadow(0 8px 24px rgba(0,0,0,.45))}
/* logótipo com movimento: só CSS (o site.js só a faz repetir) e não bloqueia; com «reduzir movimento» fica só o logótipo */
.lmark{--lw:clamp(110px,12vw,172px);position:relative;width:var(--lw);height:var(--lw);flex:none}
.hero .lmark .logo{width:100%;height:100%;animation:chega .9s .15s cubic-bezier(.2,.7,.2,1) both}
.lring{position:absolute;left:-9%;top:-9%;width:118%;height:118%;max-width:none;overflow:visible;pointer-events:none}
/* o anel só existe durante a volta: aparece, a rota dá uma volta lenta, fecha com o pulso e desaparece (o logótipo fica limpo).
   Cada passagem dura 4,95 s (abaixo dos 5 s da WCAG 2.2.2); o site.js repete-a quando o topo da página volta a aparecer. */
.lr-anel{opacity:0}
.lr-base{fill:none;stroke:rgba(255,255,255,.38);stroke-width:2;stroke-dasharray:2 7;stroke-linecap:round}
.lr-glow,.lr-trail{fill:none;stroke-dasharray:578.05;stroke-dashoffset:578.05}
.lr-glow{stroke:var(--red);stroke-width:9;opacity:.55}
.lr-trail{stroke:var(--white);stroke-width:2.6;stroke-linecap:round}
.lr-veh{transform-box:view-box;transform-origin:100px 100px;transform:rotate(180deg)}
.lr-veh circle{fill:var(--yel);stroke:var(--asf);stroke-width:2}
.lr-pulse{fill:none;stroke:var(--yel);stroke-width:2.5;opacity:0;transform-box:fill-box;transform-origin:center}
.lmark.play .lr-anel{animation:anel 4.75s .2s both}
.lmark.play .lr-glow,.lmark.play .lr-trail{animation:rasto 3.4s .5s cubic-bezier(.42,0,.3,1) both}
.lmark.play .lr-veh{animation:volta 3.4s .5s cubic-bezier(.42,0,.3,1) both}
.lmark.play .lr-pulse{animation:pulso .8s 3.9s ease-out both}
.lr-speed path{fill:none;stroke:rgba(255,255,255,.85);stroke-width:3;stroke-linecap:round;opacity:0;animation:vento .9s .1s ease-out both}
.lr-speed path:nth-child(2){animation-delay:.18s}
.lr-speed path:nth-child(3){animation-delay:.26s}
@keyframes chega{from{opacity:0;transform:translateX(-28px) skewX(-10deg)}60%{opacity:1;transform:translateX(4px) skewX(3deg)}to{opacity:1;transform:none}}
@keyframes anel{0%{opacity:0}8%{opacity:1}83%{opacity:1}100%{opacity:0}}
@keyframes rasto{to{stroke-dashoffset:0}}
@keyframes volta{from{transform:rotate(180deg)}to{transform:rotate(540deg)}}
@keyframes pulso{0%{opacity:.95;transform:scale(.5)}100%{opacity:0;transform:scale(3.2)}}
@keyframes vento{0%{opacity:0;transform:translateX(-18px)}40%{opacity:.85}100%{opacity:0;transform:translateX(14px)}}
.hero .who{display:flex;flex-direction:column;gap:4px}
.hero .who b{font-size:17px}
.hero .who span{font-size:15px;color:var(--txd2)}
.hero .seals{display:flex;gap:12px;margin-top:10px}
.hero .seals img{width:74px;height:74px;object-fit:contain;background:var(--white);border-radius:50%;padding:6px}
.hero .title{background:rgba(227,6,19,.88);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);padding:clamp(18px,2.4vw,30px) clamp(20px,2.6vw,34px);border-left:5px solid var(--white);align-self:flex-start;max-width:720px}
.hero h1{font-size:clamp(34px,4.4vw,64px);color:var(--white)}
.hero .lead{font-size:clamp(17px,1.3vw,19px);color:var(--txd);max-width:52ch}
.hero .ctas{display:flex;gap:12px;flex-wrap:wrap}
.hero .glass{justify-self:end;max-width:340px;background:rgba(38,40,39,.55);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);border:1px solid rgba(255,255,255,.14);padding:20px 22px;display:grid;gap:10px}
.hero .glass b{font-size:14px;color:var(--txd2);font-weight:600}
.sq{display:grid;gap:8px}
.sq li{display:grid;grid-template-columns:8px minmax(0,1fr);gap:12px;align-items:start}
.sq li::before{content:"";width:8px;height:8px;background:var(--red);margin-top:.55em}
.red .sq li::before{background:var(--white)}
.js .hero .in{opacity:0;transform:translateY(22px);animation:in .9s cubic-bezier(.2,.7,.2,1) forwards}
.js .hero .in2{animation-delay:.2s}.js .hero .in3{animation-delay:.35s}.js .hero .in4{animation-delay:.5s}
.js .hero .bg{animation:kb 16s cubic-bezier(.2,.6,.2,1) forwards}
@keyframes in{to{opacity:1;transform:none}}
@keyframes kb{from{transform:scale(1.07)}to{transform:scale(1)}}

/* Percurso */
.idx{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:28px}
.idx button{min-height:44px;padding:0 14px;border:1.5px solid rgba(255,255,255,.3);font-size:14px;font-weight:600;transition:background .2s,border-color .2s}
.idx button:hover{border-color:var(--white)}
.idx button.on{background:var(--red);border-color:var(--red)}
.perc .grid{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,7fr);gap:clamp(24px,4vw,64px);align-items:start}
.map{position:sticky;top:96px;display:flex;flex-direction:column;gap:16px}
.map svg{width:100%;height:auto;max-height:calc(100vh - 210px)}
.land{fill:#2B2E2D;stroke:#5A5D5B;stroke-width:1.2;stroke-linejoin:round}
.r-fut{fill:none;stroke:#6D6E6B;stroke-width:2.5;stroke-dasharray:2 7;stroke-linecap:round;stroke-linejoin:round}
.r-glow{fill:none;stroke:var(--red);stroke-width:12;stroke-linecap:round;stroke-linejoin:round;opacity:.45}
.r-done{fill:none;stroke:var(--white);stroke-width:3;stroke-linecap:round;stroke-linejoin:round}
.r-glow,.r-done{transition:stroke-dashoffset .8s cubic-bezier(.4,0,.2,1)}
.stop{cursor:pointer}
.stop .hit{fill:transparent}
.stop .dot{fill:var(--asf);stroke:#9A9D9B;stroke-width:2;transition:fill .3s,stroke .3s}
.stop .ring{fill:none;stroke:var(--yel);stroke-width:2.5;opacity:0;transition:opacity .3s}
.stop text{fill:var(--txd2);font-family:Archivo,sans-serif;font-size:12.5px;font-weight:600}
.stop.done .dot{fill:var(--white);stroke:var(--white)}
.stop.on .dot{fill:var(--red);stroke:var(--red)}
.stop.on .ring{opacity:1}
.stop.on text{fill:var(--white);font-weight:800}
.stop:focus-visible{outline:none}
.stop:focus-visible .ring{opacity:1}
.base rect{fill:var(--yel);stroke:var(--asf);stroke-width:2}
.base text{fill:var(--yel);font-family:Archivo,sans-serif;font-size:13px;font-weight:700}
/* regresso a Alverca e zona de atuação no mapa do percurso */
.pmap .base{cursor:pointer}
.pmap .base .hit{fill:transparent}
.pmap .base .ring{fill:none;stroke:var(--yel);stroke-width:2.5;opacity:0;transition:opacity .3s}
.pmap .base.on .ring,.pmap .base:focus-visible .ring{opacity:1}
.pmap .base:focus{outline:none}
.zona{opacity:0;transition:opacity .9s ease}
.pmap.intro .zona,.zona.on{opacity:1}
.z-pais{fill:rgba(227,6,19,.14)}
.z-forte{fill:rgba(227,6,19,.62)}
.pmap .z-lab{opacity:0;transition:opacity .6s .35s}
.pmap.intro .z-lab{opacity:1}
.pmap .z-lab text{fill:var(--yel);font-family:Archivo,sans-serif;font-size:12.5px;font-weight:700}
.pmap .z-lab .pl{fill:rgba(255,255,255,.78);font-weight:600}
.pmap .stop text{transition:opacity .4s}
.pmap.intro .stop{opacity:0;pointer-events:none}   /* abertura: só o país, o logótipo e as setas */
.pmap .stop{transition:opacity .5s}
.pmap.fim .stop.done .dot{fill:var(--red);stroke:var(--red)}   /* percurso concluído: tudo vermelho */
.pmap.fim .r-done{stroke:var(--red)}
.pmap.fim .r-glow{opacity:.6}
.pmap.fim .stop text{fill:#D4D6D4}
.perc .cf{display:none}
.perc.intro .ce,.perc.fim .ce{display:none}
.perc.intro .cf{display:inline}
.pmap.intro .r-fut{opacity:0}
.pmap .r-fut{transition:opacity .5s}
@media (min-width:1001px){.stops .fim-p{align-content:start}.stops .fim-p[data-i="8"]{min-height:70vh}}
.fim-p .fimbox{display:grid;gap:16px;align-content:start;padding:clamp(22px,3vw,36px);border:1px solid rgba(255,255,255,.14);border-left:4px solid var(--red);background:rgba(255,255,255,.03)}
.fim-p .fimbox .plate{justify-self:start}
.fim-p h3{font-size:clamp(24px,2.4vw,32px)}
.fim-p .desc{color:var(--txd)}
/* secção Zona de atuação */
.zona-s{border-top:1px solid rgba(255,255,255,.06)}
.zgrid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:clamp(28px,5vw,72px);align-items:center}
.ztxt h2,.ztxt h1{font-size:clamp(32px,4.2vw,54px);margin:20px 0 16px}
.ztxt .lead{color:var(--txd);font-size:18px;max-width:34em}
.zlist{display:grid;gap:20px;margin:30px 0 32px}
.zitem{border-left:3px solid rgba(255,255,255,.28);padding-left:16px}
.zitem.forte{border-left-color:var(--red)}
.zitem b{display:block;font-size:17px;margin-bottom:8px}
.zitem span{color:var(--txd)}
.zitem .chips .chip{color:var(--white)}
.ztxt .ctas{display:flex;gap:12px;flex-wrap:wrap}
.zmapw{margin:0;justify-self:center;width:100%;max-width:560px}
.zmapw svg{width:100%;height:auto;max-height:min(78vh,720px)}
.zmapw figcaption{font-size:13px;color:var(--txd2);margin-top:10px;text-align:right}
.zmap text{fill:var(--white);font-family:Archivo,sans-serif;font-size:15px;font-weight:600}
.zmap .pl{fill:rgba(255,255,255,.7);font-size:14px}
.zmap .ll{fill:none;stroke:rgba(255,255,255,.55);stroke-width:1.2}
.zmap .pt{fill:var(--white)}
/* fotografias: rótulo de operação real (o identificador F00 só aparece na pré-visualização) */
.real{position:absolute;right:10px;bottom:10px;z-index:2;display:inline-flex;align-items:center;gap:6px;padding:4px 8px;font-size:11px;font-weight:600;letter-spacing:.02em;line-height:1.3;color:#fff;background:rgba(38,40,39,.72);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);pointer-events:none}
.fid{display:none;padding:0 4px;border:1px solid rgba(255,255,255,.6);font-weight:700;font-size:10.5px}
.fcard figure,.cdet figure{position:relative}
.hnote{position:absolute;right:max(var(--gr),16px);bottom:12px;z-index:3;margin:0;display:inline-flex;align-items:center;gap:6px;font-size:12px;color:rgba(255,255,255,.78);text-shadow:0 1px 2px rgba(0,0,0,.6)}
.map .meta{display:flex;align-items:center;justify-content:space-between;gap:12px}
.map .ctr{font-size:14px;color:var(--txd2)}
.map .ctr b{color:var(--white)}
.navb{display:flex;gap:8px}
.navb button{width:48px;height:48px;border:1.5px solid rgba(255,255,255,.35);display:grid;place-items:center;transition:background .2s,border-color .2s}
.navb button:hover{background:var(--red);border-color:var(--red)}
.map .cap{font-size:13px;color:var(--txd2)}
.stops{display:flex;flex-direction:column;gap:clamp(40px,6vw,88px)}
.stop-p{display:grid;gap:18px;scroll-margin-top:40px}
.stop-p figure{position:relative;aspect-ratio:16/10;overflow:hidden;background:var(--asf3)}
.stop-p figure img{width:100%;height:100%;object-fit:cover;transform:scale(1.05);transition:transform 1.1s cubic-bezier(.2,.7,.2,1)}
.stop-p.on figure img{transform:none}
.stop-p figure .plate{position:absolute;left:0;bottom:0}
.stop-p .ptag{position:absolute;right:14px;top:14px;width:52px;height:52px;display:grid;place-items:center;background:rgba(38,40,39,.6);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);border:1px solid rgba(255,255,255,.16)}
.stop-p .ptag svg{width:32px;height:32px}
.stop-p .txt{display:flex;flex-direction:column;gap:14px;max-width:62ch}
.stop-p h3{font-size:clamp(24px,2.4vw,32px)}
.stop-p .desc{color:var(--txd)}
.tbar{display:grid;gap:6px;width:min(380px,100%)}
.tbar i{display:block;height:12px;background:linear-gradient(90deg,#BFE0FF 0%,#FFFFFF 50%,#FFD3A1 100%)}
.tbar span{display:flex;justify-content:space-between;font-size:13px;color:var(--txd2)}
.pmob{display:none}

/* Frota */
.fleet{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px}
.fsit{margin:-8px 0 26px}
.ggrid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));grid-auto-rows:clamp(150px,15vw,230px);grid-auto-flow:dense;gap:10px}
.g{position:relative;overflow:hidden;background:var(--asf3)}
.g.w2{grid-column:span 2}
.g.h2{grid-row:span 2}
.g img{width:100%;height:100%;object-fit:cover;transition:transform .8s cubic-bezier(.2,.7,.2,1)}
@media (hover:hover){.g:hover img{transform:scale(1.04)}}
.g figcaption{position:absolute;left:0;right:0;bottom:0;padding:30px 12px 10px;font-size:14px;font-weight:600;line-height:1.3;color:var(--white);background:linear-gradient(180deg,rgba(38,40,39,0),rgba(38,40,39,.86))}
.g figcaption .fid{margin-right:6px}
.fcard{background:var(--white);display:flex;flex-direction:column}
.fcard figure{aspect-ratio:4/3;overflow:hidden;background:#D5D9D7}
.fcard figure img{width:100%;height:100%;object-fit:cover}
.fcard .b{padding:20px 22px 24px;display:flex;flex-direction:column;gap:12px}
.fcard h2,.fcard h3{font-size:24px;color:var(--tx)}
.specs{display:grid;gap:6px;font-size:15px}
.specs div{display:grid;grid-template-columns:118px minmax(0,1fr);gap:10px;border-top:1px solid #DDE1DF;padding-top:6px}
.specs dt{color:var(--tx2)}
.specs dd{font-weight:600}

/* Complementos */
.compl{display:grid;grid-template-columns:minmax(0,2fr) minmax(0,1fr);gap:clamp(24px,3vw,48px);align-items:start}
.truck{position:relative}
.truck svg{width:100%;height:auto}
.truck svg g{transition:transform .6s cubic-bezier(.2,.7,.2,1)}
.truck svg .hi path,.truck svg .hi rect,.truck svg .hi circle{stroke:var(--red)}
.truck svg .hi [fill="#262827"]{fill:var(--red)}
.truck .nudge-v{animation:nudgev 1.1s cubic-bezier(.2,.7,.2,1)}
.truck .nudge-h{animation:nudgeh 1.1s cubic-bezier(.2,.7,.2,1)}
@keyframes nudgev{0%{transform:translateY(-30px)}55%{transform:translateY(5px)}100%{transform:none}}
@keyframes nudgeh{0%{transform:translateX(-34px)}55%{transform:translateX(6px)}100%{transform:none}}
.badge{position:absolute;left:clamp(22px,var(--x),calc(100% - 22px));top:var(--y);width:44px;height:44px;margin:-22px 0 0 -22px;border-radius:50%;background:var(--white);border:2px solid var(--asf);display:grid;place-items:center;box-shadow:0 2px 8px rgba(0,0,0,.15);transition:background .2s,border-color .2s,transform .2s}
.badge svg{width:22px;height:22px}
.badge:hover{transform:scale(1.08)}
.badge.on{background:var(--red);border-color:var(--red);box-shadow:0 0 0 4px var(--yel)}
.badge.on svg path{stroke:var(--white)}
.legend{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px 24px;margin-top:22px}
.legend button{display:grid;grid-template-columns:34px minmax(0,1fr);gap:12px;text-align:left;padding:12px 10px;border-top:2px solid transparent;transition:background .2s,border-color .2s}
.legend button:hover{background:rgba(38,40,39,.05)}
.legend button.on{border-top-color:var(--red);background:var(--white)}
.legend svg{width:30px;height:30px}
.legend b{display:block;font-size:16px;color:var(--tx)}
.legend span{display:block;font-size:14px;color:var(--tx2);line-height:1.45}
.legend button.on b{color:var(--red)}
.cdet{display:flex;flex-direction:column;gap:14px;position:sticky;top:96px}
.cdet figure{aspect-ratio:4/5;overflow:hidden;background:#D5D9D7}
.cdet figure img{width:100%;height:100%;object-fit:cover;transition:opacity .35s}
.cdet h3{font-size:24px;color:var(--tx)}
.cdet p{color:var(--tx2)}
.ctabs{display:none}

/* Qualidade */

/* Cotação */
/* credenciais: quatro pontos do site antigo e os dois selos, numa faixa sem caixa (fundo escuro ou claro) */
.pontos{margin:0;padding:22px 0;list-style:none;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px 28px;border-top:1px solid rgba(255,255,255,.16);border-bottom:1px solid rgba(255,255,255,.16)}
.pontos li{display:flex;align-items:center;gap:12px;min-width:0}
.pontos svg{flex:none;width:32px;height:32px;color:var(--yel)}
.pontos .serp{color:var(--white);text-transform:none;font-size:clamp(18px,1.5vw,21px);line-height:1.15}
.light .pontos{border-color:#CDD2CF}.light .pontos svg{color:var(--red)}.light .pontos .serp{color:var(--tx)}
.selos{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px 36px;margin-top:28px}
.selo{display:grid;grid-template-columns:120px minmax(0,1fr);gap:16px;align-items:center}
.selo img{width:120px;height:100px;object-fit:contain}   /* selos com fundo transparente, sem disco */
.selo b{display:block;font-size:17px;line-height:1.3;margin-bottom:4px}
.selo p{font-size:15px;color:var(--txd)}
.light .selo p{color:var(--tx2)}.light .selo b{color:var(--tx)}
.dark .ctas,.light .ctas{display:flex;gap:12px;flex-wrap:wrap;margin-top:28px}
.quote{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,8fr);gap:clamp(28px,4vw,64px);align-items:start}
.quote .serp{font-size:clamp(44px,5.2vw,72px);color:var(--yel)}
.quote .lead{font-size:19px;max-width:44ch;margin-top:18px}
.direct{display:grid;gap:14px;margin-top:30px}
.direct a,.direct span{display:flex;align-items:center;gap:12px;font-weight:700;font-size:17px;text-decoration:none;overflow-wrap:anywhere}
.direct a:hover{text-decoration:underline}
.next{margin-top:30px;display:grid;gap:10px;counter-reset:n}
.next li{display:grid;grid-template-columns:30px minmax(0,1fr);gap:12px;align-items:start;font-size:16px}
.next li::before{counter-increment:n;content:counter(n);width:28px;height:28px;border-radius:50%;background:var(--white);color:var(--red);font-weight:800;display:grid;place-items:center;font-size:14px}
.privacy{margin-top:24px;font-size:14px;max-width:46ch}
.form{background:var(--white);color:var(--tx);padding:clamp(22px,3vw,40px)}
.steps{display:flex;gap:22px;flex-wrap:wrap;margin-bottom:26px}
.steps li{display:flex;align-items:center;gap:10px;font-weight:600;font-size:15px;color:var(--sombra)}
.steps li i{width:30px;height:30px;border-radius:50%;border:1.5px solid var(--lona);display:grid;place-items:center;font-style:normal;font-size:14px}
.steps li.on{color:var(--tx);font-weight:700}
.steps li.on i{background:var(--red);border-color:var(--red);color:var(--white)}
.steps li.ok{color:var(--tx)}
.steps li.ok i{background:var(--asf);border-color:var(--asf);color:var(--white)}
.form fieldset{border:0;margin:0;padding:0;display:grid;gap:18px}
.form legend{font-size:20px;font-weight:700;margin-bottom:4px;padding:0}
.fl{display:grid;gap:6px;min-width:0}
.fl>span,.fl>label{font-size:14px;font-weight:600}
.fl small{font-size:13px;color:var(--tx2)}
.row2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}
.row3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}
.form input[type=text],.form input[type=email],.form input[type=tel],.form input[type=date],.form input[type=number],.form select,.form textarea{width:100%;min-height:48px;border:1.5px solid var(--lona);background:var(--white);color:var(--tx);padding:10px 14px;font-size:16px;border-radius:0}
.form textarea{min-height:104px;resize:vertical}
#qform{scroll-margin-top:16px}
.form fieldset:focus{outline:none}
.form input[type=file]{width:100%;font-size:15px;color:var(--tx2)}
.form input[type=file]::file-selector-button{min-height:44px;margin-right:14px;padding:0 18px;border:1.5px solid var(--asf);background:var(--white);color:var(--asf);font:inherit;font-weight:700;cursor:pointer}
.form input[type=file]::file-selector-button:hover{background:var(--asf);color:var(--white)}
.form input:focus,.form select:focus,.form textarea:focus{outline:none;border-color:var(--red);box-shadow:0 0 0 3px rgba(227,6,19,.18)}
.form [aria-invalid=true]{border-color:var(--red)}
.opts{display:flex;flex-wrap:wrap;gap:8px}
.opt{position:relative}
.opt input{position:absolute;opacity:0;inset:0;cursor:pointer}
.opt span{display:inline-flex;align-items:center;min-height:44px;padding:8px 14px;border:1.5px solid var(--lona);font-size:15px;font-weight:600;transition:background .15s,border-color .15s,color .15s}
.opt input:checked+span{background:var(--asf);border-color:var(--asf);color:var(--white)}
.opt input:focus-visible+span{outline:3px solid var(--red);outline-offset:2px}
.cond{display:grid;gap:16px;padding:18px;background:var(--branco);border-left:4px solid var(--red)}
.cond .cond-t{margin:0;font-size:16px}
.msg{padding:12px 14px;font-size:15px;border-left:4px solid var(--asf);background:var(--branco)}
.msg.warn{border-left-color:var(--red)}
.fbtns{display:flex;align-items:center;gap:18px;flex-wrap:wrap;margin-top:24px}
.fbtns .back{font-weight:700;text-decoration:underline;text-underline-offset:4px}
.sum{display:grid;gap:4px;font-size:15px;padding:14px 16px;background:var(--branco)}
.sum b{font-size:14px;color:var(--tx2);font-weight:600}
.done-box{display:grid;gap:14px}
.done-box h3{font-size:26px}

/* rodapé */
.ftr{background:var(--asf);color:var(--txd2);padding-block:52px 28px;border-top:1px solid rgba(255,255,255,.06)}
.ftr .cols{display:grid;grid-template-columns:minmax(0,2fr) repeat(3,minmax(0,1fr));gap:28px}
.ftr .faixa{width:min(360px,100%);height:auto}
.ftr .brandline{margin-top:16px;font-size:15px;color:var(--txd)}
.ftr .fh{margin:0 0 10px;font-size:15px;line-height:1.3;color:var(--white)}
.ftr ul{display:grid;gap:8px;font-size:15px}
.ftr a{text-decoration:none}.ftr a:hover{color:var(--white);text-decoration:underline}
.ftr .legal{border-top:1px solid rgba(255,255,255,.12);margin-top:36px;padding-top:16px;font-size:13px;display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap}
.ftr .legal .ll{display:flex;gap:8px 20px;flex-wrap:wrap}
.mbar{display:none}
main>section,.ftr{overflow-x:clip}
.form .hint{font-size:14px;color:var(--tx2)}
.hp{position:absolute;left:-10000px;width:1px;height:1px;overflow:hidden}
.ts:empty{display:none}
/* páginas de texto: privacidade e 404 */
.hdr .act .tel-s{display:flex;align-items:center;gap:8px;font-size:15px;font-weight:600;text-decoration:none;color:var(--txd);white-space:nowrap}
@media (max-width:700px){.hdr .act .tel-s{display:none}}
.page{min-height:60vh}
.doc{max-width:780px}
.doc h1{font-size:clamp(34px,5vw,52px);margin-bottom:14px}
.doc .upd{color:var(--tx2);font-size:15px;margin-bottom:28px}
.dark .doc .upd,.dark .doc p{color:var(--txd)}
.doc h2{font-size:22px;margin:34px 0 10px}
.doc p,.doc li{color:var(--tx2)}
.doc p+p{margin-top:12px}
.doc ul{list-style:disc;padding-left:22px;display:grid;gap:6px;margin-top:10px}
.doc a{font-weight:600;text-underline-offset:3px}
.doc .ctas{display:flex;gap:12px;flex-wrap:wrap;margin-top:28px}

@media (max-width:1100px){
  .compl{grid-template-columns:minmax(0,1fr)}
  .compl>div{min-width:0}
  .cdet{position:static;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:20px;align-items:start}
  .cdet figure{aspect-ratio:4/3}
  .fleet{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media (max-width:1000px){
  .hdr nav,.hdr .tel,.hdr .act .btn{display:none}
  .menu-b{display:inline-flex}
  .hero .wrap{grid-template-columns:1fr}
  .hero .glass{justify-self:start}
  .sh{grid-template-columns:1fr}
  .perc .grid{grid-template-columns:1fr}
  .map{display:none}
  .pmob{display:grid;grid-template-columns:150px minmax(0,1fr);gap:16px;align-items:center;margin-bottom:8px}
  .pmob svg{width:150px;height:auto}
  .pmob .info{display:flex;flex-direction:column;gap:12px}
  .pmob .ctr{font-size:14px;color:var(--txd2)}
  .pmob .name{font-size:24px}
  .stops{flex-direction:row;gap:12px;overflow-x:auto;scroll-snap-type:x mandatory;scrollbar-width:none;margin:0 calc(-1 * var(--gr)) 0 calc(-1 * var(--gl));padding:12px var(--gr) 8px var(--gl);scroll-padding-left:var(--gl)}
  .stops::-webkit-scrollbar{display:none}
  .stop-p{flex:0 0 calc(100% - 44px);scroll-snap-align:start;scroll-margin-top:0}
  .stop-p figure{aspect-ratio:4/3}
  /* a etapa seguinte espreita à direita, esbatida (sinal de que há mais); a anterior fica escondida na margem */
  .stops{-webkit-mask-image:linear-gradient(90deg,transparent calc(var(--gl) - 12px),#000 var(--gl),#000 calc(100% - 54px),rgba(0,0,0,.3) calc(100% - 40px),rgba(0,0,0,.07) 100%);mask-image:linear-gradient(90deg,transparent calc(var(--gl) - 12px),#000 var(--gl),#000 calc(100% - 54px),rgba(0,0,0,.3) calc(100% - 40px),rgba(0,0,0,.07) 100%)}
  .quote{grid-template-columns:1fr}
  .zgrid{grid-template-columns:1fr}
  .zmapw{max-width:460px}
  .zmap text{font-size:17px}
  .zmap .pl{font-size:15px}
  .ftr .cols{grid-template-columns:1fr 1fr}
}
@media (max-width:700px){
  body{font-size:16px;padding-bottom:calc(72px + env(safe-area-inset-bottom,0px))}
  .hero{min-height:calc(88svh - 72px);align-items:center}
  .hero .bg{object-position:50% 100%}   /* v6.9: fotografia em retrato: a equipa e as viaturas ficam sempre em baixo */
  .hero .g1{background:linear-gradient(180deg,rgba(38,40,39,.55) 0%,rgba(38,40,39,.18) 40%,rgba(38,40,39,.06) 68%,rgba(38,40,39,.64) 100%)}
  .hero .g2{background:none}
  .hero .wrap{padding-top:96px;padding-bottom:72px}
  .hero .block{align-items:center;text-align:center;gap:26px}
  .hero .id{flex-direction:column;gap:0}
  .hero .who,.hero .lead,.hero .ctas{display:none}
  .lmark{--lw:min(52vw,210px)}
  .hero .title{align-self:center;border-left:0;padding:16px 22px}
  .hero h1{font-size:clamp(22px,6.2vw,30px)}
  .hero .title{padding:12px 18px}
  body{font-size:17px}
  .chip{font-size:15px;min-height:40px}
  .note{font-size:14.5px}
  .privacy,.form .hint{font-size:15px}
  .fl>span,.fl>label{font-size:15px}
  .sh h2,.sh h1{font-size:32px}
  .ftr ul{font-size:16px}
  .pmob{grid-template-columns:clamp(120px,38vw,176px) minmax(0,1fr);gap:14px}
  .pmob svg{width:100%}
  .pmob .name{font-size:clamp(16px,5.2vw,22px);overflow-wrap:break-word}
  .pmob .ctr{font-size:15px}
  .selos{grid-template-columns:1fr}
  .ggrid{grid-template-columns:repeat(2,minmax(0,1fr));grid-auto-rows:150px;gap:8px}
  .fsit{gap:6px}
  .fsit .chip{font-size:14px;min-height:34px;padding:4px 10px}
  .g figcaption{font-size:13.5px;padding:24px 10px 8px}
  .stop-p figure .real{bottom:52px}
  .selo{grid-template-columns:96px minmax(0,1fr)}
  .selo img{width:96px;height:80px}
  .hero .seals img{width:56px;height:56px}
  .hero .glass{display:none}
  .hero .ctas .btn{flex:1 1 100%}
  .legend{grid-template-columns:1fr;display:none}
  .ctabs{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-top:18px}   /* os 6 complementos sempre à vista, sem deslizar */
  .ctabs::-webkit-scrollbar{display:none}
  .ctabs button{min-height:48px;padding:6px;border:1.5px solid var(--lona);font-weight:600;font-size:13.5px;line-height:1.2;color:var(--tx);white-space:normal;text-align:center}
  .ctabs button.on{background:var(--red);border-color:var(--red);color:var(--white)}
  .badge{width:44px;height:44px;margin:-22px 0 0 -22px}
  .badge svg{width:22px;height:22px}
  .cdet{grid-template-columns:1fr}
  .fleet{grid-template-columns:1fr}
  .row2,.row3{grid-template-columns:1fr}
  .steps{gap:14px}
  .steps li:not(.on) .lb{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
  .direct a[href^="mailto:"]{font-size:15px}
  .ftr .cols{grid-template-columns:1fr}
  .mbar{display:grid;grid-template-columns:1fr 1fr 1.3fr;gap:8px;position:fixed;left:0;right:0;bottom:0;z-index:50;background:var(--asf);border-top:1px solid rgba(255,255,255,.14);padding:10px var(--gr) calc(10px + env(safe-area-inset-bottom,0px)) var(--gl)}
  .mbar a{display:flex;align-items:center;justify-content:center;gap:8px;min-height:48px;font-weight:700;font-size:15px;text-decoration:none;border:2px solid rgba(255,255,255,.7)}
  .mbar a.q{background:var(--red);border-color:var(--red)}
}
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation:none !important;transition:none !important;scroll-behavior:auto !important}
  .js .hero .in{opacity:1;transform:none}
  .lring{display:none}
  .hero .lmark .logo{opacity:1;transform:none}
}

/* ---------- v5: página inicial curta + páginas próprias ---------- */
/* passagem suave entre páginas (Chrome, Edge e Safari; nos outros abre normalmente); o cabeçalho fica parado */
@view-transition{navigation:auto}
.hdr{view-transition-name:hdr}
::view-transition-old(root),::view-transition-new(root){animation-duration:.3s}
.hdr nav a[aria-current="page"]{border-bottom-color:var(--red)}
.bc{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px;font-size:14px;color:var(--txd2);margin-bottom:24px}
.bc a{text-decoration:none}.bc a:hover{color:var(--white);text-decoration:underline}
.bc [aria-current]{color:var(--white);font-weight:600}
.bc .sep{opacity:.5}
.light .bc{color:var(--tx2)}.light .bc [aria-current]{color:var(--tx)}.light .bc a:hover{color:var(--tx)}
.plinks{display:flex;flex-wrap:wrap;align-items:center;gap:12px 22px;margin-top:4px}
.plinks .btn{min-height:44px;padding:0 18px;font-size:15px}
/* página de serviço */
.shero{display:grid;grid-template-columns:minmax(0,6fr) minmax(0,5fr);gap:clamp(24px,4vw,64px);align-items:center}
.shero h1{font-size:clamp(34px,4.4vw,58px);letter-spacing:-.01em;margin:20px 0 10px}
.shero .tag{font-size:clamp(18px,1.6vw,21px);font-weight:700;color:var(--yel)}
.shero .lead{color:var(--txd);font-size:18px;margin:14px 0 18px;max-width:50ch}
.shero .tbar{margin-bottom:18px}
.shero .ctas{display:flex;gap:12px;flex-wrap:wrap;margin-top:24px}
.sfig{position:relative;aspect-ratio:4/3;overflow:hidden;background:var(--asf3);margin:0}
.sfig img{width:100%;height:100%;object-fit:cover}
.sfig .ptag{position:absolute;right:14px;top:14px;width:52px;height:52px;display:grid;place-items:center;background:rgba(38,40,39,.6);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);border:1px solid rgba(255,255,255,.16)}
.sfig .ptag svg{width:32px;height:32px}
.passos{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;counter-reset:p;margin:0}
.passos li{background:var(--white);padding:22px 22px 24px;border-top:4px solid var(--red);display:grid;gap:8px;align-content:start}
.passos li::before{counter-increment:p;content:counter(p);width:34px;height:34px;border-radius:50%;background:var(--red);color:var(--white);font-weight:800;display:grid;place-items:center;font-size:15px}
.passos b{font-size:18px;color:var(--tx)}
.passos span{color:var(--tx2);font-size:16px}
.scomp{margin-top:clamp(32px,4vw,48px)}
.scomp h3{font-size:22px;color:var(--tx);margin-bottom:16px}
.clist{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:12px;margin-bottom:16px}
.clist li{display:grid;grid-template-columns:34px minmax(0,1fr);gap:12px;background:var(--white);padding:16px}
.clist svg{width:30px;height:30px}
.clist b{display:block;color:var(--tx);font-size:16px}
.clist span span{display:block;color:var(--tx2);font-size:15px;line-height:1.45;margin-top:2px}
.sgal{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:10px}
.sgal .g{aspect-ratio:4/3}
.outros{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}
.outros a{display:flex;align-items:center;gap:14px;min-height:72px;padding:14px 18px;border:1.5px solid rgba(255,255,255,.22);text-decoration:none;font-weight:700;font-size:17px;transition:border-color .2s,background .2s}
.outros a:hover{border-color:var(--red);background:rgba(227,6,19,.08)}
.outros svg{flex:none;width:30px;height:30px}
/* página Serviços */
.sgrid8{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}
.scard{display:flex;flex-direction:column;background:var(--asf2);text-decoration:none;color:var(--white);transition:background .25s}
.scard:hover{background:var(--asf3)}
.scard figure{aspect-ratio:4/3;overflow:hidden;margin:0;background:var(--asf3)}
.scard img{width:100%;height:100%;object-fit:cover}
.scard .b{display:grid;gap:10px;padding:18px 18px 20px;align-content:start}
.scard .k{display:flex;align-items:center;gap:10px;color:var(--yel);font-size:22px}
.scard .k .n{font-family:Archivo,sans-serif;font-style:normal;font-weight:700;font-size:13px;color:var(--white)}
.scard .t{font-weight:700;font-size:17px;line-height:1.3}
.scard .lnk{font-size:15px;margin-top:4px}
.scard.zc{background:var(--red);justify-content:flex-end}
.scard.zc .b{padding:24px}
.scard.zc:hover{background:var(--red-d)}
/* início: resumos da frota, da qualidade e o começo do pedido */
.fmini{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}
.fm{display:flex;flex-direction:column;background:var(--white);text-decoration:none;color:var(--tx)}
.fm figure{aspect-ratio:4/3;overflow:hidden;margin:0;background:#D5D9D7}
.fm img{width:100%;height:100%;object-fit:cover}
.fm .b{display:grid;gap:4px;padding:14px 16px 16px}
.fm .b b{font-size:20px;color:var(--tx)}
.fm .b span{font-size:15px;color:var(--tx2)}
.fm:hover .b b{color:var(--red)}
.qstart{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,7fr);gap:clamp(24px,4vw,64px);align-items:center}
.qstart h2.serp{font-size:clamp(44px,5.2vw,72px);color:var(--yel)}
.qstart .lead{font-size:19px;max-width:40ch;margin-top:14px}
.qs-t{font-weight:700;font-size:18px;margin-bottom:12px}
.qs-opts{display:flex;flex-wrap:wrap;gap:8px}
.qs-opts a{display:inline-flex;align-items:center;min-height:46px;padding:0 16px;background:var(--white);color:var(--tx);font-weight:700;font-size:15px;text-decoration:none;border:2px solid var(--white);transition:background .2s,color .2s}
.qs-opts a:hover{background:transparent;color:var(--white)}
.red .ctas{display:flex;gap:12px;flex-wrap:wrap;margin-top:22px}
/* Qualidade: três cartões sempre abertos */
.qcards{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;align-items:stretch}
.qc{background:var(--asf2);border-top:4px solid var(--red);display:flex;flex-direction:column}
.qc figure{position:relative;aspect-ratio:4/3;overflow:hidden;margin:0}
.qc img{width:100%;height:100%;object-fit:cover}
.qc .b{display:grid;gap:12px;padding:22px 22px 26px}
.qc .k{color:var(--yel);font-size:22px}
.qc h2{font-size:22px;line-height:1.2}
.qc .sq li{color:var(--txd);font-size:16px}
/* faixa final das páginas */
.cta-b{padding-block:clamp(44px,6vw,76px)}
.ctab{display:flex;justify-content:space-between;align-items:center;gap:20px 40px;flex-wrap:wrap}
.ctab h2.serp{font-size:clamp(36px,4vw,56px);color:var(--yel)}
.ctab .lead{font-size:18px;max-width:46ch;margin-top:10px}
.red .ctab .ctas{margin-top:0}
/* Pedir cotação: formulário em destaque; o que acontece a seguir e os contactos ao lado */
.cot .quote{grid-template-columns:minmax(0,5fr) minmax(0,8fr);grid-template-areas:"head form" "side form";row-gap:8px}
.cot .qhead{grid-area:head}.cot .form{grid-area:form}.cot .qside{grid-area:side;align-self:start}
.qs-h{font-size:18px;font-weight:800;margin:30px 0 0}
.qside .next,.qside .direct{margin-top:14px}
@media (max-width:1000px){
  .shero{grid-template-columns:minmax(0,1fr)}
  .shero .sfig{order:-1}
  .passos{grid-template-columns:repeat(2,minmax(0,1fr))}
  .sgrid8,.fmini{grid-template-columns:repeat(2,minmax(0,1fr))}
  .qcards{grid-template-columns:minmax(0,1fr)}
  .qstart{grid-template-columns:minmax(0,1fr)}
  .cot .quote{grid-template-columns:minmax(0,1fr);grid-template-areas:"head" "form" "side"}
  .outros{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media (max-width:700px){
  .passos{grid-template-columns:minmax(0,1fr);gap:10px}
  .passos li{grid-template-columns:34px minmax(0,1fr);column-gap:14px;row-gap:2px;padding:16px 16px 18px;border-top-width:3px}
  .passos li::before{grid-row:1/span 2}
  .passos b,.passos span{grid-column:2}
  .sgal{grid-template-columns:minmax(0,1fr)}
  .sgal .g{aspect-ratio:16/10}
  .sgrid8{grid-template-columns:minmax(0,1fr)}
  .scard{display:grid;grid-template-columns:40% minmax(0,1fr)}
  .scard figure{aspect-ratio:auto;height:100%;min-height:128px}
  .scard .b{padding:14px;gap:6px}
  .scard .k{font-size:19px}
  .scard .t{font-size:15px}
  .scard.zc{display:flex}
  .fmini{gap:10px}
  .fm .b{padding:10px 12px 12px}
  .fm .b b{font-size:17px}
  .fm .b span{font-size:14px}
  .pontos{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px 16px}
  .pontos svg{width:28px;height:28px}
  .pontos .serp{font-size:17px}
  .outros{grid-template-columns:minmax(0,1fr)}
  .outros a{min-height:60px;font-size:16px}
  .ftr .cols{grid-template-columns:repeat(2,minmax(0,1fr));gap:26px 18px}
  .ftr .cols>div:first-child,.ftr .cols>div:last-child{grid-column:1/-1}
  .ftr .cols>div:last-child ul{display:flex;flex-wrap:wrap;gap:10px 20px}
  .ctab .ctas .btn{flex:1 1 100%}
  .qs-opts a{font-size:14.5px;padding:0 12px}
  .plinks .btn{flex:1 1 100%}
  .shero .ctas .btn{flex:1 1 100%;white-space:normal;text-align:center;line-height:1.25;padding:10px 18px}
}
@media (max-width:380px){.pontos{grid-template-columns:minmax(0,1fr)}}   /* «especializada» não cabe em meia coluna a 320 px */
.tbar span{flex-wrap:wrap;gap:0 10px}
@media (prefers-reduced-motion:reduce){@view-transition{navigation:none}}

/* ---------- v5.2: Percurso que cabe no ecrã do telemóvel, complementos, mapa com setas e logótipo ---------- */
.idx .ns,.pcount{display:none}
.dica{display:inline-block;margin:-4px 0 24px;padding:10px 14px;border-left:4px solid var(--red);background:var(--branco);font-size:16px;color:var(--tx)}
.dica b{color:var(--red-d)}   /* o vermelho da marca sobre o cinzento claro não chega ao contraste mínimo (4,3:1) */
a[href^="mailto:"]{overflow-wrap:anywhere}   /* o e-mail comprido não alarga a página a 320 px */
.base .lg-bg{fill:var(--white)}
.setas .sl{fill:none;stroke:var(--yel);stroke-width:3.4;stroke-linecap:round}
.setas .sh{fill:var(--yel)}
.zmap .setas text{fill:var(--yel)}
/* zona de atuação: as setas desenham-se uma vez quando o mapa aparece (menos de 2 s) */
.zmap.prep .setas .sl{stroke-dasharray:1;stroke-dashoffset:1}
.zmap.prep .setas .sh,.zmap.prep .setas text{opacity:0}
.zmap.prep.ver .setas .sl{animation:seta 1.4s var(--d) cubic-bezier(.4,0,.2,1) forwards}
.zmap.prep.ver .setas .sh,.zmap.prep.ver .setas text{animation:aparece .5s calc(var(--d) + 1.2s) forwards}
/* Percurso: no regresso a Alverca, as setas saem do logótipo para todo o continente */
.pmap .setas{opacity:0;transition:opacity .3s}
.pmap .setas .sl{stroke-width:4;stroke-dasharray:1;stroke-dashoffset:1;transition:stroke-dashoffset .9s cubic-bezier(.4,0,.2,1)}
.pmap .setas .sh{opacity:0;transition:opacity .3s}
.pmap.intro .setas{opacity:1}
.pmap.intro .setas .sl{stroke-dashoffset:0;transition-delay:calc(var(--d) + .25s)}
.pmap.intro .setas .sh{opacity:1;transition-delay:calc(var(--d) + 1s)}
@keyframes seta{to{stroke-dashoffset:0}}
/* mapa da zona: depois das setas, uma onda sai do logótipo (duas vezes, cerca de 3 s ao todo) */
.zmap .base .onda{fill:none;stroke:var(--yel);stroke-width:3;opacity:0;transform-box:fill-box;transform-origin:center}
.zmap.prep.ver .base .onda{animation:onda 1.4s 3.4s ease-out 2}
@keyframes onda{0%{opacity:.9;transform:scale(1)}100%{opacity:0;transform:scale(1.9)}}
@keyframes aparece{to{opacity:1}}
@media (max-width:1000px){
  .perc .c{display:flex;flex-direction:column}
  .perc .pmob{order:1}
  .perc .idx{order:2;display:flex;gap:6px;margin:6px 0 4px}   /* os 8 nomes à vista, por cima das etapas */
  .perc .grid{order:3}
  .idx button{min-height:36px;padding:0 10px;font-size:13.5px}
  .idx .nl{display:none}
  .idx .ns{display:inline}
  .pcount{display:block;position:absolute;right:10px;top:10px;padding:5px 10px;background:rgba(38,40,39,.8);border:1px solid rgba(255,255,255,.22);font-size:13px;font-weight:700;color:var(--white)}
  .stop-p .ptag,.sfig .ptag{display:none}   /* no telemóvel o ícone tapava as viaturas */
  .stops .stop-p{align-content:start}   /* as etapas têm todas a altura da maior: o espaço que sobra fica em baixo, não entre a fotografia e o texto */
  .stop-p .plinks .btn{white-space:normal;text-align:center;line-height:1.25}
  .zgrid{gap:0}
  .zgrid .ztxt{display:contents}   /* no telemóvel o mapa vem logo a seguir ao título */
  .zgrid .ztxt>*{order:2}
  .zgrid .ztxt>.bc,.zgrid .ztxt>.plate,.zgrid .ztxt>h1{order:0}
  .zgrid .ztxt>.plate{justify-self:start}
  .zgrid .zmapw{order:1;margin:4px auto 26px}
}
@media (max-width:700px){
  .stop-p figure{aspect-ratio:16/9}
  .stop-p h3{font-size:21px;line-height:1.2}
  .stop-p .txt{gap:12px}
  .stops .stop-p .chips{gap:6px}
  .stops .stop-p .chip{font-size:13.5px;min-height:32px;padding:4px 10px}
  .truck{margin:0 calc(-1 * var(--gr)) 0 calc(-1 * var(--gl))}   /* esquema de margem a margem */
  .dica{font-size:15px}
}
@media (max-width:700px) and (max-height:820px){
  .stops .stop-p .desc{display:none}   /* ecrãs mais baixos: a etapa cabe inteira; o texto completo está na página do serviço */
}
@media (max-width:700px) and (max-height:700px){   /* telemóveis baixos (640–700 px): fotografia mais baixa e espaços menores para a etapa caber */
  .stop-p figure{aspect-ratio:2/1}
  .stops .stop-p{gap:12px}
  .stop-p .txt{gap:10px}
}
@media (prefers-reduced-motion:reduce){
  .zmap.prep .setas .sl{stroke-dashoffset:0}
  .zmap.prep .setas .sh,.zmap.prep .setas text{opacity:1}
}

/* ---------- v5.3: «Voltar», textos do Percurso por ecrã, animações simples (uma vez, quando a zona aparece) ---------- */
.hdr .lado{display:flex;align-items:center;gap:12px;min-width:0}
.voltar{display:inline-flex;align-items:center;gap:4px;min-height:44px;padding:0 12px 0 6px;border:1.5px solid rgba(255,255,255,.5);color:var(--white);text-decoration:none;font-weight:700;font-size:15px;flex:none}
.voltar svg{width:22px;height:22px}
.voltar:hover{border-color:var(--white)}
@media (max-width:480px){.hdr .lado:has(.voltar) .brand .serp{display:none}}   /* com o «Voltar», o logótipo chega para identificar */
/* temperatura: a barra enche do frio para o calor */
.tbar.prep i{clip-path:inset(0 100% 0 0)}
.tbar.prep.ver i{animation:enche 2.4s .3s cubic-bezier(.4,0,.2,1) forwards}
@keyframes enche{to{clip-path:inset(0 0 0 0)}}
/* ícones da qualidade e dos pontos do camião: cada um desenha-se quando está inteiro no ecrã (pathLength=1, posto pelo site.js);
   traço 1 e intervalo 2, deslocado 1,05: antes de começar não fica nenhum ponto à vista */
[data-anima="desenho"].prep path{stroke-dasharray:1 2;stroke-dashoffset:1.05}
[data-anima="desenho"].prep.ver path{animation:tracos 1.8s var(--atraso,0s) cubic-bezier(.45,0,.25,1) forwards}
@keyframes tracos{to{stroke-dashoffset:0}}
/* como trabalhamos: os passos acendem por ordem, como a rota */
.passos.prep li{border-top-color:#CFD3D1}
.passos.prep li::before{background:var(--lona)}
.passos.prep.ver>li{animation:acendeb .9s .3s forwards}
.passos.prep.ver>li::before{animation:acende .9s .3s forwards}
.passos.prep.ver>li:nth-child(2),.passos.prep.ver>li:nth-child(2)::before{animation-delay:1.3s}
.passos.prep.ver>li:nth-child(3),.passos.prep.ver>li:nth-child(3)::before{animation-delay:2.3s}
.passos.prep.ver>li:nth-child(4),.passos.prep.ver>li:nth-child(4)::before{animation-delay:3.3s}
@keyframes acendeb{to{border-top-color:var(--red)}}
@keyframes acende{to{background:var(--red)}}

/* ---------- v5.5: complementos na página inicial: o esquema da Frota, com setas; em baixo muda o complemento ---------- */
.chome{margin:30px 0 4px;padding-top:24px;border-top:1px solid rgba(38,40,39,.16)}
.chome h3{margin:0 0 14px;font-size:clamp(19px,2vw,22px);color:var(--tx)}
.chome .dica{margin:0 0 18px}
.light .dica{background:var(--white)}   /* na secção clara, a caixa da dica destaca-se do fundo */
.chome .cw{display:grid;grid-template-columns:minmax(0,3fr) minmax(0,2fr);gap:clamp(20px,3vw,44px);align-items:center}
/* os 6 complementos alinhados por cima do texto, como na Frota no telemóvel (aqui em todas as larguras) */
.chome .ctabs{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin:0}
.chome .ctabs button{min-height:48px;padding:6px;border:1.5px solid var(--lona);background:var(--white);font-weight:600;font-size:14px;line-height:1.2;color:var(--tx);text-align:center;transition:background .2s,border-color .2s,color .2s}
@media (hover:hover){.chome .ctabs button:hover{border-color:var(--asf)}}
.chome .ctabs button.on{background:var(--red);border-color:var(--red);color:var(--white)}
.cinfo .c-tit{margin:16px 0 8px;font-size:clamp(21px,2vw,24px);line-height:1.2;color:var(--tx)}
.cinfo .c-txt{color:var(--tx2)}
.cinfo .c-mais{display:inline-block;margin-top:14px}
@media (max-width:1000px){
  .chome .cw{grid-template-columns:minmax(0,1fr);gap:16px}
  .chome .truck{max-width:none;width:auto}   /* v6.5: o camião ocupa a largura e fica centrado; v7.5: auto (com width:100% e as margens negativas o esquema ficava 40 px à esquerda) */
  .cinfo .c-tit{margin-top:14px}
}

/* ---------- v5.6: descrição comercial de cada tipo de viatura ---------- */
.fcard .fdesc{margin:-4px 0 2px;color:var(--tx2);font-size:16px;line-height:1.45}

/* ---------- v5.9: página «Como trabalhamos»: cada passo com o detalhe por baixo ---------- */
.passos-d ul{margin:6px 0 0;padding-left:18px;display:grid;gap:6px;color:var(--tx2);font-size:15px;line-height:1.45}
.passos-d ul{list-style:disc}
.passos-d ul li{display:list-item;background:none;padding:0;border:0;animation:none}   /* as linhas do detalhe não são passos */
.passos-d ul li::before{content:none}
@media (max-width:700px){.passos-d ul{grid-column:2}}
/* cabeçalho do computador com «Como trabalhamos»: cada nome numa linha; quando aperta, sai primeiro o nome ao lado do logótipo (com «Voltar») e depois o telefone (fica em «Contactos») */
.hdr nav a{white-space:nowrap}
@media (max-width:1380px){.hdr nav{gap:20px}.hdr .lado:has(.voltar) .brand .serp{display:none}}
@media (max-width:1240px){.hdr .tel{display:none}}

/* ---------- v6.0: «Subir» e «Descer» na página inicial ---------- */
.subir{position:fixed;right:16px;bottom:24px;z-index:45;display:inline-flex;align-items:center;gap:6px;min-height:48px;padding:0 16px 0 12px;background:var(--asf);color:var(--white);border:2px solid var(--yel);font-weight:700;font-size:15px;box-shadow:0 4px 14px rgba(0,0,0,.3)}
.subir[hidden]{display:none}
.subir svg{width:22px;height:22px}
@media (max-width:700px){.subir{bottom:calc(69px + 14px + env(safe-area-inset-bottom,0px));right:12px;width:48px;padding:0;justify-content:center;border-radius:50%}.subir span{display:none}}   /* no telemóvel só a seta, para tapar menos texto */
.desce{position:absolute;left:50%;bottom:18px;z-index:3;margin-left:-24px;width:48px;height:48px;display:grid;place-items:center;color:var(--white);border:2px solid rgba(255,255,255,.65);border-radius:50%;background:rgba(38,40,39,.35)}
.desce svg{width:24px;height:24px}
.js .desce{animation:balanca 1.8s 3s ease-in-out 2}
@keyframes balanca{0%,100%{transform:none}50%{transform:translateY(8px)}}
@media (max-width:700px){.desce{display:none}}   /* no telemóvel o «Ver serviços» já está à mão e a seta tapava o texto */

/* ---------- v6.2: volumes um a um no pedido de cotação ---------- */
.vols{display:grid;gap:10px}
.vrow{display:grid;grid-template-columns:minmax(0,.8fr) repeat(3,minmax(0,1fr)) minmax(0,1.1fr) 44px;gap:8px;align-items:end;padding:10px;background:var(--branco)}
.vrow .fl>span{font-size:14px}
.vrow input{min-width:0}
.vdel{width:44px;height:48px;border:1.5px solid var(--lona);background:var(--white);font-size:22px;line-height:1;color:var(--tx)}
.vadd{margin-top:10px;min-height:44px}
.vtot{margin:10px 0 0;font-weight:700;color:var(--tx)}
@media (max-width:560px){
  .vrow{grid-template-columns:repeat(3,minmax(0,1fr))}
  .vrow .vq{grid-column:1}.vrow .vp{grid-column:2}.vrow .vdel{grid-column:3;justify-self:end}
  .vrow .vq,.vrow .vp,.vrow .vdel{grid-row:1}   /* quantidade e peso primeiro, as medidas por baixo */
}

/* ---------- v6.5: herói igual ao do telemóvel também em PC (logótipo grande ao centro, o resto por baixo), título mais pequeno ---------- */
@media (min-width:701px){
  .hero{align-items:center}
  .hero .g1{background:rgba(38,40,39,.58)}
  .hero .wrap{grid-template-columns:1fr;justify-items:center;align-items:center;gap:28px;padding-block:clamp(48px,6vw,84px)}
  .hero .block{align-items:center;text-align:center;gap:22px}
  .hero .id{flex-direction:column;gap:14px}
  .lmark{--lw:clamp(170px,19vw,250px)}
  .hero .title{align-self:center;border-left:0;padding:14px 26px;max-width:none}
  .hero h1{font-size:clamp(24px,2.8vw,38px)}
  .hero .lead{margin-inline:auto}
  .hero .ctas{justify-content:center}
  .hero .glass{justify-self:center;max-width:none;width:100%;max-width:760px}
  .hero .glass .sq{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px 32px}
  .hero .glass{text-align:left}
}
/* ---------- v6.5: Percurso em PC: fotografias à esquerda, mapa maior à direita; em tablet o mapa maior ---------- */
@media (min-width:1001px){
  .perc .grid{grid-template-columns:minmax(0,6fr) minmax(0,5fr)}
  .perc .grid .map{order:2;align-items:center}
  .perc .grid .stops{order:1}
  .map svg{max-height:calc(100vh - 150px)}
}
@media (min-width:701px) and (max-width:1000px){
  .pmob{grid-template-columns:240px minmax(0,1fr);gap:32px}
  .pmob svg{width:240px}
  .pmob .name{font-size:clamp(28px,4.4vw,38px)}
  .pmob .ctr{font-size:16px}
}
@media (min-width:1001px){.chome .cw{grid-template-columns:minmax(0,7fr) minmax(0,4fr)}}   /* v6.5: camião maior em PC */

/* ---------- v6.9: âncoras não ficam atrás do cabeçalho fixo (73 px) ---------- */
html{scroll-padding-top:88px}
/* ---------- v6.9: «Ler mais»: as ligações .lnk ganham uma seta que acena ao entrar no ecrã e ao passar o rato; vermelhas nas secções claras ---------- */
/* v7.0: seta dentro de um círculo (lê-se como botão), que desliza 3 vezes com um halo ao entrar no ecrã */
.lnk::after{content:"\203A";display:inline-flex;align-items:center;justify-content:center;width:1.3em;height:1.3em;margin-left:.45em;vertical-align:-.22em;border:2px solid currentColor;border-radius:50%;font:800 1.05em/1 Archivo,sans-serif;padding-bottom:.12em;box-sizing:border-box;transition:transform .3s cubic-bezier(.2,.7,.2,1),background .25s,color .25s}
.lnk:hover::after,.lnk:focus-visible::after,.scard:hover .lnk::after,.fm:hover .lnk::after{transform:translateX(5px)}
.light .lnk:hover::after,.white .lnk:hover::after{background:#CC050E;color:var(--white)}
.coal .lnk:hover::after,.dark .lnk:hover::after,.scard:hover .lnk::after{background:var(--white);color:var(--asf)}
.js .lnk.prep.ver::after{animation:acena .9s .3s ease-in-out 3}
@keyframes acena{0%,100%{transform:none;box-shadow:0 0 0 0 color-mix(in srgb,currentColor 25%,transparent)}45%{transform:translateX(8px);box-shadow:0 0 0 7px color-mix(in srgb,currentColor 22%,transparent)}}
.light .lnk,.white .lnk{color:#CC050E}   /* vermelho da marca um ponto mais escuro: 5,1:1 sobre o fundo claro (axe) */
.light .lnk:hover,.white .lnk:hover{color:#B3050F}
@media (prefers-reduced-motion:reduce){.lnk::after{transition:none}.js .lnk.prep.ver::after{animation:none}}

/* ---------- v7.0: o que é clicável diz que é: cartões com ligação ganham um botão redondo na fotografia e levantam ao passar ---------- */
.scard .th,.fm .th{position:relative}
.scard .th::after,.fm .th::after{content:"\203A";position:absolute;right:12px;bottom:12px;width:42px;height:42px;display:grid;place-items:center;border-radius:50%;background:rgba(38,40,39,.78);color:var(--white);border:2px solid rgba(255,255,255,.92);font:800 28px/1 Archivo,sans-serif;padding-bottom:4px;box-sizing:border-box;transition:background .25s,transform .25s}
.scard:hover .th::after,.fm:hover .th::after,.scard:focus-visible .th::after,.fm:focus-visible .th::after{background:var(--red);transform:translateX(4px)}
.scard,.fm{transition:transform .25s,box-shadow .25s,background .25s}
@media (hover:hover){.scard:hover,.fm:hover{transform:translateY(-3px);box-shadow:0 12px 26px rgba(0,0,0,.18)}}
.fm .b .lnk{margin-top:6px;font-size:15px}
/* ---------- v7.0: mudança de tema à primeira vista: barra vermelha no topo de cada secção (branca na secção vermelha) e placa maior ---------- */
main>.sec{position:relative}
main>.sec::before{content:"";position:absolute;left:0;right:0;top:0;height:6px;background:var(--red)}
main>.sec.red::before{background:var(--white)}
.sh .plate{font-size:clamp(26px,2.4vw,32px)}
@media (prefers-reduced-motion:reduce){.scard,.fm{transition:none}.scard:hover,.fm:hover{transform:none}}

/* ---------- v7.1: «Saber mais sobre …» nas caixas de ações: altura dos botões, para alinhar ---------- */
.ctas .lnk{display:inline-flex;align-items:center;min-height:44px}
.fimbox .plinks .btn{white-space:nowrap}
.ftr .legal span a{text-decoration:underline;text-underline-offset:3px}

/* ---------- v7.2: locais intermédios no pedido ---------- */
.locais:empty{display:none}
.locais{display:grid;gap:8px;margin-top:10px}
.lrow{display:grid;grid-template-columns:minmax(0,1fr) 44px;gap:8px;align-items:end}

/* ---------- v7.3: as fotografias vêm dentro de <picture> (WebP + JPEG); o embrulho não pode criar caixa própria ---------- */
picture{display:contents}

/* ---------- v7.6: planta das caixas vista de cima (Frota), escala única ---------- */
.planta-w{margin-top:clamp(36px,5vw,64px);padding-top:clamp(28px,4vw,44px);border-top:1px solid #CDD2CF}
.sh-planta{margin-bottom:clamp(20px,3vw,32px)}
.planta{display:flex;flex-direction:column;gap:0}
.prow{display:grid;grid-template-columns:200px minmax(0,1fr) 150px;gap:0 28px;align-items:center;padding:18px 0;border-bottom:1px solid #CDD2CF}
.prow:last-child{border-bottom:0}
.pr-regua{padding:0 0 6px;border-bottom:0;align-items:end}
.pdraw{position:relative;min-width:0}
.pdraw svg{display:block;width:100%;height:auto}
.pmarcas{position:relative;height:18px;font-size:12.5px;font-weight:600;color:var(--tx2)}
.pmarcas span{position:absolute;bottom:0;transform:translateX(-50%);white-space:nowrap}
.pmarcas span:first-child{transform:none}
.plab{display:grid;grid-template-columns:auto minmax(0,1fr);grid-template-areas:"v v" "n u" "d d";column-gap:10px;align-items:baseline}
.plab .pv{grid-area:v;font-size:13px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--tx2)}
.plab .pn{grid-area:n;font-size:clamp(40px,4vw,56px);color:var(--red);line-height:.9}
.plab .pu{grid-area:u;font-size:16px;font-weight:600;color:var(--tx)}
.plab em{grid-area:d;font-style:normal;font-size:14px;line-height:1.3;color:var(--tx2);margin-top:6px}
.pkg b{display:block;font-family:"Serpentine Stand-in","Exo 2",Impact,sans-serif;font-style:italic;font-weight:800;font-size:clamp(24px,2.4vw,32px);line-height:1;color:var(--tx)}
.pkg span{display:block;margin-top:4px;font-size:15px;color:var(--tx2)}
/* a carga «entra» palete a palete quando a planta aparece (uma vez; nada com «reduzir movimento», porque o JS não prepara) */
.explora{margin:22px 0 0;padding:16px 20px;border-left:4px solid var(--red);background:var(--white);font-size:16px;line-height:1.5;color:var(--tx)}
.explora b{color:var(--red)}
.explora .lnk{margin-left:6px;white-space:nowrap}
@media (max-width:700px){.explora{padding:14px 16px;font-size:15.5px}}
.prow.prep .pl{opacity:0}
.prow.prep.ver .pl{animation:carrega .4s calc(var(--atraso,0s) + .15s + var(--i,0) * 95ms) ease-out forwards}   /* v8.2: por viatura, 95 ms por palete (TIR ≈ 3,6 s) */
@keyframes carrega{from{opacity:0;transform:translateX(-4px)}to{opacity:1;transform:none}}
@media (max-width:1000px){.prow{grid-template-columns:170px minmax(0,1fr) 120px;gap:0 18px}}
@media (max-width:700px){
  .prow{grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"lab kg" "draw draw";gap:10px 16px;padding:16px 0}
  .plab{grid-area:lab}.pkg{grid-area:kg;text-align:right;align-self:end}.pdraw{grid-area:draw}
  .pr-regua{grid-template-columns:minmax(0,1fr);grid-template-areas:"draw"}
  .pr-regua .plab,.pr-regua .pkg{display:none}
  .plab .pn{font-size:38px}.plab em{font-size:13.5px}
  .pmarcas{font-size:11.5px}
}

/* v7.6: ligação bem visível para a simulação da carga (planta das caixas), logo a seguir ao título da Frota */
.simula{margin:calc(-1 * clamp(10px,2vw,24px)) 0 clamp(24px,3vw,36px);font-size:clamp(17px,1.4vw,20px)}
.simula .lnk::after{width:1.4em;height:1.4em}

/* ---------- v7.7: as quatro modalidades na página /servicos/modalidades ---------- */
.mods{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:16px}   /* v7.8: cinco, lado a lado em PC */
.mod{background:var(--branco);padding:22px 22px 18px;border-top:4px solid var(--red)}
.mod h3{margin:0 0 8px;font-size:clamp(22px,2vw,26px);color:var(--red);text-transform:none}
.mod p{margin:0 0 12px;font-size:16px;line-height:1.5;color:var(--tx)}
.mod .sq{gap:6px;font-size:14.5px;color:var(--tx2)}   /* herda o quadrado vermelho do .sq */
@media (max-width:1240px){.mods{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media (max-width:1000px){.mods{grid-template-columns:repeat(2,minmax(0,1fr))}.mod:last-child:nth-child(odd){grid-column:1/-1}}
@media (max-width:600px){.mods{grid-template-columns:minmax(0,1fr);gap:12px}.mod{padding:18px 18px 14px}}

/* ---------- v7.6: avaliações Google (Qualidade) e linha na inicial ---------- */
.gaval{margin-top:clamp(32px,4vw,48px);padding-top:clamp(24px,3vw,36px);border-top:1px solid #CDD2CF}
.ghead{display:flex;align-items:baseline;justify-content:space-between;gap:12px 32px;flex-wrap:wrap}
.ghead h3{margin:0;font-size:clamp(22px,2.4vw,28px)}
.gsum{margin:0;font-size:16px;color:var(--tx2)}
.gsum b{color:var(--tx)}
.gsum a{white-space:nowrap}
.gcards{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px;margin-top:20px}
.gcard{display:flex;flex-direction:column;gap:12px;min-height:180px;padding:22px 24px;background:var(--white);border:1px solid #CDD2CF}
.gcard p{margin:0;flex:1;font-size:16px;line-height:1.5;color:var(--tx)}
.gmeta{font-size:13.5px;font-weight:600;color:var(--tx2)}
.stars{display:flex;gap:4px}
.stars svg{width:20px;height:20px;fill:none;stroke:var(--tx2);stroke-width:1.8;stroke-linejoin:round}
.stars svg.on{fill:var(--yel);stroke:var(--tx)}
.gline{margin:18px 0 0;font-size:16px}
@media (max-width:1000px){.gcards{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:700px){.gcards{grid-template-columns:minmax(0,1fr);gap:12px}.gcard{min-height:0;padding:18px}}

/* ---------- v7.6: selo dos 25 anos com o ano em texto (sem editar a imagem) ---------- */
.simg{display:flex;flex-direction:column;align-items:center;gap:6px;width:120px}
.sano{display:inline-block;padding:3px 10px 2px;background:var(--red);color:var(--yel);font-size:15px;letter-spacing:.02em}
@media (max-width:700px){.simg{width:96px}.sano{font-size:14px;padding:2px 8px 1px}}

/* ---------- v7.8: etapa 06 — cada modalidade em destaque (nome + definição curta) e a frase das urgências ---------- */
.mlist{display:grid;gap:12px}
.mlist li{display:grid;grid-template-columns:4px minmax(0,1fr);column-gap:14px;row-gap:2px}
.mlist li::before{content:"";grid-row:1 / span 2;background:var(--red)}
.mlist b{color:var(--white);text-transform:none;font-size:clamp(19px,1.6vw,22px);line-height:1.15}
.mlist span{color:var(--txd);font-size:16px;line-height:1.35}
.urg{color:var(--txd);font-size:16px;line-height:1.5}
.urg b{color:var(--yel)}
.urg a{color:var(--white);font-weight:700;white-space:nowrap}
@media (max-width:700px){.mlist{gap:10px}.mlist b{font-size:18px}.mlist span{font-size:15px}.urg{font-size:15px}}
@media (max-width:700px) and (max-height:820px){   /* ecrãs baixos: só os nomes, lado a lado (como na descrição das outras etapas) */
  .stops .mlist{display:flex;flex-wrap:wrap;gap:8px 16px}
  .stops .mlist span{display:none}
  .stops .mlist li{grid-template-columns:4px auto;column-gap:8px}
  .stops .mlist b{font-size:16px}
}

/* ---------- v7.8e: «Opção mais escolhida pelos nossos clientes» por baixo do Personalizado ---------- */
.mlist li.top::before{grid-row:1 / span 3}
.mlist .mais,.mod .mais{justify-self:start;display:inline-block;font-style:normal;font-size:13px;font-weight:700;line-height:1.3;padding:3px 8px;background:var(--red-d);color:var(--yel)}
.mlist .mais{margin:4px 0 3px}
.mod .mais{margin:0 0 10px}
.opt span.op2{flex-direction:column;align-items:flex-start;justify-content:center;padding-top:4px;padding-bottom:4px;line-height:1.2}
.opt span.op2 small{font-size:12px;font-weight:700;color:var(--red-d)}
.opt input:checked+span.op2 small{color:var(--yel)}
@media (max-width:700px){.mlist .mais{font-size:12.5px;padding:3px 7px}}   /* cabe numa linha a partir de 390 px */
@media (max-width:700px) and (max-height:820px){.stops .mlist .mais{display:none}}

/* ---------- v7.9: grupagem nacional, em desenvolvimento — etapa 06 (fundo escuro, uma linha) e página das modalidades (fundo branco) ---------- */
.fut{position:relative;display:flex;flex-wrap:wrap;align-items:center;gap:4px 12px;margin:6px 0 0;padding-left:18px}
.fut::before{content:"";position:absolute;left:0;top:1px;bottom:1px;width:4px;background:repeating-linear-gradient(to bottom,var(--txd2) 0 6px,transparent 6px 11px)}
.fut b{color:var(--txd);text-transform:none;font-size:clamp(19px,1.6vw,22px);line-height:1.15}
.fut .dev{font-style:normal;font-size:13px;font-weight:700;line-height:1.3;padding:2px 7px;border:1px solid var(--txd2);color:var(--txd)}
.mfut{margin:16px 0 0;padding:16px 20px;border:2px dashed #B9BEBC;display:flex;flex-wrap:wrap;align-items:center;gap:6px 14px}
.mfut h3{margin:0;font-size:clamp(22px,2vw,26px);color:var(--tx2);text-transform:none}
.mfut .dev{font-size:13px;font-weight:700;line-height:1.3;padding:2px 7px;border:1px solid var(--tx2);color:var(--tx2)}
.mfut p{margin:0;flex-basis:100%;font-size:16px;line-height:1.5;color:var(--tx)}
@media (max-width:700px){.fut{margin-top:6px;gap:4px 10px}.fut b{font-size:18px}.fut .dev{font-size:12.5px;padding:2px 6px}.mfut{padding:14px 16px}}
@media (max-width:700px) and (max-height:820px){.stops .fut{margin-top:4px}.stops .fut b{font-size:16px}}

/* ---------- v8.3: o mesmo percurso de A para B em cada modalidade (esquema ilustrativo; uma passagem de 4,6 s; «reduzir movimento» = desenho final) ---------- */
.rotas{margin:clamp(20px,3vw,32px) 0 clamp(24px,3vw,36px);padding:clamp(16px,2.4vw,26px);background:var(--branco);border-left:4px solid var(--red)}
.rotas-t{margin:0 0 14px;font-size:17px;font-weight:700;line-height:1.35;color:var(--tx)}
.rlanes{display:grid;gap:12px}
.rl{display:grid;grid-template-columns:minmax(150px,270px) minmax(0,1fr);gap:4px 20px;align-items:center}
.rlab b{display:block;color:var(--red-d);font-size:19px;line-height:1.15;text-transform:none}
.rlab span{display:block;margin-top:1px;font-size:14px;line-height:1.3;color:var(--tx2)}
.rtrack{position:relative;height:56px}
.rline{position:absolute;left:8px;right:8px;top:40px;height:2px;background:#B9BEBC}
.rp{position:absolute;top:33px;width:16px;height:16px;border-radius:50%;font-size:10px;font-weight:700;line-height:16px;text-align:center;color:#FFFFFF}
.rp-a{left:0;background:var(--asf)}.rp-b{right:0;background:var(--red-d)}
.rrel{position:absolute;top:2px}.rrel-a{left:0}.rrel-b{right:0}
.rbar{position:absolute;top:52px;width:30px;height:4px;background:#D2D6D4}.rbar i{display:block;height:100%;background:var(--red);transform-origin:left center}
.rbar-a{left:0}.rbar-b{right:0}
.rrun{position:absolute;left:18px;right:50px;top:0;height:50px}
.rs{position:absolute;top:34px;width:10px;height:10px;margin-left:-7px;border-radius:50%;border:2px solid #FFFFFF;box-sizing:content-box}
.rs-outra{background:#8C918F}.rs-sua{background:var(--red)}
.rtk{position:absolute;top:22px;left:100%;width:34px;height:18px}
.rurg{position:absolute;left:0;top:-19px;width:34px;height:16px}.rurg svg{display:block}   /* v8.3: urgência (19h25) e dois motoristas (19h43), viajam com o camião */
.rseg{position:absolute;left:8px;top:-20px;width:18px;height:18px}.rseg svg{display:block}   /* v9 (20h35): cadeado do dedicado (seguro), viaja com o camião */
.rpou{position:absolute;top:-1px;width:26px;height:22px;margin-left:-13px}.rpou svg{display:block}   /* v9 (20h12): poupança fixa em cada paragem do Partilhado e do Aluguer */
.rcam{display:block}
.rcg{position:absolute;top:4px;width:7px;height:7px;background:#D9DCDA;border:1px solid #8C918F;box-sizing:content-box}
.rcg1{left:2px}.rcg2{left:12px}
.rvel{position:absolute;right:100%;top:4px;width:18px;height:10px;margin-right:2px;background:repeating-linear-gradient(to bottom,#8C918F 0 2px,transparent 2px 4px);opacity:0}
.rfoot{display:flex;flex-wrap:wrap;align-items:center;gap:8px 16px;margin-top:16px}
.rrep{min-height:44px;padding:8px 16px;border:2px solid var(--red-d);background:transparent;color:var(--red-d);font:inherit;font-size:15px;font-weight:700;cursor:pointer}
.rrep:focus-visible{outline:3px solid var(--asf);outline-offset:2px}
.rnota{font-size:13px;line-height:1.4;color:var(--tx2)}
.rotas:not(.prep) .rrep{display:none}
@media (hover:hover){.rrep:hover{background:var(--red-d);color:#FFFFFF}}
@media (max-width:700px){.rl{grid-template-columns:minmax(0,1fr);gap:2px}.rlab b{font-size:17px}.rlab span{font-size:13.5px}.rlanes{gap:6px}.rotas-t{margin-bottom:10px}.rfoot{margin-top:12px}}
/* estado inicial (só com animação) e as cinco passagens */
.rotas.prep .rtk{left:0}.rotas.prep .rcg{opacity:0}.rotas.prep .rbar i{transform:scaleX(0)}
.rotas.prep.ver .rl-expresso .rtk{animation:rx-exp 4.6s linear forwards}.rotas.prep.ver .rl-expresso .rvel{animation:rz-exp 4.6s linear forwards}
.rotas.prep.ver .rl-dedicado .rtk{animation:rx-ded 4.6s linear forwards}
.rotas.prep.ver .rl-personalizado .rtk{animation:rx-per 4.6s linear forwards}
.rotas.prep.ver .rl-personalizado .rbar-a i{animation:rb-a 4.6s linear forwards}.rotas.prep.ver .rl-personalizado .rbar-b i{animation:rb-b 4.6s linear forwards}
.rotas.prep.ver .rl-partilhado .rtk{animation:rx-par 4.6s linear forwards}
.rotas.prep.ver .rl-partilhado .rcg1{animation:rc-1 4.6s linear forwards}.rotas.prep.ver .rl-partilhado .rcg2{animation:rc-2 4.6s linear forwards}
.rotas.prep.ver .rl-aluguer .rtk{animation:rx-alu 4.6s linear forwards}
@keyframes rx-exp{0%,5%{left:0}46%,100%{left:100%}}
@keyframes rz-exp{0%,5%{opacity:0}9%,42%{opacity:1}47%,100%{opacity:0}}
@keyframes rx-ded{0%,14%{left:0}60%,100%{left:100%}}
@keyframes rx-per{0%,24%{left:0}45%,51%{left:50%}72%,100%{left:100%}}
@keyframes rb-a{0%{transform:scaleX(0)}22%,100%{transform:scaleX(1)}}
@keyframes rb-b{0%,72%{transform:scaleX(0)}94%,100%{transform:scaleX(1)}}
@keyframes rx-par{0%,8%{left:0}26%,36%{left:33%}54%,64%{left:66%}84%,100%{left:100%}}
@keyframes rc-1{0%,28%{opacity:0}33%,100%{opacity:1}}
@keyframes rc-2{0%,56%{opacity:0}61%,100%{opacity:1}}
@keyframes rx-alu{0%,6%{left:0}20%,28%{left:25%}42%,50%{left:50%}64%,72%{left:75%}88%,100%{left:100%}}
/* v9 (20h12): o mealheiro já não aparece no B à chegada — está fixo em cada paragem (sem animação) */

/* ---------- v8.3: Início — avaliações Google em estrelas (preenchem-se até à média, uma vez: 2 s); tocar abre as três avaliações ---------- */
.gstar{margin:28px 0 0;border:1px solid #4E504F;background:rgba(255,255,255,.04)}
.gstar summary{display:block;list-style:none;cursor:pointer}
.gstar summary::-webkit-details-marker{display:none}
.gstar summary:focus-visible{outline:3px solid var(--yel);outline-offset:2px}
@media (hover:hover){.gstar summary:hover{background:rgba(255,255,255,.05)}}
.gs-in{display:grid;grid-template-columns:auto minmax(0,1fr);grid-template-areas:"num est" "num tot" "ver ver";align-items:center;gap:4px 18px;padding:18px 22px}
.gs-num{grid-area:num;font-size:clamp(48px,5vw,60px);line-height:.9;color:var(--white)}
.gs-est{grid-area:est;position:relative;justify-self:start;font-size:clamp(26px,2.6vw,32px);line-height:0}
.gs-est>span{display:flex;gap:.125em}
.gs-est svg{flex:none;width:1em;height:1em;stroke-width:1.6;stroke-linejoin:round}
.gs-base svg{fill:none;stroke:var(--txd2)}
.gs-cheia{position:absolute;inset:0;clip-path:inset(0 calc((1 - var(--f)) * 100%) 0 0)}
.gs-cheia svg{fill:var(--yel);stroke:var(--yel)}
.gs-tot{grid-area:tot;font-size:16px;line-height:1.35;color:var(--txd)}
.gs-ver{grid-area:ver;justify-self:start;display:inline-flex;align-items:center;gap:12px;min-height:44px;margin-top:6px;font-weight:700;color:var(--white);text-decoration:underline;text-decoration-thickness:2px;text-underline-offset:5px}
.gs-ver::after{content:"";width:8px;height:8px;margin-top:-5px;border-right:2px solid currentColor;border-bottom:2px solid currentColor;transform:rotate(45deg);transition:transform .2s}
.gstar[open] .gs-ver::after{margin-top:5px;transform:rotate(-135deg)}
.gs-f{display:none}.gstar[open] .gs-a{display:none}.gstar[open] .gs-f{display:inline}
.gs-corpo{padding:0 22px 22px}
.gs-corpo .gcards{margin-top:4px}
.gs-pe{margin:16px 0 0}
.gs-corpo .note{margin-top:10px}
.gs-est.prep .gs-cheia{clip-path:inset(0 100% 0 0)}
.gs-est.prep.ver .gs-cheia{animation:gs-enche 1.8s cubic-bezier(.25,.7,.35,1) .2s forwards}
@keyframes gs-enche{from{clip-path:inset(0 100% 0 0)}to{clip-path:inset(0 calc((1 - var(--f)) * 100%) 0 0)}}
@media (max-width:700px){.gs-in{padding:16px 18px;gap:2px 14px}.gs-corpo{padding:0 14px 16px}}
@media (prefers-reduced-motion:reduce){.gs-ver::after{transition:none}}

/* ---------- v9 · Percurso (Gonçalo, 7 nov 18h01 e 20h00): abre com «Zonas e tipos de envio» e tem seis etapas; a partir de 600 px (fold, tablet e PC),
   mapa à esquerda e etapas em carrossel à direita, no mesmo ecrã; no telemóvel continua empilhado ---------- */
@media (min-width:600px){
  .perc .c{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,7fr);grid-template-areas:"sh sh" "idx idx" "mapa etapas";column-gap:clamp(20px,3.2vw,56px);align-items:start}
  .perc .sh{grid-area:sh}
  .perc .idx{grid-area:idx;margin:0 0 18px}
  .perc .grid{display:contents}
  .perc .pmob,.perc .grid .map{grid-area:mapa;position:sticky;top:88px;order:0}
  .perc .grid .stops{grid-area:etapas;order:0;flex-direction:row;gap:16px;overflow-x:auto;scroll-snap-type:x mandatory;scrollbar-width:none;margin:0;padding:0 0 6px;scroll-padding-left:0;-webkit-mask-image:none;mask-image:none}
  .perc .grid .stops::-webkit-scrollbar{display:none}
  .perc .stop-p{flex:0 0 100%;scroll-snap-align:start;scroll-margin-top:0;align-content:start}
  .perc .stops .fim-p{min-height:0}
  .perc .stop-p figure{aspect-ratio:16/9;max-height:min(44vh,460px)}
  .perc .pcount{display:none}
}
@media (min-width:600px) and (max-width:1000px){
  .perc .pmob{display:flex;flex-direction:column;align-items:stretch;gap:12px;margin:0}
  .perc .pmob svg{width:100%;height:auto;max-height:max(250px,calc(100svh - 300px))}
  .perc .pmob .info{flex-direction:row;align-items:center;justify-content:space-between;gap:10px}
  .perc .pmob .name{display:none}
  .perc .pmob .ctr{font-size:15px}
}
@media (min-width:1001px){
  .perc .grid .map{display:flex}
  .perc .map svg{max-height:calc(100svh - 290px)}
}
/* v9 · abertura do Percurso «Zonas e tipos de envio»: duas listas (caixas a partir de 600 px; em linha no telemóvel) */
.tenv{margin:2px 0 -6px;font-size:15px;font-weight:700;line-height:1.3;color:var(--white)}
.zl .chip.top{background:var(--red-d);border-color:var(--red-d);color:var(--white)}
.zl .chip small{margin-left:8px;font-size:12px;font-weight:700;color:var(--yel)}
.zl .chip.edev{border-style:dashed;color:var(--txd)}
.zl .chip.edev small{color:var(--txd2)}
@media (max-width:599px){   /* telemóvel: as listas em linha, sem caixas, para a abertura não ficar mais alta do que as etapas */
  .stops .fim-p .fimbox{gap:10px}
  .stops .fim-p .plate{font-size:19px}   /* ≥ 18,7 px: amarelo sobre vermelho só passa como letra grande (3,9:1) */
  .stops .zl{display:block;font-size:15px;line-height:1.55}
  .stops .stop-p .zl .chip{display:inline;border:0;min-height:0;padding:0;font-size:15px;font-weight:600;background:none}
  .stops .stop-p .zl .chip:not(:last-child)::after{content:"\00a0· ";color:var(--txd2);font-weight:700}
  .stops .stop-p .zl .chip.top{color:var(--white)}
  .stops .zl .chip small{margin-left:5px;white-space:nowrap}
  .stops .stop-p .zl .chip.edev{color:var(--txd2)}
}
@media (min-width:600px) and (max-width:1000px){   /* coluna das etapas mais estreita: etiquetas e placa mais pequenas */
  .perc .stops .stop-p .chip{font-size:13.5px;min-height:32px;padding:4px 10px}
  .perc .fimbox .plate{font-size:clamp(19px,2.6vw,24px)}
  .perc .idx button{min-height:34px}
}
@media (max-width:359px){.stops .fim-p .fimbox{padding:16px;gap:8px}.stops .fim-p h3{font-size:20px}.stops .zl,.stops .stop-p .zl .chip{font-size:14px}.stops .fim-p .tenv{font-size:14px}}   /* v9: abertura a 320 px */
