/* Nexum Consulting · Registro de empresas certificadas */
:root {
  box-sizing: border-box;
  padding-top: env(safe-area-inset-top, 0px);
  padding-bottom: env(safe-area-inset-bottom, 0px);
  --papel: #F3F5F8;
  --superficie: #FFFFFF;
  --tinta: #17202C;
  --tinta-2: #4A5668;
  --linea: #D6DDE7;
  --azul: #1D5AA6;
  --marino: #0F2A4A;
  --naranja: #E9851A;
  --ok: #1B7046;      --ok-fondo: #E5F3EB;
  --aviso: #9A5A00;   --aviso-fondo: #FBF0DD;
  --mal: #AE2A1F;     --mal-fondo: #FBE7E4;
  --gris: #5D6878;    --gris-fondo: #ECEFF3;
  --radio: 6px;
  --fuente: "Public Sans", "Segoe UI", system-ui, -apple-system, Roboto, sans-serif;
  --titulos: "Archivo", "Public Sans", "Segoe UI", system-ui, sans-serif;
}
@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) {
    --papel: #0E1621; --superficie: #152131; --tinta: #E8EDF4; --tinta-2: #A7B3C3;
    --linea: #2A394D; --azul: #7DB0F0; --marino: #CFE0F7;
    --ok: #6FD3A0; --ok-fondo: #123326; --aviso: #F2B866; --aviso-fondo: #3A2A10;
    --mal: #F49488; --mal-fondo: #3B1A17; --gris: #A7B3C3; --gris-fondo: #1E2B3C;
  }
}
:root[data-theme="dark"] {
  --papel: #0E1621; --superficie: #152131; --tinta: #E8EDF4; --tinta-2: #A7B3C3;
  --linea: #2A394D; --azul: #7DB0F0; --marino: #CFE0F7;
  --ok: #6FD3A0; --ok-fondo: #123326; --aviso: #F2B866; --aviso-fondo: #3A2A10;
  --mal: #F49488; --mal-fondo: #3B1A17; --gris: #A7B3C3; --gris-fondo: #1E2B3C;
}
*, *::before, *::after { box-sizing: inherit; }
html { height: 100%; scroll-padding-top: env(safe-area-inset-top, 0px); }
body {
  margin: 0; min-height: 100%; display: flex; flex-direction: column;
  background: var(--papel); color: var(--tinta);
  font: 400 1rem/1.6 var(--fuente);
  font-variant-numeric: tabular-nums;
  -webkit-font-smoothing: antialiased;
}
img { max-width: 100%; }
a { color: var(--azul); text-underline-offset: 3px; }
:focus-visible { outline: 3px solid var(--naranja); outline-offset: 2px; border-radius: 3px; }

