/* Reset ligero + layout base */
*, *::before, *::after { box-sizing: border-box; }
html, body { height: 100%; }
body {
  margin: 0;
  font-family: var(--fuente);
  font-size: var(--fs-md);
  color: var(--texto);
  background: var(--fondo);
  -webkit-font-smoothing: antialiased;
}
a { color: var(--teal-700); text-decoration: none; }
a:hover { text-decoration: underline; }
h1, h2, h3 { font-family: var(--fuente-titulo); font-weight: 600; color: var(--carbon); margin: 0 0 var(--sp-3); line-height: 1.2; }
p { margin: 0 0 var(--sp-3); }

/* Shell de la aplicación: sidebar + contenido */
.app {
  display: grid;
  /* Sidebar fijo y abierto (con etiquetas y logo completo siempre visibles). */
  grid-template-columns: var(--sidebar-ancho) 1fr;
  grid-template-rows: var(--topbar-alto) 1fr;
  grid-template-areas:
    "sidebar topbar"
    "sidebar main";
  min-height: 100vh;
}
.app__sidebar { grid-area: sidebar; }
.app__topbar  { grid-area: topbar; }
.app__main    { grid-area: main; padding: var(--sp-5); overflow: auto; }

/* Utilidades */
.contenedor { max-width: 1200px; margin: 0 auto; }
.oculto { display: none !important; }
.grid { display: grid; gap: var(--sp-4); }
.cols-3 { grid-template-columns: repeat(3, 1fr); }
.flex { display: flex; gap: var(--sp-3); align-items: center; }
.flex-entre { justify-content: space-between; }
.texto-suave { color: var(--texto-suave); }
.mt-4 { margin-top: var(--sp-4); }

/* Responsive: colapsa el sidebar en pantallas chicas */
@media (max-width: 860px) {
  .app {
    grid-template-columns: 1fr;
    grid-template-areas: "topbar" "main";
  }
  .app__sidebar { display: none; }
}
