/* rea.genesisinnovation.io: o que é só deste site. A base (tokens, topo, seções, contato, rodapé) é
   /estilo.css, cópia exata de fonte/proposito/estilo.css (a identidade da home; rea_site.py copia e o
   teste confere); as telas do Delphi usam /delphi/tela.css, do próprio app. */
.heroi h1{max-width:14ch}
.heroi p{max-width:52ch}
.heroi.menor{padding-block:72px 48px}
.titulo-aba{font-size:clamp(32px,5.4vw,64px);line-height:1.05;letter-spacing:-.03em;margin:18px 0 22px;max-width:18ch}
section>.w>.h2{font-size:clamp(24px,3vw,36px);line-height:1.15;margin:12px 0 36px;max-width:26ch}
@media (max-width:760px){.heroi.menor{padding-block:48px 36px}section>.w>.h2{margin-bottom:24px}}
h4{font-family:Sora,system-ui,sans-serif;font-weight:600;letter-spacing:-.01em;margin:0}
.intro{margin:-12px 0 28px;max-width:66ch;color:var(--mut)}
.intro a,.nota a,.limites a,.creditos a{color:var(--ink)}

/* Abas: sem JS são só links para as seções, empilhadas. Com JS (cedo.js põe html.abas e o
   data-aba), só a aba escolhida aparece; abas.js põe os papéis ARIA e as setas do teclado. */
.abas{position:sticky;top:56px;z-index:15;background:var(--bar);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);border-bottom:1px solid var(--line)}
.abas__lista{display:flex;gap:6px;overflow-x:auto;scrollbar-width:none;padding-block:8px}
.abas__lista::-webkit-scrollbar{display:none}
.abas__lista a{flex:none;display:inline-flex;align-items:center;min-height:36px;padding:0 14px;border-radius:999px;border:1px solid transparent;color:var(--mut);text-decoration:none;font-size:14px;white-space:nowrap}
.abas__lista a:hover{color:var(--ink);border-color:var(--line)}
.abas__lista a[aria-selected="true"]{color:var(--ink);border-color:var(--ink)}
html.abas .aba{display:none}
html.abas[data-aba="inicio"] #inicio,html.abas[data-aba="delphi"] #delphi,html.abas[data-aba="fastapi"] #fastapi,
html.abas[data-aba="jogo"] #jogo,html.abas[data-aba="experimente"] #experimente{display:block}
section{scroll-margin-top:110px}
.aba>section:first-child{border-top:0}
/* O painel recebe foco ao trocar de aba (leitor de tela anuncia); o contorno seria a página inteira. */
.aba:focus{outline:none}

