/* Registro masivo · Educación Continua Uniandes
   Fondo blanco, encabezado negro con el logo institucional, arena para bandas de apoyo,
   tinta para texto y amarillo #FFE35A como acento. Archivo (títulos), Source Sans 3 (texto),
   IBM Plex Mono (rótulos). */

:root{
  --fondo:#FFFFFF;
  --blanco:#FFFFFF;
  --negro:#000000;
  --arena:#EDE8E2;
  --tinte:rgba(31,29,26,.045);
  --tinta:#1F1D1A;
  --texto-2:#3A3630;
  --texto-3:#494540;
  --gris:#6B655D;
  --linea:#DCD5CC;
  --amarillo:#FFE35A;
  --amarillo-suave:#FFF7CE;
  --ambar:#D9A900;
  --verde:#4F7A5B;
  --verde-suave:#E4EDE6;
  --neutro:#8A857C;
  --rojo:#A63D2F;
  --rojo-suave:#F6E3DF;
  --sobre-negro:rgba(255,255,255,.72);
  --linea-negro:rgba(255,255,255,.28);
  --max:1180px;
  --display:"Archivo",system-ui,sans-serif;
  --texto:"Source Sans 3",system-ui,sans-serif;
  --mono:"IBM Plex Mono",ui-monospace,monospace;
}

*{box-sizing:border-box}
html{scroll-behavior:smooth;scroll-padding-top:90px}
body{
  margin:0;background:var(--fondo);color:var(--tinta);
  font-family:var(--texto);font-size:17px;line-height:1.6;-webkit-font-smoothing:antialiased;
}
h1,h2,h3,h4{font-family:var(--display);font-weight:600;letter-spacing:-.02em;line-height:1.1;margin:0}
p{margin:0}
a{color:inherit}
:focus-visible{outline:2px solid var(--tinta);outline-offset:3px}
[hidden]{display:none !important}
.envoltura{max-width:var(--max);margin:0 auto;padding:0 28px}
.mono{font-family:var(--mono);font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--gris)}

/* ---------- Zonas oscuras (encabezado, cierre) ---------- */
.oscuro{background:var(--negro);color:var(--blanco)}
.oscuro :focus-visible{outline-color:var(--amarillo)}
.oscuro .boton{border-color:var(--amarillo)}
.oscuro .boton:hover{box-shadow:0 3px 0 var(--linea-negro)}
.oscuro .boton.secundario{background:transparent;border-color:var(--linea-negro);color:var(--sobre-negro)}
.oscuro .boton.secundario:hover{border-color:var(--blanco);color:var(--blanco);box-shadow:none}

/* ---------- Encabezado ---------- */
.barra{position:sticky;top:0;z-index:60;border-bottom:1px solid var(--negro)}
.barra-int{display:flex;align-items:center;gap:22px;height:74px}
.marca{display:block;flex:0 0 auto;line-height:0}
.marca img{display:block;height:36px;width:auto}
.marca-etiqueta{font-family:var(--mono);font-size:10.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--sobre-negro);padding-left:22px;border-left:1px solid var(--linea-negro);line-height:1.4;white-space:nowrap}
.barra-derecha{margin-left:auto;display:flex;align-items:center;gap:18px}
.indice{display:flex;gap:4px;margin:0;list-style:none;padding:0}
.indice a{display:block;padding:7px 11px;border-radius:2px;font-family:var(--mono);font-size:11px;letter-spacing:.1em;text-decoration:none;color:var(--sobre-negro);white-space:nowrap;transition:color .2s,background .2s}
.indice a:hover{color:var(--blanco);background:rgba(255,255,255,.1)}
.indice a.activo{color:var(--tinta);background:var(--amarillo)}
.barra .boton{flex:0 0 auto}

/* ---------- Botones ---------- */
.boton{
  display:inline-flex;align-items:center;justify-content:center;gap:10px;cursor:pointer;text-decoration:none;
  font-family:var(--mono);font-size:12px;letter-spacing:.1em;text-transform:uppercase;font-weight:500;
  padding:13px 20px;border-radius:2px;border:1px solid var(--tinta);background:var(--amarillo);color:var(--tinta);
  transition:transform .15s ease,box-shadow .15s ease,background .2s;
}
.boton:hover{transform:translateY(-1px);box-shadow:0 3px 0 var(--tinta)}
.boton:active{transform:none;box-shadow:none}
.boton.secundario{background:transparent;border-color:var(--linea);color:var(--gris)}
.boton.secundario:hover{border-color:var(--tinta);color:var(--tinta);box-shadow:none}
.boton.peligro{background:transparent;border-color:var(--rojo);color:var(--rojo)}
.boton.peligro:hover{background:var(--rojo-suave);box-shadow:none}
.boton.peligro.lleno{background:var(--rojo);color:var(--blanco)}
.boton.peligro.lleno:hover{background:#8E3327}
.boton.compacto{padding:8px 13px;font-size:11px}
.boton[disabled],.boton.cargando{opacity:.45;cursor:not-allowed;transform:none;box-shadow:none}
.boton.cargando::after{content:"";width:12px;height:12px;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;animation:girar .8s linear infinite}
@keyframes girar{to{transform:rotate(360deg)}}
.enlace-flecha{
  border:0;background:transparent;cursor:pointer;padding:6px 0;text-decoration:none;
  font-family:var(--mono);font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--tinta);
  border-bottom:3px solid var(--amarillo);display:inline-flex;gap:8px;align-items:center;transition:gap .18s,border-color .18s;
}
.enlace-flecha:hover{gap:13px;border-color:var(--ambar)}
.enlace-texto{border:0;background:transparent;padding:0;cursor:pointer;font:inherit;color:inherit;text-decoration:underline;text-underline-offset:3px}

