/* Reset enxuto, tipografia e o esqueleto de layout. */

*, *::before, *::after { box-sizing: border-box; }

* { margin: 0; }

html, body { height: 100%; }

body {
  font-family: var(--fonte);
  font-size: var(--t-base);
  line-height: 1.5;
  color: var(--txt);
  background: var(--fundo);
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
  overflow: hidden; /* a rolagem vive dentro do <main> */
}

img, svg, video { display: block; max-width: 100%; }
button, input, select, textarea { font: inherit; color: inherit; }
button { cursor: pointer; background: none; border: none; padding: 0; }
a { color: var(--acento); text-decoration: none; }
a:hover { text-decoration: underline; }

:focus-visible { outline: none; box-shadow: var(--foco); border-radius: var(--r-sm); }

/* Números em tabelas e cartões precisam alinhar coluna a coluna. */
.num, td.num, .n { font-variant-numeric: tabular-nums; font-feature-settings: "tnum"; }

h1, h2, h3, h4 { line-height: 1.2; font-weight: 700; letter-spacing: -.015em; }
h1 { font-size: var(--t-xl); }
h2 { font-size: var(--t-lg); }
h3 { font-size: var(--t-md); }

/* Rótulo de seção: pequeno, maiúsculo, espaçado. Aparece em todo o sistema. */
.rotulo {
  font-size: var(--t-xs);
  font-weight: 700;
  letter-spacing: .1em;
  text-transform: uppercase;
  color: var(--txt-3);
}

.txt-2 { color: var(--txt-2); }
.txt-3 { color: var(--txt-3); }
.sm { font-size: var(--t-sm); }
.xs { font-size: var(--t-xs); }
.forte { font-weight: 700; }
.centro { text-align: center; }
.direita { text-align: right; }
.nowrap { white-space: nowrap; }
.truncar { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ok { color: var(--ok); }
.erro { color: var(--erro); }
.aviso { color: var(--aviso); }
.acento { color: var(--acento); }

.linha-flex { display: flex; align-items: center; gap: var(--e-2); }
.entre { display: flex; align-items: center; justify-content: space-between; gap: var(--e-3); }
.empilha { display: flex; flex-direction: column; gap: var(--e-3); }
.cresce { flex: 1; min-width: 0; }
.oculto { display: none !important; }

.vazio {
  padding: var(--e-8) var(--e-4);
  text-align: center;
  color: var(--txt-3);
  font-size: var(--t-sm);
}

/* ─────────────────────────── esqueleto ─────────────────────────── */

#app {
  display: grid;
  grid-template-columns: var(--lateral) 1fr;
  grid-template-rows: var(--topo) 1fr;
  grid-template-areas: "marca topo" "nav conteudo";
  height: 100vh;
}

/* As quatro regras a seguir são de posicionamento na grade do #app e ficam
   escopadas de propósito. Sem o `#app >`, um `<main>` fora do shell — como o
   da tela de entrada — herdaria `grid-area: conteudo`, tentaria se posicionar
   numa área inexistente e criaria trilhas implícitas na grade errada. */
#app > .marca {
  grid-area: marca;
  display: flex; align-items: center; gap: var(--e-3);
  padding: 0 var(--e-4);
  background: var(--superficie);
  border-right: 1px solid var(--linha);
  border-bottom: 1px solid var(--linha);
}

.marca__logo {
  width: 30px; height: 30px; flex: none;
  border-radius: 8px;
  background: var(--brilho);
  display: grid; place-items: center;
  font-weight: 900; font-size: 15px; color: #fff;
  box-shadow: 0 2px 12px #FF5C3855;
}

.marca__nome { font-weight: 800; letter-spacing: -.02em; font-size: 15px; }
.marca__sub { font-size: 10px; letter-spacing: .12em; text-transform: uppercase; color: var(--txt-3); margin-top: -2px; }

#app > .topo {
  grid-area: topo;
  display: flex; align-items: center; gap: var(--e-3);
  padding: 0 var(--e-5);
  background: var(--superficie);
  border-bottom: 1px solid var(--linha);
}

#app > nav.lateral {
  grid-area: nav;
  background: var(--superficie);
  border-right: 1px solid var(--linha);
  padding: var(--e-3) var(--e-3) var(--e-6);
  overflow-y: auto;
  display: flex; flex-direction: column; gap: 2px;
}

#app > main {
  grid-area: conteudo;
  overflow-y: auto;
  overflow-x: hidden;
  scroll-behavior: smooth;
}

.pagina {
  max-width: var(--max);
  margin: 0 auto;
  padding: var(--e-6) var(--e-6) var(--e-16);
}

/* O funil precisa da largura toda e rola na horizontal por conta própria. */
.pagina--largo { max-width: none; padding: var(--e-5); }

.pagina__cabeca { margin-bottom: var(--e-5); display: flex; align-items: flex-end; justify-content: space-between; gap: var(--e-4); flex-wrap: wrap; }
.pagina__titulo { font-size: var(--t-2xl); font-weight: 800; letter-spacing: -.03em; }
.pagina__desc { color: var(--txt-2); font-size: var(--t-sm); margin-top: 2px; max-width: 68ch; }

/* ─────────────────────────── barra lateral ─────────────────────────── */

.nav-grupo { margin-top: var(--e-4); padding: 0 var(--e-3) var(--e-2); }

.nav-item {
  display: flex; align-items: center; gap: var(--e-3);
  padding: 8px var(--e-3);
  border-radius: var(--r-sm);
  color: var(--txt-2);
  font-size: var(--t-sm);
  font-weight: 550;
  transition: background var(--rapido), color var(--rapido);
  text-decoration: none;
  position: relative;
}
.nav-item:hover { background: var(--superficie-2); color: var(--txt); text-decoration: none; }
.nav-item.is-ativo { background: var(--acento-fraco); color: var(--acento); font-weight: 700; }
.nav-item.is-ativo::before {
  content: ""; position: absolute; left: -12px; top: 50%; transform: translateY(-50%);
  width: 3px; height: 18px; border-radius: 0 3px 3px 0; background: var(--acento);
}
.nav-item__icone { width: 17px; text-align: center; font-size: 14px; flex: none; opacity: .9; }
.nav-item__selo {
  margin-left: auto;
  min-width: 19px; height: 19px; padding: 0 5px;
  border-radius: var(--r-full);
  background: var(--erro); color: #fff;
  font-size: 10.5px; font-weight: 800;
  display: grid; place-items: center;
  font-variant-numeric: tabular-nums;
}
.nav-item__selo--calmo { background: var(--superficie-3); color: var(--txt-2); }

@media (max-width: 1080px) {
  :root { --lateral: 60px; }
  .marca__txt, .nav-item span:not(.nav-item__icone):not(.nav-item__selo), .nav-grupo { display: none; }
  .nav-item { justify-content: center; padding: 10px 0; }
  .nav-item__selo { position: absolute; top: 2px; right: 4px; margin: 0; }
}

@media (max-width: 720px) {
  .pagina { padding: var(--e-4) var(--e-3) var(--e-16); }
  .pagina__titulo { font-size: var(--t-xl); }
}
