/* Start custom CSS for html, class: .elementor-element-2a56837 *//* ==========================================================================
   KOSMETALL — POLÍTICA DE PRIVACIDADE
   Requer kosmetall-tokens.css já carregado globalmente (ver GUIA-kosmetall-tokens.md)
   Classe de âmbito: .pg-privacidade — aplicar no Container exterior do Elementor

   Nota de design: tratamento deliberadamente mais sóbrio que Contacto/Sobre
   Mim — sem blobs animados, sem gradiente no hero. Páginas legais ganham
   por serem claras e fáceis de escanear, não por impacto visual (o mesmo
   princípio usado nas páginas legais da lexstudi). O relevo vem de outro
   lado: tabelas com badges de base legal, cartões de direitos, e um
   número gigante muito subtil por secção para orientação visual rápida.
   ========================================================================== */

.pg-privacidade {
  background: var(--color-bg);
  font-family: var(--font-body);
  color: var(--color-txt);
}

.pv-c { max-width: var(--container-lg); margin: 0 auto; padding: 0 var(--sz-md); }
@media (min-width: 768px) { .pv-c { padding: 0 var(--sz-xl); } }

/* ---------- CABEÇALHO ---------- */
.pv-header { padding: var(--sz-4xl) 0 var(--sz-xl); border-bottom: var(--border-default); }
.pv-chip {
  display: inline-flex; align-items: center; gap: var(--sz-xs);
  background: var(--color-section); border: var(--border-default);
  color: var(--color-primary); font: var(--fw-semibold) var(--fs-link-btn) var(--font-heading);
  text-transform: uppercase; letter-spacing: var(--ls-link-btn);
  padding: var(--sz-2xs) var(--sz-md); border-radius: var(--rd-pill); margin-bottom: var(--sz-lg);
}
.pv-chip .dot { width: 7px; height: 7px; border-radius: 50%; background: var(--color-accent); }
.pv-title { font: var(--type-h1); color: var(--color-title); margin: 0 0 var(--sz-md); }
.pv-updated {
  display: inline-flex; align-items: center; gap: var(--sz-xs);
  font-size: var(--fs-sm); color: var(--color-muted);
  background: var(--color-section); padding: var(--sz-2xs) var(--sz-md); border-radius: var(--rd-pill);
}
.pv-updated svg { width: 14px; height: 14px; stroke-width: var(--icon-stroke-width); }
.pv-intro { max-width: 62ch; color: var(--color-txt); font: var(--type-body); margin-top: var(--sz-lg); }
.pv-placeholder {
  background: var(--gold-100); border: 1px dashed var(--gold-500); color: var(--gold-800);
  padding: 1px 8px; border-radius: var(--rd-xs); font-size: 0.92em; white-space: nowrap;
}

/* ---------- LAYOUT: ÍNDICE + CONTEÚDO ---------- */
.pv-layout { display: grid; grid-template-columns: 1fr; gap: var(--sz-xl); padding: var(--sz-2xl) 0 var(--sz-4xl); }
@media (min-width: 1024px) { .pv-layout { grid-template-columns: 264px 1fr; align-items: start; gap: var(--sz-2xl); } }

.pv-nav-toggle {
  display: flex; align-items: center; justify-content: space-between; width: 100%;
  min-height: var(--touch-target-min);
  background: var(--color-section); border: var(--border-default);
  border-radius: var(--rd-md); padding: var(--sz-sm) var(--sz-lg);
  font: var(--type-subtitle); color: var(--color-title); cursor: pointer;
}
.pv-nav-toggle svg { width: 18px; height: 18px; transition: transform var(--speed-norm) var(--ease-in-out); }
.pv-nav-toggle[aria-expanded="true"] svg { transform: rotate(180deg); }

.pv-nav-list { list-style: none; margin: var(--sz-xs) 0 0; padding: 0; display: none; }
.pv-nav-list.open { display: block; }
.pv-nav-list a {
  display: flex; align-items: center; gap: var(--sz-sm);
  min-height: var(--touch-target-min);
  padding: var(--sz-xs) var(--sz-md);
  font-size: var(--fs-sm); color: var(--color-muted);
  text-decoration: none; border-left: 2px solid transparent;
  border-radius: 0 var(--rd-sm) var(--rd-sm) 0;
  transition: color var(--speed-norm) var(--ease-in-out), border-color var(--speed-norm) var(--ease-in-out), background var(--speed-norm) var(--ease-in-out);
}
.pv-nav-list a .n {
  flex-shrink: 0; width: 20px; height: 20px; border-radius: 5px;
  background: var(--color-section); color: var(--color-primary);
  font: var(--fw-bold) 10px var(--font-heading); display: flex; align-items: center; justify-content: center;
}
.pv-nav-list a:hover, .pv-nav-list a.active { color: var(--color-primary); border-left-color: var(--color-primary); background: var(--color-section); }
.pv-nav-list a.active .n { background: var(--color-primary); color: var(--pure-white); }