/* ---------- Portada ---------- */
.portada{padding:80px 0 0}
.rotulo{font-family:var(--mono);font-size:11.5px;letter-spacing:.16em;text-transform:uppercase;color:var(--gris)}
.rotulo::before{content:"";display:inline-block;width:26px;height:3px;background:var(--amarillo);vertical-align:middle;margin-right:12px;transform:translateY(-2px)}
.portada h1{font-size:clamp(38px,6.2vw,74px);margin:26px 0 0;max-width:15ch;font-weight:700}
.portada h1 em{font-style:normal;display:block;color:var(--gris);font-weight:400;font-size:.52em;letter-spacing:-.01em;margin-top:14px;max-width:24ch}
.entrada{margin-top:28px;max-width:62ch;font-size:19.5px;color:var(--texto-2)}
.entrada strong{font-weight:600}
.portada-acciones{display:flex;gap:14px;flex-wrap:wrap;align-items:center;margin-top:34px}
.cifras{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;background:var(--linea);border:1px solid var(--linea);margin:56px 0 0}
.cifra{background:var(--fondo);padding:22px 20px}
.cifra b{display:block;font-family:var(--display);font-size:34px;font-weight:600;letter-spacing:-.03em}
.cifra span{font-family:var(--mono);font-size:10.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--gris);display:block;margin-top:4px}

/* ---------- Avisos de estado ---------- */
.aviso{display:flex;gap:12px;align-items:flex-start;background:var(--blanco);border:1px solid var(--linea);border-left:3px solid var(--amarillo);padding:14px 18px;border-radius:3px;font-size:15.5px;color:var(--texto-2)}
.aviso + .aviso{margin-top:10px}
.aviso.cerrado{border-left-color:var(--neutro)}
.aviso.abierto{border-left-color:var(--verde)}
.aviso b{font-weight:600;color:var(--tinta)}
.avisos{margin-top:30px;max-width:760px}

/* ---------- Mapa / jornadas ---------- */
.mapa{padding:64px 0 80px}
.mapa-titulo{font-family:var(--mono);font-size:11.5px;letter-spacing:.16em;text-transform:uppercase;color:var(--gris);margin-bottom:18px}
.mapa-lista{display:grid;grid-template-columns:repeat(2,1fr);gap:14px}
.mapa-item{display:block;text-decoration:none;background:var(--blanco);border:1px solid var(--linea);padding:24px 22px 24px;border-radius:3px;transition:transform .18s ease,border-color .18s ease}
.mapa-item:hover{transform:translateY(-3px);border-color:var(--tinta)}
.mapa-item i{font-family:var(--mono);font-style:normal;font-size:12px;color:var(--gris);letter-spacing:.08em}
.mapa-item h3{font-size:24px;margin:10px 0 6px}
.mapa-item p{font-size:16px;color:var(--texto-3)}
.mapa-item .mono{display:block;margin-top:14px}

/* ---------- Cómo participar ---------- */
.participar{background:var(--arena);border-top:1px solid var(--linea);border-bottom:1px solid var(--linea);padding:76px 0}
.participar h2{font-size:clamp(28px,3.6vw,42px);max-width:20ch;margin-top:18px}
.trama{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;background:var(--linea);border:1px solid var(--linea);margin-top:40px}
.trama div{background:var(--arena);padding:24px 20px}
.trama i{font-family:var(--mono);font-style:normal;font-size:11px;letter-spacing:.1em;color:var(--gris)}
.trama h3{font-size:19px;margin:10px 0 6px}
.trama p{font-size:15px;color:var(--texto-2)}
.importante{margin-top:40px;background:var(--blanco);border:1px solid var(--linea);border-left:4px solid var(--amarillo);padding:26px 28px;border-radius:3px}
.importante h3{font-family:var(--mono);font-size:11.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--gris);font-weight:500}
.importante ul{margin:14px 0 0;padding-left:20px;display:grid;gap:8px;color:var(--texto-2)}
.importante .nota{margin-top:16px;font-size:15px;color:var(--gris)}

