/* Portal (página única: / e /acesso) e páginas institucionais.
   Cabeçalho azul (25% da tela, no mínimo) com a conta (login Google) à direita, abas centralizadas e painéis; margens laterais de 8%. */
:root {
  color-scheme: light;
  --pt-bg: #FBF9F5; --pt-bg-alt: #F4EEE4; --pt-surface: #FFFFFF; --pt-ivory-dark: #EDE3D2; --pt-sky: #DCE8F2;
  --pt-line: #E3D8C6; --pt-line-strong: #CDBFA8;
  --pt-ink: #1D2733; --pt-navy: #0B2A4E; --pt-muted: #5B6573; --pt-brown: #6B5E50;
  --pt-primary: #00407C; --pt-teal: #0B6E6A; --pt-cyan: #00B4B4;
  --pt-chip-blue: #E6EEF6; --pt-chip-teal: #E3F4F2;
  --pt-shadow: 0 1px 2px rgba(29,39,51,.06), 0 8px 24px rgba(29,39,51,.06);
  --pt-margem: max(16px, 8%);
  --pj-turquesa: #14B8C8; --pj-branco-gelo: #F5F5F2;
}
* { box-sizing: border-box; }
html { scroll-behavior: smooth; scroll-padding-top: 12px; }
@media (prefers-reduced-motion: reduce) { html { scroll-behavior: auto; } }
body.portal-body { margin: 0; min-height: 100svh; display: flex; flex-direction: column; background: var(--pt-bg); color: var(--pt-ink);
  font-family: 'Plus Jakarta Sans', 'Segoe UI', system-ui, sans-serif; line-height: 1.5; overflow-wrap: anywhere; }
.portal-body main { flex: 1; }
/* Cabeçalho e conteúdo somam 100% da altura da tela (o rodapé fica fora da conta): 25% e 75%, com mínimos de
   170px e 510px (170 + 510 = 680px). O conteúdo começa sempre no topo. */
.pt-conteudo { flex: 1 0 auto; min-height: max(510px, 75svh); }
.pt-conteudo > main { flex: none; }
.portal-body a { color: var(--pt-primary); }
.portal-body a:hover { color: var(--pt-teal); }
.portal-body :focus-visible { outline: 3px solid var(--pt-cyan); outline-offset: 3px; }
.portal-body h1, .portal-body h2, .portal-body h3, .portal-body h4, .portal-body p { margin: 0; }
/* Margem de 8% de cada lado, no topo e no conteúdo */
.pt-wrap { padding-left: var(--pt-margem); padding-right: var(--pt-margem); }
.sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap; border: 0; }
[hidden] { display: none !important; }

/* Botões */
.pt-btn { display: inline-flex; align-items: center; justify-content: center; gap: 8px; min-height: 44px; padding: 0 20px; border-radius: 10px; font-size: 13px;
  font-weight: 800; letter-spacing: .06em; text-decoration: none; border: 1.5px solid transparent; max-width: 100%; text-align: center; }