@media (min-width: 1024px) {
  .pv-nav { position: sticky; top: var(--sz-xl); max-height: calc(100vh - var(--sz-3xl)); overflow-y: auto; }
  .pv-nav-toggle { display: none; }
  .pv-nav-list { display: block; border-left: var(--border-default); }
}

/* ---------- SECÇÕES DE CONTEÚDO ---------- */
.pv-content section {
  position: relative; overflow: hidden;
  background: var(--color-card); border: var(--border-default); border-radius: var(--rd-xl);
  padding: var(--sz-xl) var(--sz-lg); margin-bottom: var(--sz-md);
  scroll-margin-top: var(--sz-xl);
}
@media (min-width: 768px) { .pv-content section { padding: var(--sz-2xl); } }

.pv-secnum {
  position: absolute; right: var(--sz-md); bottom: -0.1em;
  font-family: var(--font-accent); font-size: clamp(64px, 10vw, 128px); line-height: 1;
  color: var(--peony-100); pointer-events: none; user-select: none; z-index: 0;
}

.pv-sechead { position: relative; z-index: 1; display: flex; align-items: flex-start; gap: var(--sz-md); margin-bottom: var(--sz-lg); padding-bottom: var(--sz-md); border-bottom: var(--border-hairline); }
.pv-icon { flex-shrink: 0; width: 44px; height: 44px; border-radius: var(--rd-md); display: flex; align-items: center; justify-content: center; }
.pv-icon svg { width: var(--icon-md); height: var(--icon-md); stroke-width: var(--icon-stroke-width); }
.pv-icon--peony { background: var(--peony-50); color: var(--color-primary); }
.pv-icon--gold { background: var(--gold-100); color: var(--gold-700); }
.pv-icon--sapphire { background: var(--sapphire-50); color: var(--color-secondary); }
.pv-icon--midnight { background: var(--midnight-100); color: var(--midnight-700); }

.pv-seceyebrow { font: var(--fw-semibold) var(--fs-2xs) var(--font-heading); text-transform: uppercase; letter-spacing: 1.5px; color: var(--color-muted); margin-bottom: 2px; }
.pv-content h2 { font: var(--type-h3); color: var(--color-title); margin: 0; }

.pv-content .pv-body { position: relative; z-index: 1; }
.pv-content p { font: var(--type-body); letter-spacing: var(--ls-body-fluid); max-width: 68ch; margin: 0 0 var(--sz-md); }
.pv-content p:last-child { margin-bottom: 0; }
.pv-content p strong { color: var(--color-title); font-weight: var(--fw-semibold); }
.pv-content ul { padding-left: var(--sz-lg); max-width: 68ch; margin: 0 0 var(--sz-md); }
.pv-content li { font: var(--type-body); margin-bottom: var(--sz-xs); }
.pv-content li strong { color: var(--color-title); font-weight: var(--fw-semibold); }

.pv-h3 {
  font: var(--fw-semibold) var(--fs-xs) var(--font-heading); text-transform: uppercase; letter-spacing: 1.2px;
  color: var(--color-muted); margin: var(--sz-lg) 0 var(--sz-sm); display: flex; align-items: center; gap: var(--sz-sm);
}
.pv-h3::before { content: ''; display: block; width: 18px; height: 1px; background: var(--color-primary); flex-shrink: 0; }

