@font-face{font-family:'Archivo Variable';font-style:normal;font-display:swap;font-weight:100 900;src:url(../fonts/archivo-latin-ext-wght-normal.woff2) format('woff2-variations');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-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;}
@font-face{font-family:'Archivo Variable';font-style:normal;font-display:swap;font-weight:100 900;src:url(../fonts/archivo-latin-wght-normal.woff2) format('woff2-variations');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:'IBM Plex Mono';font-style:normal;font-display:swap;font-weight:400;src:url(../fonts/ibm-plex-mono-latin-ext-400-normal.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-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;}
@font-face{font-family:'IBM Plex Mono';font-style:normal;font-display:swap;font-weight:400;src:url(../fonts/ibm-plex-mono-latin-400-normal.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:'IBM Plex Mono';font-style:normal;font-display:swap;font-weight:500;src:url(../fonts/ibm-plex-mono-latin-ext-500-normal.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-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;}
@font-face{font-family:'IBM Plex Mono';font-style:normal;font-display:swap;font-weight:500;src:url(../fonts/ibm-plex-mono-latin-500-normal.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:'IBM Plex Mono';font-style:normal;font-display:swap;font-weight:600;src:url(../fonts/ibm-plex-mono-latin-ext-600-normal.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-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;}
@font-face{font-family:'IBM Plex Mono';font-style:normal;font-display:swap;font-weight:600;src:url(../fonts/ibm-plex-mono-latin-600-normal.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:'IBM Plex Mono';font-style:normal;font-display:swap;font-weight:700;src:url(../fonts/ibm-plex-mono-latin-ext-700-normal.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-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;}
@font-face{font-family:'IBM Plex Mono';font-style:normal;font-display:swap;font-weight:700;src:url(../fonts/ibm-plex-mono-latin-700-normal.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;}

/* ==========================================================================
   Joiner — Motor do site (Elementor 4). Valores copiados do tema original (build/src/estilos.css).
   Liga-se aos widgets por atributos data-* (o Elementor 4 não aceita classes nos widgets).
   ========================================================================== */
:root {
  --paper: #ffffff; --paper-2: #f5f5f4; --paper-3: #ebebe9;
  --ink: #14161a; --ink-soft: #32363d; --muted: #6f6f6e; --line: #e4e4e2; --line-strong: #c4c3c0;
  --charcoal: #161a20; --charcoal-2: #1d222a;
  --font-archivo: "Archivo Variable", sans-serif; --font-mono: "IBM Plex Mono", monospace;
}

/* --- Base (o tema Hello e o kit do Elementor trazem estilos próprios: anulam-se aqui) --- */
html { scroll-behavior: smooth; -webkit-font-smoothing: antialiased; }
body {
  background: var(--paper); color: var(--ink); margin: 0;
  font-family: var(--font-archivo), system-ui, sans-serif; font-feature-settings: "ss01", "cv01"; overflow-x: hidden;
}
::selection { background: var(--ink); color: var(--paper); }
body a { color: inherit; text-decoration: none; }
body a:hover, body a:active { color: inherit; }
body h1, body h2, body h3, body h4, body p { margin: 0; }
body img { max-width: 100%; height: auto; }
body .e-image { display: block; }
.elementor-location-header, .elementor-location-footer { position: static; }
* { border-color: var(--line); }
body .e-con, body .e-div-block, body .e-flexbox { --e-con-transition: none; }

/* --- Letras do tema (o Elementor não tem «largura» da Archivo nem as variantes do Plex Mono) --- */
[data-um~="display"] { font-stretch: 125%; }
[data-um~="mono"], [data-um~="label"] { font-feature-settings: "zero"; }
h1, h2, h3, [data-um~="display"] { text-wrap: balance; }
p, li, blockquote, figcaption { text-wrap: pretty; }
[data-um~="nowrap"] { white-space: nowrap; }
[data-um~="quebra"] { overflow-wrap: anywhere; }
[data-um~="clamp3"] { display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; }
[data-um~="hero-col"] { container-type: inline-size; }
[data-um~="hero-col"] [data-um~="display-xl"] { font-size: clamp(1.5rem, 9cqi, 4.2rem); }
[data-um~="sem-rato"] { pointer-events: none; }
[data-um~="meio-y"] { transform: translateY(-50%); }
[data-um~="sombra"] { box-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1); }
[data-um~="sombra-xl"] { box-shadow: 0 20px 25px -5px rgb(0 0 0 / .1), 0 8px 10px -6px rgb(0 0 0 / .1); }
[data-um~="tr"] { transition: color .15s, background-color .15s, border-color .15s, opacity .15s, transform .3s cubic-bezier(.4,0,.2,1); }

/* Títulos que entram linha a linha (a ponte cria as máscaras) */
.jn-linha { display: block; overflow: hidden; padding-bottom: .12em; }
.jn-linha-in { display: inline-block; }
.js .jn-linha-in { transform: translateY(110%); opacity: 0; }

/* Ligações com traço que se desenha */
[data-um~="link-tech"] { position: relative; }
[data-um~="link-tech"]::after {
  content: ""; position: absolute; left: 0; bottom: -2px; width: 100%; height: 1px; background: currentColor;
  transform: scaleX(0); transform-origin: right; transition: transform .4s cubic-bezier(.16,1,.3,1);
}
[data-um~="link-tech"]:hover::after { transform: scaleX(1); transform-origin: left; }

/* Grelha de planta técnica */
[data-um~="blueprint"] {
  background-image:
    linear-gradient(to right, color-mix(in srgb, var(--line) 55%, transparent) 1px, transparent 1px),
    linear-gradient(to bottom, color-mix(in srgb, var(--line) 55%, transparent) 1px, transparent 1px);
  background-size: 56px 56px;
}

/* --- Revelar ao entrar no ecrã (estado inicial só com o motor ativo: no editor fica tudo visível) --- */
.js [data-reveal], .js [data-reveal-stagger] > * { opacity: 0; transform: translateY(22px); }
@media (max-width: 767px) {
  .js [data-reveal][data-mobile-parado], .js [data-reveal-stagger][data-mobile-parado] > * { opacity: 1; transform: none; }
}
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  .js [data-reveal], .js [data-reveal-stagger] > *, .js .jn-linha-in { opacity: 1; transform: none; }
  *, *::before, *::after { animation-duration: .001ms !important; transition-duration: .001ms !important; }
}

/* --- Menu fixo que ganha fundo ao descer --- */
[data-nav] { transition: background-color .5s, border-color .5s, backdrop-filter .5s; border-bottom: 1px solid transparent; }
[data-nav].is-scrolled { border-color: var(--line); background: color-mix(in srgb, var(--paper) 85%, transparent); backdrop-filter: blur(12px); }
.admin-bar [data-nav] { top: 32px; }
@media (max-width: 782px) { .admin-bar [data-nav] { top: 46px; } }
[data-um~="barra"] { transition: all .3s; }
[data-menu-btn].is-open [data-um~="barra-1"] { translate: 0 6px; rotate: 45deg; }
[data-menu-btn].is-open [data-um~="barra-2"] { opacity: 0; }
[data-menu-btn].is-open [data-um~="barra-3"] { translate: 0 -6px; rotate: -45deg; }
.elementor [data-menu-btn] { cursor: pointer; background: none; border: 0; }
[data-menu-panel] > * > *:last-child { border-bottom: 0; }

/* --- Botões e cartões com hover de grupo --- */
[data-um~="seta"] { display: inline-block; transition: transform .3s; }
[data-um~="grupo"]:hover [data-um~="seta"] { transform: translateX(.25rem); }
[data-um~="grupo"]:hover [data-um~="seta-curta"] { transform: translateX(.125rem); }
[data-um~="grupo"]:hover [data-um~="inverte"] { background: var(--ink); color: var(--paper); }
[data-um~="grupo"]:hover [data-um~="zoom"] img, [data-um~="grupo"]:hover img[data-um~="zoom"] { transform: scale(1.05); }
[data-um~="zoom"], [data-um~="zoom"] img { transition: transform .7s cubic-bezier(.4,0,.2,1); }
[data-um~="ultimo-sem-linha"] > *:last-child { border-bottom-width: 0 !important; }
@media (min-width: 768px) { [data-um~="cresce"] { transition: transform .3s; } [data-um~="cresce"]:hover { transform: scale(1.03); } }

/* --- Cantos da foto do topo --- */
[data-um~="canto"] { position: absolute; width: 1rem; height: 1rem; border: 0 solid var(--paper); pointer-events: none; }
[data-um~="canto-tl"] { left: .5rem; top: .5rem; border-left-width: 1px; border-top-width: 1px; }
[data-um~="canto-tr"] { right: .5rem; top: .5rem; border-right-width: 1px; border-top-width: 1px; }
[data-um~="canto-bl"] { left: .5rem; bottom: .5rem; border-left-width: 1px; border-bottom-width: 1px; }
[data-um~="canto-br"] { right: .5rem; bottom: .5rem; border-right-width: 1px; border-bottom-width: 1px; }
[data-um~="foto-cheia"], [data-um~="foto-cheia"] img { width: 100%; height: 100%; object-fit: cover; }

/* --- Processo: 7 colunas só a partir de 1280px (entre 1025 e 1279: 4) --- */
@media (min-width: 1025px) and (max-width: 1279px) {
  [data-um~="proc-grelha"] { grid-template-columns: repeat(4, minmax(0, 1fr)) !important; padding-top: 0 !important; }
  [data-um~="proc-ponto"], [data-um~="proc-trilho"] { display: none !important; }
}
@media (min-width: 640px) and (max-width: 767px) {
  [data-um~="proc-grelha"] { grid-template-columns: repeat(2, minmax(0, 1fr)) !important; }
  [data-um~="proc-fase"] { display: block !important; }
  [data-um~="proc-fase"] [data-um~="proc-foto"] { aspect-ratio: 3 / 4 !important; }
  [data-um~="blocos"] { grid-template-columns: repeat(2, minmax(0, 1fr)) !important; }
}
[data-proc-linha] { transform-origin: left; }

/* --- Galeria: carrossel com a foto ao centro --- */
.elementor [data-car-track] {
  display: flex; gap: clamp(.6rem, 1.6vw, 1.25rem); overflow-x: auto; scroll-snap-type: x mandatory; scrollbar-width: none;
  padding-inline: 10vw; outline-offset: 4px;
}
[data-car-track]::-webkit-scrollbar { display: none; }
.elementor [data-car-slide] {
  flex: 0 0 80vw; height: min(112vw, 34rem) !important; width: auto; max-width: none !important; scroll-snap-align: center; overflow: hidden;
  object-fit: cover; background: var(--paper-2); cursor: pointer; opacity: .45; transform: scale(.94);
  transition: opacity .45s ease, transform .45s ease;
}
[data-car-slide] img { width: 100%; height: 100%; object-fit: cover; }
[data-car-slide].is-ativo { opacity: 1; transform: scale(1); }
@media (min-width: 768px) {
  .elementor [data-car-track] { padding-inline: 19vw; }
  .elementor [data-car-slide] { flex-basis: 62vw; height: min(40vw, 38rem) !important; }
}
@media (min-width: 1500px) {
  .elementor [data-car-track] { padding-inline: calc((100vw - 56rem) / 2); }
  .elementor [data-car-slide] { flex-basis: 56rem; height: 38rem !important; }
}
.elementor [data-car-prev], .elementor [data-car-next] {
  display: inline-flex; height: 2.75rem; width: 2.75rem; align-items: center; justify-content: center; cursor: pointer;
  border: 1px solid var(--line-strong); font-family: var(--font-mono), monospace; font-size: 1rem; color: var(--ink); background: transparent;
  transition: background-color .2s, color .2s, border-color .2s;
}
[data-car-prev]:hover, [data-car-next]:hover { background: var(--ink); color: var(--paper); border-color: var(--ink); }
[data-car-prev] *, [data-car-next] * { color: inherit !important; }
.jn-car-atual { color: var(--ink); }

/* Foto em grande */
.car-box { position: fixed; inset: 0; width: 100%; height: 100%; max-width: none; max-height: none; margin: 0; padding: 0; border: 0; background: rgb(10 12 15 / .96); color: #fff; }
.car-box:not([open]) { display: none; }
.car-box::backdrop { background: rgb(10 12 15 / .96); }
.car-box-fig { position: absolute; inset: 3.5rem .75rem 3.25rem; display: flex; align-items: center; justify-content: center; margin: 0; }
.car-box-fig img { max-height: 100%; max-width: 100%; object-fit: contain; }
.car-box-fechar, .car-box-seta {
  position: absolute; z-index: 2; display: inline-flex; height: 2.75rem; width: 2.75rem; align-items: center; justify-content: center; padding: 0;
  color: #fff; font-family: var(--font-mono), monospace; font-size: 1.1rem; border: 1px solid rgb(255 255 255 / .3); border-radius: 0;
  background: rgb(10 12 15 / .5); transition: background-color .2s; cursor: pointer;
}
.car-box-fechar:hover, .car-box-seta:hover { background: rgb(255 255 255 / .18); color: #fff; }
.car-box-fechar { top: .75rem; right: .75rem; }
.car-box-seta { top: 50%; transform: translateY(-50%); }
.car-box-prev { left: .75rem; } .car-box-next { right: .75rem; }
.car-box-conta { position: absolute; bottom: 1rem; left: 0; right: 0; text-align: center; font-family: var(--font-mono), monospace; font-size: .78rem; letter-spacing: .05em; color: rgb(255 255 255 / .7); }
.car-box-conta span { color: #fff; }
@media (max-width: 767px) {
  .car-box-seta { top: auto; bottom: .6rem; transform: none; }
  .car-box-fig { inset: 3.5rem 0 4rem; }
}

/* --- Blog: filtros, paginação e texto dos artigos (vindo do editor normal ou do Elementor) --- */
[data-um~="artigo"] { max-width: 68ch; font-size: 1.125rem; line-height: 1.75; color: var(--ink-soft); margin-inline: auto; }
[data-um~="artigo"] > * + *, [data-um~="artigo"] .elementor-widget-container > * + *,
[data-um~="artigo"] .elementor-widget-theme-post-content > * + * { margin-top: 1.25em; }
[data-um~="artigo"] .elementor-widget-theme-post-content > p, [data-um~="artigo"] .elementor-widget-theme-post-content > ul { margin-bottom: 0; }
[data-um~="artigo"] h2 { font-family: var(--font-archivo), sans-serif; font-stretch: 125%; font-weight: 700; letter-spacing: -.02em; line-height: 1.05; font-size: clamp(1.6rem, 2.4vw, 2.2rem); color: var(--ink); margin-top: 2.2em; }
[data-um~="artigo"] h3 { font-family: var(--font-archivo), sans-serif; font-stretch: 115%; font-weight: 700; letter-spacing: -.01em; font-size: 1.35rem; color: var(--ink); margin-top: 1.8em; }
[data-um~="artigo"] strong { color: var(--ink); font-weight: 600; }
[data-um~="artigo"] a { color: var(--ink); text-decoration: underline; text-decoration-thickness: 1px; text-underline-offset: 3px; }
[data-um~="artigo"] a:hover { text-decoration-thickness: 2px; }
[data-um~="artigo"] ul, [data-um~="artigo"] ol { padding-left: 1.3em; }
[data-um~="artigo"] ul { list-style: square; } [data-um~="artigo"] ol { list-style: decimal; }
[data-um~="artigo"] li + li { margin-top: .4em; }
[data-um~="artigo"] li::marker { color: var(--ink); }
[data-um~="artigo"] blockquote { border-left: 2px solid var(--ink); padding-left: 1.2em; margin: 0; font-family: var(--font-archivo), sans-serif; font-stretch: 115%; font-size: 1.35rem; line-height: 1.35; color: var(--ink); }
[data-um~="artigo"] figure { margin: 2em 0; }
[data-um~="artigo"] figure img { width: 100%; height: auto; border: 1px solid color-mix(in srgb, var(--ink) 15%, transparent); }
[data-um~="artigo"] figcaption { margin-top: .6em; font-family: var(--font-mono), monospace; font-size: .72rem; letter-spacing: .04em; color: var(--muted); }

[data-um~="filtros"] .e-filter, [data-um~="filtros"] button {
  font-family: var(--font-mono), monospace; font-size: .72rem; letter-spacing: .025em; color: var(--ink-soft); background: transparent;
  border: 1px solid var(--line); padding: .5rem 1rem; border-radius: 0; cursor: pointer; transition: border-color .15s, background-color .15s, color .15s;
}
[data-um~="filtros"] .e-filter:hover, [data-um~="filtros"] button:hover { border-color: var(--ink); }
[data-um~="filtros"] .e-filter[aria-pressed="true"], [data-um~="filtros"] button[aria-pressed="true"] { border-color: var(--ink); background: var(--ink); color: var(--paper); }
@media (max-width: 767px) { [data-um~="filtros"] .e-filter-wrapper, [data-um~="filtros"] .elementor-widget-container > div { flex-wrap: nowrap; overflow-x: auto; scrollbar-width: none; } }

/* --- Blog: secções e textos que se escondem quando estão vazios --- */
[data-um~="esconde-vazio"]:not(:has(.e-loop-item)) { display: none !important; }
.elementor .e-paragraph-base:empty { display: none; }
.elementor-widget-loop-grid .e-loop-item > * { height: 100%; }
.elementor-pagination { display: flex; gap: .5rem; margin-top: 3rem; font-family: var(--font-mono), monospace; font-size: .875rem; }
.elementor-pagination .page-numbers { border: 1px solid var(--line); padding: .4rem .8rem; }
.elementor-pagination .current { background: var(--ink); color: var(--paper); }
/* Dentro do texto do artigo (Elementor), os títulos e as imagens mantêm o espaço próprio do tema (ganham à regra geral) */
[data-um~="artigo"] .elementor-widget-theme-post-content > h2 { margin-top: 2.2em; }
[data-um~="artigo"] .elementor-widget-theme-post-content > h3 { margin-top: 1.8em; }
[data-um~="artigo"] .elementor-widget-theme-post-content > figure { margin-top: 2em; margin-bottom: 2em; }

/* Filtros do blog como no tema: «Todos» primeiro e sem «Sem categoria» */
[data-um~="filtros"] .e-filter { display: flex; flex-wrap: wrap; gap: .625rem; margin-bottom: 2.5rem; }
[data-um~="filtros"] .e-filter-item[data-filter="__all"] { order: -1; }
[data-um~="filtros"] .e-filter-item[data-filter="sem-categoria"], [data-um~="filtros"] .e-filter-item[data-filter="uncategorized"] { display: none; }
/* Botões do filtro: o Elementor tem estilos próprios mais fortes — estes ganham (iguais ao tema) */
.elementor .elementor-widget-taxonomy-filter[data-um~="filtros"] .e-filter-item {
  font-family: var(--font-mono), monospace !important; font-size: .72rem !important; letter-spacing: .025em; font-weight: 400;
  color: var(--ink-soft) !important; background: transparent !important; border: 1px solid var(--line) !important;
  padding: .5rem 1rem !important; border-radius: 0 !important; line-height: 1rem; text-transform: none;
}
.elementor .elementor-widget-taxonomy-filter[data-um~="filtros"] .e-filter-item:hover { border-color: var(--ink) !important; }
.elementor .elementor-widget-taxonomy-filter[data-um~="filtros"] .e-filter-item[aria-pressed="true"] {
  border-color: var(--ink) !important; background: var(--ink) !important; color: var(--paper) !important;
}
/* Texto do artigo: a cor vem do bloco (cinzento do tema), não das regras do WordPress para blocos */
[data-um~="artigo"] .elementor-widget-theme-post-content :is(p, li, ul, ol) { color: inherit; }
[data-um~="artigo"] .elementor-widget-theme-post-content hr { border: 0; border-top: 1px solid var(--line); margin: 2.5em 0; width: 100%; }
/* O bloco «Conteúdo do artigo» do Elementor usa a cor de texto do kit (preto): herda a do tema */
.elementor [data-um~="artigo"] .elementor-widget-theme-post-content { color: inherit !important; font-family: inherit; }
