/* ── VARIABLES ─────────────────────────────────────────────────── */
:root {
  --gb-navy:        #0D1B2A;
  --gb-navy-mid:    #152338;
  --gb-navy-light:  #1C3050;
  --gb-gold:        #F5C842;
  --gb-gold-l:      #FFD966;
  --gb-white:       #FFFFFF;
  --gb-bg:          #F4F7FB;
  --gb-border:      #E6ECF2;
  --gb-text:        #8A9BB0;
  --gb-success:     #2ECC71;
  --gb-warning:     #F39C12;
  --gb-danger:      #E74C3C;
  --gb-info:        #3498DB;
  --gb-card-shadow: 0 4px 24px rgba(13,27,42,.07);
  --sidebar-w:      240px;
  --topbar-h:       56px;
}

/* ── RESET ──────────────────────────────────────────────────────── */
*, *::before, *::after { margin:0; padding:0; box-sizing:border-box; }
html, body { height:100%; }
body {
  font-family: 'DM Sans', Arial, sans-serif;
  background: var(--gb-bg);
  color: var(--gb-navy);
  font-size: 15px;
  line-height: 1.5;
}
a { text-decoration:none; color:inherit; }

/* ── SHELL CON SIDEBAR ──────────────────────────────────────────── */
.gb-shell {
  display: flex;
  min-height: 100vh;
}

/* ── SIDEBAR ────────────────────────────────────────────────────── */
.gb-sidebar {
  width: var(--sidebar-w);
  background: var(--gb-navy);
  display: flex;
  flex-direction: column;
  flex-shrink: 0;
  position: fixed;
  top: 0; left: 0; bottom: 0;
  z-index: 100;
  transition: transform .25s ease;
}

.sidebar-brand {
  padding: 24px 20px 20px;
  border-bottom: 1px solid rgba(255,255,255,.08);
}
.sidebar-logo {
  font-family: 'Sora', sans-serif;
  font-size: 17px;
  font-weight: 800;
  color: var(--gb-gold);
  letter-spacing: .5px;
}
.sidebar-sub {
  font-size: 11px;
  color: rgba(255,255,255,.45);
  margin-top: 4px;
}

.sidebar-nav {
  flex: 1;
  padding: 16px 12px;
  display: flex;
  flex-direction: column;
  gap: 4px;
  overflow-y: auto;
}

.sidebar-link {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 11px 14px;
  border-radius: 10px;
  color: rgba(255,255,255,.65);
  font-size: 14px;
  font-weight: 500;
  transition: background .18s, color .18s;
}
.sidebar-link:hover {
  background: rgba(255,255,255,.07);
  color: var(--gb-white);
}
.sidebar-link.active {
  background: var(--gb-gold);
  color: var(--gb-navy);
  font-weight: 700;
}
.sidebar-icon { font-size: 18px; line-height:1; }
.sidebar-label { line-height:1; }

.sidebar-footer {
  padding: 16px 12px;
  border-top: 1px solid rgba(255,255,255,.08);
  display: flex;
  flex-direction: column;
  gap: 10px;
}
.sidebar-user {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 8px 6px;
}
.sidebar-avatar {
  width: 36px; height: 36px;
  background: var(--gb-gold);
  color: var(--gb-navy);
  border-radius: 50%;
  display: flex; align-items: center; justify-content: center;
  font-weight: 800; font-size: 14px;
  flex-shrink: 0;
}
.sidebar-user-name {
  font-size: 13px;
  font-weight: 700;
  color: var(--gb-white);
  line-height: 1.2;
}
.sidebar-user-role {
  font-size: 11px;
  color: rgba(255,255,255,.45);
  margin-top: 2px;
}
.sidebar-logout {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 10px 14px;
  border-radius: 10px;
  background: rgba(231,76,60,.12);
  color: #f1948a;
  font-size: 13px;
  font-weight: 600;
  transition: background .18s;
}
.sidebar-logout:hover { background: rgba(231,76,60,.22); }

/* ── OVERLAY MÓVIL ──────────────────────────────────────────────── */
.sidebar-overlay {
  display: none;
  position: fixed;
  inset: 0;
  background: rgba(0,0,0,.45);
  z-index: 99;
}
.sidebar-overlay.show { display: block; }