/* ---------- TABELAS (base legal / partilha de dados) ---------- */
.pv-tw { overflow-x: auto; margin: var(--sz-md) 0; border: var(--border-default); border-radius: var(--rd-md); -webkit-overflow-scrolling: touch; }
.pv-table { width: 100%; border-collapse: collapse; font-size: var(--fs-sm); min-width: 480px; }
.pv-table thead { background: var(--color-section); }
.pv-table th {
  font: var(--fw-semibold) var(--fs-2xs) var(--font-heading); text-transform: uppercase; letter-spacing: 1px;
  color: var(--color-muted); text-align: left; padding: var(--sz-sm) var(--sz-md);
  border-bottom: var(--border-default); white-space: nowrap;
}
.pv-table td { padding: var(--sz-sm) var(--sz-md); border-bottom: var(--border-hairline); vertical-align: top; color: var(--color-txt); line-height: 1.55; }
.pv-table tr:last-child td { border-bottom: none; }
.pv-table tr:hover td { background: var(--color-section); }
.pv-table td strong { color: var(--color-title); }

.pv-badge {
  display: inline-flex; align-items: center; font: var(--fw-bold) 9.5px var(--font-heading);
  text-transform: uppercase; letter-spacing: 0.6px; padding: 3px 9px; border-radius: var(--rd-pill); white-space: nowrap;
}
.pv-badge--contrato { background: var(--sapphire-50); color: var(--sapphire-700); }
.pv-badge--consentimento { background: var(--peony-50); color: var(--peony-700); }
.pv-badge--legitimo { background: var(--gold-100); color: var(--gold-800); }
.pv-badge--legal { background: var(--midnight-100); color: var(--midnight-700); }

/* ---------- CALLOUTS ---------- */
.pv-call { display: flex; align-items: flex-start; gap: var(--sz-sm); border-radius: var(--rd-md); padding: var(--sz-md) var(--sz-lg); margin: var(--sz-md) 0; max-width: 68ch; }
.pv-call svg { width: 18px; height: 18px; stroke-width: var(--icon-stroke-width); flex-shrink: 0; margin-top: 1px; }
.pv-call p { font-size: var(--fs-sm) !important; margin: 0 !important; }
.pv-call--info { background: var(--sapphire-50); border: 1px solid var(--sapphire-200); }
.pv-call--info svg { color: var(--color-secondary); }
.pv-call--warn { background: var(--gold-50); border: 1px solid var(--gold-300); }
.pv-call--warn svg { color: var(--gold-700); }

/* ---------- GRELHAS (direitos / contacto) ---------- */
.pv-grid { display: grid; grid-template-columns: 1fr; gap: var(--sz-sm); margin: var(--sz-md) 0; }
@media (min-width: 560px) { .pv-grid { grid-template-columns: 1fr 1fr; } }
@media (min-width: 1200px) { .pv-grid--rights { grid-template-columns: repeat(3, 1fr); } }

.pv-gridcard {
  background: var(--color-section); border: var(--border-default); border-radius: var(--rd-md);
  padding: var(--sz-md); display: flex; gap: var(--sz-sm); align-items: flex-start;
  transition: border-color var(--speed-norm) var(--ease-in-out), transform var(--speed-norm) var(--ease-in-out);
}
.pv-gridcard:hover { border-color: var(--color-primary); transform: translateY(-2px); }
.pv-gridcard svg { width: 20px; height: 20px; stroke-width: var(--icon-stroke-width); color: var(--color-primary); flex-shrink: 0; margin-top: 2px; }
.pv-gridcard-ttl { font: var(--fw-semibold) var(--fs-sm) var(--font-heading); color: var(--color-title); margin-bottom: 2px; }
.pv-gridcard-dsc { font-size: var(--fs-sm); color: var(--color-muted); line-height: 1.5; }

.pv-contactcard { background: var(--color-section); border: var(--border-default); border-radius: var(--rd-md); padding: var(--sz-lg); }
.pv-cc-label { font: var(--fw-semibold) var(--fs-2xs) var(--font-heading); text-transform: uppercase; letter-spacing: 1px; color: var(--color-primary); margin-bottom: 4px; }
.pv-cc-val { font: var(--type-subtitle); color: var(--color-title); word-break: break-word; }
.pv-cc-val a { color: inherit; text-decoration: none; }
.pv-cc-val a:hover { text-decoration: underline; }
.pv-cc-sub { font-size: var(--fs-xs); color: var(--color-muted); margin-top: 2px; }

/* ---------- REVEAL ---------- */
.reveal { opacity: 0; transform: translateY(var(--reveal-distance)); transition: var(--motion-reveal); }
.reveal.visible { opacity: 1; transform: translateY(0); }
@media (prefers-reduced-motion: reduce) { .reveal { transition: none; opacity: 1; transform: none; } }/* End custom CSS */
/* Start custom CSS *//* ==========================================================================
   KOSMETALL — POLÍTICA DE PRIVACIDADE · v2.0
   ========================================================================== */

