/* TCB ContentWP — front. Tokens y base heredados de TestWP, con prefijo .tcbc-
   La paleta es configurable desde Ajustes (Fase 5) mediante :root inline. */
:root{
	--tcbc-primary:#2B6CB0;
	--tcbc-accent:#F6AD37;
	--tcbc-ink:#22314a;
	--tcbc-ok:#1a7f37;
	--tcbc-bad:#d63638;
	--tcbc-muted:#6b7280;
	--tcbc-bg:#f4f6f9;
	--tcbc-locked:#5a6072;
	--tcbc-dl-bg:#2B6CB0;
	--tcbc-dl-fg:#fff;
}

/* Tipografía Montserrat auto-alojada (sin llamadas externas). */
@font-face{
	font-family:'TCBC Montserrat';
	src:url(../fonts/montserrat-latin.woff2) format('woff2');
	font-weight:400 800;font-display:swap;font-style:normal;
	unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+2000-206F,U+2074,U+20AC,U+2122;
}
@font-face{
	font-family:'TCBC Montserrat';
	src:url(../fonts/montserrat-latin-ext.woff2) format('woff2');
	font-weight:400 800;font-display:swap;font-style:normal;
	unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+2020,U+20A0-20AB;
}

.tcbc-catalog,.tcbc-block,.tcbc-material{font-family:'TCBC Montserrat','Segoe UI',Tahoma,sans-serif;color:var(--tcbc-ink);line-height:1.55}

