/* Hoja de estilos de toda la plataforma: web pública, panel del miembro y administración.
   Orden: tokens de tema y colores, base, cabecera y portada, credencial, formularios, panel,
   administración, fichas de detalle, componentes compartidos y ajustes finales de diseño.
   Los colores se definen una vez en los tokens y cambian solos con el tema claro u oscuro. */

*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }

:root, [data-theme="light"] {
  /* Tokens de tema (claro = valores por defecto de la plataforma) */
  --bg:      #F4F2ED;
  --bg2:     #FFFFFF;
  --bg3:     #ECE9E1;
  --bgcard:  #FFFFFF;
  --line-t:  #DCD8CF;
  --line2-t: #CBC6BB;
  --ink:     #1A1916;
  --ink2:    #6F6B62;
  --ink3:    #7A756A; /* texto secundario (fechas, contadores): contraste mínimo 4,5:1 sobre blanco (WCAG 1.4.3) */
  --azul-t:  #223D71;
  --elev:    0 24px 50px -26px rgba(26,25,22,.16);
}
[data-theme="dark"] {
  --bg:      #0B0D11;
  --bg2:     #101319;
  --bg3:     #171B23;
  --bgcard:  #12151C;
  --line-t:  rgba(244,242,237,.08);
  --line2-t: rgba(244,242,237,.15);
  --ink:     #F4F2ED;
  --ink2:    #ADA89E;
  --ink3:    #8F8A81; /* texto secundario: contraste mínimo 4,5:1 sobre el fondo oscuro (WCAG 1.4.3) */
  --azul-t:  #3A63A8;
  --elev:    0 26px 60px -28px rgba(0,0,0,.8);
}
:root {
  /* Marca: constantes deliberadas que NO reaccionan al tema (se usan en
     piezas que deben verse siempre igual, p. ej. el carné credencial).*/
  --naranja:   #EDAB00;
  /* Mismo color que --naranja, en formato "r,g,b" para los rgba(...) de
     fondos/halos suaves. Si el admin guarda un color de acento personalizado
     (pestaña "Ajustes"), un script (ver aplicarAcento en render-helpers.js
     y su copia en admin.js) sobreescribe AMBAS variables en <html> con
     setProperty; si no hay nada guardado, se quedan en su valor por
     defecto de aquí. El carné credencial (.carnet) usa el hex fijo
     #EDAB00 directamente, no esta variable, porque es marca, no acento.*/
  --naranja-rgb: 237,171,0;
  --azul-d:    #1A2E55;
  --azulSolid: #223D71;
  --negro:     #000000;

  /* Nombres de color que usa el resto de la hoja. Apuntan a los tokens de tema de arriba,
     así que todas las reglas cambian solas con [data-theme]. */
  --azul:      var(--azul-t);
  --blanco:    var(--bgcard);
  --papel:     var(--bg);
  --papel-2:   var(--bg3);
  --linea:     var(--line-t);
  --linea-2:   var(--line2-t);
  --tinta:     var(--ink);
  --gris:      var(--ink2);
  --gris-cl:   var(--ink3);

  /* Radios : basados en el diseño de referencia */
  --r-s: 10px;
  --r-m: 11px;
  --r-l: 18px;

  /* Identidad por sección/categoría de contenido: colores fijos, no
     cambian con el tema (son la "marca" de cada categoría).*/
  --c-noticia:   #EDAB00;
  --c-historia:  #223D71;
  --c-curso:     #3E7C59;
  --c-mentoring: #7A3B69;
  --c-recurso:   #B1521F;
  --c-evento:    #1A2E55;
  --c-pagina:    #6F6B62;

  --font-inst: 'Source Sans 3', 'Myriad Pro', Arial, sans-serif;
  --font-near: 'DM Sans', 'NOW', Arial, sans-serif;

  --ease: cubic-bezier(.2, .7, .2, 1);
}

html { scroll-behavior: smooth; }
body {
  font-family: var(--font-near);
  background: var(--papel);
  color: var(--tinta);
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
  overflow-x: hidden;
  transition: background-color .2s var(--ease), color .2s var(--ease);
}

::selection { background: var(--naranja); color: var(--negro); }

/* Utilidad: símbolo de 3 cubos */
.cubos {
  display: flex;
  flex-direction: column;
  gap: var(--cubo-gap, 3px);
  flex-shrink: 0;
}
.cubos i {
  display: block;
  width: var(--cubo, 12px);
  height: var(--cubo, 12px);
  background: var(--naranja);
  border-radius: 1px;
}

.eyebrow {
  font-family: var(--font-inst);
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 3px;
  text-transform: uppercase;
  color: var(--naranja);
}

/* LOGO: variante clara/oscura. El logotipo "logo-alumni-eina.png" lleva el
   texto en negro y se vuelve illegible sobre fondos oscuros; junto a él se
   coloca siempre un segundo <img> con "logo-alumni-eina-white.png" (texto en
   blanco) con la misma clase contextual (.logo-img, .dash-logo img,
   .article-topbar-logo…) más .logo-light / .logo-dark. Por defecto se ve la
   versión clara; con [data-theme="dark"] se intercambian. No afecta a
   .carnet-logo (carné/credencial), que vive siempre sobre un fondo oscuro
   fijo y ya usa la versión blanca directamente, sin alternar.*/
.nav .marca .logo-img.logo-dark,
.foot-brand .logo-img.logo-dark,
.dash-logo img.logo-dark {
  display: none;
}
[data-theme="dark"] .nav .marca .logo-img.logo-light,
[data-theme="dark"] .foot-brand .logo-img.logo-light,
[data-theme="dark"] .dash-logo img.logo-light {
  display: none;
}
[data-theme="dark"] .nav .marca .logo-img.logo-dark,
[data-theme="dark"] .foot-brand .logo-img.logo-dark,
[data-theme="dark"] .dash-logo img.logo-dark {
  display: block;
}

