/* ══════════════════════════════════════════════════════════════════
   AULA.CSS · la piel del aula (fase 24-f)
   Solo se encola en contexto de academia (functions.php, bloque 11-c),
   SIEMPRE la última: redefine las fichas del sistema 4.0 de Tutor con
   la paleta cerrada del códice (SISTEMA.md §1) y no inventa un color.
   El tema de Tutor queda forzado a «dark» en <html> (una sola mirada):
   estas fichas pintan encima igual en los tres estados.
   ══════════════════════════════════════════════════════════════════ */

/* ── 1 · LAS FICHAS DE TUTOR, EN NUESTRA PALETA ─────────────────────
   El panel 4.0 consume ~190 fichas --tutor-*; aquí se mapean las que
   pintan (superficies, texto, iconos, bordes, botones, pestañas). Las
   «exception» de fábrica (cian, rosa, púrpura, ámbar) mueren en oro y
   crema: la paleta es cerrada. Éxito = oro; error = borgoña SOLO en
   borde y lavado, nunca en una palabra (1,91:1, §2 del códice). */
:root,
[data-tutor-theme=light],
[data-tutor-theme=dark],
[data-tutor-theme=system]{
  --tutor-surface-base:#0A0C10;
  --tutor-surface-l1:#0D1017;
  --tutor-surface-l1-hover:#171B25;
  --tutor-surface-l2:#11141C;
  --tutor-surface-l2-hover:#171B25;
  --tutor-surface-l3:#11141C;
  --tutor-surface-sidebar-l1:#0A0C10;
  --tutor-surface-dark:#11141C;
  --tutor-surface-exception2-secondary:#11141C;
  --tutor-surface-exception3-highlight:rgba(203,154,49,.1);
  --tutor-surface-exception6:#11141C;
  --tutor-surface-exception7:rgba(203,154,49,.1);
  --tutor-surface-brand-dark:#0D1017;
  --tutor-surface-brand-primary:#CB9A31;
  --tutor-surface-brand-primary-2:#CB9A31;
  --tutor-surface-brand-secondary:rgba(203,154,49,.1);
  --tutor-surface-brand-tertiary:rgba(203,154,49,.06);
  --tutor-surface-brand-quaternary:rgba(203,154,49,.1);
  --tutor-surface-warning:rgba(203,154,49,.06);
  --tutor-surface-warning-hover:rgba(203,154,49,.1);
  --tutor-surface-warning-hover-2:rgba(203,154,49,.1);
  --tutor-surface-success:rgba(203,154,49,.1);
  --tutor-surface-critical:rgba(122,30,46,.18);

  --tutor-text-primary:#F0EAD8;
  --tutor-text-primary-inverse:#0A0C10;
  --tutor-text-secondary:#C8BFA6;
  --tutor-text-subdued:rgba(200,191,166,.66);
  --tutor-text-disabled:rgba(200,191,166,.62);
  --tutor-text-light:#F0EAD8;
  --tutor-text-brand:#CB9A31;
  --tutor-text-brand-hover:#FFC13B;
  --tutor-text-brand-secondary:#FFC13B;
  --tutor-text-success:#CB9A31;
  --tutor-text-critical:#F0EAD8;
  --tutor-text-critical-hover:#FFC13B;
  --tutor-text-warning:#CB9A31;
  --tutor-text-caution:#CB9A31;
  --tutor-text-exception1:#CB9A31;
  --tutor-text-exception2:#CB9A31;
  --tutor-text-exception4:#FFC13B;
  --tutor-text-exception5:#CB9A31;
  --tutor-text-highlighted-hover:#171B25;

  --tutor-icon-idle:#C8BFA6;
  --tutor-icon-idle-inverse:#0A0C10;
  --tutor-icon-hover:#F0EAD8;
  --tutor-icon-secondary:rgba(200,191,166,.66);
  --tutor-icon-subdued:rgba(200,191,166,.62);
  --tutor-icon-disabled:rgba(200,191,166,.62);
  --tutor-icon-brand:#CB9A31;
  --tutor-icon-brand-hover:#FFC13B;
  --tutor-icon-brand-secondary:rgba(203,154,49,.1);
  --tutor-icon-exception1:#CB9A31;
  --tutor-icon-exception2:#CB9A31;
  --tutor-icon-exception4:#FFC13B;
  --tutor-icon-exception5:#CB9A31;
  --tutor-icon-success-primary:#CB9A31;
  --tutor-icon-success-secondary:#FFC13B;
  --tutor-icon-caution:#FFC13B;
  --tutor-icon-critical:#C8BFA6;
  --tutor-icon-critical-hover:#F0EAD8;
  --tutor-icon-warning:#CB9A31;
  --tutor-icon-warning-secondary:#FFC13B;

  --tutor-border-idle:rgba(200,191,166,.14);
  --tutor-border-idle2:rgba(200,191,166,.16);
  --tutor-border-hover:rgba(200,191,166,.3);
  --tutor-border-tertiary:rgba(200,191,166,.3);
  --tutor-border-inverse:rgba(200,191,166,.16);
  --tutor-border-brand:#CB9A31;
  --tutor-border-brand-secondary:rgba(203,154,49,.18);
  --tutor-border-brand-tertiary:rgba(203,154,49,.4);
  --tutor-border-dark:rgba(200,191,166,.3);
  --tutor-border-success:#CB9A31;
  --tutor-border-success-secondary:#CB9A31;
  --tutor-border-warning:rgba(203,154,49,.4);
  --tutor-border-warning-secondary:#CB9A31;
  --tutor-border-warning-tertiary:#CB9A31;
  --tutor-border-error:#7A1E2E;
  --tutor-border-error-secondary:#7A1E2E;
  --tutor-border-error-tertiary:#7A1E2E;
  --tutor-border-exception6:rgba(203,154,49,.4);

  --tutor-button-primary:#CB9A31;
  --tutor-button-primary-hover:#FFC13B;
  --tutor-button-primary-focused:#FFC13B;
  --tutor-button-primary-disabled:rgba(203,154,49,.4);
  --tutor-button-primary-soft:rgba(203,154,49,.1);
  --tutor-button-primary-soft-hover:rgba(203,154,49,.18);
  --tutor-button-primary-soft-focused:rgba(203,154,49,.1);
  --tutor-button-disabled:#11141C;
  --tutor-button-destructive:#7A1E2E;
  --tutor-button-destructive-hover:#7A1E2E;
  --tutor-button-destructive-focused:#7A1E2E;
  --tutor-button-destructive-soft:rgba(122,30,46,.18);
  --tutor-button-destructive-soft-hover:rgba(122,30,46,.28);
  --tutor-button-destructive-soft-focused:rgba(122,30,46,.18);
  --tutor-button-success:#CB9A31;
  --tutor-button-success-hover:#FFC13B;
  --tutor-button-success-focused:#CB9A31;
  --tutor-button-secondary:#11141C;
  --tutor-button-secondary-hover:#171B25;
  --tutor-button-secondary-focused:#11141C;
  --tutor-button-outline-inverse:#0D1017;
  --tutor-button-outline-hover:#171B25;
  --tutor-button-outline-focused-inverse:#0A0C10;
  --tutor-button-ghost-hover:#171B25;

  --tutor-tab-sidebar-l2:#F0EAD8;
  --tutor-tab-sidebar-l2-hover:#171B25;
  --tutor-tab-sidebar-l2-active:#11141C;
  --tutor-tab-sidebar-l4-hover:#171B25;
  --tutor-tab-sidebar-l4-active:#11141C;
  --tutor-tab-l3:#11141C;
  --tutor-tab-l3-hover:#171B25;
  --tutor-tab-l3-active:#11141C;
  --tutor-tab-l3-active-hover:#171B25;

  --tutor-actions-success-primary:#CB9A31;
  --tutor-actions-success-secondary:#FFC13B;
  --tutor-actions-success-tertiary:rgba(203,154,49,.1);
  --tutor-actions-success-exception:rgba(203,154,49,.1);
  --tutor-actions-warning-primary:#FFC13B;
  --tutor-actions-warning-secondary:rgba(203,154,49,.1);
  --tutor-actions-warning-tertiary:rgba(203,154,49,.06);
  --tutor-actions-critical-primary:#7A1E2E;
  /* 24-i · la gráfica del panel LEE ESTAS FICHAS (el guion consulta las
     mismas variables que los chips de la leyenda — el morado era
     actions-exception5 sin mapear; el censo de la 24-h buscó mal y se
     dice). Inscritos=crema · en progreso=oro alto · completado=oro ·
     cancelado=borgoña (presente, como manda la casa). */
  --tutor-actions-exception5:#C8BFA6;
  --tutor-actions-caution:#FFC13B;
  --tutor-actions-brand-primary:#CB9A31;
  --tutor-actions-brand-secondary:rgba(203,154,49,.18);

  /* Las huérfanas: fichas que el panel consume y el kit no define. */
  --tutor-brand-400:#FFC13B;
  --tutor-brand-450:#CB9A31;
  --tutor-brand-500:#CB9A31;
  --tutor-brand-600:#CB9A31;
  --tutor-brand-700:#FFC13B;
  --tutor-brand-800:rgba(203,154,49,.4);
  --tutor-brand-900:rgba(203,154,49,.18);
  --tutor-brand-950:rgba(203,154,49,.1);
  --tutor-button-radius:0;
  --tutor-button-font-weight:600;
  --tutor-button-border-shadow:none;
  --tutor-button-primary-border-shadow:none;
  --tutor-button-secondary-border-shadow:inset 0 0 0 1px rgba(200,191,166,.14);
  --tutor-button-secondary-border-shadow-hover:inset 0 0 0 1px rgba(200,191,166,.3);
  --tutor-button-secondary-border-shadow-focused:inset 0 0 0 1px #CB9A31;
  --tutor-button-secondary-border-shadow-disabled:inset 0 0 0 1px rgba(200,191,166,.14);
  --tutor-button-outline-border-shadow:inset 0 0 0 1px rgba(203,154,49,.4);
  --tutor-button-outline-border-shadow-hover:inset 0 0 0 1px #CB9A31;
  --tutor-button-outline-border-shadow-focused:inset 0 0 0 1px #FFC13B;
  --tutor-button-outline-border-shadow-disabled:inset 0 0 0 1px rgba(200,191,166,.14);
  --tutor-button-ghost-border-shadow:none;
  --tutor-button-ghost-border-shadow-hover:none;
  --tutor-button-ghost-border-shadow-disabled:none;
  --tutor-button-destructive-border-shadow:none;
  --tutor-button-destructive-border-shadow-hover:none;
  --tutor-button-destructive-border-shadow-focused:none;
  --tutor-button-destructive-border-shadow-disabled:none;
  --tutor-site-header-offset:0px;

  /* Tipografía: el panel hereda las cuatro familias del contrato.
     Cormorant para lo que manda, Inter para el cuerpo. */
  --tutor-font-family-heading:'Cormorant Garamond', Georgia, serif;
  --tutor-font-family-body:'Inter', system-ui, sans-serif;
}

/* ── 2 · RADIO 0 (DA-1: el radio de superficie es 0 en todo el sitio;
   la única excepción del contrato es .skip y el anillo de foco). El
   kit trae 12px en tarjetas y 6px en botones: fuera. El monograma del
   avatar pasa a lámina cuadrada, como toda superficie del códice. */
.tutor-dashboard-layout *,
.tutor-login-wrap, .tutor-login-wrap *{border-radius:0 !important}

/* ── 3 · LOS CAMPOS (bloque 0 · esto es contraste, no gusto) ────────
   La receta es la de .field de sistema.css (Colabora): --surface-card,
   filete --border-hairline, foco en oro, placeholder AA. Y el
   autorrelleno del navegador se pinta por dentro: sin blanco radiactivo
   tampoco cuando Chrome rellena. */
