/* ==========================================================================
   base.css · Reset, tipografía, formularios y utilidades transversales
   ========================================================================== */

*{ box-sizing:border-box; }
html,body{ margin:0; padding:0; height:100%; }

body{
  font-family:var(--font);
  background:var(--bg);
  color:var(--ink);
  font-size:var(--fs);
  line-height:1.5;
  -webkit-font-smoothing:antialiased;
  -webkit-text-size-adjust:100%;
}

button,input,select,textarea{ font-family:inherit; font-size:inherit; }

/* Foco visible y consistente — requisito de accesibilidad */
:focus-visible{ outline:2px solid var(--blue); outline-offset:2px; border-radius:4px; }
button:focus:not(:focus-visible){ outline:none; }

/* Enlace de salto para lectores de pantalla y teclado */
.skip{
  position:absolute; left:-999px; top:8px; z-index:300;
  background:var(--navy); color:#fff; padding:10px 16px; border-radius:var(--r);
}
.skip:focus{ left:8px; }

::-webkit-scrollbar{ width:9px; height:9px; }
::-webkit-scrollbar-thumb{ background:#C7D2DC; border-radius:5px; border:2px solid transparent; background-clip:content-box; }
::-webkit-scrollbar-thumb:hover{ background:#AEBCC9; background-clip:content-box; }

/* --- Formularios --------------------------------------------------------- */
label.f{ display:block; font-size:.89rem; font-weight:600; color:#41505F; margin-bottom:6px; }
label.f .h{ font-weight:400; color:var(--soft); }
label.f .req{ color:var(--red); font-weight:700; }

input[type=text],input[type=number],input[type=date],input[type=time],input[type=tel],input[type=password],select,textarea{
  width:100%; padding:10px 13px; border:1px solid var(--bd); border-radius:var(--r);
  background:var(--surface); color:var(--ink); transition:border-color var(--t-fast),box-shadow var(--t-fast);
}
input::placeholder,textarea::placeholder{ color:#A3B0BC; }
input:focus,select:focus,textarea:focus{ outline:none; border-color:var(--blue); box-shadow:var(--ring); }
input:disabled,select:disabled,textarea:disabled{ background:#F4F7F9; color:#8894A0; cursor:not-allowed; }
input.bad,select.bad,textarea.bad{ border-color:var(--red); box-shadow:0 0 0 3px rgba(214,69,69,.14); }
textarea{ min-height:76px; resize:vertical; }

.field{ margin-bottom:15px; }
.field:last-child{ margin-bottom:0; }
.field .hint{ font-size:.82rem; color:var(--mut); margin-top:5px; }
.field .err{ font-size:.82rem; color:var(--red); margin-top:5px; font-weight:600; display:none; }
.field.bad .err{ display:block; }

/* --- Utilidades de composición ------------------------------------------ */
.grid{ display:grid; gap:14px; }
.g2{ grid-template-columns:repeat(auto-fit,minmax(270px,1fr)); }
.g3{ grid-template-columns:repeat(auto-fit,minmax(210px,1fr)); }
.g4{ grid-template-columns:repeat(auto-fit,minmax(178px,1fr)); }
.g5{ grid-template-columns:repeat(auto-fit,minmax(152px,1fr)); }
.row{ display:flex; gap:9px; flex-wrap:wrap; align-items:center; }
.row.end{ justify-content:flex-end; }
.row.between{ justify-content:space-between; }
.sep{ height:1px; background:var(--bd2); margin:18px 0; }
.maxw{ max-width:1180px; }
.mono{ font-family:var(--font-mono); font-size:.85rem; }
.muted{ color:var(--mut); }
.nowrap{ white-space:nowrap; }
.hidden{ display:none !important; }

.lead{ color:var(--mut); font-size:.98rem; line-height:1.62; margin:0 0 18px; max-width:92ch; }
.lead:last-child{ margin-bottom:0; }

h1,h2,h3,h4{ font-weight:600; color:var(--navy); }
a{ color:var(--blue); }