/* ── MAIN WRAPPER ───────────────────────────────────────────────── */
.gb-main-wrapper {
  margin-left: var(--sidebar-w);
  flex: 1;
  display: flex;
  flex-direction: column;
  min-height: 100vh;
}

/* ── TOPBAR MÓVIL ───────────────────────────────────────────────── */
.gb-topbar {
  display: none;
  position: sticky;
  top: 0;
  background: var(--gb-navy);
  border-bottom: 3px solid var(--gb-gold);
  height: var(--topbar-h);
  padding: 0 16px;
  align-items: center;
  justify-content: space-between;
  z-index: 50;
}
.topbar-menu-btn {
  background: none; border: none; cursor: pointer;
  display: flex; flex-direction: column; gap: 5px; padding: 4px;
}
.topbar-menu-btn span {
  display: block; width: 22px; height: 2px;
  background: var(--gb-white); border-radius: 2px;
}
.topbar-brand {
  font-family: 'Sora', sans-serif;
  font-weight: 800; font-size: 16px; color: var(--gb-gold);
}
.topbar-logout {
  font-size: 13px; font-weight: 700;
  color: var(--gb-gold);
  padding: 6px 12px;
  border: 1px solid var(--gb-gold);
  border-radius: 8px;
}

/* ── CONTENIDO ──────────────────────────────────────────────────── */
.gb-content {
  flex: 1;
  padding: 28px 32px 48px;
  width: 100%;
}