.pg-privacidade {
  background: var(--color-bg);
  font-family: var(--font-body);
  color: var(--color-txt);
  overflow-x: clip;
}

/* Fundação — largura no container atómico do Elementor. Sem isto, o
   widget fica ao tamanho do conteúdo em vez de ocupar a página toda.
   Cobre os 3 cenários possíveis: classe só no container (o widget filho
   directo é apanhado pelo body.elementor-page-1214 "> .elementor-widget"), classe só no
   próprio widget, ou classe em ambos (o caso mais comum na prática). */
.pg-privacidade > .elementor-widget,
.elementor-widget.pg-privacidade,
.pg-privacidade.elementor-widget-html {
  width: 100%;
  flex: 1 1 100%;
  min-width: 0;
}

.pv-c { max-width: var(--container-lg); margin: 0 auto; padding: 0 var(--sz-md); position: relative; z-index: 1; }
@media (min-width: 768px) { .pv-c { padding: 0 var(--sz-xl); } }

/* ---------- MARKO ONE (com moderação) ---------- */
.marko-hl { font-family: var(--font-accent); font-weight: var(--fw-regular); color: var(--color-primary); position: relative; display: inline-block; }
.marko-hl::after { content: ''; position: absolute; left: 0; bottom: -2px; height: 2px; width: 0; background: currentColor; opacity: .5; transition: width 900ms var(--ease-out) 350ms; }
.reveal.visible .marko-hl::after { width: 100%; }

/* ---------- BLOB discreto no cabeçalho ---------- */
.pv-blob { position: absolute; border-radius: 50%; filter: var(--blob-blur-lg); pointer-events: none; z-index: var(--z-blob); opacity: .8; }

/* ---------- CABEÇALHO ---------- */
.pv-header {
  position: relative; overflow: hidden;
  padding: var(--sz-4xl) 0 var(--sz-xl);
  background: linear-gradient(150deg, var(--cloud-50) 0%, var(--peony-50) 55%, var(--gold-50) 100%);
  border-bottom: var(--border-default);
}
.pv-chip {
  position: relative; z-index: 1;
  display: inline-flex; align-items: center; gap: var(--sz-xs);
  background: var(--pure-white); border: var(--border-default);
  color: var(--color-primary); font: var(--fw-semibold) var(--fs-link-btn) var(--font-heading);
  text-transform: uppercase; letter-spacing: var(--ls-link-btn);
  padding: var(--sz-2xs) var(--sz-md); border-radius: var(--rd-pill); margin-bottom: var(--sz-lg);
}
.pv-chip .dot { width: 7px; height: 7px; border-radius: 50%; background: var(--color-accent); }
.pv-title { position: relative; z-index: 1; font: var(--type-h1); color: var(--color-title); margin: 0 0 var(--sz-md); }
.pv-updated {
  position: relative; z-index: 1;
  display: inline-flex; align-items: center; gap: var(--sz-xs);
  font-size: var(--fs-sm); color: var(--color-muted);
  background: rgba(var(--pure-white-rgb), .7); padding: var(--sz-2xs) var(--sz-md); border-radius: var(--rd-pill);
}
.pv-updated svg { width: 14px; height: 14px; stroke-width: var(--icon-stroke-width); }
.pv-intro { position: relative; z-index: 1; max-width: 62ch; color: var(--color-txt); font: var(--type-body); margin-top: var(--sz-lg); }
.pv-placeholder {
  background: var(--gold-100); border: 1px dashed var(--gold-500); color: var(--gold-800);
  padding: 1px 8px; border-radius: var(--rd-xs); font-size: 0.92em; white-space: nowrap;
}

/* ---------- TABS (segmented control — reaproveita tokens --pill-*) ---------- */
.pv-tabs { position: relative; z-index: 1; display: inline-flex; background: rgba(var(--pure-white-rgb),.8); border: var(--border-default); border-radius: var(--pill-radius); padding: 4px; gap: 4px; margin-top: var(--sz-xl); }
.pv-tab {
  border: none; background: transparent; color: var(--color-muted);
  font: var(--pill-font); padding: var(--sz-sm) var(--sz-lg); border-radius: var(--pill-radius);
  cursor: pointer; transition: var(--pill-transition);
  min-height: var(--touch-target-min); display: inline-flex; align-items: center; gap: var(--sz-xs);
}
.pv-tab svg { width: 16px; height: 16px; stroke-width: var(--icon-stroke-width); }
.pv-tab.active { background: var(--pure-white); color: var(--color-primary); box-shadow: var(--shadow-sm); font-weight: var(--fw-semibold); }