/* Início: os três casos como cartões que levam à aba. */
.casos{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(3,1fr);gap:16px}
.casos a{height:100%;border:1px solid var(--line);border-radius:18px;padding:24px 22px;display:flex;flex-direction:column;gap:8px;text-decoration:none}
.casos a:hover{border-color:var(--ink)}
.casos b{font:600 clamp(30px,3.6vw,44px)/1 Sora,system-ui,sans-serif;letter-spacing:-.02em;font-variant-numeric:tabular-nums}
.casos span:last-child{color:var(--mut);font-size:15px;line-height:1.5}
@media (max-width:880px){.casos{grid-template-columns:1fr}}
.passos4.passos3{grid-template-columns:repeat(3,1fr)}
@media (max-width:880px){.passos4.passos3{grid-template-columns:1fr}}
.passos4 h4{font-size:19px}
.creditos{margin:0;padding-left:1.1em;display:grid;gap:12px;max-width:86ch;color:var(--mut);font-size:15px}
.creditos b{color:var(--ink);font-weight:600}
.creditos code,.achado code{overflow-wrap:anywhere}
.acoes-exp{margin-top:28px}
.heroi .acoes-exp{display:flex;justify-content:center}
.veredito{display:inline-block;padding:2px 10px;border-radius:999px;font-size:13px;border:1px solid var(--line);white-space:nowrap}
.veredito.sim{color:var(--brand);border-color:var(--brand)}
#jogo-funcoes td:last-child{min-width:22ch;color:var(--mut);font-size:15px}
/* Quatro colunas não cabem em 390 px: no celular cada linha vira um cartão, com o rótulo de cada célula. */
@media (max-width:700px){
  .empilha thead{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}
  .empilha,.empilha tbody,.empilha tr,.empilha th,.empilha td{display:block;width:100%}
  .empilha tr{border-bottom:1px solid var(--line);padding:14px 0}
  .empilha th,.empilha td{border:0;padding:4px 0}
  .empilha td::before{content:attr(data-rotulo);display:block;font:400 11px/1.4 "JetBrains Mono",ui-monospace,monospace;letter-spacing:.12em;text-transform:uppercase;color:var(--dim)}
  #jogo-funcoes td:last-child{min-width:0}
}
@media (max-width:700px){.tabela th code{overflow-wrap:anywhere}}
.filme{display:block;width:100%;height:auto;aspect-ratio:16/9;border:1px solid var(--line);border-radius:16px;background:var(--bg2)}
.numeros{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(5,1fr);gap:16px}
.numeros li{border:1px solid var(--line);border-radius:18px;padding:22px 20px;display:flex;flex-direction:column;gap:6px}
.numeros b{font:600 clamp(30px,3.6vw,44px)/1 Sora,system-ui,sans-serif;letter-spacing:-.02em;font-variant-numeric:tabular-nums}
.numeros span{color:var(--mut);font-size:15px}
@media (max-width:980px){.numeros{grid-template-columns:repeat(2,1fr)}}
.explorar{display:grid;grid-template-columns:minmax(0,1fr) 300px;grid-template-areas:"controle controle" "area painel";gap:20px}
.controle{grid-area:controle;display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.controle label{color:var(--mut);font-size:15px}
.explorar>*{min-width:0}
.controle select{width:min(420px,100%);max-width:100%;height:40px;border-radius:10px;border:1px solid var(--line);background:var(--bg2);color:var(--ink);font:inherit;padding:0 10px}
.area-tela{grid-area:area;min-width:0;padding:18px;border:1px solid var(--line);border-radius:18px;background:var(--bg2)}
.painel{grid-area:painel;border:1px solid var(--line);border-radius:18px;padding:20px;align-self:start;display:flex;flex-direction:column;gap:10px;min-width:0}
.painel p{margin:0;color:var(--mut);font-size:15px}
.painel dl{margin:0;display:grid;grid-template-columns:auto 1fr;gap:6px 12px;font-size:14px}
.painel dt{color:var(--dim)}
.painel dd{margin:0;overflow-wrap:anywhere;font-family:"JetBrains Mono",ui-monospace,monospace;font-size:13px}
.estado{display:inline-block;padding:2px 10px;border-radius:999px;font-size:13px;border:1px solid var(--line)}
.estado.sim{color:var(--brand);border-color:var(--brand)}
@media (max-width:880px){.explorar{grid-template-columns:1fr;grid-template-areas:"controle" "area" "painel"}}
.tabela{overflow-x:auto}
table{border-collapse:collapse;width:100%;font-size:16px}
th,td{text-align:left;padding:12px 14px;border-bottom:1px solid var(--line);vertical-align:top}
thead th{font:400 12px/1.4 "JetBrains Mono",ui-monospace,monospace;letter-spacing:.12em;text-transform:uppercase;color:var(--dim)}
tbody th{font-weight:500}
td{font-variant-numeric:tabular-nums}
.achado{margin-top:32px;border:1px solid var(--line);border-left:3px solid var(--brand);border-radius:12px;padding:22px 24px;max-width:72ch}
.achado h3,.achado h4{font-size:20px;margin-bottom:8px}
.achado p{margin:0;color:var(--mut)}
code{font-family:"JetBrains Mono",ui-monospace,monospace;font-size:.88em}
.passos4{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(4,1fr);gap:16px;counter-reset:p}
.passos4 li{border:1px solid var(--line);border-radius:18px;padding:24px 22px;display:flex;flex-direction:column;gap:8px;counter-increment:p}
.passos4 li::before{content:counter(p);font:500 13px/1 "JetBrains Mono",monospace;color:var(--dim)}
.passos4 h3{font-size:19px}
.passos4 p{margin:0;color:var(--mut);font-size:15px;line-height:1.55}
@media (max-width:980px){.passos4{grid-template-columns:1fr 1fr}}
@media (max-width:620px){.passos4{grid-template-columns:1fr}}
.limites{margin:0;padding-left:1.1em;display:grid;gap:14px;max-width:72ch;color:var(--mut)}
.limites b{color:var(--ink);font-weight:600}
.origem{max-width:80ch;color:var(--mut);font-size:15px;margin:0}
.origem a{color:var(--ink)}
.hash{overflow-wrap:anywhere}
.nota{margin:20px 0 0;color:var(--dim);font-size:14px}
/* Nome de handler é longo e sem espaço: sem quebra, ele empurra a coluna do veredito para fora da tela no celular. */
#botoes th code{overflow-wrap:anywhere}
