/* =====================================================================
   Expo Construcción CMIC Tijuana 2026
   Estilos compartidos: temas, formas y componentes.

   Dos temas porque el evento dura doce horas en un recinto con luz muy
   distinta según la hora y el lugar: el módulo de registro puede estar
   junto a un ventanal a mediodía, y la puerta de conferencias en un
   pasillo sin luz natural. El operador elige el que le sirva.

   La paleta de color viene del manual de identidad del evento y NO
   cambia entre temas: son los colores de la marca.
   ===================================================================== */

:root{
  /* ---- Marca (manual de identidad, no se tocan) ---- */
  --rojo:#f05224;    --rojo-h:#c61806;
  --azul:#024ab2;    --azul-cl:#3f6ab3;
  --amarillo:#efc307;--amarillo-h:#c6a105;
  --verde:#79b504;   --verde-h:#628904;  --verde-cl:#a1ce54;

  /* ---- Formas ---- */
  --r-chico:8px;
  --r:12px;
  --r-grande:18px;
  --r-pastilla:999px;

  --sombra:0 1px 2px rgba(0,0,0,.06), 0 4px 14px rgba(0,0,0,.08);
  --sombra-alta:0 8px 30px rgba(0,0,0,.16);

  --paso:.18s cubic-bezier(.3,.8,.4,1);

  --uti:'Archivo', system-ui, -apple-system, 'Segoe UI', sans-serif;
}



/* ---------- Tema claro: es el de arranque ---------- */
:root, [data-tema="claro"]{
  --fondo:#f3f5f8;
  --superficie:#ffffff;
  --superficie-2:#f7f9fb;
  --campo:#ffffff;
  --linea:#d9dee6;
  --linea-suave:#e8ecf1;

  /* Contraste sobre blanco: texto 15.9:1 · texto-2 7.1:1 · apagado 4.7:1 */
  --texto:#14181d;
  --texto-2:#48525e;
  --apagado:#69737f;

  --sombra:0 1px 2px rgba(16,24,40,.05), 0 4px 14px rgba(16,24,40,.07);
  --sombra-alta:0 12px 34px rgba(16,24,40,.14);
  color-scheme: light;
}

/* ---------- Tema oscuro ---------- */
[data-tema="oscuro"]{
  --fondo:#0d0d0f;
  --superficie:#17181b;
  --superficie-2:#1f2126;
  --campo:#101114;
  --linea:#2a2c32;
  --linea-suave:#212329;

  /* Contraste medido sobre --fondo:
     texto        16.8:1   ·  texto-2  8.4:1  ·  apagado 4.9:1
     Todos por encima del mínimo de 4.5:1 que exige AA. */
  --texto:#f4f5f7;
  --texto-2:#b8bcc4;
  --apagado:#8b9099;

  --sombra:0 1px 2px rgba(0,0,0,.4), 0 6px 20px rgba(0,0,0,.35);
  --sombra-alta:0 12px 40px rgba(0,0,0,.55);
  color-scheme: dark;
}

*{box-sizing:border-box;margin:0;padding:0}
[hidden]{display:none !important}

body{
  background:var(--fondo); color:var(--texto);
  font-family:var(--uti); font-size:14px; line-height:1.55;
  min-height:100dvh; -webkit-font-smoothing:antialiased;
  transition:background var(--paso), color var(--paso);
}

.marco{max-width:1040px;margin:0 auto;padding:0 20px}
@media (max-width:600px){ .marco{padding:0 14px} }

/* ---------- Barra superior ---------- */
.cabecera{
  background:var(--superficie);
  border-bottom:1px solid var(--linea);
  padding:11px 0; position:sticky; top:0; z-index:30;
  box-shadow:var(--sombra);
}
/* Filete de marca: los cuatro colores del evento */
/* Filete de marca al pie de la barra. Se posiciona en lugar de usar
   margen negativo: -100vw desbordaba y provocaba barra horizontal. */
.cabecera{position:sticky}
.cabecera::after{
  content:""; position:absolute; left:0; right:0; bottom:-3px; height:3px;
  background:linear-gradient(90deg,var(--rojo) 0 25%,var(--azul) 25% 50%,
    var(--amarillo) 50% 75%,var(--verde) 75% 100%);
}
.barra{display:flex;align-items:center;justify-content:space-between;gap:12px}
.barra .logo{height:30px;width:auto;display:block}
[data-tema="oscuro"] .barra .logo.claro{display:block}
[data-tema="oscuro"] .barra .logo.oscuro{display:none}
[data-tema="claro"]  .barra .logo.claro{display:none}
[data-tema="claro"]  .barra .logo.oscuro{display:block}

.barra-dcha{display:flex;align-items:center;gap:10px;font-size:12.5px;color:var(--texto-2)}
.barra-dcha b{color:var(--texto);font-weight:600}