/* Cabecera de sección */
.tcbc-section-header{background:var(--tcbc-primary);color:#fff;padding:16px 20px;border-radius:12px;font-weight:800;box-shadow:0 8px 22px rgba(20,40,80,.14)}

/* Tarjeta de material */
.tcbc-card{background:#fff;border:1px solid #e6e9ef;border-radius:14px;padding:16px 18px;margin:12px 0;box-shadow:0 4px 14px rgba(20,40,80,.06);display:flex;align-items:center;gap:14px}
.tcbc-card-icon{width:42px;height:42px;flex:0 0 42px;border-radius:10px;background:rgba(43,108,176,.12);display:flex;align-items:center;justify-content:center;color:var(--tcbc-primary);font-weight:800}
.tcbc-card-body{flex:1 1 auto}
.tcbc-card-title{font-weight:var(--tcbc-tm-fw,800);font-size:calc(1rem*var(--tcbc-tm-scale,1));color:var(--tcbc-ink);margin:0 0 2px}
.tcbc-card-meta{font-size:.85rem;color:var(--tcbc-muted)}

/* Botones */
.tcbc-btn{display:inline-flex;align-items:center;gap:8px;border:0;border-radius:12px;padding:11px 20px;font-weight:800;cursor:pointer;font-size:15px;text-decoration:none;transition:transform .2s,box-shadow .2s,filter .2s}
.tcbc-btn-primary{background:var(--tcbc-primary);color:#fff}
.tcbc-btn-primary:hover{transform:translateY(-2px);box-shadow:0 6px 16px rgba(20,40,80,.18);filter:brightness(.97)}

/* Estados de bloqueo (catálogo, Fase 5) */
.tcbc-badge{display:inline-flex;align-items:center;gap:6px;font-size:.72rem;font-weight:800;letter-spacing:.02em;text-transform:uppercase;padding:3px 10px;border-radius:12px}
.tcbc-badge-locked{background:rgba(138,148,166,.16);color:var(--tcbc-locked)}
.tcbc-badge-open{background:rgba(26,127,55,.14);color:var(--tcbc-ok)}
.tcbc-badge-soon{background:rgba(246,173,55,.18);color:#8a5b12}
.tcbc-locked-cta{background:#fbfcfe;border:1px dashed #cdd6e2;border-radius:12px;padding:16px 18px;text-align:center;color:var(--tcbc-muted)}
.tcbc-locked-msg{display:block;margin:8px 0 12px;color:var(--tcbc-ink);font-weight:600}
.tcbc-locked-actions{display:inline-flex;flex-wrap:wrap;gap:8px;justify-content:center}

@media(max-width:600px){.tcbc-card{flex-direction:column;align-items:flex-start}}

/* Vista de Tema: documentos (descarga) + vídeos (embed) */
.tcbc-tema-view{font-family:'TCBC Montserrat','Segoe UI',Tahoma,sans-serif;color:var(--tcbc-ink);max-width:900px}
.tcbc-tema-title{color:var(--tcbc-ink);margin:0 0 14px;font-weight:var(--tcbc-tm-fw,800);font-size:calc(1em*var(--tcbc-tm-scale,1))}
.tcbc-res-list{display:flex;flex-direction:column;gap:12px}
.tcbc-res-item{background:#fff;border:1px solid #e6e9ef;border-radius:14px;padding:14px 16px;box-shadow:0 4px 14px rgba(20,40,80,.06)}
.tcbc-res-doc{display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.tcbc-res-ico{flex:0 0 auto;font-size:.72rem;font-weight:800;color:var(--tcbc-primary);background:color-mix(in srgb,var(--tcbc-primary) 12%,#fff);border-radius:8px;padding:6px 10px}
.tcbc-res-doc .tcbc-res-name{font-weight:700;flex:1 1 auto;min-width:120px;font-size:var(--tcbc-file-px,inherit)}
.tcbc-res-meta{color:var(--tcbc-muted);font-size:.85rem}
.tcbc-res-dl{margin-left:auto}
/* Color del botón de descarga (fondo + icono/texto), configurable en Ajustes → Contenido. */
.tcbc-btn-primary.tcbc-res-dl{background:var(--tcbc-dl-bg,var(--tcbc-primary));color:var(--tcbc-dl-fg,#fff)}
/* Hover del botón de descarga: se conserva solo la animación de subida; se
   quitan la sombra y el oscurecido (brillo). La transición sigue definida. */
.tcbc-btn-primary.tcbc-res-dl:hover{box-shadow:none;filter:none;transform:translateY(-2px)}
/* El texto «Descargar» y el icono NO cambian de color al pasar el ratón: se
   mantiene el color configurado en hover/focus/active (impide que el color de
   enlace del tema de WordPress recoloree el texto o el icono, que usa
   currentColor). En la plantilla Lista el enlace conserva su color de acento. */
.tcbc-btn-primary.tcbc-res-dl:hover,.tcbc-btn-primary.tcbc-res-dl:focus,.tcbc-btn-primary.tcbc-res-dl:active{color:var(--tcbc-dl-fg,#fff)!important}
.tcbc-tpl-lista .tcbc-btn-primary.tcbc-res-dl:hover,.tcbc-tpl-lista .tcbc-btn-primary.tcbc-res-dl:focus,.tcbc-tpl-lista .tcbc-btn-primary.tcbc-res-dl:active{color:var(--tcbc-dl-bg,var(--tcbc-primary))!important}
.tcbc-dl-ico{display:inline-block;vertical-align:middle;flex:0 0 auto}
.tcbc-res-dl--icon{padding:var(--tcbc-ico-dlpad,10px)}
.tcbc-tpl-lista .tcbc-res-dl--icon{text-decoration:none}
.tcbc-res-video .tcbc-res-name{font-weight:700;margin-bottom:8px;font-size:var(--tcbc-video-px,inherit)}
.tcbc-embed iframe{max-width:100%;width:100%;border:0;border-radius:10px;aspect-ratio:16/9;height:auto}
@media(max-width:600px){.tcbc-res-dl{margin-left:0}}

/* Catálogo (convocatoria / oposición) */
/* Ocupa todo el ancho del contenedor (igual que la cabecera visual del banner),
   para que las convocatorias, bloques y temas queden alineados con ella. El ancho
   máximo lo pone la columna de contenido del tema del sitio, no el plugin. */
.tcbc-catalog{font-family:'TCBC Montserrat','Segoe UI',Tahoma,sans-serif;color:var(--tcbc-ink);width:100%}
/* Modelo de caja uniforme: así la cabecera del bloque y las filas de tema tienen
   exactamente el mismo ancho, sin depender del box-sizing del tema del sitio. */
.tcbc-catalog,.tcbc-catalog *,.tcbc-tema-view,.tcbc-tema-view *{box-sizing:border-box}
.tcbc-cat-title{color:var(--tcbc-ink);margin:0 0 14px;font-weight:800}
.tcbc-cat-filter{width:100%;max-width:360px;padding:9px 12px;border:1px solid #d7dde6;border-radius:10px;margin:0 0 14px}
.tcbc-tabs{display:flex;gap:8px;flex-wrap:wrap;margin:0 0 16px}
.tcbc-tab{border:1px solid #d7dde6;background:#fff;color:var(--tcbc-ink);border-radius:999px;padding:8px 16px;font-weight:700;cursor:pointer}
.tcbc-tab.active{background:var(--tcbc-primary);border-color:var(--tcbc-primary);color:#fff}
.tcbc-temas-acc{display:flex;flex-direction:column;gap:10px}
/* Rejilla de 2 columnas: cabecera (1fr) + chip de completado (auto) en la fila 1;
   el cuerpo ocupa toda la fila 2. El chip NUNCA se cae a otra línea aunque el
   título sea largo, así todas las filas tienen la misma altura y ancho. El botón
   sigue siendo, en el DOM, el hermano previo al cuerpo: el acordeón no se toca. */
.tcbc-tema-acc{background:#fff;border:1px solid #e6e9ef;border-radius:12px;overflow:hidden;box-shadow:0 4px 14px rgba(20,40,80,.05);display:grid;grid-template-columns:1fr auto;align-items:center}
.tcbc-tema-acc-head{display:flex;align-items:center;gap:12px;grid-column:1;grid-row:1;min-width:0;text-align:left;background:none;border:0;padding:14px 16px;cursor:pointer;font:inherit;color:inherit}
.tcbc-acc-caret{flex:0 0 auto;width:0;height:0;border-left:6px solid var(--tcbc-primary);border-top:5px solid transparent;border-bottom:5px solid transparent;transition:transform .2s}
.tcbc-tema-acc.is-open .tcbc-acc-caret{transform:rotate(90deg)}
.tcbc-tema-acc-name{font-weight:var(--tcbc-tm-fw,800);font-size:var(--tcbc-tm-px,calc(1rem*var(--tcbc-tm-scale,1)));flex:1 1 auto;min-width:0}
.tcbc-tema-acc-meta{color:var(--tcbc-muted);font-size:.85rem;white-space:nowrap}
.tcbc-tema-acc>.tcbc-tema-actions{grid-column:2;grid-row:1;justify-self:end;align-self:center;margin:0 16px 0 0}
.tcbc-tema-acc-body{grid-column:1 / -1;grid-row:2;padding:0 16px 16px}
.tcbc-badge-soon{background:rgba(246,173,55,.18);color:#8a5b12}
.tcbc-video-card{display:flex;align-items:center;gap:12px;cursor:pointer;padding:6px 0;width:100%;background:none;border:0;text-align:left;font:inherit;color:inherit}
.tcbc-video.is-open .tcbc-video-card{display:none}
.tcbc-video-play{flex:0 0 auto;width:34px;height:34px;border-radius:50%;background:var(--tcbc-primary);position:relative}
.tcbc-video-play:after{content:"";position:absolute;top:50%;left:54%;transform:translate(-50%,-50%);border-left:11px solid #fff;border-top:7px solid transparent;border-bottom:7px solid transparent}
.tcbc-video-bar{display:flex;justify-content:flex-end;margin-bottom:6px}
.tcbc-video-close{background:var(--tcbc-ink);color:#fff;border:0;border-radius:8px;padding:5px 12px;font-weight:700;cursor:pointer;font-size:13px;transition:filter .15s}
.tcbc-video-close:hover{filter:brightness(1.15)}
.tcbc-video-frame{width:100%;aspect-ratio:16/9;border:0;border-radius:10px}
/* --- Hover de temas y vídeos --------------------------------------------
   El hover del tema de WordPress se colaba en los botones internos (cabecera
   del tema y tarjeta de vídeo) y solo pintaba esa zona —no la fila entera—,
   dejando un resalte a medias (p. ej. la cabecera oscura pero los iconos de
   acción en blanco). Neutralizamos ese resalte parcial y damos un hover limpio
   que cubre la tarjeta completa. */
.tcbc-tema-acc-head:hover,.tcbc-tema-acc-head:focus,.tcbc-tema-acc-head:active,
.tcbc-video-card:hover,.tcbc-video-card:focus,.tcbc-video-card:active{background:transparent!important;box-shadow:none!important;filter:none!important;transform:none!important;text-decoration:none!important;color:inherit!important;opacity:1!important;outline:none}
.tcbc-tema-acc-head:focus-visible,.tcbc-video-card:focus-visible{outline:2px solid var(--tcbc-primary);outline-offset:-2px}
.tcbc-tema-acc{transition:border-color .15s,box-shadow .15s}
.tcbc-tema-acc:hover{border-color:#c3cede;box-shadow:0 8px 22px rgba(20,40,80,.10)}
.tcbc-video-play{transition:transform .15s,filter .15s}
.tcbc-video-card:hover .tcbc-video-play{transform:scale(1.06)}
.tcbc-pw-box{display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.tcbc-pw-form{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.tcbc-pw-form input[type=password]{padding:9px 12px;border:1px solid #d7dde6;border-radius:10px}
.tcbc-pw-error{color:var(--tcbc-bad)}

/* Bloque (nivel entre convocatoria y tema) */
.tcbc-bloque{margin:0 0 18px}
/* Cabecera de bloque: acordeón (botón) + base común + 4 estilos seleccionables. */
.tcbc-bloque-title{display:flex;align-items:center;gap:10px;width:100%;margin:10px 0 12px;padding:0;border:0;background:transparent;font-family:inherit;font-weight:800;color:var(--tcbc-ink);text-align:left;cursor:pointer;-webkit-appearance:none;appearance:none}
.tcbc-bloque-caret{margin-left:auto;flex:0 0 auto;width:0;height:0;border-left:7px solid currentColor;border-top:5px solid transparent;border-bottom:5px solid transparent;transition:transform .2s ease;opacity:.9}
.tcbc-bloque.is-open>.tcbc-bloque-title .tcbc-bloque-caret{transform:rotate(90deg)}
.tcbc-bloque-body[hidden]{display:none}
.tcbc-bloque-body{margin-top:6px}
/* La cabecera del bloque NO cambia con el ratón: se neutraliza cualquier hover
   que le aplique el tema (fondo, color, sombra, opacidad, subrayado…) en los
   cuatro estilos. Se mantiene el foco por teclado (accesibilidad). */
.tcbc-bloque-title:hover,.tcbc-bloque-title:focus,.tcbc-bloque-title:active{box-shadow:none!important;transform:none!important;opacity:1!important;text-decoration:none!important;filter:none!important;outline:none}
.tcbc-bs-minimal .tcbc-bloque-title:hover,.tcbc-bs-minimal .tcbc-bloque-title:focus,.tcbc-bs-minimal .tcbc-bloque-title:active{background:transparent!important;color:var(--tcbc-ink)!important}
.tcbc-bs-banda .tcbc-bloque-title:hover,.tcbc-bs-banda .tcbc-bloque-title:focus,.tcbc-bs-banda .tcbc-bloque-title:active{background:var(--tcbc-primary)!important;color:#fff!important}
.tcbc-bs-tinte .tcbc-bloque-title:hover,.tcbc-bs-tinte .tcbc-bloque-title:focus,.tcbc-bs-tinte .tcbc-bloque-title:active{background:var(--tcbc-bg)!important;color:var(--tcbc-ink)!important}
.tcbc-bs-subrayado .tcbc-bloque-title:hover,.tcbc-bs-subrayado .tcbc-bloque-title:focus,.tcbc-bs-subrayado .tcbc-bloque-title:active{background:transparent!important;color:var(--tcbc-ink)!important}
.tcbc-bloque-title:focus-visible{outline:2px solid var(--tcbc-primary);outline-offset:2px}
/* Minimal (el clásico): línea de acento a la izquierda. */
.tcbc-bs-minimal .tcbc-bloque-title{font-size:1.05rem;padding-left:12px;border-left:4px solid var(--tcbc-accent);margin:10px 0 8px}
/* Banda sólida: barra con el color principal y texto en blanco. */
.tcbc-bs-banda .tcbc-bloque-title{background:var(--tcbc-primary);color:#fff;font-size:1.15rem;letter-spacing:.3px;padding:12px 18px;border-radius:10px}
.tcbc-bs-banda .tcbc-bloque-title::before{content:"";width:16px;height:16px;border-radius:4px;background:var(--tcbc-accent);flex:0 0 auto}
/* Banda con tinte: fondo suave + borde grueso en el color principal. */
.tcbc-bs-tinte .tcbc-bloque-title{background:var(--tcbc-bg);font-size:1.2rem;padding:12px 16px;border-left:6px solid var(--tcbc-primary);border-radius:0 10px 10px 0}
.tcbc-bs-tinte .tcbc-bloque-title::before{content:"";width:14px;height:14px;border-radius:4px;background:var(--tcbc-primary);flex:0 0 auto}
/* Título subrayado: texto grande en mayúsculas con regla gruesa debajo. */
.tcbc-bs-subrayado .tcbc-bloque-title{font-size:1.35rem;text-transform:uppercase;letter-spacing:.5px;padding:0 0 10px;border-bottom:3px solid var(--tcbc-primary);margin:10px 0 16px}
.tcbc-bs-subrayado .tcbc-bloque-title::before{content:"";width:14px;height:14px;border-radius:4px;background:var(--tcbc-accent);flex:0 0 auto}

/* ============================================================
   Plantillas de estilo (Ajustes → Apariencia → Plantilla).
   «Acordeón» es la base de arriba; estas 3 cambian la maquetación.
   ============================================================ */

/* ---- Mosaico (grid): rejilla de tarjetas con cabecera de color ---- */
.tcbc-tpl-grid .tcbc-temas-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:16px;align-items:start}
/* Nº de columnas fijo (Ajustes → Apariencia → Columnas del mosaico). Se reduce
   en pantallas estrechas para que las tarjetas no queden demasiado finas.
   «Automático» (tcbc-gcols-auto) usa la rejilla fluida de arriba. */
.tcbc-gcols-2 .tcbc-temas-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
.tcbc-gcols-3 .tcbc-temas-grid{grid-template-columns:repeat(3,minmax(0,1fr))}
.tcbc-gcols-4 .tcbc-temas-grid{grid-template-columns:repeat(4,minmax(0,1fr))}
.tcbc-gcols-5 .tcbc-temas-grid{grid-template-columns:repeat(5,minmax(0,1fr))}
@media(max-width:1280px){.tcbc-gcols-5 .tcbc-temas-grid{grid-template-columns:repeat(4,minmax(0,1fr))}}
@media(max-width:1040px){.tcbc-gcols-4 .tcbc-temas-grid,.tcbc-gcols-5 .tcbc-temas-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:820px){.tcbc-gcols-3 .tcbc-temas-grid,.tcbc-gcols-4 .tcbc-temas-grid,.tcbc-gcols-5 .tcbc-temas-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:560px){.tcbc-gcols-2 .tcbc-temas-grid,.tcbc-gcols-3 .tcbc-temas-grid,.tcbc-gcols-4 .tcbc-temas-grid,.tcbc-gcols-5 .tcbc-temas-grid{grid-template-columns:1fr}}
.tcbc-tpl-grid .tcbc-tema-card{background:#fff;border:1px solid #e6e9ef;border-radius:16px;overflow:hidden;box-shadow:0 8px 24px rgba(20,40,80,.08);display:flex;flex-direction:column}
/* Cabecera en columna: el título ocupa todo el ancho arriba y las acciones (o la
   insignia de estado) van en su propia fila debajo, alineadas a la derecha. Así
   los botones no flotan en medio de un título de varias líneas. */
.tcbc-tpl-grid .tcbc-card-head{background:var(--tcbc-tm-bg,var(--tcbc-primary));color:#fff;padding:14px 16px}
.tcbc-tpl-grid .tcbc-card-title{display:block;font-weight:var(--tcbc-tm-fw,800);font-size:var(--tcbc-tm-px,calc(1rem*var(--tcbc-tm-scale,1)));line-height:1.3;width:100%;color:var(--tcbc-tm-color,var(--tcbc-ink))}
.tcbc-tpl-grid .tcbc-card-meta{padding:12px 16px 0;color:var(--tcbc-muted);font-size:.85rem;display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap}
.tcbc-tpl-grid .tcbc-card-count{flex:0 0 auto}
.tcbc-tpl-grid .tcbc-card-meta .tcbc-tema-actions{margin-left:auto}
.tcbc-tpl-grid .tcbc-card-body{padding:12px 16px 16px}
.tcbc-tpl-grid .tcbc-res-list{gap:10px}
.tcbc-tpl-grid .tcbc-res-item{box-shadow:none;padding:12px 12px}
.tcbc-tpl-grid .tcbc-locked-cta{margin-top:4px}

/* ---- Lista (índice): plano y tipográfico, recursos como enlaces ---- */
.tcbc-tpl-lista .tcbc-temas-list{border-top:2px solid var(--tcbc-ink)}
.tcbc-tpl-lista .tcbc-tema-line{border-bottom:1px solid #e1e6ee;padding:14px 2px}
.tcbc-tpl-lista .tcbc-line-head{display:flex;align-items:baseline;gap:12px;flex-wrap:wrap}
.tcbc-tpl-lista .tcbc-line-title{font-weight:var(--tcbc-tm-fw,800);font-size:var(--tcbc-tm-px,calc(1.06rem*var(--tcbc-tm-scale,1)));color:var(--tcbc-ink)}
.tcbc-tpl-lista .tcbc-line-meta{color:var(--tcbc-muted);font-size:.85rem;margin-left:auto}
.tcbc-tpl-lista .tcbc-line-body{padding:6px 0 0 2px}
.tcbc-tpl-lista .tcbc-res-list{gap:0}
.tcbc-tpl-lista .tcbc-res-item{background:none;border:0;border-radius:0;box-shadow:none;padding:8px 0;border-bottom:1px dashed #e6e9ef}
.tcbc-tpl-lista .tcbc-res-item:last-child{border-bottom:0}
.tcbc-tpl-lista .tcbc-res-ico{background:none;border:0;color:var(--tcbc-primary);padding:0}
.tcbc-tpl-lista .tcbc-btn-primary.tcbc-res-dl{background:none;color:var(--tcbc-dl-bg,var(--tcbc-primary));border:0;box-shadow:none;padding:0;text-decoration:underline;font-weight:700}
.tcbc-tpl-lista .tcbc-btn-primary.tcbc-res-dl:hover{transform:none;box-shadow:none;filter:none}
.tcbc-tpl-lista .tcbc-video-play{width:26px;height:26px}
.tcbc-tpl-lista .tcbc-badge{background:none;padding:0}

/* ---- Portal (curso): módulos anchos con franja de acento ---- */
.tcbc-tpl-portal .tcbc-temas-portal{display:flex;flex-direction:column;gap:16px}
.tcbc-tpl-portal .tcbc-tema-module{background:#fff;border-radius:14px;border-left:6px solid var(--tcbc-primary);box-shadow:0 8px 26px rgba(20,40,80,.10);padding:20px 24px}
.tcbc-tpl-portal .tcbc-module-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:12px}
.tcbc-tpl-portal .tcbc-module-title{font-weight:var(--tcbc-tm-fw,800);font-size:var(--tcbc-tm-px,calc(1.25rem*var(--tcbc-tm-scale,1)));color:var(--tcbc-ink);line-height:1.2}
.tcbc-tpl-portal .tcbc-module-summary{color:var(--tcbc-muted);font-size:.9rem;margin-top:3px}
.tcbc-tpl-portal .tcbc-res-item{border:0;border-radius:12px;background:var(--tcbc-bg);box-shadow:none;padding:14px 16px}
.tcbc-tpl-portal .tcbc-res-ico{background:#fff}
.tcbc-tpl-portal .tcbc-btn-primary{padding:12px 26px;font-size:16px;border-radius:12px}

/* ============================================================
   Progreso del alumno (v1.9.0): control «completado» por tema
   y barra de progreso por bloque.
   ============================================================ */
/* Control «marcar como completado» — chip en la cabecera del tema. */
.tcbc-hdr-right{display:inline-flex;align-items:center;gap:10px;margin-left:auto;flex:0 0 auto}
.tcbc-done-toggle{display:inline-flex;align-items:center;gap:8px;background:#fff;border:1px solid #d7dde6;border-radius:10px;padding:6px 11px;font:inherit;font-weight:800;font-size:.8rem;line-height:1;color:var(--tcbc-ink);cursor:pointer;white-space:nowrap;transition:border-color .15s,background .15s,color .15s}
.tcbc-done-toggle.tcbc-done-icon{padding:var(--tcbc-ico-donepad,7px)}
/* Sin cambio al pasar el ratón: solo cambia con su estado (activo/inactivo).
   El estado «.is-done» se define después y gana, así que el verde se mantiene. */
.tcbc-done-toggle:hover{border-color:#d7dde6;background:#fff;color:var(--tcbc-ink)}
.tcbc-done-toggle:focus-visible{outline:2px solid var(--tcbc-primary);outline-offset:2px}
.tcbc-done-box{flex:0 0 auto;width:var(--tcbc-ico-box,18px);height:var(--tcbc-ico-box,18px);border-radius:5px;border:2px solid var(--tcbc-locked);position:relative;transition:background .15s,border-color .15s}
.tcbc-done-toggle.is-done{background:rgba(26,127,55,.10);border-color:var(--tcbc-ok);color:var(--tcbc-ok)}
.tcbc-done-toggle.is-done .tcbc-done-box{background:var(--tcbc-ok);border-color:var(--tcbc-ok)}
/* Check centrado y proporcional: se mantiene bien a cualquier tamaño (sm/md/lg). */
.tcbc-done-toggle.is-done .tcbc-done-box::after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;margin:auto;width:34%;height:62%;border:solid #fff;border-width:0 2px 2px 0;transform:translateY(-8%) rotate(45deg)}
.tcbc-done-toggle.is-busy{opacity:.55;pointer-events:none}
/* Mosaico (grid): el chip va sobre la cabecera de color -> alto contraste. */
/* Lista/portal: el chip se alinea con la fila. */
.tcbc-tpl-lista .tcbc-line-head .tcbc-done-toggle{align-self:center}
/* Vista de un solo tema (shortcode de tema): el control va como bloque arriba. */
.tcbc-tema-view .tcbc-done-toggle{margin:0 0 14px}

/* Grupo de acciones del alumno (marcadores + completado) en la cabecera. */
.tcbc-tema-actions{display:inline-flex;align-items:center;gap:8px}
.tcbc-tema-view .tcbc-tema-actions{display:flex;margin:0 0 14px}
.tcbc-tpl-lista .tcbc-line-head .tcbc-tema-actions{align-self:center}
/* Botones de marcador: favorito (★) y para repasar (🔖). */
.tcbc-mark-btn{display:inline-flex;align-items:center;justify-content:center;width:var(--tcbc-ico-btn,32px);height:var(--tcbc-ico-btn,32px);padding:0;background:#fff;border:1px solid #d7dde6;border-radius:9px;color:var(--tcbc-muted);cursor:pointer;transition:border-color .15s,background .15s,color .15s}
/* Favorito y «para repasar»: sin cambio al pasar el ratón; solo cambian con su
   estado (los «.is-on» se definen después y ganan, conservando su color activo). */
.tcbc-mark-btn:hover{border-color:#d7dde6;color:var(--tcbc-muted);background:#fff}
.tcbc-mark-btn:focus-visible{outline:2px solid var(--tcbc-primary);outline-offset:2px}
.tcbc-mark-btn.is-busy{opacity:.55;pointer-events:none}
.tcbc-mark-ico{display:block;width:var(--tcbc-ico-svg,18px);height:auto}
.tcbc-mark-fav.is-on{color:var(--tcbc-accent);border-color:var(--tcbc-accent);background:rgba(246,173,55,.12)}
.tcbc-mark-fav.is-on .tcbc-mark-ico{fill:currentColor}
.tcbc-mark-review.is-on{color:#7c3aed;border-color:#7c3aed;background:rgba(124,58,237,.10)}
.tcbc-mark-review.is-on .tcbc-mark-ico{fill:currentColor}
/* Marcadores sobre la cabecera de color del mosaico (grid). */
/* Barra de filtros por marcador (chips) sobre el catálogo. */
.tcbc-study-filter{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 16px}
.tcbc-filter-chip{display:inline-flex;align-items:center;gap:7px;background:#fff;border:1px solid #d7dde6;border-radius:999px;padding:7px 14px;font:inherit;font-weight:700;font-size:.85rem;line-height:1;color:var(--tcbc-ink);cursor:pointer;transition:border-color .15s,background .15s,color .15s}
.tcbc-filter-chip:hover{border-color:var(--tcbc-primary)}
.tcbc-filter-chip:focus-visible{outline:2px solid var(--tcbc-primary);outline-offset:2px}
.tcbc-chip-ico{width:9px;height:9px;border-radius:50%;display:none}
.tcbc-filter-chip--fav .tcbc-chip-ico{display:inline-block;background:var(--tcbc-accent)}
.tcbc-filter-chip--review .tcbc-chip-ico{display:inline-block;background:#7c3aed}
.tcbc-filter-chip.is-active{background:var(--tcbc-primary);border-color:var(--tcbc-primary);color:#fff}
.tcbc-filter-chip--fav.is-active{background:var(--tcbc-accent);border-color:var(--tcbc-accent);color:#3a2c00}
.tcbc-filter-chip--review.is-active{background:#7c3aed;border-color:#7c3aed;color:#fff}
.tcbc-filter-chip--fav.is-active .tcbc-chip-ico,.tcbc-filter-chip--review.is-active .tcbc-chip-ico{background:currentColor}

/* ===== Marcadores de vídeo (Favoritos / Ver más tarde) ===== */
/* Cada vídeo del catálogo pasa a fila flexible: [vídeo] [botones a la derecha]. */
.tcbc-res-video{display:flex;align-items:flex-start;gap:10px}
.tcbc-res-video>.tcbc-video,.tcbc-res-video>.tcbc-video-content{flex:1 1 auto;min-width:0}
.tcbc-video-content{display:block}
.tcbc-video-marks{flex:0 0 auto;display:inline-flex;gap:6px}
.tcbc-vmark-btn{display:inline-flex;align-items:center;justify-content:center;width:var(--tcbc-ico-btn,32px);height:var(--tcbc-ico-btn,32px);padding:0;background:#fff;border:1px solid #d7dde6;border-radius:8px;color:var(--tcbc-muted);cursor:pointer;transition:border-color .15s,background .15s,color .15s}
/* Favorito y «ver más tarde» del vídeo: sin cambio al pasar el ratón; solo
   cambian con su estado (los «.is-on» se definen después y ganan). */
.tcbc-vmark-btn:hover{border-color:#d7dde6;color:var(--tcbc-muted);background:#fff}
.tcbc-vmark-btn:focus-visible{outline:2px solid var(--tcbc-primary);outline-offset:2px}
.tcbc-vmark-btn.is-busy{opacity:.55;pointer-events:none}
.tcbc-vmark-fav.is-on{color:var(--tcbc-accent);border-color:var(--tcbc-accent);background:rgba(246,173,55,.12)}
.tcbc-vmark-fav.is-on .tcbc-mark-ico{fill:currentColor}
.tcbc-vmark-later.is-on{color:#0d9488;border-color:#0d9488;background:rgba(13,148,136,.10)}

/* ===== Biblioteca de vídeos [contentwp_videoteca] ===== */
.tcbc-videoteca{font-family:'TCBC Montserrat','Segoe UI',Tahoma,sans-serif;color:var(--tcbc-ink);background:#fff;border:1px solid #e6e9ef;border-radius:14px;padding:18px 20px;box-shadow:0 4px 14px rgba(20,40,80,.06)}
.tcbc-videoteca,.tcbc-videoteca *{box-sizing:border-box}
.tcbc-videoteca--guest{text-align:center;max-width:520px}
.tcbc-videoteca--guest .tcbc-btn{margin-top:8px}
.tcbc-vt-head{display:flex;align-items:baseline;justify-content:space-between;gap:10px;margin:0 0 12px}
.tcbc-vt-title{font-weight:800;font-size:1.1rem}
.tcbc-vt-total{color:var(--tcbc-muted);font-weight:700;font-size:.85rem;white-space:nowrap}
.tcbc-vt-filter{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 16px}
.tcbc-vt-chip{display:inline-flex;align-items:center;gap:7px;background:#fff;border:1px solid #d7dde6;border-radius:999px;padding:7px 14px;font:inherit;font-weight:700;font-size:.85rem;line-height:1;color:var(--tcbc-ink);cursor:pointer;transition:border-color .15s,background .15s,color .15s}
.tcbc-vt-chip:hover{border-color:var(--tcbc-primary)}
.tcbc-vt-chip:focus-visible{outline:2px solid var(--tcbc-primary);outline-offset:2px}
.tcbc-vt-chip .tcbc-chip-ico{width:9px;height:9px;border-radius:50%;display:none}
.tcbc-vt-chip--fav .tcbc-chip-ico{display:inline-block;background:var(--tcbc-accent)}
.tcbc-vt-chip--later .tcbc-chip-ico{display:inline-block;background:#0d9488}
.tcbc-vt-chip.is-active{background:var(--tcbc-primary);border-color:var(--tcbc-primary);color:#fff}
.tcbc-vt-chip--fav.is-active{background:var(--tcbc-accent);border-color:var(--tcbc-accent);color:#3a2c00}
.tcbc-vt-chip--later.is-active{background:#0d9488;border-color:#0d9488;color:#fff}
.tcbc-vt-chip--fav.is-active .tcbc-chip-ico,.tcbc-vt-chip--later.is-active .tcbc-chip-ico{background:currentColor}
.tcbc-vt-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:16px}
.tcbc-vt-item{background:#fbfcfe;border:1px solid #e6e9ef;border-radius:12px;padding:12px;display:flex;flex-direction:column;gap:10px}
.tcbc-vt-video .tcbc-video-card{width:100%;background:#fff;border:1px solid #e6e9ef;border-radius:10px;padding:10px 12px}
.tcbc-vt-locked{display:flex;align-items:center;gap:10px;background:#fff;border:1px dashed #cdd6e2;border-radius:10px;padding:12px;color:var(--tcbc-muted)}
.tcbc-vt-locked .tcbc-res-name{font-weight:700;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tcbc-vt-lockico{flex:0 0 auto;width:20px;height:20px;position:relative}
.tcbc-vt-lockico::before{content:"";position:absolute;left:3px;top:9px;width:14px;height:10px;border-radius:2px;background:var(--tcbc-locked)}
.tcbc-vt-lockico::after{content:"";position:absolute;left:6px;top:4px;width:8px;height:8px;border:2px solid var(--tcbc-locked);border-bottom:0;border-radius:6px 6px 0 0}
.tcbc-vt-foot{display:flex;align-items:center;gap:8px}
.tcbc-vt-meta{flex:1 1 auto;min-width:0;color:var(--tcbc-muted);font-size:.8rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tcbc-vt-foot .tcbc-video-marks{flex:0 0 auto}
@media(max-width:600px){.tcbc-res-video{flex-wrap:wrap}.tcbc-video-marks{margin-left:auto}}

/* ===== Tamaño de iconos de acción + tipografía de títulos (Ajustes) ===== */
/* Variables heredadas desde el contenedor raíz del catálogo/tema/videoteca. */
.tcbc-ico-sm{--tcbc-ico-btn:24px;--tcbc-ico-svg:14px;--tcbc-ico-box:14px;--tcbc-ico-dlpad:6px;--tcbc-ico-donepad:5px}
.tcbc-ico-md{--tcbc-ico-btn:28px;--tcbc-ico-svg:16px;--tcbc-ico-box:16px;--tcbc-ico-dlpad:8px;--tcbc-ico-donepad:6px}
.tcbc-ico-lg{--tcbc-ico-btn:32px;--tcbc-ico-svg:18px;--tcbc-ico-box:18px;--tcbc-ico-dlpad:10px;--tcbc-ico-donepad:7px}
/* Icono del botón de descarga (solo dentro del botón; no toca el panel de descargas). */
.tcbc-res-dl .tcbc-dl-ico{width:var(--tcbc-ico-svg,18px);height:auto}
/* Título del bloque: escala relativa al estilo de cabecera + peso. */
.tcbc-bqsz-sm{--tcbc-bq-scale:.85}.tcbc-bqsz-md{--tcbc-bq-scale:1}.tcbc-bqsz-lg{--tcbc-bq-scale:1.18}
.tcbc-bqw-b{--tcbc-bq-fw:800}.tcbc-bqw-n{--tcbc-bq-fw:500}
.tcbc-bloque-name{font-size:calc(1em*var(--tcbc-bq-scale,1));font-weight:var(--tcbc-bq-fw,800)}
/* Título de los temas: escala + peso. */
.tcbc-tmsz-sm{--tcbc-tm-scale:.88}.tcbc-tmsz-md{--tcbc-tm-scale:1}.tcbc-tmsz-lg{--tcbc-tm-scale:1.15}
.tcbc-tmw-b{--tcbc-tm-fw:800}.tcbc-tmw-n{--tcbc-tm-fw:500}

/* ===== Avisos emergentes (toasts) ===== */
.tcbc-toasts{position:fixed;left:50%;bottom:24px;transform:translateX(-50%);z-index:100000;display:flex;flex-direction:column;gap:8px;align-items:center;pointer-events:none}
.tcbc-toast{font-family:'TCBC Montserrat','Segoe UI',Tahoma,sans-serif;background:#22314a;color:#fff;font-weight:700;font-size:.9rem;line-height:1.3;padding:11px 18px;border-radius:10px;box-shadow:0 8px 24px rgba(20,40,80,.25);opacity:0;transform:translateY(12px);transition:opacity .25s ease,transform .25s ease;max-width:90vw;text-align:center}
.tcbc-toast.is-in{opacity:1;transform:translateY(0)}
.tcbc-toast.is-out{opacity:0;transform:translateY(12px)}
@media(prefers-reduced-motion:reduce){.tcbc-toast{transition:opacity .25s ease}.tcbc-toast.is-in,.tcbc-toast.is-out{transform:none}}

/* ===== Tipografía de los paneles del alumno (Ajustes → Apariencia) =====
   El tamaño escala con --tcbc-pn-scale y la negrita de los títulos con
   --tcbc-pn-fw (inyectadas en :root desde los ajustes). En md+negrita se
   conservan los tamaños/pesos actuales. */
.tcbc-progreso-title,.tcbc-progreso-head2 .tcbc-progreso-title,.tcbc-fav-title,.tcbc-vt-title{font-size:calc(1.1rem*var(--tcbc-pn-scale,1));font-weight:var(--tcbc-pn-fw,800)}
.tcbc-novedades-title{font-size:calc(1.08rem*var(--tcbc-pn-scale,1));font-weight:var(--tcbc-pn-fw,800)}
.tcbc-pg-gname,.tcbc-fav-btitle{font-size:calc(1rem*var(--tcbc-pn-scale,1));font-weight:var(--tcbc-pn-fw,800)}
.tcbc-progreso-sub{font-size:calc(.9rem*var(--tcbc-pn-scale,1))}
.tcbc-fav-name,.tcbc-nov-name,.tcbc-dl-name,.tcbc-act-ttl,.tcbc-vt-video .tcbc-res-name{font-size:var(--tcbc-panel-px,calc(1rem*var(--tcbc-pn-scale,1)))}
.tcbc-pg-item{font-size:calc(.94rem*var(--tcbc-pn-scale,1))}
/* Barra de progreso del bloque (dentro de la cabecera; usa currentColor). */
/* Progreso del bloque (barra + «hechos/total»): junto al título, a la izquierda.
   El caret conserva su margin-left:auto y queda a la derecha del todo. */
.tcbc-bloque-prog{display:inline-flex;align-items:center;gap:8px;font-size:.8rem;font-weight:800;line-height:1}
.tcbc-bloque-prog-track{position:relative;width:88px;height:9px;border-radius:6px;border:1.5px solid currentColor;overflow:hidden;flex:0 0 auto}
.tcbc-bloque-prog-track::before{content:"";position:absolute;inset:0;background:currentColor;opacity:.16}
.tcbc-bloque-prog-fill{position:relative;display:block;height:100%;background:currentColor;border-radius:4px;transition:width .3s ease}
.tcbc-bloque-prog-num{opacity:.95;white-space:nowrap}
/* La barra no debe reaccionar al hover neutralizado de la cabecera. */
.tcbc-bloque-title:hover .tcbc-bloque-prog,.tcbc-bloque-title:focus .tcbc-bloque-prog{opacity:1}
@media(max-width:600px){.tcbc-bloque-prog-track{width:60px}}

/* Aviso «Continuar donde lo dejaste» (sobre el catálogo). */
.tcbc-resume{display:flex;align-items:center;gap:16px;flex-wrap:wrap;background:rgba(43,108,176,.08);border:1px solid rgba(43,108,176,.22);border-radius:14px;padding:14px 18px;margin:0 0 18px}
.tcbc-resume-main{display:flex;flex-direction:column;gap:2px;flex:1 1 auto;min-width:180px}
.tcbc-resume-eyebrow{font-size:.72rem;font-weight:800;text-transform:uppercase;letter-spacing:.04em;color:var(--tcbc-primary)}
.tcbc-resume-title{font-weight:800;font-size:1.06rem;color:var(--tcbc-ink);line-height:1.25}
.tcbc-resume-count{font-size:.82rem;color:var(--tcbc-muted);font-weight:700}
.tcbc-resume-go{flex:0 0 auto}
.tcbc-resume--done{background:rgba(26,127,55,.10);border-color:rgba(26,127,55,.28)}
.tcbc-resume-check{flex:0 0 auto;width:30px;height:30px;border-radius:50%;background:var(--tcbc-ok);position:relative}
.tcbc-resume-check::after{content:"";position:absolute;left:11px;top:6px;width:6px;height:13px;border:solid #fff;border-width:0 2.5px 2.5px 0;transform:rotate(45deg)}
@keyframes tcbc-flash{0%,100%{box-shadow:0 0 0 0 rgba(246,173,55,0)}30%{box-shadow:0 0 0 3px var(--tcbc-accent)}}
.tcbc-flash{animation:tcbc-flash 1.6s ease}
@media(max-width:600px){.tcbc-resume-go{width:100%;justify-content:center}}

/* ===== Panel de progreso del alumno [contentwp_progreso] ===== */
.tcbc-progreso{font-family:'TCBC Montserrat','Segoe UI',Tahoma,sans-serif;color:var(--tcbc-ink);max-width:520px;background:#fff;border:1px solid #e6e9ef;border-radius:14px;padding:18px 20px;box-shadow:0 4px 14px rgba(20,40,80,.06)}
.tcbc-progreso,.tcbc-progreso *{box-sizing:border-box}
.tcbc-progreso--guest{text-align:center}
.tcbc-progreso--guest .tcbc-btn{margin-top:8px}
.tcbc-progreso-top{display:flex;align-items:center;gap:16px}
.tcbc-progreso-ring{position:relative;width:80px;height:80px;border-radius:50%;background:conic-gradient(var(--tcbc-ok) calc(var(--pct,0)*1%),#e7ecf3 0);flex:0 0 auto}
.tcbc-progreso-ring::after{content:"";position:absolute;inset:9px;background:#fff;border-radius:50%}
.tcbc-progreso-ring-num{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-weight:800;color:var(--tcbc-ink);z-index:1}
.tcbc-progreso-head{display:flex;flex-direction:column;gap:2px;min-width:0}
.tcbc-progreso-title{font-weight:800;font-size:1.1rem}
.tcbc-progreso-sub{color:var(--tcbc-muted);font-weight:700;font-size:.9rem}
.tcbc-progreso-list{list-style:none;margin:16px 0 0;padding:0;display:flex;flex-direction:column;gap:11px}
.tcbc-progreso-row{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(70px,1fr) auto;align-items:center;gap:12px}
.tcbc-progreso-lbl{font-weight:700;font-size:.92rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}
.tcbc-progreso-track{background:#eef1f5;border-radius:8px;height:10px;overflow:hidden}
.tcbc-progreso-fill{display:block;height:100%;background:var(--tcbc-ok);border-radius:8px;min-width:3px;transition:width .3s}
.tcbc-progreso-val{font-weight:800;font-size:.85rem;white-space:nowrap;color:var(--tcbc-ink)}
.tcbc-progreso-row.is-complete .tcbc-progreso-val{color:var(--tcbc-ok)}
/* Cabecera simple (vistas descargas/actividad, sin anillo). */
.tcbc-progreso-head2{margin:0 0 12px}
.tcbc-progreso-head2 .tcbc-progreso-title{font-weight:800;font-size:1.1rem}
/* Etiqueta de grupo (oposición · convocatoria) en el desglose. */
.tcbc-progreso-group{list-style:none;margin:6px 0 2px;font-size:.72rem;font-weight:800;text-transform:uppercase;letter-spacing:.04em;color:var(--tcbc-primary)}
/* Vista «temas»: checklist por bloque. */
.tcbc-pg-group{margin:16px 0 0;border-top:1px solid #eef1f5;padding-top:12px}
.tcbc-pg-group:first-of-type{border-top:0;padding-top:6px}
.tcbc-pg-ghead{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap;margin:0 0 8px}
.tcbc-pg-path{flex:0 0 100%;font-size:.7rem;font-weight:800;text-transform:uppercase;letter-spacing:.04em;color:var(--tcbc-primary)}
.tcbc-pg-gname{font-weight:800;font-size:1rem}
.tcbc-pg-gcount{margin-left:auto;font-weight:800;font-size:.82rem;color:var(--tcbc-muted)}
.tcbc-pg-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px}
.tcbc-pg-item{display:flex;align-items:center;gap:10px;font-size:.94rem}
.tcbc-pg-check{flex:0 0 auto;width:18px;height:18px;border-radius:5px;border:2px solid var(--tcbc-locked);position:relative}
.tcbc-pg-item.is-done .tcbc-pg-check{background:var(--tcbc-ok);border-color:var(--tcbc-ok)}
.tcbc-pg-item.is-done .tcbc-pg-check::after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;margin:auto;width:34%;height:62%;border:solid #fff;border-width:0 2px 2px 0;transform:translateY(-8%) rotate(45deg)}
.tcbc-pg-item.is-done .tcbc-pg-ttl{color:var(--tcbc-muted)}
.tcbc-pg-ttl{min-width:0}
/* Vista «descargas». */
.tcbc-dl-list,.tcbc-act-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:10px}
.tcbc-dl-item{display:flex;align-items:center;gap:12px}
.tcbc-dl-ico{flex:0 0 auto;width:30px;height:30px;border-radius:8px;background:rgba(43,108,176,.12);position:relative}
.tcbc-dl-ico::after{content:"";position:absolute;left:50%;top:8px;width:2px;height:9px;background:var(--tcbc-primary);transform:translateX(-50%)}
.tcbc-dl-ico::before{content:"";position:absolute;left:50%;top:13px;width:8px;height:8px;border:solid var(--tcbc-primary);border-width:0 2px 2px 0;transform:translateX(-50%) rotate(45deg)}
.tcbc-dl-main{display:flex;flex-direction:column;gap:1px;flex:1 1 auto;min-width:0}
.tcbc-dl-name{font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tcbc-dl-meta{color:var(--tcbc-muted);font-size:.82rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tcbc-dl-go{flex:0 0 auto;padding:8px 14px;font-size:13px}
/* Vista «actividad». */
.tcbc-act-item{display:flex;align-items:flex-start;gap:12px}
.tcbc-act-dot{flex:0 0 auto;width:12px;height:12px;margin-top:4px;border-radius:50%;background:var(--tcbc-ok);box-shadow:0 0 0 3px rgba(26,127,55,.15)}
.tcbc-act-main{display:flex;flex-direction:column;gap:1px;min-width:0}
.tcbc-act-ttl{font-weight:700}
.tcbc-act-when{color:var(--tcbc-muted);font-size:.82rem}

/* ===== Panel de marcadores del alumno [contentwp_favoritos] ===== */
.tcbc-favoritos{font-family:'TCBC Montserrat','Segoe UI',Tahoma,sans-serif;color:var(--tcbc-ink);max-width:520px;background:#fff;border:1px solid #e6e9ef;border-radius:14px;padding:18px 20px;box-shadow:0 4px 14px rgba(20,40,80,.06)}
.tcbc-favoritos,.tcbc-favoritos *{box-sizing:border-box}
.tcbc-favoritos--guest{text-align:center}
.tcbc-favoritos--guest .tcbc-btn{margin-top:8px}
.tcbc-fav-head{display:flex;align-items:baseline;justify-content:space-between;gap:10px;margin:0 0 6px}
.tcbc-fav-title{font-weight:800;font-size:1.1rem}
.tcbc-fav-total{color:var(--tcbc-muted);font-weight:700;font-size:.85rem;white-space:nowrap}
.tcbc-fav-block{margin:14px 0 0;border-top:1px solid #eef1f5;padding-top:12px}
.tcbc-fav-block:first-of-type{border-top:0;padding-top:4px}
.tcbc-fav-bhead{display:flex;align-items:center;gap:8px;margin:0 0 8px}
.tcbc-fav-btitle{font-weight:800;font-size:1rem}
.tcbc-fav-bcount{margin-left:auto;font-weight:800;font-size:.82rem;color:var(--tcbc-muted)}
.tcbc-fav-bico{flex:0 0 auto;width:14px;height:14px;border-radius:3px}
.tcbc-fav-mk--fav{background:var(--tcbc-accent)}
.tcbc-fav-mk--review{background:#7c3aed}
.tcbc-fav-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:9px}
.tcbc-fav-item{display:flex;align-items:center;gap:10px}
.tcbc-fav-item.is-locked{opacity:.7}
.tcbc-fav-mk{flex:0 0 auto;width:11px;height:11px;border-radius:3px}
.tcbc-fav-main{display:flex;flex-direction:column;gap:1px;flex:1 1 auto;min-width:0}
.tcbc-fav-name{font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tcbc-fav-meta{color:var(--tcbc-muted);font-size:.8rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

/* ===== Novedades [contentwp_novedades]: últimos recursos añadidos ===== */
.tcbc-novedades{font-family:'TCBC Montserrat','Segoe UI',Tahoma,sans-serif;color:var(--tcbc-ink);max-width:560px;background:#fff;border:1px solid #e6e9ef;border-radius:14px;padding:16px 18px;box-shadow:0 4px 14px rgba(20,40,80,.06)}
.tcbc-novedades,.tcbc-novedades *{box-sizing:border-box}
.tcbc-novedades-head{margin:0 0 12px}
.tcbc-novedades-title{font-weight:800;font-size:1.08rem}
.tcbc-nov-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:10px}
.tcbc-nov-item{display:flex;align-items:center;gap:12px}
.tcbc-nov-item.is-locked{opacity:.72}
.tcbc-nov-ico{flex:0 0 auto;width:34px;height:34px;border-radius:9px;background:rgba(43,108,176,.12);position:relative}
.tcbc-nov-ico--doc::before{content:"";position:absolute;left:10px;top:8px;width:14px;height:18px;border:2px solid var(--tcbc-primary);border-radius:2px}
.tcbc-nov-ico--doc::after{content:"";position:absolute;left:13px;top:13px;width:8px;height:2px;background:var(--tcbc-primary);box-shadow:0 4px 0 var(--tcbc-primary)}
.tcbc-nov-ico--video{background:rgba(214,54,56,.12)}
.tcbc-nov-ico--video::after{content:"";position:absolute;left:13px;top:10px;border-left:12px solid var(--tcbc-bad);border-top:7px solid transparent;border-bottom:7px solid transparent}
.tcbc-nov-main{display:flex;flex-direction:column;gap:1px;flex:1 1 auto;min-width:0}
.tcbc-nov-name{font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tcbc-nov-badge{display:inline-block;vertical-align:middle;margin-left:2px;font-size:.62rem;font-weight:800;text-transform:uppercase;letter-spacing:.04em;color:#fff;background:var(--tcbc-ok);border-radius:8px;padding:2px 7px}
.tcbc-nov-meta{color:var(--tcbc-muted);font-size:.82rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tcbc-nov-go{flex:0 0 auto;padding:8px 14px;font-size:13px}
.tcbc-nov-lock{flex:0 0 auto;width:20px;height:20px;position:relative}
.tcbc-nov-lock::before{content:"";position:absolute;left:3px;top:9px;width:14px;height:10px;border-radius:2px;background:var(--tcbc-locked)}
.tcbc-nov-lock::after{content:"";position:absolute;left:6px;top:4px;width:8px;height:8px;border:2px solid var(--tcbc-locked);border-bottom:0;border-radius:6px 6px 0 0}
/* Bajas (recursos eliminados). */
.tcbc-nov-item--del .tcbc-nov-name{color:var(--tcbc-muted)}
.tcbc-nov-tag--del{display:inline-block;font-size:.62rem;font-weight:800;text-transform:uppercase;letter-spacing:.04em;color:#fff;background:var(--tcbc-bad);border-radius:8px;padding:2px 7px;margin-right:2px}
.tcbc-nov-ico--del{background:rgba(138,148,166,.16)}
.tcbc-nov-ico--del::before{content:"";position:absolute;left:9px;top:13px;width:16px;height:2px;border-radius:2px;background:var(--tcbc-locked)}
.tcbc-nov-ico--del::after{content:"";position:absolute;left:11px;top:9px;width:12px;height:4px;border-radius:2px 2px 0 0;border:2px solid var(--tcbc-locked);border-bottom:0}

/* ===== Cabecera visual del catálogo (banner sobre los shortcodes) ===== */
.tcbc-header{padding:46px 20px;text-align:center;border-radius:14px;margin:0 0 24px;box-sizing:border-box}
.tcbc-header--full{border-radius:0;margin-left:calc(50% - 50vw);margin-right:calc(50% - 50vw);margin-top:0;width:100vw;max-width:100vw}
.tcbc-header-inner{max-width:1040px;margin:0 auto}
.tcbc-header-title{margin:0;font-size:clamp(28px,4vw,40px);font-weight:800;text-transform:uppercase;letter-spacing:.5px;line-height:1.1}
.tcbc-header-sub{margin:10px 0 0;font-size:18px;font-weight:700;line-height:1.3}
.tcbc-header-text{margin:14px 0 0;font-size:15px;font-weight:700;letter-spacing:.5px}

/* ===== Refinado móvil de las fichas de tema (app-like) =====
   Los títulos parten SIEMPRE por palabras (nunca a mitad de palabra, aunque el
   tema del sitio fuerce word-break), y las insignias no se rompen en vertical. */
.tcbc-tema-acc-name,.tcbc-line-title,.tcbc-card-title,.tcbc-module-title,.tcbc-res-name{overflow-wrap:break-word;word-break:normal;-webkit-hyphens:none;hyphens:none}
.tcbc-badge{white-space:nowrap}

@media(max-width:600px){
	/* Acordeón: el caret pasa a un canalón fijo a la izquierda (fuera del flujo) y
	   el título fluye a todo el ancho; debajo, «N recursos» a la izquierda y el
	   estado a la derecha. Layout de fila tipo app, sin apretujar el título. */
	.tcbc-tema-acc-head{display:block;position:relative;padding:13px 14px 13px 32px}
	.tcbc-tema-acc-head .tcbc-acc-caret{position:absolute;left:15px;top:18px;margin:0}
	.tcbc-tema-acc-name{display:block;line-height:1.3}
	.tcbc-tema-acc-meta{display:inline-block;margin-top:8px}
	.tcbc-tema-acc-head .tcbc-badge{float:right;margin-top:6px}

	/* Lista: el título a lo ancho; insignia y contador debajo, alineados. */
	.tcbc-tpl-lista .tcbc-line-head{align-items:flex-start;row-gap:6px}
	.tcbc-tpl-lista .tcbc-line-title{flex:1 1 100%;line-height:1.3}
	.tcbc-tpl-lista .tcbc-line-meta{margin-left:0}

	/* Mosaico y Portal: la insignia se alinea con la primera línea del título. */
	.tcbc-tpl-grid .tcbc-card-head,.tcbc-tpl-portal .tcbc-module-head{align-items:flex-start}
	.tcbc-tpl-grid .tcbc-card-title,.tcbc-tpl-portal .tcbc-module-title{line-height:1.3}
	.tcbc-hdr-right{align-self:flex-start}
}

/* ===== Paneles de shortcode: ocupan el 95% del módulo donde se insertan =====
   Antes tenían un ancho máximo fijo (~520px) y quedaban estrechos cuando se
   colocaban en una columna ancha. Ahora se adaptan al contenedor. */
.tcbc-progreso,.tcbc-favoritos,.tcbc-novedades,.tcbc-videoteca{width:95%;max-width:none}
/* Los estados «invitado» (CTA para iniciar sesión) siguen compactos. */
.tcbc-progreso.tcbc-progreso--guest,.tcbc-favoritos.tcbc-favoritos--guest,.tcbc-videoteca.tcbc-videoteca--guest{width:auto;max-width:520px}
