/* Finanças (app estático) — visual "7X": fundo quase-branco/preto puro, cartões
   arredondados, acento monocromático (preto no claro, branco no escuro),
   verde-menta só em chips/positivos, display font nos títulos e números.
   Claro/escuro automáticos. Design system portado de assets/app.css (app local);
   fontes carregadas via <link> no index.html. */

* { box-sizing: border-box; }

/* o atributo hidden SEMPRE vence (senão display:flex dos campos o anula) */
[hidden] { display: none !important; }

:root {
  color-scheme: light dark;

  --bg: #fafafa;
  --card: #ffffff;
  --hairline: #ececec;
  --linha-fina: #f1f1f1;
  --ink: #111111;
  --ink-forte: #050505;
  --cinza: #3f3f46;
  --mut: #71717a;
  --mut2: #a1a1aa;

  --accent: #111111;      /* cor de marca/dados: preto no claro, branco no escuro */
  --accent-inv: #ffffff;
  --tile: #f1f1f1;        /* quadradinho dos ícones e superfícies neutras */
  --track: #ececec;       /* trilho de barras */
  --area: rgba(17, 17, 17, 0.06);

  --pos: #059669;
  --neg: #dc2626;
  --mint-bg: #d3f8df;     /* chip verde-menta da referência */
  --mint-tx: #0c6b4a;
  --amber: #b45309;
  --amber-bg: #fff7e0;
  --verm: #dc2626;
  --verm-bg: #fdeeee;

  --campo-borda: #e2e2e2;
  --sombra: 0 1px 2px rgba(0, 0, 0, 0.03);
  --anel: rgba(17, 17, 17, 0.12);

  /* rampa monocromática dos gráficos categóricos (ordenados por valor) */
  --c0: #111111; --c1: #3f3f3f; --c2: #6e6e6e;
  --c3: #9a9a9a; --c4: #c2c2c2; --c-outros: #e2e2e2;

  --disp: "Space Grotesk", "Inter", sans-serif;
  --mono: "JetBrains Mono", ui-monospace, Consolas, monospace;
}

/* tema escuro: pelo sistema (sem escolha explícita) OU forçado via
   html[data-tema="escuro"] pelo botão de tema (js) */
@media (prefers-color-scheme: dark) {
  :root:not([data-tema="claro"]) {
    --bg: #050505;
    --card: #0d0d0d;
    --hairline: #1e1e1e;
    --linha-fina: #181818;
    --ink: #f5f5f5;
    --ink-forte: #ffffff;
    --cinza: #d4d4d8;
    --mut: #a1a1aa;
    --mut2: #74747d;

    --accent: #ffffff;
    --accent-inv: #0a0a0a;
    --tile: #1a1a1a;
    --track: #242424;
    --area: rgba(255, 255, 255, 0.08);

    --pos: #34d399;
    --neg: #f87171;
    --mint-bg: #d3f8df;   /* o chip menta continua claro no escuro (referência) */
    --mint-tx: #0c6b4a;
    --amber: #f5a623;
    --amber-bg: #2a2008;
    --verm: #f87171;
    --verm-bg: #2a1212;

    --campo-borda: #2a2a2a;
    --sombra: none;
    --anel: rgba(255, 255, 255, 0.18);

    --c0: #ffffff; --c1: #d0d0d0; --c2: #9d9d9d;
    --c3: #6d6d6d; --c4: #454545; --c-outros: #262626;
  }
}

/* mesmas variáveis, para quando a pessoa força o escuro num sistema claro
   (manter em sincronia com o bloco acima) */
:root[data-tema="escuro"] {
  --bg: #050505;
  --card: #0d0d0d;
  --hairline: #1e1e1e;
  --linha-fina: #181818;
  --ink: #f5f5f5;
  --ink-forte: #ffffff;
  --cinza: #d4d4d8;
  --mut: #a1a1aa;
  --mut2: #74747d;

  --accent: #ffffff;
  --accent-inv: #0a0a0a;
  --tile: #1a1a1a;
  --track: #242424;
  --area: rgba(255, 255, 255, 0.08);

  --pos: #34d399;
  --neg: #f87171;
  --mint-bg: #d3f8df;
  --mint-tx: #0c6b4a;
  --amber: #f5a623;
  --amber-bg: #2a2008;
  --verm: #f87171;
  --verm-bg: #2a1212;

  --campo-borda: #2a2a2a;
  --sombra: none;
  --anel: rgba(255, 255, 255, 0.18);

  --c0: #ffffff; --c1: #d0d0d0; --c2: #9d9d9d;
  --c3: #6d6d6d; --c4: #454545; --c-outros: #262626;
}

html, body {
  margin: 0;
  background: var(--bg);
  color: var(--ink);
  font: 400 15px/1.45 "Inter", "Segoe UI", system-ui, sans-serif;
}

a { color: var(--ink); }

/* ---------------- topo ---------------- */

.topo {
  position: sticky;
  top: 0;
  z-index: 100;
  background: color-mix(in srgb, var(--bg) 86%, transparent);
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
  border-bottom: 1px solid var(--hairline);
}

.topo-in {
  max-width: 1200px;
  margin: 0 auto;
  display: flex;
  align-items: center;
  gap: 14px;
  padding: 11px 24px;
}

.marca {
  font-family: var(--disp);
  font-weight: 700;
  font-size: 15.5px;
  letter-spacing: -0.01em;
  color: var(--ink-forte);
  display: flex;
  align-items: center;
  text-decoration: none;
}
/* logo Dino: o <use> herda var(--accent)/var(--accent-inv) do tema */
.logo-dino { flex: none; }
.marca .logo-dino {
  width: 21px;
  height: 21px;
  margin-right: 9px;
}

/* corpo com navegação lateral (estilo painel Stripe) */

.corpo-app {
  position: relative;
  z-index: 1;
  max-width: 1200px;
  margin: 0 auto;
  display: flex;
  align-items: flex-start;
  gap: 10px;
  padding: 0 20px;
}
.lateral {
  position: sticky;
  top: 66px;
  width: 216px;
  flex: none;
  padding: 20px 8px 20px 0;
}

