/* NIF Express v3 (amarelo «Expresso»): tokens, componentes, cabeçalho, rodapé e banner de cookies.
   Gerado a partir do mockup site/amarelo/_shell.html; ver includes/v3-layout.php. */
/* Archivo auto-alojada (antes Google Fonts): ficheiros variáveis só com wdth até 100 (a página nunca passa dos 100%), em assets/fonts/ (sem ?v=: se
   um ficheiro mudar, dar-lhe nome novo, porque vai com cache imutável). latin-ext só é descarregado se a página usar caracteres desse bloco
   (nomes com ł, ş, č… escritos pelos clientes). Sem vietnamita (o site não o usa). */
@font-face{font-family:Archivo;font-style:normal;font-weight:400;font-stretch:75%;font-display:swap;src:url(../fonts/archivo-latin-ext.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:Archivo;font-style:normal;font-weight:900;font-stretch:75%;font-display:swap;src:url(../fonts/archivo-latin-ext.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:Archivo;font-style:normal;font-weight:400 700;font-stretch:100%;font-display:swap;src:url(../fonts/archivo-latin-ext.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:Archivo;font-style:normal;font-weight:400;font-stretch:75%;font-display:swap;src:url(../fonts/archivo-latin.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:Archivo;font-style:normal;font-weight:900;font-stretch:75%;font-display:swap;src:url(../fonts/archivo-latin.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:Archivo;font-style:normal;font-weight:400 700;font-stretch:100%;font-display:swap;src:url(../fonts/archivo-latin.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
/* Fonte de recurso com as métricas da Archivo (size-adjust medido no Chrome sobre textos reais do site em 9 páginas: Archivo/Arial = 0,987 / 1,004 / 0,954 / 0,986
   nos pesos 400 / 500 / 600 / 700 e 0,833 nos títulos 75%/900). Enquanto a Archivo descarrega, o texto ocupa praticamente o mesmo espaço e a troca não desloca a página
   (CLS de 0,22 nos guias). Antes o recurso era «Arial Narrow» para tudo, 20% mais estreito do que a Archivo no corpo.
   unicode-range só latim: o cirílico e o CJK dos nomes de idiomas no rodapé continuam a cair onde caíam (Arial Narrow / fonte do sistema). */
@font-face{font-family:"Archivo Fallback";font-weight:400;font-stretch:100%;size-adjust:98.7%;src:local("Arial"),local("ArialMT"),local("Helvetica"),local("Liberation Sans"),local("Roboto");unicode-range:U+0000-024F,U+2000-206F,U+20A0-20CF,U+2122,U+2191,U+2193,U+2212,U+2215}
@font-face{font-family:"Archivo Fallback";font-weight:500;font-stretch:100%;size-adjust:100.4%;src:local("Arial"),local("ArialMT"),local("Helvetica"),local("Liberation Sans"),local("Roboto");unicode-range:U+0000-024F,U+2000-206F,U+20A0-20CF,U+2122,U+2191,U+2193,U+2212,U+2215}
@font-face{font-family:"Archivo Fallback";font-weight:600;font-stretch:100%;size-adjust:95.4%;src:local("Arial Bold"),local("Arial-BoldMT"),local("Helvetica Bold"),local("Liberation Sans Bold"),local("Roboto Bold");unicode-range:U+0000-024F,U+2000-206F,U+20A0-20CF,U+2122,U+2191,U+2193,U+2212,U+2215}
@font-face{font-family:"Archivo Fallback";font-weight:700;font-stretch:100%;size-adjust:98.6%;src:local("Arial Bold"),local("Arial-BoldMT"),local("Helvetica Bold"),local("Liberation Sans Bold"),local("Roboto Bold");unicode-range:U+0000-024F,U+2000-206F,U+20A0-20CF,U+2122,U+2191,U+2193,U+2212,U+2215}
@font-face{font-family:"Archivo Fallback";font-weight:700 900;font-stretch:75%;size-adjust:83.3%;src:local("Arial Bold"),local("Arial-BoldMT"),local("Helvetica Bold"),local("Liberation Sans Bold"),local("Roboto Bold");unicode-range:U+0000-024F,U+2000-206F,U+20A0-20CF,U+2122,U+2191,U+2193,U+2212,U+2215}
:root{--ink:#141414;--canvas:#FFFFFF;--y:#FFD400;--y-hover:#EBC400;--y-active:#D6B300;--grey:#F2F2F0;--line:#DADAD6;--muted:#5E5E5A;--alert:#C8102E;--success:#0F7A4A;--ink-lift-1:#2A2A2A;--ink-lift-2:#383838;
--f:'Archivo','Archivo Fallback','Arial Narrow',Arial,sans-serif;--box:var(--y);--let:var(--ink);--wm:var(--ink)}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--canvas);color:var(--ink);font:400 16px/1.5 var(--f);font-stretch:100%;font-variant-numeric:tabular-nums;overflow-x:clip}
img,svg{max-width:100%}
h1,h2,h3,h4,p,figure,blockquote,dl,dd{margin:0}
ul,ol{margin:0;padding:0;list-style:none}
a{color:var(--ink);font-weight:600;text-decoration:underline;text-decoration-thickness:2px;text-underline-offset:3px}
h1,h2,h3{text-wrap:balance}
.wrap{max-width:1212px;margin:0 auto;padding:0 16px}
/* type */
.d{hyphens:auto;overflow-wrap:break-word;font-family:var(--f);font-stretch:75%;font-weight:900;letter-spacing:-.01em;line-height:.95;text-transform:uppercase;text-wrap:balance}
.lab{font:700 12px/1.3 var(--f);font-stretch:100%;text-transform:uppercase;letter-spacing:.08em;color:var(--muted)}
.fld{font:500 13px/1.3 var(--f);color:var(--muted)}
.fh{font:700 15px/1.3 var(--f);margin-bottom:10px}
.muted{color:var(--muted)}
.small{font-size:13px;line-height:1.45}
.num{font-variant-numeric:tabular-nums}
/* marks, icons */
.mk,.lk{display:block;overflow:visible}
.wm{font-family:var(--f);font-weight:900;font-stretch:75%;font-size:27px;letter-spacing:.02em;fill:var(--wm)}
.ic{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;flex:none}
.ic.lg{width:24px;height:24px}
/* surfaces */
.on-y{background:var(--y);--box:var(--ink);--let:var(--y);--wm:var(--ink)}
.on-g{background:var(--grey)}
/* buttons */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:12px 24px;border-radius:9999px;font:700 16px/1 var(--f);font-stretch:100%;text-decoration:none;border:2px solid transparent;white-space:nowrap;min-height:44px;cursor:pointer;transition:background-color .15s,border-color .15s,color .15s,transform .1s}
.btn-p{background:var(--y);color:var(--ink);border-color:var(--ink)}
.btn-p:hover{background:var(--y-hover)}
.btn-p:active{background:var(--y-active);transform:scale(.98)}
.btn-s{background:transparent;color:var(--ink);border-color:var(--ink)}
.btn-s:hover{background:var(--grey)}
.btn-s:active{transform:scale(.98)}
/* on yellow bands the primary inverts to an ink fill with white text (18.4:1; never yellow text); hover and active lift the fill one and two steps */
.on-y .btn-p,.hero .btn-p{background:var(--ink);color:var(--canvas);border-color:var(--ink)}
.on-y .btn-p:hover,.hero .btn-p:hover{background:var(--ink-lift-1);border-color:var(--ink-lift-1)}
.on-y .btn-p:active,.hero .btn-p:active{background:var(--ink-lift-2);border-color:var(--ink-lift-2);transform:scale(.98)}
.on-y .btn-s:hover{background:var(--y-hover)}
.btn-sm{padding:10px 20px}
.btn .ic{width:16px;height:16px}
.alink{display:inline-flex;align-items:center;gap:8px;min-height:44px}
/* BY seal */
.seal{display:flex;flex-direction:column;align-items:flex-start;gap:4px;border-left:1px solid var(--ink);padding-left:16px}
.seal .by{font:600 12px/1 var(--f);letter-spacing:.22em;color:var(--muted);text-transform:uppercase}
.seal img{width:65px;height:30px;object-fit:contain;display:block}
.lk-row{display:flex;align-items:center;gap:16px}
/* sections */
.sec{border-top:1px solid var(--ink);padding:72px 0 88px}
.sec-h{display:grid;grid-template-columns:minmax(0,1fr);gap:16px;margin-bottom:48px}
.sec-h h2{font-size:clamp(34px,4.4vw,52px);max-width:22ch}
.sec-h p{max-width:62ch;color:var(--muted);font-size:17px}
/* nav */
.nav{position:relative;display:flex;align-items:center;gap:32px;padding:24px 0}
.nav .lkp{display:flex;align-items:center;min-height:44px;text-decoration:none}
.nav ul.links{display:flex;gap:24px;margin-left:auto}
.nav a{text-decoration:none}
.nav .links a,.nav .login{display:inline-flex;align-items:center;min-height:44px;font-weight:600;font-size:15px}
.nav .cta{display:flex;align-items:center;gap:24px}
.menu{display:none}
/* cabeçalho colado ao topo (desktop, páginas com cabeçalho completo; o reduzido do checkout não leva a classe .hdr).
   Altura FIXA: .nav de 44 + 2×16 px de padding + 2 px da linha = --hdr-h; não encolhe ao rolar, por isso a página não salta.
   Entre 901 e ~1100px, em línguas compridas, o botão e o menu quebravam linha e o cabeçalho colado chegava aos 95-103px (12-13% de um ecrã de 768px):
   a regra de 901-1100px mais abaixo encurta os espaços e põe o botão numa linha (78-80px nas 9 línguas). Se ainda assim algo quebrar, assets/js/v3.js
   passa --hdr-h à altura real (e remove-o abaixo dos 901px); sem JavaScript vale este valor.
   z-index 50 > .lang ul (40): os menus do cabeçalho abrem por cima do conteúdo. Abaixo dos 901 px o cabeçalho segue no fluxo (o CTA fica na barra fixa de baixo).
   Tudo o que o cabeçalho podia tapar desconta --hdr-h: âncoras e foco por teclado (scroll-margin nos ids e nos controlos) e as colunas sticky de v3-a1.css. */
:root{--hdr-h:0px}
@media (min-width:901px){
:root{--hdr-h:78px}
header.hdr{position:sticky;top:0;z-index:50;border-bottom:2px solid var(--ink)}
header.hdr .nav{padding:16px 0}
body.has-hdr :is([id],a,button,input,select,textarea,summary){scroll-margin-top:calc(var(--hdr-h) + 16px)}
}
/* 901-1100px: o html:not([lang=en]) .btn deixa os botões quebrar linha (rótulos compridos); no cabeçalho colado isso engordava-o, por isso aqui o botão fica numa linha e os espaços encurtam */
@media (min-width:901px) and (max-width:1100px){.nav{gap:16px}.nav ul.links{gap:14px}.nav .cta{gap:14px}.nav .cta .btn{white-space:nowrap;padding:10px 16px}}
/* barra de CTA fixa (v3_cta_bar() em includes/v3-layout.php), mobile e tablet: o mesmo ponto de corte do cabeçalho (900px), que lá perde o botão.
   Sempre à vista desde o primeiro render (sem limiar de scroll, sem fechar, sem esconder perto do CTA da página ou do rodapé); só sai com o teclado
   aberto (.stk-off, assets/js/cro.js). Linha pequena com preço e prazo por cima de UM botão em largura total (48px de alto):
   2 (linha) + 4 + 14 (texto) + 2 + 48 (botão) + 6 = 76px (--stk-h) + safe area. A página ganha padding-bottom igual (body.has-stk, só CSS: sem salto de
   layout) para o rodapé nunca ficar tapado. Sem viewport-fit=cover o env() vale 0 (o Safari já pára a página acima da barra de ferramentas);
   a regra fica pronta para o dia em que o meta o ativar. z-index 30: abaixo do menu de idioma (40) e do menu do cabeçalho (45), acima do conteúdo. */
:root{--stk-h:76px}
.stk{display:none}
@media (max-width:900px){
body.has-stk{padding-bottom:calc(var(--stk-h) + env(safe-area-inset-bottom,0px))}
.stk{position:fixed;left:0;right:0;bottom:0;z-index:30;display:flex;flex-direction:column;gap:2px;padding:4px 16px calc(6px + env(safe-area-inset-bottom,0px));background:var(--canvas);border-top:2px solid var(--ink);box-shadow:0 -4px 16px rgba(20,20,20,.12);transition:transform .2s ease-out,visibility 0s linear .2s}
.stk-t{margin:0;height:14px;font:600 12px/14px var(--f);color:var(--muted);text-align:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.stk-t b{margin-inline-end:3px;font:900 14px/14px var(--f);font-stretch:75%;color:var(--ink)}
.stk-b{display:flex;width:100%;min-height:48px;padding:6px 12px;font-size:16px;line-height:1.15;white-space:normal;text-align:center}
.stk-off{transform:translateY(100%);visibility:hidden}
.stk:not(.stk-off){transition-delay:0s}
html:has(body.has-stk){scroll-padding-bottom:var(--stk-h)}
}
@media (max-width:359px){.stk-t{font-size:11px}}
@media (prefers-reduced-motion:reduce){.stk{transition:none}}
@media print{.stk{display:none!important}body.has-stk{padding-bottom:0}header.hdr{position:static}}
/* hero */
.hero{background:var(--y);--box:var(--ink);--let:var(--y);--wm:var(--ink)}
.hero .hg{display:grid;grid-template-columns:1.15fr .85fr;gap:48px;align-items:center;padding:24px 0 48px}
.hero h1{font-size:clamp(44px,4.3vw,60px)}
.hero .sub{font-size:20px;line-height:1.4;margin-top:24px;max-width:34em}
.hero .acts{display:flex;align-items:center;gap:28px;margin-top:32px;flex-wrap:wrap}
.hero .acts a{display:inline-flex;align-items:center;min-height:44px}
.label{position:relative;width:100%;max-width:480px;margin-left:auto;background:var(--canvas);border:2px solid var(--ink);padding:20px 24px 4px;--box:var(--y);--let:var(--ink);--wm:var(--ink)}
.label .lk{margin-bottom:12px}
.label .rows>div{padding:9px 0;border-top:1px solid var(--ink)}
.label dt{margin-bottom:4px}
.label dd{font-size:22px}
/* proof strip: one band on the tint, 1px lines top and bottom */
.proof{background:var(--grey);border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:20px 0}
.proof+.sec{border-top:0}
.pr1{display:flex;flex-wrap:wrap;gap:12px 28px;font-size:14px;font-weight:600}
.pr1 li{display:flex;align-items:center;gap:8px;white-space:nowrap;line-height:1.3}
.pr1 a{display:inline-flex;align-items:center;gap:8px;min-height:44px}
.pr1 .ic,.pr2 .ic{width:16px;height:16px}
.pr2{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px 24px;margin-top:16px;padding-top:16px;border-top:1px solid var(--line);font-size:13px;font-weight:500;color:var(--muted)}
.pr2 p{display:flex;align-items:center;gap:10px}
.pr2 .svc{display:flex;align-items:center;gap:16px}
@media (min-width:900px){.pr1{justify-content:space-between}}
/* how it works */
.steps{display:grid;grid-template-columns:repeat(4,1fr)}
.step{display:flex;flex-direction:column;gap:24px;padding:0 28px;border-left:1px solid var(--ink)}
.step:first-child{border-left:0;padding-left:0}
.step:last-child{padding-right:0}
.step .n{font-size:56px}
.step .b{display:flex;flex-direction:column;gap:12px}
.step h3{font-size:20px;font-weight:700;line-height:1.2}
.timing{margin-top:56px;padding-top:24px;border-top:1px solid var(--ink);font-weight:500;font-size:17px}
/* receipt */
.pg{display:grid;grid-template-columns:1fr 1fr;gap:64px;align-items:start}
.pg .sec-h{margin-bottom:32px}
.receipt{position:relative;background:var(--canvas);border:2px solid var(--ink);padding:40px 32px 32px;display:flex;flex-direction:column;gap:24px}
.tagc{position:absolute;top:0;right:0;background:var(--ink);color:var(--canvas);font:700 12px/1 var(--f);letter-spacing:.04em;padding:8px 12px}
.receipt .rc-t{font-size:36px}
.rc-lines li,.rc-total{display:flex;align-items:baseline;gap:10px;padding:10px 0;font-size:15px;border-top:1px solid var(--line)}
.rc-lines li:first-child{border-top:0;padding-top:0}
.rc-lines .k,.rc-total .k{flex:1;display:flex;align-items:flex-end;min-width:0}
.rc-lines .k::after,.rc-total .k::after{content:"";flex:1;min-width:16px;margin:0 8px 5px;border-bottom:1px dotted var(--muted)}
.rc-lines .v{font-weight:600;white-space:nowrap}
.rc-lines .inc{display:inline-flex;align-items:center;gap:6px;font-weight:400;color:var(--muted)}
.rc-lines .inc .ic{width:14px;height:14px;color:var(--success)}
.rc-note{font-size:13px;line-height:1.5;color:var(--muted);margin-top:-8px}
.rc-total{border-top:2px solid var(--ink);border-bottom:2px solid var(--ink);padding:14px 0}
.rc-total .k{font-weight:700;font-size:16px}
.rc-total .k::after{margin-bottom:6px}
.rc-total .v{font-size:32px}
.receipt .btn{align-self:stretch}
.rc-pay{display:flex;justify-content:center;flex-wrap:wrap;align-items:center;gap:6px;margin-top:-8px;color:var(--muted);font-size:13px;text-align:center}
.rc-pay .ic{width:16px;height:16px}
.minor{margin-top:32px;padding-top:24px;border-top:1px solid var(--ink);display:flex;align-items:center;gap:16px 24px;justify-content:space-between;flex-wrap:wrap}
.minor p{max-width:46ch;flex:1 1 300px}
.renew{margin-top:16px;max-width:62ch}
/* consulate */
.cmp{display:grid;grid-template-columns:1fr 1fr}
.cmp .col{padding-right:48px}
.cmp .col.yes{padding:0 0 0 48px;border-left:1px solid var(--ink)}
.cmp h3{font-size:18px;font-weight:700;line-height:1.3;padding-bottom:12px;border-bottom:1px solid var(--ink)}
.cmp li{display:flex;gap:14px;align-items:flex-start;padding:16px 0;border-bottom:1px solid var(--line)}
.cmp li .ic{margin-top:2px}
.cmp .no li{color:var(--muted)}
.cmp .yes li{font-weight:500}
/* who */
.who{display:grid;grid-template-columns:1.1fr .9fr;gap:64px;align-items:start}
.facts4 li{display:grid;grid-template-columns:24px 1fr;gap:16px;padding:24px 0;border-top:1px solid var(--ink)}
.facts4 li:last-child{border-bottom:1px solid var(--ink)}
.facts4 h3{font-size:18px;font-weight:700;line-height:1.25;margin-bottom:8px}
.firm{background:var(--canvas);border:1px solid var(--ink);padding:32px;display:flex;flex-direction:column;gap:20px}
.co{display:grid;grid-template-columns:auto 1fr;gap:8px 20px;font-size:15px;padding-top:20px;border-top:1px solid var(--ink)}
.co dt{font:500 13px/1.6 var(--f);color:var(--muted)}
.firm .sup{display:flex;gap:12px;align-items:flex-start;padding-top:20px;border-top:1px solid var(--ink);font-size:15px;font-weight:500;line-height:1.45}
.firm .sup .ic{margin-top:1px}
/* reviews */
.revs{display:grid;grid-template-columns:7fr 5fr;gap:64px;align-items:start}
.q{display:grid;gap:16px;padding:24px 0;border-top:1px solid var(--line)}
.q:last-child{border-bottom:1px solid var(--line)}
.q1 .q{padding:0;border:0}
.q1 blockquote p{font-size:20px;line-height:1.4;font-weight:500;max-width:30em}
.q2 blockquote p{font-size:16px;line-height:1.55;max-width:36em}
@media(max-width:600px){.q1 blockquote p{font-size:17px;line-height:1.5}}
.q figcaption{font-size:13px;color:var(--muted)}
.q figcaption strong{color:var(--ink);font-size:14px}
.revs-more{margin-top:48px;padding-top:24px;border-top:1px solid var(--ink)}
/* faq */
.fq{display:grid;grid-template-columns:.8fr 1.2fr;gap:64px;align-items:start}
.fq .sec-h{margin-bottom:0}
.faqs details{border-bottom:1px solid var(--ink)}
.faqs details:first-child{border-top:1px solid var(--ink)}
.faqs summary{display:flex;justify-content:space-between;align-items:center;gap:24px;padding:20px 0;min-height:44px;font-size:18px;font-weight:700;line-height:1.3;cursor:pointer;list-style:none}
.faqs summary::-webkit-details-marker{display:none}
.faqs details[open] .plus .v{display:none}
.faqs .ans{padding:0 48px 24px 0;max-width:70ch}
/* guides */
.sec.guides-sec{padding:48px 0 64px}
.guides-sec .sec-h{margin-bottom:0}
.guides{display:grid;grid-template-columns:repeat(4,1fr);gap:24px;margin-top:24px}
.guides li{border-top:1px solid var(--ink);padding-top:16px;font-size:17px;line-height:1.35}
.guides li a{display:inline-flex;align-items:center;min-height:44px;text-decoration:none;font-weight:600}
.guides li a:hover{text-decoration:underline;text-decoration-thickness:2px;text-underline-offset:3px}
/* final */
.final{padding:88px 0}
.fg{display:grid;grid-template-columns:1.1fr .9fr;gap:64px;align-items:center}
.final h2{font-size:clamp(36px,5vw,56px);max-width:16ch}
.final .sub{font-size:20px;line-height:1.4;margin:20px 0 32px;max-width:30em}
.appstrip{display:flex;align-items:center;gap:32px;padding-left:48px;border-left:1px solid var(--ink)}
.appstrip picture{display:block;width:240px;max-width:42%;flex:none}
.appstrip picture img{display:block;width:100%;height:auto}
.appstrip .at{display:flex;flex-direction:column;gap:12px;align-items:flex-start}
/* footer */
.foot{background:var(--ink);color:var(--canvas);--box:var(--y);--let:var(--ink);--wm:var(--canvas);padding:64px 0 48px;font-size:15px}
.foot a{color:var(--canvas);text-decoration:none}
.foot a:hover{text-decoration:underline;text-decoration-thickness:2px;text-underline-offset:3px}
.ft-top{display:grid;grid-template-columns:auto 1fr;gap:48px;align-items:center;padding-bottom:40px;border-bottom:1px solid var(--muted)}
.ft-top p{max-width:62ch;color:var(--line)}
/* the only logo asset is navy; reversed to white on the ink footer */
.foot .seal{border-left-color:var(--canvas)}.foot .seal .by{color:var(--line)}.foot .seal img{filter:brightness(0) invert(1)}
.ft-cols{display:grid;grid-template-columns:repeat(4,1fr);gap:32px;padding:40px 0}
.ft-cols li a{display:inline-flex;align-items:center;min-height:44px}
.ft-cols p{padding:5px 0}
.langs{padding:20px 0;border-top:1px solid var(--muted);border-bottom:1px solid var(--muted);color:var(--line)}
.ft-bot{display:flex;justify-content:space-between;gap:16px 24px;padding:24px 0;flex-wrap:wrap}
.ft-bot span{display:inline-flex;align-items:center;gap:8px}
.legal{font-size:13px;line-height:1.5;color:var(--line);max-width:110ch;padding-top:24px;border-top:1px solid var(--muted)}
/* focus */
a:focus-visible,.btn:focus-visible,summary:focus-visible{outline:2px solid var(--ink);outline-offset:2px}
.nav a:hover{text-decoration:underline;text-decoration-thickness:2px;text-underline-offset:3px}
.nav .btn:hover,.nav .lkp:hover,.btn:hover{text-decoration:none}
.foot :focus-visible{outline-color:var(--canvas)}
/* z-index 60 > cabeçalho sticky (50): o link «saltar para o conteúdo» focado tem de ficar por cima dele, senão o 1.º Tab foca algo invisível */
.skip{position:absolute;left:-999px}.skip:focus{left:16px;top:16px;z-index:60;background:var(--ink);color:var(--canvas);padding:10px 12px}
/* responsive */
@media (max-width:1000px){
.pg,.who,.fq,.fg{grid-template-columns:minmax(0,1fr);gap:48px}
.receipt,.minor,.renew{max-width:600px}
.steps{grid-template-columns:1fr 1fr}
.step{padding:28px}
.step:nth-child(odd){border-left:0;padding-left:0}
.step:nth-child(even){padding-right:0}
.step:nth-child(-n+2){padding-top:0}
.step:nth-child(n+3){border-top:1px solid var(--ink)}
.revs{grid-template-columns:minmax(0,1fr);gap:0}
.q1 .q{padding-bottom:24px}
.appstrip{border-left:0;padding:40px 0 0;border-top:1px solid var(--ink)}
}
@media (max-width:900px){
.nav{gap:12px;padding:16px 0}
.nav ul.links,.nav .cta{display:none}
.nav .lk{width:123px;height:24px}
.menu{display:block;margin-left:auto}
.menu summary{list-style:none;display:grid;place-items:center;width:44px;height:44px;margin-right:-10px;cursor:pointer}
.menu summary::-webkit-details-marker{display:none}
.menu summary .ic{width:24px;height:24px}
.menu:not([open]) .i-close,.menu[open] .i-open{display:none}
.menu ul{position:absolute;left:0;right:0;top:100%;z-index:45;padding:0 0 16px;background:var(--y);border-top:1px solid var(--ink);border-bottom:1px solid var(--ink)}
.menu li a:not(.btn){display:block;padding:14px 0;font-size:18px;font-weight:700;border-bottom:1px solid var(--ink)}
.menu li .btn{display:flex;margin-top:16px}
.hero .hg{grid-template-columns:minmax(0,1fr);gap:32px;padding:24px 0 48px}
.hero h1{font-size:clamp(40px,10.5vw,64px)}
.label{margin-left:0;max-width:none}
.cmp{grid-template-columns:minmax(0,1fr)}
.cmp .col{padding-right:0}
.cmp .col.yes{padding:40px 0 0;margin-top:40px;border-left:0;border-top:1px solid var(--ink)}
.ft-top{grid-template-columns:minmax(0,1fr);gap:24px}
.ft-cols{grid-template-columns:minmax(0,1fr);gap:28px}
.guides{grid-template-columns:minmax(0,1fr);gap:0}
.guides li{padding:16px 0}
}
@media (max-width:560px){
.sec{padding:48px 0 64px}
.sec-h{margin-bottom:32px}
.hero .acts{gap:20px}
.hero .acts .btn{width:100%}
.steps{grid-template-columns:minmax(0,1fr)}
.step{display:grid;grid-template-columns:56px 1fr;column-gap:16px;padding:24px 0;border-left:0;border-top:1px solid var(--ink)}
.step:nth-child(n+2){padding-top:24px}
.step:first-child{border-top:0;padding-top:0}
.step .n{font-size:48px;line-height:1;align-self:start}
.receipt{padding:44px 20px 24px}
.label{padding:20px 20px 8px}
.label dd{font-size:20px}
.receipt .rc-t{font-size:32px}
.rc-total .v{font-size:28px}
.minor .btn{width:100%}
.firm{padding:24px}
.co{grid-template-columns:minmax(0,1fr);gap:2px 0}
.co dd{margin-bottom:8px}
.faqs summary{font-size:17px}
.faqs .ans{padding-right:0}
.guides{grid-template-columns:minmax(0,1fr);gap:0}
.guides li{padding:16px 0}
.final{padding:56px 0 64px}
.final .btn{width:100%}
.appstrip{flex-direction:column;align-items:flex-start}
.appstrip picture{width:60%;max-width:260px}
.ft-cols{grid-template-columns:minmax(0,1fr);gap:28px}
}
@media (prefers-reduced-motion:reduce){*,*::before,*::after{transition:none!important}}
/* cookie banner: in flow at the top of the page, so it never covers content or keyboard focus; Reject all and Accept all are the same component, size and weight */
.ck{background:var(--canvas);color:var(--ink);border-bottom:2px solid var(--ink);padding:16px 0}
.ck[hidden]{display:none}
.ck form{display:grid;gap:12px;max-width:760px}
.ck p{font-size:15px;line-height:1.5;max-width:70ch}
.ck .ck-n{font-size:13px;font-weight:600;line-height:1.4}
.ck-n a{display:inline-flex;align-items:center;min-height:44px}
.ck-a{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:4px 8px;align-items:center}
.ck-a .ck-c{grid-column:1/-1;justify-content:center}
.ck-a .btn{padding:10px 20px}
.ck-a .ck-c{display:inline-flex;align-items:center;min-height:44px;padding:0 8px}
.hit{display:inline-block;padding:14px 4px;margin:-14px -4px}
/* ck-mobile */
@media (max-width:600px){.ck{padding:12px 0}.ck p{font-size:14px;line-height:1.35}}
@media (min-width:901px){
.ck form{max-width:none;grid-template-columns:minmax(0,1fr) 200px;column-gap:48px;align-items:center}
.ck form>p{grid-column:1;max-width:76ch}
.ck-a{grid-column:2;grid-row:1/span 3;grid-template-columns:minmax(0,1fr)}
.ck-a .btn{width:100%}
.ck-a .ck-c{justify-content:center}
}
.ft-cols li a,.langs a{min-width:44px}
/* seletor de idioma sem JavaScript */
.lang{position:relative;margin-left:8px}
.lang summary{list-style:none;display:inline-flex;align-items:center;gap:6px;min-height:44px;padding:0 12px;border:2px solid var(--ink);border-radius:9999px;font:700 14px/1 var(--f);cursor:pointer;color:var(--ink)}
.lang summary::-webkit-details-marker{display:none}
.lang summary .ic{width:16px;height:16px}.lang summary .caret{width:14px;height:14px}
.lang[open] summary{background:var(--ink);color:var(--y)}
.lang ul{position:absolute;right:0;top:calc(100% + 6px);z-index:40;min-width:200px;margin:0;padding:4px;list-style:none;background:#fff;border:2px solid var(--ink)}
.lang li a{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:44px;padding:0 12px;color:var(--ink);font:600 15px/1 var(--f);text-decoration:none}
.lang li a:hover{background:var(--y-hover,#EBC400)}
.lang li a[aria-current="true"]{background:var(--y);font-weight:700}
.lang li a small{font:700 12px/1 var(--f);color:var(--muted);letter-spacing:.04em}
.lang li a:hover small,.lang li a[aria-current="true"] small{color:var(--ink)}
.langs a{color:inherit;text-decoration:none;display:inline-flex;align-items:center;min-height:44px}
.langs a:hover{text-decoration:underline;text-decoration-thickness:2px;text-underline-offset:3px}
.langs a[aria-current="true"]{font-weight:700;text-decoration:underline;text-decoration-thickness:2px;text-underline-offset:3px}
@media (max-width:900px){.nav .lang{margin-left:auto}.nav .menu{margin-left:4px}}
@media (min-width:901px){.nav .menu{display:none}}
/* tipos de letra por língua (mockup: langswitch.py) */
html:not([lang="en"]) .d,html:not([lang="en"]) h1,html:not([lang="en"]) h2{overflow-wrap:break-word}
html:not([lang="en"]) .btn{white-space:normal;text-align:center;line-height:1.15}
html[lang="de"] .d,html[lang="de"] h1,html[lang="de"] h2{hyphens:auto}
html[lang="ru"]{--f:'Archivo','Roboto','Roboto Fallback','Archivo Fallback',Arial,sans-serif}
html[lang="uk"]{--f:'Archivo','Roboto','Roboto Fallback','Archivo Fallback',Arial,sans-serif}
html[lang="zh-Hans"]{--f:'Archivo','Archivo Fallback','Noto Sans SC','PingFang SC','Microsoft YaHei',sans-serif}
html[lang="ru"] .d,html[lang="ru"] h1,html[lang="ru"] h2,html[lang="ru"] h3.d{font-family:'Roboto Condensed','Arial Narrow','Roboto Condensed Fallback',Arial,sans-serif;font-stretch:100%;font-weight:900;letter-spacing:0;line-height:1}
html[lang="uk"] .d,html[lang="uk"] h1,html[lang="uk"] h2,html[lang="uk"] h3.d{font-family:'Roboto Condensed','Arial Narrow','Roboto Condensed Fallback',Arial,sans-serif;font-stretch:100%;font-weight:900;letter-spacing:0;line-height:1}
html[lang="zh-Hans"] .d,html[lang="zh-Hans"] h1,html[lang="zh-Hans"] h2,html[lang="zh-Hans"] h3.d{font-stretch:100%;font-weight:900;letter-spacing:0;line-height:1.2;text-transform:none}
/* v3: alvos tácteis de 44 px também na largura, foco visível em todos os controlos */
.ft-cols li a,.langs a,.nav .links a,.nav .login{min-width:44px}
button:focus-visible,input:focus-visible,summary:focus-visible,.ck-c:focus-visible{outline:2px solid var(--ink);outline-offset:2px}
.ck button.btn{font-family:var(--f)}
.ck-a .btn{white-space:normal}
.skip{position:absolute;left:-999px;top:0}
.vh{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}
.nav-min .cta,.nav-min ul.links,.nav-min .menu{display:none}
.nav-min .lang{margin-left:auto}
.foot-min .ft-cols,.foot-min .ft-top p{display:none}
.foot-min .ft-top{padding-bottom:24px}
/* áreas de toque de 44 px nas ligações dentro de texto (sem mexer na linha): a pseudo-caixa só alarga a zona clicável */
main p a:not(.btn):not(.alink):not(.hit),main dd a,main .ans a{position:relative}
main p a:not(.btn):not(.alink):not(.hit)::after,main dd a::after,main .ans a::after{content:"";position:absolute;left:-4px;right:-4px;top:50%;height:44px;transform:translateY(-50%)}
/* fundador (E-E-A-T), partial views/v3/partials/founder.php: moldura de 1px como o resto do desenho, sem sombras nem animação (nada a desativar em prefers-reduced-motion).
   .fp = a foto (retrato 4:5 ou avatar quadrado; width/height no HTML, por isso sem CLS); .fdr = cartão foto + texto (home, guias, /nif-online). A Sobre tem o seu em v3-entity.css. */
.fp{display:block;flex:none}
.fp img{display:block;width:100%;height:auto;border:1px solid var(--ink);border-radius:4px;background:var(--grey)}
.fp-avatar{width:96px}
.fp-portrait{width:100%;max-width:260px}
.fdr{display:flex;gap:20px;align-items:flex-start}
.fdr-t{min-width:0;display:grid;gap:6px}
.fdr-n{font-size:18px;font-weight:700;line-height:1.3}
.fdr-r{font-size:15px;line-height:1.4;font-weight:500;color:var(--muted)}
.fdr-t p{margin:0}
.firm .fdr{padding-top:20px;border-top:1px solid var(--ink)}
.firm .fdr .fdr-s{font-size:13px;line-height:1.45;color:var(--muted)}
@media (max-width:380px){.fp-avatar{width:72px}.fdr{gap:16px}}