.tutor-dashboard-layout input:not([type=checkbox]):not([type=radio]):not([type=range]),
.tutor-dashboard-layout textarea,
.tutor-dashboard-layout select,
.tutor-login-wrap input:not([type=checkbox]):not([type=radio]){
  background-color:#11141C;
  color:#F0EAD8;
  border:1px solid rgba(200,191,166,.14);
  transition:border-color .35s, background-color .35s;
}
.tutor-dashboard-layout input:focus,
.tutor-dashboard-layout textarea:focus,
.tutor-dashboard-layout select:focus,
.tutor-login-wrap input:focus{outline:none;border-color:#CB9A31}
.tutor-dashboard-layout ::placeholder,
.tutor-login-wrap ::placeholder{color:rgba(200,191,166,.62);opacity:1}
.tutor-dashboard-layout input:-webkit-autofill,
.tutor-login-wrap input:-webkit-autofill{
  -webkit-box-shadow:0 0 0 1000px #11141C inset;
  -webkit-text-fill-color:#F0EAD8;
  caret-color:#F0EAD8;
}

/* ── 4 · LA CAPA QUE SE DILUÍA (bloque 1) ───────────────────────────
   Lo emergente se eleva como el sitio eleva: fondo --surface-raised y
   marco de oro (.layer.sealed), sin sombra, que el códice no las usa. */
.tutor-dashboard-layout dialog,
.tutor-dashboard-layout [role=dialog],
.tutor-dashboard-layout [class*=modal],
.tutor-dashboard-layout [class*=popover],
.tutor-dashboard-layout [class*=dropdown-menu],
.tutor-dashboard-layout [class*=-menu][class*=open]{
  background-color:#0D1017;
  border:1px solid rgba(203,154,49,.4);
  box-shadow:none;
}
.tutor-login-wrap{
  background-color:#0D1017;
  border:1px solid rgba(203,154,49,.4);
  box-shadow:none;
  padding:clamp(2rem,4vw,3rem);
  margin-block:clamp(3.5rem,7vh,6rem);
}

/* ── 5 · EL AIRE (bloque 2) · el compás del sitio, a escala de panel */
.tutor-dashboard-content{padding:clamp(1.6rem,3vw,3rem)}
.tutor-dashboard-layout .tutor-stat-card{padding:clamp(1.1rem,2vw,1.6rem)}
.tutor-dashboard-sidebar{border-right:1px solid rgba(200,191,166,.14)}
.tutor-dashboard-layout button + button,
.tutor-dashboard-layout a + button,
.tutor-dashboard-layout button + a{margin-left:.6rem}

/* ── 6 · LA JERARQUÍA (bloque 3) ────────────────────────────────────
   Manda una cosa por pantalla: el título en Cormorant; las cifras, en
   la voz de las cifras del sitio; las etiquetas, en Jost grabado. Los
   botones hablan Montserrat, como en todo el sitio (DA-2). */
.tutor-dashboard-layout h1,
.tutor-dashboard-layout h2,
.tutor-dashboard-layout [class*=page-title],
.tutor-dashboard-layout [class*=screen-title]{
  font-family:'Cormorant Garamond', Georgia, serif;
  font-weight:500;letter-spacing:0;
}
.tutor-dashboard-layout .tutor-stat-card-value{
  /* Cormorant subconjuntada trae SOLO cifras antiguas: un «1» suelto se
     lee «I» (en los «01» de puerta funciona; en un dato, no). Los DATOS
     hablan Inter, la voz del cuerpo. */
  font-family:'Inter', system-ui, sans-serif;
  font-weight:500;font-size:clamp(1.6rem,2.2vw,2rem);line-height:1.1;
  color:#F0EAD8;font-variant-numeric:tabular-nums;
}
.tutor-dashboard-layout .tutor-stat-card-title{
  font-family:'Jost', system-ui, sans-serif;
  font-size:.656rem;font-weight:400;text-transform:uppercase;
  letter-spacing:.32em;color:rgba(200,191,166,.66);
}
.tutor-dashboard-layout .tutor-btn,
.tutor-dashboard-layout button[class*=tutor-btn],
.tutor-login-wrap button[type=submit]{
  font-family:'Montserrat', system-ui, sans-serif;
  font-weight:600;letter-spacing:.16em;text-transform:uppercase;
  font-size:.69rem;
}

/* ── 7 · REMIENDOS MEDIDOS ──────────────────────────────────────────
   a) El emoji del saludo (img.emoji lo pinta WordPress): fuera — el
      copy del saludo espera la aduana del bloque 5.
   b) La portada azul de fábrica del perfil: muere en lámina lisa
      --surface-card hasta que exista una portada nuestra.
   c) El monograma del avatar: oro sobre suelo, no azul de fábrica. */
/* (24-l) img.emoji MURIÓ: el 👋 del saludo se quitó del ORIGEN
   (override de components/header.php) y la regla escondía de paso
   cualquier emoji que un alumno escribiera en su contenido. */
/* (24-n) AFINADA: la regla fundía TODA portada — también la que el
   alumno subía (el guardado devolvía success y la hoja la borraba:
   el aviso decía la verdad). Ahora muere SOLO la de fábrica (assets
   del plugin); la portada del usuario, desde uploads, SE VE. */
.tutor-dashboard-layout [class*=cover]:not(img)[style*="plugins/tutor"],
.tutor-dashboard-layout [class*=cover]:not(img):not([style*="background"]){
  background-image:none !important;
  background-color:#11141C !important;
}
.tutor-dashboard-layout [class*=cover] img[src*="plugins/tutor"],
.tutor-dashboard-layout img[src*=default-cover]{display:none}
.tutor-dashboard-layout [class*=avatar]{
  background-color:rgba(203,154,49,.1);color:#CB9A31;
}

/* ── 8 · SEGUNDA PASADA, CON EL DOM DELANTE (mismo día) ─────────────
   a) El cian del inicio era un stroke EN LÍNEA del SVG (rgb(0,172,194)
      escrito en el atributo): se doma con currentColor y el color del
      contenedor — oro, como todo acento.
   b) La portada azul es .tutor-profile-card-header con su webp de
      fábrica (y su gemela en Ajustes): lámina lisa --surface-card.
   c) Cormorant trae versalitas antiguas: la «1» parecía «I» — cifras
      alineadas (lnum) en los valores.
   d) La biografía (editor) conservaba letra y borde blancos por una
      regla más específica.
   e) El activo de la barra lleva filete de oro, como los estados del
      sitio (filete, no elevación).
   f) La miniatura gris de fábrica del curso, invisible: la lámina del
      propio panel es el fondo (la portada real la pondrá el contenido). */
.tutor-stat-card-icon{color:#CB9A31 !important}
.tutor-stat-card-icon svg,
.tutor-stat-card-icon svg *{stroke:currentColor;color:inherit}
/* (24-n) AFINADA como su hermana del §7: solo la portada DE FÁBRICA
   (assets del plugin o sin fondo propio) muere en lámina — la del
   usuario, desde uploads, SE VE. */
body.tutor-lms [class*=profile-card-header][style*="plugins/tutor"],
body.tutor-lms [class*=profile-card-header]:not([style*="background"]),
body.tutor-lms [class*=cover-photo]:not(img)[style*="plugins/tutor"],
body.tutor-lms [class*=cover-photo]:not(img):not([style*="background"]){
  background-image:none !important;
  background-color:#11141C !important;
}
.tutor-dashboard-layout .tutor-stat-card-value{
  font-variant-numeric:tabular-nums;   /* la receta de .figure b (portada) */
}
body.tutor-lms textarea,
body.tutor-lms [contenteditable]{
  color:#F0EAD8 !important;
  background-color:#11141C !important;
  border-color:rgba(200,191,166,.14) !important;
}
.tutor-dashboard-sidebar a[aria-current],
.tutor-dashboard-sidebar [class*=active]{
  box-shadow:inset 2px 0 0 #CB9A31;
}
.tutor-dashboard-layout img[src*=placeholder]{visibility:hidden}

/* ── 9 · EL RECINTO (fase 24-g) ───────────────────────────────────────
   Quien ha pagado entra a un sitio, no a otra sección de la web: la
   cabecera y el pie del sitio no se sirven en el recinto (la clase la
   pone functions.php, bloque 19). Arriba, SOLO el logotipo a portada;
   en el acceso anónimo, un pie mínimo con lo legal en Jost grabado. */
body.recinto-schola header.elementor-location-header,
body.recinto-schola footer.elementor-location-footer{display:none}
.recinto-barra{
  display:flex;align-items:center;
  padding:1.1rem clamp(1.4rem,5vw,4rem) 0;
}
.recinto-barra img{height:44px;width:auto}
.recinto-legal{
  display:flex;gap:.7rem;justify-content:center;align-items:center;
  padding:2.2rem 1rem 2.8rem;
  font-family:'Jost', system-ui, sans-serif;font-size:.656rem;
  letter-spacing:.32em;text-transform:uppercase;
}
.recinto-legal a{color:rgba(200,191,166,.66);text-decoration:none;transition:color .35s}
.recinto-legal a:hover,.recinto-legal a:focus-visible{color:#FFC13B}
.recinto-legal span{color:#7A1E2E}

/* ── 10 · LAS ESCONDIDAS (fase 24-g, decisión del encargante) ───────
   Lista de deseos, Reseñas, Cuentas Sociales y el selector de Tema no
   encajan con el modelo: fuera del menú por CSS; la ruta de Reseñas la
   corta el servidor y tab=social el JS del aula. Esconder no borra. */
/* (24-l) reviews y tab=social se quitaron del ORIGEN (filtros
   tutor_dashboard_account_pages y nav_items/settings): sus reglas
   murieron aquí. Queda SOLO la pestaña de la lista de deseos del
   panel de cursos — array duro sin filtro (dicho en BLOQUEOS); la
   hoja es bloqueante y no parpadea. */
body.recinto-schola [href*="wishlist"]{display:none !important}

/* ── 11 · EL AVATAR DE FÁBRICA (fase 24-g) ─────────────────────────────
   El muñeco blanco (profile-photo.png) muere: en su lugar, lámina
   --surface-card con marco de oro — el botón de cámara ya invita a
   subir foto. (La vía del filtro tutor_login_default_avatar exigiría
   cruzar un SVG por el WAF, que veta <svg en POST y no se rodea.) */
/* (24-l) el muñeco de fábrica murió en el ORIGEN: el filtro
   tutor_login_default_avatar sirve un transparente de 1 px (adjunto
   1409) — fuera el opacity:0, y el marco sigue al src nuevo. */
body.recinto-schola .tutor-account-avatar,
body.recinto-schola [class*=avatar]:has(> img[src*="avatar-vacio"]){
  background-color:#11141C;
  border:1px solid rgba(203,154,49,.4);
}

/* ── 12 · LA FICHA DEL CURSO · kit LEGACY (fase 24-g) ─────────────────
   La página del curso no usa el sistema 4.0: usa el kit viejo con
   blancos y grises A FUEGO (.tutor-card #fff, secondary #41454f, muted
   #757c8e, success verde) — la sonda la cazó con 14 cajas bajo 4,5:1 a
   cada ancho. Se re-esmalta clase a clase con la paleta cerrada. */
body.recinto-schola .tutor-card{background-color:#0D1017;border:1px solid rgba(200,191,166,.14)}
body.recinto-schola .tutor-card-header{border-bottom:1px solid rgba(200,191,166,.14)}
body.recinto-schola .tutor-accordion-item{background-color:#0D1017;border:1px solid rgba(200,191,166,.14)}
body.recinto-schola .tutor-accordion-item-header{background-color:#11141C;color:#F0EAD8}
body.recinto-schola .tutor-accordion-item-body{background-color:#0D1017}
body.recinto-schola .tutor-color-black{color:#F0EAD8}
body.recinto-schola .tutor-color-secondary{color:#C8BFA6}
body.recinto-schola .tutor-color-muted{color:rgba(200,191,166,.66)}
body.recinto-schola .tutor-color-success{color:#CB9A31}
body.recinto-schola .tutor-bg-white{background-color:#0D1017}
body.recinto-schola img[src*=placeholder]{visibility:hidden}
/* §12-b · el kit del frente pinta los INTERIORES de las tarjetas
   (.tutor-card-body #f4f6f9, la info-card #fcfcfd, el cuerpo del
   acordeón #fff) y gana la pelea de cascada: se zanja con !important
   — piel sobre tercero, como el resto de remaches de esta hoja. */
body.recinto-schola .tutor-card,
body.recinto-schola .tutor-card-body,
body.recinto-schola .tutor-card-footer,
body.recinto-schola .tutor-accordion-item,
body.recinto-schola .tutor-accordion-item-body,
body.recinto-schola .tutor-course-single-sidebar-title,
body.recinto-schola .tutor-course-single-info-card,
body.recinto-schola .tutor-course-details-instructors{background-color:#0D1017 !important}
body.recinto-schola .tutor-accordion-item-header{background-color:#11141C !important}
body.recinto-schola .tutor-course-content-list-item{background-color:#0D1017 !important}
/* solo en la ficha del curso: alli el monograma va sobre ORO MACIZO
   (kit viejo) y pide texto suelo; en el panel va sobre lavado y es oro. */
body.recinto-schola .tutor-course-details-page .tutor-avatar,
body.recinto-schola .tutor-course-details-page .tutor-avatar *{color:#0A0C10 !important}

/* la Lista de deseos también vive en la ficha del curso: escondida */
body.recinto-schola [class*=wishlist]{display:none !important}

/* §12-c · la barra de administración de WP no pinta dentro del recinto:
   es chrome del sitio, no del aula (el instructor y el admin la
   recuperan en cuanto salen). El hueco que deja WP se recupera. */
/* (24-h) el escondite por CSS murio: dejaba el nodo y el :has del panel
   bajaba la cabecera 32px — ahora la barra no llega al DOM (bloque 19-b
   de functions.php). Esta lápida queda para que nadie lo reponga. */

/* ── 13 · LA 24-H: la familia del emergente, los logos, el radio y las
   gráficas ─────────────────────────────────────────────────────────── */
/* a · el emergente que se escapó y TODA su familia: .tutor-tooltip
   llevaba texto suelo sobre fondo oscuro (la ficha inversa sobre
   superficie inversa). Crema sobre elevado con marco, como toda capa. */
body.recinto-schola .tutor-tooltip,
body.recinto-schola [role=tooltip]{
  color:#F0EAD8 !important;
  background-color:#0D1017 !important;
  border:1px solid rgba(203,154,49,.4);
}
/* b · el diálogo de enlaces de WP (bio) venía blanco con letra crema */
body.recinto-schola #wp-link-wrap{background-color:#0D1017;color:#F0EAD8;border:1px solid rgba(203,154,49,.4)}
body.recinto-schola #wp-link-wrap input[type=text]{background-color:#11141C;color:#F0EAD8;border:1px solid rgba(200,191,166,.14)}
body.recinto-schola #wp-link .query-results{background-color:#0D1017;border-color:rgba(200,191,166,.14)}
/* c · las pestañas de Ajustes venían en Title Case por CSS (capitalize):
   el copy no se disfraza — se respeta tal cual se escribe. */
body.recinto-schola [class*=settings] a,
body.recinto-schola [class*=settings] [class*=item],
body.recinto-schola [class*=account] [class*=nav] *{text-transform:none !important}
/* d · radio 0 también en los avatares del panel de cuenta (códice) */
body.recinto-schola [class*=avatar],
body.recinto-schola [class*=avatar] img{border-radius:0 !important}
/* e · los logotipos del aula, al tamaño de la web (52px de alto) */
.recinto-barra img{height:52px;width:auto}
.tutor-dashboard-sidebar-logo img,
.tutor-brand-logo img{height:52px !important;width:auto !important;max-height:none}
/* f · (24-l) el confeti MURIÓ de raíz en la 24-i: el override del
   panel vacío no lo sirve — la regla era peso muerto y se retira. */
/* g · LAS GRÁFICAS: el canvas pinta colores del chunk minificado
   (morado ajeno), sin API pública (window.Chart indefinido) y sin
   variables que lo alcancen — repintar = parchear un minificado en
   caliente. SE ESCONDEN, como mandó el encargo, y queda dicho:
   cualquier tarjeta del recinto que contenga un canvas no se pinta.
   Reversible en una línea. */
/* (24-i) el escondite de las gráficas MURIÓ: el canvas lee las fichas
   --tutor-actions-* (arriba) y se repinta solo — las gráficas vuelven,
   que son control de trabajo pendiente del claustro. */
/* h · y las fichas visual-* de las ilustraciones SVG, a la paleta */
:root,[data-tutor-theme=light],[data-tutor-theme=dark],[data-tutor-theme=system]{
  --tutor-visual-gray-1:#11141C;
  --tutor-visual-gray-2:#171B25;
  --tutor-visual-gray-3:rgba(200,191,166,.3);
  --tutor-visual-gray-4:rgba(200,191,166,.14);
  --tutor-visual-brand-1:#CB9A31;
  --tutor-visual-brand-2:#FFC13B;
  --tutor-visual-brand-3:rgba(203,154,49,.18);
  --tutor-visual-success-1:#CB9A31;
  --tutor-visual-success-2:#FFC13B;
  --tutor-visual-critical-1:#7A1E2E;
  --tutor-visual-critical-2:rgba(122,30,46,.28);
  --tutor-visual-exception-1:#F0EAD8;
  --tutor-visual-exception-2:#FFC13B;
  --tutor-visual-exception-3:#CB9A31;
  --tutor-visual-orange-1:#FFC13B;
}

/* ── 14 · EL SELLO DE LA SCHOLA · marca de agua (fase 24-i, decisión B
   del encargante sobre las dos maquetas de la 24-h): abajo a la
   derecha, 96px al 28%, sin capturar el puntero. Solo en el panel. */
.tutor-dashboard-layout::after{
  content:"";
  position:fixed;right:28px;bottom:24px;width:96px;height:96px;
  background:url('/wp-content/uploads/2026/05/Logo_LaSchola_sello_color_RGB_fondo-oscuro.svg') center/contain no-repeat;
  opacity:.28;pointer-events:none;z-index:5;
}

/* ── 15 · LA 24-J ─────────────────────────────────────────────────── */
/* a · la salida del recinto: la barra reparte logo y vuelta */
.recinto-barra{justify-content:space-between}
.recinto-vuelta{
  font-family:'Jost', system-ui, sans-serif;font-size:.69rem;
  letter-spacing:.16em;text-transform:uppercase;
  color:#CB9A31;text-decoration:none;transition:color .35s;
}
.recinto-vuelta:hover,.recinto-vuelta:focus-visible{color:#FFC13B}
/* b · (24-l) las retiradas murieron en el ORIGEN (filtros de páginas
   de cuenta y pestañas de Ajustes): la regla [href*=withdraw] ya no
   casaba con nada y se retira. El guarda de URL del servidor QUEDA. */
/* c · la pestaña activa: la clase real es tutor-tabs-tab-active (medida
   con el motor; los cuatro candidatos de la primera pasada no casaban).
   «Negra → ORO»: la píldora entera en oro con el texto en suelo, como
   los botones primarios del sitio (7,6:1). */
body.recinto-schola .tutor-tabs-tab-active,
body.recinto-schola .tutor-tabs-tab-active:hover{
  background-color:#CB9A31 !important;
  color:#0A0C10 !important;
}
/* d · los títulos en Cormorant, que manden (24-j bloque 7) */
.tutor-dashboard-header-left .tutor-h5{font-size:1.45rem;line-height:1.2}
.tutor-dashboard-layout h2,
.tutor-dashboard-layout [class*=page-title],
.tutor-dashboard-layout [class*=screen-title]{font-size:1.7rem}
body.recinto-schola .tutor-course-details-page h1,
body.recinto-schola .tutor-course-details-page .tutor-fs-3{font-size:clamp(1.9rem,3vw,2.6rem);line-height:1.15}
body.recinto-schola .tutor-course-details-page h3,
body.recinto-schola .tutor-course-details-page h4{font-size:1.45rem}
/* e · la ilustración del panel vacío: más grande y con aire a la derecha */
.tutor-dashboard-welcome-banner{padding-right:clamp(20px,3vw,44px)}
.tutor-dashboard-welcome-banner img{width:200px !important;height:200px !important}
/* f · el logotipo del panel, igualado a las once: el §13-e ya ponía
   height:52px, pero Tutor lo encajona en max-width:120px (el PNG es
   2037×456 y con contain se dibuja a 120×27). A 52 de alto salen 232
   de ancho, como la barra del recinto. */
.tutor-dashboard-sidebar-logo img,
.tutor-brand-logo img{max-width:232px !important}
/* g · Ajustes: la lista de pestañas y el contenido arrancan en la misma
   horizontal. La causa medida: padding-top:12px de .tutor-tabs-nav
   (lista a 93, primer botón a 106, contenido a 93). */
body.recinto-schola .tutor-profile-settings-tab.tutor-tabs-nav{padding-top:0}
/* h · el desplegable de ordenar (y todo select del recinto): Tutor lo
   sirve con --tutor-color-white de fondo y flecha SVG #343a40 — crema
   sobre blanco, y la flecha moriría sobre lámina. La flecha nueva no
   puede viajar como SVG (el WAF veta <svg en POST y no se rodea, §11):
   se dibuja en crema con dos cortes duros — un glifo, no un relleno. */
body.recinto-schola select.tutor-form-control,
body.recinto-schola .tutor-form-select{
  background-color:#11141C !important;
  color:#F0EAD8 !important;
  border-color:rgba(200,191,166,.3) !important;
  background-image:
    linear-gradient(45deg, transparent 49%, #F0EAD8 50%),
    linear-gradient(135deg, #F0EAD8 50%, transparent 51%) !important;
  background-position:calc(100% - 22px) 55%, calc(100% - 16px) 55% !important;
  background-size:7px 7px, 7px 7px !important;
  background-repeat:no-repeat !important;
}
body.recinto-schola select.tutor-form-control option,
body.recinto-schola .tutor-form-select option{
  background-color:#11141C;color:#F0EAD8;
}
/* i · radio 0 en TODO el recinto (DA-1): el §2 solo cubría el layout
   del panel, y Ajustes vive fuera (.tutor-account-page-wrapper, píldora
   a 8px; el desplegable del archivo, a 6). La ley, a todo el recinto. */
body.recinto-schola *,
.tutor-account-page-wrapper *{border-radius:0 !important}
/* j · el panel del desplegable propio (.tutor-form-select-dropdown, el
   select nativo va display:none): venía blanco con la letra crema.
   Se eleva como toda capa (§4): elevado y marco de oro lavado. */
body.recinto-schola .tutor-form-select-dropdown{
  background-color:#0D1017 !important;
  border:1px solid rgba(203,154,49,.4) !important;
  box-shadow:none !important;
}
body.recinto-schola .tutor-form-select-dropdown li:hover,
body.recinto-schola .tutor-form-select-dropdown [class*=option]:hover,
body.recinto-schola .tutor-form-select-dropdown [class*=item]:hover{
  background-color:#171B25;
}
/* la elegida venía con banda clara de fábrica (#EFF1F7) bajo la letra
   crema: oro lavado, como todo estado elegido de la casa */
body.recinto-schola .tutor-form-select-option.is-active{
  background-color:rgba(203,154,49,.18) !important;
}

/* ── 16 · LA 24-K ─────────────────────────────────────────────────── */
/* la línea de la liquidación bajo la tarjeta de ingresos (copy
   aprobado, política 11-b): la voz apagada de la casa, sin capturar
   la jerarquía de la cifra */
.refugio-liquidacion{
  font-family:'Inter', system-ui, sans-serif;
  font-size:.78rem;line-height:1.45;
  color:rgba(200,191,166,.66);
  margin-top:.4rem;
}

/* ── 17 · LA 24-L · el gestor del segundo factor (Wordfence) ───────
   El shortcode trae su paleta (tarjetas blancas, azules de tercero):
   se re-esmalta DENTRO de .refugio-sf-gestor y de sus modales. El QR
   conserva su plato blanco: un QR sin contraste no se escanea. */
.refugio-sf-gestor .wfls-block,
.refugio-sf-gestor .wfls-block.wfls-always-active{
  background-color:#0D1017 !important;
  border:1px solid rgba(200,191,166,.14) !important;
  box-shadow:none !important;
  color:#F0EAD8;
}
.refugio-sf-gestor .wfls-block-header,
.refugio-sf-gestor .wfls-block-title,
.refugio-sf-gestor .wfls-block-title strong,
.refugio-sf-gestor .wfls-block-content,
.refugio-sf-gestor .wfls-block-content p,
.refugio-sf-gestor .wfls-block-content li{
  color:#F0EAD8 !important;
  background:transparent !important;
}
.refugio-sf-gestor .wfls-block-header{border-bottom:1px solid rgba(200,191,166,.14)}
.refugio-sf-gestor a{color:#CB9A31 !important}
.refugio-sf-gestor a:hover,
.refugio-sf-gestor a:focus-visible{color:#FFC13B !important}
.refugio-sf-gestor .wfls-fa,
.refugio-sf-gestor [class*=title-icon]{color:#CB9A31 !important}
/* el plato del QR: blanco por función, con su margen */
.refugio-sf-gestor img[src*="qrcode"],
.refugio-sf-gestor canvas,
.refugio-sf-gestor .wfls-qr-code,
.refugio-sf-gestor #wfls-qr-code img{
  background:#FFFFFF !important;padding:10px;
}
/* la clave bajo el QR y los códigos de recuperación, legibles */
.refugio-sf-gestor pre,
.refugio-sf-gestor code,
.refugio-sf-gestor [class*=key],
.refugio-sf-gestor [class*=recovery]{
  background-color:#11141C !important;color:#F0EAD8 !important;
  border-color:rgba(200,191,166,.14) !important;
}
.refugio-sf-gestor .wfls-btn{
  border-radius:0 !important;
  font-family:'Montserrat', system-ui, sans-serif;
  font-weight:600;letter-spacing:.12em;text-transform:uppercase;
  font-size:.69rem;
}
.refugio-sf-gestor .wfls-btn-default{
  background-color:#11141C !important;color:#CB9A31 !important;
  border:1px solid rgba(203,154,49,.4) !important;
}
.refugio-sf-gestor .wfls-btn-default:hover{color:#FFC13B !important;border-color:#CB9A31 !important}
.refugio-sf-gestor .wfls-btn-primary,
.refugio-sf-gestor .wfls-btn.wfls-btn-primary:not(.wfls-disabled){
  background-color:#CB9A31 !important;color:#0A0C10 !important;border-color:#CB9A31 !important;
}
.refugio-sf-gestor .wfls-btn.wfls-disabled,
.refugio-sf-gestor .wfls-btn[disabled]{
  background-color:#11141C !important;color:rgba(200,191,166,.62) !important;
  border:1px solid rgba(200,191,166,.14) !important;
}
.refugio-sf-gestor input[type=text],
.refugio-sf-gestor input:not([type=checkbox]):not([type=radio]){
  background-color:#11141C !important;color:#F0EAD8 !important;
  border:1px solid rgba(200,191,166,.14) !important;
}
/* la franja de ayuda al pie del bloque de activación */
.refugio-sf-gestor .wfls-block-footer,
.refugio-sf-gestor [class*=footer]{
  background-color:#11141C !important;color:#F0EAD8 !important;
}

/* ── 18 · LA 24-M · la invitación del acceso ────────────────────────
   Bajo el formulario, para quien no es alumno: mismo ancho que la
   caja del acceso, elevado con filete, y el enlace en la voz de los
   botones. */
.recinto-invitacion{
  max-width:400px;
  margin:2.2rem auto 0;
  padding:1.6rem 1.8rem 1.8rem;
  background-color:#0D1017;
  border:1px solid rgba(200,191,166,.14);
  text-align:center;
}
.recinto-invitacion h2{
  font-family:'Cormorant Garamond', Georgia, serif;
  font-weight:500;font-size:1.35rem;line-height:1.2;
  color:#F0EAD8;margin:0 0 .7rem;
}
.recinto-invitacion p{
  font-family:'Inter', system-ui, sans-serif;
  font-size:.86rem;line-height:1.55;
  color:#C8BFA6;margin:0 0 1.2rem;
}
.recinto-invitacion-enlace{
  display:inline-block;
  font-family:'Montserrat', system-ui, sans-serif;
  font-weight:600;font-size:.69rem;
  letter-spacing:.16em;text-transform:uppercase;
  color:#CB9A31;text-decoration:none;
  border:1px solid rgba(203,154,49,.4);
  padding:.72rem 1.3rem;
  transition:color .35s, border-color .35s;
}
.recinto-invitacion-enlace:hover,
.recinto-invitacion-enlace:focus-visible{
  color:#FFC13B;border-color:#CB9A31;
}

/* ── 19 · LA 24-N ─────────────────────────────────────────────────── */
/* a · el icono de la píldora activa toma el color del TEXTO — y cada
   path conserva SU oficio. (24-o: medida la anatomía — los iconos de
   Tutor son de TRAZO, svg[fill=none] con path[stroke=currentColor];
   forzar fill:currentColor en todos rellenaba la silueta y se comía
   el hueco. «Un icono necesita trazo, no relleno».) El color se
   hereda del texto; el trazo lo toma quien TIENE trazo; el relleno,
   solo quien ya era de relleno. */
body.recinto-schola .tutor-tabs-tab-active svg,
body.recinto-schola .tutor-tabs-tab-active svg *,
body.recinto-schola [class*="tab"][class*="active"] svg,
body.recinto-schola [class*="tab"][class*="active"] svg *,
body.recinto-schola [aria-selected="true"] svg,
body.recinto-schola [aria-selected="true"] svg *{
  color:inherit !important;
}
body.recinto-schola .tutor-tabs-tab-active svg [stroke],
body.recinto-schola [class*="tab"][class*="active"] svg [stroke],
body.recinto-schola [aria-selected="true"] svg [stroke]{
  stroke:currentColor !important;
  fill:none !important;
}
body.recinto-schola .tutor-tabs-tab-active svg [fill]:not([fill="none"]):not([stroke]),
body.recinto-schola [class*="tab"][class*="active"] svg [fill]:not([fill="none"]):not([stroke]),
body.recinto-schola [aria-selected="true"] svg [fill]:not([fill="none"]):not([stroke]){
  fill:currentColor !important;
}
/* b · Ajustes: el contenedor de pestañas arranca a la altura de la
   línea del panel (el marco de la tarjeta, +34px bajo el título) y
   recupera aire interior para que «Cuenta» no pise su borde. */
@media (min-width:768px){
  body.recinto-schola .tutor-profile-settings-tab.tutor-tabs-nav{
    /* 24-q · el desnivel exacto medido era 1,8px (nav 127 vs tarjeta
       128,8): 34 → 35,8 y los dos bordes arrancan iguales. */
    margin-top:35.8px;
    padding-top:10px;
  }
}
/* c · los input de archivo: la clase tutor-hidden los esconde tras el
   botón de cámara y algo la pisaba — a su sitio; y si algún flujo
   enseña uno, su botón nativo habla la voz de la casa. */
body.recinto-schola input[type="file"].tutor-hidden{display:none !important}
body.recinto-schola input[type="file"]::file-selector-button{
  font-family:'Montserrat', system-ui, sans-serif;
  font-weight:600;font-size:.66rem;
  letter-spacing:.12em;text-transform:uppercase;
  color:#CB9A31;background-color:#11141C;
  border:1px solid rgba(203,154,49,.4);
  padding:.5rem .9rem;margin-right:.8rem;cursor:pointer;
}
/* d · los interruptores, redondos: la excepción MEDIDA al radio 0
   (encargo 24-n) — lo cuadrado en un interruptor se lee raro. */
body.recinto-schola input.tutor-switch{border-radius:999px !important}
body.recinto-schola input.tutor-switch::before,
body.recinto-schola input.tutor-switch::after{border-radius:50% !important}
/* e · Seguridad: el aire del sitio entre nuestro copy y el gestor,
   y entre los bloques del gestor. */
.refugio-sf-gestor{margin-top:2.2rem}
.refugio-sf-gestor .wfls-block{margin-bottom:1.6rem}
/* f · Garamond, los fugados del censo (41 medidos: 8 etiquetas de
   cifra hablan Jost POR DISEÑO §6 y no entran; estos tres sí). */
body.recinto-schola .tutor-progress-card-title,
body.recinto-schola .tutor-learning-nav-header-title,
body.recinto-schola [class*="card-title"]:not(.tutor-stat-card-title),
body.recinto-schola [class*="header-title"]{
  font-family:'Cormorant Garamond', Georgia, serif !important;
  font-weight:500;
}
/* g · el logotipo de La Schola encabeza el acceso (elegido: el
   HORIZONTAL fondo-oscuro). 24-o: GRANDE y apaisado dentro del
   contenedor — 58px se quedaba en sello de correos; a ~128px el
   trazo llena el ancho de la caja (svh, no dvh: la barra del
   navegador móvil no reordena el acceso al esconderse). */
.tutor-login-wrap::before{
  content:"";display:block;height:min(128px,18svh);
  margin:0 auto 1.2rem;
  background:url('/wp-content/uploads/2026/05/Logo_LaSchola_horizontal_RGB_fondo-oscuro.svg') center/contain no-repeat;
}

/* ── 20 · LA 24-O · LA ESCALA SUBE ──────────────────────────────────
   El encargo: la letra del aula se quedó corta para vista cansada.
   Medido antes de tocar (escala-antes.json / escala-clases.json):
   las públicas pisan 23,2 / 25,6 / 28 / 41,6; el aula servía
   pantalla 20 · subsección 18 · curso 20 · perfil 24 · saludo 23,2,
   con cuerpos de 12px y rótulos Jost de 10,5px. Cada nivel del aula
   sube al paso público correspondiente; los cuerpos enanos, a
   >=13,5px. El .skip (11,2px, pieza del códice común a las once) no
   se toca. */
/* a · títulos de pantalla: «Cuenta», «Perfil», «Facturación» y el
   «Ajustes» de cabecera — 20 → 28px */
body.recinto-schola .tutor-account-header-title,
body.recinto-schola .tutor-profile-header-title{
  font-size:1.75rem !important;line-height:1.15 !important;
}
/* b · subsecciones (los h5 de React): «Cuenta», «Perfil público»,
   «Información de acceso», «Contraseña y segundo factor» y las
   secciones de Preferencias (Contenido del curso, Efectos
   interactivos, Apariencia, Accesibilidad) — 18 → 23,2px */
body.recinto-schola .tutor-h5{
  font-size:1.45rem !important;line-height:1.2 !important;
}
/* c · la ficha del curso y de la ruta: «Acerca de este curso»,
   «Contenido del curso», «Sobre esta ruta» — el paso fs-5, 20 → 25,6px */
body.recinto-schola .tutor-fs-5{
  font-size:1.6rem !important;line-height:1.25 !important;
}
/* d · el saludo del panel, al nivel de los títulos de pantalla */
body.recinto-schola .tutor-dashboard-header-left .tutor-text-subdued,
body.recinto-schola .tutor-dashboard-header-left .tutor-h5{
  font-size:1.75rem !important;
}
/* e · el nombre en la tarjeta del perfil — 24 → 28px */
body.recinto-schola .tutor-user-profile-title{
  font-size:1.75rem !important;
}
/* f · el subtítulo del gestor de Seguridad («Escanea el código o
   escribe la clave») — 16 → 20px */
.refugio-sf-gestor strong{font-size:1.25rem}
/* g · el título del curso en la barra del área de estudio — 18 → 20px
   (barra de altura contenida: sube un paso, no dos) */
body.recinto-schola .tutor-learning-nav-header-title{font-size:1.25rem !important}
/* h · los cuerpos enanos, legibles: nada por debajo de 13,5px
   (etiquetas del perfil, «Miembro desde», «Editar perfil», las
   descripciones de Preferencias) */
body.recinto-schola .tutor-badge,
body.recinto-schola .tutor-edit-profile-btn span,
body.recinto-schola .tutor-profile-member-since,
body.recinto-schola .tutor-preferences-setting-subtitle{
  font-size:.84rem !important;
}
/* i · las etiquetas de cifra del panel hablan Jost POR DISEÑO (§6):
   la familia se queda, el tamaño sube de 10,5 a 12px */
body.recinto-schola .tutor-stat-card-title{
  font-size:.75rem !important;
}

/* ── 21 · LA 24-O · EL ACCESO EN UNA PANTALLA ───────────────────────
   Medido antes de tocar (acceso-antes.json): a 390×740 sobraban
   300px de scroll; el envoltorio del login pone margin-block:70px y
   arrancaba a 140 del borde; la invitación mide 214. La composición
   entera (logo + frase + formulario + invitación) cabe en 100svh:
   márgenes del login a 28px, invitación más ceñida. svh y NO dvh —
   la barra del móvil no debe reordenar la pantalla al esconderse. */
body.recinto-schola .tutor-login-wrap.tutor-template-segment{
  margin-block:28px 16px !important;
}
.recinto-invitacion{
  margin-top:.75rem;
  padding:1.2rem 1.5rem 1.4rem;
}
.recinto-invitacion p{margin-bottom:.9rem}
/* la tarjeta del acceso (logo+frase+formulario) CABE en 100svh en los
   tres anchos medidos (termina a 673px con visor 740); la invitación
   asoma su título dentro del primer svh como señal de que hay más. */

/* ── 22 · LA 24-O · EL AIRE DE SEGURIDAD, MEDIDO ────────────────────
   Tercera vez que vuelve; esta vez con TODAS las fuentes delante
   (aire-seguridad-antes.json): nuestro copy a interlínea 1,28 y el
   gestor a 1,15; wfls-block-content con padding-top:0 —el texto
   pegaba contra el filete del encabezado—; los párrafos del gestor
   con margen 0; la intro sin aire antes del primer bloque. Cada
   fuente, su remedio; los margin-top de Wordfence no se pisan. */
.refugio-segundo-factor p.tutor-p2{line-height:1.55}
.refugio-sf-gestor{line-height:1.55}
.refugio-sf-gestor p{line-height:1.55;margin-bottom:.9em}
.refugio-sf-gestor > .stacked > p:first-child,
.refugio-sf-gestor > p:first-child{margin-bottom:1.3rem}
.refugio-sf-gestor .wfls-block-content{padding-top:16px !important}
.refugio-sf-gestor .wfls-block-content p:last-child{margin-bottom:0}
.refugio-sf-gestor pre{margin-block:.8em;line-height:1.7}
/* 24-p · el botón de descargar los códigos pegaba a la lista (hueco
   medido: 0px) — aire entre la lista y lo que la sigue */
.refugio-sf-gestor ul.wfls-recovery-codes + *{margin-top:1.1rem !important}

/* ── 23 · LA 24-O · LA FICHA: PESTAÑAS Y VUELTA ─────────────────────
   a · la tira de pestañas de la ficha hablaba la piel clara del
   paquete (gris sobre gris, ilegible) y su desplegable «Más» —los
   sobrantes al estrecharse— también. A la casa: superficie oscura,
   filete, crema; lo activo se enciende en oro alto. */
body.recinto-schola .tutor-course-details-tab .tutor-nav{
  background-color:#0D1017;
  border:1px solid rgba(200,191,166,.14);
}
body.recinto-schola .tutor-course-details-tab .tutor-nav-link{color:#C8BFA6}
body.recinto-schola .tutor-course-details-tab .tutor-nav-link.is-active,
body.recinto-schola .tutor-course-details-tab .tutor-nav-link:focus-visible,
body.recinto-schola .tutor-course-details-tab .tutor-nav-link:active{color:#FFC13B}
@media (hover:hover) and (pointer:fine){
  body.recinto-schola .tutor-course-details-tab .tutor-nav-link:hover{color:#FFC13B}
}
body.recinto-schola .tutor-nav-more-list.tutor-dropdown{
  background-color:#11141C;
  border:1px solid rgba(200,191,166,.14);
}
body.recinto-schola .tutor-nav-more-list .tutor-nav-link{color:#F0EAD8}
/* b · la vuelta al explorador (bloque 36 de functions.php), en la voz
   de los rótulos; alineada con el contenedor de la ficha (1320). */
.refugio-vuelta-cursos{max-width:1320px;margin:1.6rem auto -.6rem;padding:0 20px}
.refugio-vuelta-cursos a{
  font-family:'Montserrat', system-ui, sans-serif;
  font-weight:600;font-size:.69rem;letter-spacing:.14em;text-transform:uppercase;
  color:#CB9A31;text-decoration:none;transition:color .35s;
}
.refugio-vuelta-cursos a:focus-visible,
.refugio-vuelta-cursos a:active{color:#FFC13B}
@media (hover:hover) and (pointer:fine){
  .refugio-vuelta-cursos a:hover{color:#FFC13B}
}

/* ── 24 · LA 24-O · LA CAMPANA Y SU CONTADOR ────────────────────────
   El contador de avisos en BORGOÑA, por orden del encargo — y dentro
   de la ley DA-1: el borgoña es ornamento (fondo del contador), nunca
   color de texto; encima habla la crema. El redondel es excepción
   MEDIDA al radio 0, como el interruptor de la 24-n: un contador
   cuadrado se lee como un error. */
body.recinto-schola .tutor-dashboard-notification-badge{
  background-color:#7A1E2E !important;
  color:#F0EAD8 !important;
  border-radius:999px !important;
  /* 24-p · de punto a BURBUJA CON NÚMERO (el guion del bloque 20
     escribe la cifra de sin-leer) */
  min-width:18px !important;
  height:18px !important;
  padding:0 5px !important;
  /* SIN !important: el x-show de Alpine esconde con display:none EN
     LÍNEA y tiene que poder ganar cuando no hay avisos */
  display:flex;
  align-items:center;
  justify-content:center;
  font-size:11px;
  font-weight:600;
  line-height:1;
  /* 24-q · la burbuja es HERMANA del botón y agrandada le tapaba el
     centro: el clic moría en el contador (medido con
     elementFromPoint). Un indicador nunca es objetivo. */
  pointer-events:none;
}
.refugio-aviso-burbuja{pointer-events:none}

/* ── 30 · LA 24-Q · EL EDITOR CLÁSICO Y LA BURBUJA DE LA PREGUNTA ───
   La pestaña «Resolución de preguntas» de la FICHA usa el TinyMCE
   clásico (chrome .mce-* blanco, medido 848×174) y una burbuja
   .tutor-qna-text azul clara (227,233,247). El chrome, a la casa; el
   CUERPO DENTRO DEL IFRAME lo viste el bloque 51 de functions.php
   (content_style: ninguna hoja externa entra en un iframe). */
body.recinto-schola .mce-tinymce,
body.recinto-schola .mce-panel,
body.recinto-schola .mce-edit-area,
body.recinto-schola .mce-toolbar,
body.recinto-schola .mce-toolbar-grp,
body.recinto-schola .mce-statusbar{
  background-color:#11141C !important;
  background-image:none !important;
  border-color:rgba(200,191,166,.14) !important;
}
body.recinto-schola .mce-ico{color:#C8BFA6 !important}
body.recinto-schola .mce-btn{background:transparent !important;border-color:transparent !important}
body.recinto-schola .mce-btn:hover,
body.recinto-schola .mce-btn.mce-active{background:#0D1017 !important;border-color:rgba(203,154,49,.4) !important}
body.recinto-schola .mce-path-item,
body.recinto-schola .mce-divider{color:rgba(200,191,166,.62) !important}
body.recinto-schola .tutor-qna-text{
  background-color:#11141C !important;
  color:#F0EAD8 !important;
  border:1px solid rgba(200,191,166,.14);
}
/* ── 31 · LA 24-Q · LA LECCIÓN NO MUEVE LA VISTA ────────────────────
   El scroll de página venía de min-height:100vh (900) en
   .tutor-learning-area ARRANCANDO BAJO la barra de 70: 970 de
   documento en visor de 900, medido. El área se acota al visor real
   y cada caja se desplaza por dentro: el temario en la suya (§27) y
   el contenido de la lección en la suya. svh, no dvh. */
/* 24-t · 1-c: la altura de las barras fijas del reproductor es
   VARIABLE DE LA CASA, y todo lo que dependa de ella bebe de aquí:
   --refugio-cabecera-recinto = la cabecera del recinto (70, medida);
   --refugio-barra-reproductor = .tutor-learning-header del paquete
   (64 de escritorio / 56 en teléfono, medidos en 4.0.8). Si Tutor
   cambia su barra, se cambia AQUÍ y solo aquí (lista de
   re-verificación tras actualizar, SISTEMA §12.94). */
body.recinto-schola{
  --refugio-cabecera-recinto:70px;
  --refugio-barra-reproductor:64px;
}
@media (max-width: 767px){
  body.recinto-schola{
    --refugio-barra-reproductor:56px;
  }
}
body.recinto-schola .tutor-learning-area{
  min-height:calc(100svh - var(--refugio-cabecera-recinto)) !important;
  height:calc(100svh - var(--refugio-cabecera-recinto));
  overflow:hidden;
}
body.recinto-schola .tutor-learning-area-content{
  overflow-y:auto;
  max-height:100%;
}

/* ── 32 · LA 24-Q · EL ESTADO VACÍO CON LA PIEZA DE LA CASA ─────────
   emptystate.svg (824×242, trazos claros de fábrica) cede el sitio a
   la pieza encargada vía content:url — es la única <img> de la
   familia (las ilustraciones 96×96 van en línea y NO se tocan). Los
   1088 px se sirven a ~394 (densidad 2,7×) y la máscara elíptica
   apaga el haz cálido antes del borde para que no manche el suelo. */
body.recinto-schola .tutor-empty-state img{
  content:url('/wp-content/uploads/2026/09/aula-vacio-1088.webp');
  max-height:220px;
  width:auto;
  display:block;
  margin-inline:auto;
  -webkit-mask-image:radial-gradient(ellipse 52% 60% at 50% 54%, #000 38%, transparent 92%);
  mask-image:radial-gradient(ellipse 52% 60% at 50% 54%, #000 38%, transparent 92%);
}

/* ── 33 · LA 24-Q · LA MENSAJERÍA DE LA CASA ────────────────────────
   La página «Mensajes» del panel (tutor/dashboard/mensajes.php): la
   lista de vínculos, el hilo con sus dos voces y la forma de envío.
   Superficies y filetes de la familia (§26): #0D1017 / #11141C /
   rgba(200,191,166,.14) / oro al 40 %. La burbuja pendiente es la
   misma borgoña que la del lateral. */
body.recinto-schola .refugio-mensajes-lista{
  list-style:none;
  margin:1rem 0 0;
  padding:0;
}
body.recinto-schola .refugio-mensajes-contacto{
  display:grid;
  grid-template-columns:1fr auto;
  gap:2px 12px;
  padding:14px 16px;
  margin-bottom:10px;
  background-color:#0D1017;
  border:1px solid rgba(200,191,166,.14);
  text-decoration:none;
}
body.recinto-schola .refugio-mensajes-contacto:hover{
  border-color:rgba(203,154,49,.4);
}
body.recinto-schola .refugio-mensajes-nombre{
  color:#F0EAD8;
  font-family:'Montserrat',sans-serif;
  font-weight:600;
  font-size:15px;
}
body.recinto-schola .refugio-mensajes-extracto{
  grid-column:1 / -1;
  color:rgba(240,234,216,.6);
  font-size:13px;
}
body.recinto-schola .refugio-mensajes-pendiente{
  align-self:center;
  min-width:20px;
  height:20px;
  padding:0 6px;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  background-color:#7A1E2E;
  color:#F0EAD8;
  font-size:12px;
  font-weight:600;
}
body.recinto-schola .refugio-mensajes-cabecera{
  margin-bottom:1rem;
}
body.recinto-schola .refugio-mensajes-volver{
  display:inline-block;
  margin-bottom:8px;
  color:#CB9A31;
  font-size:13px;
  text-decoration:none;
}
body.recinto-schola .refugio-mensajes-volver:hover{
  color:#FFC13B;
}
body.recinto-schola .refugio-mensaje{
  max-width:78%;
  margin-bottom:12px;
  padding:10px 14px;
  border:1px solid rgba(200,191,166,.14);
  background-color:#0D1017;
}
body.recinto-schola .refugio-mensaje.es-mio{
  margin-left:auto;
  border-color:rgba(203,154,49,.4);
  background-color:#11141C;
}
body.recinto-schola .refugio-mensaje-cuerpo{
  color:#F0EAD8;
  font-size:14px;
  line-height:1.55;
}
body.recinto-schola .refugio-mensaje-fecha{
  margin-top:4px;
  /* .45 daba ~3,8:1 sobre #0D1017 — el 4,5:1 es condición de cierre. */
  color:rgba(240,234,216,.6);
  font-size:11.5px;
}
body.recinto-schola .refugio-mensajes-forma{
  margin-top:1.25rem;
  display:flex;
  flex-direction:column;
  gap:10px;
  align-items:flex-end;
}
body.recinto-schola .refugio-mensajes-forma textarea{
  width:100%;
  resize:vertical;
}
body.recinto-schola .refugio-mensajes-vacio{
  margin-top:1rem;
  color:rgba(240,234,216,.6);
}

/* ── 34 · LA 24-R · LOS AJUSTES CORTOS ──────────────────────────────
   a) El icono de Dudas activo: qa-fill.svg lleva el interrogante
      DURO en blanco (stroke/fill="white") donde el resto de la
      familia usa currentColor — sobre el oro del estado activo
      quedaba blanco. El blanco interior de un icono del menú es el
      RECORTE: se pinta al suelo, para toda la familia, presente o
      futura (el CSS pisa el atributo de presentación del SVG).
   b) El calendario separa mes y año en dos spans con gap de 6 px
      del paquete — corto de talla para un h3 serif (~0,21em): se
      ensancha a un espacio de palabra real.
   c) El cajón de avisos media ~340 px y su fila de pestañas + botón
      pide ~414 (medido: «Sin Leer (0)» acababa en 1048 y «MARCAR
      TODO…» arrancaba en 993): se da aire horizontal.
   d) El aviso individual se enciende en oro al pasar el ratón —
      estado final como valor por defecto y la transición encima
      (ficha --dur-fast/--ease-out del contrato). */
body.recinto-schola .tutor-dashboard-sidebar-nav svg [stroke="white"],
body.recinto-schola .tutor-dashboard-nav-mobile svg [stroke="white"]{
  stroke:#0A0C10;
}
body.recinto-schola .tutor-dashboard-sidebar-nav svg [fill="white"],
body.recinto-schola .tutor-dashboard-nav-mobile svg [fill="white"]{
  fill:#0A0C10;
}
body.recinto-schola .tutor-calendar span.tutor-h3 + span.tutor-h3{
  margin-inline-start:4px;
}
body.recinto-schola .tutor-dashboard-notification .tutor-popover{
  width:440px;
  max-width:calc(100vw - 32px);
}
body.recinto-schola .tutor-dashboard-notification-item{
  border:1px solid transparent;
  background-color:transparent;
  transition:border-color .35s cubic-bezier(.16,1,.3,1),
             background-color .35s cubic-bezier(.16,1,.3,1);
}
body.recinto-schola .tutor-dashboard-notification-item:hover{
  border-color:rgba(203,154,49,.4);
  background-color:rgba(203,154,49,.1);
}

/* ── 35 · LA 24-R · ROSTRO, PRESENCIA E INVITACIONES ────────────────
   La presencia: --verde-presencia (SISTEMA §1, fase 24-r, subido de
   tono en la 24-z a #00E676 — alcance ÚNICO el punto «en línea») y
   el desconectado en borgoña CON ANILLO de 1 px crema al 40 % — el
   borgoña solo da 1,86:1 y es el anillo quien pone el 3,30:1 del
   listón 1.4.11. Nunca solo por color: title y aria-label llevan el
   texto. El emergente de la esquina respeta prefers-reduced-motion
   y el estado final es el valor por defecto (la animación va
   encima). */
/* 24-w · LOS DOS TOKENS DE SEÑALÉTICA, declarados aquí porque su
   alcance es el aula y nada más (SISTEMA §1): verde y rojo NO son
   marca — son lo que un semáforo, disponibilidad y presencia — y por
   eso viven fuera de la paleta cerrada, con dos usos y ninguno más.
   El desconectado deja el borgoña y su anillo: aquel anillo existía
   solo porque el borgoña rinde 1,91:1 y no se veía; con un rojo que
   contrasta sobra, y los dos puntos quedan idénticos salvo el color.

   24-z · SUBEN DE TONO, por decisión del encargante: los de la 24-r y
   la 24-w eran tonos medios de Material y los quería más vivos. Los
   valores nuevos DEROGAN aquellos (#4CAF50 y #EF5350), y se cambian
   los dos usos a la vez —el veredicto del nick y la presencia— para
   que sigan siendo idénticos salvo el color. Medidos contra los tres
   fondos de la casa ANTES de escribirlos:
     verde #00E676 -> 11,72 / 11,40 / 11,03:1
     rojo  #FF3B30 ->  5,52 /  5,36 /  5,19:1
   sobre #0A0C10, #0D1017 y #11141C. Los seis pasan como TEXTO
   (≥4,5:1) y como objeto gráfico (≥3:1), así que NO hizo falta subir
   el rojo a #FF5252 (6,13 / 5,96 / 5,77:1), que queda de reserva.
   El matiz que no se oculta: el rojo nuevo contrasta ALGO MENOS que
   el que deroga (5,19 frente a 5,28 en la superficie más clara). Más
   saturado no es más contrastado; sigue muy por encima del listón. */
body.recinto-schola{
  --verde-presencia:#00E676;
  --rojo-estado:#FF3B30;
}
body.recinto-schola .refugio-presencia{
  display:inline-block;
  width:10px;
  height:10px;
  border-radius:50%;
  margin-left:8px;
  vertical-align:middle;
}
body.recinto-schola .refugio-presencia.es-viva{
  background-color:var(--verde-presencia);
}
body.recinto-schola .refugio-presencia.es-ida{
  background-color:var(--rojo-estado);
}
body.recinto-schola .refugio-mensajes-quien{
  display:flex;
  align-items:center;
  gap:12px;
}
body.recinto-schola .refugio-mensajes-quien h2{
  margin:0;
}
body.recinto-schola .refugio-mensajes-rostro{
  grid-row:1 / 3;
  align-self:center;
}
body.recinto-schola .refugio-mensajes-contacto{
  grid-template-columns:auto 1fr auto;
}
body.recinto-schola .refugio-mensajes-frente{
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:16px;
  flex-wrap:wrap;
}
body.recinto-schola .refugio-invitar{
  text-align:right;
}
body.recinto-schola .refugio-invitar summary{
  list-style:none;
  cursor:pointer;
  display:inline-flex;
}
body.recinto-schola .refugio-invitar summary::-webkit-details-marker{
  display:none;
}
body.recinto-schola .refugio-invitar-forma{
  margin-top:12px;
  padding:16px;
  width:min(420px, 86vw);
  text-align:left;
  display:flex;
  flex-direction:column;
  gap:8px;
  background-color:#0D1017;
  border:1px solid rgba(200,191,166,.14);
}
body.recinto-schola .refugio-invitaciones-lista{
  list-style:none;
  margin:1rem 0 0;
  padding:0;
}
body.recinto-schola .refugio-invitacion{
  padding:14px 16px;
  margin-bottom:10px;
  background-color:#11141C;
  border:1px solid rgba(203,154,49,.4);
}
body.recinto-schola .refugio-invitacion-quien{
  display:flex;
  align-items:center;
  gap:10px;
}
body.recinto-schola .refugio-invitacion-mensaje{
  margin:10px 0;
  color:rgba(240,234,216,.75);
  font-size:13.5px;
  line-height:1.5;
}
body.recinto-schola .refugio-invitacion-acciones{
  display:flex;
  gap:10px;
}
body.recinto-schola .refugio-mensajes-respaldo{
  margin-top:2rem;
  color:rgba(240,234,216,.6);
  font-size:12.5px;
}
body.recinto-schola .refugio-toast{
  position:fixed;
  right:20px;
  bottom:20px;
  z-index:9999;
  max-width:min(360px, calc(100vw - 40px));
  padding:12px 16px;
  background-color:#11141C;
  border:1px solid rgba(203,154,49,.4);
  color:#F0EAD8;
  font-size:13.5px;
  opacity:1;
  transform:none;
  animation:refugio-toast-entra .35s cubic-bezier(.16,1,.3,1);
}
@keyframes refugio-toast-entra{
  from{opacity:0;transform:translateY(12px);}
}
@media (prefers-reduced-motion: reduce){
  body.recinto-schola .refugio-toast{
    animation:none;
  }
}
/* ── 36 · LA 24-S · EL ESCENARIO, LOS PERFILES Y LO QUE LA 24-R DEJÓ ─
   a) EL AVATAR ES UNO: el de Dudas, medido (.tutor-avatar-32): fondo
      #11141C, filete oro al 40 %, iniciales en oro Inter 400 a la
      mitad del lado, radio 0. Se replica en el chip de la casa
      (bloque 52), en el SVG por URL (bloque 59) y en la variante
      «tutor-avatar-text» del paquete (oro macizo con letra oscura),
      para que los cuatro sitios sean el mismo.
   b) LA IDENTIDAD: nombre y apellidos arriba, @usuario debajo a
      tamaño menor en crema desaturada #C8BFA6 (--text-secondary del
      contrato): 10,4:1 sobre #0D1017 y 9,7:1 sobre #11141C, medido —
      texto, ≥4,5:1 de sobra. Todo enlace al perfil, con anillo de
      foco.
   c) LA PRESENCIA ES UN CÍRCULO: la única excepción de radio del
      sistema (SISTEMA §1.4, junto al token verde) — pisa el radio 0 de
      la casa con !important.
   d) LOS INTERRUPTORES (reescrito en la 24-t · 1-a): la fila de
      Preferencias («Reproducir automáticamente…»), medida y copiada
      con las clases del paquete — icono · copy · interruptor. El
      input sigue siendo role=switch con aria-checked.
   e) LA VENTANA DE BIENVENIDA y el MODAL DE INVITAR: capa superior,
      velo --surface-veil (rgba(10,12,16,.985), el del menú móvil),
      estado final por defecto y la animación encima; con
      prefers-reduced-motion, sin animar.
   f) LAS FRANJAS: .tutor-qa-reply (la caja de responder, blanco puro
      de fábrica) y la familia de utilidades tutor-bg-gray-* del
      paquete (grises claros cableados): la regla de la 24-q cubría
      controles y modales, no utilidades de fondo — aquí la CLASE. */
body.recinto-schola .refugio-avatar-iniciales,
body.recinto-schola .tutor-avatar .tutor-avatar-text,
body.recinto-schola .tutor-avatar-initials{
  background-color:#11141C !important;
  color:#CB9A31 !important;
  font-family:'Inter',system-ui,sans-serif !important;
  font-weight:400 !important;
  border:1px solid rgba(203,154,49,.4);
  border-radius:0;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  box-sizing:border-box;
}
body.recinto-schola .tutor-avatar .tutor-avatar-text{
  font-size:.5em;
}
body.recinto-schola img[src*="refugio_avatar"]{
  display:block;
}
body.recinto-schola .refugio-quien{
  display:inline-flex;
  flex-direction:column;
  align-items:flex-start;
  line-height:1.25;
  text-decoration:none;
  color:inherit;
}
body.recinto-schola a.refugio-quien:hover .refugio-quien-nombre{
  color:#FFC13B;
}
body.recinto-schola .refugio-quien-nombre{
  color:#F0EAD8;
  font-weight:500;
}
body.recinto-schola .refugio-quien-usuario{
  color:#C8BFA6;
  font-size:.85em;
  font-weight:400;
}
/* Dudas 4.0.8 pinta el autor capitalizado por CSS
   (.tutor-discussion-card-author): el @usuario va tal cual */
body.recinto-schola .refugio-quien,
body.recinto-schola .refugio-quien-usuario{
  text-transform:none;
}
/* el aviso llega al anuncio concreto (#anuncio-{id}): el hueco sale
   de las variables de las barras fijas (§31), no de un número */
body.recinto-schola .tutor-announcement-item{
  scroll-margin-top:calc(var(--refugio-cabecera-recinto) + var(--refugio-barra-reproductor) + 6px);
}
body.recinto-schola .refugio-quien-avatar{
  display:inline-block;
  line-height:0;
}
body.recinto-schola a.refugio-quien:focus-visible,
body.recinto-schola a.refugio-quien-avatar:focus-visible{
  outline:2px solid #CB9A31;
  outline-offset:2px;
}
body.recinto-schola .refugio-presencia{
  border-radius:50% !important;
}
body.recinto-schola .refugio-interruptores{
  display:block;
}
/* 24-t · 1-a: los deslizadores de la casa (24-s) MURIERON aquí — la
   fila es la de Preferencias con las clases del paquete (tarjeta,
   .tutor-preferences-setting-*, input.tutor-switch). Lo único de la
   casa: el anillo de foco del interruptor, por teclado. */
body.recinto-schola .tutor-switch:focus-visible{
  outline:2px solid #CB9A31;
  outline-offset:3px;
}
body.recinto-schola .refugio-interruptor .tutor-preferences-setting-title{
  color:#F0EAD8;
}
/* 24-u · la fila del NICK (formato de Preferencias): campo + Guardar +
   Copiar a la derecha, el estado debajo (role=status), y la fila
   «Volver a {anterior}» solo mientras dura la reserva */
body.recinto-schola .refugio-nick-accion{
  display:flex;
  align-items:center;
  gap:8px;
  flex-wrap:wrap;
  justify-content:flex-end;
}
body.recinto-schola .refugio-nick-accion input.tutor-form-control{
  width:200px;
  max-width:100%;
}
/* 24-w · EL VEREDICTO, JUSTO DEBAJO DEL CAMPO (no bajo el párrafo) y
   con los DOS estados en el mismo formato: misma posición, misma
   tipografía, mismo tamaño y el mismo punto relleno de 10 px. Solo
   cambian el color y la palabra. La causa del rechazo va en la misma
   línea y en crema: es su propia cuenta, aquí no hay nada que ocultar. */
body.recinto-schola .refugio-nick-estado{
  margin:8px 0 0;
  min-height:1em;
  font-family:'Inter',system-ui,sans-serif;
  font-size:13px;
  line-height:1.45;
  color:#C8BFA6;
}
body.recinto-schola .refugio-nick-accion .refugio-nick-estado{
  flex-basis:100%;
  margin:6px 0 0;
  text-align:right;
}
body.recinto-schola .refugio-nick-punto{
  display:inline-block;
  width:10px;
  height:10px;
  border-radius:50%;
  margin-right:8px;
  vertical-align:middle;
  background-color:currentColor;
}
body.recinto-schola .refugio-nick-punto[hidden]{
  display:none;
}
body.recinto-schola .refugio-nick-estado[data-estado="libre"]{
  color:var(--verde-presencia);
}
body.recinto-schola .refugio-nick-estado[data-estado="ocupado"],
body.recinto-schola .refugio-nick-estado[data-estado="vetado"],
body.recinto-schola .refugio-nick-estado[data-estado="invalido"]{
  color:var(--rojo-estado);
}
body.recinto-schola .refugio-nick-causa{
  color:#C8BFA6;
}
body.recinto-schola .refugio-nick-anterior[hidden]{
  display:none;
}
body.recinto-schola .refugio-nick-anterior{
  display:flex;
  align-items:center;
  gap:12px;
  flex-wrap:wrap;
  margin-top:12px;
  padding-top:12px;
  border-top:1px solid rgba(200,191,166,.14);
}
body.recinto-schola .refugio-nick-anterior-texto{
  font-family:'Inter',system-ui,sans-serif;
  font-size:13px;
  color:#C8BFA6;
}
body.recinto-schola .refugio-nick-bienvenida .refugio-nick-accion input.tutor-form-control{
  width:180px;
}
/* 24-v · el icono de la fila del nick salía ESTRUJADO a 5×20 px (los
   otros tres, 13-17×20): la caja del icono es hija de un flex y, con un
   subtítulo más largo que el de sus vecinos, cede su ancho. Medido en la
   primera pantalla que verá un alumno de pago, y corregido donde toca:
   la caja no encoge. */
body.recinto-schola .refugio-nick .tutor-preferences-setting-icon{
  flex-shrink:0;
}

/* 24-aa · EL VEREDICTO DEJA DE EMPUJAR EL CAMPO FUERA DE LA CAJA.
   Medido a 1920 en la ventana de bienvenida: en reposo el mensaje mide
   188 px y todo cabe; en verde 390 y el campo se sale 31; en rojo 520
   —mas que la tarjeta entera, 502— y se sale 160. El desborde crece UNO
   A UNO con el mensaje (130 px mas de texto, 129 mas de desborde), lo
   que prueba que el ancho de la columna de accion ES el ancho del
   mensaje, sin tope.
   LA CAUSA: el <p> del veredicto vive DENTRO de la columna derecha de la
   fila flex del paquete (functions.php 2644 y 7035), asi que su
   max-content dicta lo que esa columna pide; y como ninguna de las dos
   columnas declara min-width:0, la izquierda cede hasta su min-content
   —los ~75 px medidos, partida palabra por palabra— y lo que sobra se
   sale de la tarjeta. Es el MISMO fallo que la 24-v tapo en el icono
   (regla de aqui arriba): un flex sin suelos declarados.
   Y LA CIFRA QUE MANDA NO ES 520. El estado «invalido» —110 caracteres,
   y el mas facil de disparar de los seis: basta teclear un espacio— pide
   ~1.190 px en una sola linea, mas del doble de la tarjeta. Por eso no
   se arregla dando mas ancho, sino quitandole al veredicto el poder de
   fijarlo: con flex-basis DEFINIDO, la columna deja de pedir su
   max-content y da igual que el mensaje mida 48 caracteres o 110.
   Cubre LAS DOS pantallas —la bienvenida y Ajustes -> Cuenta—, que son
   la misma pieza y no una parecida (functions.php 2643). */
body.recinto-schola .refugio-nick .tutor-preferences-setting-item{
  flex-wrap:wrap;
  align-items:flex-start;
}
body.recinto-schola .refugio-nick .tutor-preferences-setting-content{
  flex:1 1 240px;
  min-width:0;
}
body.recinto-schola .refugio-nick-accion{
  flex:1 1 220px;
  min-width:0;
  max-width:100%;
}
body.recinto-schola .refugio-nick-accion .refugio-nick-estado{
  flex-basis:100%;
  width:100%;
  min-width:0;
  max-width:100%;
  overflow-wrap:anywhere;
}

/* 24-aa · A 390 LA FILA SE APILA Y CABEN LOS TRES INTERRUPTORES.
   Medido: a 390 el campo sobresalia de la tarjeta y solo se veia uno de
   los tres. La ventana ya trae overflow:auto, asi que no se perdia nada
   —pero habia que descubrir por desplazamiento que existian los otros
   dos, en la primera pantalla que ve quien acaba de pagar. Ni un color,
   ni una tipografia, ni una duracion cambian aqui: solo cajas. */
@media (max-width: 600px){
  body.recinto-schola .refugio-nick .tutor-preferences-setting-item{
    flex-direction:column;
    align-items:stretch;
    gap:12px;
  }
  body.recinto-schola .refugio-nick-accion{
    flex:1 1 auto;
    justify-content:flex-start;
  }
  body.recinto-schola .refugio-nick-accion input.tutor-form-control,
  body.recinto-schola .refugio-nick-bienvenida .refugio-nick-accion input.tutor-form-control{
    width:100%;
  }
  body.recinto-schola .refugio-nick-accion .refugio-nick-estado{
    text-align:left;
  }
  body.recinto-schola .refugio-bienvenida{
    padding:20px 16px;
  }
  body.recinto-schola .refugio-bienvenida .refugio-nick,
  body.recinto-schola .refugio-bienvenida .refugio-interruptor{
    margin-bottom:10px;
  }
  body.recinto-schola .refugio-bienvenida .refugio-interruptores{
    margin:12px 0 16px;
  }
}
body.recinto-schola .refugio-privacidad-forma{
  display:flex;
  flex-direction:column;
  gap:12px;
  align-items:flex-start;
}
body.recinto-schola .refugio-bienvenida-velo,
body.recinto-schola .refugio-ventana-velo{
  position:fixed;
  inset:0;
  z-index:100000;
  background-color:rgba(10,12,16,.985);
  display:flex;
  align-items:center;
  justify-content:center;
  padding:16px;
  opacity:1;
  animation:refugio-velo-entra .35s cubic-bezier(.16,1,.3,1);
}
@keyframes refugio-velo-entra{
  from{opacity:0;}
}
body.recinto-schola .refugio-bienvenida,
body.recinto-schola .refugio-ventana{
  width:min(560px, 100%);
  max-height:calc(100svh - 32px);
  overflow:auto;
  padding:28px;
  background-color:#0D1017;
  border:1px solid rgba(203,154,49,.4);
  transform:none;
  animation:refugio-caja-entra .35s cubic-bezier(.16,1,.3,1);
}
@keyframes refugio-caja-entra{
  from{transform:translateY(12px);opacity:0;}
}
@media (prefers-reduced-motion: reduce){
  body.recinto-schola .refugio-bienvenida-velo,
  body.recinto-schola .refugio-ventana-velo,
  body.recinto-schola .refugio-bienvenida,
  body.recinto-schola .refugio-ventana{
    animation:none;
  }
}
body.recinto-schola.refugio-velo-abierto{
  overflow:hidden;
}
body.recinto-schola .refugio-bienvenida-titulo,
body.recinto-schola .refugio-ventana-titulo{
  margin:0 0 12px;
  font-family:'Cormorant Garamond',serif;
  font-size:23.2px;
  font-weight:500;
  line-height:1.2;
  color:#F0EAD8;
}
body.recinto-schola .refugio-bienvenida-texto{
  margin:0 0 12px;
  font-family:'Inter',system-ui,sans-serif;
  font-size:14px;
  line-height:21.7px;
  color:#C8BFA6;
}
body.recinto-schola .refugio-bienvenida .refugio-interruptores{
  margin:20px 0 24px;
}
body.recinto-schola .refugio-bienvenida-pie,
body.recinto-schola .refugio-ventana-pie{
  display:flex;
  justify-content:flex-end;
  gap:10px;
}
body.recinto-schola .refugio-ventana[hidden]{
  display:none;
}
body.recinto-schola .refugio-ventana-velo[hidden]{
  display:none;
}
body.recinto-schola .refugio-invitar-forma{
  margin:0;
  padding:0;
  width:auto;
  background:transparent;
  border:0;
}
body.recinto-schola .refugio-qa-reply,
body.recinto-schola .tutor-qa-reply,
body.recinto-schola [class*="tutor-bg-gray"]{
  background-color:#11141C !important;
}
body.recinto-schola .refugio-usuario-con-copiar{
  position:relative;
}
body.recinto-schola .refugio-copiar{
  margin-top:8px;
}
body.recinto-schola .refugio-copiado{
  margin-left:10px;
  font-family:'Inter',system-ui,sans-serif;
  font-size:14px;
  color:#C8BFA6;
}
body.recinto-schola .refugio-identidad{
  display:inline-flex;
  align-items:center;
  gap:10px;
  vertical-align:top;
}
body.recinto-schola .refugio-mensajes-contacto-quien,
body.recinto-schola .refugio-anuncio-autor,
body.recinto-schola .refugio-invitacion-quien{
  display:flex;
  align-items:center;
}
body.recinto-schola .refugio-identidad .refugio-presencia{
  margin-left:0;
}

/* 24-ae · EL PUNTO, ALINEADO CON LA LINEA DEL NOMBRE Y NO CON EL BLOQUE.
   Medido antes de tocar, en las dos superficies y a los dos anchos: el
   punto caia entre 8 y 9 px POR DEBAJO de la linea del nombre, porque
   `.refugio-identidad` es un flex con align-items:center y quien manda la
   altura es el avatar (40 px). El punto se centraba con esos 40, o sea
   con el conjunto nombre + @nick, en vez de con la primera linea.

   La aritmetica, con las cifras medidas: el nombre va a 16/20, su primera
   linea empieza 2 px por debajo del borde de la identidad y mide 20, asi
   que su centro esta a 12 px del borde. El punto mide 10 y su centro
   estaba a 20. Sobraban 8.

   Se corrige con margen inferior, no con un desplazamiento: en un flex
   centrado, un margen abajo empuja al elemento hacia arriba LA MITAD del
   margen. 16 px de margen suben el punto 8, que es justo el desfase. Y al
   depender del centrado y no de una posicion absoluta, aguanta que cambie
   la altura del avatar.

   CONDICION, que se dice: esto vale porque la identidad SIEMPRE trae dos
   lineas —nombre y @nick, formato cerrado en la 24-s—. Si alguna vez se
   pinta una identidad de una sola linea, este margen la desalinearia al
   reves y habria que medirla aparte.

   No se toca nada mas de la pieza: ni tamano, ni color, ni el formato. */
body.recinto-schola .refugio-identidad .refugio-presencia,
body.recinto-schola .refugio-mensajes-contacto-quien .refugio-presencia{
  margin-bottom:16px;
}
/* la lista de conversaciones (24-s): el <li> lleva la identidad, el
   pendiente a la derecha y el extracto debajo, enlazado al hilo */
body.recinto-schola li.refugio-mensajes-contacto{
  display:grid;
  grid-template-columns:1fr auto;
  gap:6px 12px;
  padding:14px 16px;
  margin-bottom:10px;
  background-color:#0D1017;
  border:1px solid rgba(200,191,166,.14);
}
body.recinto-schola li.refugio-mensajes-contacto:hover{
  border-color:rgba(203,154,49,.4);
}
body.recinto-schola .refugio-mensajes-contacto-quien{
  min-width:0;
}
body.recinto-schola a.refugio-mensajes-extracto{
  grid-column:1 / -1;
  display:block;
  color:rgba(240,234,216,.6);
  font-size:13px;
  text-decoration:none;
}
body.recinto-schola a.refugio-mensajes-extracto:hover{
  color:#F0EAD8;
}
body.recinto-schola a.refugio-mensajes-extracto:focus-visible{
  outline:2px solid #CB9A31;
  outline-offset:2px;
}
body.recinto-schola .refugio-invitacion-verbo{
  color:#C8BFA6;
  font-size:14px;
}
body.recinto-schola .refugio-anuncio-meta{
  display:flex;
  align-items:center;
  gap:16px;
  flex-wrap:wrap;
}
body.recinto-schola .refugio-perfil-cabecera{
  display:flex;
  align-items:center;
  gap:16px;
  margin-bottom:20px;
}
body.recinto-schola .refugio-perfil-cabecera .refugio-quien-nombre{
  font-family:'Cormorant Garamond',serif;
  font-size:23.2px;
  font-weight:500;
}
body.recinto-schola .refugio-perfil-acciones{
  margin:16px 0 24px;
  display:flex;
  gap:10px;
}
body.recinto-schola .refugio-perfil-vacio{
  color:#C8BFA6;
  font-size:14px;
}

/* el chip de iniciales de la casa (bloque 52): desde la 24-s es el
   avatar ÚNICO y vive en §36-a (fondo #11141C, iniciales oro Inter
   400); la definición oro-macizo de la 24-q murió aquí — la revisión
   cazó que sobrevivía y colaba letter-spacing en el canónico. */
.refugio-avatar-iniciales{
  flex-shrink:0;
}
/* la entrada «Avisos» del menú lateral (clonada por el guion) y su
   burbuja — borgoña de ornamento con la crema encima, como la campana */
.refugio-avisos-item{cursor:pointer}
.refugio-aviso-burbuja{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-width:18px;
  height:18px;
  padding:0 5px;
  margin-left:8px;
  border-radius:999px;
  background-color:#7A1E2E;
  color:#F0EAD8;
  font-size:11px;
  font-weight:600;
  line-height:1;
}

/* ── 25 · LA 24-O · EL PRIMARIO HABLA SUELO ─────────────────────────
   La sonda de contraste cazó el «Responder» x-small de Dudas en
   crema sobre oro (2,1:1): el paquete da texto claro a ese tamaño.
   Ley de la casa: sobre el oro habla el suelo — el primario entero,
   a cualquier tamaño. */
body.recinto-schola .tutor-btn-primary{color:#0A0C10 !important}

/* ── 26 · LA 24-P · LA REGLA GENERAL DE LAS SUPERFICIES ─────────────
   La causa del blanco que volvía era EL TEMA (bloques 41-42 de
   functions.php: Tutor servía claro/oscuro por sistema y por
   preferencia de usuario; ahora es UNO, el oscuro). Esta regla cubre
   lo que queda e ignora al tema — medido con censo-blancos en
   esquema claro forzado: 14 claras en 22 pantallas — y a cualquier
   campo o superficie FUTURA del paquete. La excepción de diseño
   sigue siendo el plato del QR (§17, blanco sacro). */
/* a · todo campo habla la piel de la casa, presente o futuro */
body.recinto-schola input:not([type=checkbox]):not([type=radio]):not([type=range]):not([type=file]):not([type=submit]):not([type=button]):not(.tutor-switch),
body.recinto-schola textarea,
body.recinto-schola select{
  background-color:#11141C !important;
  color:#F0EAD8 !important;
  border-color:rgba(200,191,166,.14) !important;
}
body.recinto-schola input::placeholder,
body.recinto-schola textarea::placeholder{color:rgba(200,191,166,.62) !important}
/* b · las superficies del paquete que ignoran el tema */
body.recinto-schola .tutor-modal-content,
body.recinto-schola .tutor-modal-content-white{
  background-color:#0D1017 !important;
  color:#F0EAD8 !important;
  border:1px solid rgba(200,191,166,.14);
}
body.recinto-schola .tutor-is-sticky{background-color:rgba(10,12,16,.88) !important}
/* el avatar de fábrica es blanco; el vestido (chip oro con iniciales)
   gana por especificidad y no se toca */
body.recinto-schola .tutor-avatar{
  background-color:#11141C;
  color:#CB9A31;
  border:1px solid rgba(203,154,49,.4);
}
/* c · el botón SIN VESTIR (sin clase) habla la voz de la casa —
   el «Never» del push fue uno de estos */
body.recinto-schola button:not([class]),
body.recinto-schola input[type=submit]:not([class]),
body.recinto-schola input[type=button]:not([class]){
  background-color:#11141C;
  color:#CB9A31;
  border:1px solid rgba(203,154,49,.4);
}

/* ── 27 · LA 24-P · LA LECCIÓN EN UNA PANTALLA (svh, no dvh) ────────
   Medido a 1440×900: el lateral del área de estudio medía 836px con
   el visor a 900 y arrancando a 134 (barra del recinto 70 + barra
   del curso 64): «Más» caía 14px bajo el pliegue y el botón de
   plegar, detrás. El lateral se acota al visor y el TEMARIO (su hijo
   flexible) se desplaza por dentro — con temarios largos el scroll
   vive en la lista, no en la página. El explorador y la ficha de la
   ruta NO se fuerzan: su scroll es contenido (tarjetas reales; el
   sitio de la portada de la ruta, que falta). */
body.recinto-schola .tutor-learning-sidebar{
  max-height:calc(100svh - 134px);
}
body.recinto-schola .tutor-learning-sidebar .tutor-learning-sidebar-curriculum{
  overflow-y:auto;
}

/* ── 29 · LA 24-P · LAS ILUSTRACIONES, A LA PALETA ──────────────────
   Las ilustraciones del paquete (no-announcements, qna-empty,
   learning-empty, warning, reset…) vienen TOKENIZADAS:
   var(--tutor-visual-gray-1/2/3, hex) y var(--tutor-visual-brand-1,
   #4979e8). La misma jugada que las gráficas: se definen los tokens
   a la paleta en el recinto y la familia entera cambia de golpe.
   Frontera: piezas con hex DURO (el confetti) no entran por aquí —
   y el confetti ya no se sirve (override 24-i). */
body.recinto-schola{
  --tutor-visual-gray-1:#0D1017;
  --tutor-visual-gray-2:#11141C;
  --tutor-visual-gray-3:rgba(200,191,166,.55);
  --tutor-visual-brand-1:#CB9A31;
}
/* aire de la tarjeta del anuncio (16px medidos: corto) */
body.recinto-schola .tutor-announcement-item{padding:24px}

/* ── 28 · LA 24-P · EL AIRE DEL MARCO INFERIOR DE LA FICHA ──────────
   «Información del curso» terminaba EXACTO en el borde del navegador
   (fin de contenido 1175 = fin de documento 1175, padding-bottom 0 y
   sin tira legal en la ficha). El aire va en el PADRE común de los
   tres contextos —información, resolución de preguntas y anuncios—
   para que los tres respiren igual y se lean como una sola cosa. */
body.recinto-schola .tutor-course-details-page{padding-bottom:4rem}

/* ── 24-ag · LAS DOS PAGINAS PUBLICAS DEL CERTIFICADO ────────────────
   DEUDA DE LA 24-AD, y la mas cara de la serie: aquellas paginas se
   publicaron comprobando que FUNCIONABAN —200, castellano, sin dato de
   mas, sin terceros— y sin mirar como se VEIAN. El punto «plantilla de
   la casa» de aquel encargo no se ejecuto. Esto lo ejecuta.

   Y la de verificacion es PUBLICA: la abre cualquiera que escanee el QR
   de un certificado impreso. Servido hasta hoy, medido:

     · el contenedor a x=0 y 1911 px de ancho, sin margen ni aire: el
       titulo, la etiqueta, el campo y el parrafo arrancaban pegados al
       borde izquierdo de la pantalla;
     · un escudo `verify.svg` del paquete, AZUL y con esquinas
       redondeadas —dos cosas que esta casa no tiene— montado sobre el
       titulo, tambien a x=0;
     · y el boton de verificar INVISIBLE: no estaba vacio, es que su
       texto es rgb(10,12,16) —el color del suelo— sobre fondo
       transparente. Color de suelo sobre suelo.

   En la del certificado, la cabecera se pisa: el <svg> del icono y la
   palabra «Certificado» viven en el mismo <h4> flex sin separacion, los
   dos a x=0.

   Nada de esto toca un fichero del plugin: son clases suyas vestidas
   desde el tema. */

/* 1 · EL CONTENEDOR QUE NO HABIA. Ancho de lectura y aire a los lados,
   con el canalon de 16 px que el sistema pide a cualquier ancho. */
.tutor-certificate-verification,
.tutor-single-certificate-wrapper{
  max-width:1100px;
  margin-inline:auto;
  padding-inline:24px;
  padding-block:32px;
}
@media (max-width: 600px){
  .tutor-certificate-verification,
  .tutor-single-certificate-wrapper{
    padding-inline:16px;
    padding-block:20px;
  }
}

/* 2 · LA CABECERA DE LA VERIFICACION. El escudo del paquete se retira:
   es decorativo, viene en un azul que no existe en esta paleta y con un
   radio que esta casa no usa. Se retira en vez de recolorearse con un
   filtro, que seria fragil y seguiria dependiendo de su dibujo. */
.tutor-certificate-verification-header > img{
  display:none;
}
.tutor-certificate-verification-header h2{
  font-family:'Cormorant Garamond',Georgia,'Times New Roman',serif;
  font-weight:500;
  margin:0 0 6px;
}
.tutor-certificate-verification-wrapper,
.tutor-certificate-verification-content{
  width:100%;
}
.tutor-certificate-verification-body{
  max-width:520px;
}

/* 3 · EL BOTON QUE NO SE VEIA. Se le da el oro de la casa y el texto en
   el suelo, que es como se pintan aqui los botones primarios. */
/* 24-ak · 2-a · LA ESPECIFICIDAD, QUE ERA LA MITAD DEL PROBLEMA. La 24-aj
   añadio el selector hermano y el boton siguio invisible: medido con
   getMatchedStyles, la unica regla que le casaba era
   `body.recinto-schola .tutor-btn-primary` —(0,2,1), con color #0A0C10 y
   SIN fondo—, y la mia era (0,2,0). Perdia por un elemento. Se sube por
   encima en vez de recurrir a !important. */
body .tutor-certificate-verification .tutor-btn-primary,
body .tutor-single-certificate-wrapper .tutor-btn-primary,
body.recinto-schola .tutor-certificate-verification .tutor-btn-primary,
body.recinto-schola .tutor-single-certificate-wrapper .tutor-btn-primary{
  background-color:#CB9A31;
  color:#0A0C10;
  border:1px solid #CB9A31;
  font-family:'Montserrat',system-ui,sans-serif;
  font-weight:600;
  letter-spacing:.06em;
  text-transform:uppercase;
  padding:12px 22px;
}
body .tutor-certificate-verification .tutor-btn-primary:hover,
body .tutor-single-certificate-wrapper .tutor-btn-primary:hover,
body.recinto-schola .tutor-certificate-verification .tutor-btn-primary:hover,
body.recinto-schola .tutor-single-certificate-wrapper .tutor-btn-primary:hover{
  background-color:#FFC13B;
  border-color:#FFC13B;
}
body .tutor-certificate-verification .tutor-btn-primary:focus-visible,
body .tutor-single-certificate-wrapper .tutor-btn-primary:focus-visible,
body.recinto-schola .tutor-certificate-verification .tutor-btn-primary:focus-visible,
body.recinto-schola .tutor-single-certificate-wrapper .tutor-btn-primary:focus-visible{
  outline:2px solid #FFC13B;
  outline-offset:3px;
}

/* 4 · EL NOMBRE DE LA CASA, SIN MAYUSCULAS DE TITULO. Salia «Refugio En
   La Palabra», que es el uso ingles; en castellano solo va en mayuscula
   la primera y los nombres propios. */
.tutor-certificate-verification-footer strong{
  text-transform:none;
}

/* 5 · LA CABECERA DEL CERTIFICADO, QUE SE PISABA. El icono y la palabra
   viven en el mismo flex sin separacion: se les da el hueco. */
.tutor-certificate-wrapper > h4{
  gap:10px;
  margin-bottom:18px;
  font-family:'Cormorant Garamond',Georgia,'Times New Roman',serif;
  font-weight:500;
}
.tutor-certificate-wrapper > h4 svg{
  flex-shrink:0;
}

/* 6 · LA IMAGEN DEL CERTIFICADO, a un ancho de lamina y no a pantalla
   completa: es un documento, no un fondo. */
.tutor-pro-certificate-preview-wrapper img{
  max-width:100%;
  height:auto;
}

/* ── 24-ah · EL LATIDO, LO QUE SE ENCIENDE Y EL AVISO ────────────────
   La conversacion que recibe mensaje sube a la primera posicion y se
   ENCIENDE EN ORO ALTO, que es el color de lo que se enciende en esta
   casa (§1). Pulso breve con las fichas de movimiento del sistema, y
   sin animar si el visitante pide menos movimiento. Ningun color nuevo:
   el oro alto y el borgona de la burbuja ya existian. */
body.recinto-schola li.refugio-mensajes-contacto.se-enciende{
  animation:refugio-se-enciende var(--dur-mid,.55s) var(--ease-out,cubic-bezier(.16,1,.3,1)) 2;
}
@keyframes refugio-se-enciende{
  0%{ background-color:rgba(255,193,59,0); }
  40%{ background-color:rgba(255,193,59,.16); }
  100%{ background-color:rgba(255,193,59,0); }
}
@media (prefers-reduced-motion: reduce){
  body.recinto-schola li.refugio-mensajes-contacto.se-enciende{
    animation:none;
    border-left:3px solid var(--accent-hi,#FFC13B);
  }
}

/* El aviso de mensajes nuevos: solo sale si esta leyendo arriba, y al
   pulsarlo baja. Discreto, porque interrumpe una lectura. */
body.recinto-schola .refugio-mensajes-aviso-nuevos{
  display:block;
  width:100%;
  margin:8px 0 0;
  padding:8px 12px;
  background-color:rgba(255,193,59,.12);
  border:1px solid rgba(255,193,59,.45);
  color:#F0EAD8;
  font-family:'Inter',system-ui,sans-serif;
  font-size:13px;
  text-align:center;
  cursor:pointer;
}
body.recinto-schola .refugio-mensajes-aviso-nuevos:hover{
  background-color:rgba(255,193,59,.2);
}
body.recinto-schola .refugio-mensajes-aviso-nuevos:focus-visible{
  outline:2px solid #FFC13B;
  outline-offset:2px;
}

/* ── 40 · LA 24-AI · EL HILO, COMO UNA APLICACION DE MENSAJERIA ─────
   Tres zonas y dos fijas —cabecera arriba, caja de escribir abajo, y en
   medio lo unico que se desplaza—, que es el patron de WhatsApp,
   Messenger e Instagram. Hasta hoy el hilo no tenia NI UNA regla propia
   en esta hoja (comprobado: cero coincidencias) y por eso se desplazaba
   la pagina entera.

   La altura NO lleva min-height. En CSS el valor usado es
   max(min-height, min(max-height, height)), asi que un min-height le
   gana siempre al max-height: con 380 px de minimo, un telefono
   apaisado de 390 px de alto se quedaba con la caja de escribir por
   debajo del borde. Se usa solo max-height, que es lo que protege el
   caso estrecho. */
body.recinto-schola .refugio-mensajes.es-hilo{
  /* 24-aj · 2-b · LA CAJA DE ESCRITURA, ABAJO. Medido antes de tocar: el
     contenedor arranca en y=100 a 1920 y en y=62 a 390, asi que un
     PORCENTAJE del visor no puede saber cuanto hay encima — con
     height:min(74vh,780px) el contenedor medía 780 px en un visor de 1080
     y quedaban 200 px de hueco por debajo de la caja de escritura.
     El reparto interno no estaba mal: el historial ya tenia flex:1 1 auto
     y su propio desplazamiento. Lo que estaba mal era la ALTURA DEL
     CONTENEDOR. Se resta lo que hay encima, y el guion afina el valor con
     el top REAL; si el guion no corre, vale el medido, que es la ley del
     estado final por defecto.
     svh y no dvh: en movil la barra del navegador aparece y desaparece, y
     con dvh la caja se iria fuera de pantalla justo al abrir el teclado. */
  --refugio-hilo-arriba:100px;
  --refugio-hilo-margen:24px;
  display:flex;
  flex-direction:column;
  height:calc(var(--refugio-hilo-visor, 100svh) - var(--refugio-hilo-arriba) - var(--refugio-hilo-margen));
}
/* 24-aj · y el relleno que el panel reserva por debajo. Medido:
   .tutor-dashboard-page trae padding-bottom:88px, y con la caja pegada al
   fondo eso hacia rodar la pagina entera 76 px — lo que el encargo
   prohibe. Se anula SOLO con un hilo abierto; en la lista sigue haciendo
   su papel. Es una clase del paquete vestida desde el tema: no se toca
   ningun fichero de plugin.
   Si :has() no estuviera disponible, el guion ya descuenta ese relleno del
   calculo, asi que la pagina tampoco rodaria: solo quedaria mas aire. */
body.recinto-schola .tutor-dashboard-page:has(.refugio-mensajes.es-hilo){
  padding-bottom:0;
}
body.recinto-schola .refugio-mensajes.es-hilo .refugio-mensajes-cabecera{
  flex:0 0 auto;
  margin-bottom:.75rem;
  padding-bottom:.75rem;
  border-bottom:1px solid rgba(200,191,166,.14);
}
body.recinto-schola .refugio-mensajes.es-hilo .refugio-mensajes-hilo{
  flex:1 1 auto;
  min-height:0;              /* sin esto un hijo flex no encoge y desborda */
  overflow-y:auto;
  /* que el desplazamiento del hilo no arrastre la pagina al llegar al
     tope, que es lo que hace «rebotar» una conversacion en movil */
  overscroll-behavior:contain;
  padding-right:6px;
}
/* el hilo pasa a ser una caja que se desplaza, asi que tiene que poder
   recibir el foco: sin esto no habia NINGUN camino de teclado hasta el
   historial, porque el unico disparador era el evento de desplazamiento. */
body.recinto-schola .refugio-mensajes-hilo:focus-visible{
  outline:2px solid #FFC13B;
  outline-offset:-2px;
}
body.recinto-schola .refugio-mensajes.es-hilo .refugio-mensajes-forma{
  flex:0 0 auto;
  margin-top:.9rem;
  padding-top:.9rem;
  border-top:1px solid rgba(200,191,166,.14);
}
/* el aviso de mensajes nuevos es el CUARTO hijo de este flex y hasta hoy
   no habia salido nunca —sin altura, el hilo no desplazaba y la rama era
   codigo muerto—. Sin esta linea le roba alto al historial. */
body.recinto-schola .refugio-mensajes.es-hilo .refugio-mensajes-aviso-nuevos{
  flex:0 0 auto;
}
/* el enlace al historial anterior: es un enlace de verdad, y solo se
   convierte en boton de tramos si el guion corre. */
body.recinto-schola .refugio-mensajes-anteriores{
  display:block;
  margin:0 auto .75rem;
  padding:6px 14px;
  border:1px solid rgba(203,154,49,.4);
  background:none;
  color:#CB9A31;
  font-size:12.5px;
  text-decoration:none;
  text-align:center;
}
body.recinto-schola .refugio-mensajes-anteriores:hover,
body.recinto-schola .refugio-mensajes-anteriores:focus-visible{
  color:#FFC13B;
  border-color:#FFC13B;
}
body.recinto-schola .refugio-mensajes-anteriores[aria-busy="true"]{
  opacity:.55;
}
@media (max-width: 600px){
  body.recinto-schola .refugio-mensajes.es-hilo{
    --refugio-hilo-arriba:62px;
    --refugio-hilo-margen:12px;
  }
  body.recinto-schola .refugio-mensajes.es-hilo .refugio-mensajes-forma{
    margin-top:.6rem;
    padding-top:.6rem;
  }
  body.recinto-schola .refugio-mensajes.es-hilo .refugio-mensaje{
    max-width:88%;
  }
}
/* EL SEGURO: cuando no hay alto para tres zonas —telefono apaisado, o
   zoom al 400 %, que es un requisito de accesibilidad y no una rareza—
   se vuelve al flujo de siempre. Mas vale una pagina que rueda entera
   que una caja de escribir fuera de la pantalla. */
@media (max-height: 560px){
  body.recinto-schola .refugio-mensajes.es-hilo{
    display:block;
    height:auto;
    max-height:none;
  }
  body.recinto-schola .refugio-mensajes.es-hilo .refugio-mensajes-hilo{
    overflow-y:visible;
  }
}

/* ── 41 · LA 24-AI · EL DESPLEGABLE DEL CERTIFICADO ─────────────────
   La 24-ag vistio las DOS paginas por su contenedor —la regla 1 del
   bloque 39 nombra a las dos— pero el boton solo en la de verificacion.
   En la del certificado quedo con el primary del paquete: texto #0A0C10
   sobre fondo transparente, o sea el color del suelo sobre el suelo.

   Medido con muestreo de pixeles, no deduciendo el fondo:
     contraste 1,00:1 a 1920 Y a 390
     el recorte PNG del boton pesa 252 B: un solo color
   Asi que lo de «sale a 390 y no a 1920» era otra cosa: sale en los dos
   y no se ve en ninguno. El selector hermano se anadio ARRIBA, en las
   reglas del bloque 39 que ya existian, para no dejar dos definiciones
   del mismo boton. Aqui queda solo lo que no tenia regla: el desplegable
   PDF/JPG, que es un primary de solo icono. */
body .tutor-single-certificate-wrapper .tutor-certificate-download-btn-group .tutor-btn-icon,
body.recinto-schola .tutor-single-certificate-wrapper .tutor-certificate-download-btn-group .tutor-btn-icon{
  background-color:#CB9A31;
  color:#0A0C10;
  border:1px solid #CB9A31;
}
.tutor-single-certificate-wrapper .tutor-certificate-download-btn-group .tutor-btn-icon:hover{
  background-color:#FFC13B;
  border-color:#FFC13B;
}

/* ── 42 · LA 24-AL · EL CERTIFICADO TIENE QUE RODAR ─────────────────
   Medido en el area de leccion, a 390 px:

     .tutor-certificate-wrapper        alto 867, acaba en y=993
     visor 844  ->  149 px por debajo del borde, inalcanzables
     .tutor-learning-area   height 774px fijo · overflow-y HIDDEN
                            y su contenido mide 1019: recorta 245 px

   Ni la pagina rueda (documento 844 = visor) ni la caja (scrollHeight ==
   clientHeight). Asi que «Curso completado por», el curso y el profesor
   quedaban fuera sin manera de llegar. Es lo mismo que le paso al area de
   leccion en la 24-q: un alto fijado al visor con contenido que no cabe.

   El hijo `.tutor-learning-area-content` YA trae overflow-y:auto, pero con
   max-height:100% de un padre de 774 px y altura propia de 963 no llega a
   activarse nunca.

   SE ACOTA AL CERTIFICADO con :has(), para no cambiar el comportamiento de
   las lecciones —que tienen su propio reparto con la barra lateral—. */
body .tutor-learning-area:has(.tutor-learning-area-certificate){
  overflow-y:auto;
  overscroll-behavior:contain;
}
body .tutor-learning-area:has(.tutor-learning-area-certificate) .tutor-learning-area-content{
  max-height:none;
}
/* y el anillo de foco, porque una caja que rueda tiene que poder recibir
   el foco para recorrerse con teclado (la leccion del tabindex de la
   24-ai). El atributo lo pone el guion del aula. */
body .tutor-learning-area:focus-visible{
  outline:2px solid #FFC13B;
  outline-offset:-2px;
}
@supports not selector(:has(*)){
  /* respaldo sin :has(): se acepta que ruede el area en todo el recinto
     antes que dejar contenido inalcanzable. */
  body.recinto-schola .tutor-learning-area{ overflow-y:auto; }
}

/* ── 43 · LA 24-AM · LA PAGINA DEL CERTIFICADO, MAQUETADA ───────────
   Medido antes de tocar: los datos NO eran una tabla ni un <dl>, sino
   `div.tutor-tiny` uno por linea ocupando los 1052 px de ancho, de modo
   que «Curso completado por», el alumno, «Curso» y su nombre caian en
   cuatro renglones seguidos. Y los botones salian con huecos de 5 y 0 px
   entre si: pegados pixel a pixel.

   LA TABLA ES DE VERDAD —<table>, <th scope="row">, <td>— y la construye
   el guion del bloque 86 a partir de los pares que el paquete ya emite
   (`div.tutor-flex-column` con etiqueta y valor dentro). No son dos
   columnas fingidas: es informacion tabular, y quien usa lector de
   pantalla tiene que poder emparejar etiqueta y valor. */
body .refugio-cert-datos{
  width:100%;
  border-collapse:collapse;
  margin:1.5rem 0;
}
body .refugio-cert-datos th,
body .refugio-cert-datos td{
  /* 24-an · 1-a · el texto salia PEGADO al marco izquierdo y se pisaba con
     el filete: no habia relleno horizontal, solo vertical. */
  padding:12px 16px;
  border-bottom:1px solid rgba(200,191,166,.14);
  text-align:left;
  vertical-align:top;
  font-size:14px;
  line-height:1.5;
}
body .refugio-cert-datos th{
  width:34%;
  /* y la columna de etiquetas respira de la de valores */
  padding-right:24px;
  font-family:'Jost',system-ui,sans-serif;
  font-weight:400;
  color:rgba(240,234,216,.72);
}
body .refugio-cert-datos td{
  color:#F0EAD8;
}
/* 24-an · 1-b · LA TABLA NO CERRABA. Quitarle el filete a la ultima fila
   —que es lo que hacia esta regla de la 24-am— dejaba el bloque abierto por
   abajo: la fila del numero de certificado se derramaba en la pagina. Se
   conserva el filete en todas, que es lo que cierra el conjunto. */
body .refugio-cert-datos{
  border-bottom:1px solid rgba(200,191,166,.14);
}
/* A 390 NO CABEN DOS COLUMNAS. Se apila, pero sin volver a la lista de
   antes: la etiqueta va pequeña y desaturada, el valor debajo en crema, y
   el aire separa los PARES, no los renglones. */
@media (max-width: 600px){
  body .refugio-cert-datos th,
  body .refugio-cert-datos td{
    display:block;
    width:auto;
    padding-right:16px;
    padding-left:16px;
  }
  /* 24-an · el shorthand de aqui PISABA el padding lateral de arriba, y a
     390 el texto volvia a quedarse pegado al marco. Se escribe entero. */
  body .refugio-cert-datos th{
    padding:14px 16px 1px;
    border-bottom:0;
    font-size:12px;
    letter-spacing:.04em;
  }
  body .refugio-cert-datos td{
    padding:0 16px 14px;
  }
}

/* LOS BOTONES, CON JERARQUIA Y CON AIRE. Medido: huecos de 5 y 0 px. */
body .tutor-single-certificate-wrapper .tutor-certificate-download-btn-group,
body .tutor-single-certificate-wrapper .tutor-certificate-header > .tutor-flex{
  display:flex;
  flex-wrap:wrap;
  align-items:center;
  gap:12px;
  margin-block:1.25rem;
}
/* el desplegable PDF/JPG cuelga del grupo y salia pegado al de descargar */
body .tutor-single-certificate-wrapper .tutor-popover-menu{
  margin-top:8px;
}
body .tutor-single-certificate-wrapper .tutor-popover-menu-item{
  padding:8px 14px;
}

/* LA CABECERA QUE SE PISABA (registrada en la 24-ae): el texto arrancaba
   en la misma x que el icono, asi que se solapaban. */
body .tutor-certificate-wrapper > h4,
body .tutor-single-certificate-wrapper > h4{
  display:flex;
  align-items:center;
  gap:10px;
}
body .tutor-certificate-wrapper > h4 svg,
body .tutor-single-certificate-wrapper > h4 svg{
  flex:0 0 auto;
}

/* ── 44 · LA 24-AN · COMPARTIR E IMPRIMIR ───────────────────────────
   Los dos botones no hacian nada: medido, `window.TutorCore` y
   `window.PrintDiv` salian `undefined` y el modal del paquete no llegaba
   al DOM, porque esta pagina no carga sus scripts. El bloque 87 los
   construye con enlaces propios —sin un solo script de terceros, que es
   la decision 16— y aqui se visten.

   Ningun color nuevo: suelo, crema, oro y el filete de la familia. */
body .refugio-compartir-velo{
  position:fixed;
  inset:0;
  z-index:9999;
  display:flex;
  align-items:center;
  justify-content:center;
  padding:20px;
  background:rgba(10,12,16,.9);
}
body .refugio-compartir-velo[hidden]{display:none !important}
body .refugio-compartir-caja{
  position:relative;
  width:100%;
  max-width:360px;
  padding:26px 24px 22px;
  border:1px solid rgba(200,191,166,.2);
  background:#0D1017;
}
body .refugio-compartir-caja:focus-visible{
  outline:2px solid #FFC13B;
  outline-offset:3px;
}
body .refugio-compartir-caja h2{
  margin:0 0 16px;
  font-family:'Cormorant Garamond',Georgia,serif;
  font-size:21px;
  font-weight:500;
  color:#F0EAD8;
}
body .refugio-compartir-lista{
  margin:0 0 16px;
  padding:0;
  list-style:none;
}
body .refugio-compartir-lista li + li{margin-top:2px}
body .refugio-compartir-lista a{
  display:block;
  padding:11px 14px;
  border:1px solid rgba(200,191,166,.16);
  color:#F0EAD8;
  font-size:14px;
  text-decoration:none;
}
body .refugio-compartir-lista a:hover,
body .refugio-compartir-lista a:focus-visible{
  border-color:#CB9A31;
  color:#FFC13B;
}
body .refugio-compartir-copiar{
  width:100%;
  padding:11px 14px;
  border:1px solid #CB9A31;
  background:#CB9A31;
  color:#0A0C10;
  font-family:'Montserrat',system-ui,sans-serif;
  font-size:12.5px;
  font-weight:600;
  letter-spacing:.06em;
  text-transform:uppercase;
  cursor:pointer;
}
body .refugio-compartir-copiar:hover{background:#FFC13B;border-color:#FFC13B}
body .refugio-compartir-cerrar{
  position:absolute;
  /* 24-an · medido a 390: la equis salia de 34x34 y el objetivo tactil
     minimo es 44x44. Se agranda la caja sin mover la aspa, que es lo que
     se ve: el dibujo sigue igual y el dedo acierta. */
  top:4px;
  right:6px;
  width:44px;
  height:44px;
  display:flex;
  align-items:center;
  justify-content:center;
  border:0;
  background:none;
  color:rgba(240,234,216,.7);
  font-size:24px;
  line-height:1;
  cursor:pointer;
}
body .refugio-compartir-cerrar:hover{color:#FFC13B}
body .refugio-compartir-copiar:focus-visible,
body .refugio-compartir-cerrar:focus-visible{
  outline:2px solid #FFC13B;
  outline-offset:2px;
}

/* LA HOJA IMPRESA. Lo que se lleva el alumno al papel es el certificado,
   no los botones ni el menu del panel ni el velo de compartir. */
@media print{
  body .tutor-certificate-header-left,
  body .tutor-certificate-download-btn-group,
  body .refugio-compartir-velo,
  body .tutor-dashboard-sidebar,
  body .recinto-barra,
  body header.elementor-location-header,
  body footer.elementor-location-footer,
  body .refugio-vuelta-cursos,
  body .skip{
    display:none !important;
  }
  body,
  body .tutor-single-certificate-wrapper,
  body .tutor-certificate-wrapper{
    background:#fff !important;
    color:#111 !important;
    max-width:none !important;
    padding:0 !important;
    margin:0 !important;
  }
  /* la tabla de datos tiene que leerse en papel: filetes oscuros */
  body .refugio-cert-datos th,
  body .refugio-cert-datos td{
    color:#111 !important;
    border-bottom-color:rgba(0,0,0,.25) !important;
  }
  body .refugio-cert-datos{
    border-bottom-color:rgba(0,0,0,.25) !important;
  }
  /* y que el area de leccion no recorte el certificado al imprimir */
  body .tutor-learning-area{
    height:auto !important;
    max-height:none !important;
    overflow:visible !important;
  }
}


/* ── 45 · LA 24-AO · LA TARJETA ENTERA ABRE LA CONVERSACION ──────────
   Medido por el encargante y confirmado con la cifra: el hilo se abria
   pulsando SOLO la vista previa, que es el 17 % de la tarjeta (794x15 de
   828x91). El resto no hacia nada, y el cursor ni siquiera cambiaba.

   NO SE ANIDA UN ENLACE DENTRO DE OTRO, que es la trampa: si la tarjeta
   entera fuera un <a>, el nombre y el avatar dejarian de poder llevar al
   perfil. Se hace al reves —el patron del enlace estirado—: el enlace del
   extracto, que ya existia, estira un ::after sobre toda la tarjeta, y los
   DOS enlaces del perfil se elevan por encima. Sin marcado nuevo y sin
   JavaScript.

   Y el estado final es el valor por defecto: si esta hoja no carga, el
   extracto sigue siendo el enlace de siempre. No se pierde nada.

   SE ELEVAN LOS ENLACES, NO EL CONTENEDOR. Elevar
   .refugio-mensajes-contacto-quien entero dejaba muerta la primera fila
   completa: medido con elementFromPoint, 32 % de la tarjeta sin abrir
   nada. Elevando solo los dos <a>, el reparto queda 89/11/0 a 1500 px y
   74/26/0 a 390. Cero puntos muertos.

   Ningun color nuevo: el oro del anillo y el filete ya estaban. */
body.recinto-schola li.refugio-mensajes-contacto{
  position:relative;
}
body.recinto-schola a.refugio-mensajes-extracto::after{
  content:'';
  position:absolute;
  inset:0;
}
body.recinto-schola a.refugio-quien-avatar,
body.recinto-schola a.refugio-quien{
  position:relative;
  z-index:1;
}

/* EL ANILLO SE QUEDA DONDE LA CASA LO PONE, y aqui va la razon porque se
   intento lo contrario y se midio.

   Se probo llevar el anillo a la tarjeta entera con :has(), que es lo que
   parece correcto: lo que Intro activa es la tarjeta, no el renglon. Pero
   la casa tiene una regla global —sistema.css:334, «:focus-visible{
   outline:2px solid var(--accent-hi)!important }»— que se gano a pulso
   contra el reset de Elementor y que NO se puede quitar de un elemento
   enfocado. Resultado medido: DOS anillos a la vez, el oro alto del
   enlace y otro en la tarjeta. Dos anillos es peor que uno.

   Asi que se retira lo añadido. El anillo lo pinta el contrato de la casa,
   en oro alto y a 11,73:1 sobre el fondo compuesto —medido tabulando de
   verdad, no con focus() por JS—, y marca el renglon del extracto. Que el
   anillo no cubra toda el area pulsable es una observacion real, y va al
   informe: cambiarlo seria tocar el contrato global del foco, que es otra
   decision y no la de esta tarjeta. */

/* EL OBJETIVO TACTIL, que a 390 se queda corto: el avatar salia de 40x40 y
   el nombre de 157x37, los dos por debajo de 44 y los dos POR ENCIMA del
   area del hilo, o sea que fallar el dedo abre otra cosa. Se agranda la
   caja del enlace sin mover el dibujo —el margen negativo devuelve los dos
   pixeles que la caja gana— y la tarjeta crece 4 px, de 91 a 95. */
body.recinto-schola a.refugio-quien-avatar{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-width:44px;
  min-height:44px;
  margin:-2px;
}
body.recinto-schola a.refugio-quien{
  display:inline-flex;
  align-items:center;
  min-height:44px;
}


/* ── 46 · LA 24-AO · LAS COMPETENCIAS, QUE SE LEIAN COMO UN PARRAFO ──
   El canal no deja escribir sobre el tipo `courses` —medido con tres
   celdas: curso+meta NO, curso+menu_order NO, leccion+meta SI—, asi que
   las competencias no se pudieron asignar y el encargante tendra que
   ponerlas. Pero la FILA si se pudo medir: se inyectaron insignias reales
   —<span class="tutor-badge">, que es lo que emite Badge::make()— y se
   construyo la fila igual que la construye el bloque 86.

   Y ahi se vio lo que ningun recuento decia. El recuento daba «cuatro
   renglones, cuatro insignias»; mirando la foto, las cuatro competencias
   se leian CORRIDAS, como un parrafo: «…de que trata Distinguir una cita
   de un comentario dentro de una misma pagina Seguir el hilo…». La clase
   `tutor-badge` del paquete no tiene vestido en el aula —ni filete, ni
   relleno, ni separacion— asi que las insignias no eran insignias.

   Con filete y relleno, cada competencia queda en su caja: a 390 una por
   linea, a 1920 dos por renglon. CABEN EN LA COLUMNA DE VALORES y no hace
   falta una fila a lo ancho, que era la pregunta del encargo. El peor caso
   medido —cuatro largas— deja la fila en 183 px a 1920 y 286 a 390.

   Ningun color nuevo: el filete de la familia y la crema de siempre.
   Radio 0, como todo el sitio. */
body .refugio-cert-datos td .tutor-badge{
  display:inline-block;
  margin:0 8px 8px 0;
  padding:5px 10px;
  border:1px solid rgba(200,191,166,.22);
  color:#F0EAD8;
  font-size:13px;
  line-height:1.45;
}

/* y en papel, tinta oscura: el resto de la tabla ya se imprime en
   rgb(17,17,17) sobre blanco (bloque 44) y estas no pueden ser la
   excepcion. */
@media print{
  body .refugio-cert-datos td .tutor-badge{
    border-color:rgba(0,0,0,.3);
    color:#111 !important;
  }
}


/* ── 47 · LA 24-AP · LA SANGRIA DEL @NICK, Y EL PUNTO A LA DERECHA ───
   PRIMERO LA CONFESION, porque la causa era mia. El encargante vio que el
   @usuario no llevaba la misma sangria en las tres conversaciones. Medido
   con las cajas, la aritmetica canta:

       tarjeta 1   caja 122   nick  82 ->  (122-82)/2 = 20  ->  x = 87
       tarjeta 2   caja 157   nombre 141 -> (157-141)/2 =  8  ->  x = 75
       tarjeta 3   caja 157   nick  69 ->  (157-69)/2 = 44  ->  x = 111

   Cada renglon estaba CENTRADO en su caja, y como nombre y @nick miden
   distinto, sus bordes izquierdos bailaban. La regla base de la casa
   (linea 1371) dice `align-items:flex-start`, que es lo correcto; lo que
   la pisaba era la regla que yo añadi en la 24-ao para darle 44 px de alto
   al enlace:

       a.refugio-quien{ display:inline-flex; align-items:center; … }

   En una columna, `align-items` gobierna el eje HORIZONTAL. Queria centrar
   en vertical y centre en horizontal. Se corrige con lo que de verdad
   hacia falta: `justify-content:center` para el eje vertical y
   `flex-start` para el horizontal. Las tres sangrias quedan en x=67.

   Y EL PUNTO DE PRESENCIA AL EXTREMO DERECHO, decidido por el encargante:
   estaba pegado al nombre, a 584-619 px del borde y con la sangria del
   nick como vecina. Ahora va al borde derecho de la tarjeta, centrado
   vertical, y con el MISMO aire que la tarjeta: su relleno es 16 px y el
   filete 1, de ahi los 17 px medidos. Sube de 10 a 12 px —se lee como
   presencia, no como adorno— y se queda POR DEBAJO del enlace del hilo:
   comprobado con elementFromPoint, pulsar el punto abre la conversacion y
   el reparto sigue en 91/9/0, igual que antes. El aria-label de la 24-ai
   no se toca. La cabecera del hilo mantiene el suyo: alli no hay columna.

   Ningun color nuevo: el punto conserva el suyo. */
body.recinto-schola a.refugio-quien{
  align-items:flex-start;
  justify-content:center;
}
body.recinto-schola li.refugio-mensajes-contacto .refugio-presencia{
  position:absolute;
  right:16px;
  top:50%;
  transform:translateY(-50%);
  width:12px;
  height:12px;
  margin:0;
}