/* ---------- Ejes (jornadas) ---------- */
.eje{padding:84px 0;border-top:1px solid var(--linea)}
.eje.fondo-blanco{background:var(--blanco)}
.eje.fondo-arena{background:var(--arena)}
.eje-grid{display:grid;grid-template-columns:340px 1fr;gap:64px;align-items:start}
.eje-cabeza{position:sticky;top:110px}
.eje-num{font-family:var(--display);font-size:96px;font-weight:700;line-height:.8;letter-spacing:-.05em;color:transparent;-webkit-text-stroke:1.5px var(--tinta);display:block}
.eje-cabeza h2{font-size:36px;margin:20px 0 0;max-width:12ch}
.eje-lema{font-family:var(--display);font-size:19px;color:var(--gris);margin-top:8px !important;letter-spacing:-.01em}
.eje-regla{width:44px;height:4px;background:var(--amarillo);margin:18px 0}
.eje-cabeza p{font-size:16px;color:var(--texto-3);max-width:42ch}
.temas{display:flex;flex-wrap:wrap;gap:6px;margin-top:18px}
.eje-nota{margin-top:18px !important}
.eje-datos{list-style:none;padding:0;margin:22px 0 0;border-top:1px solid var(--linea)}
.eje-datos li{display:flex;justify-content:space-between;gap:12px;padding:9px 0;border-bottom:1px solid var(--linea);font-size:14.5px}
.eje-datos b{font-family:var(--mono);font-size:10.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--gris);font-weight:500;padding-top:2px}
.eje-datos span{text-align:right;color:var(--texto-2)}
.talleres{display:grid;gap:16px}

/* ---------- Tarjetas ---------- */
.proyecto{background:var(--blanco);border:1px solid var(--linea);border-radius:3px;padding:26px 28px 24px;position:relative;transition:border-color .18s ease,transform .18s ease}
.proyecto:hover{border-color:var(--tinta);transform:translateY(-2px)}
.clave{font-family:var(--mono);font-size:11px;letter-spacing:.12em;color:var(--gris)}
.proyecto h3{font-size:22px;margin:8px 0 10px;max-width:36ch}
.resumen{font-size:16px;color:var(--texto-3);max-width:62ch}
.pie{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-top:20px}
.pie .enlace-flecha{margin-left:auto}
.etiqueta{font-family:var(--mono);font-size:10.5px;letter-spacing:.08em;text-transform:uppercase;border:1px solid var(--linea);border-radius:2px;padding:5px 9px;color:var(--gris);background:transparent;white-space:nowrap}
.estado{display:inline-flex;align-items:center;gap:7px}
.estado::before{content:"";width:7px;height:7px;border-radius:50%;background:var(--neutro);flex:0 0 auto}
.estado.disponible::before{background:var(--verde)}
.estado.pocos::before{background:var(--ambar)}
.estado.agotada::before{background:var(--neutro)}
.mini-sesiones{list-style:none;padding:0;margin:16px 0 0;border-top:1px solid var(--linea)}
.mini-sesiones li{display:grid;grid-template-columns:110px 1fr auto;gap:12px;align-items:center;padding:8px 0;border-bottom:1px solid var(--linea);font-size:14.5px;color:var(--texto-2)}
.mini-sesiones .mono{font-size:10.5px}

/* ---------- Panel de detalle ---------- */
.velo{position:fixed;inset:0;background:rgba(0,0,0,.45);opacity:0;pointer-events:none;transition:opacity .25s;z-index:80}
.velo.visible{opacity:1;pointer-events:auto}
.panel{position:fixed;top:0;right:0;bottom:0;width:min(580px,100%);background:var(--blanco);z-index:90;transform:translateX(100%);transition:transform .3s cubic-bezier(.4,0,.2,1);display:flex;flex-direction:column;box-shadow:-14px 0 40px rgba(0,0,0,.16)}
.panel.visible{transform:translateX(0)}
.panel-barra{display:flex;align-items:center;justify-content:space-between;padding:20px 30px;border-bottom:1px solid var(--linea);flex:0 0 auto}
.panel-barra span{font-family:var(--mono);font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--gris)}
.cerrar{border:0;background:transparent;cursor:pointer;font-family:var(--mono);font-size:12px;letter-spacing:.1em;text-transform:uppercase;color:var(--tinta);padding:6px}
.panel-cuerpo{overflow-y:auto;padding:34px 30px 60px}
.panel-cuerpo h2{font-size:30px;max-width:24ch}
.panel-cuerpo h4{font-family:var(--mono);font-size:11px;letter-spacing:.13em;text-transform:uppercase;color:var(--gris);font-weight:500;margin:32px 0 10px;padding-left:13px;border-left:4px solid var(--amarillo)}
.panel-cuerpo p{font-size:16.5px;color:var(--texto-2);margin-bottom:12px}
.panel-cuerpo ul{margin:8px 0 0;padding-left:20px;color:var(--texto-2);font-size:16px}
.panel-cuerpo li{margin-bottom:7px}
.panel-cuerpo .pie{margin-top:14px}
.ficha{list-style:none;padding:0 !important;margin:24px 0 0 !important;border-top:1px solid var(--linea)}
.ficha li{display:flex;gap:18px;padding:12px 0;border-bottom:1px solid var(--linea);font-size:15px;margin:0}
.ficha b{flex:0 0 116px;font-family:var(--mono);font-size:10.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--gris);font-weight:500;padding-top:3px}
.ficha span{color:var(--texto-2)}

