:root {
  --ink: #183044;
  --muted: #637485;
  --line: #dce5eb;
  --paper: #ffffff;
  --wash: #f3f7f8;
  --navy: #173f5f;
  --blue: #20639b;
  --teal: #3caea3;
  --gold: #f6c85f;
  --coral: #ed553b;
  --green: #2f855a;
  --shadow: 0 18px 45px rgba(23, 63, 95, .11);
  --radius: 18px;
  font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  color: var(--ink);
  background: var(--wash);
  font-synthesis: none;
}

* { box-sizing: border-box; }
body { margin: 0; min-width: 320px; min-height: 100vh; background: var(--wash); }
button, input, select, textarea { font: inherit; }
button { cursor: pointer; }
a { color: var(--blue); }
.hidden { display: none !important; }
.muted { color: var(--muted); }
.small { font-size: .84rem; }
.mono { font-family: ui-monospace, SFMono-Regular, Menlo, monospace; }

.boot-screen, .auth-shell {
  min-height: 100vh;
  display: grid;
  place-items: center;
  padding: 28px;
  background:
    radial-gradient(circle at 12% 12%, rgba(60, 174, 163, .22), transparent 31%),
    radial-gradient(circle at 88% 82%, rgba(246, 200, 95, .22), transparent 32%),
    linear-gradient(145deg, #f7fafb, #edf4f6);
}

.boot-screen { align-content: center; color: var(--muted); }
.brand-mark {
  width: 64px; height: 64px; border-radius: 20px; display: grid; place-items: center;
  color: white; font-weight: 850; letter-spacing: -.04em;
  background: linear-gradient(145deg, var(--navy), var(--teal));
  box-shadow: var(--shadow);
}

.auth-card {
  width: min(100%, 470px);
  padding: 36px;
  border: 1px solid rgba(220, 229, 235, .9);
  border-radius: 26px;
  background: rgba(255, 255, 255, .94);
  box-shadow: var(--shadow);
  backdrop-filter: blur(18px);
}

.auth-brand { display: flex; gap: 16px; align-items: center; margin-bottom: 28px; }
.auth-brand h1 { margin: 0; font-size: 1.55rem; letter-spacing: -.04em; }
.auth-brand p { margin: 3px 0 0; color: var(--muted); font-size: .9rem; }
.auth-card h2 { margin: 0 0 8px; font-size: 1.35rem; }
.auth-card > p { margin: 0 0 24px; line-height: 1.55; }

.field { display: grid; gap: 7px; margin-bottom: 16px; }
.field label { font-size: .84rem; font-weight: 750; color: #405568; }
.field input, .field select, .field textarea {
  width: 100%; border: 1px solid var(--line); border-radius: 12px; padding: 12px 13px;
  color: var(--ink); background: white; outline: none; transition: .18s ease;
}
.field input:focus, .field select:focus, .field textarea:focus {
  border-color: var(--teal); box-shadow: 0 0 0 4px rgba(60, 174, 163, .12);
}
.field textarea { resize: vertical; min-height: 92px; }
.field-hint { font-size: .78rem; color: var(--muted); line-height: 1.45; }
.form-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0 15px; }
.span-2 { grid-column: span 2; }

.btn {
  border: 0; border-radius: 12px; padding: 11px 16px; font-weight: 760;
  display: inline-flex; align-items: center; justify-content: center; gap: 8px;
  transition: transform .12s ease, opacity .12s ease, box-shadow .12s ease;
}
.btn:hover { transform: translateY(-1px); }
.btn:disabled { opacity: .55; cursor: wait; transform: none; }
.btn-primary { color: white; background: linear-gradient(135deg, var(--navy), var(--blue)); box-shadow: 0 8px 18px rgba(32, 99, 155, .2); }
.btn-secondary { color: var(--navy); background: #e8f0f4; }
.btn-ghost { color: var(--navy); background: transparent; border: 1px solid var(--line); }
.btn-danger { color: #9d2d20; background: #fff0ed; }
.btn-block { width: 100%; }
.actions { display: flex; gap: 10px; flex-wrap: wrap; align-items: center; }

.password-list { list-style: none; margin: -4px 0 18px; padding: 0; display: grid; grid-template-columns: 1fr 1fr; gap: 5px 10px; }
.password-list li { font-size: .78rem; color: var(--muted); }
.password-list li::before { content: "○"; margin-right: 6px; }
.password-list li.ok { color: var(--green); }
.password-list li.ok::before { content: "✓"; }

.app-shell { min-height: 100vh; display: grid; grid-template-columns: 245px 1fr; }
.sidebar {
  min-height: 100vh; position: sticky; top: 0; align-self: start; padding: 24px 16px;
  color: white; background: linear-gradient(180deg, #14374f, #173f5f 58%, #122f46);
}
.sidebar-brand { display: flex; gap: 12px; align-items: center; padding: 0 8px 26px; }
.sidebar-brand .brand-mark { width: 44px; height: 44px; border-radius: 14px; box-shadow: none; background: rgba(255,255,255,.14); }
.sidebar-brand strong { display: block; font-size: 1.06rem; }
.sidebar-brand span { color: rgba(255,255,255,.62); font-size: .76rem; }
.nav { display: grid; gap: 6px; }
.nav button {
  border: 0; border-radius: 12px; padding: 11px 12px; color: rgba(255,255,255,.74);
  background: transparent; text-align: left; font-weight: 680;
}
.nav button:hover, .nav button.active { color: white; background: rgba(255,255,255,.12); }
.nav button .icon { display: inline-block; width: 25px; }
.sidebar-footer { position: absolute; left: 16px; right: 16px; bottom: 18px; }
.btn-logout { color: white; border-color: rgba(255,255,255,.2); }
.loading-panel { min-height: 45vh; background: none; }
#preview, .panel > .actions, .privacy-grid + .card { margin-top: 18px; }
.user-chip { padding: 12px; border-radius: 14px; background: rgba(255,255,255,.1); margin-bottom: 8px; }
.user-chip strong { display: block; font-size: .88rem; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.user-chip span { color: rgba(255,255,255,.65); font-size: .76rem; }

.workspace { min-width: 0; }
.topbar {
  height: 74px; display: flex; align-items: center; justify-content: space-between;
  padding: 0 30px; background: rgba(255,255,255,.86); border-bottom: 1px solid var(--line);
  backdrop-filter: blur(14px); position: sticky; top: 0; z-index: 5;
}
.topbar h1 { margin: 0; font-size: 1.24rem; letter-spacing: -.025em; }
.topbar p { margin: 3px 0 0; font-size: .8rem; color: var(--muted); }
.menu-toggle { display: none; }
.content { padding: 28px 30px 55px; max-width: 1480px; margin: 0 auto; }

.hero {
  display: flex; justify-content: space-between; align-items: end; gap: 20px;
  margin-bottom: 24px; padding: 24px 26px; border-radius: var(--radius); color: white;
  background: linear-gradient(115deg, var(--navy), var(--blue) 62%, var(--teal));
  box-shadow: var(--shadow);
}
.hero h2 { margin: 0 0 7px; font-size: clamp(1.45rem, 3vw, 2.2rem); letter-spacing: -.045em; }
.hero p { margin: 0; max-width: 670px; color: rgba(255,255,255,.78); line-height: 1.55; }
.hero .eyebrow { color: var(--gold); text-transform: uppercase; font-size: .72rem; font-weight: 850; letter-spacing: .12em; }
.hero-badge { min-width: 120px; padding: 15px; text-align: center; border-radius: 16px; background: rgba(255,255,255,.13); }
.hero-badge strong { display: block; font-size: 1.8rem; }
.hero-badge span { font-size: .76rem; color: rgba(255,255,255,.7); }

.metric-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 16px; margin-bottom: 20px; }
.metric {
  background: var(--paper); border: 1px solid var(--line); border-radius: var(--radius); padding: 20px;
  box-shadow: 0 8px 25px rgba(23, 63, 95, .055);
}
.metric-label { color: var(--muted); font-size: .79rem; font-weight: 720; text-transform: uppercase; letter-spacing: .06em; }
.metric-value { margin: 7px 0 2px; font-size: 2rem; font-weight: 850; letter-spacing: -.05em; }
.metric-note { font-size: .78rem; color: var(--muted); }

.grid-2 { display: grid; grid-template-columns: minmax(0, 1.25fr) minmax(280px, .75fr); gap: 18px; }
.card { background: var(--paper); border: 1px solid var(--line); border-radius: var(--radius); box-shadow: 0 8px 25px rgba(23,63,95,.045); overflow: hidden; }
.card-header { display: flex; justify-content: space-between; gap: 14px; align-items: center; padding: 18px 20px; border-bottom: 1px solid var(--line); }
.card-header h3 { margin: 0; font-size: 1rem; }
.card-header p { margin: 3px 0 0; font-size: .78rem; color: var(--muted); }
.card-body { padding: 20px; }
.card + .card { margin-top: 18px; }

.table-wrap { overflow: auto; }
table { border-collapse: collapse; width: 100%; font-size: .86rem; }
th { color: var(--muted); font-size: .72rem; text-transform: uppercase; letter-spacing: .05em; text-align: left; }
th, td { padding: 12px 14px; border-bottom: 1px solid #e8eef2; white-space: nowrap; }
tbody tr:hover { background: #f8fbfc; }
.table-empty { padding: 34px; text-align: center; color: var(--muted); }

.badge { display: inline-flex; align-items: center; border-radius: 99px; padding: 5px 9px; font-size: .7rem; font-weight: 780; }
.badge-paes { background: #e8f0ff; color: #2f55a4; }
.badge-simce { background: #e5f8f3; color: #247d70; }
.badge-interna { background: #fff4dc; color: #8a6516; }
.badge-admin { background: #efeaff; color: #6045a5; }
.badge-analyst { background: #e8f0ff; color: #2f55a4; }
.badge-teacher { background: #e5f8f3; color: #247d70; }
.badge-student { background: #f1f3f5; color: #596775; }
.status-on { color: var(--green); font-weight: 700; }
.status-off { color: var(--coral); font-weight: 700; }

.bands { display: grid; gap: 16px; }
.band-line { display: grid; grid-template-columns: 78px 1fr 42px; gap: 10px; align-items: center; font-size: .8rem; }
progress.band-track { appearance: none; width: 100%; height: 9px; border: 0; border-radius: 99px; overflow: hidden; background: #edf2f4; }
progress.band-track::-webkit-progress-bar { background: #edf2f4; border-radius: 99px; }
progress.band-track::-webkit-progress-value { border-radius: 99px; }
progress.band-high::-webkit-progress-value { background: var(--teal); }
progress.band-medium::-webkit-progress-value { background: var(--gold); }
progress.band-low::-webkit-progress-value { background: var(--coral); }
progress.band-high::-moz-progress-bar { background: var(--teal); }
progress.band-medium::-moz-progress-bar { background: var(--gold); }
progress.band-low::-moz-progress-bar { background: var(--coral); }

.section-title { display: flex; justify-content: space-between; gap: 18px; align-items: end; margin-bottom: 18px; }
.section-title h2 { margin: 0; font-size: 1.45rem; letter-spacing: -.035em; }
.section-title p { margin: 5px 0 0; color: var(--muted); }
.panel { background: white; border: 1px solid var(--line); border-radius: var(--radius); padding: 22px; }
.import-steps { display: flex; gap: 8px; margin-bottom: 22px; }
.step { flex: 1; height: 5px; background: #e5ecef; border-radius: 99px; }
.step.active { background: var(--teal); }

.dropzone {
  border: 2px dashed #b9cbd5; border-radius: 16px; min-height: 165px;
  display: grid; place-items: center; text-align: center; padding: 24px; background: #f8fbfc;
}
.dropzone.drag { border-color: var(--teal); background: #eefaf7; }
.dropzone input { display: none; }
.dropzone strong { display: block; margin-bottom: 5px; }
.dropzone span { color: var(--muted); font-size: .84rem; }
.file-pill { display: inline-flex; margin-top: 10px; padding: 7px 11px; border-radius: 99px; color: var(--navy); background: #e6f0f4; font-size: .78rem; font-weight: 700; }

.notice { border-radius: 13px; padding: 13px 15px; line-height: 1.5; font-size: .84rem; margin-bottom: 16px; }
.notice-info { background: #eaf4fb; color: #245a7d; }
.notice-warn { background: #fff7e2; color: #765917; }
.notice-success { background: #e9f8f1; color: #236b4c; }
.notice-error { background: #fff0ed; color: #9d2d20; }

.privacy-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px; }
.control-card { padding: 16px; border: 1px solid var(--line); border-radius: 14px; }
.control-card strong { display: block; margin-bottom: 5px; }
.control-card p { margin: 0; color: var(--muted); line-height: 1.48; font-size: .82rem; }
.control-icon { width: 36px; height: 36px; display: grid; place-items: center; border-radius: 11px; background: #e7f5f2; margin-bottom: 11px; }

.toast-region { position: fixed; right: 22px; top: 22px; z-index: 30; display: grid; gap: 10px; }
.toast { width: min(360px, calc(100vw - 44px)); padding: 13px 15px; border-radius: 13px; color: white; background: var(--navy); box-shadow: var(--shadow); animation: toast-in .2s ease; }
.toast.error { background: #a4392b; }
.toast.success { background: #267052; }
@keyframes toast-in { from { opacity: 0; transform: translateY(-8px); } }

.modal-backdrop { position: fixed; inset: 0; z-index: 20; display: grid; place-items: center; padding: 20px; background: rgba(17,36,51,.52); backdrop-filter: blur(5px); }
.modal { width: min(760px, 100%); max-height: 88vh; overflow: auto; background: white; border-radius: 22px; box-shadow: var(--shadow); }
.modal-head { display: flex; justify-content: space-between; align-items: center; padding: 20px 22px; border-bottom: 1px solid var(--line); }
.modal-head h3 { margin: 0; }
.modal-body { padding: 22px; }
.icon-btn { border: 0; background: #edf2f4; width: 35px; height: 35px; border-radius: 10px; }

@media (max-width: 900px) {
  .app-shell { grid-template-columns: 1fr; }
  .sidebar { position: fixed; z-index: 12; width: 245px; transform: translateX(-105%); transition: .2s ease; }
  .sidebar.open { transform: translateX(0); }
  .menu-toggle { display: inline-flex; }
  .metric-grid { grid-template-columns: 1fr; }
  .grid-2 { grid-template-columns: 1fr; }
  .topbar { padding: 0 18px; }
  .content { padding: 20px 18px 45px; }
  .hero { align-items: flex-start; }
}

@media (max-width: 620px) {
  .auth-card { padding: 25px 20px; }
  .form-grid, .privacy-grid { grid-template-columns: 1fr; }
  .span-2 { grid-column: auto; }
  .hero { padding: 21px; }
  .hero-badge { display: none; }
  .section-title { align-items: flex-start; flex-direction: column; }
  .password-list { grid-template-columns: 1fr; }
}

/* Directorio de estudiantes y gestión de accesos */
.users-heading { margin-bottom: 20px; }
.user-metrics { margin-bottom: 18px; }
.user-filter-panel { margin-bottom: 18px; }
.user-filter-grid {
  display: grid;
  grid-template-columns: minmax(260px, 1.5fr) repeat(3, minmax(150px, .7fr)) auto;
  gap: 14px;
  align-items: end;
}
.user-filter-grid label {
  display: grid;
  gap: 7px;
  color: #405568;
  font-size: .8rem;
  font-weight: 750;
}
.user-filter-grid input,
.user-filter-grid select {
  min-height: 44px;
  border: 1px solid var(--line);
  border-radius: 11px;
  padding: 10px 12px;
  color: var(--ink);
  background: white;
  outline: none;
}
.user-filter-grid input:focus,
.user-filter-grid select:focus {
  border-color: var(--teal);
  box-shadow: 0 0 0 4px rgba(31, 155, 141, .11);
}
.user-clear { min-height: 44px; }
.user-directory-card .card-header { background: #fbfcfe; }
.user-row-actions { display: flex; gap: 6px; }
.btn-compact { padding: 8px 10px; border-radius: 9px; font-size: .76rem; }
.access-pill {
  display: inline-flex;
  align-items: center;
  border-radius: 99px;
  padding: 5px 9px;
  font-size: .72rem;
  font-weight: 780;
}
.access-ready { color: #19674f; background: #e4f5ee; }
.access-pending { color: #7c5b11; background: #fff3d3; }
.access-inactive { color: #9d2d20; background: #fff0ed; }
.modal-head p { margin: 4px 0 0; color: var(--muted); font-size: .82rem; }
.modal-actions { justify-content: flex-end; margin-top: 6px; }
.user-load-error { margin: 18px; }

@media (max-width: 1180px) {
  .user-filter-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .user-filter-grid .filter-wide { grid-column: span 2; }
}

@media (max-width: 620px) {
  .user-filter-grid { grid-template-columns: 1fr; }
  .user-filter-grid .filter-wide { grid-column: auto; }
  .users-heading .actions { width: 100%; }
  .users-heading .actions .btn { flex: 1; }
}

/* Renovación institucional basada en el portal Informe PAES M1 */
:root {
  --ink: #12263f;
  --muted: #64748b;
  --line: #dbe3ec;
  --paper: #ffffff;
  --wash: #f4f7fb;
  --navy: #0c315f;
  --navy-deep: #08274b;
  --blue: #2868b2;
  --blue-bright: #3f82dd;
  --teal: #1f9b8d;
  --gold: #f4c84a;
  --gold-deep: #d9a915;
  --coral: #db5a4e;
  --green: #24866c;
  --shadow: 0 16px 42px rgba(15, 49, 89, .10);
  --radius: 16px;
}

body { background: var(--wash); }

.login-shell {
  min-height: 100vh;
  display: grid;
  grid-template-columns: minmax(430px, 41%) 1fr;
  background: white;
}

.login-pane {
  display: flex;
  justify-content: center;
  padding: 64px clamp(36px, 6vw, 88px);
}

.login-inner {
  width: min(100%, 470px);
  display: flex;
  flex-direction: column;
  justify-content: center;
}

.school-logo {
  width: 58px;
  height: 62px;
  object-fit: contain;
  flex: 0 0 auto;
}

.institutional-brand {
  margin-bottom: 50px;
}

.institutional-brand h1 {
  font-size: 1.05rem;
  letter-spacing: -.02em;
}

.institutional-brand p {
  color: #66758a;
  font-size: .84rem;
}

.login-kicker,
.dashboard-kicker {
  color: var(--blue);
  font-size: .74rem;
  font-weight: 850;
  letter-spacing: .14em;
}

.login-title {
  max-width: 440px;
  margin: 12px 0 18px;
  color: #102f57;
  font-size: clamp(2.45rem, 4vw, 3.45rem);
  font-weight: 540;
  line-height: 1.03;
  letter-spacing: -.055em;
}

.login-copy {
  max-width: 430px;
  margin: 0 0 30px;
  color: #617083;
  font-size: 1rem;
  line-height: 1.6;
}

.login-form .field {
  margin-bottom: 18px;
}

.login-form .field label {
  color: #233a57;
  font-size: .9rem;
}

.login-form .field input {
  min-height: 55px;
  border-color: #aeb9c6;
  border-radius: 13px;
  padding: 14px 15px;
  font-size: 1rem;
}

.login-submit {
  min-height: 52px;
  margin-top: 8px;
  background: var(--navy);
  box-shadow: 0 10px 25px rgba(12, 49, 95, .18);
}

.login-privacy {
  margin: 34px auto 0;
  max-width: 360px;
  color: #8190a0;
  font-size: .78rem;
  line-height: 1.5;
  text-align: center;
}

.login-privacy::before {
  content: "▣";
  display: block;
  margin-bottom: 7px;
  color: #8290a0;
  font-size: 1.1rem;
}

.login-visual {
  position: relative;
  min-height: 100vh;
  overflow: hidden;
  color: white;
  background:
    linear-gradient(rgba(255,255,255,.035) 1px, transparent 1px),
    linear-gradient(90deg, rgba(255,255,255,.035) 1px, transparent 1px),
    radial-gradient(circle at 58% 44%, rgba(55, 126, 218, .72), transparent 39%),
    linear-gradient(140deg, #174c88, #0c315f 58%, #08274b);
  background-size: 48px 48px, 48px 48px, auto, auto;
}

.visual-orbit {
  position: absolute;
  left: 20%;
  top: 10%;
  width: 68%;
  aspect-ratio: 1;
  border: 1px solid rgba(255,255,255,.15);
  border-radius: 50%;
}

.orbit-two {
  left: 31%;
  top: 22%;
  width: 46%;
}

.insight-card {
  position: absolute;
  z-index: 2;
  border: 1px solid rgba(255,255,255,.22);
  border-radius: 22px;
  color: white;
  background: linear-gradient(145deg, rgba(65,135,226,.76), rgba(25,74,133,.68));
  box-shadow: 0 28px 65px rgba(3, 20, 41, .24);
  backdrop-filter: blur(10px);
}

.insight-card span {
  display: block;
  margin-bottom: 10px;
  color: rgba(255,255,255,.68);
  font-size: .82rem;
}

.insight-card strong {
  display: block;
  font-size: 1.55rem;
  line-height: 1.15;
}

.insight-main {
  left: 20%;
  top: 31%;
  width: min(390px, 48%);
  padding: 34px;
  transform: rotate(-4deg);
}

.insight-small {
  right: 9%;
  top: 25%;
  width: min(235px, 29%);
  padding: 28px;
  transform: rotate(5deg);
}

.insight-small strong {
  font-size: 1.05rem;
}

.mini-columns {
  display: flex;
  align-items: end;
  gap: 12px;
  height: 70px;
  margin-top: 26px;
}

.mini-columns i {
  flex: 1;
  height: 44%;
  border-radius: 9px 9px 3px 3px;
  background: rgba(244, 200, 74, .72);
}

.mini-columns i:nth-child(2) {
  height: 86%;
  background: var(--gold);
}

.mini-columns i:nth-child(3) {
  height: 62%;
}

.visual-message {
  position: absolute;
  left: 12%;
  bottom: 10%;
  z-index: 2;
  font-size: clamp(1.7rem, 3vw, 2.5rem);
  font-weight: 780;
  line-height: 1.1;
  letter-spacing: -.035em;
}

.btn-accent {
  color: #172d49;
  background: var(--gold);
  box-shadow: 0 10px 22px rgba(217, 169, 21, .2);
}

.app-shell {
  grid-template-columns: 272px 1fr;
}

.sidebar {
  padding: 26px 18px;
  background:
    radial-gradient(circle at 40% 0, rgba(52, 116, 193, .32), transparent 30%),
    linear-gradient(180deg, #0d3566, #092a50 60%, #071f3a);
}

.sidebar-brand {
  padding: 0 8px 32px;
}

.sidebar-logo {
  width: 44px;
  height: 48px;
  filter: drop-shadow(0 6px 10px rgba(0,0,0,.18));
}

.sidebar-brand strong {
  font-size: .98rem;
}

.sidebar-brand span {
  margin-top: 3px;
  font-size: .72rem;
}

.nav {
  gap: 7px;
}

.nav button {
  min-height: 44px;
  border-radius: 10px;
  padding: 11px 13px;
  color: rgba(255,255,255,.72);
  font-size: .9rem;
}

.nav button:hover,
.nav button.active {
  background: rgba(255,255,255,.12);
  box-shadow: inset 3px 0 0 var(--gold);
}

.topbar {
  height: 80px;
  padding: 0 34px;
  background: rgba(255,255,255,.94);
}

.topbar h1 {
  color: #183657;
  font-size: 1.18rem;
}

.topbar-user {
  display: flex;
  align-items: center;
  gap: 12px;
  text-align: right;
}

.topbar-user strong,
.topbar-user span {
  display: block;
}

.topbar-user strong {
  color: #1b3553;
  font-size: .84rem;
}

.topbar-user div > span {
  margin-top: 2px;
  color: var(--muted);
  font-size: .74rem;
}

.user-avatar {
  width: 40px;
  height: 40px;
  display: grid;
  place-items: center;
  border-radius: 50%;
  color: white;
  background: var(--navy);
  font-size: .76rem;
  font-weight: 850;
}

.content {
  max-width: 1540px;
  padding: 30px 34px 60px;
}

.dashboard-heading {
  display: flex;
  align-items: end;
  justify-content: space-between;
  gap: 24px;
  margin-bottom: 22px;
}

.dashboard-heading h2 {
  margin: 7px 0 5px;
  color: #102f57;
  font-size: clamp(1.65rem, 2.7vw, 2.3rem);
  letter-spacing: -.045em;
}

.dashboard-heading p {
  margin: 0;
  color: var(--muted);
}

.filter-panel {
  margin-bottom: 20px;
  padding: 16px 18px 18px;
  border: 1px solid var(--line);
  border-radius: var(--radius);
  background: white;
  box-shadow: 0 6px 20px rgba(15,49,89,.035);
}

.filter-title {
  display: flex;
  justify-content: space-between;
  margin-bottom: 12px;
  color: #344c68;
  font-size: .78rem;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: .08em;
}

.filter-clear {
  border: 0;
  padding: 0;
  color: var(--blue);
  background: transparent;
  font-size: .78rem;
  font-weight: 700;
  text-transform: none;
  letter-spacing: 0;
}

.filter-grid {
  display: grid;
  grid-template-columns: .75fr .85fr 1fr 1fr 1.5fr;
  gap: 12px;
}

.filter-grid label {
  display: grid;
  gap: 6px;
  color: #64748b;
  font-size: .73rem;
  font-weight: 700;
}

.filter-grid select {
  width: 100%;
  min-width: 0;
  height: 43px;
  border: 1px solid #d5dfE9;
  border-radius: 10px;
  padding: 0 11px;
  color: #203a58;
  background: #fbfcfe;
  outline: none;
}

.filter-grid select:focus {
  border-color: var(--blue);
  box-shadow: 0 0 0 3px rgba(40,104,178,.11);
}

.dashboard-loading {
  min-height: 260px;
  display: grid;
  place-items: center;
  color: var(--muted);
}

#dashboard-data.is-loading {
  opacity: .6;
  pointer-events: none;
}

.metric-grid-four {
  grid-template-columns: repeat(4, minmax(0, 1fr));
}

.metric {
  position: relative;
  min-height: 142px;
  overflow: hidden;
  border-color: #e0e7ef;
  box-shadow: 0 9px 25px rgba(15,49,89,.055);
}

.metric::after {
  content: "";
  position: absolute;
  right: -25px;
  bottom: -25px;
  width: 80px;
  height: 80px;
  border-radius: 50%;
  background: rgba(40,104,178,.06);
}

.metric::before {
  content: "";
  position: absolute;
  left: 0;
  top: 0;
  width: 100%;
  height: 4px;
  background: var(--blue);
}

.metric-students::before { background: var(--teal); }
.metric-coverage::before { background: var(--gold); }
.metric-evaluations::before { background: #7b69b5; }

.metric-label {
  color: #5f7084;
  font-size: .73rem;
}

.metric-value {
  color: #102f57;
  font-size: 2.15rem;
}

.analytics-grid {
  display: grid;
  grid-template-columns: minmax(300px, .82fr) minmax(420px, 1.18fr);
  gap: 18px;
  margin-bottom: 18px;
}

.analytics-grid-secondary {
  grid-template-columns: minmax(480px, 1.35fr) minmax(300px, .65fr);
}

.card {
  border-color: #e0e7ef;
  box-shadow: 0 9px 26px rgba(15,49,89,.045);
}

.card-header {
  min-height: 72px;
}

.card-header h3 {
  color: #1b3553;
  font-size: 1.02rem;
}

.data-total {
  color: var(--muted);
  font-size: .76rem;
}

.distribution-layout {
  min-height: 260px;
  display: grid;
  grid-template-columns: 180px 1fr;
  align-items: center;
  gap: 24px;
  padding: 24px;
}

.donut-chart {
  position: relative;
  width: 170px;
  height: 170px;
}

.donut-chart svg {
  width: 100%;
  height: 100%;
}

.donut-base,
.donut-segment {
  fill: none;
  stroke-width: 13;
}

.donut-base { stroke: #edf1f5; }
.donut-segment { stroke-linecap: butt; }
.donut-high { stroke: var(--teal); }
.donut-medium { stroke: var(--gold); }
.donut-low { stroke: var(--coral); }

.donut-chart > div {
  position: absolute;
  inset: 0;
  display: grid;
  align-content: center;
  justify-items: center;
}

.donut-chart strong {
  color: #17395f;
  font-size: 1.7rem;
}

.donut-chart span {
  color: var(--muted);
  font-size: .72rem;
}

.legend-list {
  display: grid;
  gap: 17px;
}

.legend-item {
  display: grid;
  grid-template-columns: 10px 1fr auto;
  align-items: center;
  gap: 10px;
}

.legend-dot {
  width: 9px;
  height: 9px;
  border-radius: 50%;
}

.legend-dot.high { background: var(--teal); }
.legend-dot.medium { background: var(--gold); }
.legend-dot.low { background: var(--coral); }

.legend-item strong,
.legend-item small {
  display: block;
}

.legend-item strong {
  color: #304965;
  font-size: .82rem;
}

.legend-item small {
  margin-top: 2px;
  color: var(--muted);
  font-size: .72rem;
}

.legend-item b {
  color: #1c3858;
  font-size: .86rem;
}

.comparison-list {
  min-height: 260px;
  display: grid;
  align-content: center;
  gap: 17px;
}

.comparison-row {
  display: grid;
  grid-template-columns: minmax(125px, 1fr) minmax(120px, 1.4fr) 52px;
  align-items: center;
  gap: 13px;
}

.comparison-label strong,
.comparison-label span {
  display: block;
}

.comparison-label strong {
  color: #29425f;
  font-size: .83rem;
}

.comparison-label span {
  margin-top: 2px;
  color: var(--muted);
  font-size: .68rem;
}

.comparison-row progress {
  appearance: none;
  width: 100%;
  height: 9px;
  overflow: hidden;
  border: 0;
  border-radius: 99px;
  background: #edf1f5;
}

.comparison-row progress::-webkit-progress-bar { background: #edf1f5; }
.comparison-row progress::-webkit-progress-value { background: linear-gradient(90deg, #2a69b5, #4e91df); border-radius: 99px; }
.comparison-row progress::-moz-progress-bar { background: #2a69b5; border-radius: 99px; }

.comparison-row b {
  color: #183657;
  font-size: .82rem;
  text-align: right;
}

.type-summary {
  display: grid;
  gap: 12px;
}

.type-card {
  display: grid;
  grid-template-columns: 74px 78px 1fr;
  align-items: center;
  gap: 10px;
  padding: 15px;
  border: 1px solid #e3e9f0;
  border-radius: 13px;
  background: #fbfcfe;
}

.type-card > strong {
  color: #17395f;
  font-size: 1.1rem;
}

.type-card small {
  color: var(--muted);
  font-size: .72rem;
}

.trend-chart {
  width: 100%;
  overflow-x: auto;
}

.trend-chart svg {
  width: 100%;
  min-width: 560px;
  height: auto;
}

.chart-grid {
  stroke: #e5ebf1;
  stroke-width: 1;
}

.chart-axis,
.chart-label {
  fill: #718096;
  font-size: 9px;
}

.trend-line {
  fill: none;
  stroke: var(--blue);
  stroke-width: 3;
  stroke-linejoin: round;
  stroke-linecap: round;
}

.trend-point {
  fill: white;
  stroke: var(--blue);
  stroke-width: 3;
}

.chart-method-note {
  margin: 14px 0 0;
  padding: 10px 12px;
  border-radius: 10px;
  color: var(--muted);
  background: #f4f7f9;
  font-size: .72rem;
  line-height: 1.45;
}

.recent-result-list {
  display: grid;
  gap: 14px;
}

.recent-result-row {
  display: grid;
  grid-template-columns: minmax(160px, 1.35fr) minmax(110px, 1fr) 50px;
  gap: 12px;
  align-items: center;
}

.recent-result-row strong,
.recent-result-row span { display: block; }
.recent-result-row strong { color: #29425f; font-size: .8rem; }
.recent-result-row span { margin-top: 3px; color: var(--muted); font-size: .67rem; }
.recent-result-row progress { width: 100%; height: 9px; accent-color: var(--blue); }
.recent-result-row b { color: #183657; font-size: .8rem; text-align: right; }

.priority-card,
.recent-card {
  margin-top: 18px;
}

.attention-badge {
  min-width: 32px;
  height: 32px;
  display: grid;
  place-items: center;
  border-radius: 99px;
  color: #9a3d34;
  background: #fff0ee;
  font-size: .8rem;
  font-weight: 850;
}

.score-low {
  display: inline-flex;
  min-width: 58px;
  justify-content: center;
  padding: 5px 8px;
  border-radius: 99px;
  color: #a23e34;
  background: #fff0ee;
  font-weight: 800;
}

.empty-dashboard {
  min-height: 320px;
  display: grid;
  place-items: center;
  align-content: center;
  gap: 10px;
  margin-bottom: 18px;
  padding: 35px;
  border: 1px dashed #cbd7e3;
  border-radius: var(--radius);
  color: var(--muted);
  background: white;
  text-align: center;
}

.empty-dashboard h3,
.empty-dashboard p {
  margin: 0;
}

.empty-dashboard h3 { color: #1b3859; }
.empty-dashboard p { max-width: 520px; }
.empty-icon { color: var(--blue); font-size: 2rem; }
.table-empty.compact { padding: 26px; }

.modal {
  width: min(1040px, 100%);
}

.evaluation-modal-head h3 {
  margin: 9px 0 5px;
  color: #17395f;
  font-size: 1.35rem;
}

.detail-metrics {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 12px;
  margin-bottom: 18px;
}

.detail-metric {
  padding: 15px;
  border: 1px solid #e2e8f0;
  border-radius: 13px;
  background: #f8fafc;
}

.detail-metric span,
.detail-metric strong {
  display: block;
}

.detail-metric span {
  color: var(--muted);
  font-size: .72rem;
}

.detail-metric strong {
  margin-top: 5px;
  color: #17395f;
  font-size: 1.25rem;
}

.detail-analysis {
  display: grid;
  grid-template-columns: 1fr 170px;
  gap: 20px;
  align-items: center;
  margin-bottom: 20px;
  padding: 18px;
  border-radius: 14px;
  background: #f4f7fb;
}

.detail-analysis h4 {
  margin: 0 0 14px;
  color: #29425f;
}

.compact-bands {
  gap: 9px;
}

.detail-note {
  display: grid;
  place-items: center;
  min-height: 105px;
  border-radius: 13px;
  color: white;
  background: linear-gradient(145deg, var(--navy), var(--blue));
}

.detail-note strong {
  font-size: 1.55rem;
}

.detail-note span {
  color: rgba(255,255,255,.72);
  font-size: .72rem;
}

@media (max-width: 1180px) {
  .filter-grid { grid-template-columns: repeat(3, 1fr); }
  .filter-wide { grid-column: span 2; }
  .metric-grid-four { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .analytics-grid,
  .analytics-grid-secondary { grid-template-columns: 1fr; }
}

@media (max-width: 900px) {
  .login-shell { grid-template-columns: 1fr; }
  .login-pane { min-height: 100vh; padding: 42px 24px; }
  .login-visual { display: none; }
  .institutional-brand { margin-bottom: 38px; }
  .app-shell { grid-template-columns: 1fr; }
  .topbar-user > div { display: none; }
}

@media (max-width: 680px) {
  .content { padding: 22px 16px 46px; }
  .topbar { padding: 0 16px; }
  .dashboard-heading { align-items: flex-start; flex-direction: column; }
  .dashboard-heading .btn { width: 100%; }
  .filter-grid { grid-template-columns: 1fr; }
  .filter-wide { grid-column: auto; }
  .metric-grid-four { grid-template-columns: 1fr; }
  .distribution-layout { grid-template-columns: 1fr; justify-items: center; }
  .legend-list { width: 100%; }
  .comparison-row { grid-template-columns: 1fr 58px; }
  .comparison-label { grid-column: span 2; }
  .detail-metrics { grid-template-columns: repeat(2, 1fr); }
  .detail-analysis { grid-template-columns: 1fr; }
  .topbar p { display: none; }
  .login-title { font-size: 2.5rem; }
}


/* Informe académico avanzado */
.import-detail-summary {
  display: grid;
  grid-template-columns: 170px 180px 1fr;
  gap: 12px;
  align-items: stretch;
  margin: 18px 0;
}

.import-detail-summary > div {
  display: grid;
  padding: 14px 16px;
  border: 1px solid #e2e8f0;
  border-radius: 13px;
  background: #f8fafc;
}

.import-detail-summary > div.ready {
  border-color: rgba(31,155,141,.32);
  background: #eef9f7;
}

.import-detail-summary strong {
  color: #17395f;
  font-size: 1.35rem;
}

.import-detail-summary span {
  color: var(--muted);
  font-size: .72rem;
}

.import-detail-summary p {
  display: flex;
  align-items: center;
  margin: 0;
  padding: 13px 15px;
  border-radius: 13px;
  color: #52677f;
  background: #f1f5f9;
  font-size: .8rem;
  line-height: 1.45;
}

.report-tabbar {
  display: flex;
  gap: 3px;
  overflow-x: auto;
  padding: 0 20px;
  border-bottom: 1px solid var(--line);
  background: #fbfcfe;
}

.report-tabbar button {
  flex: 0 0 auto;
  border: 0;
  border-bottom: 3px solid transparent;
  padding: 14px 13px 11px;
  color: #66778b;
  background: transparent;
  font-size: .8rem;
  font-weight: 760;
}

.report-tabbar button:hover,
.report-tabbar button.active {
  color: #17457b;
  border-bottom-color: var(--blue);
}

.report-modal-body {
  min-height: 520px;
}

[data-report-panel][hidden] {
  display: none;
}

.section-heading-inline {
  display: flex;
  justify-content: space-between;
  margin: 25px 0 12px;
}

.section-heading-inline h4,
.section-heading-inline p {
  margin: 0;
}

.section-heading-inline h4 {
  color: #1c395a;
  font-size: 1rem;
}

.section-heading-inline p {
  margin-top: 3px;
  color: var(--muted);
  font-size: .76rem;
}

.priority-spotlight {
  display: grid;
  grid-template-columns: 70px 1fr;
  gap: 20px;
  margin-top: 20px;
  padding: 24px;
  border-radius: 16px;
  color: white;
  background:
    radial-gradient(circle at 90% 20%, rgba(70,142,225,.48), transparent 35%),
    linear-gradient(130deg, #0c315f, #174e8c);
}

.priority-number {
  display: grid;
  place-items: center;
  width: 58px;
  height: 58px;
  border: 1px solid rgba(255,255,255,.25);
  border-radius: 16px;
  color: var(--gold);
  font-size: 1.25rem;
  font-weight: 850;
}

.priority-spotlight .dashboard-kicker {
  margin: 0 0 6px;
  color: var(--gold);
}

.priority-spotlight h4 {
  margin: 0 0 7px;
  font-size: 1.3rem;
}

.priority-spotlight p:not(.dashboard-kicker) {
  max-width: 760px;
  margin: 0;
  color: rgba(255,255,255,.78);
  line-height: 1.5;
}

.priority-meta {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-top: 15px;
}

.priority-meta span {
  padding: 6px 9px;
  border-radius: 99px;
  color: rgba(255,255,255,.82);
  background: rgba(255,255,255,.11);
  font-size: .7rem;
}

.report-section-head {
  max-width: 760px;
  margin-bottom: 24px;
}

.report-section-head p,
.report-section-head h4 {
  margin: 0;
}

.report-section-head .dashboard-kicker {
  margin-bottom: 7px;
}

.report-section-head h4 {
  color: #15375d;
  font-size: 1.5rem;
  letter-spacing: -.03em;
}

.report-section-head h4 + p {
  margin-top: 8px;
  color: var(--muted);
  line-height: 1.55;
}

.analysis-bars {
  display: grid;
  gap: 14px;
  padding: 20px;
  border: 1px solid #e2e8f0;
  border-radius: 15px;
  background: #fbfcfe;
}

.analysis-bar-row {
  display: grid;
  grid-template-columns: minmax(180px, .85fr) minmax(220px, 1.4fr) 60px;
  gap: 16px;
  align-items: center;
}

.analysis-bar-row div strong,
.analysis-bar-row div span {
  display: block;
}

.analysis-bar-row div strong {
  color: #284360;
  font-size: .86rem;
}

.analysis-bar-row div span {
  margin-top: 3px;
  color: var(--muted);
  font-size: .7rem;
}

.analysis-bar-row progress,
.skill-report-card progress {
  appearance: none;
  width: 100%;
  height: 10px;
  overflow: hidden;
  border: 0;
  border-radius: 99px;
  background: #e8edf3;
}

.analysis-bar-row progress::-webkit-progress-bar,
.skill-report-card progress::-webkit-progress-bar { background: #e8edf3; }
.analysis-bar-row progress::-webkit-progress-value,
.skill-report-card progress::-webkit-progress-value { background: linear-gradient(90deg, #2868b2, #5291dc); border-radius: 99px; }
.analysis-bar-row progress::-moz-progress-bar,
.skill-report-card progress::-moz-progress-bar { background: #2868b2; border-radius: 99px; }

.analysis-bar-row > b {
  color: #15375d;
  font-size: .86rem;
  text-align: right;
}

.skill-report-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 14px;
}

.skill-report-card {
  padding: 19px;
  border: 1px solid #e1e8ef;
  border-radius: 15px;
  background: #fbfcfe;
}

.skill-report-card > div {
  display: flex;
  justify-content: space-between;
  gap: 12px;
  align-items: center;
  margin-bottom: 14px;
}

.skill-report-card h5 {
  margin: 0;
  color: #29445f;
  font-size: .95rem;
}

.skill-report-card > div strong {
  color: #17395f;
  font-size: 1.2rem;
}

.skill-report-card p {
  margin: 12px 0 0;
  color: var(--muted);
  font-size: .74rem;
}

.skill-report-card.tone-high { border-top: 4px solid var(--teal); }
.skill-report-card.tone-medium { border-top: 4px solid var(--gold); }
.skill-report-card.tone-low { border-top: 4px solid var(--coral); }

.objective-priority-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 14px;
  margin-bottom: 22px;
}

.objective-priority-grid article {
  position: relative;
  min-height: 245px;
  padding: 20px;
  border: 1px solid #dfe7ef;
  border-radius: 15px;
  background: white;
  box-shadow: 0 8px 22px rgba(15,49,89,.045);
}

.priority-index {
  position: absolute;
  right: 15px;
  top: 12px;
  color: #d7e0ea;
  font-size: 1.45rem;
  font-weight: 900;
}

.objective-code {
  display: inline-flex;
  padding: 5px 8px;
  border-radius: 7px;
  color: #285f9e;
  background: #edf4fc;
  font-size: .68rem;
  font-weight: 800;
}

.objective-priority-grid h5 {
  min-height: 44px;
  margin: 15px 0 12px;
  color: #213d5b;
  font-size: .98rem;
  line-height: 1.35;
}

.objective-card-score {
  display: flex;
  align-items: end;
  gap: 10px;
  margin-bottom: 13px;
}

.objective-card-score strong {
  color: #17395f;
  font-size: 1.6rem;
}

.objective-card-score span {
  padding-bottom: 4px;
  color: var(--muted);
  font-size: .7rem;
}

.objective-priority-grid p {
  margin: 0;
  color: #607287;
  font-size: .77rem;
  line-height: 1.48;
}

.objective-table {
  border: 1px solid #e2e8f0;
  border-radius: 14px;
  overflow: hidden;
}

.question-map {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(68px, 1fr));
  gap: 9px;
}

.question-cell {
  min-height: 68px;
  display: grid;
  place-items: center;
  align-content: center;
  border: 1px solid transparent;
  border-radius: 12px;
}

.question-cell strong {
  font-size: .95rem;
}

.question-cell span {
  margin-top: 3px;
  font-size: .68rem;
}

.question-cell.correct {
  color: #17664f;
  border-color: #bde4d7;
  background: #e8f7f1;
}

.question-cell.medium {
  color: #7b5b0d;
  border-color: #f0d98d;
  background: #fff7d9;
}

.question-cell.incorrect {
  color: #9c3c33;
  border-color: #efc5c0;
  background: #fff0ee;
}

.question-cell.omitted {
  color: #627284;
  border-color: #d8e0e8;
  background: #f1f4f7;
}

.question-legend {
  display: flex;
  flex-wrap: wrap;
  gap: 18px;
  margin-top: 16px;
  color: var(--muted);
  font-size: .75rem;
}

.question-legend span {
  display: inline-flex;
  align-items: center;
  gap: 7px;
}

.question-legend i {
  width: 9px;
  height: 9px;
  border-radius: 50%;
}

.question-legend .correct { background: var(--teal); }
.question-legend .medium { background: var(--gold); }
.question-legend .incorrect { background: var(--coral); }

.study-sessions {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 14px;
}

.study-sessions article {
  padding: 21px;
  border: 1px solid #dfe7ef;
  border-radius: 15px;
  background: linear-gradient(180deg, #fff, #f8fafc);
}

.study-sessions article > span {
  color: var(--blue);
  font-size: .72rem;
  font-weight: 850;
  text-transform: uppercase;
  letter-spacing: .08em;
}

.study-sessions h5 {
  margin: 9px 0 15px;
  color: #1d3a5a;
  font-size: 1rem;
}

.study-sessions ol {
  margin: 0;
  padding-left: 20px;
  color: #52677e;
  font-size: .78rem;
  line-height: 1.55;
}

.study-sessions p {
  margin: 16px 0 0;
  padding-top: 13px;
  border-top: 1px solid #e2e8f0;
  color: #304d6c;
  font-size: .77rem;
  line-height: 1.5;
}

@media (max-width: 820px) {
  .import-detail-summary { grid-template-columns: 1fr 1fr; }
  .import-detail-summary p { grid-column: span 2; }
  .objective-priority-grid,
  .study-sessions { grid-template-columns: 1fr; }
}

@media (max-width: 620px) {
  .report-modal-body { padding: 17px; }
  .detail-metrics,
  .skill-report-grid { grid-template-columns: 1fr; }
  .analysis-bar-row { grid-template-columns: 1fr 55px; }
  .analysis-bar-row div { grid-column: span 2; }
  .priority-spotlight { grid-template-columns: 1fr; }
  .import-detail-summary { grid-template-columns: 1fr; }
  .import-detail-summary p { grid-column: auto; }
}


/* Importador universal de evaluaciones */
.multi-dropzone {
  min-height: 190px;
  cursor: pointer;
}

.import-source-grid {
  display: grid;
  grid-template-columns: 1.35fr 1fr;
  gap: 14px;
}

.specification-dropzone {
  min-height: 190px;
  cursor: pointer;
  border-color: #8fcfc1;
  background: #f1fbf8;
}

.upload-step {
  display: grid !important;
  place-items: center;
  width: 30px;
  height: 30px;
  margin: 0 auto 10px;
  border-radius: 99px;
  color: white !important;
  background: var(--teal);
  font-weight: 800;
}

.import-drop-hint {
  margin: 12px 0 0;
  text-align: center;
}

@media (max-width: 760px) {
  .import-source-grid { grid-template-columns: 1fr; }
  .multi-dropzone,
  .specification-dropzone { min-height: 145px; }
}

.file-pill-list {
  display: grid;
  gap: 8px;
  width: min(680px, 100%);
  margin: 14px auto 0;
}

.file-pill.file-detected {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 16px;
  width: 100%;
  margin-top: 0;
  border: 1px solid #cfe2ea;
  border-radius: 12px;
  padding: 10px 12px;
  text-align: left;
}

.file-pill.file-detected strong {
  overflow: hidden;
  margin: 0;
  color: #17395f;
  font-size: .78rem;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.file-pill.file-detected small {
  flex: 0 0 auto;
  color: #4d6b7c;
  font-size: .68rem;
  font-weight: 700;
}

.file-pill.file-unknown {
  border-color: #ecd9a7;
  background: #fff8e8;
}

.import-engine-head {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 18px;
  margin: 22px 0 8px;
}

.import-engine-head h3,
.import-engine-head p {
  margin: 0;
}

.import-engine-head h3 {
  color: #17395f;
  font-size: 1.2rem;
}

.import-engine-head > span {
  border-radius: 99px;
  padding: 7px 11px;
  color: #27675e;
  background: #e9f7f4;
  font-size: .72rem;
  font-weight: 800;
}

.import-detail-summary.universal-summary {
  grid-template-columns: repeat(6, minmax(0, 1fr));
  margin-top: 10px;
}

.import-detail-summary.universal-summary > div {
  min-width: 0;
  padding: 13px 12px;
}

.auto-create-option {
  display: flex;
  align-items: flex-start;
  gap: 11px;
  border: 1px solid #cfe2ea;
  border-radius: 13px;
  padding: 13px 14px;
  color: #24445e;
  background: #f4fafc;
  cursor: pointer;
}

.auto-create-option input {
  width: 18px;
  height: 18px;
  margin-top: 2px;
  accent-color: var(--blue);
}

.auto-create-option span,
.auto-create-option strong,
.auto-create-option small {
  display: block;
}

.auto-create-option strong {
  font-size: .84rem;
}

.auto-create-option small {
  margin-top: 3px;
  color: var(--muted);
  font-size: .72rem;
  line-height: 1.4;
}

@media (max-width: 980px) {
  .import-detail-summary.universal-summary {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
}

@media (max-width: 620px) {
  .file-pill.file-detected,
  .import-engine-head {
    align-items: flex-start;
    flex-direction: column;
  }

  .file-pill.file-detected small {
    flex: auto;
  }

  .import-detail-summary.universal-summary {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}


/* Comparación histórica */
.history-heading { margin-bottom: 20px; }
.history-view-tabs { display: inline-flex; gap: 4px; margin: 0 0 16px; padding: 4px; border: 1px solid var(--line); border-radius: 12px; background: #eef3f5; }
.history-view-tab { border: 0; border-radius: 9px; padding: 9px 15px; color: var(--muted); background: transparent; font: inherit; font-size: .8rem; font-weight: 800; cursor: pointer; }
.history-view-tab.active { color: var(--navy); background: white; box-shadow: 0 3px 10px rgba(24, 60, 83, .1); }
.is-disabled { opacity: .52; }
.history-filter-grid { grid-template-columns: minmax(220px, 1.5fr) repeat(3, minmax(130px, 1fr)); }
.history-filter-note { margin: 2px 0 0; color: var(--muted); font-size: .78rem; line-height: 1.5; }
.history-metrics { margin-top: 20px; }
.metric-positive .metric-value { color: var(--green); }
.metric-negative .metric-value { color: var(--coral); }
.metric-neutral .metric-value { color: var(--blue); }

.history-movement-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 14px;
  margin: 18px 0;
}
.movement-card {
  display: grid;
  gap: 5px;
  padding: 17px 18px;
  border: 1px solid var(--line);
  border-radius: 16px;
  background: var(--paper);
  box-shadow: 0 8px 22px rgba(23, 63, 95, .045);
}
.movement-card > span {
  color: var(--muted);
  font-size: .76rem;
  font-weight: 780;
  letter-spacing: .04em;
  text-transform: uppercase;
}
.movement-card strong { font-size: 1.8rem; letter-spacing: -.04em; }
.movement-card small { color: var(--muted); line-height: 1.35; }
.movement-improved { border-top: 4px solid var(--teal); }
.movement-stable { border-top: 4px solid var(--gold); }
.movement-declined, .movement-priority { border-top: 4px solid var(--coral); }

.decision-summary { margin: 18px 0; padding: 20px; border-radius: 18px; color: white; background: linear-gradient(135deg, #123d67, #176f78); box-shadow: 0 14px 34px rgba(18, 61, 103, .16); }
.decision-summary-head { display: flex; align-items: end; justify-content: space-between; gap: 16px; margin-bottom: 14px; }
.decision-summary-head span { font-size: .68rem; font-weight: 850; letter-spacing: .1em; opacity: .75; }
.decision-summary-head h3 { margin: 4px 0 0; font-size: 1.2rem; }
.decision-summary-head small { max-width: 280px; text-align: right; opacity: .8; }
.decision-summary-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px; }
.decision-summary-grid article { padding: 13px; border: 1px solid rgba(255,255,255,.17); border-radius: 12px; background: rgba(255,255,255,.08); }
.decision-summary-grid span { font-size: .7rem; font-weight: 850; text-transform: uppercase; letter-spacing: .05em; }
.decision-summary-grid p { margin: 7px 0 0; font-size: .82rem; line-height: 1.45; }
.history-quality-grid { display: grid; grid-template-columns: 1.15fr .85fr 1.25fr; gap: 14px; margin: 18px 0; align-items: stretch; }
.history-quality-grid .card { margin: 0; }
.confidence-card .card-header strong { padding: 6px 9px; border-radius: 99px; font-size: .75rem; }
.confidence-high .card-header strong { color: #17644b; background: #e2f5ed; }
.confidence-medium .card-header strong { color: #775914; background: #fff4d5; }
.confidence-low .card-header strong { color: #983827; background: #ffede9; }
.confidence-card progress { width: 100%; height: 10px; accent-color: var(--teal); }
.confidence-card ul { margin: 10px 0 0; padding-left: 18px; color: var(--muted); font-size: .76rem; line-height: 1.5; }
.distribution-metrics { display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px; padding: 18px; }
.distribution-metrics div { padding: 11px; border-radius: 10px; background: #f3f7f8; }
.distribution-metrics span, .distribution-metrics strong { display: block; }
.distribution-metrics span { color: var(--muted); font-size: .68rem; font-weight: 760; text-transform: uppercase; }
.distribution-metrics strong { margin-top: 5px; font-size: 1.05rem; }
.transition-summary { display: flex; flex-wrap: wrap; gap: 7px; padding: 0 18px 10px; }
.transition-summary span { padding: 5px 8px; border-radius: 99px; color: #526879; background: #edf2f4; font-size: .7rem; font-weight: 780; }
.transition-summary .up { color: #17644b; background: #e2f5ed; }
.transition-summary .down { color: #983827; background: #ffede9; }
.transition-card table { font-size: .72rem; }

.data-mining-card { min-height: 100%; }
.insight-list { display: grid; gap: 13px; margin: 0; padding: 0; list-style: none; }
.insight-list li { display: grid; grid-template-columns: 34px 1fr; gap: 10px; align-items: start; }
.insight-list li > span {
  display: grid;
  place-items: center;
  width: 30px;
  height: 30px;
  border-radius: 9px;
  color: var(--navy);
  background: #e7f5f2;
  font-size: .72rem;
  font-weight: 850;
}
.insight-list p { margin: 3px 0 0; color: #405568; font-size: .84rem; line-height: 1.5; }
.history-table-card { margin-top: 18px; }
.history-detail-grid { margin-top: 18px; align-items: start; }
.history-detail-grid .card { margin-top: 0; }
.history-delta {
  display: inline-flex;
  min-width: 64px;
  justify-content: center;
  padding: 5px 8px;
  border-radius: 99px;
  font-size: .76rem;
  font-weight: 820;
}
.history-delta.positive { color: #206a4a; background: #e6f6ee; }
.history-delta.negative { color: #a3382b; background: #fff0ed; }
.history-delta.neutral { color: #526879; background: #edf2f4; }
.notice-link {
  border: 0;
  padding: 0;
  color: inherit;
  background: transparent;
  font: inherit;
  font-weight: 800;
  text-decoration: underline;
  cursor: pointer;
}
.history-date-missing,
.import-date-alert {
  color: #9d3d25 !important;
  font-weight: 780;
}

/* Acceso docente por múltiples cursos */
.is-hidden { display: none !important; }
#edit-teacher-courses { grid-column: 1 / -1; }
.course-access-field {
  border: 1px solid var(--line);
  border-radius: 14px;
  padding: 14px;
  margin: 0;
  min-width: 0;
}
.course-access-field legend { padding: 0 6px; color: var(--ink); font-weight: 800; }
.course-access-field p { margin: 0 0 12px; color: var(--muted); font-size: .8rem; }
.course-check-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; }
.course-check-grid label {
  display: flex;
  align-items: center;
  gap: 8px;
  border: 1px solid #dce6eb;
  border-radius: 10px;
  padding: 9px 10px;
  background: #f8fbfc;
  color: #314b5f;
  font-size: .8rem;
  font-weight: 700;
}
.course-check-grid input { accent-color: var(--teal); }
.course-pill-list { display: flex; flex-wrap: wrap; gap: 5px; min-width: 150px; }
.course-pill-list span {
  padding: 4px 7px;
  border-radius: 99px;
  background: #e8f3f5;
  color: #24576a;
  font-size: .7rem;
  font-weight: 780;
}

/* Comparación longitudinal, brechas e intervención */
.history-report-actions {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  margin-bottom: 14px;
  padding: 14px 16px;
  border: 1px solid #cfe0e5;
  border-radius: 14px;
  background: linear-gradient(135deg, #f2f8fa, #fff);
}
.history-report-actions > div:first-child { display: grid; gap: 3px; }
.history-report-actions span { color: var(--muted); font-size: .78rem; }
.validation-panel { display: grid; gap: 8px; margin: 14px 0; }
.validation-head { display: flex; justify-content: space-between; color: var(--ink); }
.validation-head span { color: var(--muted); font-size: .78rem; }
.validation-item { display: grid; grid-template-columns: 80px 1fr; gap: 10px; padding: 10px 12px; border-radius: 10px; }
.validation-item p { margin: 0; font-size: .82rem; }
.validation-high { color: #873426; background: #fff0ed; border-left: 4px solid #d85a46; }
.validation-medium { color: #725613; background: #fff7dc; border-left: 4px solid #d5a62f; }
.history-matrix { min-width: 980px; }
.history-matrix th { white-space: nowrap; }
.history-matrix td { vertical-align: top; }
.score-high { color: #19674f; font-weight: 800; }
.score-medium { color: #80611c; font-weight: 800; }
.trajectory-pill, .priority-pill {
  display: inline-flex;
  border-radius: 99px;
  padding: 5px 8px;
  font-size: .7rem;
  font-weight: 800;
  white-space: nowrap;
}
.trajectory-sustained_improvement, .trajectory-improved, .trajectory-recovery { color: #17644b; background: #e2f5ed; }
.trajectory-sustained_decline, .trajectory-declined, .trajectory-recent_drop { color: #983827; background: #ffede9; }
.trajectory-variable { color: #775914; background: #fff4d5; }
.trajectory-stable { color: #506578; background: #edf2f5; }
.trajectory-baseline { color: #245d8b; background: #e5f1fa; }
.priority-high { color: #983827; background: #ffede9; }
.priority-medium { color: #775914; background: #fff4d5; }
.history-gap-grid { margin-top: 18px; align-items: start; }
.history-gap-grid .card { margin-top: 0; }
.intervention-section { margin-top: 26px; }
.intervention-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px; }
.intervention-card { border: 1px solid var(--line); border-radius: 16px; padding: 18px; background: #fff; }
.intervention-priority { border-top: 4px solid #d85a46; }
.intervention-focused { border-top: 4px solid #d5a62f; }
.intervention-monitor { border-top: 4px solid #4b86b4; }
.intervention-deepen { border-top: 4px solid #2b9a74; }
.intervention-title { display: grid; gap: 6px; }
.intervention-title > div { display: flex; justify-content: space-between; gap: 12px; }
.intervention-title span { font-weight: 820; color: var(--ink); }
.intervention-title small { color: var(--muted); line-height: 1.4; }
.intervention-students { display: flex; flex-wrap: wrap; gap: 5px; margin: 12px 0; }
.intervention-students span, .intervention-students em { padding: 5px 8px; border-radius: 8px; background: #eef5f7; color: #36566a; font-size: .7rem; font-style: normal; }
.intervention-card ol { margin: 14px 0 0; padding-left: 20px; color: #405568; font-size: .8rem; line-height: 1.5; }
.intervention-save { margin-top: 14px; }
.oa-source-link { display: inline-flex; margin-top: 4px; color: #176f78; font-size: .7rem; font-weight: 800; text-decoration: none; }
.oa-source-link:hover { text-decoration: underline; }
.oa-action-row td { padding-top: 4px !important; color: #405568; background: #f4faf9; font-size: .76rem; }
.not-taken { color: #8a98a3; font-size: .7rem; font-weight: 700; white-space: nowrap; }
.standard-score-inline { color: #176f78; font-size: .68rem; font-weight: 800; white-space: nowrap; }
.standard-score-notice { margin: 0 16px 16px; padding: 10px 12px; border-radius: 10px; color: #405568; background: #f1f7f8; font-size: .75rem; line-height: 1.45; }
.standard-score-notice a { margin-left: 5px; color: #176f78; font-weight: 800; }
#saved-interventions { margin-top: 26px; }
.followup-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px; }
.followup-card { padding: 17px; border: 1px solid var(--line); border-radius: 15px; background: white; }
.followup-card > div:first-child { display: flex; justify-content: space-between; gap: 10px; }
.followup-card h3 { margin: 12px 0 8px; font-size: .95rem; }
.followup-card p, .followup-card li { color: #405568; font-size: .78rem; line-height: 1.45; }
.followup-card ul { padding-left: 18px; }
.followup-status, .confidence-pill { display: inline-flex; padding: 5px 8px; border-radius: 99px; font-size: .68rem; font-weight: 820; }
.status-planned, .confidence-pill.confidence-medium { color: #775914; background: #fff4d5; }
.status-in_progress { color: #245d8b; background: #e5f1fa; }
.status-completed, .confidence-pill.confidence-high { color: #17644b; background: #e2f5ed; }
.status-cancelled, .confidence-pill.confidence-low { color: #983827; background: #ffede9; }
.followup-evidence { padding: 9px; border-radius: 9px; background: #f3f7f8; }
.intervention-cycle-meta { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 7px; margin: 12px 0; }
.intervention-cycle-meta span { display: grid; gap: 2px; padding: 8px; border-radius: 9px; background: #f4f7f8; color: var(--muted); font-size: .66rem; }
.intervention-cycle-meta strong { color: var(--ink); font-size: .75rem; }
.outcome-improved { color: #167454 !important; }
.outcome-stable { color: #82610f !important; }
.outcome-declined { color: #aa3f36 !important; }
.outcome-pending, .outcome-unavailable { color: #567083 !important; }
.intervention-audience { margin: 16px 0; padding: 14px; border: 1px solid var(--line); border-radius: 12px; }
.intervention-audience legend { padding: 0 6px; color: var(--ink); font-weight: 800; }
.intervention-audience > p { margin: 0 0 10px; color: var(--muted); font-size: .76rem; }
.intervention-audience > div { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 6px; max-height: 220px; overflow: auto; margin-top: 8px; }
.intervention-audience label { display: flex; align-items: center; gap: 7px; padding: 7px 9px; border-radius: 8px; background: #f5f8f9; font-size: .74rem; }
.intervention-audience label span { flex: 1; }
.intervention-audience label small { color: var(--muted); }
.intervention-cycle-modal { display: grid; gap: 18px; }
.cycle-summary { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 9px; }
.cycle-summary > div { display: grid; gap: 4px; padding: 12px; border: 1px solid var(--line); border-radius: 11px; background: #f8fbfb; }
.cycle-summary span { color: var(--muted); font-size: .68rem; text-transform: uppercase; letter-spacing: .04em; }
.cycle-summary strong { color: var(--ink); font-size: .82rem; }
.cycle-audience { padding: 10px 12px; border: 1px solid var(--line); border-radius: 10px; }
.cycle-audience summary { cursor: pointer; color: var(--ink); font-weight: 760; font-size: .78rem; }
.cycle-audience div { display: flex; flex-wrap: wrap; gap: 5px; margin-top: 10px; }
.cycle-audience span { padding: 5px 8px; border-radius: 99px; background: #edf4f6; color: #35576c; font-size: .68rem; }
.cycle-work-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
.cycle-panel { padding: 15px; border: 1px solid var(--line); border-radius: 13px; background: #fbfdfd; }
.cycle-panel h4 { margin: 0 0 6px; color: var(--ink); }
.cycle-panel > p { margin: 0 0 12px; color: var(--muted); font-size: .74rem; line-height: 1.45; }
.cycle-timeline { padding-top: 4px; }
.cycle-timeline h4 { margin: 0 0 10px; }
.cycle-timeline article { display: grid; grid-template-columns: 90px 1fr; gap: 12px; padding: 10px 0; border-top: 1px solid var(--line); }
.cycle-timeline article > span { color: var(--muted); font-size: .7rem; }
.cycle-timeline strong { color: var(--ink); font-size: .78rem; }
.cycle-timeline p { margin: 4px 0; color: #405568; font-size: .76rem; line-height: 1.45; }
.cycle-timeline small { color: var(--muted); }
.student-intervention-list { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
.student-intervention-list article { padding: 17px; border: 1px solid #cfe1e4; border-radius: 15px; background: linear-gradient(145deg, #f8fcfc, #eef7f7); }
.student-intervention-list article > div { display: flex; justify-content: space-between; gap: 10px; color: var(--muted); font-size: .68rem; }
.student-intervention-list article > div span { color: #176f78; font-weight: 800; }
.student-intervention-list h3 { margin: 12px 0 8px; color: var(--ink); font-size: .95rem; }
.student-intervention-list li, .student-intervention-list p { color: #405568; font-size: .76rem; line-height: 1.45; }
.coordination-table { min-width: 1680px; }
.coordination-table tr[data-priority="critical"] { background: #fff8f6; }
.coordination-table tr[data-priority="high"] { background: #fffdf7; }
.coordination-actions { display: flex; flex-wrap: wrap; gap: 6px; min-width: 190px; }
.movement-inline { display: inline-flex; margin: 2px; padding: 4px 6px; border-radius: 7px; color: #526879; background: #edf2f4; font-size: .68rem; font-weight: 800; }
.movement-inline.up { color: #17644b; background: #e2f5ed; }
.movement-inline.down { color: #983827; background: #ffede9; }
.coordination-decision-grid { display: grid; grid-template-columns: minmax(0, 1.6fr) minmax(280px, .7fr); gap: 14px; align-items: stretch; }
.coordination-decision-grid > article { margin: 18px 0; }
.coordination-decision-summary { margin-right: 0; }
.coordination-matrix-card { margin-top: 20px; }
.coordination-matrix-card table { min-width: 980px; }
.teacher-evidence-strip { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px; margin: 12px 0 18px; }
.teacher-evidence-strip span { display: grid; gap: 3px; padding: 12px 14px; border: 1px solid #d9e7e8; border-radius: 12px; background: #f7fbfb; }
.teacher-evidence-strip strong { color: #173653; font-size: .84rem; }
.teacher-evidence-strip small { color: var(--muted); font-size: .7rem; line-height: 1.35; }
.coordination-priorities { margin-top: 24px; }
.priority-course-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; }
.priority-course-grid article { padding: 15px; border: 1px solid var(--line); border-radius: 14px; background: white; }
.priority-course-grid article > div { display: flex; justify-content: space-between; gap: 10px; }
.priority-course-grid article > div span { color: var(--muted); font-size: .72rem; font-weight: 800; }
.priority-course-grid article > div strong { color: var(--coral); }
.priority-course-grid h3 { margin: 10px 0 2px; font-size: .9rem; }
.priority-course-grid p { margin: 8px 0 0; color: #405568; font-size: .76rem; line-height: 1.45; }

@media (max-width: 760px) {
  .course-check-grid, .intervention-grid, .followup-grid, .decision-summary-grid, .priority-course-grid { grid-template-columns: 1fr; }
  .decision-summary-head { align-items: flex-start; flex-direction: column; }
  .decision-summary-head small { text-align: left; }
  .history-report-actions { align-items: flex-start; flex-direction: column; }
  .history-report-actions .actions { width: 100%; }
  .history-report-actions .btn { flex: 1; }
  .coordination-decision-grid, .teacher-evidence-strip { grid-template-columns: 1fr; }
}

.print-report {
  max-width: 1100px;
  margin: 0 auto;
  padding: 36px;
  color: #17324d;
  background: white;
}
.print-report h1 { color: #0c315f; }
.print-report h2 { margin-top: 28px; padding-bottom: 6px; border-bottom: 2px solid #169b8c; }
.print-report .metrics { display: grid; grid-template-columns: repeat(4, 1fr); gap: 10px; }
.print-report .metrics div { padding: 12px; border: 1px solid #ccd7df; border-radius: 8px; }
.print-report .metrics strong { display: block; font-size: 1.35rem; }

@media print {
  .print-report { max-width: none; margin: 0; padding: 0; }
  .print-report .no-print { display: none !important; }
  .print-report section { break-inside: avoid; }
  .print-report table { font-size: 9pt; }
}

@media (max-width: 1050px) {
  .history-filter-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .history-movement-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .history-quality-grid { grid-template-columns: 1fr; }
}

@media (max-width: 620px) {
  .history-filter-grid, .history-movement-grid { grid-template-columns: 1fr; }
}

/* Control y trazabilidad de importaciones */
.import-control-heading { margin-bottom: 20px; }
.import-control-filters { margin-bottom: 18px; }
.import-control-filter-grid {
  display: grid;
  grid-template-columns: minmax(260px, 1.45fr) repeat(4, minmax(130px, .72fr)) auto;
  gap: 12px;
  align-items: end;
}
.import-control-filter-grid label {
  display: grid;
  gap: 7px;
  color: #405568;
  font-size: .78rem;
  font-weight: 750;
}
.import-control-filter-grid input,
.import-control-filter-grid select {
  width: 100%;
  min-width: 0;
  min-height: 44px;
  border: 1px solid var(--line);
  border-radius: 11px;
  padding: 10px 12px;
  color: var(--ink);
  background: white;
  outline: none;
}
.import-control-filter-grid input:focus,
.import-control-filter-grid select:focus {
  border-color: var(--teal);
  box-shadow: 0 0 0 4px rgba(31, 155, 141, .11);
}
.import-control-card .card-header { background: #fbfcfe; }
.import-control-table td { vertical-align: top; }
.import-control-table .badge { margin-right: 7px; }
.import-name { display: inline; color: #173653; }
.import-meta,
.import-files,
.import-warning {
  display: block;
  margin-top: 5px;
  color: var(--muted);
  font-size: .75rem;
  line-height: 1.35;
}
.import-files { max-width: 220px; overflow: hidden; text-overflow: ellipsis; }
.import-counts {
  display: grid;
  grid-template-columns: repeat(2, max-content);
  gap: 5px 13px;
  color: var(--muted);
  font-size: .73rem;
}
.import-counts strong { color: var(--ink); }
.import-status {
  display: inline-flex;
  border-radius: 99px;
  padding: 5px 9px;
  font-size: .72rem;
  font-weight: 800;
}
.import-ok { color: #19674f; background: #e4f5ee; }
.import-review { color: #8a6516; background: #fff3d3; }
.import-processing { color: #9d2d20; background: #fff0ed; }
.import-legacy { color: #526879; background: #edf2f4; }
.import-warning { color: #9d5d17; font-weight: 720; }
.import-quality-inline { display: block; margin-top: 6px; color: #19674f; font-size: .73rem; font-weight: 780; }
.import-control-error { margin: 18px; }

/* Puerta de calidad para importaciones */
.mapping-panel {
  margin: 20px 0;
  border: 1px solid var(--line);
  border-radius: 16px;
  background: #fbfcfe;
  overflow: hidden;
}
.mapping-panel summary {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  padding: 17px 20px;
  cursor: pointer;
  color: #173653;
}
.mapping-panel summary span { display: grid; gap: 3px; }
.mapping-panel summary small { color: var(--muted); font-weight: 500; }
.mapping-list { display: grid; gap: 12px; padding: 0 18px 18px; }
.mapping-row {
  display: grid;
  grid-template-columns: minmax(200px, 1.2fr) minmax(190px, .8fr);
  gap: 14px;
  align-items: end;
  padding: 15px;
  border: 1px solid #dfe8ed;
  border-radius: 13px;
  background: white;
}
.mapping-row > div:first-child { display: grid; gap: 4px; min-width: 0; }
.mapping-row > div:first-child strong { overflow: hidden; text-overflow: ellipsis; }
.mapping-row small { color: var(--muted); }
.mapping-row label, .column-mapping label { display: grid; gap: 6px; color: #405568; font-size: .76rem; font-weight: 760; }
.mapping-row select, .column-mapping select {
  width: 100%; min-height: 42px; border: 1px solid var(--line); border-radius: 10px;
  padding: 8px 10px; color: var(--ink); background: white;
}
.column-mapping { grid-column: 1 / -1; display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 10px; }
.quality-gate {
  display: grid;
  grid-template-columns: 170px 1fr;
  gap: 20px;
  margin: 20px 0;
  padding: 20px;
  border: 1px solid #cfe6df;
  border-left: 6px solid #23856f;
  border-radius: 16px;
  background: #f3fbf8;
}
.quality-blocked { border-color: #f0cbc5; border-left-color: #b84635; background: #fff7f5; }
.quality-baja, .quality-media { border-color: #efddb3; border-left-color: #b77b12; background: #fffaf0; }
.quality-score { display: grid; align-content: start; gap: 2px; }
.quality-score span { color: var(--muted); font-size: .72rem; font-weight: 800; text-transform: uppercase; letter-spacing: .08em; }
.quality-score strong { color: #173653; font-size: 2.4rem; line-height: 1.05; }
.quality-score small { color: var(--muted); font-weight: 750; }
.quality-findings h3 { margin: 0 0 9px; color: #173653; }
.quality-findings p { display: flex; gap: 9px; align-items: flex-start; margin: 7px 0; line-height: 1.4; }
.quality-findings p span { display: grid; place-items: center; flex: 0 0 22px; width: 22px; height: 22px; border-radius: 50%; color: white; font-weight: 850; }
.quality-error { color: #8f2f24; }
.quality-error span { background: #b84635; }
.quality-warning { color: #805d16; }
.quality-warning span { background: #b77b12; }
.quality-ok { color: #19674f; }
.quality-ok span { background: #23856f; }
.import-confirmation {
  display: flex;
  align-items: flex-start;
  gap: 12px;
  margin: 18px 0 4px;
  padding: 17px 18px;
  border: 1px solid #b9ddd4;
  border-radius: 14px;
  background: #f3fbf8;
  cursor: pointer;
}
.import-confirmation.disabled { opacity: .58; cursor: not-allowed; border-color: var(--line); background: #f4f6f7; }
.import-confirmation input { margin-top: 3px; width: 18px; height: 18px; accent-color: var(--teal); }
.import-confirmation span { display: grid; gap: 3px; }
.import-confirmation small { color: var(--muted); }

@media (max-width: 1240px) {
  .import-control-filter-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .import-control-filter-grid .filter-wide { grid-column: span 2; }
}

@media (max-width: 720px) {
  .import-control-filter-grid { grid-template-columns: 1fr; }
  .import-control-filter-grid .filter-wide { grid-column: auto; }
  .import-control-heading { align-items: flex-start; flex-direction: column; }
  .import-control-heading .btn { width: 100%; }
  .mapping-row, .quality-gate { grid-template-columns: 1fr; }
  .column-mapping { grid-template-columns: 1fr 1fr; }
}

@media (max-width: 760px) {
  .intervention-cycle-meta, .cycle-summary, .cycle-work-grid, .student-intervention-list, .intervention-audience > div { grid-template-columns: 1fr; }
}

.student-dashboard-summary, .student-subject-grid, .student-personal-score, .student-feedback-list {
  display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px; margin: 18px 0 24px;
}
.student-dashboard-summary article, .student-subject-card, .student-feedback-card, .student-personal-score > div {
  padding: 18px; border: 1px solid #dce7e9; border-radius: 16px; background: #fff;
}
.student-dashboard-summary span, .student-dashboard-summary small, .student-subject-numbers span,
.student-personal-score span, .student-feedback-card > div > span { display: block; color: var(--muted); font-size: .75rem; }
.student-dashboard-summary strong { display: block; margin: 7px 0; color: var(--ink); font-size: 1.8rem; }
.student-subject-card > div:first-child { display: flex; align-items: center; justify-content: space-between; }
.student-subject-card h3 { margin: 14px 0 5px; }
.student-subject-card > p { margin: 0 0 14px; color: var(--muted); font-size: .82rem; }
.student-subject-numbers { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; margin: 14px 0; }
.student-subject-numbers span { padding: 11px; border-radius: 10px; background: #f1f7f8; }
.student-subject-numbers strong { display: block; margin-top: 5px; color: var(--ink); font-size: 1.1rem; }
.student-course-reference { padding: 8px 0; font-size: .75rem !important; }
.student-subject-card .actions { display: flex; flex-wrap: wrap; gap: 8px; }
.student-evaluation-report > h4 { margin: 22px 0 8px; color: var(--ink); }
.student-personal-score { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.student-personal-score strong { display: block; margin-top: 5px; font-size: 1.4rem; color: var(--ink); }
.student-feedback-card.priority { border-left: 4px solid #e28a5b; }
.student-feedback-card.strength { border-left: 4px solid #46a77a; }
.student-feedback-card > div { display: flex; justify-content: space-between; gap: 8px; }
.student-feedback-card > div strong { color: var(--ink); }
.student-feedback-card h4 { margin: 12px 0 7px; }
.student-feedback-card p { color: #405568; font-size: .82rem; line-height: 1.5; }
.student-skill-list > div { display: grid; grid-template-columns: minmax(110px, 1fr) minmax(100px, 2fr) 55px; gap: 12px; align-items: center; padding: 9px 0; font-size: .8rem; }
.student-skill-list progress { width: 100%; }
.student-objective-details { margin-top: 22px; border: 1px solid var(--line); border-radius: 12px; padding: 14px; }
.student-objective-details summary { cursor: pointer; color: var(--ink); font-weight: 800; }
.student-objective-details > p { color: var(--muted); font-size: .78rem; }
.student-objective-details article { display: grid; grid-template-columns: 75px 1fr 55px; gap: 9px; border-top: 1px solid var(--line); padding: 10px 0; font-size: .76rem; }
.student-objective-details article p { grid-column: 2 / -1; margin: 0; color: var(--muted); }
.student-study-tip { margin: 22px 0; padding: 18px; border-radius: 14px; background: #eef8f6; }
.student-study-tip li { margin: 8px 0; line-height: 1.4; font-size: .83rem; }
.privacy-sessions { margin: 20px 0; }
.privacy-sessions p { color: var(--muted); line-height: 1.8; }
@media (max-width: 760px) {
  .student-dashboard-summary, .student-subject-grid, .student-personal-score, .student-feedback-list { grid-template-columns: 1fr; }
}

/* Comparación histórica adaptada por rol */
.role-history-intro {
  margin-bottom: 18px;
  padding: 24px 28px;
  border-radius: 20px;
  color: #173653;
  background: linear-gradient(135deg, #edf8f6, #f8fbfd);
  border: 1px solid #d5ebe7;
}
.role-history-intro span { color: var(--teal-dark); font-size: .72rem; font-weight: 850; letter-spacing: .13em; }
.role-history-intro h2 { margin: 6px 0; font-size: clamp(1.45rem, 3vw, 2.05rem); }
.role-history-intro p { margin: 0; max-width: 720px; color: #526879; }
.student-history-intro { background: linear-gradient(135deg, #eaf5ff, #f5fbff); border-color: #d4e6f4; }
.teacher-history-grid, .student-learning-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 18px; margin: 18px 0; }
.teacher-priority-list { display: grid; gap: 0; padding: 2px 20px 18px; }
.teacher-priority-list > article { display: grid; grid-template-columns: 34px 1fr; gap: 12px; padding: 16px 0; border-bottom: 1px solid var(--line); }
.teacher-priority-list > article:last-child { border-bottom: 0; }
.teacher-priority-list > article > span { display: grid; place-items: center; width: 30px; height: 30px; border-radius: 50%; color: white; background: var(--navy); font-size: .72rem; font-weight: 850; }
.teacher-priority-list h4, .teacher-priority-list p { margin: 0; }
.teacher-priority-list p { margin: 7px 0; color: var(--muted); font-size: .82rem; line-height: 1.5; }
.teacher-priority-list small { display: inline-block; margin-top: 3px; color: var(--teal-dark); font-weight: 800; }
.priority-line { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; }
.priority-line strong { color: #b94e3a; white-space: nowrap; }
.teacher-action-section, .student-study-plan { margin-top: 24px; }
.teacher-action-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 14px; }
.teacher-action-grid > article { padding: 18px; border: 1px solid var(--line); border-radius: 15px; background: white; }
.teacher-action-grid > article > div { display: flex; justify-content: space-between; align-items: center; gap: 10px; }
.teacher-action-grid h3, .teacher-action-grid p { margin: 0; }
.teacher-action-grid strong { display: grid; place-items: center; min-width: 32px; height: 32px; border-radius: 50%; color: white; background: var(--teal-dark); }
.teacher-action-grid p { margin-top: 7px; color: var(--muted); font-size: .8rem; }
.teacher-action-grid ul { margin: 12px 0 0; padding-left: 18px; color: #405568; font-size: .82rem; line-height: 1.5; }
.student-progress-hero { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 14px; margin-bottom: 18px; }
.student-progress-hero article { min-height: 126px; padding: 20px; border-radius: 18px; color: white; background: linear-gradient(145deg, #173653, #0f6f78); box-shadow: 0 12px 28px rgba(23,54,83,.12); }
.student-progress-hero span, .student-progress-hero small { display: block; opacity: .86; }
.student-progress-hero strong { display: block; margin: 8px 0 5px; font-size: 2rem; }
.student-goal-card { margin-bottom: 18px; padding: 24px; border-left: 5px solid var(--teal); }
.student-goal-card > span { color: var(--teal-dark); font-size: .72rem; font-weight: 850; letter-spacing: .12em; }
.student-goal-card h3 { margin: 7px 0; font-size: 1.25rem; }
.student-goal-card p { margin: 0; color: var(--muted); }
.student-learning-list { display: grid; gap: 12px; padding: 0 20px 20px; }
.student-learning-item { padding: 15px; border: 1px solid var(--line); border-radius: 13px; background: #fbfcfd; }
.student-learning-item > div { display: flex; justify-content: space-between; gap: 12px; }
.student-learning-item span { color: var(--teal-dark); font-size: .72rem; font-weight: 850; }
.student-learning-item h4 { margin: 7px 0 5px; }
.student-learning-item p { margin: 0 0 7px; color: var(--muted); font-size: .82rem; line-height: 1.5; }
.student-learning-item.priority { border-left: 4px solid #e28a5b; }
.student-learning-item.strength { border-left: 4px solid #46a77a; }
.student-session-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px; }
.student-session-grid article { padding: 20px; border: 1px solid #d7e6e5; border-radius: 16px; background: linear-gradient(160deg, white, #f5faf9); }
.student-session-grid article > div { display: flex; justify-content: space-between; align-items: center; }
.student-session-grid article > div span { color: var(--teal-dark); font-weight: 850; }
.student-session-grid article > div small { color: var(--muted); }
.student-session-grid h3 { margin: 10px 0 3px; }
.student-session-grid em { color: var(--muted); font-size: .75rem; font-style: normal; }
.student-session-grid ol { margin: 14px 0 0; padding-left: 20px; color: #405568; font-size: .86rem; line-height: 1.55; }

@media (max-width: 980px) {
  .teacher-history-grid, .student-learning-grid, .student-session-grid { grid-template-columns: 1fr; }
  .teacher-action-grid { grid-template-columns: 1fr; }
}

@media (max-width: 680px) {
  .student-progress-hero { grid-template-columns: 1fr; }
  .role-history-intro { padding: 20px; }
  .recent-result-row { grid-template-columns: 1fr 48px; }
  .recent-result-row > div { grid-column: 1 / -1; }
}