/* ---------- Interruptor de tema ---------- */
.tema{
  display:inline-flex; align-items:center; gap:0;
  background:var(--superficie-2); border:1px solid var(--linea);
  border-radius:var(--r-pastilla); padding:3px;
}
.tema button{
  background:none;border:none;cursor:pointer;color:var(--apagado);
  width:30px;height:26px;border-radius:var(--r-pastilla);
  display:grid;place-items:center;transition:var(--paso);
}
.tema button:hover{color:var(--texto)}
.tema button.on{background:var(--fondo);color:var(--texto);box-shadow:var(--sombra)}
.tema svg{width:15px;height:15px;display:block}

/* ---------- Superficies ---------- */
.bloque{
  background:var(--superficie); border:1px solid var(--linea);
  border-radius:var(--r-grande); padding:22px; margin-bottom:18px;
  box-shadow:var(--sombra);
}
.bloque h2{font-size:19px;font-weight:800;letter-spacing:-.012em}
.bloque .ay{color:var(--texto-2);font-size:13.5px;margin-top:4px;line-height:1.6}
.bloque .ay + *{margin-top:18px}

h1{font-size:24px;font-weight:900;letter-spacing:-.02em}
h2{font-size:20px;font-weight:800;letter-spacing:-.015em}
.plomo{color:var(--texto-2);font-size:14px;margin-top:4px}