/* ---------- Ventana de confirmación ---------- */
.modal{position:fixed;inset:0;z-index:120;display:grid;place-items:center;padding:16px;background:rgba(0,0,0,.5);opacity:0;transition:opacity .18s}
.modal.visible{opacity:1}
.modal-caja{width:min(480px,100%);background:var(--blanco);border:1px solid var(--tinta);border-top:5px solid var(--amarillo);border-radius:3px;padding:28px 30px 26px;box-shadow:0 24px 60px rgba(0,0,0,.28);transform:translateY(10px);transition:transform .18s}
.modal.visible .modal-caja{transform:none}
.modal.peligro .modal-caja{border-top-color:var(--rojo)}
.modal-caja h2{font-size:24px}
.modal-caja p{margin-top:12px;color:var(--texto-2);font-size:16px}
.modal-caja .acciones{margin-top:26px;justify-content:flex-end}
.modal-caja{max-height:calc(100vh - 32px);overflow-y:auto}
.lista-eleccion{list-style:none;padding:0;margin:18px 0 0;border-top:1px solid var(--linea)}
.lista-eleccion label{display:flex;gap:12px;align-items:flex-start;padding:12px 6px;border-bottom:1px solid var(--linea);cursor:pointer;transition:background .15s}
.lista-eleccion label:hover{background:var(--tinte)}
.lista-eleccion input{width:19px;height:19px;margin:2px 0 0;accent-color:var(--rojo);flex:0 0 auto;cursor:pointer}
.lista-eleccion b{display:block;font-weight:600;line-height:1.3}
.lista-eleccion span span{display:block;font-size:14px;color:var(--gris);margin-top:2px}
.lista-eleccion em{display:block;font-style:normal;font-size:13.5px;color:var(--gris);margin-top:4px}
.lista-eleccion label.no-disponible{cursor:not-allowed;opacity:.6}
.lista-eleccion label.no-disponible:hover{background:transparent}
.modal-caja .error-campo{display:block;margin-top:12px;font-size:14px;color:var(--rojo);font-weight:600}
.modal-caja .error-campo[hidden]{display:none}

/* ---------- Cierre y pie ---------- */
.cierre{padding:92px 0;border-top:1px solid var(--negro)}
.cierre h2{font-size:clamp(28px,3.6vw,42px);max-width:20ch;margin-top:18px;color:var(--blanco)}
.cierre .rotulo{color:var(--sobre-negro)}
.cierre .entrada{font-size:18px;margin-top:20px;color:var(--sobre-negro)}
.cierre .portada-acciones{margin-top:30px}
.creditos{padding:34px 0;border-top:1px solid var(--linea);background:var(--fondo)}
.creditos p{font-family:var(--mono);font-size:11px;letter-spacing:.08em;color:var(--gris);text-transform:uppercase}

/* ---------- Movimiento ---------- */
.aparece{opacity:0;transform:translateY(14px);transition:opacity .5s ease,transform .5s ease}
.aparece.dentro{opacity:1;transform:none}

/* =================================================================
   Formulario de inscripción
   ================================================================= */
.asistente{padding:56px 0 120px}
.asistente-cabeza h1{font-size:clamp(32px,4.6vw,52px);margin-top:20px;max-width:18ch}
.asistente-cabeza h1:focus{outline:none}
.progreso{display:grid;grid-template-columns:repeat(5,1fr);gap:1px;background:var(--linea);border:1px solid var(--linea);margin:36px 0 40px;list-style:none;padding:0}
.progreso li{background:var(--fondo);padding:14px 16px;font-family:var(--mono);font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--neutro);display:flex;gap:10px;align-items:center;transition:background .2s,color .2s}
.progreso li i{font-style:normal;font-size:12px}
.progreso li.hecho{color:var(--gris)}
.progreso li.hecho i::after{content:" ✓";color:var(--verde)}
.progreso li.actual{background:var(--amarillo);color:var(--tinta)}

.tarjeta{background:var(--blanco);border:1px solid var(--linea);border-radius:3px;padding:34px 36px}
.tarjeta + .tarjeta{margin-top:16px}
.tarjeta h2{font-size:28px}
.tarjeta .entrada{font-size:17.5px;margin-top:12px}
.estrecho{max-width:680px}
.paso-titulo{display:flex;justify-content:space-between;align-items:flex-end;gap:20px;flex-wrap:wrap;margin-bottom:22px}
.paso-titulo h2{font-size:32px}
.paso-titulo p{color:var(--texto-3);margin-top:8px;max-width:60ch}
.paso[data-paso=resumen]{margin-top:34px}
.paso-intro{color:var(--texto-3);max-width:62ch;margin-bottom:8px}

