:root{
  color-scheme:light;
  /* Colores de la web de Euroace: fondo crema, naranja de marca y carbón */
  --tinta:#282828; --papel:#FFF7EA; --superficie:#ffffff; --ficha:#F6EEE0; --etiqueta:#EEF1F6; --calido:#FDEFDC; --linea:#E6D9C4;
  --texto:#33373D; --suave:#6E6558; --alerta:#b00020; --alertaFondo:#ffd9d9; --acento:#F99C37; --acentoHover:#E88A24; --acentoSuave:#FDEBD0; --acentoTexto:#282828;
  --foco:#2f6fdc; --aviso:#fff6e0; --ok:#e6f4ea;
  --radio:12px; --radio-s:8px;   /* esquinas: 12 px los cuadros (tablas, avisos, paneles), 8 px lo pequeño (etiquetas, campos) */
}
*{box-sizing:border-box}
html,body{margin:0;background:var(--papel);color:var(--texto);font:14px/1.45 -apple-system,'Segoe UI',Roboto,'Helvetica Neue',Arial,sans-serif}
body{border-top:6px solid var(--acento)}
button,input,select{font:inherit;color:inherit}
button{cursor:pointer}
:focus-visible{outline:3px solid var(--foco);outline-offset:2px}
@media (prefers-reduced-motion: reduce){*{transition:none!important;animation:none!important}}
.pagina{max-width:1180px;margin:0 auto;padding:12px 14px 40px}
.barra{display:flex;flex-wrap:wrap;gap:10px 16px;align-items:center;justify-content:space-between;padding:10px 0 12px}
.marca{display:flex;align-items:center;gap:12px;color:var(--tinta)}
.logo{height:38px;width:auto;display:block}
.logo-texto{font-weight:900;font-size:22px;letter-spacing:.5px;color:#111;background:var(--acento);border-radius:12px;padding:2px 10px}
.marca-texto{font-size:18px;font-weight:bold;padding-left:12px;border-left:2px solid var(--linea)}
.herramientas{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.herramientas .yo{color:var(--suave);font-size:12px}
select,input[type=date],input[type=email],input[type=text],input[type=time],input[type=number]{background:var(--superficie);border:1px solid var(--linea);border-radius:var(--radio-s);padding:6px 8px}
.btn{background:var(--superficie);border:1px solid var(--linea);border-radius:20px;padding:6px 14px}
.btn:hover{border-color:var(--acento);background:var(--calido)}
.btn.primario{background:var(--acento);color:var(--acentoTexto);border-color:var(--acento);font-weight:bold}
.btn.primario:hover{background:var(--acentoHover);border-color:var(--acentoHover)}
.btn.suave{border-color:transparent;color:var(--tinta);background:transparent;text-decoration:underline;padding:6px 8px}
.btn[disabled]{opacity:.45;cursor:not-allowed}
.pestanas{display:flex;gap:4px;border-bottom:2px solid var(--linea);margin-bottom:14px;flex-wrap:wrap}
.pestana{background:none;border:0;padding:9px 14px;color:var(--suave);border-bottom:3px solid transparent;margin-bottom:-2px;font-weight:bold}
.pestana[aria-selected=true]{color:var(--tinta);border-bottom-color:var(--acento)}
.pestana .num{display:inline-block;min-width:18px;padding:0 5px;margin-left:6px;border-radius:9px;background:var(--alertaFondo);color:var(--alerta);font-size:12px;text-align:center}
.nota{background:var(--aviso);border-radius:var(--radio);padding:8px 12px;margin:0 0 12px}
.nota.pasado{background:var(--ficha)}
.nota.error{background:var(--alertaFondo);color:var(--alerta)}
.titulo-dia{display:flex;flex-wrap:wrap;gap:10px;align-items:center;justify-content:space-between;margin:2px 0 10px}
.titulo-dia h2{margin:0;font-size:20px;color:var(--tinta)}
.acc{display:flex;gap:8px;flex-wrap:wrap}
.festivo{background:var(--alertaFondo);color:var(--alerta);font-weight:bold;padding:8px 12px;border-radius:var(--radio);margin-bottom:12px}
.seccion{margin:18px 0 4px;font-weight:bold;color:var(--tinta);border-bottom:2px solid var(--tinta);padding-bottom:3px}
.franja{display:grid;grid-template-columns:92px 1fr;gap:10px;padding:10px 0;border-top:2px solid var(--linea)}
.hora{font-weight:bold;color:var(--tinta)}
.clase{display:grid;grid-template-columns:230px 1fr 64px;gap:8px;align-items:start;padding:6px 0}
.clase+.clase{border-top:1px solid var(--linea)}
.meta{display:flex;flex-wrap:wrap;gap:4px 8px;align-items:center}
.nivel{display:inline-block;min-width:54px;text-align:center;padding:3px 8px;border-radius:var(--radio-s);font-weight:bold;color:#1c2430}
.aula{color:var(--suave)}
.online{background:#e1ccff;color:#4a1a8a;border-radius:var(--radio-s);padding:2px 9px;font-size:13px;font-weight:bold}
.etq-online{margin-left:6px;padding:0 5px;border-radius:5px;background:rgba(255,255,255,.7);color:#4a1a8a;font-size:11px;font-weight:bold;text-transform:uppercase}
.mas{margin-left:auto;background:none;border:0;color:var(--suave);padding:2px 6px;font-size:16px}
.fichas{display:flex;flex-wrap:wrap;gap:3px}
.ficha{width:112px;text-align:left;padding:5px 8px;border:2px solid var(--superficie);border-radius:var(--radio-s);background:var(--ficha);color:var(--texto);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ficha.neutra{background:var(--etiqueta)}   /* sin color de estado: gris claro, que no se parece a ningún estado */
.ficha:hover{border-color:var(--tinta)}
.ficha.puntual{border-style:dashed;border-color:var(--suave)}
.total{text-align:center;color:var(--suave);font-size:12px;padding-top:6px}
.total.llena{background:var(--alertaFondo);color:var(--alerta);font-weight:bold;border-radius:var(--radio-s);padding:5px 2px}
.vacio{color:var(--suave);padding:6px 0}
.menu{position:absolute;z-index:20;background:var(--superficie);border:1px solid var(--linea);border-radius:var(--radio);box-shadow:0 6px 24px rgba(0,0,0,.18);padding:6px;min-width:220px;max-height:70vh;overflow:auto}
.menu h4{margin:6px 8px 4px;font-size:12px;color:var(--suave);font-weight:normal}
.menu button{display:flex;align-items:center;gap:8px;width:100%;text-align:left;background:none;border:0;border-radius:var(--radio-s);padding:6px 8px}
.menu button:hover{background:var(--ficha)}
.muestra{width:14px;height:14px;border-radius:3px;border:1px solid rgba(0,0,0,.2);flex:none}
.muestra.punteada{width:24px;border:1px dashed var(--suave);background:transparent}                    /* como la ficha de quien está solo ese día (.ficha.puntual) */
.menu h4.sub{margin:10px 8px 2px;padding-top:6px;border-top:1px solid var(--linea);font-weight:bold}
.menu button[aria-pressed=true]{font-weight:bold}
.menu button[disabled]{cursor:default;opacity:.75}
.menu button[disabled]:hover{background:none}
.leyenda-mezcla{margin:6px 0 0}
.grupo-orden{display:inline-flex;align-items:center;gap:8px;white-space:nowrap}              /* el selector de orden y su flecha, siempre juntos */
.est-fechas{margin-top:6px;align-items:center}
.est-fechas input[type=date]{font:inherit;padding:5px 8px;border:1px solid var(--linea);border-radius:var(--radio-s);background:var(--superficie);color:var(--texto)}
.c-notas{min-width:190px;max-width:280px}
.nota-est{font-size:12px;line-height:1.35;margin:0 0 4px;overflow-wrap:anywhere}
.btn.chico{padding:2px 10px;font-size:12px}
.campo textarea{display:block;width:100%;font:inherit;background:var(--superficie);border:1px solid var(--linea);border-radius:var(--radio-s);padding:6px 8px;resize:vertical;color:var(--texto)}
.nota-item{border-top:1px solid var(--linea);padding:8px 0}
.nota-texto{white-space:pre-wrap;overflow-wrap:anywhere;margin:2px 0}
.acc-nota{display:flex;gap:4px}
.nota-form{margin:8px 0}
.nota-form.nueva{border-top:1px solid var(--linea);padding-top:6px}
table{width:100%;border-collapse:collapse;background:var(--superficie)}   /* las tablas, siempre sobre blanco para leer bien */
th{background:var(--calido);text-align:left;color:var(--tinta);font-weight:bold;font-size:14px;border-bottom:2px solid var(--linea);padding:6px 8px}
td{padding:8px;border-bottom:1px solid var(--linea);vertical-align:top}
.chip{display:inline-flex;gap:6px;align-items:center;background:var(--ficha);border-radius:12px;padding:2px 4px 2px 10px;margin:0 6px 4px 0;font-size:13px}
.chip button{background:none;border:0;color:var(--suave);padding:0 6px;font-size:14px}
.etiqueta{display:inline-block;padding:1px 8px;border-radius:10px;font-size:12px;background:var(--ficha);color:var(--suave)}
.etiqueta.entra{background:var(--ok);color:var(--texto)}
.etiqueta.baja,.etiqueta.sale{background:var(--alertaFondo);color:var(--alerta)}
.etiqueta.sin{background:var(--aviso);color:var(--texto)}
.filtros{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:10px}
.filtros button[aria-pressed=true]{background:var(--acento);color:var(--acentoTexto);border-color:var(--acento)}
.cambio{border:1px solid var(--linea);border-radius:var(--radio);padding:10px 12px;margin-bottom:8px;background:var(--superficie);display:grid;grid-template-columns:1fr auto;gap:8px;align-items:center}
.cambio .quien{font-weight:bold}
.cambio .detalle{color:var(--suave)}
.panel{background:var(--superficie);border:1px solid var(--linea);border-radius:var(--radio);padding:12px 14px;margin-bottom:12px}
.fondo{position:fixed;inset:0;background:rgba(0,0,0,.45);display:flex;align-items:center;justify-content:center;z-index:40;padding:14px}
.modal{background:var(--superficie);border-radius:var(--radio);padding:16px 18px;max-width:460px;width:100%;max-height:90vh;overflow:auto}
.modal.ancho{max-width:640px}
.modal h3{margin:0 0 10px;color:var(--tinta)}
.campo{display:block;margin:10px 0}
.campo>span{display:block;color:var(--suave);font-size:12px;margin-bottom:3px}
.campo select,.campo input[type=text],.campo input[type=date],.campo input[type=time],.campo input[type=number],.campo input[type=email]{width:100%}
.dias{display:flex;gap:6px;flex-wrap:wrap}
.dias label{display:flex;gap:4px;align-items:center;border:1px solid var(--linea);border-radius:var(--radio-s);padding:4px 8px}
.acciones{display:flex;gap:8px;justify-content:flex-end;margin-top:14px}
.aviso-in{background:var(--aviso);padding:6px 10px;border-radius:var(--radio-s);margin-top:8px}
.leyenda{display:flex;flex-wrap:wrap;gap:6px 12px;margin:14px 0 0}
.leyenda span{display:inline-flex;gap:6px;align-items:center;font-size:12px;color:var(--suave)}
.aparte{color:var(--suave);font-size:12px}
.resultados button{display:block;width:100%;text-align:left;background:none;border:0;padding:6px 8px;border-radius:var(--radio-s)}
.resultados button:hover{background:var(--ficha)}
.tostada{position:fixed;left:50%;bottom:18px;transform:translateX(-50%);background:var(--tinta);color:#ffffff;padding:9px 16px;border-radius:var(--radio-s);z-index:60;max-width:90vw}
.tostada.error{background:var(--alerta);color:#fff}
.entrada{max-width:420px;margin:10vh auto 0;padding:28px 26px;background:var(--superficie);border:1px solid var(--linea);border-radius:18px;box-shadow:0 6px 24px rgba(120,80,20,.10)}
.entrada .logo{height:48px;margin:0 auto 14px}
.entrada .logo-texto{display:table;margin:0 auto 14px}
.entrada h1{font-size:22px;color:var(--tinta);margin:0 0 8px;text-align:center}
.entrada p{color:var(--suave)}
.entrada input[type=email]{width:100%;padding:10px}
.entrada .btn{width:100%;padding:10px;margin-top:10px}
@media (max-width:760px){
  .clase{grid-template-columns:1fr}
  .total{text-align:left}
  .franja{grid-template-columns:1fr}
}

/* tabla de casillas del día */
.tabla-envoltura{border:1px solid var(--linea);border-radius:var(--radio);overflow-x:auto;overflow-y:hidden;margin-bottom:6px;background:var(--superficie)}
.tabla-envoltura tbody tr:last-child td{border-bottom:0}
.dia-tabla{min-width:860px;table-layout:fixed;border:0;margin-bottom:-1px}
.dia-tabla thead th{border-top:0}
.dia-tabla th:first-child,.dia-tabla .c-hora{border-left:0}
.dia-tabla th:last-child,.dia-tabla .c-total{border-right:0}
.dia-tabla tr.sec td{border-left:0;border-right:0}
.dia-tabla th{background:var(--calido);color:var(--tinta);text-align:center;font-size:14px;font-weight:bold;border:1px solid var(--linea);padding:6px 4px}
.dia-tabla td{border:1px solid var(--linea);padding:4px 6px;vertical-align:middle}
.dia-tabla tr.sec td{background:var(--calido);font-weight:bold;color:var(--tinta);text-align:left}
.c-hora{text-align:center;font-weight:bold;color:var(--tinta);background:var(--superficie);font-size:14px}
.c-nivel{text-align:center;position:relative;padding-right:28px!important}
.c-nivel .nivel{display:inline-block;max-width:100%;white-space:normal;line-height:1.25}
.c-nivel .mas{position:absolute;right:2px;top:50%;transform:translateY(-50%)}
.c-profe,.c-aula{text-align:center}
.profe-meet{color:inherit;text-decoration:underline dotted;text-underline-offset:3px}
.profe-meet::after{content:" \2197";font-size:.85em;opacity:.7}
.profe-meet:hover,.profe-meet:focus-visible{text-decoration-style:solid}
.btn.btn-meet,.btn.btn-meet:visited{display:inline-flex;align-items:center;text-decoration:none;color:inherit}
.c-alumnos{padding:3px!important}
.c-total{text-align:center;color:var(--texto);font-size:14px}
.c-total.llena{background:var(--alertaFondo);color:var(--alerta);font-weight:bold}
.dia-tabla td.aviso{background:#fff0c2;color:#5c4400;font-weight:bold}
.alerta-i{color:#b26a00}
.dia-tabla td.cambio-dia{background:#fff2a8;font-weight:bold}
.etq-fin{display:inline-block;margin-left:6px;padding:0 5px;border-radius:5px;background:#ececec;color:#33373D;font-size:11px;font-weight:bold;vertical-align:middle}
.etq-dia{display:inline-block;margin-left:6px;padding:0 5px;border-radius:5px;background:#fff2a8;color:#5c4400;font-size:11px;font-weight:bold;text-transform:uppercase;vertical-align:middle}
.dia-tabla .fichas{gap:3px}
.dia-tabla .ficha{width:auto;max-width:100%;padding:4px 9px;line-height:1.25}
.ficha[draggable=true]{cursor:grab}
.ficha.arrastrando{opacity:.4}
.dia-tabla tr.destino-arrastre{outline:2px dashed var(--acento);outline-offset:-2px}
.dia-tabla tr.destino-arrastre td{background:#FFF3E0!important}
.avisos-dia{background:#fff0c2;color:#4d3900;border:1px solid #e6c36a;border-radius:var(--radio);padding:8px 12px;margin:0 0 10px}
.avisos-dia ul{margin:4px 0 0 18px;padding:0}
.dia-bloque{border:1px solid var(--linea);border-radius:var(--radio);margin-bottom:12px;background:var(--superficie)}
.dia-bloque summary{cursor:pointer;padding:10px 14px;font-size:16px;color:var(--tinta);font-weight:bold;list-style:none;background:var(--calido);border-radius:var(--radio)}
.as-filtros{display:flex;gap:6px 18px;flex-wrap:wrap;margin:8px 0 2px}
.as-filtros label{display:inline-flex;gap:6px;align-items:center}
.lista-clases{max-height:270px;overflow:auto;border:1px solid var(--linea);border-radius:var(--radio);background:var(--superficie);margin-top:6px}
.oc-seccion{position:sticky;top:0;z-index:2;background:var(--tinta);color:#ffffff;font-weight:bold;padding:4px 10px;font-size:13px}
.oc-hora{background:var(--calido);color:var(--tinta);font-weight:bold;padding:3px 10px;font-size:13px;border-bottom:1px solid var(--linea)}
.opcion-clase{display:flex;align-items:center;gap:10px;width:100%;text-align:left;background:var(--superficie);border:0;border-bottom:1px solid var(--linea);padding:6px 10px}
.opcion-clase:hover{background:var(--calido)}
.opcion-clase[aria-pressed=true]{background:#fff2a8;box-shadow:inset 4px 0 0 var(--acento);font-weight:bold}
.opcion-clase.ya{opacity:.5;cursor:not-allowed}
.opcion-clase .nivel{min-width:66px}
.oc-prof{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.oc-meta,.oc-n{color:var(--suave);font-size:12px;white-space:nowrap}
.oc-n{min-width:74px;text-align:right}
.lista-clases [hidden]{display:none}
.dia-bloque summary::-webkit-details-marker{display:none}
.dia-bloque summary::before{content:'▾ ';color:var(--suave)}
.dia-bloque:not([open]) summary::before{content:'▸ '}
.dia-cuerpo{padding:0 12px 10px}

.version{font-size:11px;font-weight:normal;color:var(--suave);margin-left:6px}

.con-aviso{padding-top:46px}
.aviso-version{position:fixed;top:0;left:0;right:0;z-index:60;background:#fff0c2;color:#4d3900;border-bottom:2px solid #e6c36a;padding:8px 14px;text-align:center}

.panel.peligro{border-color:#d9858f;background:#fff4f5}
.btn.peligro{background:#b00020;color:#fff;border-color:#b00020}
.btn.peligro[disabled]{opacity:.4;cursor:not-allowed}

.etq-ficha{display:inline-block;margin-left:4px;padding:0 5px;border-radius:5px;background:#ececec;color:#33373D;font-size:11px;font-weight:normal;vertical-align:middle}
.tabla-ff th,.tabla-ff td{padding:6px 10px;text-align:left;vertical-align:top}
.tabla-ff tbody th{font-weight:bold;white-space:nowrap}
.dup{border:1px solid var(--linea);border-radius:var(--radio);padding:10px 12px;margin:8px 0;background:var(--superficie)}
.dup-f{display:flex;gap:12px;align-items:center;justify-content:space-between;flex-wrap:wrap;padding:6px 0;border-top:1px solid var(--linea)}
.dup-f:first-of-type{border-top:0}

.op-hecha-atras td{opacity:.6}
.op-detalle td{background:var(--fondo)}
.op-lineas{margin:4px 0 8px 18px;padding:0;font-size:13px}
.enlace{background:none;border:0;padding:0;color:var(--texto);text-decoration:underline;cursor:pointer;font:inherit;font-size:12px}

.etq-dup{background:#ffe3a8;color:#4d3900;border:0;cursor:pointer;font:inherit;font-size:11px;font-weight:bold}

.acc-fila{white-space:nowrap}

/* mientras carga: una barra fina arriba (solo si tarda más de 0,2 s, para que no parpadee) y el contenido algo apagado */
body.cargando::after{content:"";position:fixed;top:0;left:-30%;width:30%;height:4px;background:var(--acento);z-index:70;opacity:0;animation:cargando 1.1s ease-in-out .2s infinite}
@keyframes cargando{0%{left:-30%;opacity:1}100%{left:100%;opacity:1}}
body.cargando #cuerpo{opacity:.6;transition:opacity .2s .25s}
.divisor-fila td{background:var(--acentoSuave);color:#282828;font-size:13px;padding:8px 12px;border-top:2px solid var(--acento)}

.alta-prof{display:flex;gap:10px;margin:0 0 14px;flex-wrap:wrap}
.alta-prof input{flex:1 1 240px;min-width:0;padding:9px 12px;border:1px solid var(--linea);border-radius:var(--radio-s);font:inherit;background:var(--superficie);color:var(--tinta)}
.etq-baja{background:#F8D7DA;color:#6B1D24}

.planilla th.hd, .planilla td.hd{text-align:center;white-space:nowrap;min-width:64px}
.planilla th.festivo{background:var(--calido)}
.planilla td.total-prof{white-space:nowrap;text-align:right}
.planilla .c-prof{min-width:230px}
.prof-clases{font-size:12px;margin-top:3px;line-height:1.4}
.planilla .fila-total td{font-weight:700;border-top:2px solid var(--linea);background:var(--ficha)}
.planilla tr.fuera-lista td{background:var(--ficha)}

.orden-est{display:inline-flex;align-items:center;gap:6px;margin-left:8px}
.orden-est select{padding:7px 10px;border:1px solid var(--linea);border-radius:var(--radio-s);background:var(--superficie);color:var(--tinta);font:inherit}

/* añadir un estudiante a una clase */
.lista-est{max-height:40vh;overflow:auto;border:1px solid var(--linea);border-radius:var(--radio-s);margin:6px 0 12px;background:var(--superficie)}
.opcion-est{display:flex;gap:12px;align-items:baseline;width:100%;text-align:left;padding:8px 12px;border:0;border-bottom:1px solid var(--linea);background:var(--superficie);color:var(--tinta);font:inherit;cursor:pointer}
.opcion-est:hover{background:var(--ficha)}
.opcion-est.sel{background:var(--calido);box-shadow:inset 3px 0 0 var(--acento)}
.opcion-est.ya{opacity:.55;cursor:not-allowed}
.oe-nombre{font-weight:600;flex:1 1 auto}
.oe-meta,.oe-n{font-size:12px;white-space:nowrap}
.divisor-lista{background:var(--calido);color:var(--tinta);font-size:12px;font-weight:700;padding:6px 12px;border-bottom:1px solid var(--linea)}
.alcance{display:block;padding:5px 0;cursor:pointer}
.alcance.no{opacity:.6;cursor:not-allowed}

.enlace-excel{display:inline-flex;align-items:center;margin-left:auto;text-decoration:none}

/* «5/8» en cada clase */
.c-total.limite{background:#fff1d6;color:#8a5200;font-weight:bold}
.c-total.sobrepasada{background:#b00020;color:#fff}
.c-total{white-space:nowrap}
/* Estadísticas */
.subpestanas{display:flex;flex-wrap:wrap;gap:6px;margin:8px 0}
.subpestanas .btn.activo{background:#1d3557;color:#fff;border-color:#1d3557}
.est-form{background:#fff;border:1px solid #e5e0d8;border-radius:10px;padding:12px 14px;margin:10px 0 14px}
.est-fechas{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.est-fechas label{display:flex;gap:6px;align-items:center}
.est-atajos{display:flex;flex-wrap:wrap;gap:6px;margin-left:auto}
.est-nota{margin:8px 0 0}
.est-horario{display:flex;flex-wrap:wrap;gap:10px;align-items:center}
.est-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px;margin:10px 0}
.est-card{background:#fff;border:1px solid #e5e0d8;border-radius:10px;padding:10px 12px}
.est-valor{font-size:1.5rem;font-weight:700;color:#1d3557}
.est-texto{color:#555;font-size:.9rem}
.est-tabla{border-collapse:collapse;width:100%}
.est-tabla th,.est-tabla td{padding:5px 9px;border-bottom:1px solid #eee;text-align:left;white-space:nowrap}
.est-tabla input[type=number]{width:6.5em}
.barra-uso{display:inline-block;vertical-align:middle;width:70px;height:8px;background:#eee;border-radius:999px;margin-right:6px;overflow:hidden}
.barra-uso-r{height:100%;background:var(--acento)}
.mapa-calor td.calor{text-align:center;min-width:3.2em}
.xl-clase{background:#fff;border:1px solid #e5e0d8;border-radius:10px;padding:10px 12px;margin:10px 0}
.xl-cab{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin-bottom:6px}
.xl-acc{margin-left:auto;display:flex;gap:6px}
.xl-alumno{display:flex;flex-wrap:wrap;gap:12px;align-items:center;padding:4px 0;border-top:1px solid #f0ece4}
.xl-nombre{min-width:14em;font-weight:600}
.c-total.sin-aforo{cursor:pointer}
.falta-aforo{color:#8a5200;font-weight:bold}
.est-excel{margin:8px 0}
.c-total.no-se-da{color:#777;font-style:italic;font-size:.82em;white-space:normal}
.c-etq{display:block;font-size:12px;line-height:1.2;font-weight:bold}
/* Los botones que descargan un Excel van en verde Excel, con letra blanca */
.btn.enlace-excel{background:#1D6F42;color:#fff;border-color:#1D6F42;font-weight:bold}
.btn.enlace-excel:hover{background:#185C37;border-color:#185C37;color:#fff}
/* Tema de la página */
.tema-auto,.tema-est{display:flex;gap:10px;align-items:center;width:100%;text-align:left;padding:8px 10px;border:2px solid var(--linea);border-radius:var(--radio-s);background:#fff;cursor:pointer}
.tema-auto{margin:8px 0 4px}
.tema-auto.elegido,.tema-est.elegido,.tema-muestra.elegido{border-color:var(--tinta);box-shadow:0 0 0 2px var(--acento)}
.tema-fila{display:flex;align-items:center;gap:8px;margin:6px 0}
.tema-nombre{width:150px}
.tema-muestra{width:46px;height:30px;padding:0;display:inline-flex;overflow:hidden;border:2px solid var(--linea);border-radius:var(--radio-s);background:#fff;cursor:pointer}
.tema-muestra span,.tema-par span{flex:1}
.tema-par{display:inline-flex;width:38px;height:24px;overflow:hidden;border:1px solid var(--linea);border-radius:var(--radio-s);flex:none}
.tema-par.franjas{flex-direction:column}
.tema-est-lista{display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:8px}
.modal.tema{max-width:560px}
.modal.tema h4{margin:16px 0 4px}
/* Ayuda: el cuadro de preguntas frecuentes de abajo a la derecha */
.ayuda{position:fixed;right:16px;bottom:16px;z-index:30;font-size:14px}
.ayuda-boton{display:inline-flex;align-items:center;gap:8px;background:var(--acento);color:var(--acentoTexto);border:0;border-radius:20px;padding:9px 16px;font-weight:bold;box-shadow:0 2px 10px rgba(0,0,0,.25)}
.ayuda-boton:hover{background:var(--acentoHover)}
.ayuda-boton span{display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;border-radius:50%;background:var(--acentoTexto);color:var(--acento);font-size:13px;line-height:1}
.ayuda-panel{display:flex;flex-direction:column;width:340px;max-width:calc(100vw - 24px);max-height:calc(100vh - 90px);background:var(--superficie);border:1px solid var(--linea);border-radius:var(--radio);box-shadow:0 6px 24px rgba(0,0,0,.28);overflow:hidden}
.ayuda-cab{display:flex;align-items:center;gap:8px;background:var(--acento);color:var(--acentoTexto);padding:8px 10px}
.ayuda-pag{flex:1;font-size:12px;opacity:.85;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ayuda-flecha{background:transparent;border:0;color:var(--acentoTexto);font-size:20px;line-height:1;padding:2px 8px;border-radius:var(--radio-s)}
.ayuda-flecha:hover{background:rgba(0,0,0,.12)}
.ayuda-cuerpo{overflow:auto;padding:10px;flex:1;min-height:80px}
.ayuda-burbuja{padding:8px 10px;border-radius:var(--radio-s);margin:6px 0;max-width:94%;line-height:1.4}
.ayuda-burbuja.bot{background:var(--ficha);color:var(--texto)}
.ayuda-burbuja.tuya{background:var(--calido);color:var(--tinta);margin-left:auto}
.ayuda-pregunta{display:block;width:100%;text-align:left;background:var(--superficie);border:1px solid var(--linea);border-radius:var(--radio-s);padding:8px 10px;margin:4px 0}
.ayuda-pregunta:hover{border-color:var(--acento);background:var(--calido)}
.ayuda-pregunta small{display:block;color:var(--suave);font-size:12px}
.ayuda-generales{margin-top:10px}
.ayuda-generales summary{cursor:pointer;color:var(--suave);padding:4px 0}
.ayuda-acciones{margin:8px 0}
.ayuda-busca{display:flex;gap:6px;padding:8px 10px;border-top:1px solid var(--linea)}
.ayuda-busca input{flex:1;min-width:0}
.ayuda-pie{padding:2px 10px 10px;font-size:13px;text-align:center}
@media (max-width:700px){.ayuda{right:8px;bottom:8px}}
@media print{.ayuda{display:none}}
/* Eliminar un aula */
.modal.aula-eliminar{max-width:520px}
.lista-aula{margin:6px 0 10px;padding-left:20px}
.lista-aula li{margin:3px 0}
/* Profesores: horas por mes y por año */
.mes-nav{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:10px 0}
.mes-nav strong{min-width:150px;text-align:center;font-size:18px}
.fila-desc td{background:var(--calido);font-size:13px}
/* Profesores: lo que dan frente a su contrato */
.dif{display:inline-block;padding:1px 9px;border-radius:999px;font-weight:bold;font-size:13px;white-space:nowrap}
.dif.ok{background:#dcf3df;color:#14532d}
.dif.menos{background:#ffe3d0;color:#7a2e00}
.dif.mas{background:#dbe8ff;color:#12306b}
.resumen-contrato{margin:8px 0}
.resumen-contrato .dif{margin-right:4px}
/* Buscador de estudiantes */
.buscador-est{flex:1 1 240px;min-width:min(360px,100%);max-width:380px;padding:8px 12px;border:1px solid var(--linea);border-radius:var(--radio-s);font-size:15px;background:#fff}
.buscador-est:focus{outline:2px solid var(--acento);outline-offset:1px}
.buscador-dia{flex:0 1 230px;min-width:150px;padding:6px 10px;border:1px solid var(--linea);border-radius:var(--radio-s);font-size:14px;background:var(--superficie);color:var(--texto)}        /* el buscador de Día y Semana, junto al selector de profesor */
.buscador-dia:focus{outline:2px solid var(--acento);outline-offset:1px}
.res-busqueda-dia{margin:0 0 8px}
.res-busqueda-dia .btn{margin-left:6px;padding:3px 10px}
.barra-clases{display:flex;flex-wrap:nowrap;gap:8px;align-items:stretch;margin:0 0 12px}                        /* en Día y Semana, todos los controles (profe, buscador, semana anterior/siguiente, nueva clase, festivo) en una sola fila */
.barra-clases>*{box-sizing:border-box;height:38px;margin:0}
.barra-clases select{flex:0 1 190px;min-width:0}
.barra-clases .buscador-dia{flex:1 1 140px;min-width:100px;max-width:none}                                   /* el buscador se estira para ocupar el hueco que queda */
.barra-clases .btn{flex:0 0 auto;white-space:nowrap;padding-top:0;padding-bottom:0}
@media (max-width:640px){.barra-clases{flex-wrap:wrap}.barra-clases>*{flex:1 1 auto}}                          /* en un móvil no cabe en una fila: ahí sí se reparten en varias */
.ficha.coincide{outline:3px solid var(--acento);outline-offset:1px;font-weight:700}            /* quien se ha buscado, resaltado dentro de su clase (con contorno: el borde de algunos estados va en línea y pisaría una sombra) */
.res-busqueda{margin:8px 0}
/* Ayuda: escribir una duda a frontdesk dentro del cuadro */
.ayuda-duda textarea{display:block;width:100%;box-sizing:border-box;min-height:120px;resize:vertical;padding:8px 10px;border:1px solid var(--linea);border-radius:var(--radio-s);font:inherit;background:var(--superficie);color:var(--texto)}
.ayuda-duda textarea:focus{outline:2px solid var(--acento);outline-offset:1px}
.ayuda-duda textarea:disabled{opacity:.7}
.ayuda-pie .enlace{font-size:13px}
/* Correo de cada profesor */
.prof-correo{font-size:13px;margin-top:2px}
.chk-prof{display:inline-flex;align-items:center;gap:6px;margin:6px 0}
.alta-prof .chk-prof{margin:0;align-self:center}
.alta-prof input[type=checkbox]{flex:none;min-width:0;padding:0}
.sobra{color:#7a2e00;font-weight:bold}
/* Correos a los estudiantes */
.co-bloque{border:1px solid var(--linea);border-radius:var(--radio);padding:14px 16px;margin:12px 0;background:var(--superficie)}
.co-bloque h3{margin:0 0 8px}
.co-html{width:100%;box-sizing:border-box;min-height:200px;resize:vertical;padding:8px 10px;border:1px solid var(--linea);border-radius:var(--radio-s);font:13px/1.4 ui-monospace,Menlo,Consolas,monospace;background:var(--superficie);color:var(--tinta)}
.co-vista{display:block;width:100%;height:380px;border:1px solid var(--linea);border-radius:var(--radio-s);background:#fff}
.co-acciones,.co-ajustes{display:flex;gap:10px;flex-wrap:wrap;align-items:flex-end;margin:12px 0}
.co-fila{display:flex;gap:14px;align-items:flex-end;flex-wrap:wrap}
.co-plantillas{margin:0 0 8px}
.co-ok{background:var(--ok)}
.co-lista{margin:8px 0}.co-lista summary{cursor:pointer}.co-lista ul{margin:6px 0;padding-left:20px;max-height:240px;overflow:auto}
.co-checks{display:flex;flex-direction:column;gap:4px;margin:6px 0;max-height:260px;overflow:auto;padding:6px 8px;border:1px solid var(--linea);border-radius:var(--radio-s)}
.co-check{display:flex;gap:8px;align-items:flex-start;cursor:pointer;padding:2px 0}
.co-ver-lista{margin:8px 0 4px}
.co-personas{list-style:none;padding-left:0!important;margin:6px 0 12px;max-height:300px;overflow-y:auto;overflow-x:hidden;border:1px solid var(--linea);border-radius:var(--radio-s)}
.co-persona{padding:3px 4px;border-bottom:1px solid var(--linea)}.co-persona label{cursor:pointer;display:block}
.co-omitida{opacity:.55;text-decoration:line-through}.co-omitida .aparte,.co-omitida .etq-ficha{text-decoration:none}
.co-mano .co-quitar{margin-left:8px;padding:1px 8px;font-size:.85em}
.co-extra{margin:10px 0 0;padding-top:8px;border-top:1px dashed var(--linea)}
.co-confirma{display:grid;grid-template-columns:auto 1fr;gap:4px 14px;margin:10px 0}.co-confirma dt{font-weight:bold}.co-confirma dd{margin:0}
.co-fallo{color:#7f1d1d;font-weight:bold}
.co-enviado,.co-terminado{background:#e6f4ea;color:#14532d}
.co-error,.co-cancelado{background:#fde8e8;color:#7f1d1d}
.co-incierto,.co-pausado{background:#fff1d6;color:#7a4a00}
.co-enviando,.co-en_cola,.co-pendiente{background:#e8f0fb;color:#1d3557}
.campo.corto{display:inline-block;min-width:120px}
.co-texto{width:100%;box-sizing:border-box;min-height:180px;resize:vertical;padding:10px 12px;border:1px solid var(--linea);border-radius:var(--radio-s);font:15px/1.5 inherit;background:var(--superficie);color:var(--tinta)}
.co-formato{align-items:center;margin:0 0 6px}
.co-ritmo select{min-width:190px}
/* Editar una clase: aula y profesor, ¿para qué días? */
.ec-alcance{display:flex;flex-wrap:wrap;gap:4px 12px;align-items:center;margin:-4px 0 10px}
.ec-alcance label{display:inline-flex;align-items:center;gap:4px}
/* Asignar varias clases a la vez */
.as-elegidas{display:grid;gap:8px;margin-top:6px}
.as-card{border:1px solid var(--linea);border-radius:var(--radio);background:var(--superficie);padding:8px 10px}
.as-card-cab{display:flex;align-items:center;gap:10px;margin-bottom:6px}
.as-card-cab .nivel{min-width:66px}
.as-card-cab .btn-quitar{margin-left:auto}
.as-card .aparte{margin-top:6px}

/* ---------- Recuperaciones pendientes ---------- */
.rec-est{border:1px solid var(--linea);border-radius:var(--radio);padding:10px 14px;margin:10px 0;background:var(--superficie)}
.rec-cab{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.rec-cab .btn{margin-left:auto}
.rec-pend{margin:6px 0 0;padding-left:20px}.rec-pend li{padding:1px 0}


/* ---------- Agencias (0.1.0) ---------- */
.modal.ancha{max-width:780px}
.fila-cancelada td{background:#f9dcdc;color:#8a2020}
.fila-cancelada .nombre-est{text-decoration:line-through}
.fila-click{cursor:pointer}
.fila-click:hover td{filter:brightness(.97)}
td.eur,th.eur{text-align:right;white-space:nowrap;font-variant-numeric:tabular-nums}
.chip-est{display:inline-block;padding:0 6px;border-radius:6px;font-size:11px;background:#ececec;color:#33373D;white-space:nowrap}
.chip-est.venir{background:#dbe8fb}.chip-est.curso{background:#d9f0dc}.chip-est.fin{background:#ececec}.chip-est.canc{background:#f4b9b9;color:#7a1818}
.chip-est.rev{background:#fff0c2;color:#6b4e00}.chip-est.mano{background:#e6dcf7}.chip-est.aviso{background:#ffd9b8}
.filtros-est{display:flex;flex-wrap:wrap;gap:10px 14px;align-items:end}
.filtros-est .campo-linea{display:flex;flex-direction:column;gap:2px;font-size:12px}
.filtros-est input[type=search]{min-width:230px}
.tot-fila td{background:var(--superficie2,#eef2f6);font-weight:bold}
.desglose td{padding:4px 8px}.desglose .sub td{color:#666;font-size:12px;padding-top:0}
.desglose .tot td{border-top:2px solid var(--linea);font-weight:bold}
.form-aj{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:2px 12px}
.form-aj .campo{margin:6px 0}.form-aj input,.form-aj select{width:100%}
.extra-fila{display:flex;gap:6px;margin:4px 0}.extra-fila input[type=text]{flex:1}.extra-fila input[type=number]{width:110px}
.aviso-tipo{margin:14px 0 6px}
.aviso-item{display:flex;gap:10px;justify-content:space-between;align-items:center;flex-wrap:wrap}
.aviso-item.cancel{border-left:4px solid #d64545}.aviso-item.renov{border-left:4px solid #3b7fd4}.aviso-item.reac{border-left:4px solid #3aa35a}
.tarifa-tabla td,.tarifa-tabla th{padding:4px 8px;text-align:left}.tarifa-tabla input{width:90px}
.badge{display:inline-block;margin-left:5px;padding:0 6px;border-radius:9px;background:var(--acento);color:var(--acentoTexto);font-size:11px}
.ag-resumen{display:flex;gap:10px;flex-wrap:wrap;margin:8px 0}

/* ---------- Lista de estancias: cabecera fija, color por agencia y servicios con formato (0.1.2) ---------- */
.rejilla-est{margin-bottom:8px}                                   /* sin recorte ni scroll propio: así la cabecera se queda fija al bajar la página */
@media (max-width:1180px){.rejilla-est{overflow-x:auto}}
.pagina:has(.rejilla-est){max-width:1560px}
.tabla-est{width:100%;min-width:1120px;border-collapse:separate;border-spacing:0;table-layout:fixed}
.tabla-est th,.tabla-est td{padding:8px 10px;vertical-align:top;border-bottom:1px solid #ebe6db;text-align:left}
.tabla-est thead th{position:sticky;z-index:6;background:#fff}
.tabla-est .cab-grupos th{top:0;padding:5px 10px;border-bottom:0;font-size:11px;letter-spacing:.07em;text-transform:uppercase;color:#fff;border-left:2px solid #fff}
.tabla-est .cab-grupos .cab-est{background:#1E3A52;font-size:12px;vertical-align:middle;border-left:0}
.tabla-est .cab-grupos .cab-est{border-top-left-radius:10px}.tabla-est .cab-grupos .g-imp{border-top-right-radius:10px}
.tabla-est .tot-fila td:first-child{border-bottom-left-radius:10px}.tabla-est .tot-fila td:last-child{border-bottom-right-radius:10px}
.tabla-est .cab-grupos .g-fechas{background:#6b7a8a}.tabla-est .cab-grupos .g-serv{background:#2f6f9f}.tabla-est .cab-grupos .g-imp{background:#1E3A52}
.tabla-est .cab-cols th{top:26px;font-size:12px;font-weight:700;color:#2b3340;border-bottom:2px solid #c9c2b2;box-shadow:0 3px 4px -2px rgba(0,0,0,.18)}
.tabla-est .cab-cols .s-fechas{background:#eef1f4}.tabla-est .cab-cols .s-clases{background:#dbe9fb}.tabla-est .cab-cols .s-aloj{background:#d9f0e0}.tabla-est .cab-cols .s-tras{background:#fde4c8}.tabla-est .cab-cols .s-otros{background:#e9ddf8}.tabla-est .cab-cols .s-imp{background:#e3e9ef;text-align:right}
.tabla-est .cab-cols th:nth-child(1),.tabla-est .cab-cols th:nth-child(3),.tabla-est .cab-cols th:nth-child(7){border-left:2px solid #b9b2a2}
.tabla-est td:nth-child(2),.tabla-est td:nth-child(4),.tabla-est td:nth-child(8){border-left:2px solid #d3ccbc}
.tabla-est td:nth-child(5),.tabla-est td:nth-child(6),.tabla-est td:nth-child(7){border-left:1px dashed #ded8ca}
.tabla-est .tot-fila td{background:#eef2f6;font-weight:700;border-top:2px solid #b9b2a2}
.tabla-est .tot-fila td.eur{text-align:right}
.sep-grupo td{height:14px;padding:0;border:0;background:#f4efe6}
.grupo-ag td{padding:0;border:0;background:#fff}
.grupo-ag .banda{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:10px 12px;cursor:pointer;color:hsl(var(--h) 55% 18%);background:hsl(var(--h) 62% 90%);border-left:10px solid hsl(var(--h) 55% 40%);border-top:1px solid hsl(var(--h) 40% 76%);border-bottom:1px solid hsl(var(--h) 40% 76%)}
.grupo-ag:hover .banda{background:hsl(var(--h) 62% 86%)}
.banda .caret{width:16px;font-size:14px}
.banda-nombre{font-size:16px;font-weight:700;margin-right:4px}
.chip-ag{background:#fff;border:1px solid hsl(var(--h) 40% 68%);border-radius:999px;padding:1px 10px;font-size:12px;color:hsl(var(--h) 50% 22%);white-space:nowrap}
.banda-tot{margin-left:auto;font-size:13px;font-variant-numeric:tabular-nums}
.fila-est td:first-child{border-left:10px solid hsl(var(--h) 55% 55%)}
.fila-est:hover td{background:hsl(var(--h) 60% 97%)}
.fila-cancelada:hover td{background:#f6cfcf}
.nombre-est{font-weight:700;font-size:14px;margin-bottom:2px}
.c-est .sv-linea{margin:2px 0}
.c-fecha{white-space:nowrap;font-variant-numeric:tabular-nums}
.chip-sv{display:inline-block;padding:1px 8px;border-radius:6px;font-size:11.5px;font-weight:700;white-space:nowrap}
.chip-sv.clases{background:#dbe9fb;color:#1d4f91}.chip-sv.aloj{background:#d9f0e0;color:#1f6b3a}.chip-sv.tras{background:#fde4c8;color:#8a4b00}
.chip-sv.otros{background:#e9ddf8;color:#5b2d91}.chip-sv.dto{background:#fff0c2;color:#6b4e00}.chip-sv.com{background:#e3e9ef;color:#33414f}
.sv-linea{display:flex;gap:5px;flex-wrap:wrap;align-items:center}.sv-linea.fin{justify-content:flex-end}
.sv-importe{font-weight:700;font-variant-numeric:tabular-nums;margin-top:3px}
.sv-sub{font-size:11.5px;color:#6a6f78;margin-top:1px}
.sv-imp-peq{font-size:12.5px;font-variant-numeric:tabular-nums}
.sv-vacio{color:#c7c1b4}
.tabla-est td.c-imp,.tabla-est td.eur{text-align:right;white-space:nowrap}
.c-total{font-weight:800;font-size:15px;font-variant-numeric:tabular-nums}
.barra-grupos{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin:0 0 8px}
.punto-ag{display:inline-block;width:11px;height:11px;border-radius:3px;margin-right:7px;background:hsl(var(--h) 55% 48%);vertical-align:-1px}

.tabla-est td.c-fecha{padding-left:8px;padding-right:6px}