/* ---------- PAINÉIS ---------- */
.pv-panel { display: none; }
.pv-panel.active { display: block; animation: pv-fade var(--speed-slow) var(--ease-out); }
@keyframes pv-fade { from { opacity: 0; transform: translateY(6px); } to { opacity: 1; transform: translateY(0); } }

/* ---------- RESUMO (cards) ---------- */
.pv-resumo-grid { display: grid; grid-template-columns: 1fr; gap: var(--sz-lg); padding: var(--sz-2xl) 0 var(--sz-4xl); }
@media (min-width: 640px) { .pv-resumo-grid { grid-template-columns: 1fr 1fr; } }
@media (min-width: 1024px) { .pv-resumo-grid { grid-template-columns: repeat(3, 1fr); } }

.pv-resumo-card { position: relative; background: var(--color-card); border: var(--border-default); border-radius: var(--rd-xl); padding: var(--sz-lg); box-shadow: var(--shadow-xs); transition: var(--motion-card); overflow: hidden; }
.pv-resumo-card:hover { box-shadow: var(--shadow-md); transform: translateY(-3px); }
.pv-resumo-card::before { content: ''; position: absolute; top: 0; left: 0; right: 0; height: 3px; background: var(--color-primary); }
.pv-resumo-card--gold::before { background: var(--color-accent); }
.pv-resumo-card--sapphire::before { background: var(--color-secondary); }

.pv-resumo-icon { width: 40px; height: 40px; border-radius: var(--rd-md); display: flex; align-items: center; justify-content: center; margin-bottom: var(--sz-md); background: var(--peony-50); color: var(--color-primary); }
.pv-resumo-card--gold .pv-resumo-icon { background: var(--gold-100); color: var(--gold-700); }
.pv-resumo-card--sapphire .pv-resumo-icon { background: var(--sapphire-50); color: var(--color-secondary); }
.pv-resumo-icon svg { width: 20px; height: 20px; stroke-width: var(--icon-stroke-width); }

.pv-resumo-title { font: var(--type-h5); color: var(--color-title); margin: 0 0 4px; }
.pv-resumo-desc { font-size: var(--fs-sm); color: var(--color-muted); line-height: 1.55; margin: 0; }

.pv-resumo-note { display: flex; align-items: center; gap: var(--sz-sm); margin: 0 0 var(--sz-lg); padding: var(--sz-md) var(--sz-lg); background: var(--sapphire-50); border-left: 3px solid var(--color-secondary); border-radius: 0 var(--rd-md) var(--rd-md) 0; font-size: var(--fs-sm); }
.pv-resumo-note svg { width: 18px; height: 18px; stroke-width: var(--icon-stroke-width); color: var(--color-secondary); flex-shrink: 0; }

/* ---------- LAYOUT: ÍNDICE + CONTEÚDO (versão completa) ---------- */
.pv-layout { display: grid; grid-template-columns: 1fr; gap: var(--sz-xl); padding: var(--sz-2xl) 0 var(--sz-4xl); }
@media (min-width: 1024px) { .pv-layout { grid-template-columns: 264px 1fr; align-items: start; gap: var(--sz-2xl); } }

.pv-nav-toggle {
  display: flex; align-items: center; justify-content: space-between; width: 100%;
  min-height: var(--touch-target-min);
  background: var(--color-section); border: var(--border-default);
  border-radius: var(--rd-md); padding: var(--sz-sm) var(--sz-lg);
  font: var(--type-subtitle); color: var(--color-title); cursor: pointer;
}
.pv-nav-toggle svg { width: 18px; height: 18px; transition: transform var(--speed-norm) var(--ease-in-out); }
.pv-nav-toggle[aria-expanded="true"] svg { transform: rotate(180deg); }