.grupo-campos{border:0;padding:0;margin:0}
.grupo-campos + .grupo-campos{margin-top:34px}
.grupo-campos legend{font-family:var(--mono);font-size:11px;letter-spacing:.13em;text-transform:uppercase;color:var(--gris);padding:0 0 0 13px;border-left:4px solid var(--amarillo);margin-bottom:18px}
.rejilla{display:grid;grid-template-columns:1fr 1fr;gap:20px 22px}
.campo{display:flex;flex-direction:column;gap:6px;min-width:0}
.campo.ancho{grid-column:1 / -1}
.campo label,.campo .etiqueta-campo{font-weight:600;font-size:15.5px}
.campo .opcional{font-weight:400;color:var(--gris);font-size:13.5px}
.campo input[type=text],.campo input[type=email],.campo input[type=tel],.campo input[type=date],.campo input[type=password],.campo input[type=number],.campo input[type=search],.campo select,.campo textarea{
  font:inherit;font-size:16px;padding:11px 13px;border:1px solid var(--linea);border-radius:2px;background:var(--blanco);color:var(--tinta);width:100%;transition:border-color .15s,box-shadow .15s;
}
.campo input:hover,.campo select:hover{border-color:var(--neutro)}
.campo input:focus,.campo select:focus,.campo textarea:focus{outline:none;border-color:var(--tinta);box-shadow:0 0 0 3px var(--amarillo-suave)}
.campo input[readonly]{color:var(--gris);background:var(--arena);border-color:var(--arena)}
.campo .ayuda{font-size:13.5px;color:var(--gris)}
.campo .error-campo{font-size:14px;color:var(--rojo);font-weight:600}
.campo.con-error input,.campo.con-error select{border-color:var(--rojo);background:var(--rojo-suave)}
.si-no-fila{display:flex;justify-content:space-between;align-items:center;gap:22px;padding:14px 0;border-bottom:1px solid var(--linea)}
.si-no-fila:first-of-type{border-top:1px solid var(--linea)}
.si-no-fila .texto-campo{font-size:15.5px}
.si-no-fila .texto-campo a{font-family:var(--mono);font-size:11px;letter-spacing:.08em;text-transform:uppercase;margin-left:6px;color:var(--gris)}
.si-no-fila .error-campo{display:block;margin-top:4px}
.si-no{display:inline-flex;border:1px solid var(--linea);border-radius:2px;flex:0 0 auto;background:var(--blanco)}
.si-no label{cursor:pointer;position:relative}
.si-no input{position:absolute;opacity:0;pointer-events:none}
.si-no span{display:block;padding:8px 16px;font-family:var(--mono);font-size:12px;letter-spacing:.08em;text-transform:uppercase;color:var(--gris);transition:background .15s}
.si-no label:hover span{background:var(--tinte)}
.si-no label + label span{border-left:1px solid var(--linea)}
.si-no input:checked + span{background:var(--tinta);color:var(--blanco)}
.si-no input:focus-visible + span{outline:2px solid var(--tinta);outline-offset:2px}
.si-no-fila.con-error .si-no{border-color:var(--rojo)}

.acciones{display:flex;gap:12px;align-items:center;flex-wrap:wrap;margin-top:32px}
.acciones .derecha{margin-left:auto}

.cita{margin:22px 0 0;padding:24px 26px;background:var(--arena);border-left:4px solid var(--amarillo);font-family:var(--display);font-size:20px;line-height:1.45;letter-spacing:-.01em;color:var(--tinta)}
.casilla{display:flex;gap:14px;align-items:flex-start;margin-top:24px;padding:18px 20px;border:1px solid var(--linea);border-radius:3px;cursor:pointer;background:var(--blanco);transition:border-color .15s,background .15s}
.casilla:hover{border-color:var(--tinta)}
.casilla input{width:22px;height:22px;margin:2px 0 0;accent-color:var(--tinta);flex:0 0 auto;cursor:pointer}
.casilla span{font-weight:600;font-size:16.5px}
.casilla.marcada{background:var(--amarillo-suave);border-color:var(--tinta)}

.alerta{border:1px solid var(--linea);border-left:4px solid var(--tinta);background:var(--blanco);padding:14px 18px;border-radius:3px;font-size:15.5px;color:var(--texto-2);margin-bottom:18px}
.alerta.error{border-left-color:var(--rojo);background:var(--rojo-suave)}
.alerta.ok{border-left-color:var(--verde);background:var(--verde-suave)}
.alerta.info{border-left-color:var(--amarillo);background:var(--amarillo-suave)}
.alerta ul{margin:8px 0 0;padding-left:20px}
.alerta b{color:var(--tinta)}
.alerta .enlace-texto{margin-left:6px;font-weight:600;color:var(--tinta)}