.pt-btn svg { width: 16px; height: 16px; flex: none; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }
.portal-body .pt-btn--primary { background: var(--pt-primary); color: #FFFFFF; }
.portal-body .pt-btn--primary:hover { background: #00325F; color: #FFFFFF; }

/* Cabeçalho: faixa azul com 25% da altura da tela (mínimo de 170px) e 15px internos em cima e embaixo. À esquerda o monograma
   e, ao lado, o nome com as frases animadas logo abaixo; à direita a conta. Tudo centralizado na vertical, em qualquer
   altura de tela. A fotografia do notebook cobre a faixa. */
.pt-topo { position: relative; color: var(--pj-branco-gelo); background: #062B48 url('projetos_juridicos_hero_fundo.webp') right 60% / cover no-repeat; }
.pt-topo-inner { box-sizing: border-box; display: flex; align-items: center; align-content: center; justify-content: space-between; gap: 12px 24px; min-height: max(170px, 25svh);
  padding: 15px var(--pt-margem); }
.pt-topo-marca { display: flex; align-items: center; gap: 14px; min-width: 0; }
.portal-logo { flex: none; display: block; line-height: 0; }
.portal-logo img { height: 70px; width: auto; }
.pt-topo-texto { display: flex; flex-direction: column; gap: 4px; min-width: 0; }
.pt-hero-titulo { margin: 0; line-height: 0; }
.pt-hero-titulo-arte { display: block; height: 34px; width: auto; max-width: 100%; overflow: visible; }
.pt-hero-titulo-arte text { font-family: 'Plus Jakarta Sans', 'Segoe UI', system-ui, sans-serif; font-size: 100px; letter-spacing: -3px; fill: #FFFFFF;
  stroke: #021A30; stroke-width: 8px; stroke-linejoin: round; stroke-linecap: round; paint-order: stroke fill; }
.pt-titulo-forte { font-weight: 800; }
.pt-titulo-leve { font-weight: 300; }
.pt-frases { display: flex; align-items: center; gap: 8px; min-width: 0; }
.pt-hero-bar { flex: none; width: 3px; height: 14px; border-radius: 1px; background: var(--pj-turquesa); }
.pt-frases-palco { min-width: 0; margin: 0; overflow: hidden; white-space: nowrap; font-size: 13.5px; line-height: 1.35; font-weight: 400; color: #DCE8F2; }
/* Cada letra entra da esquerda (sem foco e transparente), tremula numa onda que corre para a direita e sai pela direita. */
.pt-frase-palavra { display: inline-block; white-space: nowrap; }
.pt-frase-letra { display: inline-block; animation: pt-letra-entra .75s cubic-bezier(.2,.75,.25,1) both, pt-letra-tremula 2.8s ease-in-out infinite;
  animation-delay: calc(var(--i) * 22ms), calc(var(--i) * 80ms - 30s); }
.pt-frases-palco[data-estado="saindo"] .pt-frase-letra { animation-name: pt-letra-sai, pt-letra-tremula; animation-duration: .6s, 2.8s;
  animation-timing-function: ease-in, ease-in-out; animation-delay: calc(var(--i) * 12ms), calc(var(--i) * 80ms - 30s); }
.pt-frases-palco[data-pausado] .pt-frase-letra { animation-play-state: paused; }
@keyframes pt-letra-entra { from { opacity: 0; translate: -.8em 0; filter: blur(5px); } to { opacity: 1; translate: 0 0; filter: blur(0); } }
@keyframes pt-letra-sai { from { opacity: 1; translate: 0 0; filter: blur(0); } to { opacity: 0; translate: .8em 0; filter: blur(5px); } }
@keyframes pt-letra-tremula { 0%, 100% { transform: translateY(0) rotate(0deg); } 25% { transform: translateY(-2px) rotate(-2deg); } 75% { transform: translateY(1.5px) rotate(1.5deg); } }
.pt-frases-pausa { flex: none; display: inline-flex; align-items: center; justify-content: center; width: 18px; height: 18px; padding: 0;
  border: 1px solid rgba(245,245,242,.32); border-radius: 999px; background: transparent; color: var(--pj-branco-gelo); opacity: .7; cursor: pointer; }
.pt-frases-pausa:hover { opacity: 1; border-color: rgba(245,245,242,.7); }
.pt-frases-pausa svg { width: 9px; height: 9px; fill: none; stroke: currentColor; stroke-width: 2.6; stroke-linecap: round; stroke-linejoin: round; }
.pt-frases-pausa .pt-icone-tocar { display: none; fill: currentColor; stroke-width: 1.6; }
.pt-frases-pausa[aria-pressed="true"] .pt-icone-pausar { display: none; }
.pt-frases-pausa[aria-pressed="true"] .pt-icone-tocar { display: inline; }
.portal-body .pt-topo :focus-visible { outline-color: var(--pj-turquesa); }

/* Login Google: G, LOGIN, MANTER-ME CONECTADO e, à direita, CADASTRE-SE (no cabeçalho e na Central) */
.pt-google { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 10px; }
.pt-google-g { width: 20px; height: 20px; flex: none; }
.pt-login-erro { flex-basis: 100%; color: #9B2C2C; font-size: 12px; }
/* Conta no canto direito do cabeçalho, sobre o azul: LOGIN, MANTER-ME CONECTADO e CADASTRE-SE empilhados,
   alinhados à direita, com o G ao lado do LOGIN. */
.pt-conta { flex: none; display: flex; flex-wrap: wrap; align-items: center; justify-content: flex-end; gap: 6px 12px; min-width: 0; }
.pt-conta .pt-google { display: grid; grid-template-columns: auto auto; align-items: center; justify-items: end; gap: 10px 8px; }
.pt-conta .pt-google > * { grid-column: 2; }
.pt-conta .pt-google > .pt-google-g { grid-column: 1; grid-row: 1; }
.pt-conta .pt-google-g { box-sizing: border-box; width: 30px; height: 30px; padding: 5px; border-radius: 50%; background: #FFFFFF; }
/* Botões sem cor de fundo: 28px, texto de 12,5px (600; 700 no hover) e borda de 1,5px (2px no hover).
   Largura fixa: o negrito do hover não mexe no bloco. */
.portal-body .pt-conta .central-btn, .portal-body .pt-conta .central-btn--principal { height: 28px; padding: 0 12px; border: 1.5px solid rgba(246,243,236,.6);
  background: transparent; color: #F6F3EC; font-size: 12.5px; font-weight: 600; }
.pt-conta .pt-google .central-btn { justify-self: stretch; width: 212px; }
.portal-body .pt-conta .central-btn:is(:hover, :focus-within) { padding: 0 11.5px; border-width: 2px; border-color: #F6F3EC; background: transparent; color: #F6F3EC; font-weight: 700; }
.pt-conta .central-remember { color: #F6F3EC; }
.pt-conta .central-ajuda { color: #9CC9F0; }
/* O aviso de erro do login aparece logo abaixo do cabeçalho, sem mudar a altura dele. */
.pt-conta .pt-login-erro { position: absolute; top: calc(100% + 4px); right: var(--pt-margem); z-index: 3; max-width: min(420px, 84%); padding: 4px 8px;
  border: 1.5px solid #E3B4B4; border-radius: 8px; background: #FFF8EA; }
.pt-conta-pessoa { display: flex; flex-direction: column; align-items: flex-end; min-width: 0; font-size: 11px; line-height: 1.35; color: #D3DFEB; text-align: right; }
.pt-conta-pessoa strong { font-size: 13px; color: #FFFFFF; }

/* Abas à esquerda (INÍCIO, APPS E SERVIÇOS, CENTRAL DE ACESSO), no estilo das abas do central.css: sem borda e sem fundo,
   texto de 13,2px (500; 550 no hover e na selecionada) e a selecionada sublinhada. */
/* Faixa das abas em marfim, sem borda, com 14px internos em cima e embaixo. */
.pt-abas { display: flex; flex-wrap: wrap; justify-content: flex-start; gap: 0 24px; padding: 14px var(--pt-margem); border: 0; background: var(--pt-bg-alt); }
.portal-body .pt-abas a { display: inline-flex; align-items: center; height: 30px; padding: 0 0 2px; border: 0;
  border-radius: 0; background: transparent; color: var(--pt-navy); font-size: 13.2px; font-weight: 500; letter-spacing: .06em; text-decoration: none; white-space: nowrap; }
.portal-body .pt-abas a:hover, .portal-body .pt-abas a:focus-visible, .portal-body .pt-abas a[aria-current] { color: var(--pt-navy); font-weight: 550; }
/* Sublinhado só na selecionada (sem borda transparente, que o Alto Contraste pintaria nas demais). */
.portal-body .pt-abas a[aria-current] { padding-bottom: 0; border-bottom: 2px solid var(--pt-navy); }
/* Com JS, só o painel da aba ativa aparece. */
.pt-js .pt-painel:not(.is-ativo) { display: none; }

/* Seções */
.pt-section { padding: 28px 0; }
/* Em cada página, 8px acima do título (logo abaixo das abas). */
.pt-conteudo main > .pt-section, .pt-conteudo main > .pt-painel > .pt-section:first-child, .pt-conteudo > main.pt-section { padding-top: 8px; }
.pt-section--alt { background: var(--pt-bg-alt); border-top: 1px solid var(--pt-line); border-bottom: 1px solid var(--pt-line); }
.pt-stack { display: flex; flex-direction: column; gap: 14px; }
/* Títulos das páginas (Sobre o projeto, Aplicativos e serviços, Central de Acesso...): um único padrão. */
.pt-title { margin: 0; font-size: 20px; line-height: 1.2; font-weight: 500; text-transform: uppercase; letter-spacing: 1.1px; color: #031a35; }
.pt-texto { display: flex; flex-direction: column; gap: 10px; font-size: 16px; font-weight: 400; line-height: 1.4; color: var(--pt-muted); text-align: justify; }
.pt-texto p { margin: 0; }
.pt-texto strong { color: var(--pt-navy); font-weight: 700; }
.pt-nome { display: inline-block; padding: 0 .4em; border-radius: 6px; background: var(--pt-chip-blue); color: var(--pt-navy); font-weight: 600; line-height: 1.35; white-space: nowrap; }
.pt-nome--marca { font-weight: 800; border: 1px solid #C7D7E6; }
.portal-preview-banner { margin: 0; padding: 10px var(--pt-margem); background: #FFF4CC; color: #4A3A00; font-weight: 700; text-align: center; border-bottom: 1px solid #E8D58A; }

/* Sobre e Contato: um único fluxo de conteúdo à esquerda, com imagem institucional à direita. */
.pt-sobre-grade { display: grid; grid-template-columns: minmax(0, 62fr) minmax(280px, 33fr); gap: 5%; align-items: start; }
.pt-sobre-texto { display: flex; flex-direction: column; min-width: 0; }
.pt-sobre-texto > .pt-title { margin-bottom: 14px; }
.pt-sobre-imagem { display: block; width: 100%; height: auto; aspect-ratio: 4 / 3; object-fit: cover; border-radius: 14px; }
/* O título Contato começa exatamente 8px após o fim do texto de Sobre. */
#contato { padding-top: 0; margin-top: 8px; border: 0; }
#contato > .pt-title { margin-bottom: 14px; }

/* Apps e serviços: cartões informativos, dois por linha */
.pt-apps { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px; align-items: start; }
.pt-app { display: flex; flex-direction: column; gap: 8px; min-width: 0; padding: 14px 16px; background: var(--pt-surface); border: 1px solid var(--pt-line); border-radius: 14px; }
.pt-app h3 { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 8px; font-size: 16px; line-height: 1.2; font-weight: 800; color: var(--pt-navy); }
.pt-app-icone { display: inline-flex; color: var(--pt-primary); }
.pt-app-icone svg { width: 20px; height: 20px; fill: none; stroke: currentColor; stroke-width: 1.7; stroke-linecap: round; stroke-linejoin: round; }
.pt-app-tipo { font-size: 13px; font-weight: 400; color: var(--pt-brown); }
.pt-app-texto { font-size: 15px; line-height: 1.4; color: var(--pt-muted); text-align: justify; }
.pt-app-topicos { font-size: 13.5px; line-height: 1.35; color: var(--pt-muted); text-align: justify; }
.pt-app-topicos summary { width: fit-content; font-size: 11px; font-weight: 800; letter-spacing: .1em; color: var(--pt-teal); cursor: pointer; }
.pt-app-topicos h4 { margin: 10px 0 4px; font-size: 11.5px; font-weight: 800; letter-spacing: .08em; text-transform: uppercase; color: var(--pt-teal); }
.pt-app-topicos ul { margin: 0; padding-left: 18px; display: flex; flex-direction: column; gap: 3px; }
.pt-app-topicos strong { color: var(--pt-navy); font-weight: 700; }
.pt-soon { grid-column: 1 / -1; border: 1.5px dashed var(--pt-line-strong); border-radius: 14px; padding: 12px 16px; display: flex; flex-wrap: wrap; align-items: baseline; gap: 4px 14px; color: var(--pt-brown); }
.pt-soon span { font-size: 12px; font-weight: 800; letter-spacing: .12em; }
.pt-soon p { font-size: 14px; }

/* Conteúdos e publicações (só quando há publicações) */
.pt-card { background: var(--pt-surface); border: 1px solid var(--pt-line); border-radius: 14px; padding: 16px; display: flex; flex-direction: column; gap: 6px; }
.pt-card h3 { font-size: 17px; line-height: 1.25; font-weight: 700; color: var(--pt-navy); }
.pt-card p { font-size: 15px; line-height: 1.35; color: var(--pt-muted); text-align: justify; }
a.pt-content-card { text-decoration: none; color: var(--pt-ink); transition: border-color .15s, box-shadow .15s; }
a.pt-content-card:hover { border-color: var(--pt-primary); box-shadow: var(--pt-shadow); color: var(--pt-ink); }
.pt-content-more { margin-top: auto; padding-top: 4px; font-size: 12px; font-weight: 800; letter-spacing: .1em; color: var(--pt-primary); }
.pt-carrossel { display: grid; grid-template-columns: auto minmax(0, 1fr) auto; align-items: center; gap: 10px; }
.pt-carrossel-trilho { grid-column: 2; display: grid; grid-auto-flow: column; grid-auto-columns: calc((100% - 32px) / 3); gap: 16px; overflow-x: auto; scroll-snap-type: x mandatory;
  scrollbar-width: none; padding: 2px; }
.pt-carrossel-trilho::-webkit-scrollbar { display: none; }
.pt-carrossel-trilho > * { scroll-snap-align: start; }
.pt-carrossel-seta { width: 40px; height: 40px; border: 1.3px solid var(--pt-line-strong); border-radius: 12px; background: var(--pt-surface); color: var(--pt-navy); cursor: pointer; display: flex; align-items: center; justify-content: center; }
.pt-carrossel-seta svg { width: 18px; height: 18px; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }

/* Contato */
.pt-contato { max-width: 760px; padding: 20px 22px; background: var(--pt-surface); border: 0; border-radius: 14px;
  display: flex; flex-direction: column; gap: 12px; }
.pt-contato > p { font-size: 16px; line-height: 1.35; color: var(--pt-muted); text-align: justify; }
.pt-contato-canais { display: flex; flex-direction: column; gap: 8px; }
.pt-contact-mail { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 8px; }
.pt-contact-link { display: inline-flex; align-items: center; gap: 12px; min-height: 44px; font-size: 16px; font-weight: 600; text-decoration: none; }
.pt-contact-link > span:first-child { flex: none; width: 38px; height: 38px; border-radius: 10px; background: var(--pt-chip-blue); color: var(--pt-primary); display: flex; align-items: center; justify-content: center; }
.pt-contact-link svg { width: 20px; height: 20px; fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }
.pt-copy { display: inline-flex; align-items: center; justify-content: center; width: 38px; height: 38px; border: 1px solid var(--pt-line-strong); border-radius: 10px; background: var(--pt-surface); color: var(--pt-primary); cursor: pointer; }
.pt-copy:hover { border-color: var(--pt-primary); }
.pt-copy svg { width: 18px; height: 18px; fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }
.pt-copy-status { font-size: 13px; font-weight: 600; color: var(--pt-teal); }

/* Página institucional estendida */
.pt-split { display: flex; flex-wrap: wrap; gap: 32px; }
.pt-image { display: block; max-width: 100%; height: auto; border-radius: 16px; }
.pt-page .pt-split > section { flex: 2 1 560px; min-width: 0; }
.pt-page .pt-split > aside { flex: 1 1 320px; }
.pt-head { display: flex; flex-direction: column; gap: 8px; }
.pt-lead { font-size: 16px; color: var(--pt-muted); }
.pt-rich { display: flex; flex-direction: column; gap: 12px; font-size: 16px; line-height: 1.4; text-align: justify; }
.pt-rich > * { margin: 0; }
.pt-actions { display: flex; flex-wrap: wrap; gap: 12px; }

/* Logotipo "PROJETOS JURÍDICOS" em SVG (templates/site/marca.html): texto em currentColor, contorno arredondado. */
.pt-marca { display: block; flex: none; overflow: visible; }
.pt-marca text { fill: currentColor; font-family: "Aptos", Inter, 'Plus Jakarta Sans', sans-serif; font-size: 104px; letter-spacing: -1.15px; text-anchor: start;
  stroke: currentColor; stroke-linejoin: round; paint-order: stroke fill; }
.pt-marca-projetos { font-weight: 700; stroke-width: .65px; }
.pt-marca-juridicos { font-weight: 200; stroke-width: 0; }

/* Rodapé: mapa de links e faixa de assinatura */
.portal-footer-mapa { background: linear-gradient(115deg, var(--pt-ivory-dark) 0%, var(--pt-ivory-dark) 45%, var(--pt-sky) 100%); border-top: 1px solid var(--pt-line-strong); }
.portal-footer-colunas { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 24px; padding-top: 26px; padding-bottom: 26px; }
.portal-footer-local { display: flex; align-items: center; gap: 10px; align-self: center; font-size: 19px; font-weight: 700; color: var(--pt-navy); }
.portal-footer-local svg { width: 28px; height: 28px; flex: none; fill: none; stroke: var(--pt-teal); stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }
.portal-footer-grupo { display: flex; flex-direction: column; gap: 6px; }
.portal-footer-grupo h2 { margin-bottom: 4px; font-size: 12px; font-weight: 800; letter-spacing: .12em; color: var(--pt-navy); }
.portal-footer-grupo a { font-size: 14px; font-weight: 500; color: var(--pt-brown); text-decoration: none; }
.portal-footer-grupo a:hover { color: var(--pt-primary); text-decoration: underline; }
.portal-footer-base { background: var(--pt-bg-alt); border-top: 1px solid var(--pt-line); }
.portal-footer-base .pt-wrap { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 12px; padding-top: 14px; padding-bottom: 14px; }
.portal-footer-base .pt-marca { height: 32px; width: auto; color: var(--pt-navy); }
.portal-footer-meta { font-size: 13px; color: var(--pt-brown); }

/* Política de segurança e privacidade: overlay com aparência de documento */
.pt-layer { width: min(900px, calc(100vw - 24px)); height: min(88vh, 1000px); max-height: none; padding: 0; border: 1px solid var(--pt-line-strong); border-radius: 14px;
  background: var(--pt-surface); color: var(--pt-ink); box-shadow: 0 24px 64px rgba(11,42,78,.28); overflow: hidden; }
.pt-layer[open] { display: flex; flex-direction: column; }
.pt-layer::backdrop { background: rgba(11,42,78,.5); }
.pt-layer-topo { flex: none; display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 12px 18px; background: var(--pt-bg-alt); border-bottom: 1px solid var(--pt-line); }
.pt-layer-topo .pt-marca { height: 30px; width: auto; color: var(--pt-navy); }
.pt-layer-close { width: 38px; height: 38px; border: 1px solid var(--pt-line-strong); border-radius: 10px; background: var(--pt-surface); color: var(--pt-navy); font-size: 22px; line-height: 1; cursor: pointer; }
.pt-layer-corpo { flex: 1; overflow: auto; padding: 26px clamp(18px, 5vw, 56px) 34px; }
.pt-layer-corpo h2 { font-size: 20px; line-height: 1.25; font-weight: 800; color: var(--pt-navy); text-transform: uppercase; letter-spacing: .02em; }
.pt-layer-sub { margin-top: 6px !important; font-size: 14px; line-height: 1.35; color: var(--pt-brown); }
.pt-documento { margin-top: 18px; font-size: 15px; line-height: 1.4; color: var(--pt-ink); text-align: justify; }
.pt-documento h3 { margin: 18px 0 6px; font-size: 15px; font-weight: 800; color: var(--pt-navy); }
.pt-documento p { margin: 0 0 8px; }
.pt-documento ul { margin: 0 0 8px; padding-left: 20px; display: flex; flex-direction: column; gap: 4px; }
.pt-documento strong { color: var(--pt-navy); }

@media (max-width: 919.98px) {
  .pt-sobre-grade { grid-template-columns: minmax(0, 1fr); gap: 24px; }
  .pt-sobre-imagem { width: min(100%, 760px); }
  .pt-carrossel-trilho { grid-auto-columns: calc((100% - 16px) / 2); }
  .portal-footer-colunas { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); }
  .portal-footer-local { grid-column: 1 / -1; }
}
/* Abaixo de 900px a conta desce para baixo da marca e o cabeçalho cresce o necessário. */
@media (max-width: 899.98px) {
  .pt-topo-inner { flex-wrap: wrap; }
  .pt-conta { flex: 1 1 100%; }
  .pt-conta { justify-content: flex-start; }
  .pt-conta .pt-google { justify-items: start; }
  .pt-conta-pessoa { align-items: flex-start; text-align: left; }
  .pt-conta .pt-login-erro { left: var(--pt-margem); right: auto; }
}
@media (max-width: 760px) {
  .pt-apps { grid-template-columns: minmax(0, 1fr); }
  .pt-topo { background-image: none; }
}
@media (max-width: 560px) {
  .pt-section { padding: 22px 0; }
  .pt-carrossel-trilho { grid-auto-columns: 85%; }
  .portal-footer-colunas { grid-template-columns: minmax(0, 1fr); }
  .portal-logo img { height: 56px; }
  .pt-hero-titulo-arte { height: 28px; }
  .pt-frases-palco { font-size: 12px; }
  /* Em telas estreitas (ou com zoom alto) os botões do login acompanham a largura disponível. */
  .pt-conta .pt-google { grid-template-columns: auto minmax(0, 1fr); }
  .pt-conta .pt-google .central-btn { width: auto; min-width: 0; max-width: 212px; height: auto; min-height: 28px; white-space: normal; text-align: center; }
  .pt-abas { gap: 0 12px; }
  .portal-body .pt-abas a { letter-spacing: .02em; }
}
@media (max-width: 420px) { .pt-nome { white-space: normal; } .pt-btn { padding: 8px 14px; } .portal-body .pt-abas a { font-size: 12px; } }
/* Sem animação para quem pede menos movimento: fica a primeira frase, parada. */
@media (prefers-reduced-motion: reduce) { .pt-frase-letra { animation: none; } }
/* Alto contraste: cores do sistema, áreas separadas por borda e aba atual sublinhada. */
@media (forced-colors: active) {
  .pt-topo { background: Canvas; color: CanvasText; border-bottom: 1px solid CanvasText; }
  .pt-conta .pt-google-g { forced-color-adjust: none; }
  .portal-body .pt-abas a[aria-current] { border-bottom-color: CanvasText; }
  .pt-hero-titulo-arte text { fill: CanvasText; stroke: Canvas; }
  .pt-hero-bar { background: CanvasText; }
  .pt-btn, .pt-card, .pt-app, .pt-layer, .pt-soon { border: 1px solid CanvasText; }
}
@media print { .pt-abas, .pt-conta, .pt-frases-pausa { display: none; } .pt-js .pt-painel:not(.is-ativo) { display: block; } }