.pv-nav-list { list-style: none; margin: var(--sz-xs) 0 0; padding: 0; display: none; }
.pv-nav-list.open { display: block; }
.pv-nav-list a {
  display: flex; align-items: center; gap: var(--sz-sm);
  min-height: var(--touch-target-min);
  padding: var(--sz-xs) var(--sz-md);
  font-size: var(--fs-sm); color: var(--color-muted);
  text-decoration: none; border-left: 2px solid transparent;
  border-radius: 0 var(--rd-sm) var(--rd-sm) 0;
  transition: color var(--speed-norm) var(--ease-in-out), border-color var(--speed-norm) var(--ease-in-out), background var(--speed-norm) var(--ease-in-out);
}
.pv-nav-list a .n {
  flex-shrink: 0; width: 20px; height: 20px; border-radius: 5px;
  background: var(--color-section); color: var(--color-primary);
  font: var(--fw-bold) 10px var(--font-heading); display: flex; align-items: center; justify-content: center;
}
.pv-nav-list a:hover, .pv-nav-list a.active { color: var(--color-primary); border-left-color: var(--color-primary); background: var(--color-section); }
.pv-nav-list a.active .n { background: var(--color-primary); color: var(--pure-white); }

@media (min-width: 1024px) {
  .pv-nav { position: sticky; top: var(--sz-xl); max-height: calc(100vh - var(--sz-3xl)); overflow-y: auto; }
  .pv-nav-toggle { display: none; }
  .pv-nav-list { display: block; border-left: var(--border-default); }
}

/* ---------- SECÇÕES DE CONTEÚDO ---------- */
.pv-content section {
  position: relative; overflow: hidden;
  background: var(--color-card); border: var(--border-default); border-radius: var(--rd-xl);
  padding: var(--sz-xl) var(--sz-lg); margin-bottom: var(--sz-md);
  scroll-margin-top: var(--sz-xl);
}
@media (min-width: 768px) { .pv-content section { padding: var(--sz-2xl); } }

.pv-secnum {
  position: absolute; right: var(--sz-md); bottom: -0.1em;
  font-family: var(--font-accent); font-size: clamp(64px, 10vw, 128px); line-height: 1;
  color: var(--peony-100); pointer-events: none; user-select: none; z-index: 0;
}

.pv-sechead { position: relative; z-index: 1; display: flex; align-items: flex-start; gap: var(--sz-md); margin-bottom: var(--sz-lg); padding-bottom: var(--sz-md); border-bottom: var(--border-hairline); }
.pv-icon { flex-shrink: 0; width: 44px; height: 44px; border-radius: var(--rd-md); display: flex; align-items: center; justify-content: center; }
.pv-icon svg { width: var(--icon-md); height: var(--icon-md); stroke-width: var(--icon-stroke-width); }
.pv-icon--peony { background: var(--peony-50); color: var(--color-primary); }
.pv-icon--gold { background: var(--gold-100); color: var(--gold-700); }
.pv-icon--sapphire { background: var(--sapphire-50); color: var(--color-secondary); }
.pv-icon--midnight { background: var(--midnight-100); color: var(--midnight-700); }

.pv-seceyebrow { font: var(--fw-semibold) var(--fs-2xs) var(--font-heading); text-transform: uppercase; letter-spacing: 1.5px; color: var(--color-muted); margin-bottom: 2px; }
.pv-content h2 { font: var(--type-h3); color: var(--color-title); margin: 0; }

.pv-content .pv-body { position: relative; z-index: 1; }
.pv-content p { font: var(--type-body); letter-spacing: var(--ls-body-fluid); max-width: 68ch; margin: 0 0 var(--sz-md); }
.pv-content p:last-child { margin-bottom: 0; }
.pv-content p strong { color: var(--color-title); font-weight: var(--fw-semibold); }
.pv-content ul { padding-left: var(--sz-lg); max-width: 68ch; margin: 0 0 var(--sz-md); }
.pv-content li { font: var(--type-body); margin-bottom: var(--sz-xs); }
.pv-content li strong { color: var(--color-title); font-weight: var(--fw-semibold); }

/* ---------- TABELAS (base legal / partilha de dados) ---------- */
.pv-tw { overflow-x: auto; margin: var(--sz-md) 0; border: var(--border-default); border-radius: var(--rd-md); -webkit-overflow-scrolling: touch; }
.pv-table { width: 100%; border-collapse: collapse; font-size: var(--fs-sm); min-width: 480px; }
.pv-table thead { background: var(--color-section); }
.pv-table th {
  font: var(--fw-semibold) var(--fs-2xs) var(--font-heading); text-transform: uppercase; letter-spacing: 1px;
  color: var(--color-muted); text-align: left; padding: var(--sz-sm) var(--sz-md);
  border-bottom: var(--border-default); white-space: nowrap;
}
.pv-table td { padding: var(--sz-sm) var(--sz-md); border-bottom: var(--border-hairline); vertical-align: top; color: var(--color-txt); line-height: 1.55; }
.pv-table tr:last-child td { border-bottom: none; }
.pv-table tr:hover td { background: var(--color-section); }
.pv-table td strong { color: var(--color-title); }