/* ---------- Elegir talleres ---------- */
.seleccion-grid{display:grid;grid-template-columns:1fr 330px;gap:36px;align-items:start}
.filtros{display:flex;flex-wrap:wrap;gap:8px 18px;align-items:center;padding:14px 0 18px;border-bottom:1px solid var(--linea);margin-bottom:26px}
.filtros .grupo{display:flex;gap:6px;align-items:center;flex-wrap:wrap}
.filtros .mono{margin-right:4px}
.chip{border:1px solid var(--linea);background:transparent;border-radius:2px;padding:6px 11px;font-family:var(--mono);font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--gris);cursor:pointer}
.chip:hover{border-color:var(--tinta);color:var(--tinta)}
.chip[aria-pressed=true]{background:var(--tinta);border-color:var(--tinta);color:var(--blanco)}

.bloque-jornada + .bloque-jornada{margin-top:56px}
.bloque-cabeza{display:flex;align-items:flex-end;gap:20px;justify-content:space-between;flex-wrap:wrap;padding-bottom:16px;border-bottom:2px solid var(--tinta);margin-bottom:18px}
.bloque-cabeza .num{font-family:var(--display);font-size:54px;font-weight:700;line-height:.8;letter-spacing:-.05em;color:transparent;-webkit-text-stroke:1.2px var(--tinta)}
.bloque-cabeza h3{font-size:28px;margin-top:10px}
.bloque-cabeza p{color:var(--gris);font-size:15px;margin-top:4px}
.bloque-cabeza > div:first-child{flex:1 1 320px}
.contador{display:flex;flex-direction:column;align-items:flex-end;gap:8px;flex:0 0 auto}
.puntos{display:flex;gap:5px}
.puntos i{width:22px;height:8px;border:1px solid var(--tinta);border-radius:1px}
.puntos i.lleno{background:var(--amarillo)}
.bloque-aviso{margin-bottom:16px}

.opcion-taller{background:var(--blanco);border:1px solid var(--linea);border-radius:3px;padding:20px 22px 12px;transition:border-color .18s}
.opcion-taller + .opcion-taller{margin-top:12px}
.opcion-taller.con-eleccion{border-color:var(--tinta);box-shadow:inset 5px 0 0 var(--amarillo)}
.opcion-cabeza{display:flex;gap:16px;align-items:flex-start;justify-content:space-between}
.opcion-cabeza h4{font-size:19px;margin-top:6px;max-width:44ch}
.opcion-cabeza .enlace-flecha{flex:0 0 auto;margin-top:2px}
.ediciones{list-style:none;padding:0;margin:14px 0 0}
.edicion{border-top:1px solid var(--linea)}
.edicion label{display:grid;grid-template-columns:26px 120px 1fr auto;gap:12px;align-items:center;padding:11px 8px;cursor:pointer;border-radius:2px;transition:background .15s}
.edicion label:hover{background:var(--tinte)}
.edicion input{width:19px;height:19px;margin:0;accent-color:var(--tinta);cursor:pointer}
.edicion .cuando b{display:block;font-weight:600;font-size:15.5px}
.edicion .cuando span{font-size:14px;color:var(--gris)}
.edicion .modalidad{font-size:15px;color:var(--texto-2)}
.edicion .cupos{font-family:var(--mono);font-size:10.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--gris);text-align:right}
.edicion .motivo{grid-column:2 / -1;font-size:13.5px;color:var(--gris);margin-top:-4px}
.edicion.elegida label,.edicion.elegida label:hover{background:var(--amarillo-suave)}
.edicion.no-disponible label{cursor:not-allowed}
.edicion.no-disponible label:hover{background:transparent}
.edicion.no-disponible .cuando,.edicion.no-disponible .modalidad{opacity:.5}
.edicion.no-disponible input{cursor:not-allowed}
.edicion.con-problema label{background:var(--rojo-suave)}
.edicion.con-problema .motivo{color:var(--rojo);font-weight:600}
.sin-resultados{padding:26px;border:1px dashed var(--linea);border-radius:3px;color:var(--gris);text-align:center}

.mi-seleccion{position:sticky;top:96px;background:var(--blanco);border:1px solid var(--tinta);border-radius:3px;padding:22px 22px 24px}
.mi-seleccion-cabeza{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;padding-bottom:16px;border-bottom:2px solid var(--tinta)}
.mi-seleccion h3{font-size:20px}
.mi-seleccion-cabeza .contador{align-items:flex-end}
.mi-seleccion .jornada-resumen{margin-top:16px}
.mi-seleccion .jornada-resumen > div{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}
.mi-seleccion ul{list-style:none;padding:0;margin:0;border-top:1px solid var(--linea)}
.mi-seleccion li{display:flex;gap:10px;justify-content:space-between;align-items:flex-start;padding:10px 0;border-bottom:1px solid var(--linea);font-size:14.5px}
.mi-seleccion li b{display:block;font-weight:600;line-height:1.3}
.mi-seleccion li span{color:var(--gris);font-size:13.5px}
.mi-seleccion li .quitar{border:0;background:transparent;cursor:pointer;color:var(--gris);font-size:18px;line-height:1;padding:2px 4px}
.mi-seleccion li .quitar:hover{color:var(--rojo)}
.mi-seleccion li.bloqueada .quitar{display:none}
.mi-seleccion .vacio{font-size:14.5px;color:var(--gris);padding:10px 0;border-top:1px solid var(--linea)}
.mi-seleccion .boton{width:100%;margin-top:20px}
.mi-seleccion .actualizado{margin-top:12px;font-size:12.5px;color:var(--gris);text-align:center}

