/* ACERTAR — estilos compartidos. Ver brand-spec.md para los tokens. */
body {
  background-color: #fcf8ff;
  font-family: 'Hanken Grotesk', sans-serif;
  color: #1a1b25;
}
.icon {
  width: 1em;
  height: 1em;
  vertical-align: -0.125em;
  display: inline-block;
  flex-shrink: 0;
  fill: none;
  stroke: currentColor;
  stroke-width: 1.5;
  stroke-linecap: round;
  stroke-linejoin: round;
}
.industrial-border { border: 1px solid #c6c4da; }
.industrial-grid {
  background-image: radial-gradient(circle, #e3e1f0 1px, transparent 1px);
  background-size: 24px 24px;
}
.bg-mesh {
  background-image: radial-gradient(#c6c4da 0.5px, transparent 0.5px);
  background-size: 24px 24px;
}
/* Textura de puntos en dos niveles + resplandor sutil, para contenedores de contenido. */
.content-mesh-light {
  background-color: #fcf8ff;
  background-image:
    radial-gradient(circle at 50% 0%, rgba(16, 0, 223, 0.06), transparent 55%),
    radial-gradient(circle at 100% 100%, rgba(255, 112, 14, 0.05), transparent 45%),
    radial-gradient(rgba(198, 196, 218, 0.45) 0.6px, transparent 0.6px),
    radial-gradient(rgba(198, 196, 218, 0.8) 1.2px, transparent 1.2px);
  background-size: auto, auto, 11px 11px, 44px 44px;
}
.focus-orange:focus-within { outline: 2px solid #ff700e; outline-offset: -2px; }
.safety-focus:focus { outline: 2px solid #ff700e; outline-offset: 2px; }
.industrial-glow { box-shadow: 0 0 40px rgba(16, 0, 223, 0.08); }
/* Resplandor difuso para bandas oscuras (bg-inverse-surface): nunca planas. */
.surface-glow { position: relative; overflow: hidden; }
.surface-glow::before {
  content: '';
  position: absolute;
  inset: -20%;
  background:
    radial-gradient(circle at 18% 22%, rgba(255,255,255,0.12), transparent 42%),
    radial-gradient(circle at 82% 12%, rgba(191,193,255,0.18), transparent 46%),
    radial-gradient(circle at 65% 95%, rgba(255,255,255,0.09), transparent 45%);
  filter: blur(48px);
  pointer-events: none;
}
.custom-scrollbar::-webkit-scrollbar { width: 6px; height: 6px; }
.custom-scrollbar::-webkit-scrollbar-track { background: transparent; }
.custom-scrollbar::-webkit-scrollbar-thumb { background: #c6c4da; border-radius: 10px; }
.zebra-table tr:nth-child(even) { background-color: #f5f2ff; }
.zebra-table tr:nth-child(odd) { background-color: #fcf8ff; }
.col-sticky-end {
  position: sticky;
  right: 0;
  background-color: inherit;
  box-shadow: -8px 0 8px -8px rgba(26, 27, 37, 0.15);
}
.upload-dashed {
  background-image: url("data:image/svg+xml,%3csvg width='100%25' height='100%25' xmlns='http://www.w3.org/2000/svg'%3e%3crect width='100%25' height='100%25' fill='none' stroke='%23767589' stroke-width='2' stroke-dasharray='8%2c 8' stroke-dashoffset='0' stroke-linecap='square'/%3e%3c/svg%3e");
}
.sidebar-link {
  display: flex; align-items: center; gap: 12px;
  padding: 12px 16px; margin: 0 12px 4px;
  border-radius: 0.75rem; color: #454557; transition: all .15s ease;
}
.sidebar-link:hover { background: #e3e1f0; }
.sidebar-link.active { background: rgba(255, 112, 14, 0.12); color: #9f4200; font-weight: 700; }
.status-chip { padding: 2px 12px; border-radius: 9999px; font-size: 10px; font-weight: 700; text-transform: uppercase; }
.status-chip.vigente { background: #dcfce7; color: #166534; }
.status-chip.vencido { background: #fee2e2; color: #991b1b; }
.status-chip.pendiente { background: #fef3c7; color: #92400e; }
.banner-success { background: #dcfce7; border-color: rgba(22, 101, 52, 0.2); color: #166534; }
select.appearance-none {
  -webkit-appearance: none;
  -moz-appearance: none;
  appearance: none;
  background-image: none;
}
select.appearance-none::-ms-expand { display: none; }
