/* Promo 66 · colores de la promoción: fucsia, rosado y beige */
:root{
  --fucsia:#B22657; --fucsia-osc:#8E1C45; --fucsia-viva:#D63A78;
  --rosado:#F4B9CD; --rosado-claro:#FBE6EE;
  --beige:#F4ECE1; --beige-osc:#E8DCCB; --crema:#FFFCF8;
  --texto:#3B2530; --suave:#8A7480;
  --verde:#2E8B66; --verde-cl:#E2F3EA;
  --ambar:#B7791F; --ambar-cl:#FBEFD9;
  --rojo:#C2413B; --rojo-cl:#FBE3E1;
  --sombra:0 1px 0 var(--beige-osc),0 6px 20px rgba(142,28,69,.06);
}
*{box-sizing:border-box;margin:0;padding:0}
html{-webkit-text-size-adjust:100%}
body{font-family:"Plus Jakarta Sans",system-ui,-apple-system,"Segoe UI",sans-serif;color:var(--texto);background:var(--beige);font-size:14.5px;line-height:1.45}
a{color:var(--fucsia)}
img{max-width:100%}
.oculto{display:none!important}

/* ---------- estructura */
.marco{display:flex;min-height:100vh}
.lado{width:248px;background:linear-gradient(180deg,var(--fucsia) 0%,var(--fucsia-osc) 100%);color:#fff;padding:26px 18px;display:flex;flex-direction:column;gap:4px;flex-shrink:0;position:sticky;top:0;height:100vh;overflow-y:auto}
.marca{display:flex;align-items:center;gap:12px;margin:0 6px 24px;color:#fff;text-decoration:none}
.marca img{width:50px}
.marca b{display:block;font-size:19px;font-weight:800}
.marca small{font-size:11.5px;opacity:.85;line-height:1.3;display:block}
.menu{display:flex;flex-direction:column;gap:3px}
.menu a{display:flex;align-items:center;gap:12px;padding:10px 14px;border-radius:12px;color:#fff;text-decoration:none;font-size:14.5px;font-weight:500;opacity:.88;white-space:nowrap}
.menu a:hover{background:rgba(255,255,255,.1);opacity:1}
.menu a.on{background:rgba(255,255,255,.18);opacity:1;font-weight:700}
.menu .ic{width:20px;text-align:center;font-size:16px}
.menu .chip{margin-left:auto;background:#fff;color:var(--fucsia);font-size:11px;font-weight:800;padding:2px 8px;border-radius:20px}
.menu .pend{margin-left:auto;font-size:10px;font-weight:700;background:rgba(255,255,255,.2);padding:2px 7px;border-radius:20px}
.lado .pie{margin-top:auto;font-size:12px;padding:14px 8px 0;border-top:1px solid rgba(255,255,255,.2)}
.lado .pie b{display:block;font-size:13.5px}
.lado .pie a,.lado .pie button{color:#fff;opacity:.85;font-size:12px;background:none;border:0;font:inherit;cursor:pointer;text-decoration:underline;padding:0}
.lado .pie .enl-pie{display:flex;gap:12px;margin-top:8px;flex-wrap:wrap}

.cuerpo{flex:1;padding:28px 34px 50px;display:flex;flex-direction:column;gap:20px;min-width:0}
.tope{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;flex-wrap:wrap}
.tope h1{font-size:26px;font-weight:800;line-height:1.2}
.tope p{color:var(--suave);font-size:13.5px;margin-top:3px}
.acciones{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.migas{font-size:13px;color:var(--suave);margin-bottom:-8px}
.migas a{text-decoration:none;font-weight:600}

/* ---------- avisos */
.aviso{border-radius:14px;padding:13px 16px;font-size:14px;display:flex;gap:10px;align-items:flex-start}
.aviso.ok{background:var(--verde-cl);color:#1f6b4d}
.aviso.error{background:var(--rojo-cl);color:#9b2f2a}
.aviso.info{background:var(--rosado-claro);color:var(--fucsia-osc)}
.aviso.ejemplo{background:var(--ambar-cl);color:#8a5a12}
.aviso a{font-weight:700;color:inherit}

/* ---------- botones */
.btn{background:var(--fucsia);color:#fff;border:0;border-radius:12px;padding:10px 17px;font:inherit;font-size:14px;font-weight:700;display:inline-flex;gap:8px;align-items:center;justify-content:center;text-decoration:none;cursor:pointer;white-space:nowrap;line-height:1.2}
.btn:hover{background:var(--fucsia-osc)}
.btn.sec{background:var(--crema);color:var(--fucsia);border:1.5px solid var(--rosado)}
.btn.sec:hover{background:var(--rosado-claro)}
.btn.peligro{background:var(--crema);color:var(--rojo);border:1.5px solid #efc3bf}
.btn.peligro:hover{background:var(--rojo-cl)}
.btn.verde,.btn.verde:hover{background:var(--verde);color:#fff}
.btn.chico{padding:6px 11px;font-size:12.5px;border-radius:10px}
.btn.grande{width:100%;padding:15px;font-size:15.5px;border-radius:14px}
.btn[disabled]{opacity:.5;cursor:not-allowed}
.enl{color:var(--fucsia);font-weight:700;text-decoration:none;font-size:12.5px;display:inline-flex;gap:4px;align-items:center;cursor:pointer;background:none;border:0;font-family:inherit}
.enl:hover{text-decoration:underline}

/* ---------- tarjetas */
.tarjeta{background:var(--crema);border-radius:18px;padding:20px 22px;box-shadow:var(--sombra);min-width:0}
.tarjeta h3{font-size:15px;font-weight:700;margin-bottom:14px;display:flex;justify-content:space-between;align-items:center;gap:10px}
.tarjeta h3 small{font-weight:500;color:var(--suave);font-size:12.5px}
.fila{display:grid;gap:18px}
.f3{grid-template-columns:1fr 1.25fr 1fr}
.f2{grid-template-columns:1.6fr 1fr}
.f2b{grid-template-columns:1.55fr 1fr}
.f11{grid-template-columns:1fr 1fr}

/* ---------- indicadores */
.kpis{display:grid;grid-template-columns:repeat(6,1fr);gap:14px}
.kpis.k4{grid-template-columns:repeat(4,1fr)}
.kpi{background:var(--crema);border-radius:16px;padding:16px 16px 14px;box-shadow:0 1px 0 var(--beige-osc);position:relative;overflow:hidden}
.kpi::before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;background:var(--rosado)}
.kpi.dest{background:linear-gradient(135deg,var(--fucsia),var(--fucsia-viva));color:#fff}
.kpi.dest::before{display:none}
.kpi .t{font-size:12px;color:var(--suave);font-weight:600;line-height:1.3;min-height:31px}
.kpi.dest .t,.kpi.dest .s{color:rgba(255,255,255,.88)}
.kpi .v{font-size:25px;font-weight:800;margin-top:6px;letter-spacing:-.4px}
.kpi .s{font-size:11.5px;color:var(--suave);margin-top:4px}
.sube{color:var(--verde);font-weight:700}

.dona-caja{display:flex;align-items:center;gap:22px;flex-wrap:wrap}
.leyenda{display:flex;flex-direction:column;gap:14px;font-size:13.5px}
.leyenda div{display:flex;gap:10px;align-items:flex-start}
.leyenda i{width:12px;height:12px;border-radius:4px;margin-top:3px;flex-shrink:0}
.leyenda i.linea{height:4px;margin-top:8px}
.leyenda b{display:block;font-size:17px}

.barras{display:flex;align-items:flex-end;gap:10px;height:180px;padding-top:10px;border-bottom:1.5px solid var(--beige-osc);position:relative}
.barras .meta{position:absolute;left:0;right:0;border-top:2px dashed var(--rosado);font-size:11px;color:var(--fucsia);font-weight:700}
.barras .meta span{position:absolute;right:0;top:-19px;background:var(--crema);padding-left:6px}
.barra{flex:1;min-width:0;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;height:100%}
.barra div{width:100%;max-width:40px;border-radius:8px 8px 3px 3px;background:var(--fucsia);position:relative;min-height:3px}
.barra.actual div{background:var(--fucsia-viva)}
.barra.vacia div{background:var(--beige-osc)}
.barra div b{position:absolute;left:50%;top:26px;transform:translateX(-50%) rotate(-90deg);color:#fff;font-size:10.5px;white-space:nowrap}
.barra div.bajo b{color:var(--fucsia);top:-30px;transform:translateX(-50%) rotate(-90deg)}
.meses{display:flex;gap:10px;margin-top:8px}
.meses span{flex:1;text-align:center;font-size:12px;color:var(--suave);font-weight:600}

.lista{display:flex;flex-direction:column}
.lista .it{display:flex;align-items:center;gap:12px;padding:10px 0;border-bottom:1px solid var(--beige);text-decoration:none;color:inherit}
.lista .it:last-child{border:0}
a.it:hover .n{color:var(--fucsia)}
.av{width:34px;height:34px;border-radius:50%;background:var(--rosado-claro);color:var(--fucsia);display:flex;align-items:center;justify-content:center;font-weight:800;font-size:12.5px;flex-shrink:0}
.lista .n{font-size:13.5px;font-weight:600}
.lista .d{font-size:12px;color:var(--suave)}
.lista .m{margin-left:auto;font-weight:700;font-size:14px;text-align:right;white-space:nowrap}
.progreso{height:8px;background:var(--beige);border-radius:8px;margin-top:6px}
.progreso div{height:100%;background:var(--fucsia);border-radius:8px}

.et{display:inline-flex;align-items:center;gap:5px;font-size:11.5px;font-weight:700;padding:3px 9px;border-radius:20px;white-space:nowrap;text-decoration:none}
.et.ok{background:var(--verde-cl);color:var(--verde)}
.et.pen{background:var(--ambar-cl);color:var(--ambar)}
.et.no{background:var(--rojo-cl);color:var(--rojo)}
.et.ro{background:var(--rosado-claro);color:var(--fucsia)}
.et.gris{background:var(--beige);color:var(--suave)}

/* ---------- tablas */
.tabla{overflow-x:auto;-webkit-overflow-scrolling:touch}
table{width:100%;border-collapse:collapse;font-size:13px}
th{text-align:left;font-size:11.5px;color:var(--suave);font-weight:700;text-transform:uppercase;letter-spacing:.4px;padding:10px 8px;border-bottom:1.5px solid var(--beige-osc);white-space:nowrap}
td{padding:10px 8px;border-bottom:1px solid var(--beige);vertical-align:middle}
td.num,th.num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
tr.res td{font-weight:800;background:var(--rosado-claro);border:0}
tr.sel td{background:var(--rosado-claro)}
tr.anulado td{color:#b9a9b0;text-decoration:line-through}
tr.anulado td.nota-anul{text-decoration:none}
tr.clic{cursor:pointer}
tr.clic:hover td{background:#fff6f9}
td small,.chiquito{color:var(--suave);font-size:11.5px}
.vacio{padding:30px;text-align:center;color:var(--suave)}
.mes{display:inline-flex;width:24px;height:24px;border-radius:7px;align-items:center;justify-content:center;font-size:10.5px;font-weight:800;margin-right:2px}
.mes.pagada{background:var(--fucsia);color:#fff}
.mes.adelantada{background:var(--fucsia-viva);color:#fff;box-shadow:inset 0 0 0 2px var(--rosado)}
.mes.parcial{background:repeating-linear-gradient(135deg,var(--rosado) 0 4px,var(--rosado-claro) 4px 8px);color:var(--fucsia)}
.mes.vencida{background:#F5C9C5;color:var(--rojo);box-shadow:inset 0 0 0 1.5px var(--rojo)}
.mes.pendiente{background:var(--ambar-cl);color:var(--ambar);box-shadow:inset 0 0 0 1.5px var(--ambar)}
.mes.por_venir{background:var(--beige);color:#bfae9f;box-shadow:inset 0 0 0 1px var(--beige-osc)}
.cuotas-fila{white-space:nowrap}
.leyenda-mes{display:flex;gap:12px;font-size:12px;color:var(--suave);align-items:center;flex-wrap:wrap}
.leyenda-mes span{white-space:nowrap}
.leyenda-mes .mes{width:16px;height:16px;border-radius:5px;margin-right:4px;vertical-align:-3px}
.verde{color:var(--verde)} .rojo{color:var(--rojo)} .ambar{color:var(--ambar)}
.serial{font-family:ui-monospace,Consolas,monospace;font-size:12px;background:var(--beige);padding:2px 7px;border-radius:6px;letter-spacing:.4px;display:inline-block;margin:1px 0}

/* ---------- filtros */
.filtros{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.buscar{flex:0 1 240px;min-width:170px;background:var(--crema);border:1.5px solid var(--beige-osc);border-radius:12px;padding:9px 13px;font:inherit;font-size:13.5px;color:var(--texto)}
.pest{display:flex;gap:4px;background:var(--crema);padding:4px;border-radius:12px;border:1.5px solid var(--beige-osc);overflow-x:auto}
.pest a{padding:6px 12px;border-radius:9px;font-size:13px;font-weight:600;color:var(--suave);text-decoration:none;white-space:nowrap}
.pest a.on{background:var(--fucsia);color:#fff}
.pest a .n{font-size:11px;opacity:.8;margin-left:3px}

/* ---------- formularios */
.form{display:flex;flex-direction:column;gap:16px}
.campos{display:grid;grid-template-columns:repeat(2,1fr);gap:14px 16px}
.campos.c3{grid-template-columns:repeat(3,1fr)}
.campos .todo{grid-column:1/-1}
.campo{display:flex;flex-direction:column;gap:6px;font-size:12.5px;font-weight:700;min-width:0}
.campo .ayuda{font-weight:500;color:var(--suave);font-size:12px}
input[type=text],input[type=email],input[type=tel],input[type=date],input[type=number],input[type=search],select,textarea{width:100%;background:#fff;border:1.5px solid var(--beige-osc);border-radius:11px;padding:10px 12px;font:inherit;font-size:14.5px;font-weight:500;color:var(--texto)}
textarea{min-height:80px;resize:vertical}
input:focus,select:focus,textarea:focus{outline:0;border-color:var(--fucsia);box-shadow:0 0 0 3px var(--rosado-claro)}
input[type=file]{font:inherit;font-size:13px;max-width:100%}
.opciones{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.op{position:relative}
.op input{position:absolute;opacity:0;pointer-events:none}
.op span{display:block;background:var(--crema);border:2px solid var(--beige-osc);border-radius:14px;padding:12px;text-align:center;font-size:13.5px;font-weight:700;cursor:pointer;height:100%}
.op span i{font-style:normal;font-size:22px;display:block;margin-bottom:4px}
.op input:checked+span{border-color:var(--fucsia);background:var(--rosado-claro);color:var(--fucsia)}
.op input:focus-visible+span{box-shadow:0 0 0 3px var(--rosado)}
.chips{display:flex;flex-wrap:wrap;gap:6px}
.chips label{position:relative}
.chips input{position:absolute;opacity:0}
.chips span{display:inline-block;padding:6px 11px;border-radius:20px;font-size:12px;font-weight:700;background:var(--crema);border:1.5px solid var(--beige-osc);color:var(--suave);cursor:pointer}
.chips input:checked+span{background:var(--fucsia);border-color:var(--fucsia);color:#fff}
.chips span.hecho{background:var(--verde-cl);border-color:var(--verde-cl);color:var(--verde);cursor:default}
.subir{border:2px dashed var(--rosado);border-radius:14px;padding:14px 16px;display:flex;gap:14px;align-items:center;background:var(--crema);font-size:13px;font-weight:500}
.subir .ic{width:44px;height:44px;border-radius:12px;background:var(--rosado-claro);color:var(--fucsia);display:flex;align-items:center;justify-content:center;font-size:20px;flex-shrink:0}
.subir b{display:block;font-size:13.5px}
.subir input{margin-top:6px}
.subir>span:last-child{min-width:0;flex:1}
input[type=file]{width:100%;overflow:hidden;text-overflow:ellipsis}
.equiv{font-size:12.5px;color:var(--suave);font-weight:600}
details.caja-plegable{background:var(--crema);border-radius:18px;box-shadow:var(--sombra)}
details.caja-plegable>summary{padding:16px 22px;font-weight:800;cursor:pointer;list-style:none;display:flex;justify-content:space-between;align-items:center}
details.caja-plegable>summary::-webkit-details-marker{display:none}
details.caja-plegable>summary::after{content:"＋";color:var(--fucsia);font-size:18px}
details.caja-plegable[open]>summary::after{content:"－"}
details.caja-plegable>.dentro{padding:0 22px 22px}

/* ---------- ficha */
.cab-alumno{display:flex;gap:18px;align-items:center;flex-wrap:wrap}
.cab-alumno .av{width:62px;height:62px;font-size:21px}
.cab-alumno h2{font-size:22px;font-weight:800}
.cab-alumno .info{color:var(--suave);font-size:13.5px;margin-top:3px}
.mini{display:grid;grid-template-columns:repeat(4,minmax(110px,1fr));gap:10px;margin-left:auto}
.mini div{background:var(--beige);border-radius:12px;padding:10px 14px}
.mini span{font-size:11.5px;color:var(--suave);font-weight:600;display:block}
.mini b{font-size:18px}
.mini .dest{background:var(--rosado-claro)}
.mini .dest b{color:var(--fucsia)}
.galeria{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:10px}
.galeria a{display:block;border-radius:12px;overflow:hidden;border:1.5px solid var(--beige-osc);background:#fff;aspect-ratio:4/3}
.galeria img{width:100%;height:100%;object-fit:cover;display:block}
.galeria .pdf{display:flex;align-items:center;justify-content:center;height:100%;font-weight:800;color:var(--fucsia);font-size:13px;flex-direction:column;gap:4px}
.foto-grande{display:block;border-radius:14px;overflow:hidden;border:1.5px solid var(--beige-osc);background:#fff}
.foto-grande img{display:block;width:100%;max-height:340px;object-fit:contain;background:#f8f4ef}
.mini-fotos{display:flex;gap:4px}
.mini-fotos a{width:34px;height:34px;border-radius:7px;overflow:hidden;border:1px solid var(--beige-osc);display:flex;align-items:center;justify-content:center;font-size:10px;font-weight:800;background:#fff;color:var(--fucsia);text-decoration:none}
.mini-fotos img{width:100%;height:100%;object-fit:cover}

/* ---------- conciliación pendiente */
.caja-pendiente{text-align:center;padding:50px 30px}
.caja-pendiente .ic{font-size:44px;margin-bottom:10px}
.caja-pendiente h2{font-size:22px;margin-bottom:8px}
.caja-pendiente p{color:var(--suave);max-width:560px;margin:0 auto 10px}

/* ---------- entrada */
.entrada{min-height:100vh;display:grid;grid-template-columns:1.05fr 1fr}
.entrada .izq{background:linear-gradient(150deg,var(--fucsia) 0%,var(--fucsia-osc) 70%);color:#fff;display:flex;flex-direction:column;justify-content:center;align-items:center;gap:22px;position:relative;overflow:hidden;padding:40px 20px}
.entrada .izq img{width:min(300px,60vw);position:relative}
.entrada .izq h1{font-size:40px;font-weight:800;text-align:center;line-height:1.1;position:relative}
.entrada .izq p{font-size:16px;opacity:.92;text-align:center;position:relative}
.circ{position:absolute;border-radius:50%;background:rgba(255,255,255,.06)}
.entrada .der{display:flex;align-items:center;justify-content:center;padding:40px 20px}
.caja-entrada{width:100%;max-width:400px;display:flex;flex-direction:column;gap:18px}
.caja-entrada h2{font-size:28px;font-weight:800}
.caja-entrada p{color:var(--suave);font-size:14.5px}
.caja-entrada .grande-ic{font-size:44px}
.nota-pie{font-size:11.5px;color:var(--suave);text-align:center}

/* ---------- ventana de confirmación propia (sin confirm() del navegador) */
dialog.confirmar{border:0;border-radius:18px;padding:0;max-width:420px;width:calc(100% - 32px);box-shadow:0 20px 60px rgba(59,37,48,.3)}
dialog.confirmar::backdrop{background:rgba(59,37,48,.45)}
dialog.confirmar .dentro{padding:22px}
dialog.confirmar h4{font-size:17px;margin-bottom:8px}
dialog.confirmar p{color:var(--suave);font-size:14px;margin-bottom:16px}
dialog.confirmar .acciones{justify-content:flex-end}

/* ---------- móvil */
.barra-movil{display:none}
@media (max-width:1100px){
  .kpis{grid-template-columns:repeat(3,1fr)}
  .f3{grid-template-columns:1fr 1fr}
  .f3>:last-child{grid-column:1/-1}
  .mini{margin-left:0;width:100%}
}
@media (max-width:860px){
  .marco{flex-direction:column}
  .lado{display:none}
  .lado.abierto{display:flex;position:fixed;inset:0;z-index:50;width:100%;height:100%}
  .barra-movil{display:flex;align-items:center;gap:12px;background:linear-gradient(90deg,var(--fucsia),var(--fucsia-osc));color:#fff;padding:12px 16px;position:sticky;top:0;z-index:40}
  .barra-movil img{width:34px}
  .barra-movil b{font-size:16px;flex:1}
  .barra-movil button{background:rgba(255,255,255,.15);border:0;color:#fff;font-size:20px;border-radius:10px;width:42px;height:40px;cursor:pointer}
  .cerrar-menu{display:block!important;align-self:flex-end;background:rgba(255,255,255,.15);border:0;color:#fff;font-size:22px;border-radius:10px;width:42px;height:40px;cursor:pointer;margin-bottom:-30px}
  .cuerpo{padding:18px 16px 40px;gap:16px}
  .tope h1{font-size:22px}
  .kpis,.kpis.k4{grid-template-columns:1fr 1fr;gap:10px}
  .kpi .v{font-size:21px}
  .fila,.f3,.f2,.f2b,.f11{grid-template-columns:1fr}
  .f3>:last-child{grid-column:auto}
  .campos,.campos.c3{grid-template-columns:1fr}
  .tarjeta{padding:16px}
  .mini{grid-template-columns:1fr 1fr}
  .entrada{grid-template-columns:1fr}
  .entrada .izq{padding:34px 20px 30px;gap:12px}
  .entrada .izq img{width:120px}
  .entrada .izq h1{font-size:28px}
  .entrada .izq p{font-size:14px}
  .entrada .der{padding:28px 16px}
  .acciones .btn{flex:1 1 auto}
}
.cerrar-menu{display:none}
@media print{
  .lado,.barra-movil,.acciones,.filtros,.no-imprimir{display:none!important}
  body{background:#fff}
  .cuerpo{padding:0}
  .tarjeta,.kpi{box-shadow:none;border:1px solid #ddd}
}