.barra-inferior{display:none}

/* ---------- Confirmar y listo ---------- */
.revision{list-style:none;padding:0;margin:18px 0 0;border-top:1px solid var(--linea)}
.revision li{display:grid;grid-template-columns:140px 1fr auto;gap:16px;align-items:center;padding:14px 0;border-bottom:1px solid var(--linea)}
.revision li .fecha b{display:block;font-weight:600}
.revision li .fecha span{font-size:14px;color:var(--gris)}
.revision li h4{font-size:17px}
.revision li p{font-size:14px;color:var(--gris);margin-top:2px}
.revision .etiqueta.nueva{background:var(--amarillo);border-color:var(--amarillo);color:var(--tinta)}
.revision li.quitada{opacity:.55}
.revision li.quitada h4{text-decoration:line-through}
.datos-resumen{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:var(--linea);border:1px solid var(--linea);margin-top:18px}
.datos-resumen div{background:var(--blanco);padding:14px 16px}
.datos-resumen b{display:block;font-family:var(--mono);font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--gris);font-weight:500}
.datos-resumen span{font-size:15px;overflow-wrap:anywhere}
.sello{width:58px;height:58px;border-radius:50%;background:var(--amarillo);display:grid;place-items:center;font-size:28px;border:1px solid var(--tinta);flex:0 0 auto}
.listo-cabeza{display:flex;gap:22px;align-items:center}
.recordatorio{margin-top:24px;padding:16px 20px;background:var(--amarillo-suave);border-left:4px solid var(--amarillo);font-size:15.5px}
.nota-final{margin-top:18px;font-size:14.5px;color:var(--gris)}
.nota-final + .nota-final{margin-top:6px}

/* =================================================================
   Panel de administración
   ================================================================= */