/* ---------- Campos ---------- */
.campo{margin-bottom:14px}
.campo label{
  display:block;font-size:11px;font-weight:700;letter-spacing:.1em;
  text-transform:uppercase;color:var(--texto-2);margin-bottom:6px;
}
.campo label .opc{
  color:var(--apagado);letter-spacing:.02em;text-transform:none;font-weight:500;
}
.campo input, .campo select, .campo textarea{
  width:100%; background:var(--campo); color:var(--texto);
  border:1px solid var(--linea); border-radius:var(--r);
  font-family:var(--uti); font-size:16px; font-weight:500;
  padding:13px 15px; transition:var(--paso);
}
.campo input:hover, .campo select:hover{border-color:var(--apagado)}
.campo input:focus, .campo select:focus, .campo textarea:focus{
  outline:none; border-color:var(--verde);
  box-shadow:0 0 0 3px rgba(121,181,4,.18);
}
.campo input::placeholder{color:var(--apagado);font-weight:400;opacity:.75}
.campo textarea{
  min-height:150px; font-family:ui-monospace,Menlo,monospace;
  font-size:12.5px; resize:vertical; line-height:1.6;
}
.campo.malo input, .campo.malo select{border-color:var(--rojo)}
.campo.malo input:focus{box-shadow:0 0 0 3px rgba(240,82,36,.2)}
.error{font-size:12.5px;color:var(--rojo);margin-top:5px;display:none;font-weight:500}
[data-tema="oscuro"] .error{color:#ff9c7d}
.campo.malo .error{display:block}

.rejilla{display:grid;grid-template-columns:1fr 1fr;gap:14px}
@media (max-width:640px){ .rejilla{grid-template-columns:1fr} }
.ancho{grid-column:1 / -1}

/* ---------- Botones ---------- */
.boton{
  display:inline-flex;align-items:center;justify-content:center;gap:8px;
  width:100%; padding:15px 20px; border:1px solid transparent;
  border-radius:var(--r); cursor:pointer; transition:var(--paso);
  font-family:var(--uti); font-size:13.5px; font-weight:800;
  letter-spacing:.08em; text-transform:uppercase; text-decoration:none;
  background:var(--verde); color:#0a0a0a;
}
.boton:hover:not(:disabled){background:var(--verde-h);color:#fff;transform:translateY(-1px);box-shadow:var(--sombra)}
.boton:active:not(:disabled){transform:translateY(0)}
.boton:disabled{background:var(--superficie-2);color:var(--apagado);cursor:not-allowed;border-color:var(--linea)}
.boton.oro{background:var(--amarillo);color:#0a0a0a}
.boton.oro:hover:not(:disabled){background:var(--amarillo-h)}
.boton.suave{background:var(--superficie-2);color:var(--texto);border-color:var(--linea)}
.boton.suave:hover:not(:disabled){background:var(--fondo);color:var(--texto)}
.boton.chico{width:auto;padding:10px 18px;font-size:11.5px;border-radius:var(--r-chico)}

.mini{
  background:var(--superficie-2);border:1px solid var(--linea);color:var(--texto-2);
  font-family:var(--uti);font-size:11.5px;font-weight:600;letter-spacing:.04em;
  padding:8px 13px;border-radius:var(--r-chico);cursor:pointer;
  transition:var(--paso);text-decoration:none;display:inline-block;
}
.mini:hover{color:var(--texto);border-color:var(--apagado)}
.mini.rojo:hover{color:var(--rojo);border-color:var(--rojo)}

/* ---------- Avisos ---------- */
.mensaje{
  padding:13px 16px;font-size:13.5px;margin-top:14px;display:none;
  border-radius:var(--r);border-left:3px solid;line-height:1.55;
}
.mensaje.ver{display:block}
.mensaje.mal  {border-color:var(--rojo);    background:rgba(240,82,36,.10)}
.mensaje.bien {border-color:var(--verde);   background:rgba(121,181,4,.12)}
.mensaje.aviso{border-color:var(--amarillo);background:rgba(239,195,7,.12)}

/* ---------- Cifras ---------- */
.cifras{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px}
.cifra{
  background:var(--superficie);border:1px solid var(--linea);
  border-radius:var(--r-grande);padding:18px;box-shadow:var(--sombra);
}
.cifra .k{font-size:10px;font-weight:700;letter-spacing:.13em;text-transform:uppercase;color:var(--texto-2)}
.cifra .v{font-size:30px;font-weight:900;line-height:1.1;margin-top:5px;letter-spacing:-.02em}
.cifra .v.oro{color:var(--amarillo-h)}
[data-tema="oscuro"] .cifra .v.oro{color:var(--amarillo)}
.cifra .v.verde{color:var(--verde-h)}
[data-tema="oscuro"] .cifra .v.verde{color:var(--verde-cl)}

/* ---------- Pestañas ---------- */
nav.tabs{
  display:flex;gap:4px;margin-bottom:20px;overflow-x:auto;
  background:var(--superficie-2);border:1px solid var(--linea);
  border-radius:var(--r-pastilla);padding:4px;
}
nav.tabs button{
  background:none;border:none;border-radius:var(--r-pastilla);
  color:var(--texto-2);font-family:var(--uti);font-size:12px;font-weight:700;
  letter-spacing:.06em;padding:10px 18px;cursor:pointer;white-space:nowrap;
  transition:var(--paso);
}
nav.tabs button:hover{color:var(--texto)}
nav.tabs button.on{background:var(--superficie);color:var(--texto);box-shadow:var(--sombra)}

.panel{display:none} .panel.on{display:block}

/* ---------- Filas de lista ---------- */
.fila{
  display:flex;align-items:center;gap:14px;padding:13px 0;
  border-top:1px solid var(--linea-suave);flex-wrap:wrap;
}
.fila:first-child{border-top:none}
.fila.off{opacity:.5}
.fila .datos{flex:1;min-width:160px}
.fila .datos b{display:block;font-size:15.5px;font-weight:600}
.fila .datos span{font-size:12.5px;color:var(--texto-2)}

.chip{
  font-size:10px;font-weight:700;letter-spacing:.09em;text-transform:uppercase;
  padding:5px 10px;border-radius:var(--r-pastilla);
  border:1px solid var(--linea);color:var(--texto-2);white-space:nowrap;
}
.chip.ok  {color:var(--verde-h); border-color:rgba(121,181,4,.45); background:rgba(121,181,4,.10)}
.chip.pend{color:var(--amarillo-h);border-color:rgba(239,195,7,.45);background:rgba(239,195,7,.10)}
[data-tema="oscuro"] .chip.ok{color:var(--verde-cl)}
[data-tema="oscuro"] .chip.pend{color:var(--amarillo)}

/* ---------- Pantalla de acceso ---------- */
.pantalla-acceso{
  min-height:100dvh;display:flex;align-items:center;justify-content:center;padding:22px;
}
.tarjeta{
  background:var(--superficie);border:1px solid var(--linea);
  border-radius:var(--r-grande);padding:34px 30px;max-width:390px;width:100%;
  box-shadow:var(--sombra-alta);
}
.tarjeta .logo{height:52px;width:auto;display:block;margin:0 auto 22px}
.tarjeta h1{font-size:19px;font-weight:800;text-align:center}
.tarjeta .s{text-align:center;color:var(--texto-2);font-size:13px;margin:5px 0 24px}

:focus-visible{outline:2px solid var(--verde);outline-offset:2px;border-radius:4px}

@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{transition:none !important;animation:none !important}
  .boton:hover{transform:none}
}


/* ---------- Marcador de los módulos ---------- */
.marcador{
  display:grid; grid-template-columns:repeat(auto-fit,minmax(120px,1fr));
  gap:12px; margin-top:20px;
}
.marcador > div{
  background:var(--superficie); border:1px solid var(--linea);
  border-radius:var(--r-grande); padding:16px; text-align:center;
  box-shadow:var(--sombra);
}
.marcador .v{
  font-size:28px; font-weight:900; line-height:1;
  font-variant-numeric:tabular-nums; letter-spacing:-.02em;
}
.marcador .k{
  font-size:10px; font-weight:700; letter-spacing:.13em;
  text-transform:uppercase; color:var(--texto-2); margin-top:6px;
}