/* cartão do perfil (dino da skin + identidade) no topo da lateral */
.lateral-perfil {
  display: flex;
  align-items: center;
  gap: 10px;
  width: 100%;
  background: none;
  border: 0;
  padding: 8px 9px;
  border-radius: 12px;
  cursor: pointer;
  font: inherit;
  text-align: left;
}
.lateral-perfil:hover { background: var(--tile); }
.lp-avatar svg, .lp-avatar .menu-foto {
  width: 38px;
  height: 38px;
  border-radius: 11px;
  display: block;
  flex: none;
  background-size: cover;
  background-position: center;
}
.lp-id { min-width: 0; flex: 1; }
.lp-id b {
  display: block;
  font-family: var(--disp);
  font-size: 13.5px;
  font-weight: 700;
  letter-spacing: -0.01em;
  color: var(--ink-forte);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.lp-email {
  display: block;
  font-size: 11px;
  color: var(--mut2);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.lp-chevron { width: 14px; height: 14px; flex: none; color: var(--mut2); }

.lateral-nav { display: flex; flex-direction: column; gap: 2px; margin-top: 14px; }

.navlink {
  display: flex;
  align-items: center;
  gap: 10px;
  font-size: 13.5px;
  font-weight: 550;
  color: var(--cinza);
  text-decoration: none;
  padding: 7px 10px;
  border-radius: 9px;
}
.navlink svg { width: 16px; height: 16px; flex: none; color: var(--mut2); }
.navlink:hover { color: var(--ink); background: var(--tile); }
.navlink:hover svg { color: var(--ink); }
.navlink.ativo {
  color: var(--accent);
  font-weight: 650;
  background: color-mix(in srgb, var(--accent) 9%, transparent);
}
.navlink.ativo svg { color: var(--accent); }

.segmentos {
  margin-left: auto;
  display: flex;
  background: var(--tile);
  border: 1px solid var(--hairline);
  border-radius: 999px;
  padding: 3px;
}
.seg {
  font: inherit;
  font-size: 12.5px;
  font-weight: 550;
  color: var(--mut);
  background: none;
  cursor: pointer;
  padding: 4px 13px;
  border-radius: 999px;
  border: 1px solid transparent;
}
.seg.on {
  background: var(--card);
  color: var(--ink);
  font-weight: 650;
  border-color: var(--hairline);
  box-shadow: 0 1px 2px rgba(0, 0, 0, 0.08);
}

/* avatar + menu do perfil */

.perfil-area { position: relative; }
.menu {
  position: absolute;
  right: 0;
  top: calc(100% + 8px);
  min-width: 268px;
  background: var(--card);
  border: 1px solid var(--hairline);
  border-radius: 14px;
  box-shadow: 0 12px 36px rgba(0, 0, 0, 0.2);
  padding: 8px;
  z-index: 200;
}

/* cabeçalho: dino da skin (ou foto) + identidade */
.menu-cab-perfil {
  display: flex;
  align-items: center;
  gap: 11px;
  padding: 7px 9px 10px;
}
.menu-avatar svg, .menu-avatar .menu-foto {
  width: 42px;
  height: 42px;
  border-radius: 12px;
  display: block;
  flex: none;
  background-size: cover;
  background-position: center;
}
.menu-id { min-width: 0; }
.menu-id b {
  display: block;
  font-family: var(--disp);
  font-size: 14px;
  font-weight: 700;
  letter-spacing: -0.01em;
  color: var(--ink-forte);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.menu-email {
  display: block;
  font-size: 11.5px;
  color: var(--mut2);
  margin-top: 1px;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

/* troca rápida de tema */
.menu-temas-rot {
  font-size: 9.5px;
  font-weight: 650;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  color: var(--mut2);
  padding: 0 9px 6px;
}
.menu-temas { display: flex; flex-wrap: wrap; gap: 9px; padding: 0 9px 6px; }
.menu-tema {
  width: 36px;
  height: 36px;
  padding: 0;
  border: 0;
  background: none;
  cursor: pointer;
}
.menu-tema svg {
  width: 100%;
  height: 100%;
  border-radius: 10px;
  display: block;
  transition: transform 0.12s;
}
.menu-tema:hover svg { transform: scale(1.1); }
.menu-tema.on svg { box-shadow: 0 0 0 2px var(--card), 0 0 0 4px var(--accent); }

/* itens com ícone em tile */
.menu-item {
  display: flex;
  align-items: center;
  gap: 10px;
  width: 100%;
  text-align: left;
  background: none;
  border: 0;
  font: inherit;
  font-size: 13px;
  font-weight: 550;
  color: var(--ink);
  padding: 6px 9px;
  border-radius: 10px;
  cursor: pointer;
}
.menu-item:hover { background: var(--tile); }
.mi-ico {
  width: 28px;
  height: 28px;
  flex: none;
  border-radius: 8px;
  background: var(--tile);
  color: var(--cinza);
  display: grid;
  place-items: center;
}
.mi-ico svg { width: 14.5px; height: 14.5px; }
.menu-item:hover .mi-ico { background: var(--card); }
.mi-sub { margin-left: auto; font-size: 10.5px; font-weight: 400; color: var(--mut2); }
#mi-sair:hover { color: var(--verm); background: var(--verm-bg); }
#mi-sair:hover .mi-ico { color: var(--verm); background: transparent; }
.menu hr { border: 0; border-top: 1px solid var(--linha-fina); margin: 6px 2px; }

.breve {
  font-size: 9.5px;
  font-weight: 650;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  background: var(--mint-bg);
  color: var(--mint-tx);
  border-radius: 999px;
  padding: 2px 8px;
  margin-left: 6px;
  vertical-align: 1px;
}

/* ---------------- estrutura ---------------- */

.conteudo {
  flex: 1;
  min-width: 0;
  padding: 24px 4px 70px 14px;
}

.secao {
  font-family: var(--disp);
  font-size: 22px;
  font-weight: 700;
  letter-spacing: -0.02em;
  color: var(--ink-forte);
  border-bottom: 1px solid var(--hairline);
  padding-bottom: 12px;
  margin: 30px 0 16px;
}
.secao:first-child { margin-top: 4px; }
.secao-sub {
  font-family: "Inter", sans-serif;
  font-size: 13px;
  font-weight: 400;
  letter-spacing: 0;
  color: var(--mut2);
  margin-left: 8px;
}

.grade2 {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 20px;
  margin-bottom: 20px;
}

.grade3 {
  display: grid;
  grid-template-columns: 1fr 1fr 1fr;
  gap: 20px;
  margin-bottom: 20px;
}

.cartao {
  background: var(--card);
  border: 1px solid var(--hairline);
  border-radius: 16px;
  padding: 18px 20px;
  box-shadow: var(--sombra);
}

.cartao-topo {
  display: flex;
  align-items: flex-start;
  gap: 12px;
  margin-bottom: 8px;
}
.cartao-topo > .rotulo { align-self: center; }
.cartao-topo .badge { margin-left: auto; align-self: center; }
.topo-tx { flex: 1; min-width: 0; }

.ico-tile {
  width: 40px;
  height: 40px;
  flex: none;
  border-radius: 11px;
  background: var(--tile);
  color: var(--ink);
  display: grid;
  place-items: center;
}
.ico-tile svg { width: 18px; height: 18px; }

.rotulo { font-size: 13px; font-weight: 600; color: var(--cinza); }
.info { font-style: normal; color: var(--mut2); font-size: 11px; cursor: help; }

/* valores em R$: verde/vermelho */
.val-pos { color: var(--pos); font-variant-numeric: tabular-nums; }
.val-neg { color: var(--neg); font-variant-numeric: tabular-nums; }
.val-mut { color: var(--mut); font-variant-numeric: tabular-nums; }
.val-neutro { color: var(--ink); font-variant-numeric: tabular-nums; }

/* número grande dos cartões em display font; o sinal fica no delta */
.grande {
  font-family: var(--disp);
  font-size: 25px;
  font-weight: 700;
  letter-spacing: -0.02em;
  margin: 4px 0 2px;
  color: var(--ink-forte);
}
.grande .delta { font-size: 12.5px; margin-left: 2px; vertical-align: 3px; }

.delta { font-size: 12.5px; font-weight: 650; font-family: "Inter", sans-serif; }
.delta.bom { color: var(--pos); }
.delta.ruim { color: var(--neg); }
.delta.neutro { color: var(--mut2); }

.anterior { font-size: 12px; color: var(--mut2); margin-top: 2px; }

/* ---------------- Hoje ---------------- */

.hoje-linha {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 28px;
  padding: 4px 0 6px;
}
.hoje-item { display: flex; flex-direction: column; gap: 3px; }
.hoje-item b {
  font-family: var(--disp);
  font-size: 21px;
  font-weight: 700;
  letter-spacing: -0.01em;
}
.mini-link { font-size: 12px; text-decoration: none; margin-top: 2px; color: var(--mut); }
.mini-link:hover { color: var(--ink); }

/* ---------------- filtros ---------------- */

.filtros {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 8px;
  margin: 14px 0 18px;
}
.filtros-rot { font-size: 12px; color: var(--mut2); margin-right: 2px; }
.pill-p {
  font: inherit;
  font-size: 12.5px;
  font-weight: 550;
  color: var(--cinza);
  cursor: pointer;
  border: 1px solid var(--campo-borda);
  border-radius: 999px;
  padding: 5px 13px;
  background: var(--card);
}
.pill-p:hover { border-color: var(--mut2); }
.pill-p.on {
  background: var(--accent);
  border-color: var(--accent);
  color: var(--accent-inv);
  font-weight: 650;
}
.sel-comp {
  margin-left: auto;
  font: inherit;
  font-size: 12px;
  color: var(--mut);
  background: var(--card);
  border: 1px solid var(--campo-borda);
  border-radius: 999px;
  padding: 5px 10px;
  cursor: pointer;
}
.sel-comp:focus { outline: none; border-color: var(--accent); box-shadow: 0 0 0 3px var(--anel); }

/* ---------------- gráfico SVG ---------------- */

.chart { position: relative; margin-top: 12px; }
.chart-svg { width: 100%; height: 190px; display: block; }

.gr { stroke: var(--linha-fina); stroke-width: 1; }
.ytick { font-size: 10.5px; fill: var(--mut2); font-family: "Inter", sans-serif; }

.ln-atual { fill: none; stroke: var(--accent); stroke-width: 2.2; stroke-linejoin: round; stroke-linecap: round; }
.ln-prev  { fill: none; stroke: var(--mut2); stroke-width: 1.4; stroke-dasharray: 2 5; stroke-linecap: round; opacity: 0.75; }
.area-atual { fill: var(--area); stroke: none; }
.pt { fill: var(--accent); stroke: var(--card); stroke-width: 1.5; }
.dot-fim { fill: var(--accent); stroke: var(--card); stroke-width: 2; }

.crosshair { stroke: var(--mut2); stroke-width: 1; }
.dot-hv.atual { fill: var(--accent); stroke: var(--card); stroke-width: 2; }
.dot-hv.prev  { fill: var(--mut2); stroke: var(--card); stroke-width: 2; }

.xlabels {
  display: flex;
  justify-content: space-between;
  font-size: 11px;
  color: var(--mut2);
  margin-top: 4px;
}

.tooltip {
  position: absolute;
  top: 8px;
  left: 0;
  pointer-events: none;
  background: var(--card);
  border: 1px solid var(--hairline);
  border-radius: 10px;
  box-shadow: 0 4px 16px rgba(0, 0, 0, 0.16);
  padding: 8px 10px;
  font-size: 12px;
  min-width: 160px;
  z-index: 5;
}
.tt-data { color: var(--mut2); font-size: 11px; margin-bottom: 5px; }
.tt-linha { display: flex; align-items: center; gap: 7px; padding: 1.5px 0; }
.tt-chave { width: 14px; border-top: 2.5px solid var(--accent); border-radius: 2px; }
.tt-chave.prev { border-top: 2px dashed var(--mut2); }
.tt-nome { color: var(--mut); }
.tt-val { margin-left: auto; font-weight: 650; font-variant-numeric: tabular-nums; color: var(--ink); }

/* -------- rampa/status: a classe define --cc; os marcadores consomem -------- */

.c0 { --cc: var(--c0); }
.c1 { --cc: var(--c1); }
.c2 { --cc: var(--c2); }
.c3 { --cc: var(--c3); }
.c4 { --cc: var(--c4); }
.c-outros { --cc: var(--c-outros); }
.st-paga { --cc: var(--accent); }
.st-avencer { --cc: var(--amber); }
.st-vencida { --cc: var(--verm); }

.seg-bar {
  display: flex;
  gap: 2px; /* respiro de 2px da superfície entre segmentos */
  height: 12px;
  border-radius: 999px;
  overflow: hidden;
  margin: 6px 0 4px;
  background: transparent;
}
.seg-parte { min-width: 3px; flex-basis: 0; background: var(--cc); }
.seg-bar.vazia { background: var(--track); }

.leg-linha {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 9px 0;
  border-bottom: 1px solid var(--linha-fina);
  font-size: 13px;
  color: var(--cinza);
}
.leg-linha:last-child { border-bottom: 0; }
.leg-dot {
  width: 9px;
  height: 9px;
  border-radius: 3px;
  flex: none;
  background: var(--cc);
  box-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.1);
}
@media (prefers-color-scheme: dark) {
  .leg-dot { box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.14); }
}
.leg-nome {
  min-width: 0;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.leg-pct { font-size: 11px; color: var(--mut2); }
.leg-val {
  margin-left: auto;
  font-weight: 600;
  font-size: 12.5px;
  color: var(--ink);
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}

/* rodapé dos cartões */
.cartao-rodape {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-top: 12px;
  padding-top: 10px;
  border-top: 1px solid var(--linha-fina);
  font-size: 11.5px;
  color: var(--mut2);
}
.cartao-rodape a { font-weight: 550; text-decoration: none; color: var(--mut); }
.cartao-rodape a:hover { color: var(--ink); text-decoration: underline; }

/* ---------------- contas a pagar (lista estilo invoices) ---------------- */

.inv-linha {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  padding: 8px 0;
  border-bottom: 1px solid var(--linha-fina);
}
.inv-linha:last-child { border-bottom: 0; }
.inv-info { min-width: 0; }
.inv-info b { font-size: 13px; font-weight: 650; }
.inv-sub {
  font-size: 11.5px;
  color: var(--mut2);
  margin-top: 1px;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

/* ---------------- donut de distribuição ---------------- */

.donut-flex { display: flex; align-items: center; gap: 22px; }
.donut { width: 200px; height: 200px; flex: none; }
.donut circle { stroke: var(--cc); transition: opacity 0.12s; }
.donut:hover circle:not(:hover) { opacity: 0.4; }
.donut-leg { flex: 1; min-width: 0; }
.donut-rot { fill: var(--mut2); font-size: 11px; font-family: "Inter", sans-serif; }
.donut-val {
  fill: var(--ink-forte);
  font-size: 20px;
  font-weight: 700;
  font-family: var(--disp);
  letter-spacing: -0.01em;
}

/* ---------------- aviso de plano ---------------- */

.aviso-plano {
  display: flex;
  gap: 12px;
  align-items: flex-start;
  border: 1px dashed var(--campo-borda);
  background: var(--card);
  border-radius: 16px;
  padding: 14px 18px;
  font-size: 13px;
  color: var(--cinza);
  line-height: 1.5;
  margin-top: 4px;
}
.aviso-ico { font-size: 17px; line-height: 1.2; }
.aviso-plano a { color: var(--mut); }

/* ---------------- resumo ---------------- */

.resumo-linha {
  display: flex;
  justify-content: space-between;
  padding: 10px 0;
  border-bottom: 1px solid var(--linha-fina);
  font-size: 13.5px;
  color: var(--cinza);
}
.resumo-linha b { font-weight: 650; }
.resumo-linha.total {
  border-bottom: 0;
  border-top: 1px solid var(--hairline);
  margin-top: 2px;
  color: var(--ink);
  font-weight: 650;
}
.resumo-nota { font-size: 12px; color: var(--mut2); margin-top: 12px; line-height: 1.55; }
.resumo-nota a { color: var(--mut); }
.mut { color: var(--mut2); }

/* ---------------- flash flutuante (toast) ---------------- */

.flash-flutuante {
  position: fixed;
  left: 50%;
  bottom: 22px;
  transform: translateX(-50%);
  display: flex;
  align-items: center;
  gap: 12px;
  max-width: min(92vw, 560px);
  background: var(--accent);
  color: var(--accent-inv);
  border-radius: 12px;
  padding: 11px 16px;
  font-size: 13px;
  box-shadow: 0 10px 32px rgba(0, 0, 0, 0.28);
  z-index: 300;
}
.flash-flutuante button {
  background: none;
  border: 0;
  color: inherit;
  font: inherit;
  font-weight: 650;
  cursor: pointer;
  padding: 0;
  text-decoration: underline dotted;
  white-space: nowrap;
}
.flash-flutuante.erro { background: var(--verm); color: #ffffff; }

/* ---------------- página lançamentos ---------------- */

.grade-lancar {
  display: grid;
  grid-template-columns: 390px 1fr;
  gap: 20px;
  align-items: start;
}

.coluna-listas { display: flex; flex-direction: column; gap: 20px; min-width: 0; }

.form { display: flex; flex-direction: column; gap: 12px; margin-top: 6px; }

/* controle segmentado (Tipo, Conta) */
.segmentado {
  display: flex;
  background: var(--tile);
  border: 1px solid var(--hairline);
  border-radius: 999px;
  padding: 3px;
}
.segmentado label { flex: 1; margin: 0; }
.segmentado input {
  position: absolute;
  opacity: 0;
  width: 0;
  height: 0;
  pointer-events: none;
}
.segmentado span {
  display: block;
  text-align: center;
  font-size: 13px;
  font-weight: 550;
  color: var(--mut);
  padding: 6px 4px;
  border-radius: 999px;
  cursor: pointer;
  user-select: none;
}
.segmentado input:checked + span {
  background: var(--card);
  color: var(--ink);
  font-weight: 650;
  box-shadow: 0 1px 2px rgba(0, 0, 0, 0.08);
}
.segmentado input:focus-visible + span { box-shadow: 0 0 0 3px var(--anel); }
.campo-linha { display: flex; gap: 12px; }
.campo { display: flex; flex-direction: column; gap: 5px; font-size: 12.5px; color: var(--cinza); flex: 1; }
.campo > span { font-weight: 550; }
.campo input, .campo select {
  border: 1px solid var(--campo-borda);
  border-radius: 10px;
  padding: 8px 10px;
  font: inherit;
  font-size: 13.5px;
  color: var(--ink);
  background: var(--card);
  width: 100%;
}
.campo input:focus, .campo select:focus {
  outline: none;
  border-color: var(--accent);
  box-shadow: 0 0 0 3px var(--anel);
}
.campo.caixa { flex-direction: row; align-items: center; gap: 8px; margin-top: 22px; }
.campo.caixa input { width: auto; accent-color: var(--accent); }
input[type="date"] { cursor: pointer; }

.btn {
  font: inherit;
  cursor: pointer;
  border-radius: 10px;
}
.btn.primario {
  background: var(--accent);
  color: var(--accent-inv);
  border: 0;
  padding: 10px 16px;
  font-weight: 650;
  font-size: 13.5px;
  margin-top: 6px;
}
.btn.primario:hover { opacity: 0.85; }
.btn.mini {
  background: var(--card);
  color: var(--ink);
  border: 1px solid var(--campo-borda);
  padding: 5px 12px;
  font-size: 12px;
  font-weight: 600;
  border-radius: 999px;
}
.btn.mini:hover { background: var(--tile); border-color: var(--mut2); }
.btn-x {
  border: 0;
  background: none;
  color: var(--mut2);
  font-size: 16px;
  cursor: pointer;
  padding: 2px 6px;
  line-height: 1;
}
.btn-x:hover { color: var(--neg); }
.link {
  background: none;
  border: 0;
  color: var(--mut);
  font-size: 12px;
  cursor: pointer;
  padding: 0;
  text-decoration: underline dotted;
}
.link:hover { color: var(--ink); }
.form-nota { font-size: 11.5px; color: var(--mut2); margin: 4px 0 0; line-height: 1.5; }
.form-preview {
  font-size: 12.5px;
  color: var(--mint-tx);
  background: var(--mint-bg);
  border-radius: 10px;
  padding: 8px 12px;
  margin: 0;
}

.badge {
  font-size: 11px;
  font-weight: 650;
  background: var(--tile);
  color: var(--cinza);
  border-radius: 999px;
  padding: 3px 10px;
}

/* linhas de lista */

.linha {
  display: grid;
  grid-template-columns: 40px minmax(0, 1fr) auto auto;
  gap: 12px;
  align-items: center;
  padding: 9px 0;
  border-bottom: 1px solid var(--linha-fina);
}
.linha:last-child { border-bottom: 0; }
.linha.compacta { grid-template-columns: 26px minmax(0, 1fr) auto auto; }

.dia {
  width: 40px;
  height: 40px;
  border-radius: 11px;
  background: var(--tile);
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
}
.dia .d { font-family: var(--disp); font-size: 14px; font-weight: 700; line-height: 1.05; color: var(--ink); }
.dia .m { font-size: 8.5px; font-weight: 600; text-transform: uppercase; letter-spacing: 0.08em; color: var(--mut2); }
.dia.crit { background: var(--verm-bg); }
.dia.crit .d { color: var(--verm); }

.linha-info { min-width: 0; }
.linha-t {
  font-size: 13.5px;
  font-weight: 600;
  color: var(--ink);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.linha-s { font-size: 11.5px; color: var(--mut2); margin-top: 1px; }
.mono { font-family: var(--mono); font-size: 10.5px; }

.etq {
  font-size: 9.5px;
  font-weight: 650;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: var(--cinza);
  background: var(--tile);
  border-radius: 5px;
  padding: 2px 6px;
  margin-left: 6px;
  vertical-align: 1.5px;
}
.etq.pj { background: var(--accent); color: var(--accent-inv); }

.linha-dir {
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  gap: 3px;
}
.linha-dir b { font-size: 13px; font-weight: 650; }

.chip {
  font-size: 10.5px;
  font-weight: 600;
  padding: 3px 9px;
  border-radius: 999px;
  border: 1px solid var(--hairline);
  background: var(--tile);
  color: var(--cinza);
  white-space: nowrap;
}
.chip.vencido { color: var(--verm); background: var(--verm-bg); border-color: transparent; }
.chip.hoje { color: var(--amber); background: var(--amber-bg); border-color: transparent; }
.chip.aberta { color: var(--cinza); background: var(--tile); border-color: var(--hairline); }
.chip.paga { color: var(--mint-tx); background: var(--mint-bg); border-color: transparent; }

.linha-acoes { display: flex; align-items: center; gap: 6px; }
.inline { display: inline; }

.ok-ico {
  width: 26px;
  height: 26px;
  border-radius: 50%;
  background: var(--mint-bg);
  color: var(--mint-tx);
  display: grid;
  place-items: center;
  font-size: 12px;
}

.vazio { color: var(--mut2); font-size: 13px; padding: 24px; text-align: center; }

/* ---------------- tela de login ---------------- */

#tela-login { position: relative; }

/* dobra inicial do site: hero + vale ocupam a primeira tela */
.landing-hero {
  position: relative;
  min-height: 100vh;
  display: flex;
  flex-direction: column;
  align-items: center;
  padding: 40px 20px 0;
  overflow: hidden;
}
.login-caixa {
  width: 100%;
  max-width: 400px;
  background: var(--card);
  border: 1px solid var(--hairline);
  border-radius: 16px;
  padding: 32px;
  box-shadow: var(--sombra);
}
.login-marca {
  font-family: var(--disp);
  font-weight: 700;
  font-size: 20px;
  letter-spacing: -0.01em;
  color: var(--ink-forte);
  display: flex;
  align-items: center;
}
.login-marca .logo-dino {
  width: 27px;
  height: 27px;
  margin-right: 10px;
}
.login-sub { color: var(--mut); font-size: 13.5px; margin: 8px 0 20px; line-height: 1.5; }

.btn-google {
  width: 100%;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  background: var(--card);
  border: 1px solid var(--campo-borda);
  border-radius: 10px;
  padding: 10px;
  font: inherit;
  font-size: 13.5px;
  font-weight: 600;
  color: var(--ink);
  cursor: pointer;
}
.btn-google:hover { background: var(--tile); }

.login-ou {
  display: flex;
  align-items: center;
  gap: 10px;
  color: var(--mut2);
  font-size: 11.5px;
  margin: 18px 0;
}
.login-ou::before, .login-ou::after {
  content: "";
  flex: 1;
  border-top: 1px solid var(--hairline);
}

.login-form { display: flex; flex-direction: column; gap: 10px; }
.login-form input {
  border: 1px solid var(--campo-borda);
  border-radius: 10px;
  padding: 9px 11px;
  font: inherit;
  font-size: 13.5px;
  color: var(--ink);
  background: var(--card);
  width: 100%;
}
.login-form input:focus {
  outline: none;
  border-color: var(--accent);
  box-shadow: 0 0 0 3px var(--anel);
}
.login-check {
  font-size: 12.5px;
  color: var(--cinza);
  display: flex;
  gap: 8px;
  align-items: center;
}
.login-check input { width: auto; accent-color: var(--accent); }
.login-nota { font-size: 11.5px; color: var(--mut2); margin: 16px 0 0; line-height: 1.55; }

/* ---------------- responsivo ---------------- */

@media (max-width: 920px) {
  .grade2, .grade3, .grade-lancar { grid-template-columns: 1fr; }
  .hoje-linha { grid-template-columns: 1fr; gap: 12px; }
  .sel-comp { margin-left: 0; }
  .topo-in { flex-wrap: wrap; gap: 10px; }
  .segmentos { margin-left: 0; }
  .donut-flex { flex-wrap: wrap; justify-content: center; }

  /* lateral vira faixa horizontal: dino do perfil + abas roláveis */
  .corpo-app { flex-direction: column; gap: 0; padding: 0 16px; }
  .lateral {
    position: static;
    width: 100%;
    padding: 10px 0 0;
    display: flex;
    align-items: center;
    gap: 8px;
  }
  .lateral-perfil { width: auto; flex: none; padding: 5px 7px; }
  .lp-id, .lp-chevron { display: none; }
  .lateral-nav {
    flex-direction: row;
    margin-top: 0;
    overflow-x: auto;
    flex: 1;
    scrollbar-width: none;
  }
  .lateral-nav::-webkit-scrollbar { display: none; }
  .navlink { white-space: nowrap; padding: 7px 9px; }
  .conteudo { padding: 16px 0 70px; }

  /* menu da engrenagem: no topo quebrado a âncora fica à esquerda,
     então o menu abre para a direita (e nunca para fora da tela) */
  .menu { right: auto; left: 0; max-width: calc(100vw - 32px); }
}


/* ============================================================
   Complementos do layout atual (Hoje, cartões, quebra, listas)
   ============================================================ */

.link-btn {
  background: none;
  border: 0;
  padding: 0;
  font: inherit;
  font-size: 12px;
  color: var(--mut);
  text-decoration: underline;
  text-underline-offset: 2px;
  cursor: pointer;
}
.link-btn:hover { color: var(--ink); }

.contador {
  font-size: 11px;
  font-weight: 650;
  color: var(--mut);
  background: var(--tile);
  border-radius: 999px;
  padding: 3px 10px;
  margin-left: 8px;
  vertical-align: 2px;
}

/* filtros com selects arredondados */
.controle {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  font-size: 12px;
  color: var(--mut2);
}
.controle select {
  font: inherit;
  font-size: 12.5px;
  font-weight: 550;
  color: var(--cinza);
  background: var(--card);
  border: 1px solid var(--campo-borda);
  border-radius: 999px;
  padding: 5px 11px;
  cursor: pointer;
}
.controle select:focus { outline: none; border-color: var(--accent); box-shadow: 0 0 0 3px var(--anel); }
.controle.caixa { gap: 6px; color: var(--cinza); cursor: pointer; }
.controle.caixa input { accent-color: var(--accent); }
.espaco { flex: 1; }
.filtros .add { text-decoration: none; }

/* navegação de mês (Despesas/Rendimentos) */
.mes-nav { display: flex; align-items: center; gap: 8px; }
.mes-nav .seta { padding: 2px 11px; font-size: 15px; line-height: 1.5; }
.mes-rotulo {
  font-size: 13.5px;
  font-weight: 650;
  color: var(--ink-forte);
  text-transform: capitalize;
  min-width: 128px;
  text-align: center;
}

/* seção Hoje */
.hoje-grade {
  display: grid;
  grid-template-columns: minmax(0, 2fr) minmax(240px, 1fr);
  gap: 20px;
  margin-bottom: 8px;
}
.hoje-esq {
  background: var(--card);
  border: 1px solid var(--hairline);
  border-radius: 16px;
  padding: 18px 20px;
  box-shadow: var(--sombra);
}
.hoje-cols { display: flex; gap: 44px; }
.hoje-col { display: flex; flex-direction: column; gap: 2px; }
.hoje-col b { font-family: var(--disp); font-size: 21px; font-weight: 700; letter-spacing: -0.01em; }
.hoje-hora { font-size: 11px; color: var(--mut2); }
.hoje-dir { display: flex; flex-direction: column; gap: 14px; }

.mini-cartao {
  background: var(--card);
  border: 1px solid var(--hairline);
  border-radius: 14px;
  padding: 14px 16px;
  box-shadow: var(--sombra);
  flex: 1;
}
.mini-cartao > b { display: block; font-family: var(--disp); font-size: 19px; font-weight: 700; margin-top: 4px; }
.topo-mini { display: flex; justify-content: space-between; align-items: center; }
.ver { font-size: 12px; color: var(--mut); text-decoration: none; font-weight: 550; }
.ver:hover { color: var(--ink); }
.mini-sub { font-size: 11.5px; color: var(--mut2); margin-top: 3px; }

.linha-grande { display: flex; align-items: baseline; gap: 8px; }

.cartao-pe {
  display: flex;
  justify-content: space-between;
  align-items: center;
  border-top: 1px solid var(--linha-fina);
  margin-top: 14px;
  padding-top: 10px;
  font-size: 11.5px;
  color: var(--mut2);
}
.cartao-pe a { color: var(--mut); text-decoration: none; font-weight: 550; }
.cartao-pe a:hover { color: var(--ink); }

/* barra segmentada por categoria + legenda */
.quebra-barra {
  display: flex;
  height: 10px;
  border-radius: 999px;
  overflow: hidden;
  gap: 2px;
  margin: 12px 0 8px;
  background: var(--track);
}
.quebra-seg { min-width: 3px; }
.quebra-linha {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 6px 0;
  font-size: 12.5px;
  border-bottom: 1px solid var(--linha-fina);
}
.quebra-linha:last-child { border-bottom: 0; }
.quebra-cor { width: 8px; height: 8px; border-radius: 3px; flex: none; }
.quebra-nome { color: var(--cinza); flex: 1; min-width: 0; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.quebra-val { font-variant-numeric: tabular-nums; color: var(--ink); font-weight: 600; font-size: 12.5px; }

/* página de lançamentos */
.grade-form { display: grid; grid-template-columns: minmax(300px, 5fr) minmax(0, 7fr); gap: 20px; align-items: start; }
.subgrupo { background: var(--tile); border-radius: 12px; padding: 12px 14px; display: flex; flex-direction: column; gap: 10px; }
.subgrupo .campo.caixa { margin-top: 0; }
.linha.simples { grid-template-columns: minmax(0, 1fr) auto; }

/* estados dos badges de status */
.badge.pago { background: var(--mint-bg); color: var(--mint-tx); }
.badge.vencido { background: var(--verm-bg); color: var(--verm); }

/* gráfico: svg fluido + pontos de hover (nomes do app.js atual) */
.chart svg { width: 100%; height: 178px; display: block; cursor: crosshair; }
.hoje-esq .chart svg { height: 150px; }
.dot-hv-a { fill: var(--accent); stroke: var(--card); stroke-width: 2; }
.dot-hv-p { fill: var(--mut2); stroke: var(--card); stroke-width: 2; }

.btn[disabled] { opacity: 0.5; cursor: not-allowed; }

/* ============================================================
   Login Google + avatar com foto
   ============================================================ */

.area-google { display: flex; flex-direction: column; gap: 10px; }
#slot-google { display: flex; justify-content: center; min-height: 44px; }
.area-google .link-btn { align-self: center; }
.form-gid { text-align: left; margin-top: 2px; }
.form-gid .login-nota { margin-top: 4px; }

/* ============================================================
   Modal (importação de extrato e sincronização)
   ============================================================ */

.modal-fundo {
  position: fixed;
  inset: 0;
  background: rgba(0, 0, 0, 0.45);
  display: grid;
  place-items: center;
  padding: 20px;
  z-index: 500;
}
.modal-caixa {
  background: var(--card);
  border: 1px solid var(--hairline);
  border-radius: 16px;
  box-shadow: 0 20px 60px rgba(0, 0, 0, 0.3);
  width: 100%;
  max-width: 520px;
  max-height: min(86vh, 900px);
  display: flex;
  flex-direction: column;
  padding: 18px 20px;
}
.modal-caixa.modal-larga { max-width: 880px; }
.modal-cab { display: flex; align-items: center; justify-content: space-between; }
.modal-cab h2 { font-family: var(--disp); font-size: 18px; font-weight: 700; margin: 0; color: var(--ink-forte); }
.modal-sub { font-size: 12.5px; color: var(--mut2); margin: 6px 0 12px; }
.modal-pe {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 14px;
  margin-top: 14px;
  border-top: 1px solid var(--linha-fina);
  padding-top: 12px;
}
.modal-nota { font-size: 11.5px; color: var(--mut2); line-height: 1.5; }

/* prévia do extrato */
.ext-controles { display: flex; align-items: center; gap: 16px; flex-wrap: wrap; margin-bottom: 10px; }
.ext-resumo { font-size: 12px; color: var(--mut); font-variant-numeric: tabular-nums; }
.ext-rolagem {
  overflow: auto;
  border: 1px solid var(--hairline);
  border-radius: 12px;
  flex: 1;
  min-height: 0;
}
.ext-tabela { width: 100%; border-collapse: collapse; font-size: 12.5px; }
.ext-tabela th {
  position: sticky;
  top: 0;
  z-index: 1;
  background: var(--card);
  text-align: left;
  font-size: 10.5px;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: var(--mut2);
  padding: 8px 10px;
  border-bottom: 1px solid var(--hairline);
}
.ext-tabela td { padding: 6px 10px; border-bottom: 1px solid var(--linha-fina); }
.ext-tabela tr:last-child td { border-bottom: 0; }
.ext-tabela tr.dup td { opacity: 0.55; }
.ext-tabela .num, .ext-tabela th.num { text-align: right; font-variant-numeric: tabular-nums; white-space: nowrap; }
.ext-data { white-space: nowrap; color: var(--mut); font-variant-numeric: tabular-nums; }
.ext-desc { max-width: 280px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ext-tabela select {
  font: inherit;
  font-size: 12px;
  color: var(--cinza);
  background: var(--card);
  border: 1px solid var(--campo-borda);
  border-radius: 8px;
  padding: 3px 6px;
  max-width: 160px;
}
.ext-tabela input[type="checkbox"] { accent-color: var(--accent); }

/* sincronização com os CSVs */
.sync-corpo { display: flex; flex-direction: column; gap: 12px; margin-top: 12px; }
.sync-cols { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.sync-acao {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 14px;
  border: 1px solid var(--hairline);
  border-radius: 12px;
  padding: 12px 14px;
  font-size: 13px;
}
.sync-acao .btn { flex: none; }

@media (max-width: 920px) {
  .hoje-grade, .grade-form, .sync-cols { grid-template-columns: 1fr; }
  .hoje-cols { gap: 28px; }
  .modal-caixa.modal-larga { max-width: 100%; }
  .ext-desc { max-width: 160px; }
}


/* ============================================================
   Botão de tema (claro/escuro)
   ============================================================ */

.btn-tema, .btn-icone {
  width: 30px;
  height: 30px;
  border-radius: 50%;
  border: 1px solid var(--campo-borda);
  background: var(--card);
  color: var(--cinza);
  display: grid;
  place-items: center;
  cursor: pointer;
  padding: 0;
}
.btn-tema:hover, .btn-icone:hover { background: var(--tile); }
.btn-tema svg, .btn-icone svg { width: 15px; height: 15px; }
.tema-flutuante {
  position: fixed;
  right: 18px;
  top: 18px;
  z-index: 300;
}

/* ============================================================
   Donut (pagas × abertas, investimentos) + legenda
   ============================================================ */

.donut-flex {
  display: flex;
  align-items: center;
  gap: 22px;
  margin-top: 12px;
  flex-wrap: wrap;
}
.donut-svg { width: 190px; height: 190px; flex: none; }
.donut-c1 {
  font-family: var(--disp);
  font-size: 23px;   /* padrão; o app.js define inline o tamanho que cabe no miolo */
  font-weight: 700;
  fill: var(--ink-forte);
}
.donut-c2 { font-size: 11.5px; fill: var(--mut2); }
.donut-legenda { flex: 1; min-width: 190px; }
.dl-linha {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 5px 0;
  font-size: 12.5px;
  border-bottom: 1px solid var(--linha-fina);
}
.dl-linha:last-child { border-bottom: 0; }
.dl-cor { width: 9px; height: 9px; border-radius: 3px; flex: none; }
.dl-nome {
  color: var(--cinza);
  flex: 1;
  min-width: 0;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.dl-val { font-variant-numeric: tabular-nums; color: var(--ink); font-weight: 600; font-size: 12.5px; }

.grade-pagina { display: grid; grid-template-columns: minmax(320px, 5fr) minmax(0, 7fr); gap: 20px; align-items: start; }

/* ============================================================
   Página Investimentos
   ============================================================ */

.inv-linha {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 8px 0;
  font-size: 13px;
  border-bottom: 1px solid var(--linha-fina);
}
.inv-linha:last-child { border-bottom: 0; }
.inv-nome { flex: 1; color: var(--cinza); font-weight: 600; }
.inv-meta { font-size: 11.5px; color: var(--mut2); }
.inv-val { font-variant-numeric: tabular-nums; font-weight: 650; }

/* ============================================================
   Modal de perfil / zona de perigo
   ============================================================ */

.zona-perigo {
  border: 1px solid color-mix(in srgb, var(--verm) 45%, transparent);
  border-radius: 12px;
  padding: 12px 14px;
  display: flex;
  flex-direction: column;
  gap: 10px;
  margin-top: 14px;
}
.zona-perigo .acao {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 14px;
  font-size: 12.5px;
  color: var(--cinza);
}
.btn.perigo {
  background: var(--verm-bg);
  color: var(--verm);
  border: 1px solid transparent;
}
.btn.perigo:hover { border-color: var(--verm); }

/* ============================================================
   Importação: coluna "Repete" e selos de aprendizado
   ============================================================ */

.rep-celula { display: flex; align-items: center; gap: 5px; }
.rep-celula select { max-width: 108px; }
.rep-celula input[type="number"] { width: 52px; }
.rep-celula input[type="month"] { width: 128px; }
.rep-celula input {
  font: inherit;
  font-size: 12px;
  color: var(--cinza);
  background: var(--card);
  border: 1px solid var(--campo-borda);
  border-radius: 8px;
  padding: 3px 6px;
}
.etq.ok { background: var(--mint-bg); color: var(--mint-tx); }
.etq.padrao { background: var(--amber-bg); color: var(--amber); }
.etq.vencida { background: var(--verm-bg); color: var(--verm); }

@media (max-width: 920px) {
  .grade-pagina { grid-template-columns: 1fr; }
  .donut-flex { justify-content: center; }
}

/* modal de importação mais largo (coluna Repete) */
.modal-caixa.modal-larga { max-width: 1000px; }

/* ============================================================
   Skins temáticas de dinossauro (perfil escolhe; padrão = mono)
   Regra: toda var definida no bloco claro TEM par no bloco escuro
   (a versão escura vence por especificidade, não por ordem).
   ============================================================ */

/* cada skin traz o AMBIENTE do dinossauro: todas as superfícies (fundo,
   cartões, linhas, tiles, bordas) tingidas com o clima do habitat —
   carnotauro = deserto vulcânico quente · oxalaia = rio/mangue ·
   braquiossauro = floresta de araucárias */

:root[data-skin="carnotauro"] {
  --accent: #b42318;
  --accent-inv: #ffffff;
  --anel: rgba(180, 35, 24, 0.18);
  --area: rgba(180, 35, 24, 0.07);
  --bg: #faf4f0;
  --card: #fffdfb;
  --hairline: #f0e2db;
  --linha-fina: #f5eae4;
  --tile: #f6ece6;
  --track: #efe0d8;
  --campo-borda: #e7d4cb;
}
:root[data-skin="oxalaia"] {
  --accent: #0e7490;
  --accent-inv: #ffffff;
  --anel: rgba(14, 116, 144, 0.20);
  --area: rgba(14, 116, 144, 0.07);
  --bg: #f2f8fa;
  --card: #fbfeff;
  --hairline: #e0edf1;
  --linha-fina: #ebf3f6;
  --tile: #e9f3f5;
  --track: #deecf0;
  --campo-borda: #d1e5ea;
}
:root[data-skin="braquiossauro"] {
  --accent: #15803d;
  --accent-inv: #ffffff;
  --anel: rgba(21, 128, 61, 0.20);
  --area: rgba(21, 128, 61, 0.07);
  --bg: #f4f9f2;
  --card: #fcfffa;
  --hairline: #e2efde;
  --linha-fina: #ecf4e7;
  --tile: #eaf3e5;
  --track: #e0eeda;
  --campo-borda: #d3e6cc;
}
/* espinossauro = rio largo e lamacento · triceratops = savana dourada ·
   parassaurolofo = cânion ao pôr do sol · anquilossauro = campo de pedra ·
   estegossauro = samambaias ao sol · velociraptor = Gobi ao anoitecer ·
   paquicefalossauro = floresta em flor · dilofossauro = crepúsculo violeta ·
   pterossauro = céu aberto */
:root[data-skin="espinossauro"] {
  --accent: #0f766e;
  --accent-inv: #ffffff;
  --anel: rgba(15, 118, 110, 0.20);
  --area: rgba(15, 118, 110, 0.07);
  --bg: #f1f9f7;
  --card: #fafffd;
  --hairline: #ddefeb;
  --linha-fina: #e8f4f1;
  --tile: #e6f2ef;
  --track: #dbece7;
  --campo-borda: #cde4de;
}
:root[data-skin="triceratops"] {
  --accent: #b45309;
  --accent-inv: #ffffff;
  --anel: rgba(180, 83, 9, 0.20);
  --area: rgba(180, 83, 9, 0.07);
  --bg: #faf6f0;
  --card: #fffdf9;
  --hairline: #f0e5d6;
  --linha-fina: #f5ecdf;
  --tile: #f6eee2;
  --track: #efe3d0;
  --campo-borda: #e7d7bd;
}
:root[data-skin="parassaurolofo"] {
  --accent: #c2410c;
  --accent-inv: #ffffff;
  --anel: rgba(194, 65, 12, 0.20);
  --area: rgba(194, 65, 12, 0.07);
  --bg: #faf5f0;
  --card: #fffdfa;
  --hairline: #f2e4d9;
  --linha-fina: #f6ebe2;
  --tile: #f6ece3;
  --track: #f0e0d3;
  --campo-borda: #e8d2c0;
}
:root[data-skin="anquilossauro"] {
  --accent: #57534e;
  --accent-inv: #ffffff;
  --anel: rgba(87, 83, 78, 0.20);
  --area: rgba(87, 83, 78, 0.07);
  --bg: #f7f6f4;
  --card: #fdfcfb;
  --hairline: #e9e6e2;
  --linha-fina: #efedea;
  --tile: #efece8;
  --track: #e6e2dd;
  --campo-borda: #d9d4cd;
}
:root[data-skin="estegossauro"] {
  --accent: #4d7c0f;
  --accent-inv: #ffffff;
  --anel: rgba(77, 124, 15, 0.20);
  --area: rgba(77, 124, 15, 0.07);
  --bg: #f6f9f0;
  --card: #fdfff8;
  --hairline: #e7efd8;
  --linha-fina: #eff5e3;
  --tile: #eef4e2;
  --track: #e4edd2;
  --campo-borda: #d7e5bd;
}
:root[data-skin="velociraptor"] {
  --accent: #475569;
  --accent-inv: #ffffff;
  --anel: rgba(71, 85, 105, 0.20);
  --area: rgba(71, 85, 105, 0.07);
  --bg: #f4f6f9;
  --card: #fbfcfe;
  --hairline: #e2e7ee;
  --linha-fina: #ebeff4;
  --tile: #eaeef3;
  --track: #dfe5ec;
  --campo-borda: #d0d9e3;
}
:root[data-skin="paquicefalossauro"] {
  --accent: #be185d;
  --accent-inv: #ffffff;
  --anel: rgba(190, 24, 93, 0.20);
  --area: rgba(190, 24, 93, 0.07);
  --bg: #faf0f5;
  --card: #fffbfd;
  --hairline: #f2dbe7;
  --linha-fina: #f6e5ee;
  --tile: #f6e4ed;
  --track: #f0d7e4;
  --campo-borda: #e8c6d8;
}
:root[data-skin="dilofossauro"] {
  --accent: #7c3aed;
  --accent-inv: #ffffff;
  --anel: rgba(124, 58, 237, 0.20);
  --area: rgba(124, 58, 237, 0.07);
  --bg: #f6f4fb;
  --card: #fdfcff;
  --hairline: #e8e2f4;
  --linha-fina: #efeaf8;
  --tile: #eee9f7;
  --track: #e4dcf1;
  --campo-borda: #d7cce9;
}
:root[data-skin="pterossauro"] {
  --accent: #0284c7;
  --accent-inv: #ffffff;
  --anel: rgba(2, 132, 199, 0.20);
  --area: rgba(2, 132, 199, 0.07);
  --bg: #f0f7fb;
  --card: #fafdff;
  --hairline: #dcecf4;
  --linha-fina: #e7f1f7;
  --tile: #e5f0f6;
  --track: #daeaf2;
  --campo-borda: #cbe1ec;
}
@media (prefers-color-scheme: dark) {
  :root[data-skin="carnotauro"]:not([data-tema="claro"]) {
    --accent: #f97066;
    --accent-inv: #1f0805;
    --anel: rgba(249, 112, 102, 0.28);
    --area: rgba(249, 112, 102, 0.10);
    --bg: #0b0504;
    --card: #150b08;
    --hairline: #2b1812;
    --linha-fina: #23130e;
    --tile: #211410;
    --track: #2e1c15;
    --campo-borda: #3a241c;
  }
  :root[data-skin="oxalaia"]:not([data-tema="claro"]) {
    --accent: #22d3ee;
    --accent-inv: #062a33;
    --anel: rgba(34, 211, 238, 0.28);
    --area: rgba(34, 211, 238, 0.10);
    --bg: #030a0d;
    --card: #071418;
    --hairline: #10272e;
    --linha-fina: #0c1f25;
    --tile: #0d2026;
    --track: #122b33;
    --campo-borda: #173741;
  }
  :root[data-skin="braquiossauro"]:not([data-tema="claro"]) {
    --accent: #4ade80;
    --accent-inv: #052613;
    --anel: rgba(74, 222, 128, 0.28);
    --area: rgba(74, 222, 128, 0.10);
    --bg: #040902;
    --card: #0a1307;
    --hairline: #182613;
    --linha-fina: #121e0d;
    --tile: #14200f;
    --track: #1a2c13;
    --campo-borda: #223818;
  }
  :root[data-skin="espinossauro"]:not([data-tema="claro"]) {
    --accent: #2dd4bf;
    --accent-inv: #042f2a;
    --anel: rgba(45, 212, 191, 0.28);
    --area: rgba(45, 212, 191, 0.10);
    --bg: #030b0a;
    --card: #071512;
    --hairline: #102924;
    --linha-fina: #0c211d;
    --tile: #0d231f;
    --track: #122e29;
    --campo-borda: #173b34;
  }
  :root[data-skin="triceratops"]:not([data-tema="claro"]) {
    --accent: #fbbf24;
    --accent-inv: #2a1703;
    --anel: rgba(251, 191, 36, 0.28);
    --area: rgba(251, 191, 36, 0.10);
    --bg: #0b0703;
    --card: #151006;
    --hairline: #2b2110;
    --linha-fina: #231a0c;
    --tile: #211a0d;
    --track: #2e2412;
    --campo-borda: #3a2e17;
  }
  :root[data-skin="parassaurolofo"]:not([data-tema="claro"]) {
    --accent: #fb923c;
    --accent-inv: #2b1204;
    --anel: rgba(251, 146, 60, 0.28);
    --area: rgba(251, 146, 60, 0.10);
    --bg: #0b0603;
    --card: #150c06;
    --hairline: #2b1a10;
    --linha-fina: #23150c;
    --tile: #21140c;
    --track: #2e1d12;
    --campo-borda: #3a2617;
  }
  :root[data-skin="anquilossauro"]:not([data-tema="claro"]) {
    --accent: #a8a29e;
    --accent-inv: #171512;
    --anel: rgba(168, 162, 158, 0.28);
    --area: rgba(168, 162, 158, 0.10);
    --bg: #080706;
    --card: #12100e;
    --hairline: #262320;
    --linha-fina: #1e1c19;
    --tile: #1e1b18;
    --track: #2a2724;
    --campo-borda: #363229;
  }
  :root[data-skin="estegossauro"]:not([data-tema="claro"]) {
    --accent: #a3e635;
    --accent-inv: #1a2604;
    --anel: rgba(163, 230, 53, 0.28);
    --area: rgba(163, 230, 53, 0.10);
    --bg: #070902;
    --card: #101505;
    --hairline: #232b10;
    --linha-fina: #1b230c;
    --tile: #1b210d;
    --track: #262e12;
    --campo-borda: #303a17;
  }
  :root[data-skin="velociraptor"]:not([data-tema="claro"]) {
    --accent: #94a3b8;
    --accent-inv: #0f141b;
    --anel: rgba(148, 163, 184, 0.28);
    --area: rgba(148, 163, 184, 0.10);
    --bg: #060809;
    --card: #0e1215;
    --hairline: #1f262c;
    --linha-fina: #181e23;
    --tile: #181d22;
    --track: #22292f;
    --campo-borda: #2c353d;
  }
  :root[data-skin="paquicefalossauro"]:not([data-tema="claro"]) {
    --accent: #f472b6;
    --accent-inv: #310318;
    --anel: rgba(244, 114, 182, 0.28);
    --area: rgba(244, 114, 182, 0.10);
    --bg: #0b0307;
    --card: #150710;
    --hairline: #2b1020;
    --linha-fina: #230c19;
    --tile: #210d18;
    --track: #2e1222;
    --campo-borda: #3a172c;
  }
  :root[data-skin="dilofossauro"]:not([data-tema="claro"]) {
    --accent: #a78bfa;
    --accent-inv: #1e1046;
    --anel: rgba(167, 139, 250, 0.28);
    --area: rgba(167, 139, 250, 0.10);
    --bg: #070511;
    --card: #0f0a1d;
    --hairline: #211835;
    --linha-fina: #19122a;
    --tile: #1a1229;
    --track: #251c3a;
    --campo-borda: #302547;
  }
  :root[data-skin="pterossauro"]:not([data-tema="claro"]) {
    --accent: #38bdf8;
    --accent-inv: #082635;
    --anel: rgba(56, 189, 248, 0.28);
    --area: rgba(56, 189, 248, 0.10);
    --bg: #030a0e;
    --card: #071319;
    --hairline: #10262f;
    --linha-fina: #0c1e26;
    --tile: #0d1f27;
    --track: #122a34;
    --campo-borda: #173642;
  }
}
:root[data-skin="carnotauro"][data-tema="escuro"] {
  --accent: #f97066;
  --accent-inv: #1f0805;
  --anel: rgba(249, 112, 102, 0.28);
  --area: rgba(249, 112, 102, 0.10);
  --bg: #0b0504;
  --card: #150b08;
  --hairline: #2b1812;
  --linha-fina: #23130e;
  --tile: #211410;
  --track: #2e1c15;
  --campo-borda: #3a241c;
}
:root[data-skin="oxalaia"][data-tema="escuro"] {
  --accent: #22d3ee;
  --accent-inv: #062a33;
  --anel: rgba(34, 211, 238, 0.28);
  --area: rgba(34, 211, 238, 0.10);
  --bg: #030a0d;
  --card: #071418;
  --hairline: #10272e;
  --linha-fina: #0c1f25;
  --tile: #0d2026;
  --track: #122b33;
  --campo-borda: #173741;
}
:root[data-skin="braquiossauro"][data-tema="escuro"] {
  --accent: #4ade80;
  --accent-inv: #052613;
  --anel: rgba(74, 222, 128, 0.28);
  --area: rgba(74, 222, 128, 0.10);
  --bg: #040902;
  --card: #0a1307;
  --hairline: #182613;
  --linha-fina: #121e0d;
  --tile: #14200f;
  --track: #1a2c13;
  --campo-borda: #223818;
}
:root[data-skin="espinossauro"][data-tema="escuro"] {
  --accent: #2dd4bf;
  --accent-inv: #042f2a;
  --anel: rgba(45, 212, 191, 0.28);
  --area: rgba(45, 212, 191, 0.10);
  --bg: #030b0a;
  --card: #071512;
  --hairline: #102924;
  --linha-fina: #0c211d;
  --tile: #0d231f;
  --track: #122e29;
  --campo-borda: #173b34;
}
:root[data-skin="triceratops"][data-tema="escuro"] {
  --accent: #fbbf24;
  --accent-inv: #2a1703;
  --anel: rgba(251, 191, 36, 0.28);
  --area: rgba(251, 191, 36, 0.10);
  --bg: #0b0703;
  --card: #151006;
  --hairline: #2b2110;
  --linha-fina: #231a0c;
  --tile: #211a0d;
  --track: #2e2412;
  --campo-borda: #3a2e17;
}
:root[data-skin="parassaurolofo"][data-tema="escuro"] {
  --accent: #fb923c;
  --accent-inv: #2b1204;
  --anel: rgba(251, 146, 60, 0.28);
  --area: rgba(251, 146, 60, 0.10);
  --bg: #0b0603;
  --card: #150c06;
  --hairline: #2b1a10;
  --linha-fina: #23150c;
  --tile: #21140c;
  --track: #2e1d12;
  --campo-borda: #3a2617;
}
:root[data-skin="anquilossauro"][data-tema="escuro"] {
  --accent: #a8a29e;
  --accent-inv: #171512;
  --anel: rgba(168, 162, 158, 0.28);
  --area: rgba(168, 162, 158, 0.10);
  --bg: #080706;
  --card: #12100e;
  --hairline: #262320;
  --linha-fina: #1e1c19;
  --tile: #1e1b18;
  --track: #2a2724;
  --campo-borda: #363229;
}
:root[data-skin="estegossauro"][data-tema="escuro"] {
  --accent: #a3e635;
  --accent-inv: #1a2604;
  --anel: rgba(163, 230, 53, 0.28);
  --area: rgba(163, 230, 53, 0.10);
  --bg: #070902;
  --card: #101505;
  --hairline: #232b10;
  --linha-fina: #1b230c;
  --tile: #1b210d;
  --track: #262e12;
  --campo-borda: #303a17;
}
:root[data-skin="velociraptor"][data-tema="escuro"] {
  --accent: #94a3b8;
  --accent-inv: #0f141b;
  --anel: rgba(148, 163, 184, 0.28);
  --area: rgba(148, 163, 184, 0.10);
  --bg: #060809;
  --card: #0e1215;
  --hairline: #1f262c;
  --linha-fina: #181e23;
  --tile: #181d22;
  --track: #22292f;
  --campo-borda: #2c353d;
}
:root[data-skin="paquicefalossauro"][data-tema="escuro"] {
  --accent: #f472b6;
  --accent-inv: #310318;
  --anel: rgba(244, 114, 182, 0.28);
  --area: rgba(244, 114, 182, 0.10);
  --bg: #0b0307;
  --card: #150710;
  --hairline: #2b1020;
  --linha-fina: #230c19;
  --tile: #210d18;
  --track: #2e1222;
  --campo-borda: #3a172c;
}
:root[data-skin="dilofossauro"][data-tema="escuro"] {
  --accent: #a78bfa;
  --accent-inv: #1e1046;
  --anel: rgba(167, 139, 250, 0.28);
  --area: rgba(167, 139, 250, 0.10);
  --bg: #070511;
  --card: #0f0a1d;
  --hairline: #211835;
  --linha-fina: #19122a;
  --tile: #1a1229;
  --track: #251c3a;
  --campo-borda: #302547;
}
:root[data-skin="pterossauro"][data-tema="escuro"] {
  --accent: #38bdf8;
  --accent-inv: #082635;
  --anel: rgba(56, 189, 248, 0.28);
  --area: rgba(56, 189, 248, 0.10);
  --bg: #030a0e;
  --card: #071319;
  --hairline: #10262f;
  --linha-fina: #0c1e26;
  --tile: #0d1f27;
  --track: #122a34;
  --campo-borda: #173642;
}

/* ---------- cenário do habitat no rodapé do app (atrás do conteúdo) ---------- */

.ambiente {
  position: fixed;
  left: 0;
  right: 0;
  bottom: 0;
  z-index: 0;
  pointer-events: none;
}
.ambiente .amb {
  display: none;
  width: 100%;
  height: clamp(130px, 22vh, 240px);
}
html:not([data-skin]) .amb-trex { display: block; }   /* tema mono = T. rex */
html[data-skin="carnotauro"] .amb-carno { display: block; }
html[data-skin="oxalaia"] .amb-oxalaia { display: block; }
html[data-skin="braquiossauro"] .amb-braquio { display: block; }
html[data-skin="espinossauro"] .amb-geral,
html[data-skin="triceratops"] .amb-geral,
html[data-skin="parassaurolofo"] .amb-geral,
html[data-skin="anquilossauro"] .amb-geral,
html[data-skin="estegossauro"] .amb-geral,
html[data-skin="velociraptor"] .amb-geral,
html[data-skin="paquicefalossauro"] .amb-geral,
html[data-skin="dilofossauro"] .amb-geral,
html[data-skin="pterossauro"] .amb-geral { display: block; }
.conteudo { position: relative; z-index: 1; }

/* ---------- o dino do tema atravessando o habitat (velocidade = personalidade;
   oxalaia segue nadando com a vela no rio) ---------- */
.amb-anda, .amb-voa {
  position: absolute;
  left: 0;
  display: none;
  will-change: transform;
  --dino-corpo: color-mix(in srgb, var(--accent) 42%, transparent);
  --dino-olho: var(--bg);
}
.amb-anda { bottom: 8px; }
.amb-voa { bottom: clamp(150px, 26vh, 260px); }
.amb-anda svg, .amb-voa svg { display: block; width: 100%; }
.amb-anda svg {
  transform-origin: 50% 92%;
  animation: dino-passo 0.9s ease-in-out infinite alternate;
}
.amb-voa svg {
  transform-origin: 50% 50%;
  animation: voa-plana 3.4s ease-in-out infinite alternate;
}
html:not([data-skin]) .amb-anda-trex { display: block; }
html[data-skin="carnotauro"] .amb-anda-carno { display: block; }
html[data-skin="braquiossauro"] .amb-anda-braquio { display: block; }
html[data-skin="espinossauro"] .amb-anda-espino { display: block; }
html[data-skin="triceratops"] .amb-anda-tricera { display: block; }
html[data-skin="parassaurolofo"] .amb-anda-parassauro { display: block; }
html[data-skin="anquilossauro"] .amb-anda-anquilo { display: block; }
html[data-skin="estegossauro"] .amb-anda-estego { display: block; }
html[data-skin="velociraptor"] .amb-anda-raptor { display: block; }
html[data-skin="paquicefalossauro"] .amb-anda-paqui { display: block; }
html[data-skin="dilofossauro"] .amb-anda-dilofo { display: block; }
html[data-skin="pterossauro"] .amb-voa-ptero { display: block; }
.amb-anda-trex { width: 120px; animation: anda-lr 46s linear infinite; animation-delay: -12s; }
.amb-anda-carno { width: 104px; animation: anda-lr 24s linear infinite; animation-delay: -9s; }
.amb-anda-braquio { width: 170px; animation: anda-lr 115s linear infinite; animation-delay: -40s; }
.amb-anda-espino { width: 150px; animation: anda-lr 72s linear infinite; animation-delay: -20s; }
.amb-anda-tricera { width: 124px; animation: anda-rl 64s linear infinite; animation-delay: -28s; }
.amb-anda-parassauro { width: 116px; animation: anda-lr 54s linear infinite; animation-delay: -18s; }
.amb-anda-anquilo { width: 116px; animation: anda-lr 135s linear infinite; animation-delay: -60s; }
.amb-anda-estego { width: 128px; animation: anda-rl 108s linear infinite; animation-delay: -35s; }
.amb-anda-raptor { width: 64px; animation: anda-lr 15s linear infinite; animation-delay: -5s; }
.amb-anda-paqui { width: 98px; animation: anda-rl 56s linear infinite; animation-delay: -22s; }
.amb-anda-dilofo { width: 104px; animation: anda-lr 42s linear infinite; animation-delay: -15s; }
.amb-voa-ptero { width: 108px; animation: anda-rl 58s linear infinite; animation-delay: -21s; }

.amb-1 { fill: color-mix(in srgb, var(--accent) 7%, transparent); }
.amb-2 { fill: color-mix(in srgb, var(--accent) 11%, transparent); }
.amb-3 { fill: color-mix(in srgb, var(--accent) 16%, transparent); }
.amb-fumaca { fill: color-mix(in srgb, var(--ink) 11%, transparent); }
.amb-fumaca ellipse { animation: fumaca-sobe 7.5s ease-out infinite; }
.amb-fumaca ellipse:nth-child(2) { animation-delay: 2.5s; }
.amb-fumaca ellipse:nth-child(3) { animation-delay: 5s; }
@keyframes fumaca-sobe {
  0% { opacity: 0; transform: translateY(16px); }
  30% { opacity: 1; }
  100% { opacity: 0; transform: translateY(-34px); }
}
.amb-nado {
  --dino-corpo: color-mix(in srgb, var(--accent) 42%, transparent);
  --dino-olho: var(--bg);
  animation: nado-vai 85s linear infinite;
  animation-delay: -30s;
}
/* use de <g> ignora width/height: a escala fica num <g transform="scale()">
   intermediário; o balanço anima o use (em unidades pré-escala) */
.amb-nado use { animation: nado-bob 3.2s ease-in-out infinite alternate; }
@keyframes nado-vai {
  from { transform: translate(-180px, 70px); }
  to   { transform: translate(1780px, 70px); }
}
@keyframes nado-bob { to { transform: translateY(-16px); } }
.amb-onda { animation: onda-bob 7s ease-in-out infinite alternate; }
@keyframes onda-bob { to { transform: translateY(5px); } }

@media (prefers-reduced-motion: reduce) {
  .amb-fumaca ellipse, .amb-nado, .amb-nado use, .amb-onda { animation: none !important; }
  .amb-nado { display: none; }
}

/* ============================================================
   Página inicial: hero estilo Stripe + vale jurássico animado
   ============================================================ */

.hero {
  position: relative;
  z-index: 2;
  width: 100%;
  max-width: 760px;
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
  gap: 14px;
  padding-bottom: clamp(210px, 30vh, 320px);
}
.hero-marca { margin-bottom: 8px; }
.hero-titulo {
  font-family: var(--disp);
  font-size: clamp(30px, 6.4vw, 52px);
  font-weight: 700;
  letter-spacing: -0.03em;
  line-height: 1.08;
  color: var(--ink-forte);
  margin: 0;
}
.hero-e { color: var(--mut2); }
.hero-palavra {
  background: linear-gradient(92deg, #d9482e, #0e7490 55%, #15803d);
  -webkit-background-clip: text;
  background-clip: text;
  color: transparent;
  white-space: nowrap;
}
.hero-palavra:empty::before { content: " "; white-space: pre; }
.hero-palavra::after {
  content: "";
  display: inline-block;
  width: 3px;
  height: 0.85em;
  margin-left: 3px;
  vertical-align: -0.08em;
  background: var(--mut2);
  animation: cursor-pisca 1.1s steps(1) infinite;
}
@keyframes cursor-pisca { 50% { opacity: 0; } }
.hero-sub {
  color: var(--mut);
  font-size: 14.5px;
  line-height: 1.55;
  max-width: 470px;
  margin: 0 0 10px;
}
.hero .login-caixa { text-align: left; margin-top: 6px; }
.voltar-perfis { align-self: flex-start; margin-bottom: 12px; }

/* vale/canyon com camadas em tons do tema */
.vale {
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0;
  z-index: 1;
  pointer-events: none;
}
.vale-svg {
  display: block;
  width: 100%;
  height: clamp(220px, 34vh, 340px);
}
.vale-sol { fill: var(--accent); opacity: 0.9; }
.nuvem { fill: color-mix(in srgb, var(--ink) 10%, transparent); }
.nuvem-1 { animation: nuvem-vai 64s ease-in-out infinite alternate; }
.nuvem-2 { animation: nuvem-vai 88s ease-in-out infinite alternate-reverse; }
@keyframes nuvem-vai { to { transform: translateX(130px); } }
.vale-longe { fill: color-mix(in srgb, var(--ink) 9%, transparent); }
.vale-medio { fill: color-mix(in srgb, var(--ink) 16%, transparent); }
.vale-perto { fill: color-mix(in srgb, var(--ink) 26%, transparent); }
.vale-ptero {
  fill: color-mix(in srgb, var(--ink) 58%, transparent);
  animation: ptero-voa 44s linear infinite;
}
@keyframes ptero-voa {
  from { transform: translate(1700px, 52px); }
  to   { transform: translate(-260px, 148px); }
}

/* dinossauros passeando no fundo do vale */
.vale-dinos {
  position: absolute;
  inset: 0;
  overflow: hidden;
  --dino-corpo: color-mix(in srgb, var(--ink) 80%, var(--bg));
  --dino-olho: var(--bg);
}
.dino-anda { position: absolute; left: 0; will-change: transform; }
.dino-anda svg {
  display: block;
  width: 100%;
  transform-origin: 50% 92%;
  animation: dino-passo 0.9s ease-in-out infinite alternate;
}
.espelhado svg { scale: -1 1; }
/* delays calculados p/ o primeiro quadro já mostrar a turma espalhada */
.anda-braquio { width: 150px; bottom: 4px; animation: anda-lr 92s linear infinite; animation-delay: -20s; }
.anda-carno { width: 94px; bottom: 0; animation: anda-lr 55s linear infinite; animation-delay: -16s; }
.anda-trex { width: 108px; bottom: 2px; animation: anda-lr 64s linear infinite; animation-delay: -7s; }
.anda-oxalaia { width: 120px; bottom: 2px; animation: anda-rl 70s linear infinite; animation-delay: -12s; }
.anda-espino { width: 138px; bottom: 2px; animation: anda-lr 84s linear infinite; animation-delay: -38s; }
.anda-tricera { width: 112px; bottom: 0; animation: anda-rl 76s linear infinite; animation-delay: -46s; }
.anda-parassauro { width: 108px; bottom: 2px; animation: anda-lr 58s linear infinite; animation-delay: -41s; }
.anda-anquilo { width: 104px; bottom: 0; animation: anda-lr 118s linear infinite; animation-delay: -94s; }
.anda-estego { width: 118px; bottom: 2px; animation: anda-rl 96s linear infinite; animation-delay: -34s; }
.anda-raptor { width: 60px; bottom: 0; animation: anda-lr 30s linear infinite; animation-delay: -27s; }
.anda-paqui { width: 90px; bottom: 2px; animation: anda-rl 62s linear infinite; animation-delay: -46s; }
.anda-dilofo { width: 96px; bottom: 2px; animation: anda-lr 66s linear infinite; animation-delay: -33s; }
/* pterossauro plana no céu do vale (balanço próprio + travessia) */
.dino-voa { position: absolute; left: 0; bottom: min(44vh, 380px); will-change: transform; }
.dino-voa svg {
  display: block;
  width: 100%;
  transform-origin: 50% 50%;
  animation: voa-plana 3.4s ease-in-out infinite alternate;
}
.voa-ptero { width: 88px; animation: anda-rl 74s linear infinite; animation-delay: -30s; }
@keyframes voa-plana {
  from { transform: translateY(0) rotate(-2.5deg); }
  to   { transform: translateY(-14px) rotate(2.5deg); }
}
@keyframes anda-lr {
  from { transform: translateX(-200px); }
  to   { transform: translateX(calc(100vw + 200px)); }
}
@keyframes anda-rl {
  from { transform: translateX(calc(100vw + 200px)); }
  to   { transform: translateX(-200px); }
}
@keyframes dino-passo {
  from { transform: translateY(0) rotate(-1.4deg); }
  to   { transform: translateY(-5px) rotate(1.4deg); }
}

/* ============================================================
   "Quem vai entrar?" — seleção de perfis tipo Netflix
   ============================================================ */

.area-perfis {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 20px;
  margin-top: 14px;
}
.perfis-titulo {
  font-family: var(--disp);
  font-size: 19px;
  font-weight: 700;
  letter-spacing: -0.01em;
  color: var(--ink-forte);
  margin: 0;
}
.perfis-grade {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 18px;
  max-width: 560px;
}
.perfil-tile {
  background: none;
  border: 0;
  padding: 0;
  font: inherit;
  cursor: pointer;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 9px;
  width: 104px;
}
.perfil-dino, .perfil-foto, .perfil-mais {
  width: 86px;
  height: 86px;
  border-radius: 21px;
  display: block;
  transition: transform 0.15s, box-shadow 0.15s;
}
.perfil-tile:hover .perfil-dino,
.perfil-tile:hover .perfil-foto,
.perfil-tile:hover .perfil-mais,
.perfil-tile:focus-visible .perfil-dino,
.perfil-tile:focus-visible .perfil-foto,
.perfil-tile:focus-visible .perfil-mais {
  transform: scale(1.07);
  box-shadow: 0 0 0 3px var(--anel);
}
.perfil-foto { background-size: cover; background-position: center; }
.perfil-mais {
  display: grid;
  place-items: center;
  font-size: 34px;
  font-weight: 400;
  color: var(--mut);
  background: var(--tile);
  border: 1px dashed var(--campo-borda);
}
.perfil-nome {
  font-size: 12.5px;
  font-weight: 600;
  color: var(--cinza);
  display: flex;
  align-items: center;
  gap: 5px;
  max-width: 100%;
}
.perfil-nome span {
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.perfil-cad { width: 11px; height: 11px; flex: none; color: var(--mut2); }

/* seletor de tema (miniaturas de dino nos formulários) */
.campo-tema { display: flex; flex-direction: column; gap: 7px; }
.campo-tema-rotulo, .campo-tema > .rotulo { font-size: 12.5px; font-weight: 550; color: var(--cinza); }
/* grade uniforme: coluna fixa p/ os 13 dinos, rótulo centrado com hífen
   quando o nome não cabe (Paquicefalossauro…) — nada de fileira torta */
.skin-grade {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(76px, 1fr));
  gap: 12px 6px;
}
.skin-op {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 5px;
  cursor: pointer;
  font-size: 10.5px;
  font-weight: 550;
  color: var(--mut);
  position: relative;
}
.skin-op span {
  max-width: 100%;
  text-align: center;
  line-height: 1.2;
  overflow-wrap: break-word;
  -webkit-hyphens: auto;
  hyphens: auto;
}
.skin-op input {
  position: absolute;
  opacity: 0;
  width: 0;
  height: 0;
  pointer-events: none;
}
.skin-mini { width: 46px; height: 46px; border-radius: 13px; display: block; }
.skin-op input:checked ~ .skin-mini {
  box-shadow: 0 0 0 2px var(--card), 0 0 0 4.5px var(--accent);
}
.skin-op input:checked ~ span { color: var(--ink); font-weight: 650; }
.skin-op input:focus-visible ~ .skin-mini { box-shadow: 0 0 0 2px var(--card), 0 0 0 4.5px var(--anel); }

/* ============================================================
   Easter egg: a dança do carnotauro (3 cliques no dino do topo)
   ============================================================ */

.carno-danca { position: relative; }
.carno-danca .logo-dino {
  animation: carno-danca 0.52s ease-in-out 9;
  transform-origin: 50% 88%;
}
@keyframes carno-danca {
  0%, 100% { transform: rotate(0deg) translateY(0) scale(1, 1); }
  20% { transform: rotate(-13deg) translateY(-3px) scale(0.92, 1.08); }
  40% { transform: rotate(3deg) translateY(1px) scale(1.1, 0.9); }
  60% { transform: rotate(13deg) translateY(-4px) scale(0.92, 1.08); }
  80% { transform: rotate(-3deg) translateY(1px) scale(1.1, 0.9); }
}
.carno-danca::before, .carno-danca::after {
  position: absolute;
  font-size: 13px;
  color: var(--accent);
  opacity: 0;
  pointer-events: none;
  z-index: 5;
}
.carno-danca::before {
  content: "♪";
  left: -13px;
  top: -7px;
  animation: nota-sobe 1.15s ease-out 4;
}
.carno-danca::after {
  content: "♫";
  left: 24px;
  top: -12px;
  animation: nota-sobe 1.15s ease-out 4 0.55s;
}
@keyframes nota-sobe {
  0% { opacity: 0; transform: translateY(5px) rotate(-8deg); }
  25% { opacity: 1; }
  100% { opacity: 0; transform: translateY(-20px) rotate(10deg); }
}

/* ============================================================
   Site público (landing): destaques, recursos, dinos, CTA, rodapé
   ============================================================ */

.ld-rolar { margin-top: 20px; font-size: 12.5px; }

.landing-corpo { position: relative; }
.ld-sec { max-width: 1080px; margin: 0 auto; padding: 62px 24px 6px; }
.ld-olho {
  display: block;
  font-size: 11.5px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  color: var(--mut);
  margin-bottom: 8px;
}
.ld-titulo {
  font-family: var(--disp);
  font-size: clamp(24px, 4vw, 34px);
  font-weight: 700;
  letter-spacing: -0.02em;
  line-height: 1.12;
  color: var(--ink-forte);
  margin: 0 0 10px;
}
.ld-sub { font-size: 14.5px; color: var(--mut); line-height: 1.6; max-width: 640px; margin: 0 0 26px; }

.ld-destaques {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 18px;
  padding-top: 56px;
}
.ld-stat {
  background: var(--card);
  border: 1px solid var(--hairline);
  border-radius: 14px;
  padding: 16px 18px;
  box-shadow: var(--sombra);
}
.ld-stat b {
  display: block;
  font-family: var(--disp);
  font-size: 24px;
  font-weight: 700;
  letter-spacing: -0.02em;
  color: var(--ink-forte);
}
.ld-stat span { display: block; font-size: 12px; color: var(--mut2); line-height: 1.45; margin-top: 3px; }

.recursos-grade { display: grid; grid-template-columns: repeat(3, 1fr); gap: 18px; }
.rec-cartao h3 {
  font-family: var(--disp);
  font-size: 15px;
  font-weight: 700;
  letter-spacing: -0.01em;
  color: var(--ink-forte);
  margin: 12px 0 6px;
}
.rec-cartao p { font-size: 12.5px; color: var(--mut); line-height: 1.55; margin: 0; }

.ld-cta {
  text-align: center;
  display: flex;
  flex-direction: column;
  align-items: center;
  background: linear-gradient(135deg, color-mix(in srgb, var(--accent) 9%, var(--card)), var(--card) 65%);
  border: 1px solid var(--hairline);
  border-radius: 20px;
  padding: 46px 28px;
  box-shadow: var(--sombra);
}
.ld-cta .ld-sub { margin-bottom: 22px; }
.ld-cta-btn { font-size: 15px; padding: 12px 28px; }

.ld-rodape {
  max-width: 1080px;
  margin: 44px auto 0;
  padding: 22px 24px 32px;
  border-top: 1px solid var(--hairline);
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  flex-wrap: wrap;
  font-size: 12px;
  color: var(--mut2);
}
.ld-rodape-marca {
  display: flex;
  align-items: center;
  font-family: var(--disp);
  font-weight: 700;
  font-size: 14px;
  color: var(--ink-forte);
}
.ld-rodape-marca .logo-dino { width: 19px; height: 19px; margin-right: 8px; }

@media (max-width: 920px) {
  .ld-destaques { grid-template-columns: 1fr 1fr; }
  .recursos-grade { grid-template-columns: 1fr; }
  .ld-sec { padding: 44px 18px 4px; }
}

/* ============================================================
   Página Início: boas-vindas + galeria dos dinossauros
   ============================================================ */

.inicio-hero {
  display: flex;
  align-items: center;
  gap: 22px;
  flex-wrap: wrap;
  background: linear-gradient(135deg, color-mix(in srgb, var(--accent) 9%, var(--card)), var(--card) 62%);
  border: 1px solid var(--hairline);
  border-radius: 18px;
  padding: 24px 26px;
  margin-bottom: 10px;
  box-shadow: var(--sombra);
}
.inicio-dino { width: 104px; height: 104px; border-radius: 24px; flex: none; }
.inicio-tx { flex: 1; min-width: 240px; }
.inicio-tx h1 {
  font-family: var(--disp);
  font-size: 26px;
  font-weight: 700;
  letter-spacing: -0.02em;
  color: var(--ink-forte);
  margin: 0 0 4px;
}
.inicio-data { font-size: 13px; color: var(--mut); margin: 0 0 14px; line-height: 1.6; }
.inicio-acoes { display: flex; gap: 8px; flex-wrap: wrap; align-items: center; }
.inicio-acoes .btn.primario { margin-top: 0; }
a.btn { text-decoration: none; display: inline-flex; align-items: center; }

.dino-grade {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 20px;
}
.dino-cartao { display: flex; flex-direction: column; gap: 10px; }
.dino-cartao.ativo { border-color: var(--dc); box-shadow: 0 0 0 1px var(--dc); }
.dino-cartao-topo { display: flex; gap: 14px; align-items: center; }
.dino-arte { width: 64px; height: 64px; border-radius: 16px; flex: none; }
.dino-cartao-id { min-width: 0; }
.dino-cartao-id b {
  display: block;
  font-family: var(--disp);
  font-size: 16px;
  font-weight: 700;
  letter-spacing: -0.01em;
  color: var(--ink-forte);
}
.dino-cartao-id i { display: block; font-size: 12px; color: var(--mut); margin-top: 1px; }
.chip-periodo {
  display: inline-block;
  margin-top: 6px;
  font-size: 10px;
  font-weight: 650;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  background: color-mix(in srgb, var(--dc) 12%, transparent);
  color: var(--dc);
  border-radius: 999px;
  padding: 3px 9px;
}
.dino-desc { font-size: 13px; color: var(--cinza); line-height: 1.55; margin: 0; flex: 1; }
.dino-meta { display: flex; gap: 16px; flex-wrap: wrap; font-size: 11.5px; color: var(--mut2); }
.dino-acao { display: flex; }

/* ---------- linha do tempo geológica (landing) ---------- */
/* barra horizontal proporcional das eras + um ponto por dino */
.tl-barra {
  position: relative;
  height: 62px;
  margin-top: 4px;
}
.tl-faixas {
  position: absolute;
  inset: 0;
  border-radius: 12px;
  overflow: hidden;
  border: 1px solid var(--hairline);
}
.tl-faixa {
  position: absolute;
  top: 0;
  bottom: 0;
  display: flex;
  flex-direction: column;
  justify-content: center;
  padding-left: 12px;
  white-space: nowrap;
  overflow: hidden;
}
.tl-faixa + .tl-faixa { border-left: 1px solid var(--hairline); }
.tl-faixa.f0 { background: color-mix(in srgb, var(--accent) 4%, transparent); }
.tl-faixa.f1 { background: color-mix(in srgb, var(--accent) 8%, transparent); }
.tl-faixa.f2 { background: color-mix(in srgb, var(--accent) 12%, transparent); }
.tl-faixa b { font-family: var(--disp); font-size: 13px; font-weight: 700; color: var(--ink); }
.tl-faixa small { font-size: 10px; color: var(--mut2); }
.tl-track {
  position: absolute;
  left: 0;
  right: 0;
  bottom: 13px;
  height: 2px;
  background: var(--accent);
  opacity: 0.35;
}
.tl-pontos { position: absolute; left: 0; right: 0; bottom: 14px; height: 0; }
.tl-ponto {
  position: absolute;
  bottom: -6px;
  width: 12px;
  height: 12px;
  margin-left: -6px;
  border-radius: 50%;
  background: var(--dc);
  border: 2px solid var(--card);
  box-shadow: 0 0 0 1px var(--dc);
}
.tl-meteoro { position: absolute; right: -7px; bottom: 8px; font-size: 15px; line-height: 1; }
.tl-barra-leg {
  display: flex;
  justify-content: space-between;
  font-size: 10.5px;
  color: var(--mut2);
  margin-top: 6px;
}

/* lista cronológica vertical (spine + nós) */
.tl-lista { position: relative; margin-top: 24px; padding-left: 24px; }
.tl-lista::before {
  content: "";
  position: absolute;
  left: 7px;
  top: 8px;
  bottom: 26px;
  width: 2px;
  background: var(--hairline);
}
.tl-era { margin: 18px 0 6px; }
.tl-era:first-child { margin-top: 0; }
.tl-era b { font-family: var(--disp); font-size: 15px; font-weight: 700; color: var(--ink-forte); }
.tl-era span { font-size: 11.5px; color: var(--mut2); margin-left: 8px; }
.tl-nota { font-size: 12px; font-style: italic; color: var(--mut2); margin: 0 0 6px; }
.tl-item {
  position: relative;
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 8px 0;
  border-bottom: 1px solid var(--linha-fina);
}
.tl-item:last-child { border-bottom: 0; }
.tl-no {
  position: absolute;
  left: -21px;
  top: 50%;
  width: 10px;
  height: 10px;
  margin-top: -5px;
  border-radius: 50%;
  background: var(--dc, var(--accent));
  border: 2px solid var(--card);
  box-shadow: 0 0 0 1px var(--dc, var(--accent));
}
.tl-icone { width: 42px; height: 42px; border-radius: 12px; flex: none; }
.tl-txt { min-width: 0; flex: 1; }
.tl-txt b { font-family: var(--disp); font-size: 14px; font-weight: 700; color: var(--ink-forte); }
.tl-txt i { font-size: 12px; color: var(--mut); margin-left: 4px; }
.tl-sub { display: block; font-size: 11.5px; color: var(--mut2); margin-top: 1px; }
.tl-idade {
  font-family: var(--mono);
  font-size: 11.5px;
  font-weight: 600;
  color: var(--cinza);
  white-space: nowrap;
  flex: none;
}
.tl-extincao { border-bottom: 0; border-top: 1px dashed var(--campo-borda); margin-top: 8px; padding-top: 14px; }
.tl-extincao .tl-no {
  left: -25px;
  width: auto;
  height: auto;
  margin-top: -10px;
  background: none;
  border: 0;
  box-shadow: none;
  font-size: 15px;
}

@media (max-width: 920px) {
  .dino-grade { grid-template-columns: 1fr; }
  .inicio-hero { padding: 20px; }
  .tl-faixa small { display: none; }
  .tl-idade { display: none; }
}

/* acessibilidade: sem animações para quem prefere menos movimento */
@media (prefers-reduced-motion: reduce) {
  .dino-anda, .dino-anda svg, .dino-voa, .dino-voa svg, .vale-ptero, .nuvem,
  .amb-anda, .amb-anda svg, .amb-voa, .amb-voa svg,
  .carno-danca .logo-dino, .carno-danca::before, .carno-danca::after,
  .hero-palavra::after {
    animation: none !important;
  }
  .dino-anda, .dino-voa { display: none; }
  .amb-anda, .amb-voa { display: none !important; }
}