/* ---------- Encabezado ---------- */
.barra { background: #fff; border-bottom: 1px solid #DCE2EA; }
.barra-in { max-width: 1040px; margin: 0 auto; padding: .7rem 1.25rem;
  display: flex; align-items: center; justify-content: space-between; gap: 1rem; }
.barra img { height: 40px; width: auto; display: block; }
.barra nav a { color: #0F2A4A; font-weight: 600; font-size: .925rem; text-decoration: none; }
.barra nav a:hover { text-decoration: underline; }

main { flex: 1; width: 100%; max-width: 1040px; margin: 0 auto; padding: 2.5rem 1.25rem 4rem; }

h1, h2, h3 { font-family: var(--titulos); font-stretch: 112%; color: var(--marino); line-height: 1.15; margin: 0; }
h1 { font-size: clamp(1.9rem, 4.4vw, 2.9rem); font-weight: 700; letter-spacing: -.01em; }
h2 { font-size: 1.3rem; font-weight: 700; }
.sub { color: var(--tinta-2); max-width: 62ch; margin: .75rem 0 0; font-size: 1.075rem; }

/* ---------- Búsqueda ---------- */
.inicio { padding-top: 2rem; max-width: 760px; }
.buscador { margin-top: 2rem; display: flex; gap: .5rem; }
.buscador input {
  flex: 1; min-width: 0; font: inherit; font-size: 1.1rem; color: var(--tinta);
  padding: .9rem 1rem; border: 2px solid var(--linea); border-radius: var(--radio);
  background: var(--superficie);
}
.buscador input:focus { border-color: var(--azul); outline: none; box-shadow: 0 0 0 3px color-mix(in srgb, var(--azul) 25%, transparent); }
.btn {
  font: 600 1rem var(--fuente); border: 0; border-radius: var(--radio); cursor: pointer;
  background: var(--azul); color: #fff; padding: .9rem 1.4rem;
}
:root[data-theme="dark"] .btn { color: #0E1621; }
@media (prefers-color-scheme: dark) { :root:not([data-theme="light"]) .btn { color: #0E1621; } }
.btn.btn-sec, :root .btn.btn-sec { background: transparent; color: var(--azul); border: 1px solid var(--linea); padding: .55rem .95rem; font-size: .9rem; }
.btn.btn-sec:hover { border-color: var(--azul); }
.ayuda { color: var(--tinta-2); font-size: .9rem; margin: .6rem 0 0; }

.resultados { list-style: none; margin: 1.75rem 0 0; padding: 0; border-top: 1px solid var(--linea); }
.resultados li { border-bottom: 1px solid var(--linea); }
.resultados a { display: flex; align-items: center; gap: 1rem; padding: 1rem .25rem; text-decoration: none; color: var(--tinta); }
.resultados a:hover .r-nombre { text-decoration: underline; }
.r-nombre { font-weight: 600; color: var(--marino); }
.r-meta { color: var(--tinta-2); font-size: .9rem; }
.mensaje { margin-top: 1.5rem; color: var(--tinta-2); }

.como { margin-top: 4rem; display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 2rem;
  border-top: 1px solid var(--linea); padding-top: 2rem; }
.como h3 { font-size: 1rem; font-stretch: 100%; margin-bottom: .35rem; }
.como p { margin: 0; color: var(--tinta-2); font-size: .95rem; }

/* ---------- Monograma ---------- */
.mono { flex: none; width: 52px; height: 52px; border-radius: 50%; display: grid; place-items: center;
  background: var(--marino); color: var(--papel); font: 700 1.05rem var(--titulos); letter-spacing: .02em; }
.mono img { width: 100%; height: 100%; object-fit: cover; border-radius: 50%; }

/* ---------- Perfil ---------- */
.perfil { background: var(--superficie); border: 1px solid var(--linea); border-radius: 12px; overflow: hidden; }
.portada { position: relative; height: 112px; background: #0F2A4A; }
.portada::after { content: ""; position: absolute; left: 0; right: 0; bottom: 0; height: 5px;
  background: linear-gradient(90deg, #E2343F 0 16.6%, #F08A1C 16.6% 33.3%, #F4C21B 33.3% 50%, #3DAE5A 50% 66.6%, #1D8FD1 66.6% 83.3%, #7B4BA8 83.3%); }
.perfil-cuerpo { display: grid; grid-template-columns: auto 1fr auto; gap: 0 1.75rem; align-items: start;
  padding: 0 2rem 1.75rem; margin-top: -56px; position: relative; }
.avatar { width: 136px; height: 136px; border-radius: 50%; overflow: hidden; background: #DCE6F2;
  border: 5px solid var(--superficie); box-shadow: 0 6px 20px rgba(15,42,74,.18); flex: none; }
.avatar img, .avatar svg { width: 100%; height: 100%; display: block; object-fit: cover; }
.perfil-datos { padding-top: 76px; min-width: 0; }
.perfil-datos h1 { font-size: clamp(1.7rem, 3.6vw, 2.5rem); }
.perfil-linea { display: flex; flex-wrap: wrap; align-items: center; gap: .4rem 1.25rem; margin: .6rem 0 0; }
.ubicacion { display: inline-flex; align-items: center; gap: .35rem; font-size: .95rem; color: var(--tinta); }
.ubicacion svg { width: 18px; height: 18px; color: var(--azul); }
.verificado { display: inline-flex; align-items: center; gap: .35rem; font-size: .9rem; font-weight: 600; color: var(--ok); }
.nivel { display: inline-flex; align-items: center; gap: .4rem; margin-bottom: .55rem; padding: .3rem .8rem .3rem .6rem;
  border-radius: 999px; font: 700 .8rem var(--fuente); letter-spacing: .02em; }
.nivel svg { width: 16px; height: 16px; }
.nivel-platinum { color: #2B3442; border: 1px solid #AEB8C6;
  background: linear-gradient(115deg, #F4F6F9 0%, #CDD5DF 38%, #FFFFFF 52%, #B9C3D0 70%, #E6EBF1 100%);
  box-shadow: inset 0 1px 0 rgba(255,255,255,.9), 0 1px 3px rgba(15,42,74,.18); }
.nivel-oro { color: #4A3300; border: 1px solid #C9A34A; background: linear-gradient(115deg, #FFF3CF, #E8C468 45%, #FFF6DA 55%, #D9AE4A); }
.nivel-plata { color: #33404F; border: 1px solid #C2CAD4; background: linear-gradient(115deg, #F7F8FA, #D9DEE5 50%, #F2F4F7); }
.especialidades { margin-top: 1rem; }
.esp-titulo { display: block; font-size: .85rem; color: var(--tinta-2); margin-bottom: .4rem; }
.especialidades ul { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: .45rem; }
.especialidades li { font-size: .875rem; font-weight: 600; color: var(--azul); padding: .3rem .8rem; border-radius: 999px;
  background: color-mix(in srgb, var(--azul) 10%, transparent); border: 1px solid color-mix(in srgb, var(--azul) 30%, transparent); }
.verificado svg { width: 18px; height: 18px; }
.perfil-meta { margin: .35rem 0 0; color: var(--tinta-2); }
.perfil-meta strong { color: var(--tinta); font-weight: 600; }
.perfil-acciones { padding-top: 80px; }
.cifras { display: grid; grid-template-columns: repeat(4, 1fr); border-top: 1px solid var(--linea); margin: 0; }
.cifras div { padding: 1rem 2rem; }
.cifras div + div { border-left: 1px solid var(--linea); }
.cifras dt { font-size: .85rem; color: var(--tinta-2); }
.cifras dd { margin: .15rem 0 0; font: 700 1.35rem var(--titulos); font-stretch: 105%; color: var(--marino); }

.seccion-titulo { margin: 2.75rem 0 1rem; font-size: 1.25rem; }
.programas { display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: 1.25rem; }
.programa { text-align: left; font: inherit; color: inherit; cursor: pointer; display: flex; flex-direction: column; gap: 1rem;
  background: var(--superficie); border: 1px solid var(--linea); border-radius: 12px; padding: 1.5rem;
  transition: border-color .15s, box-shadow .15s, transform .15s; }
.programa:hover { border-color: var(--azul); box-shadow: 0 8px 24px rgba(15,42,74,.10); transform: translateY(-2px); }
.programa[aria-expanded="true"] { border-color: var(--azul); box-shadow: inset 0 -4px 0 var(--azul); }
.prog-cab { display: flex; align-items: center; gap: 1rem; }
.prog-icono { width: 52px; height: 52px; border-radius: 12px; display: grid; place-items: center; flex: none;
  background: color-mix(in srgb, var(--azul) 14%, transparent); color: var(--azul); }
.prog-icono svg { width: 28px; height: 28px; }
.prog-nombre { font: 700 1.35rem var(--titulos); font-stretch: 108%; color: var(--marino); display: block; }
.prog-desc { font-size: .9rem; color: var(--tinta-2); display: block; }
.prog-cifras { display: flex; gap: 1.5rem; font-size: .9rem; color: var(--tinta-2); }
.prog-cifras b { display: block; font: 700 1.6rem var(--titulos); color: var(--tinta); }
.prog-claves { display: flex; flex-wrap: wrap; gap: .4rem; }
.prog-claves span { font-size: .8rem; font-weight: 600; padding: .2rem .55rem; border-radius: 6px;
  background: var(--papel); border: 1px solid var(--linea); color: var(--tinta-2); }
.prog-ver { display: flex; align-items: center; justify-content: space-between; font-weight: 600; color: var(--azul);
  border-top: 1px solid var(--linea); padding-top: 1rem; margin-top: auto; }
.prog-ver svg { width: 20px; height: 20px; transition: transform .2s; }
.programa[aria-expanded="true"] .prog-ver svg { transform: rotate(180deg); }

.detalle { margin-top: 1.5rem; animation: abrir .25s ease-out; }
@keyframes abrir { from { opacity: 0; transform: translateY(-6px); } to { opacity: 1; transform: none; } }
@media (prefers-reduced-motion: reduce) { .detalle, .programa { animation: none; transition: none; } }
.detalle h2 { display: flex; flex-wrap: wrap; align-items: baseline; gap: .2rem .6rem; }
.detalle h2 small { font: 400 .9rem var(--fuente); color: var(--tinta-2); }

.tabla-envoltura { overflow-x: auto; margin-top: .75rem; background: var(--superficie);
  border: 1px solid var(--linea); border-radius: var(--radio); }
table { width: 100%; border-collapse: collapse; font-size: .95rem; }
th { text-align: left; font-weight: 600; font-size: .85rem; color: var(--tinta-2);
  padding: .7rem 1rem; border-bottom: 1px solid var(--linea); white-space: nowrap; }
td { padding: .85rem 1rem; border-bottom: 1px solid var(--linea); vertical-align: top; }
tbody tr:last-child td { border-bottom: 0; }
tbody tr { position: relative; }
tbody tr:hover { background: color-mix(in srgb, var(--azul) 6%, transparent); }
.c-clave { font-weight: 700; color: var(--marino); white-space: nowrap; text-decoration: none; }
.c-clave::after { content: ""; position: absolute; inset: 0; }
.c-nombre { display: block; color: var(--tinta-2); font-size: .9rem; }
.fecha { white-space: nowrap; }
.vencido-fila td { color: var(--tinta-2); }

.estado { display: inline-flex; align-items: center; gap: .4rem; font-size: .85rem; font-weight: 600;
  padding: .2rem .6rem; border-radius: 999px; white-space: nowrap; }
.estado::before { content: ""; width: .5rem; height: .5rem; border-radius: 50%; background: currentColor; }
.e-vigente { color: var(--ok); background: var(--ok-fondo); }
.e-por_vencer { color: var(--aviso); background: var(--aviso-fondo); }
.e-vencido, .e-revocado { color: var(--mal); background: var(--mal-fondo); }
.e-suspendido { color: var(--gris); background: var(--gris-fondo); }

/* ---------- Verificación de certificado ---------- */
.migas { font-size: .9rem; color: var(--tinta-2); margin-bottom: 1.5rem; }
.verif { display: grid; grid-template-columns: 260px 1fr; gap: 3rem; align-items: start;
  background: var(--superficie); border: 1px solid var(--linea); border-radius: var(--radio); padding: 2.5rem; }
.sello { width: 100%; max-width: 260px; height: auto; display: block; margin: 0 auto; }
.sello-anim { animation: estampa .6s cubic-bezier(.2,.9,.3,1.2) both; transform-origin: center; }
@keyframes estampa { from { opacity: 0; transform: scale(1.25) rotate(-8deg); } to { opacity: 1; transform: none; } }
@media (prefers-reduced-motion: reduce) { .sello-anim { animation: none; } }
.veredicto { font-size: clamp(1.5rem, 3vw, 2rem); }
.veredicto-sub { margin: .5rem 0 0; color: var(--tinta-2); font-size: 1.05rem; }
.datos { margin: 1.75rem 0 0; display: grid; grid-template-columns: repeat(auto-fit, minmax(190px, 1fr));
  gap: 1.1rem 2rem; border-top: 1px solid var(--linea); padding-top: 1.5rem; }
.datos dt { font-size: .85rem; color: var(--tinta-2); }
.datos dd { margin: .1rem 0 0; font-weight: 600; }
.datos .ancho { grid-column: 1 / -1; }
.acciones { margin-top: 1.75rem; display: flex; gap: .75rem; flex-wrap: wrap; align-items: center; }
.consulta { margin-top: 1.25rem; font-size: .85rem; color: var(--tinta-2); }

.vacio { max-width: 640px; }
.vacio p { color: var(--tinta-2); }

.cargando { color: var(--tinta-2); padding: 3rem 0; }

/* ---------- Pie ---------- */
.pie { border-top: 1px solid var(--linea); }
.pie-in { max-width: 1040px; margin: 0 auto; padding: 1.5rem 1.25rem; font-size: .85rem; color: var(--tinta-2);
  display: flex; justify-content: space-between; gap: 1rem; flex-wrap: wrap; }

/* ---------- Móvil ---------- */
@media (max-width: 720px) {
  main { padding-top: 1.75rem; }
  .barra img { height: 32px; }
  .buscador { flex-direction: column; }
  .verif { grid-template-columns: 1fr; padding: 1.5rem; gap: 1.5rem; }
  .sello { max-width: 200px; }
  .col-ed, .col-acr { display: none; }
  .perfil-cuerpo { grid-template-columns: 1fr; justify-items: center; text-align: center; padding: 0 1.25rem 1.5rem; }
  .avatar { width: 116px; height: 116px; }
  .perfil-datos { padding-top: .75rem; }
  .perfil-linea, .especialidades ul { justify-content: center; }
  .perfil-acciones { padding-top: 1.1rem; }
  .cifras { grid-template-columns: 1fr 1fr; }
  .cifras div { padding: .9rem 1.25rem; }
  .cifras div:nth-child(3) { border-left: 0; }
  .cifras div:nth-child(n+3) { border-top: 1px solid var(--linea); }
  .programas { grid-template-columns: 1fr; }
  th, td { padding: .7rem .55rem; }
  th:first-child, td:first-child { padding-left: .85rem; }
  .estado { font-size: .78rem; padding: .15rem .5rem; }
  .c-nombre { font-size: .85rem; }
}
@media print {
  .barra nav, .acciones, .perfil-acciones, .pie { display: none; }
  body { background: #fff; }
}
.sr { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }

/* ---------- Empresas certificadas ---------- */
.logo-emp { border-radius: 18px; background: #fff; }
.logo-emp img { object-fit: contain; padding: 6px; background: #fff; }
.domicilio { font-size: .9rem; }
.cert-card { text-decoration: none; }
.cert-card .prog-cab { align-items: flex-start; }
.cert-chip { margin-left: auto; }
.cert-datos { display: grid; grid-template-columns: repeat(auto-fit, minmax(170px, 1fr)); gap: .75rem 1.25rem; margin: 0; }
.cert-datos dt { font-size: .8rem; color: var(--tinta-2); }
.cert-datos dd { margin: .1rem 0 0; font-weight: 700; color: var(--tinta); white-space: nowrap; }
.cert-alcance ul { margin: 0; padding-left: 1.1rem; color: var(--tinta-2); font-size: .9rem; display: grid; gap: .25rem; }
.cert-alcance li.mas { list-style: none; margin-left: -1.1rem; font-weight: 600; color: var(--azul); }
.dd-sub { display: block; font-weight: 400; font-size: .85rem; color: var(--tinta-2); }
.bloque { margin-top: 1.75rem; border-top: 1px solid var(--linea); padding-top: 1.25rem; }
.bloque h2 { font-size: 1.05rem; font-stretch: 105%; margin-bottom: .6rem; }
.alcance { margin: 0; padding-left: 1.2rem; display: grid; gap: .4rem; }
.vigilancias { list-style: none; margin: 0; padding: 0; display: grid; gap: .5rem; }
.vigilancias li { display: flex; flex-wrap: wrap; align-items: center; gap: .3rem 1rem; padding: .6rem .85rem;
  border: 1px solid var(--linea); border-radius: var(--radio); }
.vigilancias li span:first-child { color: var(--tinta-2); min-width: 7.5rem; }
.proxima { font-size: .78rem; font-weight: 700; color: var(--aviso); background: var(--aviso-fondo); padding: .1rem .55rem; border-radius: 999px; }
.e-por_iniciar { color: var(--aviso); background: var(--aviso-fondo); }
.e-retirado { color: var(--mal); background: var(--mal-fondo); }
@media (max-width: 720px) {
  .cert-card .prog-cab { flex-wrap: wrap; }
  .cert-chip { margin-left: 0; width: 100%; }
}