.pv-badge {
  display: inline-flex; align-items: center; font: var(--fw-bold) 9.5px var(--font-heading);
  text-transform: uppercase; letter-spacing: 0.6px; padding: 3px 9px; border-radius: var(--rd-pill); white-space: nowrap;
}
.pv-badge--contrato { background: var(--sapphire-50); color: var(--sapphire-700); }
.pv-badge--consentimento { background: var(--peony-50); color: var(--peony-700); }
.pv-badge--legitimo { background: var(--gold-100); color: var(--gold-800); }
.pv-badge--legal { background: var(--midnight-100); color: var(--midnight-700); }

/* ---------- CALLOUTS ---------- */
.pv-call { display: flex; align-items: flex-start; gap: var(--sz-sm); border-radius: var(--rd-md); padding: var(--sz-md) var(--sz-lg); margin: var(--sz-md) 0; max-width: 68ch; }
.pv-call svg { width: 18px; height: 18px; stroke-width: var(--icon-stroke-width); flex-shrink: 0; margin-top: 1px; }
.pv-call p { font-size: var(--fs-sm) !important; margin: 0 !important; }
.pv-call--info { background: var(--sapphire-50); border: 1px solid var(--sapphire-200); }
.pv-call--info svg { color: var(--color-secondary); }
.pv-call--warn { background: var(--gold-50); border: 1px solid var(--gold-300); }
.pv-call--warn svg { color: var(--gold-700); }

/* ---------- GRELHAS (direitos / contacto) ---------- */
.pv-grid { display: grid; grid-template-columns: 1fr; gap: var(--sz-sm); margin: var(--sz-md) 0; }
@media (min-width: 560px) { .pv-grid { grid-template-columns: 1fr 1fr; } }
@media (min-width: 1200px) { .pv-grid--rights { grid-template-columns: repeat(3, 1fr); } }

.pv-gridcard {
  background: var(--color-section); border: var(--border-default); border-radius: var(--rd-md);
  padding: var(--sz-md); display: flex; gap: var(--sz-sm); align-items: flex-start;
  transition: border-color var(--speed-norm) var(--ease-in-out), transform var(--speed-norm) var(--ease-in-out);
}
.pv-gridcard:hover { border-color: var(--color-primary); transform: translateY(-2px); }
.pv-gridcard svg { width: 20px; height: 20px; stroke-width: var(--icon-stroke-width); color: var(--color-primary); flex-shrink: 0; margin-top: 2px; }
.pv-gridcard-ttl { font: var(--fw-semibold) var(--fs-sm) var(--font-heading); color: var(--color-title); margin-bottom: 2px; }
.pv-gridcard-dsc { font-size: var(--fs-sm); color: var(--color-muted); line-height: 1.5; }

.pv-contactcard { background: var(--color-section); border: var(--border-default); border-radius: var(--rd-md); padding: var(--sz-lg); }
.pv-cc-label { font: var(--fw-semibold) var(--fs-2xs) var(--font-heading); text-transform: uppercase; letter-spacing: 1px; color: var(--color-primary); margin-bottom: 4px; }
.pv-cc-val { font: var(--type-subtitle); color: var(--color-title); word-break: break-word; }
.pv-cc-val a { color: inherit; text-decoration: none; }
.pv-cc-val a:hover { text-decoration: underline; }
.pv-cc-sub { font-size: var(--fs-xs); color: var(--color-muted); margin-top: 2px; }

/* ---------- REVEAL ---------- */
.reveal { opacity: 0; transform: translateY(var(--reveal-distance)); transition: var(--motion-reveal); }
.reveal.visible { opacity: 1; transform: translateY(0); }
@media (prefers-reduced-motion: reduce) {
  .reveal { transition: none; opacity: 1; transform: none; }
  .pv-panel.active { animation: none; }
  .marko-hl::after { transition: none; width: 100%; }
}/* End custom CSS */