/* base.css — reset, tipografía, accesibilidad, utilidades */
*, *::before, *::after { box-sizing: border-box; }
html { scroll-behavior: smooth; scroll-padding-top: calc(var(--nh-header) + 12px); }
body {
  margin: 0; font-family: var(--nh-font); color: var(--nh-texto); background: var(--nh-fondo);
  line-height: 1.6; -webkit-font-smoothing: antialiased; min-height: 100vh;
}
/* Fondo del sitio público (los portales conservan fondo neutro de trabajo) */
body[data-superficie="publico"] { background: #ffffff; }
body.modal-abierto { overflow: hidden; }
img, svg { max-width: 100%; display: block; }
a { color: var(--nh-verde-600); text-decoration-thickness: 1px; text-underline-offset: 2px; }
a:hover { color: var(--nh-verde-900); }
h1, h2, h3, h4 { line-height: 1.2; color: var(--nh-verde-900); margin: 0 0 var(--nh-sp-3); font-weight: 800; }
h1 { font-size: clamp(1.75rem, 3.5vw, var(--nh-fs-2xl)); }
h2 { font-size: clamp(1.4rem, 2.6vw, var(--nh-fs-xl)); }
h3 { font-size: var(--nh-fs-lg); }
p { margin: 0 0 var(--nh-sp-3); }
ul, ol { margin: 0 0 var(--nh-sp-3); padding-left: 1.25rem; }
button, input, select, textarea { font: inherit; color: inherit; }
button { cursor: pointer; }
:focus-visible { outline: 3px solid var(--nh-verde-400); outline-offset: 2px; border-radius: 4px; }
@media (prefers-reduced-motion: reduce) { *, *::before, *::after { animation: none !important; transition: none !important; } html { scroll-behavior: auto; } }

/* Accesibilidad */
.sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap; border: 0; }
.saltar { position: absolute; left: -999px; top: 8px; background: var(--nh-verde-900); color: #fff; padding: .5rem 1rem; border-radius: var(--nh-radio-sm); z-index: 1000; }
.saltar:focus { left: 8px; }

/* Utilidades */
.contenedor { width: min(100% - 2rem, var(--nh-ancho-max)); margin-inline: auto; }
.texto-2 { color: var(--nh-texto-2); }
.texto-sm { font-size: var(--nh-fs-sm); }
.texto-xs { font-size: var(--nh-fs-xs); }
.texto-centro { text-align: center; }
.mt-2 { margin-top: var(--nh-sp-2); } .mt-4 { margin-top: var(--nh-sp-4); } .mt-6 { margin-top: var(--nh-sp-6); } .mt-8 { margin-top: var(--nh-sp-8); }
.mb-2 { margin-bottom: var(--nh-sp-2); } .mb-4 { margin-bottom: var(--nh-sp-4); } .mb-6 { margin-bottom: var(--nh-sp-6); }
.fila { display: flex; gap: var(--nh-sp-3); align-items: center; flex-wrap: wrap; }
.fila--entre { justify-content: space-between; }
.columna { display: flex; flex-direction: column; gap: var(--nh-sp-3); }
.grid { display: grid; gap: var(--nh-sp-4); }
.grid > * { min-width: 0; } /* ninguna tarjeta puede ensanchar su columna (evita desbordes) */
.grid--2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.grid--3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.grid--4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
@media (max-width: 1024px) { .grid--4 { grid-template-columns: repeat(2, minmax(0, 1fr)); } .grid--3 { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 640px) { .grid--2, .grid--3, .grid--4 { grid-template-columns: 1fr; } }
.oculto { display: none !important; }
.solo-movil { display: none; }
@media (max-width: 767px) { .solo-movil { display: initial; } .solo-escritorio { display: none !important; } }