.admin-nav{display:flex;gap:4px;margin:0;align-items:center;list-style:none;padding:0}
.admin-nav form{margin:0}
.admin-nav a,.admin-nav button{display:block;padding:7px 11px;border-radius:2px;font-family:var(--mono);font-size:11px;letter-spacing:.1em;text-decoration:none;color:var(--sobre-negro);text-transform:uppercase;border:0;background:transparent;cursor:pointer}
.admin-nav a:hover,.admin-nav button:hover{color:var(--blanco);background:rgba(255,255,255,.1)}
.admin-nav a.activo{background:var(--amarillo);color:var(--tinta)}
.admin{padding:44px 0 90px}
.admin h1{font-size:clamp(30px,4vw,44px);margin-top:16px}
.admin h2{font-size:24px;margin:44px 0 16px}
.cabeza-admin{display:flex;justify-content:space-between;align-items:flex-end;gap:20px;flex-wrap:wrap}
.cifras.admin-cifras{margin-top:30px}
.tabla-envoltura{overflow-x:auto;border:1px solid var(--linea);border-radius:3px;background:var(--blanco)}
table.tabla{width:100%;border-collapse:collapse;font-size:14.5px}
.tabla th{font-family:var(--mono);font-size:10.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--gris);font-weight:500;text-align:left;padding:12px 14px;border-bottom:1px solid var(--linea);background:var(--arena);white-space:nowrap;position:sticky;top:0}
.tabla td{padding:11px 14px;border-bottom:1px solid var(--linea);vertical-align:middle}
.tabla tbody tr:hover td{background:var(--tinte)}
.tabla tr:last-child td{border-bottom:0}
.tabla tr.inactiva td{color:var(--neutro)}
.tabla a{text-decoration:none;border-bottom:1px solid var(--linea)}
.tabla a:hover{border-color:var(--tinta)}
.tabla .num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
.tabla .nw{white-space:nowrap}
.ocupacion{display:flex;align-items:center;gap:10px;min-width:150px}
.ocupacion .pista{flex:1;height:8px;background:var(--arena);border-radius:1px;overflow:hidden}
.ocupacion .pista i{display:block;height:100%;background:var(--verde)}
.ocupacion .pista i.medio{background:var(--ambar)}
.ocupacion .pista i.lleno{background:var(--tinta)}
.ocupacion span{font-family:var(--mono);font-size:11px;white-space:nowrap;font-variant-numeric:tabular-nums}
.asistencia{display:inline-flex;border:1px solid var(--linea);border-radius:2px}
.asistencia button{border:0;background:transparent;padding:6px 10px;font-family:var(--mono);font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--gris);cursor:pointer}
.asistencia button + button{border-left:1px solid var(--linea)}
.asistencia button[aria-pressed=true].si{background:var(--verde);color:#fff}
.asistencia button[aria-pressed=true].no{background:var(--rojo);color:#fff}
.formulario-linea{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:16px;align-items:end}
.interruptor{display:flex;gap:10px;align-items:center;font-weight:600;font-size:15px;padding:10px 0}
.interruptor input{width:18px;height:18px;accent-color:var(--tinta)}
.busqueda{display:flex;gap:10px;max-width:560px}
.busqueda input{flex:1}
.ingreso-admin{min-height:calc(100vh - 160px);display:grid;place-items:center;padding:60px 0}
.ingreso-admin .tarjeta{width:min(440px,100%)}
.tabla-ficha{list-style:none;padding:0;margin:0;border-top:1px solid var(--linea)}
.tabla-ficha li{display:grid;grid-template-columns:220px 1fr;gap:16px;padding:10px 0;border-bottom:1px solid var(--linea);font-size:15px}
.tabla-ficha b{font-family:var(--mono);font-size:10.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--gris);font-weight:500;padding-top:3px}
.dos-columnas{display:grid;grid-template-columns:1fr 1fr;gap:28px;align-items:start}

/* ---------- Utilidades de las páginas estáticas ---------- */
.cargando-pagina{padding:80px 0;font-family:var(--mono);font-size:12px;letter-spacing:.12em;text-transform:uppercase;color:var(--gris)}
.asistente .cargando-pagina{padding:20px 0}
.separada{margin-top:26px}
.separada-poco{margin-top:10px}
.separada-grande{margin:26px 0 22px}
.separada-abajo{margin-bottom:12px}
.separada-abajo-grande{margin:16px 0 22px}
.sin-margen{margin:0}
.sin-subrayado{text-decoration:none}
.crece{flex:1}
.bloque-si-no{margin-top:22px}
#importante-ingreso .importante{margin-top:16px}
.ocupacion-grande{min-width:220px}

/* ---------- Adaptable ---------- */
@media (max-width:1140px){
  .marca-etiqueta{display:none}
}
@media (max-width:1000px){
  .eje-grid{grid-template-columns:1fr;gap:36px}
  .eje-cabeza{position:static}
  .trama{grid-template-columns:repeat(2,1fr)}
  .seleccion-grid{grid-template-columns:1fr}
  .mi-seleccion{position:static}
  .dos-columnas{grid-template-columns:1fr}
}
@media (max-width:760px){
  body{font-size:16px}
  .envoltura{padding:0 16px}
  .indice{display:none}
  .barra-int{gap:12px;height:62px}
  .marca img{height:30px}
  .barra .boton{padding:9px 12px;font-size:10.5px}
  .cifras{grid-template-columns:repeat(2,1fr)}
  .mapa-lista,.trama{grid-template-columns:1fr}
  .portada{padding:52px 0 0}
  .eje{padding:56px 0}
  .eje-num{font-size:70px}
  .proyecto{padding:22px 20px 20px}
  .pie .enlace-flecha{margin-left:0}
  .panel-cuerpo{padding:26px 22px 50px}
  .ficha li{flex-direction:column;gap:4px}
  .mini-sesiones li{grid-template-columns:1fr auto}
  .mini-sesiones li .mono:first-child{grid-column:1 / -1}
  .progreso li{padding:10px 6px;justify-content:center}
  .progreso li .texto-paso{display:none}
  .progreso li.actual .texto-paso{display:inline}
  .tarjeta{padding:24px 18px}
  .rejilla{grid-template-columns:1fr}
  .si-no-fila{flex-direction:column;align-items:flex-start;gap:10px}
  .edicion label{grid-template-columns:24px 1fr auto;gap:4px 10px}
  .edicion .modalidad{grid-column:2 / 3;font-size:14px}
  .edicion .cupos{grid-row:1;grid-column:3}
  .edicion .motivo{grid-column:2 / -1}
  .opcion-cabeza{flex-direction:column;gap:8px}
  .revision li{grid-template-columns:1fr;gap:4px}
  .datos-resumen{grid-template-columns:1fr}
  .asistente{padding-bottom:140px}
  .contador{align-items:flex-start}
  .modal-caja{padding:24px 20px 22px}
  .modal-caja .acciones{flex-direction:column-reverse;align-items:stretch}
  .barra-inferior{display:flex;position:fixed;left:0;right:0;bottom:0;z-index:50;background:var(--negro);color:var(--blanco);padding:12px 16px;gap:12px;align-items:center;justify-content:space-between}
  .barra-inferior span{font-family:var(--mono);font-size:11px;letter-spacing:.08em;text-transform:uppercase}
  .barra-inferior .boton{padding:10px 14px;border-color:var(--amarillo)}
  .tabla-ficha li{grid-template-columns:1fr;gap:2px}
  .admin-nav{display:none}
}
@media (max-width:420px){
  .progreso li{font-size:10px}
  .marca img{height:26px}
}
@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *{transition-duration:.01ms !important;animation-duration:.01ms !important}
  .aparece{opacity:1;transform:none}
}
@media print{
  .barra,.velo,.panel,.acciones,.barra-inferior,.filtros,.admin-nav,.modal{display:none !important}
  body{background:#fff}
}