/* ── BIENVENIDA ─────────────────────────────────────────────────── */
.dash-welcome {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 20px;
  background: linear-gradient(135deg, var(--gb-navy) 0%, var(--gb-navy-light) 60%, #1a3a5c 100%);
  border-radius: 18px;
  padding: 28px 36px;
  margin-bottom: 24px;
  flex-wrap: wrap;
  width: 100%;
}
.dash-greeting {
  font-family: 'Sora', sans-serif;
  font-size: 22px;
  font-weight: 700;
  color: var(--gb-white);
  margin-bottom: 4px;
}
.dash-sub {
  font-size: 13px;
  color: rgba(255,255,255,.55);
}
.dash-welcome-badges {
  display: flex; gap: 8px; flex-wrap: wrap;
}
.status-badge {
  display: inline-flex; align-items: center; gap: 6px;
  padding: 7px 14px; border-radius: 999px;
  font-size: 12px; font-weight: 700;
}
.status-ok   { background: rgba(46,204,113,.15); color: #1dab5e; }
.status-warn { background: rgba(243,156,18,.15);  color: #b26b00; }
.status-info { background: rgba(245,200,66,.13);  color: #8a6500; }

/* ── ACCESOS RÁPIDOS ────────────────────────────────────────────── */
.quick-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 14px;
  margin-bottom: 24px;
}
.quick-card {
  display: flex;
  align-items: center;
  gap: 14px;
  padding: 16px 18px;
  border-radius: 14px;
  border: 1.5px solid var(--gb-border);
  background: var(--gb-white);
  box-shadow: var(--gb-card-shadow);
  transition: transform .18s, box-shadow .18s;
  cursor: pointer;
}
.quick-card:hover { transform: translateY(-2px); box-shadow: 0 8px 28px rgba(13,27,42,.1); }
.qc-icon { font-size: 28px; line-height:1; }
.qc-title { font-size: 13px; font-weight: 700; color: var(--gb-navy); line-height:1.2; }
.qc-sub   { font-size: 12px; color: var(--gb-text); margin-top: 3px; }
.quick-moodle { border-color: #2ecc71; }
.quick-moodle .qc-title { color: #1a8045; }
.quick-drive  { border-color: #3498db; }
.quick-drive  .qc-title { color: #1a5f8a; }

/* ── GRID DASHBOARD ─────────────────────────────────────────────── */
.dash-grid {
  display: grid;
  grid-template-columns: 1fr 320px;
  gap: 20px;
  align-items: start;
  width: 100%;
}
.dash-col-main { display: flex; flex-direction: column; gap: 20px; }
.dash-col-side  { display: flex; flex-direction: column; gap: 20px; }

/* ── CARD ───────────────────────────────────────────────────────── */
.gb-card {
  background: var(--gb-white);
  border: 1px solid var(--gb-border);
  border-radius: 18px;
  box-shadow: var(--gb-card-shadow);
  overflow: hidden;
}
.gb-card-header {
  padding: 16px 22px;
  border-bottom: 1px solid var(--gb-border);
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
}
.gb-card-title { font-size: 16px; font-weight: 700; color: var(--gb-navy); }
.gb-card-meta  { font-size: 12px; color: var(--gb-text); }
.gb-card-body  { padding: 22px; }

/* ── RESUMEN FINANCIERO ─────────────────────────────────────────── */
.pago-resumen {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 14px;
  margin-bottom: 24px;
}
.pago-resumen-item {
  background: var(--gb-bg);
  border-radius: 12px;
  padding: 14px 16px;
  border: 1px solid var(--gb-border);
}
.pr-label { font-size: 11px; font-weight: 700; text-transform: uppercase; letter-spacing:.5px; color: var(--gb-text); margin-bottom: 6px; }
.pr-value  { font-family: 'Sora', sans-serif; font-size: 22px; font-weight: 800; color: var(--gb-navy); }
.pr-progress-wrap {
  grid-column: span 3;
  display: flex;
  align-items: center;
  gap: 12px;
}
.pr-progress-bar  { flex:1; height:8px; background: var(--gb-border); border-radius: 99px; overflow:hidden; }
.pr-progress-fill { height:100%; background: var(--gb-success); border-radius: 99px; transition: width .5s; }
.pr-progress-pct  { font-size: 12px; font-weight: 700; color: var(--gb-text); white-space:nowrap; }

/* ── CUOTAS ─────────────────────────────────────────────────────── */
.cuotas-lista { display: flex; flex-direction: column; gap: 12px; }

.cuota-row {
  border-radius: 12px;
  border: 1.5px solid var(--gb-border);
  padding: 14px 16px;
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 12px;
}
.cuota-pagada   { background: #f0faf5; border-color: #a3dfc1; }
.cuota-parcial  { background: #fffbf0; border-color: #f5d87a; }
.cuota-mora     { background: #fff5f5; border-color: #f1a9a0; }
.cuota-proxima  { background: #eff6ff; border-color: #93c5fd; }
.cuota-pendiente{ background: var(--gb-bg); }

.cuota-label { font-size: 14px; font-weight: 700; color: var(--gb-navy); }
.cuota-fecha { font-size: 12px; color: var(--gb-text); margin-top: 4px; display:flex; align-items:center; gap:6px; flex-wrap:wrap; }
.cuota-dias  { font-size: 11px; font-weight: 700; padding: 2px 8px; border-radius: 99px; background: rgba(0,0,0,.06); }

.cuota-derecha { text-align: right; flex-shrink: 0; }
.cuota-monto   { font-family:'Sora',sans-serif; font-size: 18px; font-weight: 800; color: var(--gb-navy); }
.cuota-saldo-info { display:flex; flex-direction:column; gap:2px; margin-top:4px; }
.cuota-pagado-parcial { font-size:11px; color: var(--gb-success); font-weight:700; }
.cuota-saldo-pend     { font-size:11px; color: var(--gb-danger);  font-weight:700; }

.cuota-estado-badge {
  display: inline-block;
  margin-top: 6px;
  padding: 3px 10px;
  border-radius: 999px;
  font-size: 11px;
  font-weight: 700;
}
.cuota-pagada-badge   { background: rgba(46,204,113,.15); color: #1a8045; }
.cuota-parcial-badge  { background: rgba(243,156,18,.14); color: #a05c00; }
.cuota-mora-badge     { background: rgba(231,76,60,.12);  color: #c0392b; }
.cuota-proxima-badge  { background: rgba(52,152,219,.12); color: #1a5f8a; }
.cuota-pendiente-badge{ background: rgba(0,0,0,.06);       color: var(--gb-text); }

/* Detalle de pagos dentro de cada cuota */
.cuota-pagos-detalle {
  margin-top: 10px;
  border-top: 1px dashed var(--gb-border);
  padding-top: 10px;
  display: flex;
  flex-direction: column;
  gap: 8px;
}
.cpd-row {
  display: grid;
  grid-template-columns: auto 1fr auto auto auto;
  gap: 8px 14px;
  align-items: center;
  font-size: 12px;
  padding: 6px 0;
}
.cpd-fecha  { color: var(--gb-text); white-space:nowrap; }
.cpd-metodo { color: var(--gb-navy); font-weight: 500; }
.cpd-ref    { color: var(--gb-text); font-family:monospace; font-size:11px; }
.cpd-factura{ color: var(--gb-text); font-size:11px; font-family:monospace; }
.cpd-monto  { font-family:'Sora',sans-serif; font-weight:800; color:var(--gb-navy); white-space:nowrap; }
.cpd-badge  { padding: 2px 8px; border-radius:99px; font-size:10px; font-weight:700; }
.cpd-parcial{ background:rgba(243,156,18,.14); color:#a05c00; }
.cpd-total  { background:rgba(46,204,113,.12); color:#1a8045; }

.pago-aviso {
  margin-top: 18px;
  background: #fffbef;
  border: 1px solid #f5e0a0;
  border-radius: 10px;
  padding: 12px 16px;
  font-size: 13px;
  color: #7a5c00;
  line-height: 1.6;
}

/* ── DATOS PERSONALES (sidebar) ─────────────────────────────────── */
.datos-lista { display:flex; flex-direction:column; }
.dato-row {
  display: flex;
  justify-content: space-between;
  gap: 10px;
  padding: 10px 0;
  border-bottom: 1px solid var(--gb-border);
  align-items: flex-start;
}
.dato-row:last-child { border-bottom:none; padding-bottom:0; }
.dato-lbl { font-size: 12px; color: var(--gb-text); flex-shrink:0; }
.dato-val { font-size: 13px; font-weight: 700; color: var(--gb-navy); text-align:right; }

.badge-pill {
  display: inline-flex; align-items:center; gap:5px;
  padding: 4px 12px; border-radius:999px; font-size:12px; font-weight:700;
}
.badge-success { background: rgba(46,204,113,.12); color: #1a8045; }

.btn-acceso-moodle, .btn-acceso-drive {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  margin-top: 14px;
  padding: 12px 16px;
  border-radius: 12px;
  font-size: 14px;
  font-weight: 700;
  transition: filter .18s;
}
.btn-acceso-moodle:hover, .btn-acceso-drive:hover { filter: brightness(.95); }
.btn-acceso-moodle {
  background: var(--gb-navy);
  color: var(--gb-gold);
}
.btn-acceso-drive {
  background: #e8f4fe;
  color: #1a5f8a;
}

/* ── LOGIN ──────────────────────────────────────────────────────── */
.login-page {
  min-height: 100vh;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 24px;
  background: linear-gradient(135deg, #0D1B2A 0%, #152338 100%);
}
.login-card {
  width: 100%; max-width: 430px;
  background: var(--gb-white);
  border-radius: 22px; overflow: hidden;
  box-shadow: 0 20px 50px rgba(0,0,0,.18);
}
.login-brand {
  background: var(--gb-navy);
  padding: 28px 30px 22px;
  border-bottom: 4px solid var(--gb-gold);
}
.login-logo   { color: var(--gb-gold); font-family:'Sora',sans-serif; font-size:28px; font-weight:800; line-height:1.1; }
.login-subtitle { color: #d8e0ea; font-size:14px; margin-top:6px; }
.login-body   { padding: 30px; }
.login-title  { font-size:26px; color:var(--gb-navy); margin-bottom:8px; font-weight:700; }
.login-text   { color:var(--gb-text); font-size:14px; line-height:1.6; margin-bottom:22px; }
.login-alert  {
  background:#fdecea; color:#b42318; border:1px solid #f5c2c7;
  border-radius:12px; padding:12px 14px; font-size:14px; margin-bottom:18px;
}
.login-form { display:flex; flex-direction:column; gap:18px; }
.form-group { display:flex; flex-direction:column; gap:7px; }
.form-group label { font-size:14px; font-weight:700; color:var(--gb-navy); }
.form-group input {
  width:100%; border:1px solid var(--gb-border); border-radius:12px;
  padding:14px; font-size:15px; outline:none; transition:.2s;
  background:#fff; color:var(--gb-navy);
}
.form-group input:focus {
  border-color: var(--gb-gold);
  box-shadow: 0 0 0 4px rgba(245,200,66,.18);
}
.login-btn {
  width:100%; border:none; border-radius:12px; padding:14px;
  background:var(--gb-gold); color:var(--gb-navy);
  font-size:16px; font-weight:800; cursor:pointer; transition:.2s;
}
.login-btn:hover { filter:brightness(.97); }

/* ── RESPONSIVE ─────────────────────────────────────────────────── */
@media (max-width: 1200px) {
  .dash-grid  { grid-template-columns: 1fr 300px; }
}
@media (max-width: 1024px) {
  .quick-grid { grid-template-columns: repeat(2, 1fr); }
  .dash-grid  { grid-template-columns: 1fr; }
  .dash-col-side { order: -1; }
}

@media (max-width: 768px) {
  .gb-sidebar {
    transform: translateX(-100%);
  }
  .gb-sidebar.open {
    transform: translateX(0);
  }
  .gb-main-wrapper {
    margin-left: 0;
  }
  .gb-topbar {
    display: flex;
  }
  .gb-content {
    padding: 18px 16px 40px;
  }
  .dash-welcome {
    padding: 18px 20px;
    flex-direction: column;
    align-items: flex-start;
  }
  .pago-resumen {
    grid-template-columns: 1fr 1fr;
  }
  .pr-progress-wrap { grid-column: span 2; }
  .quick-grid { grid-template-columns: 1fr 1fr; }
  .cpd-row { grid-template-columns: 1fr 1fr; }
  .cpd-factura { display:none; }
}

@media (max-width: 480px) {
  .quick-grid { grid-template-columns: 1fr; }
  .pago-resumen { grid-template-columns: 1fr; }
  .pr-progress-wrap { grid-column: span 1; }
  .cuota-row { flex-direction:column; }
  .cuota-derecha { text-align:left; }
}

/* ── SIDEBAR SEPARADORES ────────────────────────────────────────── */
.sidebar-sep {
  font-size: 10px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .8px;
  color: rgba(255,255,255,.28);
  padding: 14px 14px 6px;
  margin-top: 4px;
}

/* ── PAGE HEADER ─────────────────────────────────────────────────── */
.page-header {
  margin-bottom: 22px;
}
.page-header h1 {
  font-family: 'Sora', sans-serif;
  font-size: 26px;
  font-weight: 700;
  color: var(--gb-navy);
  margin-bottom: 4px;
}
.page-header p {
  font-size: 14px;
  color: var(--gb-text);
}

/* ── QUICK CARDS NUEVAS ──────────────────────────────────────────── */
.quick-univ { border-color: #8e44ad; }
.quick-univ .qc-title { color: #6c3483; }
.quick-proc { border-color: #e67e22; }
.quick-proc .qc-title { color: #a04000; }

/* ── PRÓXIMO PAGO ────────────────────────────────────────────────── */
.proximo-pago {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 14px;
  padding: 16px 18px;
  border-radius: 14px;
  border: 1.5px solid var(--gb-border);
  margin-top: 16px;
}
.proximo-mora    { background:#fff5f5; border-color:#f1a9a0; }
.proximo-hoy     { background:#fffbf0; border-color:#f5d87a; }
.proximo-urgente { background:#eff6ff; border-color:#93c5fd; }
.proximo-ok      { background:#f0faf5; border-color:#a3dfc1; }

.pp-left  { display:flex; align-items:flex-start; gap:12px; }
.pp-icon  { font-size:26px; line-height:1; flex-shrink:0; }
.pp-label { font-size:11px; font-weight:700; text-transform:uppercase; letter-spacing:.5px; color:var(--gb-text); margin-bottom:3px; }
.pp-cuota { font-size:14px; font-weight:700; color:var(--gb-navy); }
.pp-fecha { font-size:12px; color:var(--gb-text); margin-top:3px; display:flex; align-items:center; gap:6px; flex-wrap:wrap; }
.pp-dias  { font-size:11px; font-weight:700; padding:2px 8px; border-radius:99px; background:rgba(0,0,0,.07); }
.pp-parcial { font-size:12px; color:var(--gb-warning); font-weight:600; margin-top:3px; }
.pp-monto { font-family:'Sora',sans-serif; font-size:24px; font-weight:800; color:var(--gb-navy); flex-shrink:0; }

/* ── IFRAME UNIVERSIDADES ────────────────────────────────────────── */
.iframe-wrap {
  position: relative;
  width: 100%;
  height: calc(100vh - 180px);
  min-height: 500px;
}
.iframe-wrap iframe {
  width: 100%;
  height: 100%;
  border: none;
  display: block;
}
.btn-link-ext {
  font-size: 13px;
  font-weight: 700;
  color: var(--gb-navy);
  background: var(--gb-bg);
  border: 1px solid var(--gb-border);
  padding: 6px 14px;
  border-radius: 8px;
  transition: background .18s;
}
.btn-link-ext:hover { background: var(--gb-border); }

/* ── TABS ────────────────────────────────────────────────────────── */
.tabs-bar {
  display: flex;
  gap: 8px;
  margin-bottom: 18px;
}
.tab-btn {
  padding: 10px 20px;
  border-radius: 10px;
  border: 1.5px solid var(--gb-border);
  background: var(--gb-white);
  font-size: 14px;
  font-weight: 600;
  color: var(--gb-text);
  cursor: pointer;
  transition: .18s;
}
.tab-btn.active {
  background: var(--gb-navy);
  color: var(--gb-gold);
  border-color: var(--gb-navy);
}

/* ── PERFIL ──────────────────────────────────────────────────────── */
.perfil-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 0;
}
.perfil-campo {
  padding: 10px 0;
  border-bottom: 1px solid var(--gb-border);
  display: flex;
  flex-direction: column;
  gap: 3px;
}
.perfil-campo:nth-child(odd)  { padding-right: 16px; border-right: 1px solid var(--gb-border); }
.perfil-campo:nth-child(even) { padding-left: 16px; }
.perfil-lbl { font-size: 11px; font-weight: 700; text-transform: uppercase; letter-spacing:.4px; color: var(--gb-text); }
.perfil-val { font-size: 14px; font-weight: 600; color: var(--gb-navy); }

/* Postulaciones */
.btn-add-univ {
  background: var(--gb-navy); color: var(--gb-gold);
  border: none; border-radius: 8px; padding: 7px 14px;
  font-size: 13px; font-weight: 700; cursor: pointer;
  transition: .18s;
}
.btn-add-univ:hover { opacity:.88; }

.form-univ-inner {
  display: flex; gap: 10px; flex-wrap: wrap; align-items: center;
  background: var(--gb-bg); padding: 14px; border-radius: 10px;
  border: 1px solid var(--gb-border);
}
.input-univ {
  flex: 1; min-width: 180px;
  border: 1.5px solid var(--gb-border); border-radius: 8px;
  padding: 9px 12px; font-size: 14px; outline: none;
  transition: .18s;
}
.input-univ:focus { border-color: var(--gb-navy); }
.btn-guardar-univ {
  background: var(--gb-success); color: #fff;
  border: none; border-radius: 8px; padding: 9px 16px;
  font-size: 13px; font-weight: 700; cursor: pointer;
}
.btn-cancelar-univ {
  background: var(--gb-bg); color: var(--gb-text);
  border: 1px solid var(--gb-border); border-radius: 8px;
  padding: 9px 14px; font-size: 13px; cursor: pointer;
}

.postulacion-row {
  display: flex; align-items: center; gap: 14px;
  padding: 12px 0; border-bottom: 1px solid var(--gb-border);
}
.postulacion-row:last-child { border-bottom: none; }
.post-icon  { font-size: 24px; flex-shrink:0; }
.post-info  { flex: 1; }
.post-nombre { font-size: 14px; font-weight: 700; color: var(--gb-navy); }
.post-carrera { font-size: 12px; color: var(--gb-text); margin-top: 2px; }
.btn-eliminar-post {
  background: none; border: none; color: var(--gb-danger);
  font-size: 16px; cursor: pointer; padding: 4px 8px;
  border-radius: 6px; transition: background .15s;
}
.btn-eliminar-post:hover { background: rgba(231,76,60,.1); }

.empty-postulaciones {
  text-align: center; padding: 40px 20px;
  color: var(--gb-text);
}

@media (max-width: 768px) {
  .perfil-grid { grid-template-columns: 1fr; }
  .perfil-campo:nth-child(odd)  { padding-right: 0; border-right: none; }
  .perfil-campo:nth-child(even) { padding-left: 0; }
  .tabs-bar { flex-wrap: wrap; }
  .pp-monto { font-size: 20px; }
}

/* ── WELCOME EXPANDIDO ──────────────────────────────────────────── */
.dash-welcome-left { flex: 1; }
.dash-welcome-center {
  display: flex;
  gap: 16px;
  flex-wrap: wrap;
  justify-content: center;
}
.welcome-stat {
  background: rgba(255,255,255,.08);
  border: 1px solid rgba(255,255,255,.12);
  border-radius: 14px;
  padding: 14px 20px;
  text-align: center;
  min-width: 110px;
}
.ws-value {
  font-family: 'Sora', sans-serif;
  font-size: 26px;
  font-weight: 800;
  color: var(--gb-gold);
  line-height: 1;
  margin-bottom: 4px;
}
.ws-label {
  font-size: 11px;
  color: rgba(255,255,255,.55);
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: .4px;
}
.ws-loading {
  font-size: 18px;
  color: rgba(255,255,255,.3);
  animation: pulse 1.2s infinite;
}
@keyframes pulse { 0%,100%{opacity:.3} 50%{opacity:.9} }

.dash-welcome-right {
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  gap: 8px;
}

/* ── MOODLE WIDGETS ─────────────────────────────────────────────── */
.moodle-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 14px;
  margin-bottom: 20px;
}
.moodle-widget {
  background: var(--gb-white);
  border: 1px solid var(--gb-border);
  border-radius: 14px;
  padding: 18px 20px;
  box-shadow: var(--gb-card-shadow);
  display: flex;
  flex-direction: column;
  gap: 8px;
}
.mw-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
}
.mw-icon { font-size: 22px; }
.mw-badge {
  font-size: 10px;
  font-weight: 700;
  padding: 2px 8px;
  border-radius: 99px;
  background: rgba(0,0,0,.06);
  color: var(--gb-text);
}
.mw-badge.warn { background: rgba(243,156,18,.14); color: #a05c00; }
.mw-badge.ok   { background: rgba(46,204,113,.12); color: #1a8045; }
.mw-value {
  font-family: 'Sora', sans-serif;
  font-size: 30px;
  font-weight: 800;
  color: var(--gb-navy);
  line-height: 1;
}
.mw-value.warn { color: var(--gb-warning); }
.mw-value.ok   { color: var(--gb-success); }
.mw-value.muted { color: var(--gb-text); }
.mw-label { font-size: 13px; font-weight: 600; color: var(--gb-navy); }
.mw-sub   { font-size: 12px; color: var(--gb-text); line-height: 1.4; }

/* Barra rendimiento */
.rendimiento-bar-wrap { display:flex; align-items:center; gap:10px; margin-top:4px; }
.rendimiento-bar { flex:1; height:6px; background:var(--gb-border); border-radius:99px; overflow:hidden; }
.rendimiento-fill { height:100%; border-radius:99px; transition: width .6s ease; }
.rendimiento-pct  { font-size:12px; font-weight:700; color:var(--gb-navy); white-space:nowrap; }

/* Skeleton loader */
.skel {
  background: linear-gradient(90deg, #f0f0f0 25%, #e0e0e0 50%, #f0f0f0 75%);
  background-size: 200% 100%;
  animation: shimmer 1.4s infinite;
  border-radius: 6px;
  display: inline-block;
}
@keyframes shimmer { 0%{background-position:200%} 100%{background-position:-200%} }

@media (max-width: 1024px) {
  .moodle-grid { grid-template-columns: 1fr 1fr; }
  .dash-welcome-center { display:none; }
}
@media (max-width: 768px) {
  .moodle-grid { grid-template-columns: 1fr; }
  .dash-welcome-right { align-items:flex-start; }
}