/* CABECERA */
.nav {
  position: sticky;
  top: 0;
  z-index: 60;
  background: color-mix(in srgb, var(--bg) 70%, transparent);
  backdrop-filter: blur(12px) saturate(1.1);
  border-bottom: 1px solid var(--linea);
  box-shadow: 0 2px 14px rgba(26,25,22,.04);
  height: 64px;
  display: flex;
  align-items: center;
  padding: 0 clamp(20px, 5vw, 56px);
  gap: 18px;
}
.nav .marca { display: flex; align-items: center; gap: 12px; }
.nav .marca .logo-img { height: 34px; width: auto; display: block; }
.nav .marca .cubos { --cubo: 11px; --cubo-gap: 3px; }
.nav .sep-v { width: 1px; height: 26px; background: var(--linea); }
.nav .escuela {
  font-family: var(--font-inst);
  font-size: 12px;
  color: var(--gris);
  font-weight: 400;
  text-decoration: none;
}
a.escuela:hover {
  color: var(--tinta);
  text-decoration: underline;
}
.nav .cta {
  font-family: var(--font-near);
  font-size: 12px;
  font-weight: 600;
  color: #FFFFFF;
  background: var(--negro);
  padding: 9px 16px;
  border-radius: var(--r-s);
  text-decoration: none;
  transition: background .15s var(--ease), color .15s var(--ease);
}
.nav .cta:hover { background: var(--naranja); color: #fff; }

/* Selector de tema claro/oscuro */

/* HERO */
.hero {
  position: relative;
  background: var(--papel);
  color: var(--tinta);
  overflow: hidden;
  padding: clamp(28px, 5vw, 56px) clamp(20px, 5vw, 56px) clamp(56px, 9vw, 100px);
  border-bottom: 1px solid var(--linea);
  min-height: 500px;
}
/* Trama de cubos arquitectónica de fondo */
.hero-grid {
  position: absolute;
  inset: 0;
  background-image:
    linear-gradient(rgba(26,25,22,.05) 1px, transparent 1px),
    linear-gradient(90deg, rgba(26,25,22,.05) 1px, transparent 1px);
  background-size: 46px 46px;
  mask-image: radial-gradient(120% 90% at 82% 12%, #000 0%, transparent 72%);
  pointer-events: none;
}
/* Red animada de egresados (canvas) */
.hero-net {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  pointer-events: none;
  display: block;
  /* la red se ve plena a la derecha (bajo la tarjeta) y se atenúa tras el texto */
  -webkit-mask-image: linear-gradient(90deg, rgba(0,0,0,.28) 0%, rgba(0,0,0,.5) 30%, #000 58%);
          mask-image: linear-gradient(90deg, rgba(0,0,0,.28) 0%, rgba(0,0,0,.5) 30%, #000 58%);
}
@media (max-width: 920px) {
  .hero-net {
    -webkit-mask-image: radial-gradient(150% 90% at 70% 18%, #000 0%, rgba(0,0,0,.35) 75%, transparent 100%);
            mask-image: radial-gradient(150% 90% at 70% 18%, #000 0%, rgba(0,0,0,.35) 75%, transparent 100%);
  }
}
.hero-inner {
  position: relative;
  max-width: 1240px;
  margin: 0 auto;
  display: grid;
  grid-template-columns: 1.15fr .85fr;
  gap: clamp(32px, 5vw, 72px);
  align-items: center;
}
.hero-eyebrow {
  display: flex;
  align-items: center;
  gap: 12px;
  margin-bottom: 26px;
}
.hero-eyebrow .cubos { --cubo: 9px; --cubo-gap: 2px; flex-direction: row; }
.hero-eyebrow span {
  font-family: var(--font-inst);
  font-size: 12px;
  font-weight: 700;
  letter-spacing: 3.5px;
  text-transform: uppercase;
  color: var(--naranja);
}
.hero h1 {
  font-family: var(--font-inst);
  font-weight: 800;
  font-size: clamp(44px, 7vw, 92px);
  line-height: .94;
  letter-spacing: -2px;
  margin-bottom: 26px;
}
.hero h1 em {
  font-style: normal;
  color: var(--naranja);
  position: relative;
  display: inline-block;
}
.hero h1 .eina-brand-img {
  height: 0.82em;
  width: auto;
  vertical-align: middle;
  display: inline-block;
  position: relative;
  top: -0.04em;
}
.hero h1 .thin {
  font-weight: 300;
  color: var(--gris);
}
/* Reveal por palabras */
.hero h1 .w {
  display: inline-block;
  opacity: 0;
  transform: translateY(.42em);
  animation: word-up .62s var(--ease) both;
}
.hero h1 .w:nth-child(1) { animation-delay: .05s; }
.hero h1 .w:nth-child(2) { animation-delay: .15s; }
.hero h1 .w:nth-child(3) { animation-delay: .28s; }
.hero h1 .w:nth-child(4) { animation-delay: .42s; }
@keyframes word-up {
  to { opacity: 1; transform: none; }
}
@media (prefers-reduced-motion: reduce) {
  .hero h1 .w { opacity: 1; transform: none; animation: none; }
}
.hero p.lead {
  font-size: clamp(15px, 1.5vw, 18px);
  line-height: 1.65;
  color: var(--gris);
  max-width: 460px;
  font-weight: 400;
  margin-bottom: 34px;
}
.hero-actions { display: flex; align-items: center; gap: 16px; flex-wrap: wrap; }
.btn-primary {
  font-family: var(--font-near);
  font-size: 14px;
  font-weight: 600;
  color: var(--negro);
  background: var(--naranja);
  border: none;
  padding: 16px 28px;
  border-radius: var(--r-s);
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  gap: 12px;
  text-decoration: none;
  transition: transform .15s var(--ease), background .15s var(--ease);
}
.btn-primary:hover { background: var(--negro); color: var(--naranja); transform: translateY(-2px); }
.btn-primary .arw { transition: transform .2s var(--ease); }
.btn-primary:hover .arw { transform: translateX(4px); }

/* Stats hero */
.hero-stats {
  display: flex;
  gap: 34px;
  margin-top: 44px;
  padding-top: 28px;
  border-top: 1px solid var(--linea);
}
.hero-stats .st .n {
  font-family: var(--font-inst);
  font-size: 34px;
  font-weight: 800;
  color: var(--tinta);
  line-height: 1;
  font-variant-numeric: tabular-nums;
}
.hero-stats .st .n .o { color: var(--naranja); }
.hero-stats .st .l {
  font-size: 11px;
  color: var(--gris);
  margin-top: 8px;
  letter-spacing: .5px;
  text-transform: uppercase;
  font-family: var(--font-inst);
  font-weight: 600;
}

/* Stats configurables cuando se muestran dentro del hero */
.hero-text .stats-bar {
  max-width: none;
  padding: 44px 0 0;
  margin: 0;
  border-top: 1px solid var(--linea);
  border-bottom: none;
}
.hero-text .stats-bar .stats-inner {
  justify-content: flex-start;
  gap: 34px;
}
.hero-text .stats-bar .stat-item { text-align: left; min-width: auto; }
.hero-text .stats-bar .stat-num { font-size: clamp(24px, 2.8vw, 34px); }

/* Tarjeta showcase del hero (carné flotante) */
.hero-card-wrap {
  position: relative;
  perspective: 1400px;
  display: flex;
  justify-content: center;
}
.float-card {
  width: 100%;
  max-width: 480px;
  transform: rotate3d(1, -.6, 0, 9deg);
  animation: floaty 7s ease-in-out infinite;
}
@keyframes floaty {
  0%, 100% { transform: rotate3d(1, -.6, 0, 9deg) translateY(0); }
  50%      { transform: rotate3d(1, -.6, 0, 7deg) translateY(-12px); }
}
@media (prefers-reduced-motion: reduce) {
  .float-card { animation: none; }
}

/*  Carné credencial : el carné mantiene SIEMPRE su propio esquema de
    color, independiente del tema claro/oscuro de la plataforma (es una
    credencial pensada para compartir/imprimir, debe verse igual para
    todo el mundo sin importar las preferencias de quien la mira).*/
.carnet {
  --blanco: #FFFFFF; --tinta: #1A1916; --gris: #6F6B62; --gris-cl: #7A756A;
  --linea: #DCD8CF; --linea-2: #CBC6BB; --azul: #223D71;
  position: relative;
  background: var(--negro);
  color: var(--blanco);
  border-radius: var(--r-l);
  padding: 26px 28px 22px;
  overflow: hidden;
  border: 1px solid #232323;
  box-shadow: 0 30px 60px -20px rgba(0,0,0,.55);
}
.carnet::after {
  content: "";
  position: absolute;
  right: -40px; top: -40px;
  width: 180px; height: 180px;
  background: radial-gradient(circle, rgba(237,171,0,.16), transparent 70%);
  pointer-events: none;
}
.carnet--claro { background: var(--blanco); color: var(--tinta); border-color: var(--linea); box-shadow: 0 24px 50px -22px rgba(0,0,0,.25); }
.carnet--azul  { background: var(--azul); color: var(--blanco); border-color: var(--azul-d); }
.carnet-top {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  margin-bottom: 26px;
}
.carnet-brand { display: flex; align-items: center; gap: 11px; }
.carnet-logo { height: 30px; width: auto; display: block; }
.carnet-brand .cubos { --cubo: 13px; --cubo-gap: 3px; }
.carnet-brand .tx { display: flex; flex-direction: column; line-height: 1; font-family: var(--font-inst); }
.carnet-brand .tx .a { font-size: 9px; font-weight: 700; letter-spacing: 2.5px; text-transform: uppercase; color: var(--naranja); }
.carnet-brand .tx .e { font-size: 19px; font-weight: 800; letter-spacing: 1px; margin-top: 3px; }
.carnet--claro .carnet-brand .tx .e { color: var(--negro); }
.carnet-chip {
  font-family: var(--font-inst);
  font-size: 9px;
  font-weight: 700;
  letter-spacing: 1.5px;
  text-transform: uppercase;
  padding: 5px 9px;
  border-radius: 100px;
  border: 1px solid rgba(255,255,255,.22);
  color: #b9b6af;
}
.carnet--claro .carnet-chip { border-color: var(--linea-2); color: var(--gris); }
.carnet-name {
  font-family: var(--font-inst);
  font-size: 25px;
  font-weight: 800;
  line-height: 1.05;
  letter-spacing: -.3px;
  margin-bottom: 6px;
  word-break: break-word;
}
.carnet-role {
  font-size: 13px;
  color: #a8a49c;
  font-weight: 300;
  line-height: 1.4;
  min-height: 18px;
}
.carnet--claro .carnet-role { color: var(--gris); }
.carnet--azul .carnet-role { color: #aebbd6; }
.carnet-foot {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  margin-top: 24px;
  padding-top: 18px;
  border-top: 1px solid rgba(255,255,255,.12);
}
.carnet--claro .carnet-foot { border-color: var(--linea); }
.carnet--azul .carnet-foot { border-color: rgba(255,255,255,.18); }
.carnet-foot .org {
  font-family: var(--font-inst);
  font-size: 10px;
  line-height: 1.45;
  color: #8b8b8b;
  font-weight: 400;
  max-width: 200px;
}
.carnet--claro .carnet-foot .org { color: var(--gris-cl); }
.carnet--azul .carnet-foot .org { color: #93a1c1; }
.carnet-num { text-align: right; }
.carnet-num .lab {
  font-family: var(--font-inst);
  font-size: 8px;
  font-weight: 700;
  letter-spacing: 2px;
  text-transform: uppercase;
  color: #8b8b8b;
}
.carnet-num .val {
  font-family: var(--font-inst);
  font-size: 30px;
  font-weight: 800;
  color: var(--naranja);
  letter-spacing: 1px;
  line-height: 1;
  font-variant-numeric: tabular-nums;
}
.carnet--claro .carnet-num .val { color: var(--naranja); }

/* ESTADÍSTICAS DE PORTADA (configurables, ver inicio.js) */
.stats-bar {
  max-width: 1240px;
  margin: 0 auto;
  padding: 36px clamp(20px, 5vw, 56px);
  border-bottom: 1px solid var(--linea);
}
.stats-inner {
  display: flex;
  flex-wrap: wrap;
  justify-content: space-around;
  gap: 28px;
}
.stat-item { text-align: center; min-width: 110px; }
.stat-num {
  font-family: var(--font-inst);
  font-weight: 800;
  font-size: clamp(30px, 4vw, 44px);
  color: var(--tinta);
  line-height: 1;
  font-variant-numeric: tabular-nums;
}
.stat-lab {
  margin-top: 6px;
  font-size: 12.5px;
  font-weight: 600;
  letter-spacing: .3px;
  color: var(--gris);
}

/* SECCIONES DINÁMICAS DE PORTADA: eventos / noticias e historias */
.home-section {
  max-width: 1240px;
  margin: 0 auto;
  padding: clamp(40px, 6vw, 64px) clamp(20px, 5vw, 56px);
  border-top: 1px solid var(--linea);
}
.home-section .col-head { text-align: left; margin-bottom: 32px; }
.home-section .col-head .eyebrow { justify-content: flex-start; }

/* SECCIÓN TRABAJO */
.work {
  max-width: 1240px;
  margin: 0 auto;
  padding: clamp(48px, 7vw, 88px) clamp(20px, 5vw, 56px) 40px;
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: clamp(28px, 4vw, 56px);
  align-items: start;
}
.col-head { margin-bottom: 22px; }
.col-head .eyebrow { margin-bottom: 12px; display: flex; align-items: center; gap: 10px; }
.col-head .eyebrow .cubos { --cubo: 7px; --cubo-gap: 2px; flex-direction: row; }
.col-head h2 {
  font-family: var(--font-inst);
  font-size: clamp(26px, 3vw, 34px);
  font-weight: 800;
  letter-spacing: -.6px;
  line-height: 1;
  margin-bottom: 10px;
}
.col-head p {
  font-size: 14px;
  color: var(--gris);
  line-height: 1.6;
  font-weight: 300;
  max-width: 420px;
}

/* Tarjeta de formulario */
.panel {
  background: var(--blanco);
  border: 1px solid var(--linea);
  border-radius: var(--r-l);
  overflow: hidden;
  box-shadow: 0 1px 0 rgba(0,0,0,.02);
}
.panel-head {
  background: var(--negro);
  padding: 15px 24px;
  display: flex;
  align-items: center;
  justify-content: space-between;
}
.panel-head .t {
  font-family: var(--font-inst);
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 2px;
  text-transform: uppercase;
  color: #FFFFFF;
  display: flex;
  align-items: center;
  gap: 10px;
}
.panel-head .t .cubos { --cubo: 7px; --cubo-gap: 2px; }
.panel-head .num {
  font-family: var(--font-inst);
  font-size: 12px;
  font-weight: 800;
  color: var(--naranja);
  letter-spacing: 1.5px;
  font-variant-numeric: tabular-nums;
}
.panel-body { padding: 26px 24px; }

/* Progreso */
.prog {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-bottom: 22px;
}
.prog .bar {
  flex: 1;
  height: 5px;
  background: var(--papel-2);
  border-radius: 100px;
  overflow: hidden;
}
.prog .bar i {
  display: block;
  height: 100%;
  width: 0%;
  background: var(--naranja);
  border-radius: 100px;
  transition: width .35s var(--ease);
}
.prog .pct {
  font-family: var(--font-inst);
  font-size: 11px;
  font-weight: 700;
  color: var(--gris);
  letter-spacing: .5px;
  font-variant-numeric: tabular-nums;
  min-width: 60px;
  text-align: right;
}

.row { display: grid; gap: 14px; margin-bottom: 16px; }
.row.two { grid-template-columns: 1fr 1fr; }
.field { display: flex; flex-direction: column; gap: 6px; }
.field label {
  font-family: var(--font-inst);
  font-size: 10px;
  font-weight: 700;
  letter-spacing: 1.5px;
  text-transform: uppercase;
  color: var(--gris);
}
.field label .req { color: var(--naranja); margin-left: 2px; }
.field input,
.field select {
  font-family: var(--font-near);
  font-size: 14.5px;
  font-weight: 400;
  padding: 12px 13px;
  border: 1.5px solid var(--linea);
  border-radius: var(--r-s);
  background: var(--papel-2);
  color: var(--tinta);
  transition: border-color .14s var(--ease), box-shadow .14s var(--ease);
  -webkit-appearance: none;
  appearance: none;
  width: 100%;
}
.field input:focus,
.field select:focus {
  outline: none;
  border-color: var(--naranja);
  box-shadow: 0 0 0 3px rgba(var(--naranja-rgb),.18);
}
.field input::placeholder { color: #c4bfb5; font-weight: 300; }
.field select {
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='11' height='7' viewBox='0 0 11 7'%3E%3Cpath fill='%236F6B62' d='M5.5 7 0 0h11z'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: right 13px center;
  padding-right: 32px;
  cursor: pointer;
}
.field.err input, .field.err select { border-color: #C0392B; }
.field .emsg {
  font-size: 11.5px;
  color: #C0392B;
  font-weight: 500;
  display: none;
}
.field.err .emsg { display: block; }

.divider { border: none; border-top: 1px solid var(--linea); margin: 22px 0; }

.check {
  display: flex;
  align-items: flex-start;
  gap: 12px;
  padding: 15px 16px;
  background: var(--papel);
  border: 1.5px solid var(--linea);
  border-radius: var(--r-m);
  cursor: pointer;
  transition: border-color .14s, background .14s;
  margin-bottom: 20px;
}
.check:hover { border-color: var(--linea-2); background: var(--papel-2); }
.check input { width: 17px; height: 17px; min-width: 17px; margin-top: 1px; accent-color: var(--negro); cursor: pointer; }
.check .tt { font-family: var(--font-near); font-size: 13.5px; font-weight: 600; display: block; margin-bottom: 3px; }
.check .dd { font-size: 12.5px; color: var(--gris); line-height: 1.5; font-weight: 300; }

.btn-submit {
  width: 100%;
  font-family: var(--font-near);
  font-size: 15px;
  font-weight: 600;
  color: var(--naranja);
  background: var(--negro);
  border: none;
  border-radius: var(--r-s);
  padding: 17px 20px;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 12px;
  transition: background .15s var(--ease);
}
.btn-submit:hover { background: #1a1a1a; }
.btn-submit:disabled { background: #2a2a2a; color: #777; cursor: default; }
.btn-submit .arw { transition: transform .2s var(--ease); }
.btn-submit:not(:disabled):hover .arw { transform: translateX(4px); }

/* STUDIO BADGE */
.studio { position: sticky; top: 88px; }

/* Estado bloqueado */
.locked {
  background:
    repeating-linear-gradient(45deg, var(--papel) 0 12px, var(--papel-2) 12px 24px);
  border: 1.5px dashed var(--linea-2);
  border-radius: var(--r-l);
  padding: 48px 28px;
  text-align: center;
}
.locked .cubos { --cubo: 16px; --cubo-gap: 5px; margin: 0 auto 20px; opacity: .35; }
.locked .cubos i { background: var(--gris-cl); }
.locked h3 {
  font-family: var(--font-inst);
  font-size: 17px;
  font-weight: 800;
  margin-bottom: 8px;
}
.locked p { font-size: 13px; color: var(--gris); line-height: 1.6; font-weight: 300; max-width: 280px; margin: 0 auto; }

/* Estado activo */
.studio-live { display: none; }
.studio-live.on { display: block; animation: rise .4s var(--ease); }
@keyframes rise { from { opacity: 0; transform: translateY(12px); } to { opacity: 1; transform: none; } }

.tabs {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 6px;
  margin-bottom: 16px;
}
.tab {
  font-family: var(--font-inst);
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 1px;
  text-transform: uppercase;
  padding: 11px 6px;
  border: 1.5px solid var(--linea);
  border-radius: var(--r-s);
  background: var(--blanco);
  color: var(--gris);
  cursor: pointer;
  transition: all .13s var(--ease);
}
.tab:hover { border-color: var(--linea-2); color: var(--tinta); }
.tab.on { background: var(--negro); color: var(--naranja); border-color: var(--negro); }

.stage {
  background: var(--papel-2);
  border: 1px solid var(--linea);
  border-radius: var(--r-l);
  padding: 32px 30px;
  margin-bottom: 16px;
  display: flex;
  align-items: center;
  justify-content: center;
}
.stage .float-card { transform: none; animation: none; max-width: 380px; }

/* Acciones de exportación */
.export-main {
  display: flex;
  gap: 10px;
  margin-bottom: 10px;
}
.btn-download {
  flex: 1;
  font-family: var(--font-near);
  font-size: 13.5px;
  font-weight: 600;
  color: var(--negro);
  background: var(--naranja);
  border: none;
  border-radius: var(--r-s);
  padding: 14px 16px;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 9px;
  transition: background .14s var(--ease), transform .14s var(--ease);
}
.btn-download:hover { background: var(--naranja); transform: translateY(-1px); }
.btn-download.ok { background: var(--negro); color: var(--naranja); }
.btn-icon {
  font-family: var(--font-inst);
  font-size: 12px;
  font-weight: 700;
  letter-spacing: .5px;
  color: var(--tinta);
  background: var(--blanco);
  border: 1.5px solid var(--linea);
  border-radius: var(--r-s);
  padding: 14px 16px;
  cursor: pointer;
  white-space: nowrap;
  transition: all .14s var(--ease);
}
.btn-icon:hover { border-color: var(--negro); }

.export-grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: 8px;
  margin-bottom: 16px;
}
.btn-ghost {
  font-family: var(--font-near);
  font-size: 11.5px;
  font-weight: 600;
  color: var(--tinta);
  background: var(--blanco);
  border: 1.5px solid var(--linea);
  border-radius: var(--r-s);
  padding: 11px 8px;
  cursor: pointer;
  transition: all .13s var(--ease);
}
.btn-ghost:hover { background: var(--negro); color: var(--naranja); border-color: var(--negro); }
.btn-ghost.ok { background: var(--negro); color: var(--naranja); border-color: var(--negro); }

/* LinkedIn: tarjeta para compartir la credencial. Sigue el tema claro/oscuro de la plataforma
   como el resto del panel (ya no se fuerza a blanco fijo).*/
.li {
  border: 1px solid var(--linea);
  border-radius: var(--r-l);
  overflow: hidden;
  margin-bottom: 14px;
}
.li-head {
  background: var(--negro);
  padding: 12px 16px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
}
.li-head .ic {
  width: 22px; height: 22px;
  background: #0A66C2;
  border-radius: 4px;
  display: flex; align-items: center; justify-content: center;
  order: 2;
}
.li-head .tx {
  font-family: var(--font-inst);
  font-size: 11px; font-weight: 700;
  letter-spacing: 1.5px; text-transform: uppercase; color: #FFFFFF;
}
.li-body { padding: 16px; background: var(--blanco); }
.li-preview {
  background: var(--papel);
  border: 1px solid var(--linea);
  border-radius: var(--r-s);
  padding: 13px 14px;
  font-family: var(--font-near);
  font-size: 12.5px; color: var(--gris); line-height: 1.6; font-weight: 300;
  white-space: pre-wrap; max-height: 150px; overflow-y: auto;
  word-break: break-word; margin-bottom: 12px;
}
.li-btns { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
.btn-li {
  font-family: var(--font-near);
  font-size: 12.5px; font-weight: 600;
  border: none; border-radius: var(--r-s); padding: 12px 8px; cursor: pointer;
  display: flex; align-items: center; justify-content: center; gap: 7px;
  text-decoration: none; transition: background .13s var(--ease);
}
.btn-li.pub { background: #0A66C2; color: #FFFFFF; }
.btn-li.pub:hover { background: #004182; }
.btn-li.cop { background: var(--blanco); color: var(--tinta); border: 1.5px solid var(--linea); }
.btn-li.cop:hover { background: var(--negro); color: var(--naranja); border-color: var(--negro); }
.btn-li.cop.ok { background: var(--negro); color: var(--naranja); border-color: var(--negro); }
.li-note { margin-top: 10px; font-size: 10.5px; color: var(--gris-cl); line-height: 1.55; font-weight: 300; }
.li-note b { color: var(--tinta); font-weight: 700; }

/* FOOTER */
footer {
  background: var(--blanco);
  color: var(--tinta);
  margin-top: 40px;
  padding: clamp(40px, 6vw, 64px) clamp(20px, 5vw, 56px) 40px;
  border-top: 1px solid var(--linea);
}
.foot-inner {
  max-width: 1240px;
  margin: 0 auto;
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 28px;
  flex-wrap: wrap;
}
.foot-brand { display: flex; align-items: center; gap: 14px; }
.foot-brand .logo-img { height: 46px; width: auto; display: block; }
.foot-brand .cubos { --cubo: 16px; --cubo-gap: 4px; }
.foot-brand .tx { display: flex; flex-direction: column; line-height: 1; font-family: var(--font-inst); }
.foot-brand .tx .a { font-size: 11px; font-weight: 700; letter-spacing: 3px; text-transform: uppercase; color: var(--naranja); }
.foot-brand .tx .e { font-size: 30px; font-weight: 800; letter-spacing: 1px; margin-top: 4px; color: var(--negro); }
.foot-meta { text-align: right; }
.foot-meta .org { font-family: var(--font-inst); font-size: 12px; color: var(--gris); line-height: 1.6; }
.foot-meta .org a { color: var(--naranja); text-decoration: none; }
.foot-meta .org a:hover { text-decoration: underline; }
.foot-bar {
  max-width: 1240px;
  margin: 32px auto 0;
  padding-top: 24px;
  border-top: 1px solid var(--linea);
  display: flex;
  justify-content: space-between;
  gap: 16px;
  flex-wrap: wrap;
  font-family: var(--font-inst);
  font-size: 11px;
  color: var(--gris-cl);
  letter-spacing: .3px;
}

/* Toast */
.toast {
  position: fixed;
  bottom: 28px; left: 50%;
  transform: translateX(-50%) translateY(20px);
  background: var(--negro);
  color: #FFFFFF;
  font-family: var(--font-inst);
  font-size: 13px; font-weight: 600;
  padding: 13px 22px;
  border-radius: 100px;
  border-left: 3px solid var(--naranja);
  box-shadow: 0 16px 40px -10px rgba(0,0,0,.5);
  opacity: 0; pointer-events: none;
  transition: opacity .25s var(--ease), transform .25s var(--ease);
  z-index: 200;
  display: flex; align-items: center; gap: 9px;
}
.toast.on { opacity: 1; transform: translateX(-50%) translateY(0); }
.toast b { color: var(--naranja); }

/* RESPONSIVE */
@media (max-width: 920px) {
  .hero-inner { grid-template-columns: 1fr; }
  .hero-card-wrap { order: -1; max-width: 380px; margin-bottom: 8px; }
  .float-card { transform: none !important; animation: none; }
  .work { grid-template-columns: 1fr; }
  .studio { position: static; }
}
@media (max-width: 560px) {
  .nav .escuela, .nav .sep-v { display: none; }
  .row.two { grid-template-columns: 1fr; }
  .hero-stats { flex-wrap: wrap; gap: 22px; }
  .foot-inner { flex-direction: column; align-items: flex-start; }
  .foot-meta { text-align: left; }
}

/* Paso de verificación de email (Supabase Auth OTP) */

/*
   FEATURE LOGIN : botón nav, modal, card contraseña*/

/* Zona derecha del header */
.nav-actions {
  margin-left: auto;
  display: flex;
  align-items: center;
  gap: 10px;
  flex-shrink: 0;
}

/* Botón base "Iniciar sesión" */
.btn-nav-login {
  font-family: var(--font-near);
  font-size: 13px;
  font-weight: 600;
  padding: 7px 18px;
  border-radius: var(--r-m);
  border: 1.5px solid var(--tinta);
  background: transparent;
  color: var(--tinta);
  cursor: pointer;
  transition: background 0.15s var(--ease), color 0.15s var(--ease);
  white-space: nowrap;
}
.btn-nav-login:hover { background: var(--ink); color: var(--bg); }

/* Estado PRÓXIMAMENTE (FEATURE_LOGIN = false) */

/* Modal overlay */
.login-overlay {
  position: fixed;
  inset: 0;
  background: rgba(26,25,22,0.72);
  backdrop-filter: blur(4px);
  -webkit-backdrop-filter: blur(4px);
  z-index: 9000;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 20px;
  animation: fadeIn 0.2s var(--ease);
}
@keyframes fadeIn { from { opacity: 0; } to { opacity: 1; } }

.login-modal {
  position: relative;
  background: #111110;
  border: 1px solid rgba(255,255,255,0.12);
  border-radius: 16px;
  padding: 36px;
  width: 100%;
  max-width: 420px;
  animation: slideUp 0.22s var(--ease);
}
@keyframes slideUp { from { transform: translateY(14px); opacity: 0; } to { transform: none; opacity: 1; } }

.login-close {
  position: absolute;
  top: 16px; right: 18px;
  background: none; border: none;
  color: var(--gris-cl); font-size: 16px;
  cursor: pointer; line-height: 1;
  padding: 4px 6px;
  border-radius: var(--r-s);
  transition: color 0.12s;
}
.login-close:hover { color: #FFFFFF; }

.login-brand { margin-bottom: 20px; }
.login-title {
  font-size: 22px; font-weight: 800;
  color: #FFFFFF; margin-bottom: 8px;
}
.login-desc {
  font-size: 13px; color: #A8A49C;
  line-height: 1.6; margin-bottom: 22px;
}

/* Reusar .field dentro del modal con tema oscuro */
.login-modal .field label { color: #A8A49C; }
.login-modal .field input {
  background: rgba(255,255,255,0.06);
  border-color: rgba(255,255,255,0.16);
  color: #FFFFFF;
}
.login-modal .field input::placeholder { color: #6F6B62; }
.login-modal .field input:focus {
  border-color: var(--naranja);
  background: rgba(255,255,255,0.09);
}

.login-alt {
  margin-top: 20px;
  font-size: 12px; color: #6F6B62;
  line-height: 1.6; text-align: center;
}
.login-alt a { color: var(--naranja); text-decoration: none; }
.login-alt a:hover { text-decoration: underline; }

/*
   DASHBOARD : panel del alumni autenticado
*/

.dash-body {
  margin: 0;
  background: var(--blanco);
  min-height: 100vh;
}

/* Estructura del panel: barra lateral fija y área principal */
.dash-layout {
  display: flex;
  min-height: 100vh;
}
.dash-sidebar-toggle { display: none; }
.dash-sidebar-backdrop { display: none; }

/* Sidebar */
.dash-sidebar {
  width: 264px;
  min-width: 264px;
  background: var(--papel);
  border-right: 1px solid var(--linea);
  display: flex;
  flex-direction: column;
  position: sticky;
  top: 0;
  height: 100vh;
  overflow-y: auto;
  padding: 24px 0 20px;
  z-index: 10;
}

.dash-logo {
  padding: 0 22px 20px;
  border-bottom: 1px solid var(--linea);
  margin-bottom: 20px;
}
.dash-logo img { height: 28px; width: auto; display: block; }

.dash-user-card {
  padding: 0 16px 18px;
  display: flex;
  align-items: center;
  gap: 11px;
  border-bottom: 1px solid var(--linea);
  margin-bottom: 16px;
}
.dash-avatar {
  width: 38px;
  height: 38px;
  border-radius: 50%;
  background: var(--naranja);
  color: var(--negro);
  font-weight: 800;
  font-size: 13px;
  font-family: var(--font-inst);
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  letter-spacing: 0.5px;
}
.dash-user-info { min-width: 0; }
.dash-user-name {
  font-weight: 700;
  font-size: 13.5px;
  color: var(--tinta);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  line-height: 1.3;
}
.dash-user-num {
  font-size: 11px;
  color: var(--gris-cl);
  margin-top: 1px;
  font-family: var(--font-inst);
  font-variant-numeric: tabular-nums;
}

/* Nav items */
.dash-nav {
  padding: 0 10px;
  flex: 1;
}
.dash-nav-item {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 9px 12px;
  border-radius: var(--r-m);
  font-size: 13.5px;
  font-weight: 500;
  color: var(--gris);
  text-decoration: none;
  margin-bottom: 2px;
  transition: background .12s var(--ease), color .12s var(--ease);
  border-left: 3px solid transparent;
}
.dash-nav-item svg { flex-shrink: 0; opacity: .6; transition: opacity .12s; }
.dash-nav-item:hover { background: var(--papel-2); color: var(--tinta); }
.dash-nav-item:hover svg { opacity: .85; }
.dash-nav-item.active {
  background: rgba(var(--naranja-rgb),.10);
  color: var(--tinta);
  font-weight: 700;
  border-left-color: var(--naranja);
  padding-left: 9px;
}
.dash-nav-item.active svg { opacity: 1; }

/* Logout al pie */
.dash-sidebar-bottom {
  padding: 16px 10px 0;
  border-top: 1px solid var(--linea);
  margin-top: auto;
}
.dash-logout-btn {
  width: 100%;
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 8px 14px;
  border: none;
  background: none;
  color: var(--gris);
  font-size: 13px;
  font-family: var(--font-near);
  cursor: pointer;
  border-radius: var(--r-m);
  transition: color .12s, background .12s;
}
.dash-logout-btn:hover { background: var(--papel-2); color: var(--tinta); }
.dash-logout-btn svg { flex-shrink: 0; opacity: .65; }

/* Área principal */
.dash-main {
  flex: 1;
  overflow-y: auto;
  background: var(--blanco);
}

/* Cabecera global del panel ("masthead"), imagen configurable por el
   admin (ajustes.cabecera_imagen). Solo aparece si hay una configurada.*/
.dash-masthead {
  position: relative;
  height: 220px;
  overflow: hidden;
  background: var(--negro);
}
.dash-masthead img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}
.dash-masthead-shade {
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, rgba(0,0,0,.05) 0%, rgba(0,0,0,.55) 100%);
}

/* Secciones (visibles/ocultas) */
.dash-section { display: none; padding: 44px 48px; max-width: 860px; }
.dash-section.active { display: block; animation: rise .3s var(--ease); }

/* Cabecera de sección */

/* Badge studio dentro del dashboard */
.dash-badge-studio { max-width: 820px; }
.cred-layout { display: grid; grid-template-columns: 440px 1fr; gap: 32px; align-items: start; }
.cred-preview { display: flex; flex-direction: column; gap: 14px; }
.cred-preview .stage { margin-bottom: 0; }
.cred-actions { display: flex; flex-direction: column; }
@media (max-width: 760px) {
  .cred-layout { grid-template-columns: 1fr; }
}

/* Panel en el dashboard (Perfil, Contraseña) */

/* Formularios del panel (Perfil, Contraseña): SIN tarjeta ni caja: usan
   tipografía y espaciado para separar bloques en vez de bordes, para que
   no se vean "modularizados" frente al resto de la plataforma.*/
.dash-form { max-width: 620px; }
.dash-form-group { padding: 26px 0; border-bottom: 1px solid var(--linea); }
.dash-form-group:first-child { padding-top: 0; }
.dash-form-group:last-of-type { border-bottom: none; padding-bottom: 4px; }
.dash-form-group-title {
  font-family: var(--font-inst);
  font-size: 10px;
  font-weight: 700;
  letter-spacing: 2.5px;
  text-transform: uppercase;
  color: var(--gris);
  display: flex;
  align-items: center;
  gap: 8px;
  margin-bottom: 18px;
}
.dash-form-group-title .cubos { --cubo: 7px; --cubo-gap: 2px; }
.dash-form-group-title .cubos i { background: var(--gris-cl); }
.dash-form .btn-submit { margin-top: 28px; }

/*  Responsive: por debajo de 800px la barra lateral deja de convivir con el
    contenido (no hay sitio para las dos) y pasa a ser un cajón que se abre
    sobre la página, igual que el menú móvil de la web pública.*/
@media (max-width: 800px) {
  .dash-masthead { height: 150px; }

  .dash-layout { flex-direction: column; }

  .dash-sidebar-toggle {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 4px;
    position: fixed;
    top: 14px;
    left: 14px;
    z-index: 300;
    width: 42px;
    height: 42px;
    background: var(--blanco);
    border: 1px solid var(--linea);
    border-radius: var(--r-m);
    box-shadow: var(--elev);
    cursor: pointer;
  }
  .dash-sidebar-toggle span { display: block; width: 18px; height: 2px; background: var(--tinta); border-radius: 2px; transition: transform .15s, opacity .15s; }
  .dash-sidebar-toggle[aria-expanded="true"] span:nth-child(1) { transform: translateY(6px) rotate(45deg); }
  .dash-sidebar-toggle[aria-expanded="true"] span:nth-child(2) { opacity: 0; }
  .dash-sidebar-toggle[aria-expanded="true"] span:nth-child(3) { transform: translateY(-6px) rotate(-45deg); }

  .dash-sidebar-backdrop:not([hidden]) {
    display: block;
    position: fixed;
    inset: 0;
    background: rgba(15,14,12,.45);
    z-index: 190;
  }

  .dash-sidebar {
    position: fixed;
    top: 0;
    left: 0;
    z-index: 200;
    width: 280px;
    max-width: 82vw;
    height: 100vh;
    min-width: unset;
    flex-direction: column;
    flex-wrap: nowrap;
    border-right: 1px solid var(--linea);
    border-bottom: none;
    box-shadow: var(--elev);
    transform: translateX(-100%);
    transition: transform .22s var(--ease);
  }
  .dash-sidebar.is-open { transform: translateX(0); }
  .dash-nav { display: block; }
  .dash-nav-item { border-bottom: none; border-left: 3px solid transparent; }
  .dash-nav-item.active { border-bottom-color: transparent; border-left-color: var(--naranja); padding-left: 9px; }
  .dash-sidebar-bottom { margin-left: 0; }

  .dash-main { padding-top: 64px; }

  .dash-section { padding: 28px 20px; }
}

/* Cuando el cajón está abierto, se bloquea el scroll de fondo. */
body.sidebar-open { overflow: hidden; }
@media (max-width: 480px) {
  /* El cajón de navegación tiene ancho de sobra (hasta 82vw) para mostrar
     icono + texto; ocultar la etiqueta aquí era un resto del diseño anterior
     (una barra horizontal de solo-iconos) que ya no existe.*/
  .dash-section { padding: 20px 16px; }
}

/* ENLACE AL PANEL DE ADMINISTRACIÓN (sidebar del dashboard) */
.dash-admin-link {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 8px 14px;
  margin-bottom: 4px;
  border-radius: var(--r-m);
  background: rgba(var(--naranja-rgb),.10);
  color: var(--tinta);
  font-size: 13px;
  font-weight: 600;
  font-family: var(--font-near);
  text-decoration: none;
  transition: background .12s, color .12s;
}
.dash-admin-link:hover { background: var(--naranja); color: var(--tinta); }
.dash-admin-link svg { flex-shrink: 0; opacity: .8; }

/* CONTENIDO: filtros y listado (panel del miembro) */

.content-feed {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
  gap: 18px;
}

/* Layout destacado para la sección de comunidad (noticias+historias):
   primera tarjeta grande a la izquierda, tres compactas apiladas a la derecha*/
#home-feed-grid {
  grid-template-columns: 1.25fr 0.75fr;
  gap: 22px;
}
#home-feed-grid .content-card:first-child {
  grid-row: span 3;
}
#home-feed-grid .content-card:first-child .cc-img {
  height: 210px;
}
#home-feed-grid .content-card:not(:first-child) {
  flex-direction: row;
  align-items: stretch;
}
#home-feed-grid .content-card:not(:first-child) .cc-img {
  width: 88px;
  min-width: 88px;
  height: auto;
  min-height: 80px;
}
#home-feed-grid .content-card:not(:first-child) .cc-body {
  padding: 12px 14px;
  gap: 5px;
}
#home-feed-grid .content-card:not(:first-child) .cc-resumen { display: none; }
#home-feed-grid .content-card:not(:first-child) .cc-titulo { font-size: 14px; }
@media (max-width: 820px) {
  #home-feed-grid {
    grid-template-columns: 1fr;
  }
  #home-feed-grid .content-card:first-child { grid-row: auto; }
  #home-feed-grid .content-card:not(:first-child) { flex-direction: column; }
  #home-feed-grid .content-card:not(:first-child) .cc-img { width: auto; min-width: 0; height: 130px; }
  #home-feed-grid .content-card:not(:first-child) .cc-body { padding: 16px 18px; gap: 8px; }
  #home-feed-grid .content-card:not(:first-child) .cc-resumen { display: block; }
  #home-feed-grid .content-card:not(:first-child) .cc-titulo { font-size: 16px; }
}
.content-card {
  border: 1px solid var(--linea);
  border-radius: var(--r-l);
  background: var(--blanco);
  overflow: hidden;
  display: flex;
  flex-direction: column;
  box-shadow: var(--elev);
  transition: border-color .12s, transform .14s, box-shadow .14s;
}
.content-card:hover { border-color: var(--linea-2); transform: translateY(-4px); box-shadow: var(--elev); }
.content-card.destacado { border-color: var(--naranja); box-shadow: 0 0 0 1px rgba(var(--naranja-rgb),.25), var(--elev); }
.content-card .cc-img {
  height: 130px;
  background-size: cover;
  background-position: center;
  background-color: var(--papel-2);
}
.content-card .cc-body { padding: 16px 18px; display: flex; flex-direction: column; gap: 8px; flex: 1; }
.cc-head { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.cc-tipo {
  align-self: flex-start;
  font-size: 9.5px;
  font-weight: 700;
  letter-spacing: 1.4px;
  text-transform: uppercase;
  color: var(--naranja);
  background: rgba(237,171,0,.13);
  padding: 4px 9px;
  border-radius: 6px;
  line-height: 1;
}
.cc-titulo {
  font-family: var(--font-inst);
  font-size: 16px;
  font-weight: 700;
  color: var(--tinta);
  line-height: 1.35;
}
.cc-resumen { font-size: 13px; color: var(--gris); line-height: 1.55; font-weight: 300; flex: 1; }
.cc-foot {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  margin-top: 4px;
  padding-top: 10px;
  border-top: 1px solid var(--linea);
}
.cc-fecha { font-size: 11.5px; color: var(--gris-cl); }
.cc-link { font-size: 12.5px; font-weight: 700; color: var(--tinta); text-decoration: none; }
.cc-link:hover { color: var(--naranja); }

/* Identidad visual por categoría: pastilla de color por tipo (sin franja superior). */
.content-card.tipo-noticia   .cc-tipo { color: var(--c-noticia);   background: rgba(237,171,0,.13); }
.content-card.tipo-historia  .cc-tipo { color: var(--c-historia);  background: rgba(34,61,113,.13); }
.content-card.tipo-curso     .cc-tipo { color: var(--c-curso);     background: rgba(62,124,89,.13); }
.content-card.tipo-mentoring .cc-tipo { color: var(--c-mentoring); background: rgba(122,59,105,.13); }
.content-card.tipo-recurso   .cc-tipo { color: var(--c-recurso);   background: rgba(177,82,31,.13); }
.content-card.tipo-evento    .cc-tipo { color: var(--c-evento);    background: rgba(26,46,85,.13); }
.content-card.destacado      { border-color: var(--naranja); box-shadow: 0 0 0 1px rgba(var(--naranja-rgb),.25), var(--elev); }

.content-empty {
  padding: 40px 20px;
  text-align: center;
  color: var(--gris-cl);
  font-size: 13.5px;
  border: 1.5px dashed var(--linea-2);
  border-radius: var(--r-l);
}

/* DIRECTORIO ALUMNI */
#inp-directorio-buscar {
  width: 100%;
  max-width: 420px;
  padding: 10px 14px;
  border: 1px solid var(--linea);
  border-radius: var(--r-m);
  font-family: var(--font-near);
  font-size: 13.5px;
  color: var(--tinta);
  background: var(--blanco);
  margin-bottom: 22px;
}
#inp-directorio-buscar:focus { outline: none; border-color: var(--naranja); }

.directorio-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(250px, 1fr));
  gap: 12px;
}
.dir-card {
  display: flex;
  align-items: center;
  gap: 13px;
  padding: 14px 16px;
  border: 1px solid var(--linea);
  border-radius: var(--r-l);
  background: var(--blanco);
  transition: border-color .12s var(--ease), transform .12s var(--ease);
}
.dir-card:hover { border-color: var(--negro); transform: translateY(-2px); }
.dir-avatar {
  flex-shrink: 0;
  width: 40px;
  height: 40px;
  border-radius: 50%;
  background: var(--negro);
  color: var(--naranja);
  display: flex;
  align-items: center;
  justify-content: center;
  font-family: var(--font-inst);
  font-weight: 700;
  font-size: 13.5px;
  box-shadow: 0 0 0 3px var(--papel-2);
}
.dir-info { flex: 1; min-width: 0; }
.dir-name { font-family: var(--font-inst); font-weight: 700; font-size: 13.5px; color: var(--tinta); line-height: 1.3; }
.dir-detail { font-size: 11.5px; color: var(--gris); margin-top: 2px; }
.dir-empresa { font-size: 11.5px; color: var(--gris-cl); margin-top: 1px; }

/* PANEL DE ADMINISTRACIÓN: tablas, badges, toggles */
.admin-table-wrap { overflow-x: auto; }
.admin-table {
  width: 100%;
  border-collapse: collapse;
  font-size: 13px;
}
.admin-table th {
  text-align: left;
  font-family: var(--font-inst);
  font-size: 10.5px;
  font-weight: 700;
  letter-spacing: 1.5px;
  text-transform: uppercase;
  color: var(--gris-cl);
  padding: 10px 12px;
  border-bottom: 1px solid var(--linea);
  white-space: nowrap;
}
.admin-table td {
  padding: 11px 12px;
  border-bottom: 1px solid var(--linea);
  color: var(--tinta);
  vertical-align: middle;
}
.admin-table tbody tr:hover { background: var(--papel); }
.admin-table tr.row-inactivo { opacity: .5; }
.admin-actions { display: flex; gap: 6px; white-space: nowrap; }

.btn-mini {
  padding: 5px 11px;
  border-radius: var(--r-m);
  border: 1px solid var(--linea);
  background: var(--blanco);
  color: var(--gris);
  font-size: 11.5px;
  font-weight: 600;
  font-family: var(--font-near);
  cursor: pointer;
  transition: background .12s, color .12s, border-color .12s;
}
.btn-mini:hover { border-color: var(--linea-2); color: var(--tinta); }
.btn-mini.danger:hover { background: #C0392B; color: #FFFFFF; border-color: #C0392B; }

.badge-pill {
  display: inline-block;
  padding: 2px 9px;
  border-radius: 999px;
  font-size: 10.5px;
  font-weight: 700;
  letter-spacing: .3px;
  background: var(--papel-2);
  color: var(--gris);
}
.badge-pill.ok { background: rgba(var(--naranja-rgb),.18); color: #8a6400; }
.badge-pill.star { background: var(--negro); color: var(--naranja); padding: 2px 6px; }
.badge-pill.nivel { background: rgba(62,124,89,.14); color: var(--c-curso); }

/* Tarjetas admin: Contenido y Páginas (sustituyen a las filas de tabla) */
.admin-card-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
  gap: 14px;
}
.admin-card {
  border: 1px solid var(--linea);
  border-radius: var(--r-l);
  background: var(--blanco);
  padding: 16px 18px;
  display: flex;
  flex-direction: column;
  gap: 10px;
  box-shadow: var(--elev);
  transition: border-color .12s, box-shadow .14s;
}
.admin-card:hover { border-color: var(--linea-2); }
.admin-card.destacado { border-color: var(--naranja); box-shadow: 0 0 0 1px rgba(var(--naranja-rgb),.25), var(--elev); }

.admin-card-head { display: flex; align-items: center; justify-content: space-between; gap: 10px; }
.admin-card-tipo {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-family: var(--font-inst);
  font-size: 9.5px;
  font-weight: 700;
  letter-spacing: 1.4px;
  text-transform: uppercase;
  color: var(--gris-cl);
  background: rgba(111,107,98,.1);
  padding: 4px 9px;
  border-radius: 6px;
  line-height: 1;
}
.admin-card.tipo-noticia   .admin-card-tipo { color: var(--c-noticia);   background: rgba(237,171,0,.13); }
.admin-card.tipo-historia  .admin-card-tipo { color: var(--c-historia);  background: rgba(34,61,113,.13); }
.admin-card.tipo-curso     .admin-card-tipo { color: var(--c-curso);     background: rgba(62,124,89,.13); }
.admin-card.tipo-mentoring .admin-card-tipo { color: var(--c-mentoring); background: rgba(122,59,105,.13); }
.admin-card.tipo-recurso   .admin-card-tipo { color: var(--c-recurso);   background: rgba(177,82,31,.13); }
.admin-card.tipo-evento    .admin-card-tipo { color: var(--c-evento);    background: rgba(26,46,85,.13); }
.admin-card.tipo-pagina    .admin-card-tipo { color: var(--c-pagina);    background: rgba(111,107,98,.13); }

.admin-card-titulo {
  font-family: var(--font-inst);
  font-size: 15px;
  font-weight: 700;
  color: var(--tinta);
  line-height: 1.35;
}
.admin-card-foot {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  padding-top: 10px;
  border-top: 1px solid var(--linea);
  margin-top: auto;
}
.admin-card-actions { display: flex; gap: 6px; }

.toggle-pill {
  padding: 5px 14px;
  border-radius: 999px;
  border: 1px solid var(--linea);
  background: var(--blanco);
  color: var(--gris);
  font-size: 11.5px;
  font-weight: 700;
  font-family: var(--font-near);
  cursor: pointer;
  min-width: 46px;
  transition: background .12s, color .12s, border-color .12s;
}
.toggle-pill:hover { border-color: var(--linea-2); }
.toggle-pill.on { background: rgba(var(--naranja-rgb),.18); color: #8a6400; border-color: rgba(var(--naranja-rgb),.4); }
.toggle-pill.admin.on { background: var(--negro); color: var(--naranja); border-color: var(--negro); }
.toggle-pill:disabled { cursor: not-allowed; opacity: .45; }

#inp-miembros-buscar {
  width: 100%;
  padding: 10px 14px;
  border: 1px solid var(--linea);
  border-radius: var(--r-m);
  font-family: var(--font-near);
  font-size: 13.5px;
  color: var(--tinta);
  background: var(--blanco);
}
#inp-miembros-buscar:focus { outline: none; border-color: var(--naranja); }

/* Admin: ancho de sección más amplio para tablas */
#section-contenido, #section-miembros, #section-medios, #section-paginas { max-width: 980px; }
#section-secciones { max-width: 760px; }

.field textarea {
  font-family: var(--font-near);
  font-size: 14.5px;
  font-weight: 400;
  padding: 12px 13px;
  border: 1.5px solid var(--linea);
  border-radius: var(--r-s);
  background: var(--blanco);
  color: var(--tinta);
  resize: vertical;
  width: 100%;
  transition: border-color .14s var(--ease), box-shadow .14s var(--ease);
}
.field textarea:focus { outline: none; border-color: var(--negro); box-shadow: 0 0 0 3px rgba(var(--naranja-rgb),.18); }
.field textarea::placeholder { color: #c4bfb5; font-weight: 300; }

/* SUBIDA DE ARCHIVOS (botón "Subir" junto a campos de URL) */
.upload-btn { flex-shrink: 0; display: inline-flex; align-items: center; justify-content: center; white-space: nowrap; }

/* EDITOR DE BLOQUES (admin) */

/* Editor enriquecido (Quill) del bloque "texto": reviste el tema "snow" de
   serie con los tokens de la plataforma para que funcione en claro y
   oscuro en vez de quedarse con sus colores fijos por defecto.*/

/* Editor de bloques: módulos compuestos (columnas, acordeón, tarjetas): cada ítem se edita como una mini-tarjeta con su propia cabecera.*/

/* SECCIONES (panel admin: activar / renombrar / reordenar) */
.secciones-lista { display: flex; flex-direction: column; gap: 8px; }
.seccion-row {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 10px 12px;
  border: 1.5px solid var(--linea);
  border-radius: var(--r-m);
  background: var(--blanco);
}
.seccion-row-tools { display: flex; gap: 4px; flex-shrink: 0; }
.seccion-etiqueta {
  flex: 1;
  font-family: var(--font-near);
  font-size: 13.5px;
  font-weight: 600;
  padding: 9px 11px;
  border: 1.5px solid transparent;
  border-radius: var(--r-s);
  background: transparent;
  color: var(--tinta);
  transition: border-color .12s, background .12s;
}
.seccion-etiqueta:hover { background: var(--papel); }
.seccion-etiqueta:focus { outline: none; border-color: var(--linea-2); background: var(--blanco); }

/* Ajustes: cabecera global (masthead) del panel alumni */
.ajustes-cabecera { max-width: 560px; }
.cabecera-preview {
  width: 100%;
  height: 130px;
  border-radius: var(--r-m);
  overflow: hidden;
  margin-bottom: 14px;
  background: var(--negro);
}
.cabecera-preview img { width: 100%; height: 100%; object-fit: cover; display: block; }

/* Página de inicio: editor de estadísticas (hero stats de la portada) */

/* Pestaña "Textos/Vistas": eyebrow/título/descripción de cada sección
   del panel alumni y de la web pública*/

/* Pestaña "Páginas": selector visual de icono (formulario de contenido,
   solo visible cuando tipo="pagina") y miniatura del icono en la tabla*/
.icono-picker { display: grid; grid-template-columns: repeat(auto-fill, minmax(42px, 1fr)); gap: 8px; max-width: 480px; margin-top: 4px; }
.icono-pick-btn {
  display: flex; align-items: center; justify-content: center;
  width: 42px; height: 42px;
  border: 1.5px solid var(--linea); border-radius: var(--r-s);
  background: var(--blanco); color: var(--gris);
  cursor: pointer; transition: border-color .14s, color .14s, background .14s;
}
.icono-pick-btn:hover { border-color: var(--negro); color: var(--tinta); }
.icono-pick-btn.active { border-color: var(--negro); background: var(--negro); color: var(--blanco); }

/* Pestaña "Ajustes": selector de color de acento */

/* LIBRERÍA DE MEDIOS (Supabase Storage, bucket "contenido") */
.media-toolbar { display: flex; gap: 10px; align-items: center; margin-bottom: 18px; }
.media-toolbar input[type="text"] {
  flex: 1;
  font-family: var(--font-near);
  font-size: 13.5px;
  padding: 10px 12px;
  border: 1.5px solid var(--linea);
  border-radius: var(--r-s);
  background: var(--blanco);
  color: var(--tinta);
}
.media-toolbar input[type="text"]:focus { outline: none; border-color: var(--negro); box-shadow: 0 0 0 3px rgba(var(--naranja-rgb),.18); }
.media-toolbar .upload-btn { flex-shrink: 0; white-space: nowrap; }

.media-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(128px, 1fr));
  gap: 14px;
}
.media-item {
  position: relative;
  border: 1.5px solid var(--linea);
  border-radius: var(--r-m);
  overflow: hidden;
  cursor: pointer;
  background: var(--papel);
  transition: border-color .14s, transform .14s;
}
.media-item:hover { border-color: var(--negro); transform: translateY(-2px); }
.mi-thumb { width: 100%; aspect-ratio: 1; background-size: cover; background-position: center; background-color: var(--papel-2); }
.mi-thumb-file { display: flex; align-items: center; justify-content: center; font-size: 30px; }
.mi-name {
  font-size: 11px;
  font-weight: 600;
  color: var(--gris);
  padding: 7px 9px;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.mi-del {
  position: absolute;
  top: 6px; right: 6px;
  width: 22px; height: 22px;
  border-radius: 50%;
  border: none;
  background: rgba(20,18,14,.62);
  color: #FFFFFF;
  font-size: 11px;
  cursor: pointer;
  display: flex; align-items: center; justify-content: center;
  opacity: 0;
  transition: opacity .12s, background .12s;
}
.media-item:hover .mi-del { opacity: 1; }
.mi-del:hover { background: #C0392B; }

/* Modal selector reutilizable (botón "Librería" en campos de imagen) */
.media-overlay {
  position: fixed;
  inset: 0;
  background: rgba(20,18,14,.6);
  backdrop-filter: blur(3px);
  -webkit-backdrop-filter: blur(3px);
  z-index: 9500;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 24px;
  animation: fadeIn 0.18s var(--ease);
}
.media-modal {
  background: var(--blanco);
  border: 1px solid var(--linea);
  border-radius: var(--r-l);
  width: 100%;
  max-width: 860px;
  max-height: 82vh;
  display: flex;
  flex-direction: column;
  overflow: hidden;
  animation: slideUp 0.2s var(--ease);
}
.media-modal-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 16px 22px;
  background: var(--papel);
  border-bottom: 1px solid var(--linea);
  flex-shrink: 0;
}
.media-modal-head .t {
  font-family: var(--font-inst);
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 2px;
  text-transform: uppercase;
  color: var(--gris);
  display: flex;
  align-items: center;
  gap: 8px;
}
.media-close {
  background: none; border: none;
  color: var(--gris); font-size: 15px;
  cursor: pointer; line-height: 1;
  padding: 4px 7px;
  border-radius: var(--r-s);
  transition: color .12s, background .12s;
}
.media-close:hover { color: var(--tinta); background: var(--papel-2); }
.media-modal .media-toolbar { padding: 18px 22px 0; margin-bottom: 14px; }
.media-modal .media-grid { padding: 0 22px 22px; flex: 1; overflow-y: auto; }
.media-modal .content-empty { margin: 0 22px 22px; }

/* BLOQUES DE CONTENIDO (render para alumni: página de artículo y páginas) */
.bq { width: 100%; }
.bq-texto { font-size: 14.5px; line-height: 1.7; color: var(--tinta); font-weight: 300; }
.bq-texto strong { font-weight: 700; }
.bq-texto a { color: var(--naranja); text-decoration: underline; }
/* Etiquetas que puede producir el editor enriquecido (Quill) */
.bq-texto p { margin: 0 0 14px; }
.bq-texto p:last-child { margin-bottom: 0; }
.bq-texto h2, .bq-texto h3, .bq-texto h4 {
  font-family: var(--font-inst);
  font-weight: 700;
  color: var(--tinta);
  line-height: 1.3;
  margin: 22px 0 10px;
}
.bq-texto h2 { font-size: 22px; }
.bq-texto h3 { font-size: 18px; }
.bq-texto h4 { font-size: 15px; }
.bq-texto ul, .bq-texto ol { margin: 0 0 14px; padding-left: 22px; }
.bq-texto li { margin-bottom: 6px; }
.bq-texto blockquote {
  margin: 14px 0;
  padding: 4px 0 4px 16px;
  border-left: 3px solid var(--naranja);
  font-style: italic;
  color: var(--gris);
}
.bq-imagen { margin: 0; display: flex; flex-direction: column; gap: 8px; }
.bq-imagen img { width: 100%; border-radius: var(--r-m); display: block; }
.bq-imagen figcaption { font-size: 12px; color: var(--gris-cl); text-align: center; }
.bq-video { position: relative; border-radius: var(--r-m); overflow: hidden; background: var(--negro); }
.bq-video iframe, .bq-video video { width: 100%; aspect-ratio: 16/9; display: block; border: none; }
.bq-galeria { display: grid; grid-template-columns: repeat(auto-fill, minmax(140px, 1fr)); gap: 8px; }
.bq-galeria img { width: 100%; height: 120px; object-fit: cover; border-radius: var(--r-s); display: block; }
.bq-cita {
  margin: 0;
  padding: 16px 20px;
  border-left: 3px solid var(--naranja);
  background: var(--papel);
  border-radius: 0 var(--r-m) var(--r-m) 0;
  font-family: var(--font-inst);
  font-size: 16px;
  font-style: italic;
  color: var(--tinta);
  line-height: 1.5;
}
.bq-cita cite { display: block; margin-top: 8px; font-size: 12px; font-style: normal; font-weight: 700; color: var(--gris); }
.bq-boton { display: flex; }

/* Columnas */
.bq-columnas {
  display: grid;
  grid-template-columns: repeat(var(--bq-cols, 2), 1fr);
  gap: 24px;
}
.bq-col h4 { font-family: var(--font-inst); font-size: 15px; font-weight: 700; color: var(--tinta); margin: 0 0 8px; }
.bq-col-texto { font-size: 14px; line-height: 1.65; color: var(--tinta); font-weight: 300; }
.bq-col-texto strong { font-weight: 700; }
.bq-col-texto a { color: var(--naranja); text-decoration: underline; }
@media (max-width: 720px) { .bq-columnas { grid-template-columns: 1fr; } }

/* Acordeón (usa <details>/<summary> nativos, sin JS) */
.bq-acordeon { display: flex; flex-direction: column; gap: 8px; }
.bq-ac-item {
  border: 1.5px solid var(--linea); border-radius: var(--r-m);
  background: var(--papel); padding: 0; overflow: hidden;
}
.bq-ac-item summary {
  cursor: pointer; list-style: none;
  padding: 14px 18px; font-family: var(--font-inst); font-weight: 700;
  font-size: 14.5px; color: var(--tinta);
  display: flex; align-items: center; justify-content: space-between; gap: 10px;
}
.bq-ac-item summary::-webkit-details-marker { display: none; }
.bq-ac-item summary::after {
  content: "+"; font-size: 18px; font-weight: 400; color: var(--gris); flex-shrink: 0;
  transition: transform .16s var(--ease);
}
.bq-ac-item[open] summary::after { transform: rotate(45deg); }
.bq-ac-respuesta { padding: 0 18px 16px; font-size: 14px; line-height: 1.6; color: var(--tinta); font-weight: 300; }
.bq-ac-respuesta a { color: var(--naranja); text-decoration: underline; }

/* Tarjetas */
.bq-tarjetas { display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: 18px; }
.bq-tarjeta {
  border: 1.5px solid var(--linea); border-radius: var(--r-m); overflow: hidden;
  background: var(--papel); display: flex; flex-direction: column;
  transition: border-color .14s, transform .14s;
}
.bq-tarjeta:hover { border-color: var(--negro); transform: translateY(-2px); }
.bq-tarjeta img { width: 100%; aspect-ratio: 16/10; object-fit: cover; display: block; }
.bq-tarjeta-body { padding: 16px; display: flex; flex-direction: column; gap: 6px; flex: 1; }
.bq-tarjeta-body h4 { font-family: var(--font-inst); font-size: 15px; font-weight: 700; color: var(--tinta); margin: 0; }
.bq-tarjeta-link { margin-top: auto; padding-top: 6px; font-size: 12.5px; font-weight: 700; color: var(--naranja); text-decoration: none; }
.bq-tarjeta-link:hover { text-decoration: underline; }

/* Insertar (embed): mapas, Spotify, vídeo, o un enlace de respaldo */
.bq-embed iframe { width: 100%; aspect-ratio: 16/9; border: none; border-radius: var(--r-m); display: block; }
.bq-embed-fallback {
  display: inline-flex; align-items: center; gap: 8px;
  padding: 12px 18px; border: 1.5px solid var(--linea); border-radius: var(--r-m);
  background: var(--papel); color: var(--tinta); text-decoration: none;
  font-size: 13.5px; font-weight: 600;
}
.bq-embed-fallback:hover { border-color: var(--negro); }

/*   PÁGINA DE ARTÍCULO (contenido.html): detalle de una publicación en su
   propia URL, con cabecera/imagen grande, al estilo de una web de
   noticias.*/
.article-body { background: var(--papel); min-height: 100vh; }

#article-root { min-height: calc(100vh - 56px); }

/* Cabecera/imagen grande de la publicación */
.article-hero-shade {
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, rgba(0,0,0,.05) 0%, rgba(0,0,0,.5) 100%);
}

/* Columna editorial: se eleva ligeramente sobre la cabecera */

.article-tipo {
  display: inline-block;
  font-family: var(--font-inst);
  font-size: 9.5px;
  font-weight: 700;
  letter-spacing: 1.4px;
  text-transform: uppercase;
  color: var(--gris);
  background: rgba(111,107,98,.1);
  padding: 4px 10px;
  border-radius: 6px;
  margin-bottom: 14px;
  line-height: 1;
}
.article-titulo {
  font-family: var(--font-inst);
  font-size: clamp(26px, 4vw, 38px);
  font-weight: 800;
  letter-spacing: -.5px;
  line-height: 1.18;
  color: var(--tinta);
  margin-bottom: 14px;
}
.article-resumen {
  font-size: 17px;
  font-weight: 300;
  color: var(--gris);
  line-height: 1.55;
  margin-bottom: 18px;
}
.article-meta {
  font-size: 12px;
  font-weight: 600;
  letter-spacing: .3px;
  color: var(--gris-cl);
  padding-bottom: 28px;
  margin-bottom: 28px;
  border-bottom: 1px solid var(--linea);
  text-transform: uppercase;
}

/* Identidad por categoría en la página de artículo */
.article.tipo-noticia   .article-tipo { color: var(--c-noticia);   background: rgba(237,171,0,.13); }
.article.tipo-historia  .article-tipo { color: var(--c-historia);  background: rgba(34,61,113,.13); }
.article.tipo-curso     .article-tipo { color: var(--c-curso);     background: rgba(62,124,89,.13); }
.article.tipo-mentoring .article-tipo { color: var(--c-mentoring); background: rgba(122,59,105,.13); }
.article.tipo-recurso   .article-tipo { color: var(--c-recurso);   background: rgba(177,82,31,.13); }
.article.tipo-evento    .article-tipo { color: var(--c-evento);    background: rgba(26,46,85,.13); }
.article.tipo-pagina    .article-tipo { color: var(--c-pagina);    background: rgba(111,107,98,.13); }

.article-content { display: flex; flex-direction: column; gap: 22px; }
.article-content .bq-texto { font-size: 16.5px; line-height: 1.85; }

.article-cta { margin-top: 12px; }

.article-foot { margin-top: 48px; padding-top: 24px; border-top: 1px solid var(--linea); }

/* CALENDARIO MENSUAL (sección Eventos, dashboard alumni) */
.cal-widget {
  border: 1px solid var(--linea);
  border-radius: var(--r-l);
  background: var(--blanco);
  padding: 18px 20px 14px;
  margin-bottom: 22px;
}
.cal-head { display: flex; align-items: center; justify-content: space-between; margin-bottom: 14px; }
.cal-nav {
  width: 32px;
  height: 32px;
  border-radius: 50%;
  border: 1px solid var(--linea);
  background: var(--blanco);
  color: var(--gris);
  font-size: 16px;
  cursor: pointer;
  transition: background .12s, color .12s, border-color .12s;
}
.cal-nav:hover { background: var(--negro); color: var(--naranja); border-color: var(--negro); }
.cal-label { font-family: var(--font-inst); font-size: 15px; font-weight: 700; color: var(--tinta); text-transform: capitalize; }
.cal-weekdays {
  display: grid;
  grid-template-columns: repeat(7, 1fr);
  margin-bottom: 6px;
}
.cal-weekdays span {
  text-align: center;
  font-size: 10.5px;
  font-weight: 700;
  letter-spacing: .5px;
  color: var(--gris-cl);
  text-transform: uppercase;
}
.cal-grid { display: grid; grid-template-columns: repeat(7, 1fr); gap: 4px; }
.cal-day {
  position: relative;
  aspect-ratio: 1;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  border: none;
  border-radius: var(--r-s);
  background: transparent;
  color: var(--tinta);
  font-family: var(--font-near);
  font-size: 12.5px;
  cursor: default;
  transition: background .12s, color .12s;
}
.cal-day--vacio { visibility: hidden; }
.cal-day--hoy { font-weight: 700; box-shadow: inset 0 0 0 1.5px var(--linea-2); }
.cal-day--evento { cursor: pointer; background: rgba(var(--naranja-rgb),.13); font-weight: 600; }
.cal-day--evento:hover { background: rgba(var(--naranja-rgb),.26); }
.cal-day--sel { background: var(--negro) !important; color: var(--naranja) !important; }
.cal-day-num { line-height: 1; }
.cal-day-dot { width: 4px; height: 4px; border-radius: 50%; background: var(--naranja); margin-top: 3px; }
.cal-day--sel .cal-day-dot { background: var(--naranja); }
.cal-lista-titulo {
  font-family: var(--font-inst);
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 1px;
  text-transform: uppercase;
  color: var(--gris);
  margin-bottom: 12px;
}
.cal-evento-item {
  display: flex;
  gap: 14px;
  align-items: flex-start;
  padding: 12px 0;
  border-bottom: 1px solid var(--linea);
}
.cal-evento-item:last-child { border-bottom: none; }
.cal-evento-fecha {
  flex-shrink: 0;
  min-width: 64px;
  font-size: 11.5px;
  font-weight: 700;
  color: var(--naranja);
  text-transform: uppercase;
}
.cal-evento-titulo { font-family: var(--font-inst); font-size: 14px; font-weight: 700; color: var(--tinta); }
.cal-evento-lugar { font-size: 12px; color: var(--gris-cl); margin-top: 2px; }

/* CATÁLOGO DE CURSOS Y REPRODUCTOR DE LECCIONES (panel del miembro) */
.curso-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(270px, 1fr));
  gap: 18px;
}
.curso-card { cursor: pointer; }
.curso-meta {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 6px;
}
.curso-meta-item {
  font-size: 11.5px;
  color: var(--gris-cl);
  font-weight: 600;
}
.curso-progreso-mini { display: flex; align-items: center; gap: 8px; margin-top: 2px; }
.curso-progreso-bar {
  flex: 1;
  height: 4px;
  background: var(--papel-2);
  border-radius: 100px;
  overflow: hidden;
}
.curso-progreso-bar i {
  display: block;
  height: 100%;
  background: var(--c-curso);
  border-radius: 100px;
  transition: width .3s var(--ease);
}
.curso-progreso-txt {
  font-size: 10.5px;
  font-weight: 700;
  color: var(--gris-cl);
  font-variant-numeric: tabular-nums;
  flex-shrink: 0;
}

/* Reproductor de lecciones */

.curso-player-head { margin-bottom: 24px; }
.curso-player-head h2 {
  font-family: var(--font-inst);
  font-size: 24px;
  font-weight: 800;
  letter-spacing: -.4px;
  color: var(--tinta);
  margin-bottom: 10px;
}

.curso-player-layout {
  display: grid;
  grid-template-columns: 280px 1fr;
  gap: 24px;
  align-items: start;
}
.curso-leccion-lista {
  display: flex;
  flex-direction: column;
  gap: 4px;
  border: 1px solid var(--linea);
  border-radius: var(--r-l);
  padding: 8px;
  background: var(--papel);
}
.curso-leccion-item {
  display: flex;
  align-items: center;
  gap: 10px;
  width: 100%;
  text-align: left;
  padding: 9px 10px;
  border: none;
  border-radius: var(--r-m);
  background: transparent;
  color: var(--tinta);
  cursor: pointer;
  transition: background .12s;
}
.curso-leccion-item:hover { background: var(--papel-2); }
.curso-leccion-item.activa { background: var(--negro); color: #FFFFFF; }
.curso-leccion-item.activa .cli-dur { color: #B9B6AF; }
.cli-check {
  flex-shrink: 0;
  width: 22px;
  height: 22px;
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 11px;
  font-weight: 700;
  border: 1.5px solid var(--linea-2);
  color: var(--gris);
}
.curso-leccion-item.completada .cli-check { background: var(--c-curso); border-color: var(--c-curso); color: #FFFFFF; }
.curso-leccion-item.activa .cli-check { border-color: rgba(255,255,255,.35); color: #FFFFFF; }
.curso-leccion-item.activa.completada .cli-check { background: var(--naranja); border-color: var(--naranja); color: var(--negro); }
.cli-info { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 2px; }
.cli-titulo { font-size: 13px; font-weight: 600; line-height: 1.3; }
.cli-dur { font-size: 11px; color: var(--gris-cl); }

.curso-leccion-contenido {
  border: 1px solid var(--linea);
  border-radius: var(--r-l);
  background: var(--blanco);
  padding: 26px 28px;
}
.cl-head { margin-bottom: 18px; }
.cl-num {
  font-family: var(--font-inst);
  font-size: 10.5px;
  font-weight: 700;
  letter-spacing: 1.5px;
  text-transform: uppercase;
  color: var(--c-curso);
}
.cl-head h3 {
  font-family: var(--font-inst);
  font-size: 20px;
  font-weight: 800;
  color: var(--tinta);
  margin-top: 6px;
}
.cl-body { margin-bottom: 24px; }
.cl-texto { font-size: 14.5px; line-height: 1.7; color: var(--tinta); font-weight: 300; }
.cl-texto strong { font-weight: 700; }
.cl-texto a { color: var(--naranja); text-decoration: underline; }

.cl-foot {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 14px;
  padding-top: 18px;
  border-top: 1px solid var(--linea);
}
.cl-completar {
  font-family: var(--font-near);
  font-size: 13px;
  font-weight: 700;
  padding: 10px 18px;
  border-radius: var(--r-m);
  border: 1.5px solid var(--linea-2);
  background: var(--blanco);
  color: var(--gris);
  cursor: pointer;
  transition: all .14s var(--ease);
}
.cl-completar:hover { border-color: var(--c-curso); color: var(--c-curso); }
.cl-completar.on { background: var(--c-curso); border-color: var(--c-curso); color: #FFFFFF; }
.cl-nav { display: flex; gap: 8px; }
.cl-next-btn { background: var(--negro); color: var(--naranja); border-color: var(--negro); }
.cl-next-btn:hover { border-color: var(--negro); color: var(--naranja); background: #1a1a1a; }

@media (max-width: 760px) {
  .curso-player-layout { grid-template-columns: 1fr; }
  .curso-leccion-lista { flex-direction: row; overflow-x: auto; }
  .curso-leccion-item { flex-direction: column; text-align: center; min-width: 110px; }
  .cli-info { align-items: center; text-align: center; }
}

/* Circuit toggle (interruptor esquemático SPST) */
.circuit-toggle {
  display: inline-flex; align-items: center; gap: 9px;
  border: 1px solid var(--line-t); background: color-mix(in srgb, var(--bg) 80%, transparent);
  cursor: pointer; padding: 7px 12px 7px 10px; border-radius: 100px;
  transition: background .18s, border-color .18s, box-shadow .18s;
  color: var(--ink); user-select: none;
  backdrop-filter: blur(6px);
}
.circuit-toggle:hover {
  border-color: var(--naranja);
  box-shadow: 0 0 0 3px rgba(237,171,0,.12);
}
/* Línea de circuito */
.cs-wrap { position: relative; width: 52px; height: 24px; flex-shrink: 0; }
.cs-line {
  position: absolute; top: 50%; left: 0; right: 0;
  height: 1.5px; transform: translateY(-50%);
  background: var(--ink3); opacity: .35; border-radius: 1px;
}
/* Pads (terminales) */
.cs-pad {
  position: absolute; width: 7px; height: 7px; border-radius: 50%;
  top: 50%; transform: translate(-50%,-50%);
  transition: background .3s, box-shadow .35s, opacity .3s;
}
/* Modo claro: circuito CERRADO: pads naranjas brillantes */
.cs-pad-l {
  left: 8px; background: var(--naranja);
  box-shadow: 0 0 0 3px rgba(237,171,0,.2), 0 0 10px rgba(237,171,0,.45);
}
.cs-pad-r {
  left: 44px; background: var(--naranja);
  box-shadow: 0 0 0 3px rgba(237,171,0,.2), 0 0 6px rgba(237,171,0,.3);
}
/* Modo oscuro: circuito ABIERTO: pads apagados */
.circuit-toggle.is-dark .cs-pad-l,
.circuit-toggle.is-dark .cs-pad-r {
  background: var(--ink3); box-shadow: none; opacity: .45;
}
/* Brazo (palanca) */
.cs-arm {
  position: absolute; left: 8px; top: 50%;
  width: 36px; height: 1.8px;
  background: var(--naranja); transform-origin: 0 50%;
  transform: translateY(-50%) rotate(0deg);
  transition: transform .38s cubic-bezier(.34,1.26,.64,1), background .3s, box-shadow .3s;
  border-radius: 2px;
  box-shadow: 0 0 6px rgba(237,171,0,.4);
}
.cs-arm::after {
  content: ""; position: absolute; right: -3px; top: 50%;
  width: 6px; height: 6px; border-radius: 50%; background: var(--naranja);
  transform: translateY(-50%);
  box-shadow: 0 0 0 2px rgba(237,171,0,.3), 0 0 8px rgba(237,171,0,.55);
  transition: box-shadow .3s, background .3s;
}
/* Modo oscuro: brazo abierto, sin glow */
.circuit-toggle.is-dark .cs-arm {
  transform: translateY(-50%) rotate(-40deg);
  background: var(--ink3); box-shadow: none;
}
.circuit-toggle.is-dark .cs-arm::after {
  background: var(--ink3); box-shadow: none;
}
/* Etiqueta de estado */
.circuit-label {
  font-family: var(--font-inst); font-size: 11px; font-weight: 700;
  letter-spacing: 1px; text-transform: uppercase;
  color: var(--ink3); white-space: nowrap;
  transition: color .2s;
}
.circuit-toggle:hover .circuit-label { color: var(--naranja); }

/* Componentes de la plataforma.
   Reutilizan los tokens definidos al principio de esta hoja (--tinta, --gris,
   --papel, --linea, --naranja, --r-*, --font-inst/--font-near, --ease).
   Índice:
     1. Base / accesibilidad / utilidades
     2. Cabecera pública (nav links, buscador, móvil)
     3. Bloques de portada (eventos, ofertas, alumni, testimonios, logos…)
     4. Páginas de listado y detalle (page-hero, filtros, chips, paginador)
     5. Estados: vacíos, error, skeleton, spinner, badges, toasts
     6. Overlays: buscador global, confirmación, modal genérico, dropdown
     7. Perfil público
     8. Panel alumni: inicio, directorio, red, mensajes, notificaciones, perfil
     9. Panel admin: stats, editor de bloques, formularios, tablas
    10. Responsive*/

/* 1. Base / a11y / utilidades */
:focus-visible { outline: 2px solid var(--naranja); outline-offset: 2px; border-radius: 4px; }
button, [role="button"], a, input, select, textarea { touch-action: manipulation; }
button { font-family: inherit; }
.sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap; border: 0; }
.skip-link { position: absolute; left: 12px; top: -60px; z-index: 1000; background: var(--negro); color: var(--naranja); padding: 10px 16px; border-radius: var(--r-s); font-weight: 700; font-size: 13px; text-decoration: none; transition: top .15s; }
.skip-link:focus { top: 12px; }
.u-flex { display: flex; align-items: center; gap: 10px; }
.u-between { display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap; }
.u-muted { color: var(--gris); }
.u-small { font-size: 12px; }
.u-right { margin-left: auto; }
.u-wrap { max-width: 1240px; margin: 0 auto; padding: 0 clamp(20px, 5vw, 56px); }
[data-tip] { position: relative; }
[data-tip]:hover::after, [data-tip]:focus-visible::after {
  content: attr(data-tip); position: absolute; left: 50%; bottom: calc(100% + 8px); transform: translateX(-50%);
  background: var(--ink); color: var(--bg); font-size: 11px; font-weight: 600; letter-spacing: .3px; white-space: nowrap;
  padding: 5px 10px; border-radius: 6px; pointer-events: none; z-index: 120; animation: fadeIn .12s var(--ease);
}
.btn-secondary {
  font-family: var(--font-near); font-size: 13px; font-weight: 600;
  color: var(--tinta); background: transparent; border: 1.5px solid var(--linea-2); padding: 14px 22px; border-radius: var(--r-s);
  text-decoration: none; display: inline-flex; align-items: center; gap: 10px; cursor: pointer; transition: all .15s var(--ease);
}
.btn-secondary:hover { border-color: var(--tinta); background: var(--ink); color: var(--bg); }
.btn-primary.is-sm, .btn-secondary.is-sm { padding: 10px 16px; font-size: 12px; }
.btn-primary:disabled, .btn-secondary:disabled, .btn-ghost:disabled, .btn-mini:disabled { opacity: .5; cursor: not-allowed; transform: none; }
.btn-primary.is-loading, .btn-submit.is-loading { position: relative; color: transparent !important; }
.btn-primary.is-loading::after, .btn-submit.is-loading::after { content: ""; position: absolute; width: 16px; height: 16px; border: 2px solid var(--naranja); border-right-color: transparent; border-radius: 50%; animation: spin .7s linear infinite; }
.btn-submit.is-loading::after { border-color: var(--naranja); border-right-color: transparent; }
.btn-ghost.is-danger:hover { background: #C0392B; border-color: #C0392B; color: #fff; }
.btn-link { background: none; border: none; padding: 0; color: var(--naranja); font-weight: 700; font-size: 13px; cursor: pointer; font-family: var(--font-near); }
.btn-link:hover { text-decoration: underline; }
@keyframes spin { to { transform: rotate(360deg); } }
.spinner { display: inline-block; width: 14px; height: 14px; border: 2px solid var(--linea-2); border-right-color: var(--naranja); border-radius: 50%; animation: spin .7s linear infinite; vertical-align: middle; }
.reveal { opacity: 0; transform: translateY(18px); transition: opacity .6s var(--ease), transform .6s var(--ease); }
.reveal.is-in { opacity: 1; transform: none; }
@media (prefers-reduced-motion: reduce) { .reveal { opacity: 1; transform: none; transition: none; } * { animation-duration: .001s !important; } }
.has-img { background-size: cover; background-position: center; color: transparent !important; }

/* 2. Cabecera pública */
.nav .marca { text-decoration: none; }
.nav-links { display: flex; align-items: center; gap: 4px; margin-left: 8px; }
.nav-link { font-family: var(--font-near); font-size: 13px; font-weight: 600; color: var(--gris); text-decoration: none; padding: 7px 11px; border-radius: var(--r-m); transition: color .12s, background .12s; }
.nav-link:hover { color: var(--tinta); background: var(--papel-2); }
.nav-link.is-active { color: var(--tinta); box-shadow: inset 0 -2px 0 var(--naranja); border-radius: 0; }
.nav-search-btn { width: 34px; height: 34px; border-radius: 50%; border: 1.5px solid var(--linea); background: transparent; color: var(--tinta); display: flex; align-items: center; justify-content: center; cursor: pointer; transition: all .15s var(--ease); }
.nav-search-btn:hover { background: var(--ink); color: var(--bg); border-color: var(--ink); }
.nav-cta { display: inline-block; }
.btn-nav-login.is-user { display: inline-flex; align-items: center; gap: 8px; padding: 4px 12px 4px 4px; text-decoration: none; border-color: var(--linea-2); }
.nav-avatar { width: 26px; height: 26px; border-radius: 50%; background-color: var(--naranja); color: var(--negro); font-family: var(--font-inst); font-weight: 800; font-size: 10px; display: flex; align-items: center; justify-content: center; }
.nav-burger { display: none; width: 38px; height: 38px; border: none; background: transparent; cursor: pointer; flex-direction: column; align-items: center; justify-content: center; gap: 5px; }
.nav-burger span { display: block; width: 20px; height: 2px; background: var(--tinta); border-radius: 2px; transition: transform .2s var(--ease), opacity .2s; }
.nav-burger.is-open span:nth-child(1) { transform: translateY(7px) rotate(45deg); }
.nav-burger.is-open span:nth-child(2) { opacity: 0; }
.nav-burger.is-open span:nth-child(3) { transform: translateY(-7px) rotate(-45deg); }
.nav-mobile { display: none; position: sticky; top: 64px; z-index: 59; background: var(--blanco); border-bottom: 1px solid var(--linea); padding: 10px 16px 14px; flex-direction: column; gap: 2px; animation: slideUp .2s var(--ease); }
.nav-mobile:not([hidden]) { display: flex; }
.nav-mobile-link { padding: 12px 10px; font-size: 15px; font-weight: 600; color: var(--tinta); text-decoration: none; border-radius: var(--r-m); }
.nav-mobile-link:hover { background: var(--papel-2); }
.nav-mobile-link.is-cta { background: var(--naranja); color: var(--negro); text-align: center; margin-top: 6px; }

/* 3. Bloques de portada */
.hero-inner.is-solo { grid-template-columns: 1fr; }
.hero-inner.is-solo .hero-text { max-width: 820px; }
.hero-img { width: 100%; max-width: 460px; border-radius: var(--r-l); box-shadow: var(--elev); }
.hero-actions .btn-secondary { padding: 15px 22px; }
.col-head { position: relative; }
.col-head-link { position: absolute; right: 0; top: 4px; font-size: 13px; font-weight: 700; color: var(--gris); text-decoration: none; }
.col-head-link:hover { color: var(--naranja); }
.home-section.is-estrecho { max-width: 860px; }
.home-section--logos { padding-top: 40px; padding-bottom: 40px; }
.content-feed.feed-destacado { grid-template-columns: 1.25fr .75fr; gap: 22px; }
.feed-destacado .content-card:first-child { grid-row: span 3; }
.feed-destacado .content-card:first-child .cc-img { height: 230px; }
.feed-destacado .content-card:not(:first-child) { flex-direction: row; align-items: stretch; }
.feed-destacado .content-card:not(:first-child) .cc-img { width: 96px; min-width: 96px; height: auto; min-height: 84px; }
.feed-destacado .content-card:not(:first-child) .cc-body { padding: 12px 14px; gap: 5px; }
.feed-destacado .content-card:not(:first-child) .cc-resumen { display: none; }
.feed-destacado .content-card:not(:first-child) .cc-titulo { font-size: 14px; }
.content-card .cc-img { display: block; text-decoration: none; }
.cc-titulo a { color: inherit; text-decoration: none; }
.cc-titulo a:hover { color: var(--naranja); }
.cc-titulo a::after { content: ""; position: absolute; inset: 0; }
.content-card, .ev-card, .op-card { position: relative; }
.content-card .cc-link, .ev-card .cc-link, .op-card .cc-link { position: relative; z-index: 2; }

/* Eventos */
.ev-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 18px; }
.ev-card { border: 1px solid var(--linea); border-radius: var(--r-l); background: var(--blanco); overflow: hidden; display: flex; flex-direction: column; box-shadow: var(--elev); transition: border-color .12s, transform .14s; }
.ev-card:hover { border-color: var(--linea-2); transform: translateY(-4px); }
.ev-card.destacado { border-color: var(--naranja); }
.ev-card--pasado { opacity: .75; }
.ev-img { display: block; position: relative; height: 150px; background-size: cover; background-position: center; background-color: var(--papel-2); }
.ev-date { position: absolute; left: 14px; top: 14px; background: var(--negro); color: #fff; border-radius: var(--r-s); padding: 7px 10px 6px; text-align: center; line-height: 1; min-width: 50px; box-shadow: 0 8px 20px -8px rgba(0,0,0,.5); }
.ev-date-d { display: block; font-family: var(--font-inst); font-size: 20px; font-weight: 800; color: var(--naranja); }
.ev-date-m { display: block; font-family: var(--font-inst); font-size: 9.5px; font-weight: 700; letter-spacing: 2px; margin-top: 3px; }
.ev-body { padding: 16px 18px; display: flex; flex-direction: column; gap: 8px; flex: 1; }
.ev-meta { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.ev-mod { font-size: 10.5px; font-weight: 700; letter-spacing: .5px; text-transform: uppercase; color: var(--gris-cl); }
.ev-info { font-size: 12.5px; color: var(--gris); display: flex; gap: 6px; flex-wrap: wrap; }

/* Oportunidades */
.op-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); gap: 16px; }
.op-card { display: flex; gap: 14px; padding: 16px 18px; border: 1px solid var(--linea); border-radius: var(--r-l); background: var(--blanco); box-shadow: var(--elev); transition: border-color .12s, transform .14s; }
.op-card:hover { border-color: var(--linea-2); transform: translateY(-3px); }
.op-card.destacado { border-color: var(--naranja); }
.op-logo { flex-shrink: 0; width: 52px; height: 52px; border-radius: var(--r-m); background: var(--papel-2); border: 1px solid var(--linea); display: flex; align-items: center; justify-content: center; overflow: hidden; font-family: var(--font-inst); font-weight: 800; font-size: 18px; color: var(--gris); }
.op-logo img { width: 100%; height: 100%; object-fit: contain; padding: 6px; }
.op-body { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 6px; }
.op-meta { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.op-sector { font-size: 11px; color: var(--gris-cl); font-weight: 600; }
.op-info { font-size: 12.5px; color: var(--gris); display: flex; gap: 6px; flex-wrap: wrap; }
.op-info b { color: var(--tinta); font-weight: 600; }
.cc-tipo.op-tipo-empleo { color: var(--c-historia); background: rgba(34,61,113,.13); }
.cc-tipo.op-tipo-practicas { color: var(--c-curso); background: rgba(62,124,89,.13); }
.cc-tipo.op-tipo-colaboracion { color: var(--c-mentoring); background: rgba(122,59,105,.13); }
.cc-tipo.op-tipo-proyecto { color: var(--c-recurso); background: rgba(177,82,31,.13); }
.cc-tipo.op-tipo-mentoring { color: var(--c-mentoring); background: rgba(122,59,105,.13); }

/* Alumni destacados */
.alum-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(170px, 1fr)); gap: 16px; }
.alum-card { display: flex; flex-direction: column; align-items: center; text-align: center; gap: 4px; padding: 22px 14px 18px; border: 1px solid var(--linea); border-radius: var(--r-l); background: var(--blanco); text-decoration: none; color: var(--tinta); transition: border-color .12s, transform .14s; }
.alum-card:hover { border-color: var(--negro); transform: translateY(-3px); }
.alum-avatar { width: 68px; height: 68px; border-radius: 50%; background-color: var(--negro); color: var(--naranja); font-family: var(--font-inst); font-weight: 800; font-size: 20px; display: flex; align-items: center; justify-content: center; margin-bottom: 8px; box-shadow: 0 0 0 4px var(--papel-2); }
.alum-name { font-family: var(--font-inst); font-weight: 700; font-size: 14px; }
.alum-detail { font-size: 11.5px; color: var(--gris); }
.alum-rol { font-size: 11.5px; color: var(--gris-cl); }

/* Testimonios */
.tst-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 18px; }
.tst-card { margin: 0; padding: 24px; border: 1px solid var(--linea); border-radius: var(--r-l); background: var(--blanco); display: flex; flex-direction: column; gap: 18px; }
.tst-card blockquote { margin: 0; font-family: var(--font-inst); font-size: 16px; line-height: 1.55; color: var(--tinta); font-style: italic; }
.tst-card blockquote::before { content: "“"; color: var(--naranja); font-size: 34px; line-height: 0; margin-right: 4px; vertical-align: -12px; }
.tst-card figcaption { display: flex; align-items: center; gap: 12px; }
.tst-card figcaption div { display: flex; flex-direction: column; }
.tst-card figcaption b { font-size: 13.5px; }
.tst-card figcaption span { font-size: 12px; color: var(--gris); }
.tst-avatar { width: 40px; height: 40px; border-radius: 50%; background-color: var(--negro); color: var(--naranja); font-family: var(--font-inst); font-weight: 800; display: flex; align-items: center; justify-content: center; flex-shrink: 0; }

/* Logos */
.logo-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(140px, 1fr)); gap: 14px; align-items: center; }
.logo-item { display: flex; align-items: center; justify-content: center; height: 72px; padding: 12px; border: 1px solid var(--linea); border-radius: var(--r-m); background: var(--blanco); filter: grayscale(1); opacity: .7; transition: filter .2s, opacity .2s, border-color .2s; }
.logo-item:hover { filter: none; opacity: 1; border-color: var(--linea-2); }
.logo-item img { max-width: 100%; max-height: 100%; object-fit: contain; }

/* Imagen y texto */
.it-grid { display: grid; grid-template-columns: 1fr 1fr; gap: clamp(28px, 5vw, 64px); align-items: center; }
.it-grid.img-der .it-img { order: 2; }
.it-img img { width: 100%; border-radius: var(--r-l); box-shadow: var(--elev); display: block; }
.it-txt .col-head { margin-bottom: 18px; }
.it-txt .btn-primary { margin-top: 22px; }

/* Tarjetas / beneficios */
.bn-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(230px, 1fr)); gap: 18px; }
.bn-card { border: 1px solid var(--linea); border-radius: var(--r-l); background: var(--blanco); overflow: hidden; display: flex; flex-direction: column; transition: border-color .14s, transform .14s; }
.bn-card:hover { border-color: var(--negro); transform: translateY(-3px); }
.bn-card img { width: 100%; aspect-ratio: 16/10; object-fit: cover; display: block; }
.bn-icono { width: 44px; height: 44px; border-radius: var(--r-m); background: rgba(var(--naranja-rgb),.14); color: var(--tinta); font-size: 20px; display: flex; align-items: center; justify-content: center; margin: 20px 18px 0; }
.bn-card .bq-tarjeta-body { padding: 16px 18px 20px; }

/* Galería */
.gal-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: 12px; }
.gal-grid figure { margin: 0; position: relative; overflow: hidden; border-radius: var(--r-m); aspect-ratio: 4/3; background: var(--papel-2); }
.gal-grid img { width: 100%; height: 100%; object-fit: cover; display: block; transition: transform .4s var(--ease); }
.gal-grid figure:hover img { transform: scale(1.04); }
.gal-grid figcaption { position: absolute; left: 0; right: 0; bottom: 0; padding: 20px 14px 10px; font-size: 12px; color: #fff; background: linear-gradient(transparent, rgba(0,0,0,.65)); }

/* Banner */
.banner-blk { position: relative; min-height: 320px; display: flex; align-items: center; background: var(--negro) center/cover no-repeat; color: #fff; margin: 40px 0; }
.banner-blk.is-alta { min-height: 480px; }
.banner-shade { position: absolute; inset: 0; background: linear-gradient(90deg, rgba(0,0,0,.72) 0%, rgba(0,0,0,.35) 60%, rgba(0,0,0,.15) 100%); }
.banner-inner { position: relative; max-width: 1240px; width: 100%; margin: 0 auto; padding: 48px clamp(20px, 5vw, 56px); }
.banner-inner .eyebrow { margin-bottom: 14px; }
.banner-inner h2 { font-family: var(--font-inst); font-size: clamp(28px, 4vw, 46px); font-weight: 800; letter-spacing: -.8px; line-height: 1.05; max-width: 640px; margin-bottom: 14px; }
.banner-inner p { font-size: 16px; line-height: 1.6; max-width: 520px; color: rgba(255,255,255,.82); margin-bottom: 26px; font-weight: 300; }

/* CTA */
.cta-blk { margin: 40px auto; max-width: 1240px; padding: 0 clamp(20px, 5vw, 56px); }
.cta-inner { display: flex; align-items: center; justify-content: space-between; gap: 28px; flex-wrap: wrap; padding: clamp(32px, 5vw, 56px); border-radius: var(--r-l); }
.cta-negro .cta-inner { background: var(--negro); color: #fff; }
.cta-negro .cta-inner p { color: #b9b6af; }
.cta-naranja .cta-inner { background: var(--naranja); color: var(--negro); }
.cta-naranja .btn-primary { background: var(--negro); color: var(--naranja); }
.cta-papel .cta-inner { background: var(--papel-2); border: 1px solid var(--linea); color: var(--tinta); }
.cta-inner h2 { font-family: var(--font-inst); font-size: clamp(24px, 3vw, 34px); font-weight: 800; letter-spacing: -.5px; line-height: 1.1; margin-bottom: 8px; }
.cta-inner p { font-size: 15px; line-height: 1.6; max-width: 520px; font-weight: 300; }
.sep-blk { height: 24px; }
.sep-blk.sep-m { height: 48px; }
.sep-blk.sep-l { height: 96px; }

/* Footer ampliado */
.foot-inner { align-items: flex-start; }
.foot-brand-col { max-width: 320px; display: flex; flex-direction: column; gap: 14px; }
.foot-txt { font-size: 13px; color: var(--gris); line-height: 1.6; font-weight: 300; }
.foot-social { display: flex; gap: 8px; }
.foot-social a { width: 34px; height: 34px; border-radius: 50%; border: 1px solid var(--linea); display: flex; align-items: center; justify-content: center; color: var(--gris); transition: all .15s; }
.foot-social a:hover { background: var(--negro); color: var(--naranja); border-color: var(--negro); }
.foot-col { display: flex; flex-direction: column; gap: 8px; min-width: 140px; }
.foot-col-t { font-family: var(--font-inst); font-size: 10.5px; font-weight: 700; letter-spacing: 2px; text-transform: uppercase; color: var(--naranja); margin-bottom: 4px; }
.foot-col a { font-size: 13.5px; color: var(--gris); text-decoration: none; }
.foot-col a:hover { color: var(--tinta); }
.foot-legal a { color: inherit; text-decoration: none; }
.foot-legal a:hover { color: var(--tinta); }

/* 4. Páginas de listado y detalle */
.page-hero { background: var(--papel); border-bottom: 1px solid var(--linea); padding: clamp(36px, 6vw, 64px) clamp(20px, 5vw, 56px) clamp(28px, 4vw, 44px); }
.page-hero-inner { max-width: 1240px; margin: 0 auto; }
.page-hero .eyebrow { display: flex; align-items: center; gap: 10px; margin-bottom: 12px; }
.page-hero .eyebrow .cubos { --cubo: 7px; --cubo-gap: 2px; flex-direction: row; }
.page-hero h1 { font-family: var(--font-inst); font-size: clamp(30px, 4.5vw, 48px); font-weight: 800; letter-spacing: -1px; line-height: 1; margin-bottom: 10px; }
.page-hero p { font-size: 15px; color: var(--gris); max-width: 560px; line-height: 1.6; font-weight: 300; }
.page-wrap { max-width: 1240px; margin: 0 auto; padding: clamp(28px, 4vw, 44px) clamp(20px, 5vw, 56px) 60px; }
.page-wrap.is-estrecho { max-width: 860px; }
main#main { min-height: 50vh; }
.filters-bar { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; margin-bottom: 22px; }
.filters-bar .field { margin: 0; flex: 1 1 200px; max-width: 320px; }
.filters-bar .field input, .filters-bar .field select { padding: 10px 12px; font-size: 13.5px; background: var(--blanco); }
.filters-bar .field input[type="search"] { padding-left: 34px; background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%239C978C' stroke-width='2' stroke-linecap='round'%3E%3Ccircle cx='11' cy='11' r='7'/%3E%3Cpath d='m20 20-3.5-3.5'/%3E%3C/svg%3E"); background-repeat: no-repeat; background-position: 11px center; }
.chips { display: flex; flex-wrap: wrap; gap: 6px; }
.chip { padding: 7px 13px; border-radius: 999px; border: 1px solid var(--linea); background: var(--blanco); color: var(--gris); font-size: 12.5px; font-weight: 600; font-family: var(--font-near); cursor: pointer; transition: all .12s; display: inline-flex; align-items: center; gap: 6px; }
.chip:hover { border-color: var(--linea-2); color: var(--tinta); }
.chip.on { background: var(--negro); color: var(--naranja); border-color: var(--negro); }
.chip .n { font-size: 10.5px; opacity: .7; }
.filters-active { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; margin: -8px 0 18px; font-size: 12.5px; color: var(--gris); }
.filters-active .chip { padding: 4px 10px; font-size: 11.5px; }
.filters-active .chip b { font-weight: 700; color: var(--tinta); }
.filters-active .chip i { font-style: normal; opacity: .6; }
.results-meta { font-size: 12.5px; color: var(--gris-cl); margin-bottom: 14px; display: flex; justify-content: space-between; align-items: center; gap: 10px; flex-wrap: wrap; }
.pager { display: flex; justify-content: center; align-items: center; gap: 6px; margin-top: 30px; }
.pager button { min-width: 36px; height: 36px; padding: 0 10px; border-radius: var(--r-s); border: 1px solid var(--linea); background: var(--blanco); color: var(--gris); font-weight: 700; font-size: 13px; cursor: pointer; font-family: var(--font-near); }
.pager button:hover:not(:disabled) { border-color: var(--negro); color: var(--tinta); }
.pager button.on { background: var(--negro); color: var(--naranja); border-color: var(--negro); }
.pager button:disabled { opacity: .4; cursor: default; }
.view-toggle { display: inline-flex; border: 1px solid var(--linea); border-radius: var(--r-s); overflow: hidden; }
.view-toggle button { width: 36px; height: 34px; border: none; background: var(--blanco); color: var(--gris-cl); cursor: pointer; display: flex; align-items: center; justify-content: center; }
.view-toggle button.on { background: var(--negro); color: var(--naranja); }

/* Detalle (evento / oportunidad) */
.detail-hero { position: relative; height: 40vh; min-height: 260px; max-height: 460px; background: var(--negro) center/cover no-repeat; }
.detail-hero--sin-imagen { height: 22vh; min-height: 160px; background: linear-gradient(135deg, var(--tinta), var(--azul-d)); }
.detail-hero .article-hero-shade { position: absolute; inset: 0; background: linear-gradient(180deg, rgba(0,0,0,.05), rgba(0,0,0,.55)); }
.detail-layout { position: relative; z-index: 2; max-width: 1140px; margin: -40px auto 0; padding: 0 clamp(16px, 4vw, 40px) 60px; display: grid; grid-template-columns: 1fr 340px; gap: 28px; align-items: start; }
.detail-main { background: var(--blanco); border-radius: var(--r-l); border: 1px solid var(--linea); border-top: 4px solid var(--naranja); padding: clamp(24px, 4vw, 44px); }
.detail-main .article-titulo { margin-bottom: 10px; }
.detail-side { position: sticky; top: 84px; display: flex; flex-direction: column; gap: 16px; }
.side-card { background: var(--blanco); border: 1px solid var(--linea); border-radius: var(--r-l); padding: 20px 22px; }
.side-card-t { font-family: var(--font-inst); font-size: 10.5px; font-weight: 700; letter-spacing: 2px; text-transform: uppercase; color: var(--gris); margin-bottom: 14px; display: flex; align-items: center; gap: 8px; }
.side-card-t .cubos { --cubo: 6px; --cubo-gap: 2px; flex-direction: row; }
.fact { display: flex; gap: 12px; padding: 10px 0; border-bottom: 1px solid var(--linea); font-size: 13.5px; }
.fact:last-child { border-bottom: none; }
.fact svg { flex-shrink: 0; color: var(--naranja); margin-top: 2px; }
.fact b { display: block; font-size: 10.5px; font-weight: 700; letter-spacing: 1px; text-transform: uppercase; color: var(--gris-cl); margin-bottom: 2px; }
.fact span { color: var(--tinta); font-weight: 500; }
.rsvp-box { text-align: center; }
.rsvp-box .btn-submit { margin-top: 6px; }
.rsvp-box .btn-submit.is-inscrito { background: var(--c-curso); color: #fff; }
.rsvp-count { font-size: 12.5px; color: var(--gris); margin-top: 10px; }
.rsvp-progress { height: 5px; border-radius: 100px; background: var(--papel-2); margin-top: 10px; overflow: hidden; }
.rsvp-progress i { display: block; height: 100%; background: var(--naranja); border-radius: 100px; }
.asist-list { display: flex; flex-wrap: wrap; gap: 6px; }
.asist-list a { display: block; width: 34px; height: 34px; border-radius: 50%; background: var(--negro); color: var(--naranja); font-family: var(--font-inst); font-weight: 800; font-size: 11px; display: flex; align-items: center; justify-content: center; text-decoration: none; box-shadow: 0 0 0 2px var(--blanco); }
.asist-list .more { background: var(--papel-2); color: var(--gris); font-size: 10px; }
.share-row { display: flex; gap: 8px; flex-wrap: wrap; }
.share-row .btn-ghost { flex: 1; padding: 10px 8px; font-size: 11px; }
.related-list { display: flex; flex-direction: column; gap: 8px; }
.related-item { display: flex; gap: 12px; align-items: center; text-decoration: none; color: var(--tinta); padding: 8px; border-radius: var(--r-m); transition: background .12s; }
.related-item:hover { background: var(--papel); }
.related-thumb { width: 52px; height: 52px; border-radius: var(--r-s); background: var(--papel-2) center/cover no-repeat; flex-shrink: 0; }
.related-item b { display: block; font-size: 13.5px; font-family: var(--font-inst); line-height: 1.3; }
.related-item span { font-size: 11.5px; color: var(--gris-cl); }
.author-row { display: flex; align-items: center; gap: 12px; text-decoration: none; color: var(--tinta); }
.author-row b { display: block; font-size: 13.5px; }
.author-row span { font-size: 12px; color: var(--gris); }
.estado-banner { padding: 12px 16px; border-radius: var(--r-m); background: rgba(var(--naranja-rgb),.14); color: var(--tinta); font-size: 13.5px; font-weight: 600; margin-bottom: 18px; display: flex; gap: 10px; align-items: center; }
.estado-banner.is-cancel { background: rgba(192,57,43,.12); color: #C0392B; }
.estado-banner.is-draft { background: var(--papel-2); color: var(--gris); }

/* Páginas de autenticación (recuperar, verificar, 403) */

/* 5. Estados */
.empty-state { padding: 44px 24px; text-align: center; border: 1.5px dashed var(--linea-2); border-radius: var(--r-l); color: var(--gris); }
.empty-state .cubos { --cubo: 12px; --cubo-gap: 4px; flex-direction: row; justify-content: center; margin: 0 auto 16px; opacity: .4; }
.empty-state .cubos i { background: var(--gris-cl); }
.empty-state h3 { font-family: var(--font-inst); font-size: 16px; font-weight: 800; color: var(--tinta); margin-bottom: 6px; }
.empty-state p { font-size: 13px; line-height: 1.6; max-width: 380px; margin: 0 auto; font-weight: 300; }
.empty-state .btn-primary, .empty-state .btn-ghost, .empty-state .btn-secondary { margin-top: 16px; }
.empty-state.is-error { border-color: rgba(192,57,43,.4); }
.empty-state.is-error h3 { color: #C0392B; }
.skel { position: relative; overflow: hidden; background: var(--papel-2); border-radius: var(--r-m); }
.skel::after { content: ""; position: absolute; inset: 0; transform: translateX(-100%); background: linear-gradient(90deg, transparent, rgba(255,255,255,.35), transparent); animation: shimmer 1.3s infinite; }
[data-theme="dark"] .skel::after { background: linear-gradient(90deg, transparent, rgba(255,255,255,.06), transparent); }
@keyframes shimmer { to { transform: translateX(100%); } }
.skel-card { height: 190px; }
.skel-row { height: 64px; }
.badge { display: inline-flex; align-items: center; gap: 5px; padding: 3px 9px; border-radius: 999px; font-size: 10.5px; font-weight: 700; letter-spacing: .4px; text-transform: uppercase; background: var(--papel-2); color: var(--gris); white-space: nowrap; line-height: 1.4; }
.badge::before { content: ""; width: 6px; height: 6px; border-radius: 50%; background: currentColor; opacity: .7; }
.badge--published, .badge--publicada, .badge--activo, .badge--aceptada, .badge--confirmado, .badge--resuelto, .badge--enviado { background: rgba(62,124,89,.14); color: var(--c-curso); }
.badge--draft, .badge--borrador { background: var(--papel-2); color: var(--gris); }
.badge--scheduled, .badge--pendiente, .badge--lista_espera { background: rgba(var(--naranja-rgb),.18); color: #8a6400; }
[data-theme="dark"] .badge--scheduled, [data-theme="dark"] .badge--pendiente { color: var(--naranja); }
.badge--archived, .badge--archivada, .badge--rechazada, .badge--cancelled, .badge--suspendido, .badge--descartado, .badge--cancelado { background: rgba(192,57,43,.12); color: #C0392B; }
.badge--admin { background: var(--negro); color: var(--naranja); }
.badge--editor { background: rgba(34,61,113,.14); color: var(--c-historia); }
.badge--alumni { background: var(--papel-2); color: var(--gris); }
.badge--abierto { background: rgba(var(--naranja-rgb),.18); color: #8a6400; }
.toast--ok { border-left-color: var(--c-curso); }
.toast--err { border-left-color: #C0392B; }
.alert { padding: 14px 16px; border-radius: var(--r-m); font-size: 13.5px; line-height: 1.55; display: flex; gap: 12px; align-items: flex-start; border: 1px solid var(--linea); background: var(--papel); color: var(--tinta); }
.alert svg { flex-shrink: 0; margin-top: 1px; }
.alert--ok { background: rgba(62,124,89,.1); border-color: rgba(62,124,89,.3); }
.alert--warn { background: rgba(var(--naranja-rgb),.12); border-color: rgba(var(--naranja-rgb),.4); }
.alert--err { background: rgba(192,57,43,.08); border-color: rgba(192,57,43,.3); }
.alert--info { background: rgba(34,61,113,.08); border-color: rgba(34,61,113,.25); }
.alert b { font-weight: 700; }
.count-badge { display: inline-flex; align-items: center; justify-content: center; min-width: 18px; height: 18px; padding: 0 5px; border-radius: 999px; background: var(--naranja); color: var(--negro); font-size: 10.5px; font-weight: 800; font-family: var(--font-inst); margin-left: auto; }
.count-badge:empty, .count-badge[data-n="0"] { display: none; }

/* 6. Overlays */
.search-overlay { position: fixed; inset: 0; z-index: 9100; background: rgba(26,25,22,.6); backdrop-filter: blur(4px); display: flex; align-items: flex-start; justify-content: center; padding: 8vh 16px 16px; animation: fadeIn .15s var(--ease); }
.search-overlay[hidden] { display: none; }
.search-box { width: 100%; max-width: 680px; background: var(--blanco); border: 1px solid var(--linea); border-radius: var(--r-l); overflow: hidden; box-shadow: 0 30px 80px -20px rgba(0,0,0,.5); animation: slideUp .2s var(--ease); }
.search-input-row { display: flex; align-items: center; gap: 12px; padding: 14px 18px; border-bottom: 1px solid var(--linea); color: var(--gris); }
.search-input-row input { flex: 1; border: none; background: transparent; font-family: var(--font-near); font-size: 16px; color: var(--tinta); outline: none; }
.search-input-row kbd { font-family: var(--font-inst); font-size: 10px; font-weight: 700; padding: 3px 7px; border: 1px solid var(--linea-2); border-radius: 5px; color: var(--gris-cl); }
.search-results { max-height: 60vh; overflow-y: auto; padding: 8px; }
.search-hint { padding: 22px; text-align: center; font-size: 13px; color: var(--gris-cl); }
.search-hint.is-err { color: #C0392B; }
.search-group { padding: 6px 0; }
.search-group-t { font-family: var(--font-inst); font-size: 10.5px; font-weight: 700; letter-spacing: 1.8px; text-transform: uppercase; color: var(--naranja); padding: 8px 12px 4px; display: flex; gap: 8px; align-items: center; }
.search-group-t span { color: var(--gris-cl); font-weight: 600; letter-spacing: 0; }
.search-item { display: flex; align-items: center; gap: 12px; padding: 9px 12px; border-radius: var(--r-m); text-decoration: none; color: var(--tinta); transition: background .1s; }
.search-item:hover, .search-item:focus-visible { background: var(--papel); }
.search-thumb { width: 40px; height: 40px; border-radius: var(--r-s); background: var(--papel-2) center/cover no-repeat; flex-shrink: 0; }
.search-thumb--ini { display: flex; align-items: center; justify-content: center; font-family: var(--font-inst); font-weight: 800; color: var(--gris); background: var(--papel-2); border-radius: 50%; }
.search-item-t { display: flex; flex-direction: column; font-size: 14px; font-weight: 600; min-width: 0; }
.search-item-t small { font-size: 12px; color: var(--gris-cl); font-weight: 400; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.search-results .empty-state { margin: 10px; padding: 30px 20px; }
.confirm-overlay { z-index: 9300; }
.confirm-box { background: var(--blanco); color: var(--tinta); border: 1px solid var(--linea); border-radius: var(--r-l); padding: 28px; width: 100%; max-width: 400px; animation: slideUp .2s var(--ease); }
.confirm-box h3 { font-family: var(--font-inst); font-size: 18px; font-weight: 800; margin-bottom: 8px; }
.confirm-box p { font-size: 13.5px; color: var(--gris); line-height: 1.6; margin-bottom: 20px; }
.confirm-btns { display: flex; justify-content: flex-end; gap: 8px; }
.confirm-btns .btn-primary { padding: 11px 18px; font-size: 12px; }
.confirm-btns .btn-ghost { padding: 11px 16px; }
/* Modal genérico (editor admin, detalle) */
.modal-overlay { position: fixed; inset: 0; z-index: 9200; background: rgba(20,18,14,.62); backdrop-filter: blur(3px); display: flex; align-items: center; justify-content: center; padding: 20px; animation: fadeIn .15s var(--ease); }
.modal-overlay[hidden] { display: none; }
.modal { background: var(--blanco); color: var(--tinta); border: 1px solid var(--linea); border-radius: var(--r-l); width: 100%; max-width: 760px; max-height: 92vh; display: flex; flex-direction: column; overflow: hidden; animation: slideUp .2s var(--ease); }
.modal.is-wide { max-width: 1040px; }
.modal.is-sm { max-width: 480px; }
.modal-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 16px 22px; background: var(--papel); border-bottom: 1px solid var(--linea); flex-shrink: 0; }
.modal-head .t { font-family: var(--font-inst); font-size: 11px; font-weight: 700; letter-spacing: 2px; text-transform: uppercase; color: var(--gris); display: flex; align-items: center; gap: 8px; }
.modal-head .t .cubos { --cubo: 6px; --cubo-gap: 2px; flex-direction: row; }
.modal-body { padding: 22px; overflow-y: auto; flex: 1; }
.cf-type-strip { margin: -22px -22px 20px; padding: 13px 24px; display: flex; align-items: center; justify-content: space-between; transition: background .15s var(--ease); }
.cf-type-strip span { font-family: var(--font-inst); font-size: 11px; font-weight: 700; letter-spacing: 2px; text-transform: uppercase; color: #fff; }
.modal-foot { display: flex; align-items: center; justify-content: flex-end; gap: 8px; padding: 14px 22px; border-top: 1px solid var(--linea); background: var(--papel); flex-shrink: 0; flex-wrap: wrap; }
.modal-foot .u-right { margin-right: auto; margin-left: 0; }
.modal-foot .btn-primary { padding: 12px 20px; font-size: 12px; }
.dropdown { position: relative; display: inline-block; }
.dropdown-menu { position: absolute; right: 0; top: calc(100% + 6px); min-width: 180px; background: var(--blanco); border: 1px solid var(--linea); border-radius: var(--r-m); box-shadow: var(--elev); padding: 6px; z-index: 80; display: none; animation: slideUp .15s var(--ease); }
.dropdown.open .dropdown-menu { display: block; }
.dropdown-menu button, .dropdown-menu a { display: flex; width: 100%; align-items: center; gap: 8px; padding: 9px 11px; border: none; background: none; text-align: left; font-family: var(--font-near); font-size: 13px; font-weight: 500; color: var(--tinta); border-radius: var(--r-s); cursor: pointer; text-decoration: none; }
.dropdown-menu button:hover, .dropdown-menu a:hover { background: var(--papel); }
.dropdown-menu .is-danger { color: #C0392B; }
.dropdown-menu hr { border: none; border-top: 1px solid var(--linea); margin: 6px 0; }

/* 7. Perfil público */
.perfil-hero { background: var(--papel); border-bottom: 1px solid var(--linea); padding: clamp(28px, 5vw, 56px) clamp(20px, 5vw, 56px) 0; }
.perfil-hero-inner { max-width: 1040px; margin: 0 auto; display: flex; gap: 28px; align-items: flex-end; flex-wrap: wrap; padding-bottom: 28px; }
.perfil-avatar { width: 128px; height: 128px; border-radius: var(--r-l); background-color: var(--negro); color: var(--naranja); font-family: var(--font-inst); font-weight: 800; font-size: 40px; display: flex; align-items: center; justify-content: center; box-shadow: var(--elev); flex-shrink: 0; }
.perfil-head { flex: 1; min-width: 240px; }
.perfil-head h1 { font-family: var(--font-inst); font-size: clamp(26px, 3.6vw, 38px); font-weight: 800; letter-spacing: -.6px; line-height: 1.05; margin-bottom: 6px; }
.perfil-sub { font-size: 15px; color: var(--gris); margin-bottom: 6px; }
.perfil-meta { display: flex; flex-wrap: wrap; gap: 6px 16px; font-size: 12.5px; color: var(--gris-cl); }
.perfil-meta span { display: inline-flex; align-items: center; gap: 5px; }
.perfil-actions { display: flex; gap: 8px; flex-wrap: wrap; align-items: center; }
.perfil-actions .btn-primary { padding: 12px 20px; font-size: 12px; }
.perfil-actions .btn-secondary { padding: 11px 18px; font-size: 12px; }
.perfil-num { font-family: var(--font-inst); font-size: 11px; font-weight: 700; letter-spacing: 2px; color: var(--naranja); text-transform: uppercase; margin-bottom: 8px; }
.badge-embajador { display: inline-flex; align-items: center; gap: 5px; vertical-align: middle; font-family: var(--font-inst); font-size: 12px; font-weight: 800; letter-spacing: .3px; color: var(--negro); background: var(--naranja); padding: 5px 11px 5px 8px; border-radius: 100px; margin-left: 4px; transform: translateY(-4px); }
.perfil-grid { max-width: 1040px; margin: 0 auto; padding: 32px clamp(20px, 5vw, 56px) 60px; display: grid; grid-template-columns: 1fr 320px; gap: 24px; align-items: start; }
.perfil-main { display: flex; flex-direction: column; gap: 20px; }
.perfil-side { display: flex; flex-direction: column; gap: 16px; position: sticky; top: 84px; }
.perfil-card { background: var(--blanco); border: 1px solid var(--linea); border-radius: var(--r-l); padding: 22px 24px; }
.perfil-card-t { font-family: var(--font-inst); font-size: 10.5px; font-weight: 700; letter-spacing: 2px; text-transform: uppercase; color: var(--gris); margin-bottom: 14px; display: flex; align-items: center; gap: 8px; }
.perfil-card-t .cubos { --cubo: 6px; --cubo-gap: 2px; flex-direction: row; }
.perfil-bio { font-size: 15px; line-height: 1.75; color: var(--tinta); font-weight: 300; white-space: pre-line; }
.tags { display: flex; flex-wrap: wrap; gap: 6px; }
.tag { padding: 5px 11px; border-radius: 999px; background: var(--papel-2); border: 1px solid var(--linea); font-size: 12px; font-weight: 600; color: var(--gris); }
.tag.is-comun { background: rgba(var(--naranja-rgb),.16); border-color: rgba(var(--naranja-rgb),.4); color: var(--tinta); }
.exp-list { display: flex; flex-direction: column; }
.exp-item { display: grid; grid-template-columns: 110px 1fr; gap: 14px; padding: 14px 0; border-bottom: 1px solid var(--linea); }
.exp-item:last-child { border-bottom: none; padding-bottom: 0; }
.exp-item:first-child { padding-top: 0; }
.exp-when { font-family: var(--font-inst); font-size: 11.5px; font-weight: 700; color: var(--gris-cl); letter-spacing: .3px; padding-top: 2px; }
.exp-item b { display: block; font-family: var(--font-inst); font-size: 14.5px; font-weight: 700; }
.exp-item span { display: block; font-size: 13px; color: var(--gris); }
.exp-item p { font-size: 13px; color: var(--gris); line-height: 1.55; margin-top: 4px; font-weight: 300; }
.proy-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); gap: 12px; }
.proy-card { border: 1px solid var(--linea); border-radius: var(--r-m); overflow: hidden; background: var(--papel); text-decoration: none; color: var(--tinta); display: flex; flex-direction: column; transition: border-color .12s; }
.proy-card:hover { border-color: var(--negro); }
.proy-card .img { height: 110px; background: var(--papel-2) center/cover no-repeat; }
.proy-card div { padding: 12px 14px; }
.proy-card b { font-family: var(--font-inst); font-size: 13.5px; display: block; margin-bottom: 3px; }
.proy-card span { font-size: 12px; color: var(--gris); line-height: 1.5; }
.links-list { display: flex; flex-direction: column; gap: 6px; }
.links-list a { display: flex; align-items: center; gap: 10px; font-size: 13.5px; font-weight: 600; color: var(--tinta); text-decoration: none; padding: 8px 10px; border-radius: var(--r-s); transition: background .12s; }
.links-list a:hover { background: var(--papel); color: var(--naranja); }
.links-list svg { color: var(--gris-cl); flex-shrink: 0; }
.privado-note { font-size: 12px; color: var(--gris-cl); display: flex; gap: 6px; align-items: center; padding: 10px 12px; border: 1px dashed var(--linea-2); border-radius: var(--r-s); }

/* 8. Panel alumni */
.dash-main { display: flex; flex-direction: column; }
.dash-topbar { position: sticky; top: 0; z-index: 20; display: flex; align-items: center; gap: 10px; padding: 12px 48px; background: color-mix(in srgb, var(--bg2) 88%, transparent); backdrop-filter: blur(10px); border-bottom: 1px solid var(--linea); }
.dash-topbar-search { flex: 1; max-width: 460px; display: flex; align-items: center; gap: 10px; padding: 8px 12px; border: 1px solid var(--linea); border-radius: var(--r-m); background: var(--papel); color: var(--gris-cl); font-size: 13px; cursor: text; }
.dash-topbar-search kbd { margin-left: auto; font-family: var(--font-inst); font-size: 10px; font-weight: 700; padding: 2px 6px; border: 1px solid var(--linea-2); border-radius: 5px; }
.dash-topbar-actions { margin-left: auto; display: flex; align-items: center; gap: 8px; }
.icon-btn { position: relative; width: 36px; height: 36px; border-radius: 50%; border: 1px solid var(--linea); background: var(--blanco); color: var(--gris); display: flex; align-items: center; justify-content: center; cursor: pointer; transition: all .15s; text-decoration: none; }
.icon-btn:hover { background: var(--ink); color: var(--bg); border-color: var(--ink); }
.icon-btn .dot { position: absolute; top: 6px; right: 6px; width: 8px; height: 8px; border-radius: 50%; background: var(--naranja); border: 2px solid var(--blanco); display: none; }
.icon-btn.has-dot .dot { display: block; }
.dash-section { max-width: 980px; }
.dash-section.is-wide { max-width: 1180px; }

/* Cabecera de sección sin eyebrow ni cubos: solo título grande y descripción */
.dash-section-head-simple { display: flex; align-items: flex-end; justify-content: space-between; gap: 16px; flex-wrap: wrap; margin-bottom: 36px; }
.dash-section-head-simple > div:first-child { flex: 1; min-width: 240px; }
.dash-section-head-simple h2 { font-family: var(--font-inst); font-size: 40px; font-weight: 800; letter-spacing: -1.2px; margin-bottom: 8px; color: var(--tinta); line-height: 1; }
.dash-section-head-simple p { font-size: 14.5px; color: var(--gris); line-height: 1.65; font-weight: 300; max-width: 560px; }
.dash-section-head-simple .head-actions { display: flex; gap: 8px; flex-wrap: wrap; padding-bottom: 4px; }
@media (max-width: 640px) { .dash-section-head-simple h2 { font-size: 28px; } }
.dash-nav-item { position: relative; }
.dash-nav-item .count-badge { margin-left: auto; }
.dash-nav-group { font-family: var(--font-inst); font-size: 9.5px; font-weight: 700; letter-spacing: 2px; text-transform: uppercase; color: var(--gris-cl); padding: 14px 12px 6px; }
.dash-sidebar-bottom .circuit-toggle { width: 100%; justify-content: flex-start; border-radius: var(--r-m); margin-bottom: 6px; background: transparent; }
.dash-user-card { cursor: pointer; }
.dash-avatar.has-img { color: transparent; }

/* Inicio del panel */
.dh-hello { margin-bottom: 26px; }
.dh-hello h2 { font-family: var(--font-inst); font-size: clamp(26px, 3.2vw, 34px); font-weight: 800; letter-spacing: -.6px; margin-bottom: 6px; }
.dh-hello p { font-size: 14px; color: var(--gris); }
.dh-grid { display: grid; grid-template-columns: repeat(12, 1fr); gap: 16px; }
.dh-card { grid-column: span 4; background: var(--blanco); border: 1px solid var(--linea); border-radius: var(--r-l); padding: 20px 22px; display: flex; flex-direction: column; gap: 12px; min-width: 0; }
.dh-card-t { font-family: var(--font-inst); font-size: 10.5px; font-weight: 700; letter-spacing: 2px; text-transform: uppercase; color: var(--gris); display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.dh-card-t a { font-family: var(--font-near); font-size: 12px; font-weight: 700; letter-spacing: 0; text-transform: none; color: var(--gris); text-decoration: none; }
.dh-card-t a:hover { color: var(--naranja); }
.dh-list { display: flex; flex-direction: column; }
.dh-item { display: flex; gap: 12px; align-items: flex-start; padding: 10px 0; border-bottom: 1px solid var(--linea); text-decoration: none; color: var(--tinta); }
.dh-item:last-child { border-bottom: none; padding-bottom: 0; }
.dh-item:first-child { padding-top: 0; }
.dh-item:hover b { color: var(--naranja); }
.dh-item b { display: block; font-family: var(--font-inst); font-size: 13.5px; font-weight: 700; line-height: 1.3; transition: color .12s; }
.dh-item span { display: block; font-size: 12px; color: var(--gris-cl); margin-top: 2px; }
.dh-date { flex-shrink: 0; width: 44px; text-align: center; background: var(--papel); border-radius: var(--r-s); padding: 6px 4px; line-height: 1; }
.dh-date b { font-size: 17px; color: var(--tinta); font-family: var(--font-inst); display: block; }
.dh-date span { font-size: 9px; font-weight: 700; letter-spacing: 1.5px; text-transform: uppercase; color: var(--naranja); margin-top: 3px; }
.dh-thumb { width: 44px; height: 44px; border-radius: var(--r-s); background: var(--papel-2) center/cover no-repeat; flex-shrink: 0; }
.completitud { display: flex; flex-direction: column; gap: 10px; }
.completitud-ring { display: flex; align-items: center; gap: 16px; }
.ring { position: relative; width: 64px; height: 64px; border-radius: 50%; background: conic-gradient(var(--naranja) calc(var(--p) * 1%), var(--papel-2) 0); display: flex; align-items: center; justify-content: center; flex-shrink: 0; }
.ring::before { content: ""; position: absolute; inset: 7px; border-radius: 50%; background: var(--blanco); }
.ring b { position: relative; font-family: var(--font-inst); font-size: 15px; font-weight: 800; }
.completitud-tips { display: flex; flex-direction: column; gap: 4px; }
.completitud-tips a { font-size: 12.5px; color: var(--gris); text-decoration: none; display: flex; align-items: center; gap: 6px; }
.completitud-tips a::before { content: "+"; color: var(--naranja); font-weight: 800; }
.completitud-tips a:hover { color: var(--tinta); }
.act-item { display: flex; gap: 10px; align-items: center; padding: 8px 0; border-bottom: 1px solid var(--linea); font-size: 13px; }
.act-item:last-child { border-bottom: none; }
.act-item .dir-avatar { width: 30px; height: 30px; font-size: 10px; box-shadow: none; }
.act-item small { color: var(--gris-cl); font-size: 11.5px; margin-left: auto; white-space: nowrap; }
.act-item b { font-weight: 700; }

/* Directorio */
.dir-toolbar { display: flex; flex-wrap: wrap; gap: 10px; align-items: center; margin-bottom: 16px; }
.dir-toolbar .field { flex: 1 1 240px; max-width: 380px; margin: 0; }
.dir-toolbar .field input { padding: 10px 12px 10px 34px; font-size: 13.5px; background: var(--blanco); background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%239C978C' stroke-width='2' stroke-linecap='round'%3E%3Ccircle cx='11' cy='11' r='7'/%3E%3Cpath d='m20 20-3.5-3.5'/%3E%3C/svg%3E"); background-repeat: no-repeat; background-position: 11px center; }
.dir-toolbar select { padding: 9px 30px 9px 11px; font-size: 13px; font-family: var(--font-near); border: 1.5px solid var(--linea); border-radius: var(--r-s); background-color: var(--papel-2); color: var(--tinta); -webkit-appearance: none; appearance: none; background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='11' height='7' viewBox='0 0 11 7'%3E%3Cpath fill='%236F6B62' d='M5.5 7 0 0h11z'/%3E%3C/svg%3E"); background-repeat: no-repeat; background-position: right 13px center; cursor: pointer; }
.dir-filters { display: grid; grid-template-columns: repeat(auto-fill, minmax(160px, 1fr)); gap: 8px; margin-bottom: 14px; }
.dir-filters .field { margin: 0; }
.dir-filters .field label { font-size: 9.5px; }
.dir-filters .field select, .dir-filters .field input { padding: 9px 11px; font-size: 13px; background: var(--blanco); }
.dir-filters-toggle { font-size: 12.5px; font-weight: 700; color: var(--gris); background: none; border: 1px solid var(--linea); border-radius: var(--r-m); padding: 9px 13px; cursor: pointer; font-family: var(--font-near); display: inline-flex; align-items: center; gap: 6px; }
.dir-filters-toggle:hover, .dir-filters-toggle.on { border-color: var(--negro); color: var(--tinta); }
.dir-card { flex-direction: column; align-items: stretch; gap: 10px; }
.dir-card-top { display: flex; align-items: center; gap: 13px; }
.dir-card .dir-avatar { width: 46px; height: 46px; font-size: 14px; }
.dir-chips { display: flex; flex-wrap: wrap; gap: 4px; }
.dir-chips .tag { padding: 3px 8px; font-size: 11px; }
.dir-actions { display: flex; gap: 6px; margin-top: 2px; }
.dir-actions .btn-mini { flex: 1; text-align: center; text-decoration: none; }
.dir-actions .btn-mini.is-primary { background: var(--negro); color: var(--naranja); border-color: var(--negro); }
.dir-actions .btn-mini.is-primary:hover { background: #1a1a1a; }
.dir-actions .btn-mini.is-ok { background: rgba(62,124,89,.14); color: var(--c-curso); border-color: transparent; cursor: default; }
.directorio-grid.is-list { grid-template-columns: 1fr; gap: 6px; }
.directorio-grid.is-list .dir-card { flex-direction: row; align-items: center; padding: 10px 14px; }
.directorio-grid.is-list .dir-card-top { flex: 1; min-width: 0; }
.directorio-grid.is-list .dir-chips { display: none; }
.directorio-grid.is-list .dir-actions { margin: 0; flex-shrink: 0; }
.directorio-grid.is-list .dir-actions .btn-mini { flex: none; }
.dir-online { width: 8px; height: 8px; border-radius: 50%; background: var(--c-curso); display: inline-block; margin-left: 6px; vertical-align: middle; }
.dir-name .badge-embajador { font-size: 9px; padding: 3px 8px 3px 6px; margin-left: 6px; transform: none; vertical-align: middle; }

/* Red / networking */
.red-tabs { display: flex; gap: 6px; flex-wrap: wrap; margin-bottom: 20px; }
.req-card { display: flex; gap: 14px; align-items: flex-start; padding: 16px 18px; border: 1px solid var(--linea); border-radius: var(--r-l); background: var(--blanco); margin-bottom: 10px; }
.req-card.is-activo { border-color: rgba(62,124,89,.35); background: rgba(62,124,89,.03); }
.req-card .dir-avatar { width: 46px; height: 46px; }
.req-body { flex: 1; min-width: 0; }
.req-msg { font-size: 13px; color: var(--gris); font-style: italic; margin-top: 6px; padding: 8px 12px; background: var(--papel); border-radius: var(--r-s); border-left: 2px solid var(--naranja); }
.req-actions { display: flex; gap: 6px; margin-top: 10px; flex-wrap: wrap; }

/* Mensajería */

/* Notificaciones */
.notif-list { display: flex; flex-direction: column; border: 1px solid var(--linea); border-radius: var(--r-l); overflow: hidden; background: var(--blanco); }
.notif-item { display: flex; gap: 14px; align-items: flex-start; padding: 14px 18px; border-bottom: 1px solid var(--linea); text-decoration: none; color: var(--tinta); position: relative; transition: background .1s; }
.notif-item:last-child { border-bottom: none; }
.notif-item:hover { background: var(--papel); }
.notif-item.unread { background: rgba(var(--naranja-rgb),.06); }
.notif-item.unread::before { content: ""; position: absolute; left: 0; top: 0; bottom: 0; width: 3px; background: var(--naranja); }
.notif-ic { width: 36px; height: 36px; border-radius: 50%; background: var(--papel-2); color: var(--gris); display: flex; align-items: center; justify-content: center; flex-shrink: 0; }
.notif-ic.t-mensaje { background: rgba(34,61,113,.14); color: var(--c-historia); }
.notif-ic.t-conexion_solicitud, .notif-ic.t-conexion_aceptada { background: rgba(62,124,89,.14); color: var(--c-curso); }
.notif-ic.t-evento, .notif-ic.t-recordatorio { background: rgba(26,46,85,.14); color: var(--c-evento); }
.notif-ic.t-oportunidad { background: rgba(177,82,31,.14); color: var(--c-recurso); }
.notif-ic.t-admin { background: rgba(var(--naranja-rgb),.18); color: #8a6400; }
.notif-body { flex: 1; min-width: 0; }
.notif-body b { display: block; font-size: 14px; font-family: var(--font-inst); line-height: 1.3; }
.notif-body p { font-size: 13px; color: var(--gris); margin-top: 3px; line-height: 1.5; }
.notif-body small { display: block; font-size: 11px; color: var(--gris-cl); margin-top: 5px; }
.notif-x { flex-shrink: 0; width: 26px; height: 26px; border-radius: 50%; border: none; background: transparent; color: var(--gris-cl); cursor: pointer; opacity: 0; transition: opacity .12s, background .12s; }
.notif-item:hover .notif-x { opacity: 1; }
.notif-x:hover { background: var(--papel-2); color: var(--tinta); }
.prefs-table { width: 100%; border-collapse: collapse; font-size: 13.5px; }
.prefs-table th { text-align: left; font-family: var(--font-inst); font-size: 10.5px; font-weight: 700; letter-spacing: 1.5px; text-transform: uppercase; color: var(--gris-cl); padding: 8px 10px; border-bottom: 1px solid var(--linea); }
.prefs-table th:not(:first-child) { text-align: center; width: 90px; }
.prefs-table td { padding: 11px 10px; border-bottom: 1px solid var(--linea); }
.prefs-table td:not(:first-child) { text-align: center; }
.switch { position: relative; display: inline-block; width: 32px; height: 17px; flex-shrink: 0; }
.switch input { opacity: 0; width: 0; height: 0; }
.switch i { position: absolute; inset: 0; background: var(--linea-2); border-radius: 999px; cursor: pointer; transition: background .15s; }
.switch i::before { content: ""; position: absolute; width: 12px; height: 12px; left: 2.5px; top: 2.5px; background: #fff; border-radius: 50%; transition: transform .15s var(--ease); box-shadow: 0 1px 2px rgba(0,0,0,.25); }
.switch input:checked + i { background: var(--naranja); }
.switch input:checked + i::before { transform: translateX(15px); }
.switch input:focus-visible + i { outline: 2px solid var(--naranja); outline-offset: 2px; }
.switch-row { display: flex; align-items: center; justify-content: space-between; gap: 14px; padding: 12px 0; border-bottom: 1px solid var(--linea); }
.switch-row:last-child { border-bottom: none; }
.switch-row b { display: block; font-size: 13.5px; }
.switch-row span { display: block; font-size: 12px; color: var(--gris); margin-top: 2px; }

/* Editor de perfil */
.dash-form.is-wide { max-width: 760px; }
.avatar-upload { display: flex; align-items: center; gap: 18px; margin-bottom: 8px; }
.avatar-upload .perfil-avatar { width: 88px; height: 88px; font-size: 28px; border-radius: 50%; }
.avatar-upload-btns { display: flex; gap: 8px; flex-wrap: wrap; }
.tag-input { display: flex; flex-wrap: wrap; gap: 6px; padding: 8px 10px; border: 1.5px solid var(--linea); border-radius: var(--r-s); background: var(--papel-2); cursor: text; min-height: 46px; }
.tag-input:focus-within { border-color: var(--naranja); box-shadow: 0 0 0 3px rgba(var(--naranja-rgb),.18); }
.tag-input .tag { display: inline-flex; align-items: center; gap: 6px; background: var(--blanco); }
.tag-input .tag button { border: none; background: none; color: var(--gris-cl); cursor: pointer; font-size: 12px; padding: 0; line-height: 1; }
.tag-input .tag button:hover { color: #C0392B; }
.tag-input input { flex: 1; min-width: 120px; border: none; background: transparent; font-family: var(--font-near); font-size: 14px; color: var(--tinta); outline: none; }
.repeater { display: flex; flex-direction: column; gap: 10px; }
.rep-item { border: 1.5px solid var(--linea); border-radius: var(--r-m); background: var(--papel); padding: 12px; display: flex; flex-direction: column; gap: 8px; }
.rep-item .row { margin-bottom: 0; }
.rep-head { display: flex; justify-content: space-between; align-items: center; }
.rep-head span { font-family: var(--font-inst); font-size: 10.5px; font-weight: 700; letter-spacing: 1.5px; text-transform: uppercase; color: var(--gris); }
.rep-head div { display: flex; gap: 4px; }
.curso-mod-item .blk-item, .curso-mod-item .blk-add button { background: var(--blanco); }
.rep-add { align-self: flex-start; }
.privacy-row { display: grid; grid-template-columns: 1fr 200px; gap: 12px; align-items: center; padding: 10px 0; border-bottom: 1px solid var(--linea); }
.privacy-row:last-child { border-bottom: none; }
.privacy-row b { font-size: 13.5px; display: block; }
.privacy-row select { padding: 8px 30px 8px 10px; font-size: 13px; }
.field .hint { font-size: 11.5px; color: var(--gris-cl); }
.field .counter { font-size: 11px; color: var(--gris-cl); text-align: right; }
.row.three { grid-template-columns: 1fr 1fr 1fr; }
.sticky-save { position: sticky; bottom: 0; background: color-mix(in srgb, var(--bg2) 90%, transparent); backdrop-filter: blur(8px); padding: 14px 0; margin-top: 10px; border-top: 1px solid var(--linea); display: flex; gap: 10px; align-items: center; z-index: 5; }
.sticky-save .btn-submit { margin-top: 0; max-width: 320px; }
.sticky-save .estado { font-size: 12.5px; color: var(--gris-cl); }

/* Formulario publicar oportunidad (alumni) y "mis publicaciones" */
.mine-list { display: flex; flex-direction: column; gap: 8px; }
.mine-item { display: flex; align-items: center; gap: 12px; padding: 12px 16px; border: 1px solid var(--linea); border-radius: var(--r-m); background: var(--blanco); }
.mine-item b { display: block; font-family: var(--font-inst); font-size: 14px; }
.mine-item span { font-size: 12px; color: var(--gris-cl); }
.mine-item .u-right { display: flex; gap: 6px; }

/* Calendario de eventos y lista del día seleccionado */
.ev-tabs { display: flex; gap: 6px; margin-bottom: 18px; flex-wrap: wrap; }
.cal-widget { max-width: 420px; }
.ev-layout { display: grid; grid-template-columns: 1fr 380px; gap: 22px; align-items: start; }
.ev-layout .ev-grid { grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); }

/* 9. Panel admin */
.admin-stats { display: grid; grid-template-columns: repeat(4, 1fr); gap: 12px; margin-bottom: 22px; }
.admin-stat { background: var(--blanco); border: 1px solid var(--linea); border-radius: var(--r-l); padding: 16px 18px; text-decoration: none; color: var(--tinta); display: flex; flex-direction: column; gap: 3px; transition: border-color .12s; }
.admin-stat:hover { border-color: var(--negro); }
.admin-stat .n { font-family: var(--font-inst); font-size: 26px; font-weight: 800; line-height: 1; }
.admin-stat .l { font-size: 12px; color: var(--gris); font-weight: 600; }
.admin-stat .d { font-size: 11px; color: var(--gris-cl); }
.admin-stat .d.up { color: var(--c-curso); }
.admin-stat.is-alert { border-color: rgba(var(--naranja-rgb),.5); background: rgba(var(--naranja-rgb),.06); }
.admin-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }
.chart-bars { display: flex; align-items: flex-end; gap: 6px; height: 120px; padding-top: 10px; }
.chart-bar { flex: 1; display: flex; flex-direction: column; align-items: center; gap: 4px; height: 100%; justify-content: flex-end; }
.chart-bar i { display: block; width: 100%; background: var(--naranja); border-radius: 4px 4px 0 0; min-height: 3px; transition: height .5s var(--ease); }
.chart-bar span { font-size: 9.5px; color: var(--gris-cl); font-weight: 700; }
.chart-bar b { font-size: 10.5px; color: var(--tinta); }
.hbar { display: flex; align-items: center; gap: 10px; font-size: 12.5px; padding: 5px 0; }
.hbar span { width: 150px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; color: var(--gris); }
.hbar i { flex: 1; height: 8px; background: var(--papel-2); border-radius: 999px; overflow: hidden; }
.hbar i::after { content: ""; display: block; height: 100%; width: var(--w); background: var(--azul); border-radius: 999px; }
.hbar b { width: 32px; text-align: right; font-variant-numeric: tabular-nums; }
.admin-toolbar { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; margin-bottom: 18px; }
.admin-toolbar .field { margin: 0; flex: 1 1 220px; max-width: 360px; }
.admin-toolbar .field input, .admin-toolbar .field select { padding: 9px 12px; font-size: 13.5px; background: var(--blanco); }
.status-tabs { display: flex; gap: 4px; flex-wrap: wrap; }
.status-tabs button { padding: 7px 12px; border-radius: var(--r-m); border: 1px solid transparent; background: transparent; color: var(--gris); font-size: 12.5px; font-weight: 700; font-family: var(--font-near); cursor: pointer; display: inline-flex; align-items: center; gap: 6px; }
.status-tabs button:hover { background: var(--papel-2); color: var(--tinta); }
.status-tabs button.on { background: var(--negro); color: var(--naranja); }
.status-tabs button .n { font-size: 10.5px; opacity: .7; }
.admin-card .admin-card-img { height: 110px; margin: -16px -18px 4px; background: var(--papel-2) center/cover no-repeat; border-bottom: 1px solid var(--linea); }
.admin-card-meta { font-size: 11.5px; color: var(--gris-cl); display: flex; gap: 8px; flex-wrap: wrap; }
.admin-card.is-dragging { opacity: .4; }
.drag-handle { cursor: grab; color: var(--gris-cl); user-select: none; font-size: 14px; padding: 0 4px; }
.admin-table .avatar-cell { display: flex; align-items: center; gap: 10px; }
.admin-table .avatar-cell .dir-avatar { width: 30px; height: 30px; font-size: 10px; box-shadow: none; }
.admin-table .avatar-cell b { display: block; font-size: 13px; }
.admin-table .avatar-cell small { color: var(--gris-cl); font-size: 11px; }
.admin-table select.inline { padding: 5px 26px 5px 8px; font-size: 12px; border: 1px solid var(--linea); border-radius: var(--r-s); background-color: var(--blanco); color: var(--tinta); font-family: var(--font-near); }
.form-grid { display: grid; grid-template-columns: 1fr 300px; gap: 22px; align-items: start; }
.form-side { position: sticky; top: 0; display: flex; flex-direction: column; gap: 14px; }
.form-side .side-card { padding: 16px 18px; }
.form-side .field { margin-bottom: 10px; }
.form-side .field input, .form-side .field select, .form-side .field textarea { padding: 9px 11px; font-size: 13px; }
.form-main .field { margin-bottom: 14px; }
.form-main .field input[type="text"].is-title { font-family: var(--font-inst); font-size: 20px; font-weight: 800; padding: 12px 14px; }
.seo-preview { border: 1px solid var(--linea); border-radius: var(--r-s); padding: 12px 14px; background: var(--blanco); font-family: Arial, sans-serif; }
.seo-preview .u { font-size: 11px; color: #1a7f3b; }
.seo-preview .t { font-size: 16px; color: #1a0dab; margin: 2px 0; }
.seo-preview .d { font-size: 12px; color: #4d5156; line-height: 1.4; }
[data-theme="dark"] .seo-preview { background: #fff; }
.blk-list { display: flex; flex-direction: column; gap: 10px; }
.blk-item { border: 1.5px solid var(--linea); border-radius: var(--r-m); background: var(--papel); overflow: hidden; }
.blk-item.is-hidden { opacity: .55; }
.blk-item.is-dragging { opacity: .35; }
.blk-head { display: flex; align-items: center; gap: 10px; padding: 10px 12px; background: var(--papel-2); border-bottom: 1px solid transparent; cursor: pointer; }
.blk-item.open .blk-head { border-bottom-color: var(--linea); }
.blk-ic { width: 28px; height: 28px; border-radius: var(--r-s); background: var(--negro); color: var(--naranja); font-size: 13px; display: flex; align-items: center; justify-content: center; flex-shrink: 0; }
.blk-title { flex: 1; min-width: 0; }
.blk-title b { display: block; font-family: var(--font-inst); font-size: 13.5px; }
.blk-title span { display: block; font-size: 11.5px; color: var(--gris-cl); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.blk-tools { display: flex; gap: 4px; flex-shrink: 0; }
.blk-body { display: none; padding: 14px; flex-direction: column; gap: 12px; }
.blk-item.open .blk-body { display: flex; }
.blk-field label { font-family: var(--font-inst); font-size: 10px; font-weight: 700; letter-spacing: 1.5px; text-transform: uppercase; color: var(--gris); display: block; margin-bottom: 5px; }
.blk-field input[type="text"], .blk-field input[type="number"], .blk-field textarea, .blk-field select { width: 100%; font-family: var(--font-near); font-size: 13.5px; padding: 9px 11px; border: 1.5px solid var(--linea); border-radius: var(--r-s); background: var(--blanco); color: var(--tinta); }
.blk-field input:focus, .blk-field textarea:focus, .blk-field select:focus { outline: none; border-color: var(--negro); box-shadow: 0 0 0 3px rgba(var(--naranja-rgb),.18); }
.blk-field textarea { resize: vertical; min-height: 70px; }
.blk-field .check { margin: 0; padding: 10px 12px; }
.blk-field .check .tt { margin: 0; }
.blk-sub { border: 1.5px dashed var(--linea-2); border-radius: var(--r-s); padding: 10px; background: var(--blanco); display: flex; flex-direction: column; gap: 8px; }
.blk-sub-item { border: 1px solid var(--linea); border-radius: var(--r-s); padding: 10px; background: var(--papel); display: flex; flex-direction: column; gap: 8px; }
.blk-sub-head { display: flex; justify-content: space-between; align-items: center; font-family: var(--font-inst); font-size: 10px; font-weight: 700; letter-spacing: 1.5px; text-transform: uppercase; color: var(--gris-cl); }
.blk-sub-head div { display: flex; gap: 4px; }
.blk-add { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 6px; }
.blk-add button { display: inline-flex; align-items: center; gap: 6px; padding: 8px 12px; border: 1.5px solid var(--linea); border-radius: var(--r-m); background: var(--blanco); color: var(--tinta); font-size: 12.5px; font-weight: 600; font-family: var(--font-near); cursor: pointer; transition: border-color .12s, background .12s; }
.blk-add button:hover { border-color: var(--negro); }
.blk-add button i { font-style: normal; color: var(--naranja); font-weight: 800; }
.img-field { display: flex; gap: 8px; align-items: center; }
.img-field input { flex: 1; }
.img-field .img-prev { width: 44px; height: 44px; border-radius: var(--r-s); background: var(--papel-2) center/cover no-repeat; border: 1px solid var(--linea); flex-shrink: 0; }
.rte { border: 1.5px solid var(--linea); border-radius: var(--r-s); background: var(--blanco); overflow: hidden; }
.rte:focus-within { border-color: var(--negro); box-shadow: 0 0 0 3px rgba(var(--naranja-rgb),.18); }
.rte-bar { display: flex; flex-wrap: wrap; gap: 2px; padding: 6px; background: var(--papel-2); border-bottom: 1px solid var(--linea); }
.rte-bar button { width: 30px; height: 28px; border: none; background: transparent; border-radius: 5px; color: var(--gris); cursor: pointer; font-family: var(--font-inst); font-weight: 700; font-size: 12.5px; }
.rte-bar button:hover { background: var(--blanco); color: var(--tinta); }
.rte-bar .sep { width: 1px; background: var(--linea); margin: 4px 4px; }
.rte-area { min-height: 140px; padding: 12px 14px; font-family: var(--font-near); font-size: 14.5px; line-height: 1.65; color: var(--tinta); outline: none; }
.rte-area:empty::before { content: attr(data-ph); color: #c4bfb5; }
.rte-area h2, .rte-area h3 { font-family: var(--font-inst); font-weight: 700; margin: 14px 0 6px; }
.rte-area h2 { font-size: 20px; } .rte-area h3 { font-size: 16px; }
.rte-area p { margin: 0 0 10px; }
.rte-area ul, .rte-area ol { margin: 0 0 10px; padding-left: 22px; }
.rte-area a { color: var(--naranja); }
.rte-area blockquote { border-left: 3px solid var(--naranja); padding-left: 12px; color: var(--gris); margin: 10px 0; }
.rte-area img { max-width: 100%; border-radius: 8px; }
.admin-inline-list { display: flex; flex-direction: column; gap: 6px; }
.inline-row { display: flex; align-items: center; gap: 8px; padding: 8px 10px; border: 1px solid var(--linea); border-radius: var(--r-m); background: var(--blanco); }
.inline-row input[type="text"] { flex: 1; padding: 7px 10px; border: 1px solid var(--linea); border-radius: var(--r-s); font-family: var(--font-near); font-size: 13px; background: var(--papel); color: var(--tinta); }
.inline-row input[type="color"] { width: 32px; height: 32px; border: 1px solid var(--linea); border-radius: var(--r-s); background: none; padding: 0; cursor: pointer; }
.inline-row .badge { flex-shrink: 0; }
.inline-row .u-right { display: flex; gap: 4px; }
.report-card { display: flex; gap: 14px; align-items: flex-start; padding: 14px 16px; border: 1px solid var(--linea); border-radius: var(--r-m); background: var(--blanco); margin-bottom: 8px; }
.report-card .badge { flex-shrink: 0; }
.report-card b { display: block; font-size: 13.5px; font-family: var(--font-inst); }
.report-card p { font-size: 13px; color: var(--gris); margin-top: 3px; }
.report-card small { display: block; font-size: 11px; color: var(--gris-cl); margin-top: 4px; }
.admin-help { font-size: 12.5px; color: var(--gris-cl); line-height: 1.55; }

/* 10. Responsive */
@media (max-width: 1100px) {
  .nav-links { display: none; }
  .nav .escuela { display: none; }
  .nav .sep-v { display: none; }
  .nav-burger { display: flex; }
  .nav-cta { display: none; }
  .dh-card { grid-column: span 6; }
  .admin-stats { grid-template-columns: repeat(2, 1fr); }
  .form-grid { grid-template-columns: 1fr; }
  .form-side { position: static; }
  .ev-layout { grid-template-columns: 1fr; }
  .ev-layout .cal-widget { max-width: none; }
}
@media (max-width: 900px) {
  .detail-layout { grid-template-columns: 1fr; margin-top: -24px; }
  .detail-side { position: static; }
  .perfil-grid { grid-template-columns: 1fr; }
  .perfil-side { position: static; }
  .it-grid { grid-template-columns: 1fr; }
  .it-grid.img-der .it-img { order: 0; }
  .content-feed.feed-destacado { grid-template-columns: 1fr; }
  .feed-destacado .content-card:first-child { grid-row: auto; }
  .feed-destacado .content-card:not(:first-child) { flex-direction: column; }
  .feed-destacado .content-card:not(:first-child) .cc-img { width: auto; min-width: 0; height: 130px; }
  .feed-destacado .content-card:not(:first-child) .cc-body { padding: 16px 18px; gap: 8px; }
  .feed-destacado .content-card:not(:first-child) .cc-resumen { display: block; }
  .feed-destacado .content-card:not(:first-child) .cc-titulo { font-size: 16px; }
  .admin-grid { grid-template-columns: 1fr; }
  .dash-topbar { padding: 10px 16px; }
  .dash-topbar-search span { display: none; }
  .dash-topbar-search { max-width: 44px; padding: 8px 12px; justify-content: center; }
  .dash-topbar-search kbd { display: none; }
}
@media (max-width: 680px) {
  .dh-card { grid-column: span 12; }
  .cta-inner { flex-direction: column; align-items: flex-start; }
  .page-hero h1 { font-size: 28px; }
  .exp-item { grid-template-columns: 1fr; gap: 4px; }
  .privacy-row { grid-template-columns: 1fr; gap: 6px; }
  .row.three { grid-template-columns: 1fr; }
  .modal { max-height: 100vh; border-radius: var(--r-m); }
  .modal-overlay { padding: 8px; }
  .perfil-hero-inner { align-items: flex-start; }
  .perfil-avatar { width: 92px; height: 92px; font-size: 30px; }
  .search-overlay { padding: 12px 8px; }
  .col-head-link { position: static; display: inline-block; margin-top: 8px; }
  .dash-sidebar-bottom .circuit-toggle { width: auto; margin: 0; }
  .dash-sidebar-bottom .circuit-toggle .circuit-label { display: none; }
  .filters-bar .field { max-width: none; }
  .banner-blk { min-height: 260px; }
}
@media (max-width: 480px) {
  .admin-stats { grid-template-columns: 1fr 1fr; }
  .ev-grid, .op-grid, .tst-grid { grid-template-columns: 1fr; }
  .directorio-grid { grid-template-columns: 1fr; }
}
@media print {
  .nav, .nav-mobile, footer, .dash-sidebar, .dash-topbar, .toast, .circuit-toggle, .btn-primary, .btn-submit, .share-row { display: none !important; }
  body { background: #fff; color: #000; }
}
/* Credencial del hero: columna más ancha, sin inclinación 3D (solo flota). El tamaño proporcional va más abajo. */
.hero-inner:has(.hero-card-wrap) { grid-template-columns: 1fr 1fr; }
.hero-card-wrap .float-card { transform: none; animation-name: floaty-plano; }  /* sin inclinación 3D, solo flota */
@keyframes floaty-plano { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(-12px); } }
@media (prefers-reduced-motion: reduce) { .hero-card-wrap .float-card { animation: none; } }
@media (max-width: 920px) {
  .hero-inner:has(.hero-card-wrap) { grid-template-columns: 1fr; }
  .hero-card-wrap { max-width: 480px; }
}

/*  Credencial del hero escalada de forma proporcional: misma composición que la del panel
    (diseñada a 380px de ancho) pero a mayor tamaño. --u equivale a 1px de ese diseño.*/
.hero-card-wrap .float-card { max-width: 600px; container-type: inline-size; }
.hero-card-wrap .carnet {
  --u: calc(100cqw / 380);
  padding: calc(26 * var(--u)) calc(28 * var(--u)) calc(22 * var(--u));
  border-radius: calc(18 * var(--u));
}
.hero-card-wrap .carnet::after { right: calc(-40 * var(--u)); top: calc(-40 * var(--u)); width: calc(180 * var(--u)); height: calc(180 * var(--u)); }
.hero-card-wrap .carnet-top { margin-bottom: calc(26 * var(--u)); }
.hero-card-wrap .carnet-logo { height: calc(30 * var(--u)); }
.hero-card-wrap .carnet-chip { font-size: calc(9 * var(--u)); padding: calc(5 * var(--u)) calc(9 * var(--u)); letter-spacing: calc(1.5 * var(--u)); }
.hero-card-wrap .carnet-name { font-size: calc(25 * var(--u)); margin-bottom: calc(6 * var(--u)); letter-spacing: calc(-.3 * var(--u)); }
.hero-card-wrap .carnet-role { font-size: calc(13 * var(--u)); min-height: calc(18 * var(--u)); }
.hero-card-wrap .carnet-foot { margin-top: calc(24 * var(--u)); padding-top: calc(18 * var(--u)); }
.hero-card-wrap .carnet-foot .org { font-size: calc(10 * var(--u)); max-width: calc(200 * var(--u)); }
.hero-card-wrap .carnet-num .lab { font-size: calc(8 * var(--u)); letter-spacing: calc(2 * var(--u)); }
.hero-card-wrap .carnet-num .val { font-size: calc(30 * var(--u)); letter-spacing: calc(1 * var(--u)); }

/* Hero más alto: ocupa casi toda la primera pantalla, contenido centrado en vertical */
.hero {
  min-height: clamp(560px, calc(100svh - 72px), 980px);
  padding-top: clamp(48px, 8vw, 110px);
  padding-bottom: clamp(72px, 11vw, 140px);
  display: flex; flex-direction: column; justify-content: center;
}
.hero > .hero-inner { width: 100%; }
@media (max-width: 920px) { .hero { min-height: 0; } }

/* Texto del hero a mayor tamaño */
.hero h1 { font-size: clamp(50px, 7.2vw, 102px); margin-bottom: 30px; }
.hero p.lead { font-size: clamp(17px, 1.75vw, 22px); max-width: 580px; margin-bottom: 40px; }
.hero-actions .btn-primary { font-size: 16px; padding: 19px 32px; }
.hero-actions .btn-secondary { font-size: 16px; padding: 18px 26px; }
.hero-stats .st .n { font-size: 42px; }
.hero-stats .st .l { font-size: 13px; }
.hero-text .stats-bar .stat-num { font-size: clamp(28px, 3.2vw, 42px); }

/* PORTADA, PULIDO VISUAL
   Un único ancho de contenido (1240px) para hero, secciones y footer, bandas de fondo
   alternas en lugar de líneas de 1px, jerarquía tipográfica más marcada y un formulario
   más limpio. Solo afecta a la portada salvo los campos .field (compartidos, mismo estilo).*/

/* Mismo borde izquierdo en toda la página: el contenido mide 1240px como el footer */
.work, .home-section { max-width: calc(1240px + 2 * clamp(20px, 5vw, 56px)); }

/* Hero: espacio equilibrado arriba/abajo y un halo cálido detrás de la credencial */
.hero { border-bottom: 0; padding-top: clamp(48px, 7vw, 96px); padding-bottom: clamp(56px, 8vw, 104px); }
.hero-card-wrap { isolation: isolate; }
.hero-card-wrap::before {
  content: ""; position: absolute; inset: -18% -12%; z-index: -1; pointer-events: none;
  background: radial-gradient(closest-side, rgba(var(--naranja-rgb), .16), transparent 72%);
}
.hero p.lead { color: var(--gris); font-weight: 400; }

/* Sección de inscripción: banda de fondo a sangre completa que la separa del hero */
.work {
  position: relative;
  background: var(--bg2);
  box-shadow: 0 0 0 100vmax var(--bg2);
  clip-path: inset(0 -100vmax);
  padding-top: clamp(64px, 8vw, 112px);
  padding-bottom: clamp(64px, 8vw, 112px);
  gap: clamp(32px, 5vw, 72px);
}
.home-section { border-top: 0; padding-top: clamp(56px, 7vw, 96px); padding-bottom: clamp(56px, 7vw, 96px); }
footer { margin-top: 0; background: var(--papel); }

/* Cabeceras de sección con más presencia */
.col-head { margin-bottom: 28px; }
.col-head h2 { font-size: clamp(30px, 3.4vw, 44px); letter-spacing: -1px; line-height: 1.02; margin-bottom: 14px; }
.col-head p { font-size: 16px; font-weight: 400; line-height: 1.6; max-width: 460px; }

/* Tarjeta del formulario: sombra suave en capas en vez de borde plano */
.work .panel {
  border-color: var(--linea);
  box-shadow: 0 1px 2px rgba(26,25,22,.04), 0 12px 32px -12px rgba(26,25,22,.12);
}
[data-theme="dark"] .work .panel { box-shadow: 0 1px 0 rgba(255,255,255,.03) inset, 0 18px 40px -18px rgba(0,0,0,.7); }

/* Campos: fondo limpio, más alto, foco claro */
.field input, .field select { background-color: var(--blanco); border-width: 1px; border-color: var(--linea-2); padding: 13px 14px; font-size: 15px; }
.field input:hover, .field select:hover { border-color: var(--gris-cl); }
.field input::placeholder { color: var(--gris-cl); opacity: .6; }
.field label { font-size: 11px; letter-spacing: 1.2px; }

/* Estado sin credencial : silueta de la credencial en lugar de la caja rayada */
.work .locked {
  aspect-ratio: 380 / 242;  /* misma proporción que la credencial real */
  display: flex; flex-direction: column; align-items: center; justify-content: center;
  background:
    radial-gradient(120% 90% at 100% 0%, rgba(var(--naranja-rgb), .10), transparent 55%),
    linear-gradient(160deg, var(--bg3), var(--bg));
  border: 1.5px dashed var(--linea-2);
  border-radius: var(--r-l);
  padding: 32px;
}
.work .locked .cubos { opacity: .9; margin-bottom: 18px; }
.work .locked .cubos i { background: var(--naranja); }
.work .locked h3 { font-size: 20px; }
.work .locked p { font-size: 14px; max-width: 320px; }

@media (max-width: 920px) {
  .work { padding-top: 56px; padding-bottom: 56px; }
  .col-head h2 { font-size: 30px; }
}

/* Móvil estrecho: "Iniciar sesión" se oculta de la barra (está en el menú) para que todo quepa. */
@media (max-width: 480px) {
  .nav-actions { gap: 8px; }
  .btn-nav-login:not(.is-user) { display: none; }
  /* con sesión: solo el avatar (el nombre desbordaba la barra); Mi panel también está en el menú */
  .btn-nav-login.is-user span:not(.nav-avatar) { display: none; }
  .btn-nav-login.is-user { padding: 3px; }
}

/* PANEL, RETÍCULA CUADRADA
   Inicio (miembro): 6 tarjetas iguales en 3 × 2, misma altura por fila.
   Resumen (admin): mismo hueco (16px) entre cifras y tarjetas para que los bordes cuadren.*/
.dh-grid { gap: 16px; align-items: stretch; }
.dh-card { min-height: 220px; }
.dh-card .dh-list { flex: 1; }
.dh-card-foot {
  margin-top: auto; padding-top: 12px; border-top: 1px solid var(--linea);
  display: flex; align-items: center; gap: 6px;
  font-size: 12.5px; color: var(--gris); text-decoration: none;
}
.dh-card-foot b { font-family: var(--font-inst); font-size: 15px; font-weight: 800; color: var(--tinta); }
.dh-card-foot span { margin-left: auto; }
.dh-card-foot:hover, .dh-card-foot:hover b { color: var(--naranja); }

.admin-stats { gap: 16px; margin-bottom: 16px; }
.admin-stat { padding: 18px 20px; gap: 4px; }
.admin-stat .n { font-size: 28px; }
.admin-grid > .side-card { margin: 0; }
.chart-bars { justify-content: flex-start; }
.chart-bar { flex: 1 1 0; max-width: 56px; }

/* PANEL, ANCHO COMPLETO
   Las secciones del panel (miembro y admin) ocupan
   todo el ancho disponible; solo los párrafos largos mantienen una medida legible.*/
.dash-section, .dash-section.is-wide,
#section-contenido, #section-miembros, #section-medios, #section-paginas, #section-secciones,
.dash-badge-studio { max-width: none; }
.dash-form, .dash-form.is-wide { max-width: none; }
/* Los formularios largos van en una sola columna con una medida cómoda de lectura. */
.dash-form.is-wide, .dash-form.is-cols { max-width: 880px; }

/* PERFIL Y PRIVACIDAD
   Cabecera con la foto y el progreso, pestañas por apartado y un solo botón de guardar. */
#section-perfil .pf-cabecera, #section-perfil .pf-tabs, #section-perfil .pf-form { max-width: 960px; }
.pf-cabecera { display: grid; grid-template-columns: auto minmax(0, 1fr) 260px; gap: 24px; align-items: center; padding: 22px 24px; background: var(--blanco); border: 1px solid var(--linea); border-radius: var(--r-l); margin-bottom: 22px; }
.pf-foto { position: relative; display: block; cursor: pointer; border-radius: 50%; }
.pf-foto .perfil-avatar { width: 84px; height: 84px; font-size: 26px; border-radius: 50%; box-shadow: none; background-size: cover; background-position: center; }
.pf-foto-cambiar { position: absolute; inset: 0; border-radius: 50%; display: flex; align-items: center; justify-content: center; background: rgba(0,0,0,.55); color: #FFFFFF; font-size: 12px; font-weight: 600; opacity: 0; transition: opacity .15s var(--ease); }
.pf-foto:hover .pf-foto-cambiar, .pf-foto:focus-within .pf-foto-cambiar { opacity: 1; }
.pf-cabecera-nombre { font-family: var(--font-inst); font-size: 22px; font-weight: 800; line-height: 1.2; }
.pf-cabecera-sub { font-size: 14px; color: var(--gris); margin-top: 3px; }
.pf-foto-acciones { display: flex; gap: 12px; align-items: center; margin-top: 8px; font-size: 12px; color: var(--gris-cl); }
.pf-link { background: none; border: 0; padding: 0; font: inherit; font-size: 12.5px; font-weight: 600; color: var(--tinta); text-decoration: underline; text-underline-offset: 3px; cursor: pointer; text-align: left; }
.pf-link:hover { color: var(--naranja); }
.pf-progreso { display: flex; flex-direction: column; gap: 8px; }
.pf-progreso-top { display: flex; justify-content: space-between; font-size: 13px; color: var(--gris); }
.pf-progreso-top b { color: var(--tinta); font-family: var(--font-inst); }
.pf-barra { height: 6px; border-radius: 99px; background: var(--papel-2); overflow: hidden; }
.pf-barra i { display: block; height: 100%; width: 0; background: var(--naranja); border-radius: inherit; transition: width .3s var(--ease); }

.pf-tabs { display: flex; gap: 4px; border-bottom: 1px solid var(--linea); margin-bottom: 26px; overflow-x: auto; scrollbar-width: none; }
.pf-tabs::-webkit-scrollbar { display: none; }
.pf-tab { background: none; border: 0; border-bottom: 2px solid transparent; margin-bottom: -1px; padding: 12px 14px; font: inherit; font-size: 14px; font-weight: 600; color: var(--gris); cursor: pointer; white-space: nowrap; transition: color .15s var(--ease), border-color .15s var(--ease); }
.pf-tab:hover { color: var(--tinta); }
.pf-tab.on { color: var(--tinta); border-bottom-color: var(--naranja); }

.pf-panel { animation: rise .25s var(--ease); }
.pf-panel .row { margin-bottom: 16px; }
.pf-panel .hint { display: block; margin-top: 6px; font-size: 12px; color: var(--gris-cl); }
.pf-panel .is-readonly { opacity: .65; cursor: default; }
.pf-mas { margin: 4px 0 22px; }
.pf-mas > summary { cursor: pointer; font-size: 13.5px; font-weight: 600; color: var(--gris); list-style: none; display: inline-flex; align-items: center; gap: 8px; padding: 4px 0; }
.pf-mas > summary::-webkit-details-marker { display: none; }
.pf-mas > summary::before { content: "+"; display: inline-flex; align-items: center; justify-content: center; width: 20px; height: 20px; border: 1.5px solid var(--linea-2); border-radius: 50%; font-size: 13px; line-height: 1; }
.pf-mas[open] > summary::before { content: "\2212"; }
.pf-mas > summary:hover { color: var(--tinta); }
.pf-mas[open] > summary { margin-bottom: 14px; }

.pf-bloque { border-top: 1px solid var(--linea); padding-top: 20px; margin-top: 8px; margin-bottom: 18px; }
.pf-bloque-head { display: flex; justify-content: space-between; align-items: center; margin-bottom: 12px; }
.pf-bloque-head h3, .pf-subtitulo { font-family: var(--font-inst); font-size: 16px; font-weight: 700; }
.pf-subtitulo { margin: 26px 0 12px; }
.pf-bloque .repeater { display: flex; flex-direction: column; gap: 8px; }
.pf-bloque .repeater:empty::before { content: attr(data-vacio); font-size: 13px; color: var(--gris-cl); }
.pf-bloque .rep-item { padding: 0; gap: 0; background: var(--blanco); }
.pf-bloque .rep-head { gap: 10px; padding: 6px 8px 6px 4px; }
.rep-resumen { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 2px; background: none; border: 0; padding: 8px 10px; text-align: left; font: inherit; cursor: pointer; border-radius: var(--r-s); }
.rep-resumen:hover { background: var(--papel); }
.pf-bloque .rep-head span { font-family: inherit; letter-spacing: 0; text-transform: none; }
.pf-bloque .rep-head .rep-titulo { font-size: 14px; font-weight: 600; color: var(--tinta); }
.pf-bloque .rep-head .rep-sub { font-size: 12.5px; font-weight: 400; color: var(--gris); }
.rep-titulo { font-size: 14px; font-weight: 600; color: var(--tinta); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.rep-sub { font-size: 12.5px; color: var(--gris); }
.rep-sub:empty { display: none; }
.rep-acciones { display: flex; gap: 4px; }
.rep-cuerpo { display: none; padding: 6px 14px 14px; border-top: 1px solid var(--linea); }
.rep-item.is-open .rep-cuerpo { display: block; }
.rep-cuerpo .row { margin: 10px 0 0; }

.pf-niveles { display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; }
.pf-nivel { position: relative; display: flex; flex-direction: column; gap: 6px; padding: 16px 16px 16px 44px; border: 1.5px solid var(--linea); border-radius: var(--r-m); background: var(--blanco); cursor: pointer; transition: border-color .15s var(--ease), background .15s var(--ease); }
.pf-nivel:hover { border-color: var(--linea-2); }
.pf-nivel input { position: absolute; left: 16px; top: 18px; width: 16px; height: 16px; accent-color: var(--negro); margin: 0; }
.pf-nivel b { font-size: 14.5px; }
.pf-nivel b em { font-style: normal; font-size: 10.5px; font-weight: 700; letter-spacing: .5px; text-transform: uppercase; color: var(--naranja); margin-left: 6px; }
.pf-nivel span { font-size: 12.5px; line-height: 1.5; color: var(--gris); }
.pf-nivel:has(input:checked) { border-color: var(--tinta); background: var(--papel); }
.pf-niveles.is-personalizado::after { content: "Tienes una configuración personalizada."; grid-column: 1 / -1; font-size: 12.5px; color: var(--gris); }
#pf-mas-privacidad { margin-top: 18px; }
#section-perfil .privacy-row { grid-template-columns: 1fr auto; padding: 8px 0; }
#section-perfil .privacy-row b { font-weight: 500; }
.pf-seg { display: inline-flex; padding: 3px; gap: 2px; border-radius: 99px; background: var(--papel-2); }
.pf-seg label { cursor: pointer; }
.pf-seg input { position: absolute; opacity: 0; pointer-events: none; }
.pf-seg span { display: block; padding: 6px 12px; border-radius: 99px; font-size: 12.5px; font-weight: 600; color: var(--gris); transition: background .15s var(--ease), color .15s var(--ease); }
.pf-seg input:checked + span { background: var(--blanco); color: var(--tinta); box-shadow: 0 1px 3px rgba(0,0,0,.12); }
.pf-seg input:focus-visible + span { outline: 2px solid var(--naranja); outline-offset: 1px; }
.pf-nota { font-size: 12.5px; color: var(--gris-cl); margin-top: 16px; }
.pf-guardar-mentor { max-width: 320px; margin-top: 22px; }
#section-perfil .sticky-save { margin-top: 26px; }
#section-perfil .sticky-save[hidden] { display: none; }

@media (max-width: 900px) {
  .pf-cabecera { grid-template-columns: auto minmax(0, 1fr); }
  .pf-progreso { grid-column: 1 / -1; }
  .pf-niveles { grid-template-columns: 1fr; }
}
@media (max-width: 560px) {
  .pf-cabecera { padding: 18px; gap: 16px; }
  .pf-foto .perfil-avatar { width: 64px; height: 64px; font-size: 20px; }
  #section-perfil .privacy-row { grid-template-columns: 1fr; gap: 8px; }
}

/* FICHAS DE DETALLE A MÁS ANCHO
   Noticias, historias, eventos y oportunidades: artículo y barra lateral hasta 1400px. */
.detail-layout { max-width: 1400px; grid-template-columns: minmax(0, 1fr) 360px; gap: 32px; }
.detail-main .article-content { max-width: 78ch; }
.detail-main .article-resumen { max-width: 70ch; }
.share-row--side { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
.share-row--side .btn-ghost { width: 100%; justify-content: center; text-decoration: none; }
.detail-side .tags { display: flex; flex-wrap: wrap; gap: 8px; }
@media (max-width: 900px) { .detail-layout { grid-template-columns: 1fr; } }

/* INTERRUPTOR DE TEMA, REDISEÑO
   Mismo lenguaje de esquema eléctrico (dos bornes, cable y cuchilla), pero:
   el cable va en la parte baja de la caja para que la cuchilla tenga sitio al abrirse;
   el ángulo de apertura está calculado para que la punta nunca salga de la caja
     (cuchilla 48px, sen 22° ≈ 18px < 22px de altura libre) y además hay overflow:hidden;
   72×30px en vez de 52×24 para que se lea bien y sea fácil de pulsar.
   Claro = circuito cerrado (bornes encendidos); oscuro = abierto (bornes apagados).*/
.circuit-toggle { gap: 10px; padding: 4px 14px 4px 10px; min-height: 40px; }
.circuit-toggle:focus-visible { outline: 2px solid var(--naranja); outline-offset: 2px; }
.cs-wrap { width: 72px; height: 30px; overflow: hidden; border-radius: 6px; }
.cs-line { top: 22px; transform: none; height: 2px; left: 0; right: 0; opacity: .3; }
/* cable vivo entre los bornes: solo se ve con el circuito cerrado */
.cs-wrap::before {
  content: ""; position: absolute; top: 22px; left: 12px; width: 48px; height: 2px;
  background: var(--naranja); opacity: .35; transition: opacity .3s;
}
.cs-pad { width: 8px; height: 8px; top: 23px; }
.cs-pad-l { left: 12px; }
.cs-pad-r { left: 60px; }
.cs-arm {
  left: 12px; top: 22px; width: 48px; height: 2.5px;
  transform: rotate(0deg); transform-origin: 0 50%;
}
.cs-arm::after { right: -4px; width: 7px; height: 7px; }
.circuit-toggle.is-dark .cs-arm { transform: rotate(-22deg); }
.circuit-toggle.is-dark .cs-wrap::before { opacity: 0; }
.circuit-toggle.is-dark .cs-arm::after { background: var(--ink3); box-shadow: none; }
/* barra lateral del panel: ocupa el ancho, etiqueta legible y sin desbordar */
.dash-sidebar-bottom .circuit-toggle { width: 100%; min-width: 0; padding: 6px 12px; }
.dash-sidebar-bottom .circuit-label { font-size: 11.5px; overflow: hidden; text-overflow: ellipsis; }

/* NAVEGACIÓN VOLVER UNIFICADA
   Un único componente en todas las fichas (web pública y panel): siempre arriba a la izquierda,
   alineado con el borde del contenido.*/
.back-bar { max-width: 1400px; margin: 0 auto; padding: 18px clamp(16px, 4vw, 40px) 14px; }
.back-link {
  display: inline-flex; align-items: center; gap: 8px;
  font-family: var(--font-near); font-size: 13.5px; font-weight: 700;
  color: var(--gris); text-decoration: none; background: none; border: 0; padding: 6px 0; cursor: pointer;
}
.back-link svg { transition: transform .15s var(--ease); }
.back-link:hover { color: var(--tinta); }
.back-link:hover svg { transform: translateX(-3px); }
.dash-section .back-bar { max-width: none; padding: 0 0 18px; }
/* En el panel las fichas no llevan el desplazamiento negativo sobre la cabecera cuando no hay imagen */
.dash-section .detail-layout { max-width: none; padding: 0; }

/* PERFIL, CABECERA EN TARJETA
   La cabecera del perfil es una tarjeta más, con el mismo ancho que la retícula de debajo. */
.perfil-hero { background: none; border: 0; padding: 0 clamp(16px, 4vw, 40px); }
.perfil-hero-inner {
  max-width: 1320px; background: var(--blanco); border: 1px solid var(--linea); border-top: 4px solid var(--naranja);
  border-radius: var(--r-l); padding: clamp(22px, 3vw, 32px); align-items: center;
}
.perfil-avatar { width: 112px; height: 112px; font-size: 36px; box-shadow: none; }
.perfil-grid { max-width: calc(1320px + 2 * clamp(16px, 4vw, 40px)); padding: 20px clamp(16px, 4vw, 40px) 60px; grid-template-columns: minmax(0, 1fr) 340px; gap: 20px; }
.dash-section .perfil-hero, .dash-section .perfil-grid { padding-left: 0; padding-right: 0; max-width: none; }
.dash-section .perfil-hero-inner { max-width: none; }
@media (max-width: 900px) { .perfil-grid { grid-template-columns: 1fr; } .perfil-side { position: static; } }

/* BOTÓN AÑADIR A GOOGLE CALENDAR */
.btn-gcal {
  display: inline-flex; align-items: center; justify-content: center; gap: 8px;
  height: 40px; padding: 0 14px; border: 1px solid var(--linea-2); border-radius: var(--r-s);
  background: var(--blanco); color: var(--tinta); text-decoration: none; font-size: 12.5px; font-weight: 700;
  transition: border-color .12s, transform .12s;
}
.btn-gcal:hover { border-color: var(--tinta); transform: translateY(-1px); }
.btn-gcal svg { width: 22px; height: 22px; flex-shrink: 0; }
.cal-row { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; margin-top: 12px; }
/* Pie de la ficha: acciones secundarias a su tamaño natural, alineadas a la izquierda */
.detail-main .article-foot .share-row { display: flex; flex-wrap: wrap; justify-content: flex-start; gap: 8px; }
.detail-main .article-foot .share-row .btn-ghost { flex: 0 0 auto; padding: 10px 16px; }

/* SIN BARRAS DE DESPLAZAMIENTO
   Se ocultan las barras en toda la aplicación (página, barra lateral del panel, modales, listas…)
   pero todo sigue desplazándose con rueda, trackpad, táctil y teclado.*/
* { scrollbar-width: none; -ms-overflow-style: none; }
*::-webkit-scrollbar { display: none; width: 0; height: 0; }

/* Red del hero algo más visible: se atenúa menos detrás del texto */
.hero-net {
  -webkit-mask-image: linear-gradient(90deg, rgba(0,0,0,.5) 0%, rgba(0,0,0,.7) 30%, #000 58%);
          mask-image: linear-gradient(90deg, rgba(0,0,0,.5) 0%, rgba(0,0,0,.7) 30%, #000 58%);
}
@media (max-width: 920px) {
  .hero-net {
    -webkit-mask-image: radial-gradient(150% 90% at 70% 18%, #000 0%, rgba(0,0,0,.55) 75%, rgba(0,0,0,.2) 100%);
            mask-image: radial-gradient(150% 90% at 70% 18%, #000 0%, rgba(0,0,0,.55) 75%, rgba(0,0,0,.2) 100%);
  }
}
/* En tema claro la red se difumina aún menos detrás del texto (en oscuro ya se ve bien) */
:root:not([data-theme="dark"]) .hero-net {
  -webkit-mask-image: linear-gradient(90deg, rgba(0,0,0,.7) 0%, rgba(0,0,0,.85) 30%, #000 58%);
          mask-image: linear-gradient(90deg, rgba(0,0,0,.7) 0%, rgba(0,0,0,.85) 30%, #000 58%);
}

/* CREDENCIAL DORADA (solo embajadores)
   Acabado metálico: degradado de oro con reflejo diagonal, borde grabado y tinta oscura.
   Mantiene su esquema fijo en cualquier tema, como el resto de credenciales.*/
.carnet--dorado {
  --dorado-tinta: #2B2110;
  background:
    linear-gradient(115deg, rgba(255,255,255,0) 30%, rgba(255,250,228,.55) 45%, rgba(255,255,255,0) 60%),
    linear-gradient(135deg, #8C6A22 0%, #D9B45A 22%, #F6E3A4 42%, #C99A3B 62%, #F2D98E 80%, #9E7627 100%);
  color: var(--dorado-tinta);
  border: 1px solid #A57E2E;
  box-shadow: inset 0 0 0 1px rgba(255,248,220,.55), inset 0 0 0 5px rgba(120,88,26,.18), 0 30px 60px -22px rgba(92,66,14,.55);
}
.carnet--dorado::after { background: radial-gradient(circle, rgba(255,251,235,.55), transparent 70%); }
.carnet--dorado .carnet-chip { border-color: rgba(43,33,16,.45); color: var(--dorado-tinta); background: rgba(255,248,220,.35); }
.carnet--dorado .carnet-role { color: #5C4719; }
.carnet--dorado .carnet-foot { border-color: rgba(43,33,16,.25); }
.carnet--dorado .carnet-foot .org { color: #5C4719; }
.carnet--dorado .carnet-num .lab { color: #5C4719; }
.carnet--dorado .carnet-num .val { color: var(--dorado-tinta); text-shadow: 0 1px 0 rgba(255,248,220,.6); }
/* Pestaña Dorada del estudio de credencial */
.tab.tab--oro { background: linear-gradient(135deg, #C99A3B, #F2D98E 55%, #B8872D); color: #2B2110; border-color: #A57E2E; }
.tab.tab--oro.on { box-shadow: 0 0 0 2px var(--tinta); color: #1A1406; }
.tabs.tabs--4 { grid-template-columns: repeat(4, 1fr); }

/* Panel (miembro y administración): sin los cubos decorativos junto a los títulos */
.dash-body .cubos { display: none !important; }
/* botón más opciones con el icono vertical centrado */
[data-dropdown] > svg { margin: 0 auto; }

/* Interruptor: el cable solo va de cada extremo a su borne. Entre los bornes no hay cable:
   con el circuito cerrado lo cubre la cuchilla; abierto (tema oscuro) queda el hueco, como en un esquema real.*/
.cs-line { background: linear-gradient(90deg, var(--ink3) 0 12px, transparent 12px 60px, var(--ink3) 60px 100%); }
