/* ============================================================
   Sistema Integral Escolar de Primaria — Estilos del portal
   ============================================================ */
:root{
  --primary:#0f766e;
  --primary-dark:#0b5a54;
  --ink:#172033;
  --bg:#fdf6ec;
  --head:#203C73;
  --card:#ffffff;
  --line:#e5e0d6;
  --soft:#f2f4f8;
  --ok:#16a34a;
  --warn:#d97706;
  --bad:#dc2626;
  --radius:16px;
  --shadow:0 2px 8px rgba(15,23,42,.06);
}
*{box-sizing:border-box}
body{margin:0;font-family:Inter,"Segoe UI",Roboto,Arial,sans-serif;background:var(--bg);color:var(--ink);font-size:15px;min-height:100vh;display:flex;flex-direction:column}
a{color:var(--primary);text-decoration:none}
a:hover{text-decoration:underline}

/* ── Header ── */
.rtp-header{background:var(--head,#0b1324);color:#fff;padding:0 20px;position:sticky;top:0;z-index:20}
.rtp-header-top{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:5px 0}
.brand{display:flex;align-items:center;gap:10px}
.brand .logo{font-size:26px}
.brand-title{font-weight:700;font-size:20px;letter-spacing:0;color:#fff}
.brand-centro{color:#9ecfff}
.brand-sub{font-size:13px;font-weight:500;color:rgba(255,255,255,.75)}
.brand-copy{font-size:13px;font-weight:500;color:rgba(255,255,255,.75);letter-spacing:0;margin-left:2px}
.user-chip{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.chip-usuario{background:rgba(255,255,255,.12);padding:4px 12px;border-radius:20px;font-weight:600;font-size:12px}
.chip-rol{font-size:12px;background:var(--primary);padding:4px 10px;border-radius:20px;color:#fff}
.rtp-config{position:relative}
.rtp-config summary{cursor:pointer;list-style:none;font-size:18px;padding:2px 6px;border-radius:8px}
.rtp-config summary:hover{background:rgba(255,255,255,.15)}
.rtp-config nav{position:absolute;right:0;top:30px;background:#fff;color:#172033;min-width:190px;border-radius:12px;box-shadow:0 10px 30px rgba(0,0,0,.2);padding:6px;z-index:50}
.rtp-config nav a{display:block;padding:8px 10px;border-radius:8px;color:#172033}
.rtp-config nav a:hover{background:#f2f4f8;text-decoration:none}
.nav-menu{display:flex;gap:4px;flex-wrap:wrap;padding-bottom:4px}
.nav-menu a{color:#cfe0ff;padding:7px 8px;border-radius:9px;font-size:13.5px;font-weight:600}
.nav-menu a .nav-icon{display:inline-block;filter:saturate(1.2) brightness(1.6)}
.nav-menu a:hover{background:rgba(255,255,255,.1);text-decoration:none}
.nav-menu a.active{background:var(--primary);color:#fff}
.nav-menu a.nav-salir{color:#fff;background:rgba(255,255,255,.14);border:1px solid rgba(255,255,255,.28);font-weight:600}
.nav-menu a.nav-salir:hover{background:rgba(255,255,255,.24)}
.toolbar{display:flex;gap:8px;flex-wrap:wrap;padding-bottom:12px}
.header-extra{padding-bottom:12px}

/* ── Botones ── */
.btn{display:inline-flex;align-items:center;gap:6px;background:#e7e9ef;color:#172033;border:0;border-radius:10px;padding:8px 14px;font-weight:600;font-size:13.5px;cursor:pointer;font-family:inherit;text-decoration:none}
.btn:hover{filter:brightness(.97);text-decoration:none}
.btn:disabled{opacity:.5;cursor:not-allowed;filter:none}
.btn.primary{background:var(--primary);color:#fff}
.btn.blue{background:#2e75b6;color:#fff}
.btn.green{background:#16a34a;color:#fff}
.btn.purple{background:#6d28d9;color:#fff}
.btn.orange{background:#ea580c;color:#fff}
.btn.danger{background:var(--bad);color:#fff}
.btn.sm{padding:4px 10px;font-size:12.5px;border-radius:8px}
.kebab{display:inline-flex;align-items:center;justify-content:center;width:26px;height:22px;margin-left:5px;padding:0;border:1px solid #d9dce3;background:#fff;border-radius:8px;font-size:15px;line-height:1;color:#64748b;cursor:pointer;vertical-align:middle}
.kebab:hover{background:#eef2f1;color:var(--primary)}
.field label .kebab{text-transform:none;letter-spacing:0}

/* ── Contenido ── */
main{max-width:1180px;margin:0 auto;padding:22px 20px 60px;width:100%;flex:1}
.rtp-header + main{ }
.page-title{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:14px}
.page-title h2{margin:0;font-size:20px}
.muted{color:#64748b;font-size:13px}
.banner-msg{background:#dcfce7;border:1px solid #bbf7d0;color:#14532d;border-radius:12px;padding:10px 14px;margin-bottom:14px;font-weight:600}
.banner-rojo{background:#fef2f2;border:1px solid #fecaca;color:#7f1d1d;border-radius:12px;padding:10px 14px;margin-bottom:14px;font-weight:600}

.stat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px;margin-bottom:20px}
.stat{background:var(--card);border:1px solid var(--line,#e5e6d6);border-radius:var(--radius);padding:14px}
.stat b{display:block;font-size:24px;color:var(--primary)}
.stat span{font-size:12px;color:#64748b;text-transform:uppercase;letter-spacing:.4px}

.card{background:var(--card);border:1px solid #e5e6d6;border-radius:var(--radius);padding:18px;margin-bottom:16px;box-shadow:var(--shadow)}
.card h3{margin:0 0 12px;font-size:16px;color:var(--primary-dark)}

.grupo-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:14px}

.seccion-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:14px}
.seccion-card{background:var(--card);border:1px solid #e5e6d6;border-radius:var(--radius);padding:14px;box-shadow:var(--shadow);border-left:5px solid var(--primary)}
.seccion-card h4{margin:0 0 4px;font-size:15px}
.seccion-card .meta{font-size:12.5px;color:#475569;margin:2px 0}
.badge{display:inline-block;border-radius:20px;padding:2px 10px;font-size:11.5px;font-weight:700}

/* ── Tablas ── */
.tabla{width:100%;border-collapse:collapse;background:#fff}
.tabla th,.tabla td{border:1px solid #e5e6d6;padding:8px 10px;text-align:center;font-size:13.5px}
.tabla th{background:var(--head);color:#fff;font-weight:600}
.tabla tbody tr:nth-child(even){background:#f8fafc}
.tabla .num{text-align:center;color:#64748b}
.tabla a.btn{margin-right:2px}
.celda-acciones{display:flex;gap:16px;justify-content:center;align-items:center;flex-wrap:nowrap}
.celda-acciones .btn{flex:none;white-space:nowrap;padding:4px 6px}
.celda-acciones .btn+a.btn,.celda-acciones a.btn{margin-right:0}
.celda-acciones> *{position:relative}
.celda-acciones> * + *::before{content:"|";position:absolute;left:-9px;top:50%;transform:translateY(-50%);color:#cbd5e1;font-size:13px;line-height:1;user-select:none;pointer-events:none}
.tabla td .btn + .btn,.tabla td a.btn + .btn,.tabla td .btn + a.btn,.tabla td a.btn + a.btn{position:relative;margin-left:16px}
.tabla td .btn + .btn::before,.tabla td a.btn + .btn::before,.tabla td .btn + a.btn::before,.tabla td a.btn + a.btn::before{content:"|";position:absolute;left:-9px;top:50%;transform:translateY(-50%);color:#cbd5e1;font-size:13px;line-height:1;user-select:none;pointer-events:none}

/* ── Formularios ── */
.form-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:10px;align-items:stretch}
.form-grid-grupos{grid-template-columns:minmax(200px,1fr) repeat(5,auto)}
.form-grid .field{display:flex;flex-direction:column}
.form-grid .field label{min-height:24px;display:flex;align-items:center;gap:4px}
.form-grid .field label .kebab{margin-left:auto}
.form-grid .field input,.form-grid .field select{margin-top:auto}
.form-grid .field .btn{width:100%;justify-content:center;margin-top:auto}
.field label{display:block;font-size:12px;text-transform:uppercase;letter-spacing:.4px;color:#64748b;margin-bottom:4px}
.field input,.field select,.field textarea{width:100%;border:1px solid #d9dce3;border-radius:9px;padding:8px 10px;font-size:14px;font-family:inherit;background:#fff}
.field input[type=date]{}
form.inline-form{display:inline-flex;align-items:center}
.acciones-form{margin-top:14px;display:flex;gap:8px;flex-wrap:wrap}

/* ── Confirm/ diálogos ── */
.rtp-modal{position:fixed;inset:0;background:rgba(2,6,23,.55);display:flex;align-items:center;justify-content:center;z-index:200}
.rtp-modal .caja{background:#fff;border-radius:14px;padding:20px;min-width:320px;max-width:520px;box-shadow:0 30px 60px rgba(0,0,0,.25)}
.rtp-modal h3{margin:0 0 10px}
.rtp-modal .fila{margin-bottom:12px}
.rtp-modal .field{margin-bottom:10px}

/* ── Modal de cambio de grupo ── */
.rtp-modal.tl-modal{display:flex;overflow:auto;padding:20px}
.rtp-modal.tl-modal .caja{margin:auto;max-width:min(860px,calc(100vw - 40px));max-height:90vh;display:flex;flex-direction:column}
.rtp-modal.tl-modal .caja > .fila{overflow-x:hidden;overflow-y:auto;min-height:0;flex:1;padding-right:4px}

/* ── Modal de promedios (boletín final) ── */
.rtp-modal.bf-prom-modal{display:flex;overflow:auto;padding:20px}
.rtp-modal.bf-prom-modal .caja{margin:auto;width:min(960px,100%);max-width:960px;display:flex;flex-direction:column;max-height:90vh}
.bf-prom-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:4px}
.bf-prom-head h3{margin:0}
.bf-prom-filtros{grid-template-columns:0.8fr 0.9fr 1.6fr}
.bf-prom-resultado{margin-top:14px;min-height:110px;overflow:auto;max-height:calc(90vh - 220px)}
.bf-prom-resumen{display:flex;flex-wrap:wrap;gap:8px 18px;align-items:center;background:var(--soft);border-radius:10px;padding:8px 12px;margin-bottom:10px;font-size:13px}
.bf-prom-mejor{font-weight:600;color:var(--primary-dark)}
.bf-prom-top td{background:#f0fdf4!important}
.bf-prom-val{font-weight:800;color:var(--primary-dark)}
.bf-prom-sec{background:#fef3c7;color:#92400e}
.bf-prom-glob{background:#fffbeb;color:#b45309;border:1px solid #fcd34d}

/* ── Tooltips del sistema ── */
.rtp-tip{position:fixed;z-index:3000;display:none;max-width:260px;background:#0b1324;color:#fff;font-size:12.5px;font-weight:500;line-height:1.35;padding:6px 10px;border-radius:8px;box-shadow:0 6px 18px rgba(2,6,23,.35);pointer-events:none}
.rtp-tip::after{content:"";position:absolute;left:50%;transform:translateX(-50%);border:5px solid transparent}
.rtp-tip[data-pos=arriba]::after{top:100%;border-top-color:#0b1324}
.rtp-tip[data-pos=abajo]::after{bottom:100%;border-bottom-color:#0b1324}
.rtp-tip[data-pos=izq]::after{right:-10px;top:50%;transform:translateY(-50%);border-left-color:#0b1324}
.rtp-tip[data-pos=der]::after{left:-10px;top:50%;transform:translateY(-50%);border-right-color:#0b1324}

/* ── Boletín final (diseño especificado) ── */
/* Paleta de colores: el usuario elige con data-paleta (por defecto: azul clásico) */
.boletin{
  --bf-ink:#003876;   /* azul institucional MINERD */
  --bf-borde:#a5bede; /* bordes suaves */
  --bf-borde2:#7d9dcc;/* bordes de cajas */
  --bf-sub:#c3d3ea;   /* fila de sub-encabezados */
  --bf-subh:#e7eef8;  /* texto secundario en cabecera */
  --bf-fill1:#d8e3f4; /* completiva */
  --bf-fill2:#e2eaf6; /* especial */
  --bf-fill3:#cddcef; /* C.F. especial */
  --bf-prom:#fff3bf;  /* promedios por grupo */
  --bf-pr:#ffdf4d;    /* promedios finales */
  --bf-yel:#f2c84e;   /* acento oro (cel b, sellos) */
  --bf-zebra:#f3f6fb; /* filas alternas */
  --bf-sit:#001f45;   /* Situación Final */
  --bf-soft:#2056a0;  /* notas de módulos */
  --bf-sec:#e0252b;   /* acento rojo MINERD (línea ciclo · nivel) */
  background:#fff;border:1px solid var(--bf-borde);border-radius:4px;overflow:hidden;
}
.boletin[data-paleta="minerd"]{--bf-ink:#003876;--bf-borde:#a5bede;--bf-borde2:#7d9dcc;--bf-sub:#c3d3ea;--bf-subh:#e7eef8;--bf-fill1:#d8e3f4;--bf-fill2:#e2eaf6;--bf-fill3:#cddcef;--bf-prom:#fff3bf;--bf-pr:#ffdf4d;--bf-yel:#f2c84e;--bf-zebra:#f3f6fb;--bf-sit:#001f45;--bf-soft:#2056a0;--bf-sec:#e0252b}
.boletin[data-paleta="azul"]{--bf-ink:#27497c;--bf-borde:#9dc3e6;--bf-borde2:#8aa7c9;--bf-sub:#bdd7ee;--bf-subh:#dce6f5;--bf-fill1:#d8e7f5;--bf-fill2:#dfe9f5;--bf-fill3:#c7ddf0;--bf-prom:#fff3bf;--bf-pr:#ffff00;--bf-yel:#ffd966;--bf-zebra:#f2f2f2;--bf-sit:#1e293b;--bf-soft:#2e75b6;--bf-sec:#8b0000}
.boletin[data-paleta="cielo"]{--bf-ink:#2259d8;--bf-borde:#a8c8f0;--bf-borde2:#88b0e2;--bf-sub:#c5dbf4;--bf-subh:#eaf3fd;--bf-fill1:#dbe8fa;--bf-fill2:#e4eefb;--bf-fill3:#cfdff7;--bf-prom:#fff7d6;--bf-pr:#ffd84d;--bf-yel:#ffd76e;--bf-zebra:#f2f7fd;--bf-sit:#172554;--bf-soft:#2e7bd6;--bf-sec:#b91c1c}
.boletin[data-paleta="índigo"]{--bf-ink:#38369c;--bf-borde:#c6cbf0;--bf-borde2:#a4abe4;--bf-sub:#d7dbf4;--bf-subh:#eef0fb;--bf-fill1:#e6e8f8;--bf-fill2:#ebeef9;--bf-fill3:#e0e3f6;--bf-prom:#fff7d6;--bf-pr:#ffd84d;--bf-yel:#f5c84d;--bf-zebra:#f4f5fb;--bf-sit:#1e1b4b;--bf-soft:#6366f1;--bf-sec:#6d28d9}
.boletin[data-paleta="océano"]{--bf-ink:#0f5c86;--bf-borde:#a3d5ea;--bf-borde2:#7fc0de;--bf-sub:#bfe2f1;--bf-subh:#e6f5fb;--bf-fill1:#d7edf7;--bf-fill2:#e1f2f9;--bf-fill3:#cfe8f4;--bf-prom:#fff7d6;--bf-pr:#ffd84d;--bf-yel:#ffd76e;--bf-zebra:#f0f8fb;--bf-sit:#082f49;--bf-soft:#0284c7;--bf-sec:#c2410c}
.boletin[data-paleta="pizarra"]{--bf-ink:#3a4d6e;--bf-borde:#b9c8da;--bf-borde2:#93a7bd;--bf-sub:#c7d3e2;--bf-subh:#e9eef5;--bf-fill1:#dde5ee;--bf-fill2:#e5ecf3;--bf-fill3:#d4dfe9;--bf-prom:#fff4d2;--bf-pr:#ffcf4d;--bf-yel:#ffc64d;--bf-zebra:#f2f5f8;--bf-sit:#111c2c;--bf-soft:#5b7393;--bf-sec:#b91c1c}
.boletin[data-paleta="verde"]{--bf-ink:#186538;--bf-borde:#a8cfae;--bf-borde2:#7fae8a;--bf-sub:#b1dfb8;--bf-subh:#dff2e2;--bf-fill1:#cde8d2;--bf-fill2:#d9efdd;--bf-fill3:#b6e7c1;--bf-prom:#fef3c7;--bf-pr:#fde047;--bf-yel:#f5d76e;--bf-zebra:#eff6ef;--bf-sit:#0f3d24;--bf-soft:#2e9e6b;--bf-sec:#9a3412}
.boletin[data-paleta="esmeralda"]{--bf-ink:#0a7055;--bf-borde:#9fd8c4;--bf-borde2:#79c3aa;--bf-sub:#b6e5d6;--bf-subh:#e6f7f0;--bf-fill1:#d3efe3;--bf-fill2:#ddf4eb;--bf-fill3:#c8ecd9;--bf-prom:#fff7d6;--bf-pr:#ffd84d;--bf-yel:#ffd76e;--bf-zebra:#eff8f4;--bf-sit:#022c22;--bf-soft:#10b981;--bf-sec:#c2410c}
.boletin[data-paleta="bosque"]{--bf-ink:#4b7916;--bf-borde:#d2dfac;--bf-borde2:#b4c987;--bf-sub:#dde7c4;--bf-subh:#f3f6e6;--bf-fill1:#e9f0d6;--bf-fill2:#eff3e0;--bf-fill3:#e2ebc9;--bf-prom:#fff7d6;--bf-pr:#ffd84d;--bf-yel:#f5c84d;--bf-zebra:#f7f9f1;--bf-sit:#1a2e05;--bf-soft:#65a30d;--bf-sec:#854d0e}
.boletin[data-paleta="menta"]{--bf-ink:#166d68;--bf-borde:#9fddd5;--bf-borde2:#7acdc2;--bf-sub:#b9e6e0;--bf-subh:#e7f7f5;--bf-fill1:#d6f0ec;--bf-fill2:#e0f4f1;--bf-fill3:#cbeae5;--bf-prom:#fff7d6;--bf-pr:#ffd84d;--bf-yel:#ffd76e;--bf-zebra:#eff8f6;--bf-sit:#042f2e;--bf-soft:#14b8a6;--bf-sec:#9a3412}
.boletin[data-paleta="vino"]{--bf-ink:#932649;--bf-borde:#ddb8c4;--bf-borde2:#c69cac;--bf-sub:#e5bccb;--bf-subh:#f7e6ec;--bf-fill1:#f0d6de;--bf-fill2:#f3dfe5;--bf-fill3:#e9c7d2;--bf-prom:#fef3c7;--bf-pr:#fde047;--bf-yel:#f5c542;--bf-zebra:#faf1f4;--bf-sit:#4c0519;--bf-soft:#be5a7a;--bf-sec:#7f1d3a}
.boletin[data-paleta="carmesí"]{--bf-ink:#a82020;--bf-borde:#e6c1c1;--bf-borde2:#d39d9d;--bf-sub:#edd3d3;--bf-subh:#f9ecec;--bf-fill1:#f6e0e0;--bf-fill2:#f8e7e7;--bf-fill3:#f3d6d6;--bf-prom:#fff3c4;--bf-pr:#ffcf4d;--bf-yel:#ffc64d;--bf-zebra:#fbf2f2;--bf-sit:#450a0a;--bf-soft:#e14d4d;--bf-sec:#7f1d1d}
.boletin[data-paleta="rosa"]{--bf-ink:#c71e5e;--bf-borde:#f0c4d6;--bf-borde2:#e39eb5;--bf-sub:#f2d3de;--bf-subh:#fdeef3;--bf-fill1:#f9e3eb;--bf-fill2:#fbe9ef;--bf-fill3:#f7d9e3;--bf-prom:#fff3c4;--bf-pr:#ffcf4d;--bf-yel:#ffc64d;--bf-zebra:#fdf3f6;--bf-sit:#500724;--bf-soft:#ec4d8a;--bf-sec:#9f1239}
.boletin[data-paleta="terracota"]{--bf-ink:#c74b18;--bf-borde:#f0d1b5;--bf-borde2:#e2b28d;--bf-sub:#f4e0d2;--bf-subh:#fdf3ec;--bf-fill1:#f9e9dd;--bf-fill2:#fbeede;--bf-fill3:#f7e1cf;--bf-prom:#fff4d2;--bf-pr:#ffce4d;--bf-yel:#ffc64d;--bf-zebra:#fcf5f0;--bf-sit:#431407;--bf-soft:#ea580c;--bf-sec:#7c2d12}
.boletin[data-paleta="ámbar"]{--bf-ink:#ab670a;--bf-borde:#eed49f;--bf-borde2:#dfc07a;--bf-sub:#f1e3b8;--bf-subh:#fbf3df;--bf-fill1:#f7ecd3;--bf-fill2:#f9f0db;--bf-fill3:#f4e7c8;--bf-prom:#fff6cf;--bf-pr:#ffd84d;--bf-yel:#f7c948;--bf-zebra:#faf5e9;--bf-sit:#422006;--bf-soft:#ca8a04;--bf-sec:#92400e}
.boletin[data-paleta="café"]{--bf-ink:#8d3a1c;--bf-borde:#e5cdbb;--bf-borde2:#d2ad92;--bf-sub:#efdcc9;--bf-subh:#faf0e6;--bf-fill1:#f6e8d9;--bf-fill2:#f9eede;--bf-fill3:#f2dfca;--bf-prom:#fff6d2;--bf-pr:#ffcf4d;--bf-yel:#f5c542;--bf-zebra:#fcf6f0;--bf-sit:#431407;--bf-soft:#a0522d;--bf-sec:#7c2d12}
.boletin[data-paleta="morado"]{--bf-ink:#5a27a9;--bf-borde:#cdc0e8;--bf-borde2:#b3a2d9;--bf-sub:#d8c8ee;--bf-subh:#f0eafa;--bf-fill1:#e6dcf5;--bf-fill2:#ece3f8;--bf-fill3:#ddd0f1;--bf-prom:#fef3c7;--bf-pr:#fde047;--bf-yel:#f7c948;--bf-zebra:#f5f2fb;--bf-sit:#2e1065;--bf-soft:#7c5cbf;--bf-sec:#7e22ce}
.boletin[data-paleta="violeta"]{--bf-ink:#7032d8;--bf-borde:#d8ccf0;--bf-borde2:#bca8e4;--bf-sub:#e0d6f3;--bf-subh:#f2eefb;--bf-fill1:#ece5f8;--bf-fill2:#f1ebfa;--bf-fill3:#e4daf5;--bf-prom:#fef3c7;--bf-pr:#fde047;--bf-yel:#f7c948;--bf-zebra:#f7f4fc;--bf-sit:#2e1065;--bf-soft:#7c3aed;--bf-sec:#6d28d9}
.boletin[data-paleta="malva"]{--bf-ink:#9a22a4;--bf-borde:#e8c9ea;--bf-borde2:#d3a5d6;--bf-sub:#f0d8f2;--bf-subh:#faf0fa;--bf-fill1:#f7e4f8;--bf-fill2:#faeafb;--bf-fill3:#f3dcf5;--bf-prom:#fff3c4;--bf-pr:#ffcf4d;--bf-yel:#f2c14e;--bf-zebra:#fbf4fb;--bf-sit:#4a044e;--bf-soft:#c026d3;--bf-sec:#a21caf}
.boletin[data-paleta="grafito"]{--bf-ink:#3e4f63;--bf-borde:#cbd5e1;--bf-borde2:#94a3b8;--bf-sub:#e2e8f0;--bf-subh:#eef2f7;--bf-fill1:#eef2f7;--bf-fill2:#f1f5f9;--bf-fill3:#dbe4ee;--bf-prom:#fef3c7;--bf-pr:#fbbf24;--bf-yel:#fbbf24;--bf-zebra:#f8fafc;--bf-sit:#111827;--bf-soft:#64748b;--bf-sec:#b91c1c}
.boletin[data-paleta="acero"]{--bf-ink:#55677e;--bf-borde:#cbd3dd;--bf-borde2:#a9b6c4;--bf-sub:#dfe5eb;--bf-subh:#eef1f4;--bf-fill1:#e9edf2;--bf-fill2:#edf0f4;--bf-fill3:#dde4ec;--bf-prom:#fff4d2;--bf-pr:#fbbf24;--bf-yel:#f5c542;--bf-zebra:#f4f6f8;--bf-sit:#1f2937;--bf-soft:#6b7f95;--bf-sec:#b91c1c}
.bf-visor{overflow:auto}
.bf-escudo{display:block;max-height:74px;max-width:74px;border-radius:50%;object-fit:contain}
.bf-escudo.falso{width:74px;height:74px;border-radius:50%;background:var(--bf-ink);color:var(--bf-yel);display:flex;align-items:center;justify-content:center;font-weight:900;font-size:20px}

/* Encabezado Z1 */
.bf-cab{display:flex;align-items:stretch;border-bottom:2px solid var(--bf-ink);background:#fff}
.bf-lados{padding:8px 12px;width:24%;min-width:200px}
.bf-izq{border-right:1px solid var(--bf-borde)}
.bf-der{border-left:1px solid var(--bf-borde);display:flex;align-items:center;justify-content:center}
.bf-logos{display:flex;gap:8px;align-items:center;margin-bottom:4px}
.bf-org{font-weight:700;font-size:9px;color:var(--bf-ink);line-height:1.3}
.bf-nombre-centro{font-weight:900;font-size:13px;color:var(--bf-ink);line-height:1.2;text-transform:uppercase;margin-top:2px}
.bf-lema{font-style:italic;font-size:9px;color:#444}
.bf-tit{flex:1;text-align:center;padding:6px 12px;display:flex;flex-direction:column;justify-content:center}
.bf-tit-1{font-size:15px;letter-spacing:3px;font-weight:800;color:var(--bf-ink);margin-bottom:2px}
.bf-grado{font-family:"Impact","Arial Narrow",Impact,sans-serif;font-size:20px;color:var(--bf-ink);letter-spacing:1px;line-height:1.1}
.bf-sec{font-size:9px;color:var(--bf-sec);font-weight:700;letter-spacing:1px}
.bf-sello{width:100px;height:100px;border:2px dashed var(--bf-borde);border-radius:50%;display:flex;align-items:center;justify-content:center;color:#94a3b8;font-size:9px;text-align:center}
.bf-sello-in{text-transform:uppercase}

/* Z2 Datos */
.bf-datos{display:flex;align-items:stretch;background:var(--bf-ink);color:#fff;font-size:10px;font-weight:600}
.bf-cel{flex:1;padding:5px 10px;border-right:1px solid #fff;display:flex;align-items:center}
.bf-cel b{color:var(--bf-yel)}
.bf-cel-nro{width:120px;padding:5px 10px;border-right:1px solid #fff;text-align:center;display:flex;align-items:center;justify-content:center}
.bf-cel-nro b{color:#fff}
.bf-cel-nro:last-child{border-right:0}

/* Tabla de rendimiento Z3 */
.bf-tab{width:100%;border-collapse:collapse;font-size:7px;table-layout:fixed}
.bf-tab th,.bf-tab td{border:0.5pt solid var(--bf-borde);text-align:center;padding:2px;vertical-align:middle;font-weight:400}
.bf-tab thead th{background:var(--bf-ink);color:#fff;font-weight:800;font-size:7px;line-height:1.25;overflow-wrap:anywhere}
.bf-tab .bf-h1 th{font-size:7px}
.bf-tab thead th.bf-sub{background:var(--bf-ink);color:#fff}
.bf-tab thead th.bf-subh{font-weight:500;color:#fff;display:block}
.bf-area-vert{width:16px}
.bf-area-vert div{writing-mode:vertical-rl;transform:rotate(180deg);white-space:nowrap;color:#fff;font-weight:800;font-size:7px}
.bf-comp{width:130px}
.bf-tab td.bf-materia{text-align:center;padding-left:6px}
.bf-tab .bf-mat-nombre{font-size:7.5px;color:var(--bf-ink);font-weight:700}
.bf-tab td{font-size:7px}
.bf-tab tbody tr:nth-child(even){background:var(--bf-zebra)}
.bf-tab tbody tr:nth-child(odd){background:#fff}
.bf-tab td.bf-prom{background:var(--bf-prom);font-weight:900}
.bf-tab td.bf-pr{background:var(--bf-pr);font-weight:900}
.bf-tab td.bf-com{background:var(--bf-fill1)}
.bf-tab td.bf-esp{background:var(--bf-fill2)}
.bf-tab td.bf-espcf{background:var(--bf-fill3);font-weight:900}
.bf-tab thead th.bf-sit{background:var(--bf-sit);color:#fff}
.bf-tab td.bf-apv{background:#f0fdf4;color:#14532d;font-weight:900}
.bf-tab td.bf-rpv{background:#fff1f2;color:#7f1d1d;font-weight:900}
.bf-tab thead th.bf-rph{background:#fef3c7;color:#78350f;font-weight:800}
.bf-tab td.bf-rp{background:#fef3c7;color:#78350f;font-weight:700}
.bf-tab .bf-vacio{text-align:center;padding:20px;font-size:10px;color:#64748b}

/* Módulo formativo Z4 */
.bf-mod{width:100%;border-collapse:collapse;font-size:8px;table-layout:fixed}
.bf-mod thead th{background:var(--bf-ink);color:#fff;font-weight:800;padding:3px;font-size:8px}
.bf-mod td{border:0.5pt solid var(--bf-borde);padding:3px;text-align:center}
.bf-mod td.bf-cal{color:#000;font-size:8px}
.bf-mod td.bf-materia{color:var(--bf-ink);text-align:center;font-size:8.5px;font-weight:700}
.bf-mod td.bf-cf{background:var(--bf-ink);color:#fff;font-size:13px;font-weight:900}
.bf-mod td.bf-total{background:var(--bf-pr);font-weight:900}
.bf-mod td.bf-esp-num{background:var(--bf-prom);font-weight:800}
.bf-mod td.bf-mod-ok{background:#f0fdf4;color:#14532d;font-weight:900}
.bf-mod td.bf-mod-bad{background:#fff1f2;color:#7f1d1d;font-weight:900}
.bf-mod thead th.bf-mod-ok-h,.bf-mod thead th.bf-mod-bad-h{background:var(--bf-ink);color:#fff;font-weight:900}

/* Pie Z5 */
.bf-bottom{display:flex;border-top:2px solid var(--bf-ink)}
.bf-left{width:24%;padding:8px 10px;border-right:1px solid var(--bf-borde);font-size:9px;display:flex;flex-direction:column;justify-content:space-between}
.bf-caja{border:0.5pt solid var(--bf-borde2);font-size:9px}
.bf-fila{display:flex;align-items:center;gap:6px;padding:4px 5px;border-bottom:0.5pt solid var(--bf-borde2);line-height:1.25}
.bf-fila:last-child{border-bottom:0}
.bf-fila > span{flex:1}
.bf-fila b{white-space:nowrap}
.bf-yel{background:var(--bf-pr);color:#000;font-weight:900;padding:1px 8px;border-radius:3px;font-size:11px}
.bf-ins-line{flex-wrap:wrap;gap:4px;background:var(--bf-zebra)}
.bf-ins{display:inline-flex;align-items:center;gap:2px;font-size:7px;font-weight:900;padding:1px 5px;border-radius:8px;white-space:nowrap;letter-spacing:.2px}
.bf-ins-cen{background:var(--bf-pr);color:#000;border:0.5pt solid var(--bf-ink)}
.bf-ins-sec{background:var(--bf-subh);color:var(--bf-ink);border:0.5pt solid var(--bf-borde2)}
.bf-cond{margin-top:8px;display:flex;align-items:center;gap:4px}
.bf-cond span:first-child{font-weight:700;white-space:nowrap}
.bf-cuad{border:0.5pt solid var(--bf-ink);padding:2px 8px;font-size:8px;color:#6b7280;white-space:nowrap;text-align:center;flex:none}
.bf-cuad.on{background:var(--bf-ink);color:#fff;font-weight:800}
.bf-center{flex:1;padding:0;border-right:1px solid var(--bf-borde);display:flex;flex-direction:column}
.bf-ob-tit{background:var(--bf-ink);color:#fff;font-weight:800;padding:4px 10px;font-size:9px;letter-spacing:1px;text-align:center}
.bf-ob{flex:1;min-height:110px;border-top:1px solid var(--bf-borde);text-align:justify;hyphens:auto}
.bf-right{width:24%;padding:30px 10px 28px;display:flex;flex-direction:column;justify-content:flex-end;gap:36px}
.bf-firma{text-align:center;font-size:9px}
.bf-linea{border-top:1px solid var(--bf-ink);margin:0 6px}
.bf-fn{font-weight:800;color:var(--bf-ink);font-size:9.5px}
.bf-fc{font-size:7.5px;color:#333}

/* ── Expediente del estudiante ── */
.exp-tabs{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:16px}
.exp-tab{display:inline-flex;align-items:center;gap:6px;background:#eef0f4;color:#344054;border:0;border-radius:10px;padding:8px 14px;font-weight:600;font-size:13.5px;cursor:pointer;font-family:inherit;text-decoration:none}
.exp-tab:hover{background:#e2e5ea;text-decoration:none}
.exp-tab.activo{background:var(--primary);color:#fff}
.exp-grid{display:grid;grid-template-columns:200px 1fr;gap:20px;align-items:start}
.exp-foto{width:120px;height:150px;object-fit:cover;border:1px solid #d9dce3;border-radius:10px;background:#fff}
.exp-foto-vacia{display:flex;width:120px;height:150px;align-items:center;justify-content:center;border:1px dashed #c3c8d4;border-radius:10px;color:#94a3b8;font-size:12px;text-align:center;padding:8px;box-sizing:border-box}

/* ── Dashboard del centro (gráficas SVG/CSS puro) ── */
.dash-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:14px;margin-bottom:18px}
.dash-bars{display:flex;flex-direction:column;gap:9px;margin-top:12px}
.dash-row{display:flex;align-items:center;gap:10px}
.dash-lbl{flex:0 0 34%;font-size:12.5px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.dash-track{flex:1;background:#eef1f6;border-radius:8px;height:16px;overflow:hidden}
.dash-fill{height:100%;border-radius:8px;min-width:3px}
.dash-val{flex:0 0 92px;font-size:12px;font-weight:700;text-align:right;white-space:nowrap}
.dash-vbars{display:flex;align-items:stretch;gap:10px;height:170px;margin-top:14px;padding-bottom:22px}
.dash-vbar{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;gap:4px;min-width:0}
.dash-vbar .dash-val{flex:0 0 auto;font-size:12px;font-weight:700;text-align:center}
.dash-vtrack{width:100%;height:150px;display:flex;align-items:flex-end;justify-content:center}
.dash-vfill{width:70%;max-width:46px;border-radius:8px 8px 0 0;min-height:2px}
.dash-vbar .dash-lbl{flex:0 0 auto;font-size:11px;font-weight:600;max-width:100%}

/* ── Adaptación responsive (tablets y móviles) ── */
.tabla-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch}

@media (max-width: 900px){
  main{padding:18px 14px 60px}
  .rtp-header{padding:0 14px}
}

@media (max-width: 720px){
  .rtp-header{padding:0 10px}
  .rtp-header-top{flex-wrap:wrap;gap:8px;padding:8px 0}
  .brand-title{font-size:13px}
  .brand-sub{display:none}
  .brand .logo img{height:34px}
  .user-chip{gap:6px}
  .chip-usuario{max-width:160px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:11px}
  .chip-rol{font-size:11px;padding:3px 8px}
  /* Menú: franja con scroll horizontal */
  .nav-menu{flex-wrap:nowrap;overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none;padding-bottom:4px}
  .nav-menu::-webkit-scrollbar{display:none}
  .nav-menu a{white-space:nowrap}
  /* Menú de usuario (☰) a pantalla completa */
  .rtp-config nav{position:fixed;left:10px;right:10px;top:64px;min-width:0}
  main{padding:16px 12px 50px}
  .page-title h2{font-size:17px}
  .stat{border-radius:12px;padding:12px}
  .stat b{font-size:20px}
  .card{padding:14px;border-radius:12px}
  /* Formularios: una columna en móvil (anula estilos inline) */
  .form-grid{grid-template-columns:1fr!important}
  .form-grid-grupos{grid-template-columns:1fr!important}
  .exp-grid{grid-template-columns:1fr!important}
  .acciones-form .btn{flex:1 1 auto}
  /* Tablas: scroll horizontal con cabecera fija visual */
  .tabla-wrap{width:100%}
  .tabla-wrap .tabla{min-width:600px}
  .tabla:not(.tabla-wrap .tabla){display:block;overflow-x:auto;-webkit-overflow-scrolling:touch;white-space:nowrap}
  .rtp-modal .caja{min-width:0;width:calc(100vw - 24px);max-width:520px;border-radius:12px}
  .header-extra,.toolbar{padding-bottom:8px}
}

@media (max-width: 480px){
  main{padding:14px 10px 44px}
  .brand-title{font-size:12px}
  .brand .logo img{height:30px}
  .chip-usuario{max-width:110px}
  .page-title{gap:8px}
  .tabla{font-size:12.5px}
  .tabla th,.tabla td{padding:6px 6px}
  .btn{padding:7px 10px}
  .rtp-modal .caja{padding:14px;width:calc(100vw - 16px)}
}

/* Impresión */
@media print{
  html,body{height:100%}
  body{background:#fff;display:flex;flex-direction:column}
  .rtp-header,.nav-menu,.toolbar,.banner-msg,.banner-rojo,.acciones-form,.no-print{display:none!important}
  .rtp-tip{display:none!important}
  main{max-width:none;padding:0;margin:0;display:flex;flex-direction:column;flex:1 1 auto}
  .card{box-shadow:none;border:0;padding:0;margin:0}
  #bf-region{display:flex;flex-direction:column;flex:1 1 auto}
  .bf-visor{padding:0;display:flex;flex-direction:column;flex:1 1 auto}
  .boletin{border:1px solid #000;margin:auto}
  .bf-tab th,.bf-tab td,.bf-mod th,.bf-mod td{border:0.5pt solid #9dc3e6}
  @page{size:letter landscape;margin:8mm}
}
.sortable-ghost{opacity:.4;background:var(--primary,#0f766e);color:#fff}