/* Technovation Comunidad Valenciana — Talent (TGMbp)
   Identidad OFICIAL (Brand Guidelines 2024) con tratamiento visual 2026.
   Azul #0076cf · Dorado #ffb81c · Magenta #ec0089 · Navy #041e42
   Secundarios: Verde #43b02a · Naranja #ff7500 · Azul claro #5bc2e7
   Tipografías: Instrument Sans (texto y titulares) + Castoro (acento editorial). */

/* Tipografías de marca, servidas desde la propia web (sin Google Fonts:
   más rápido y sin enviar la IP de cada visita a terceros).
   Variables: un solo fichero cubre todos los pesos de 400 a 700.
   Fuentes originales (TTF) en _recursos_descargados/marca/tipografias. */
@font-face{
  font-family:'Instrument Sans';
  src:url('../fonts/InstrumentSans-Variable.woff2') format('woff2-variations'),
      url('../fonts/InstrumentSans-Variable.woff2') format('woff2');
  font-weight:400 700; font-stretch:75% 100%; font-style:normal; font-display:swap;
}
@font-face{
  font-family:'Castoro';
  src:url('../fonts/Castoro-Variable.woff2') format('woff2-variations'),
      url('../fonts/Castoro-Variable.woff2') format('woff2');
  font-weight:400 700; font-style:normal; font-display:swap;
}

:root {
  --tn-navy:#041e42; --tn-blue:#0076cf; --tn-blue-d:#015ca3;
  --tn-pink:#ec0089; --tn-gold:#ffb81c; --tn-green:#43b02a;
  --tn-orange:#ff7500; --tn-sky:#5bc2e7; --tn-gris:#f4f7fb;
  --bs-primary:#0076cf; --bs-primary-rgb:0,118,207;
  --bs-link-color:#0076cf; --bs-link-hover-color:#015ca3;
  --bs-body-color:#19222e; --bs-border-radius:.75rem;
  --tn-shadow:0 10px 40px rgba(4,30,66,.10);
  --tn-shadow-lg:0 24px 60px rgba(4,30,66,.16);
}
* { scroll-behavior:smooth; }
body { background:#fff; color:#19222e; font-family:'Instrument Sans',system-ui,-apple-system,'Segoe UI',Roboto,sans-serif; overflow-x:hidden; }
h1,h2,h3,.tn-display { font-family:'Instrument Sans',sans-serif; font-weight:800; letter-spacing:-.02em; }
h4,h5,h6 { font-family:'Instrument Sans',sans-serif; font-weight:700; }
.tn-grad-text { background:linear-gradient(100deg,#ffb81c,#ec0089 60%,#5bc2e7); -webkit-background-clip:text; background-clip:text; color:transparent; }

/* Forma hoja */
.tn-leaf { border-radius:2.4rem 2.4rem 2.4rem 0; overflow:hidden; }
.tn-leaf-sm { border-radius:1.2rem 1.2rem 1.2rem 0; overflow:hidden; }

/* Botones */
.btn { border-radius:2rem; font-weight:600; }
.btn-lg { padding:.8rem 1.6rem; }
.btn-primary { --bs-btn-bg:var(--tn-blue); --bs-btn-border-color:var(--tn-blue); --bs-btn-hover-bg:var(--tn-blue-d); --bs-btn-hover-border-color:var(--tn-blue-d); --bs-btn-active-bg:var(--tn-blue-d); }
.btn-gold { --bs-btn-color:#041e42; --bs-btn-bg:var(--tn-gold); --bs-btn-border-color:var(--tn-gold); --bs-btn-hover-bg:#ecaa12; --bs-btn-hover-border-color:#ecaa12; --bs-btn-hover-color:#041e42; color:#041e42; }
.btn-pink { --bs-btn-color:#fff; --bs-btn-bg:var(--tn-pink); --bs-btn-border-color:var(--tn-pink); --bs-btn-hover-bg:#cc0076; --bs-btn-hover-border-color:#cc0076; --bs-btn-hover-color:#fff; color:#fff; }
.btn-grad { color:#fff; border:none; background:linear-gradient(100deg,#0076cf,#ec0089); background-size:160% 160%; transition:background-position .4s, transform .2s, box-shadow .2s; box-shadow:0 8px 24px rgba(236,0,137,.28); }
.btn-grad:hover { color:#fff; background-position:100% 0; transform:translateY(-2px); box-shadow:0 14px 32px rgba(236,0,137,.36); }
.btn-outline-primary { --bs-btn-color:var(--tn-blue); --bs-btn-border-color:var(--tn-blue); --bs-btn-hover-bg:var(--tn-blue); --bs-btn-hover-border-color:var(--tn-blue); }
.text-navy{color:var(--tn-navy)!important;} .text-primary{color:var(--tn-blue)!important;}
.text-pink{color:var(--tn-pink)!important;} .text-gold{color:var(--tn-gold)!important;}
a{color:var(--tn-blue);}

/* ===== NAVBAR público (glass) ===== */
.tn-public-nav { background:rgba(255,255,255,.72); backdrop-filter:saturate(180%) blur(14px); -webkit-backdrop-filter:saturate(180%) blur(14px); box-shadow:0 1px 0 rgba(4,30,66,.06); padding:.55rem 0; transition:box-shadow .3s, background .3s; }
.tn-public-nav.tn-scrolled { box-shadow:0 8px 30px rgba(4,30,66,.10); background:rgba(255,255,255,.92); }
.tn-public-nav .nav-link { font-weight:600; color:var(--tn-navy); position:relative; }
.tn-public-nav .nav-link:hover { color:var(--tn-blue); }
/* Logo lockup */
.tn-lock { display:flex; align-items:center; gap:.6rem; }
.tn-lock img { height:42px; }
.tn-lock .bar { width:2px; height:30px; background:linear-gradient(var(--tn-blue),var(--tn-pink)); border-radius:2px; opacity:.5; }
.tn-lock .txt { line-height:1; }
.tn-lock .txt .l1 { font-family:'Instrument Sans',sans-serif; font-weight:800; font-size:.82rem; color:var(--tn-navy); letter-spacing:-.01em; }
.tn-lock .txt .l2 { font-size:.66rem; color:#6b7886; font-weight:600; }

/* ===== HERO 2026 (mesh + blobs) ===== */
.tn-hero { position:relative; color:#fff; overflow:hidden; background:#0a3a6b; }
.tn-hero::before { content:""; position:absolute; inset:0; z-index:0;
  background:
    radial-gradient(40% 55% at 12% 18%, rgba(0,118,207,.95), transparent 60%),
    radial-gradient(45% 60% at 88% 12%, rgba(91,194,231,.85), transparent 60%),
    radial-gradient(50% 60% at 78% 92%, rgba(236,0,137,.80), transparent 62%),
    radial-gradient(45% 55% at 18% 95%, rgba(67,176,42,.7), transparent 60%),
    linear-gradient(120deg,#063b73,#0a4f93); }
.tn-hero.alt::before { background:
    radial-gradient(45% 60% at 85% 15%, rgba(255,184,28,.85), transparent 60%),
    radial-gradient(50% 60% at 12% 85%, rgba(236,0,137,.85), transparent 62%),
    linear-gradient(120deg,#041e42,#0a4f93); }
.tn-hero .container { position:relative; z-index:2; }
.tn-blob { position:absolute; border-radius:50%; filter:blur(8px); opacity:.5; z-index:1; animation:tnfloat 14s ease-in-out infinite; }
.tn-blob.b1 { width:240px; height:240px; right:8%; top:14%; background:radial-gradient(circle,rgba(255,184,28,.6),transparent 70%); }
.tn-blob.b2 { width:300px; height:300px; left:4%; bottom:-60px; background:radial-gradient(circle,rgba(91,194,231,.5),transparent 70%); animation-delay:-5s; }
@keyframes tnfloat { 0%,100%{transform:translateY(0) translateX(0)} 50%{transform:translateY(-26px) translateX(14px)} }
.tn-hero h1 { font-weight:800; font-size:clamp(2.2rem,5vw,4rem); line-height:1.03; }
.tn-hero .lead { font-weight:400; opacity:.96; font-size:clamp(1rem,1.6vw,1.25rem); }
.tn-hero .eyebrow { display:inline-flex; align-items:center; gap:.45rem; background:rgba(255,255,255,.14); border:1px solid rgba(255,255,255,.25); padding:.35rem .85rem; border-radius:2rem; font-weight:600; font-size:.8rem; backdrop-filter:blur(6px); }
.tn-hero-card { background:rgba(255,255,255,.12); border:1px solid rgba(255,255,255,.22); backdrop-filter:blur(10px); border-radius:1.6rem 1.6rem 1.6rem 0; }

/* ===== Secciones ===== */
.tn-section { padding:5.5rem 0; }
.tn-section h2 { font-size:clamp(1.8rem,3.2vw,2.8rem); }
.tn-kicker { display:inline-block; color:var(--tn-pink); font-weight:700; text-transform:uppercase; letter-spacing:.12em; font-size:.78rem; }
.tn-kicker.pill { background:rgba(236,0,137,.10); padding:.3rem .8rem; border-radius:2rem; }

/* Stats */
.tn-stat .n { font-family:'Instrument Sans',sans-serif; font-weight:800; font-size:clamp(2rem,3.5vw,2.8rem); color:var(--tn-blue); line-height:1; }
.tn-stat.gold .n{color:var(--tn-gold);} .tn-stat.pink .n{color:var(--tn-pink);} .tn-stat.green .n{color:var(--tn-green);}

/* Pilares */
.tn-pilar { text-align:center; padding:1.6rem 1rem; border-radius:1.2rem; transition:transform .25s, box-shadow .25s; }
.tn-pilar:hover { transform:translateY(-8px); box-shadow:var(--tn-shadow); }
.tn-pilar img { height:80px; margin-bottom:1rem; }

/* Cards */
.tn-card { border:1px solid rgba(4,30,66,.06); border-radius:1.2rem; box-shadow:var(--tn-shadow); transition:transform .25s, box-shadow .25s; background:#fff; }
.tn-card:hover { transform:translateY(-6px); box-shadow:var(--tn-shadow-lg); }
/* Tarjetas decorativas (no interactivas): sin efecto hover para que no parezcan botones. */
.tn-card.tn-static, .tn-card.tn-static:hover { transform:none; box-shadow:var(--tn-shadow); cursor:default; }
.tn-chip { display:inline-block; padding:.3rem .8rem; border-radius:2rem; font-weight:600; font-size:.76rem; background:#eef2f6; color:#5b6b7d; }
.tn-ejemplo { color:#6c7a89; background:#f6f9fc; border-radius:.5rem; padding:.3rem .6rem; }
.tn-ejemplo .bi-lightbulb { color:#ffb81c; }
.tn-chip-blue{background:rgba(0,118,207,.12);color:var(--tn-blue-d);}
.tn-chip-pink{background:rgba(236,0,137,.10);color:var(--tn-pink);}
.tn-chip-gold{background:rgba(255,184,28,.20);color:#946400;}

/* Roles */
.tn-rol { border-radius:1.2rem 1.2rem 1.2rem 0; overflow:hidden; box-shadow:var(--tn-shadow); background:#fff; height:100%; transition:transform .25s, box-shadow .25s; }
.tn-rol:hover { transform:translateY(-6px); box-shadow:var(--tn-shadow-lg); }
.tn-rol .top { height:7px; }

/* Marquee de partners */
.tn-marquee { overflow:hidden; -webkit-mask-image:linear-gradient(90deg,transparent,#000 8%,#000 92%,transparent); }
.tn-marquee-track { display:flex; gap:3rem; align-items:center; width:max-content; animation:tnmarquee 28s linear infinite; }
@keyframes tnmarquee { from{transform:translateX(0)} to{transform:translateX(-50%)} }

/* Reveal on scroll */
.reveal { opacity:0; transform:translateY(26px); transition:opacity .7s ease, transform .7s ease; }
.reveal.in { opacity:1; transform:none; }

/* Timeline 2026 (alternada) */
.tn-road { position:relative; }
.tn-road::before { content:""; position:absolute; left:50%; top:0; bottom:0; width:3px; transform:translateX(-50%); background:linear-gradient(var(--tn-blue),var(--tn-pink),var(--tn-green)); border-radius:3px; }
.tn-road .hito { position:relative; width:50%; padding:1rem 2.4rem; }
.tn-road .hito:nth-child(odd) { left:0; text-align:right; }
.tn-road .hito:nth-child(even) { left:50%; }
.tn-road .hito .dot { position:absolute; top:1.5rem; width:1.1rem; height:1.1rem; border-radius:50%; background:#fff; border:4px solid var(--tn-blue); box-shadow:0 0 0 5px rgba(0,118,207,.15); }
.tn-road .hito:nth-child(odd) .dot { right:-.65rem; }
.tn-road .hito:nth-child(even) .dot { left:-.65rem; }
.tn-road .hito.done .dot { border-color:var(--tn-green); box-shadow:0 0 0 5px rgba(67,176,42,.18); }
@media (max-width:767px){ .tn-road::before{left:.6rem;} .tn-road .hito{width:100%;left:0!important;text-align:left!important;padding-left:2.2rem;} .tn-road .hito .dot{left:.05rem!important;right:auto!important;} }

footer.tn-footer { background:var(--tn-navy); color:#c9d4e2; }
footer.tn-footer a { color:#fff; text-decoration:none; }
footer.tn-footer a:hover { color:var(--tn-sky); }

/* ===== BACKOFFICE ===== */
.tcv-navbar { background:#fff; border-bottom:1px solid #e8edf3; box-shadow:0 1px 10px rgba(4,30,66,.05); }
.tcv-navbar .navbar-brand img { height:32px; }
.tcv-sidebar { background:#fff; border-right:1px solid #e8edf3; padding:0; position:sticky; top:0; align-self:flex-start; height:100vh; overflow-y:auto; }
.tcv-sidebar .nav-link { color:#3a4654; border-radius:.6rem; margin:1px .45rem; padding:.5rem .75rem; font-weight:500; }
.tcv-sidebar .nav-link:hover { background:var(--tn-gris); color:var(--tn-blue-d); }
.tcv-sidebar .nav-link.activo { background:var(--tn-blue); color:#fff; }
.tcv-sidebar .nav-link i { width:1.4rem; }
.tcv-sidebar .tcv-grupo { font-size:.72rem; text-transform:uppercase; letter-spacing:.05em; color:#9aa6b2; padding:.9rem .9rem .25rem; font-weight:700; }
.tcv-metric { border:none; border-radius:1rem; border-left:4px solid var(--tn-blue); box-shadow:var(--tn-shadow); }
.tcv-metric .n { font-size:1.9rem; font-weight:800; line-height:1; font-family:'Instrument Sans',sans-serif; }
.tcv-metric.alerta { border-left-color:var(--tn-pink); } .tcv-metric.ok { border-left-color:var(--tn-green); }
.tcv-auth-wrap { min-height:100vh; display:flex; align-items:center; position:relative; overflow:hidden; background:#0a3a6b; }
.tcv-auth-wrap::before { content:""; position:absolute; inset:0; background:
  radial-gradient(40% 50% at 15% 20%, rgba(0,118,207,.9), transparent 60%),
  radial-gradient(45% 55% at 85% 85%, rgba(236,0,137,.8), transparent 62%),
  radial-gradient(40% 50% at 90% 15%, rgba(255,184,28,.7), transparent 60%),
  linear-gradient(120deg,#063b73,#0a4f93); }
.tcv-auth-card { max-width:430px; width:100%; position:relative; z-index:2; }
.card { border-radius:.9rem; }
.tcv-tabla-filtro { max-width:320px; }
.tcv-nivel-badge { font-weight:700; padding:.3rem .7rem; border-radius:2rem; color:#fff; }
.tcv-mou-contenido h2 { font-size:1.4rem; }
.tcv-estado-dot { display:inline-block; width:.7rem; height:.7rem; border-radius:50%; }
.tn-formacion-prog { height:.5rem; border-radius:2rem; background:#e8edf3; overflow:hidden; }
.tn-formacion-prog>span { display:block; height:100%; background:linear-gradient(90deg,var(--tn-blue),var(--tn-green)); }
/* Contenido de lección de formación */
.tcv-leccion { line-height:1.7; color:#1f2d3d; }
.tcv-leccion h3 { font-size:1.15rem; font-weight:700; color:var(--tn-navy); margin:1.5rem 0 .6rem; }
.tcv-leccion p { margin-bottom:1rem; }
.tcv-leccion ul, .tcv-leccion ol { margin:0 0 1rem 1.1rem; }
.tcv-leccion li { margin-bottom:.4rem; }
.tcv-leccion strong { color:var(--tn-navy); }
.tcv-objetivos ul, .tcv-actividad p { margin-bottom:0; }
.tcv-objetivos li { margin-bottom:.3rem; }
/* Proceso "manos a la obra": pasos numerados destacados */
.tcv-proceso ol { counter-reset:paso; list-style:none; margin:0; padding:0; }
.tcv-proceso ol > li { counter-increment:paso; position:relative; padding:.15rem 0 .9rem 2.6rem; margin:0; }
.tcv-proceso ol > li:before { content:counter(paso); position:absolute; left:0; top:0; width:1.8rem; height:1.8rem; background:var(--tn-green,#43b02a); color:#fff; border-radius:50%; display:flex; align-items:center; justify-content:center; font-weight:700; font-size:.85rem; }
.tcv-proceso ol > li:not(:last-child):after { content:""; position:absolute; left:.875rem; top:1.9rem; bottom:.1rem; width:2px; background:#cfe9c5; }
.tcv-proceso strong { color:var(--tn-navy); }
.tn-matriz .aula { border-radius:1rem; box-shadow:var(--tn-shadow); }
.tn-matriz .juez-chip { background:rgba(0,118,207,.12); color:var(--tn-blue-d); border-radius:2rem; padding:.2rem .6rem; font-size:.8rem; font-weight:600; display:inline-block; margin:.1rem; }
.tn-matriz .equipo-row { border-bottom:1px solid #eef2f6; }

/* ---- Navegación móvil (offcanvas) ---- */
.tcv-offcanvas { width:280px; }
.tcv-offcanvas .nav.flex-column { padding-top:.5rem; }

/* ---- Accesibilidad: foco visible coherente ---- */
a:focus-visible, .btn:focus-visible, .form-control:focus-visible,
.form-select:focus-visible, .nav-link:focus-visible {
  outline:3px solid rgba(0,118,207,.45); outline-offset:2px; box-shadow:none;
}
/* Botones con buen objetivo táctil en móvil */
@media (max-width:575.98px){
  .btn { padding-top:.45rem; padding-bottom:.45rem; }
  h1.h3 { font-size:1.4rem; }
}

/* ---- Chips de color extra ---- */
.bg-pink-subtle { background:rgba(236,0,137,.10) !important; }
.bg-success-subtle { background:rgba(67,176,42,.12) !important; }
.bg-info-subtle { background:rgba(91,194,231,.18) !important; }
.bg-warning-subtle { background:rgba(255,184,28,.20) !important; }
.bg-secondary-subtle { background:rgba(91,107,125,.14) !important; }
.text-info { color:#1391bf !important; } .text-warning { color:#9a6a00 !important; }

/* ---- Recorrido formativo (lección → actividad → entregable) ---- */
.tcv-ruta { position:relative; margin-left:.4rem; }
.tcv-ruta-nodo { position:relative; padding:0 0 1.4rem 2.6rem; }
.tcv-ruta-nodo:not(:last-child):before { content:""; position:absolute; left:.95rem; top:1.8rem; bottom:-.2rem; width:2px; background:#e1e8f0; }
.tcv-ruta-punto { position:absolute; left:0; top:.05rem; width:2rem; height:2rem; border-radius:50%; background:#fff; border:2px solid var(--c,#0076cf); color:var(--c,#0076cf); display:flex; align-items:center; justify-content:center; font-size:.9rem; z-index:1; }
.tcv-ruta-nodo.hecha .tcv-ruta-punto { background:var(--tn-green,#43b02a); border-color:var(--tn-green,#43b02a); color:#fff; }
.tcv-ruta-titulo { font-weight:700; color:var(--tn-navy,#041e42); text-decoration:none; }
.tcv-ruta-titulo:hover { text-decoration:underline; }
.tcv-ruta-acts { display:flex; flex-wrap:wrap; gap:.5rem; margin-top:.6rem; }
.tcv-ruta-act { display:inline-flex; align-items:center; gap:.4rem; background:#f6f9fc; border:1px solid #e3ebf3; border-radius:.7rem; padding:.35rem .7rem; text-decoration:none; color:#33414f; font-size:.85rem; transition:.15s; }
.tcv-ruta-act:hover { border-color:var(--tn-blue,#0076cf); background:#fff; box-shadow:0 2px 8px rgba(0,118,207,.1); }
.tcv-ruta-act .tcv-ruta-act-tit { font-weight:600; }
.tcv-ruta-act .badge { font-size:.62rem; font-weight:600; }

/* ---- Impresión: ocultar cromo, expandir contenido ---- */
@media print {
  .tcv-navbar, .tcv-sidebar, .tcv-offcanvas, .offcanvas-backdrop,
  .toast-container, .btn, form .border-top { display:none !important; }
  main { width:100% !important; max-width:100% !important; flex:0 0 100% !important; padding:0 !important; }
  body { background:#fff; }
  .tn-card, .card { box-shadow:none !important; border:1px solid #dde5ee !important; }
  a[href]:after { content:""; }
}

/* ===== Editor visual de MOU (WYSIWYG) ===== */
.tcv-editor-area{
  min-height:360px; max-height:60vh; overflow-y:auto;
  border:1px solid #ced4da; border-radius:.6rem; padding:1rem 1.25rem;
  background:#fff; font-family:'Instrument Sans',system-ui,sans-serif; color:#1f2937; line-height:1.55;
}
.tcv-editor-area:focus{ outline:none; border-color:#0076cf; box-shadow:0 0 0 .2rem rgba(0,118,207,.15); }
.tcv-editor-area h2{ font-size:1.3rem; font-weight:700; color:#041e42; margin:.2rem 0 .6rem; }
.tcv-editor-area h3{ font-size:1.08rem; font-weight:600; color:#0076cf; margin:1rem 0 .4rem; }
.tcv-editor-area p{ margin:0 0 .65rem; }
.tcv-editor-area ul,.tcv-editor-area ol{ margin:0 0 .75rem 1.3rem; }
.tcv-editor-area li{ margin-bottom:.2rem; }
.tcv-editor-area a{ color:#0076cf; }
.tcv-editor-toolbar .btn{ --bs-btn-padding-y:.28rem; --bs-btn-padding-x:.55rem; }

/* ===== Documento MOU (resultado final / vista del firmante) ===== */
.tcv-mou-doc{ font-family:'Instrument Sans',system-ui,sans-serif; color:#1a1a1a; line-height:1.6; }
.tcv-mou-doc h2{ font-family:'Instrument Sans',sans-serif; font-size:1.5rem; font-weight:800; color:#041e42;
  border-bottom:3px solid #ffb81c; padding-bottom:.35rem; margin:0 0 1rem; }
.tcv-mou-doc h3{ font-size:1.12rem; font-weight:700; color:#0076cf; margin:1.4rem 0 .5rem; }
.tcv-mou-doc p{ margin:0 0 .8rem; }
.tcv-mou-doc ul,.tcv-mou-doc ol{ margin:0 0 .9rem 1.4rem; }
.tcv-mou-doc li{ margin-bottom:.35rem; }
.tcv-mou-doc a{ color:#0076cf; }

/* ===================================================================
   TRANSICIÓN A LA NUEVA IMAGEN DE MARCA TECHNOVATION (2026)
   Paleta: azul eléctrico #0030EF · obsidiana #0A0A0A · índigo #1D1349
   · lima #D9E583 · crema #FAF4EC. Titulares Instrument Sans + acento serif Castoro.
   BLOQUE ADITIVO Y REVERSIBLE: eliminar esta sección revierte al estilo anterior.
   =================================================================== */
:root{
  /* Paleta oficial 2026 (External Brand Identity Guide) */
  --tv-blue:#0030EF; --tv-blue-d:#0026bf; --tv-obsidian:#0A0A0A;
  --tv-indigo:#1D1349; --tv-forest:#0C221E; --tv-lime:#D9E583; --tv-lime-soft:#ECF2C1;
  --tv-coral:#F69195; --tv-sky:#A7D3F0; --tv-cream:#FAF4EC;
}
/* Tipografía oficial: Instrument Sans (titulares 700 / cuerpo 400) + Castoro Italic (solo editorial) */
body{ font-family:'Instrument Sans',system-ui,-apple-system,'Segoe UI',Roboto,sans-serif; }
h1,h2,h3,.tn-display,.tn-hero h1,.tn-section h2,.tn-stat .n{ font-family:'Instrument Sans',sans-serif; font-weight:700; }
.tv-serif{ font-family:'Castoro',Georgia,serif; font-style:italic; font-weight:400; letter-spacing:0; }
.tv-cream{ background:var(--tv-cream)!important; }
.tv-lime-text{ color:var(--tv-lime)!important; }

/* Heroes con la nueva atmósfera obsidiana / índigo */
.tn-hero{ background:var(--tv-indigo); }
.tn-hero::before{ background:
    radial-gradient(48% 62% at 85% 10%, rgba(0,48,239,.55), transparent 60%),
    radial-gradient(42% 55% at 10% 92%, rgba(217,229,131,.16), transparent 60%),
    linear-gradient(150deg,#1D1349 0%,#141036 55%,#0A0A0A 100%); }
.tn-hero.alt::before{ background:
    radial-gradient(50% 62% at 12% 12%, rgba(0,48,239,.60), transparent 60%),
    radial-gradient(45% 55% at 90% 90%, rgba(217,229,131,.18), transparent 62%),
    linear-gradient(150deg,#0A0A0A 0%,#141036 55%,#1D1349 100%); }
.tn-hero .eyebrow{ background:rgba(217,229,131,.16); border-color:rgba(217,229,131,.40); }
.tn-blob.b1{ background:radial-gradient(circle,rgba(0,48,239,.55),transparent 70%); }
.tn-blob.b2{ background:radial-gradient(circle,rgba(217,229,131,.35),transparent 70%); }

/* Acentos de marca */
.tn-kicker{ color:var(--tv-blue); }
.tn-kicker.pill{ background:rgba(0,48,239,.10); }
.tn-stat .n{ color:var(--tv-blue); }
.tn-stat.gold .n{ color:#8a7d00; }  /* lima no legible sobre blanco → oliva */

/* Botones de la nueva marca */
.btn-tv{ background:var(--tv-blue); border-color:var(--tv-blue); color:#fff; border-radius:2rem; font-weight:700; }
.btn-tv:hover,.btn-tv:focus{ background:var(--tv-blue-d); border-color:var(--tv-blue-d); color:#fff; }
.btn-lime{ background:var(--tv-lime); border-color:var(--tv-lime); color:#0A0A0A; border-radius:2rem; font-weight:700; }
.btn-lime:hover,.btn-lime:focus{ background:#cdd96f; border-color:#cdd96f; color:#0A0A0A; }
.btn-outline-light.btn-tv-ghost{ border-color:rgba(255,255,255,.6); color:#fff; }

/* Aviso discreto de transición */
.tv-transicion{ font-size:.75rem; letter-spacing:.02em; opacity:.7; }

/* ===================================================================
   ALINEACIÓN COMPLETA CON LA PALETA OFICIAL 2026
   Los tokens antiguos (azul #0076cf, magenta, dorado, verde…) se remapean a
   los ocho colores del manual. Regla del manual: los colores claros (Coral,
   Lime, Sky, Cream) son FONDOS y llevan texto Navy/Obsidian; sobre blanco
   solo se usan como texto Navy o Electric.
   =================================================================== */
:root{
  --tn-navy:#1D1349;      /* Navy    */
  --tn-blue:#0030EF;      /* Electric */
  --tn-blue-d:#0026BF;
  --tn-pink:#F69195;      /* Coral  — fondo, texto Navy */
  --tn-gold:#D9E583;      /* Lime   — fondo, texto Navy */
  --tn-green:#0C221E;     /* Forest */
  --tn-sky:#A7D3F0;       /* Sky    — fondo, texto Navy */
  --tn-orange:#F69195;    /* sin equivalente oficial: Coral */
  --bs-primary:#0030EF; --bs-primary-rgb:0,48,239;
  --bs-link-color:#0030EF; --bs-link-hover-color:#0026BF;
  --tn-shadow:0 10px 40px rgba(29,19,73,.10);
  --tn-shadow-lg:0 24px 60px rgba(29,19,73,.16);
}
/* Fuera Rubik: la tipografía primaria es Instrument Sans */
.tn-stat .n, .tn-lock .txt .l1 { font-family:'Instrument Sans',sans-serif; }

/* Botones: parejas de color aprobadas (texto Navy sobre color claro) */
.btn-gold{ --bs-btn-color:#1D1349; --bs-btn-bg:var(--tn-gold); --bs-btn-border-color:var(--tn-gold);
  --bs-btn-hover-bg:#CDD96F; --bs-btn-hover-border-color:#CDD96F; --bs-btn-hover-color:#1D1349; color:#1D1349; }
.btn-pink{ --bs-btn-color:#1D1349; --bs-btn-bg:var(--tn-pink); --bs-btn-border-color:var(--tn-pink);
  --bs-btn-hover-bg:#F07F84; --bs-btn-hover-border-color:#F07F84; --bs-btn-hover-color:#1D1349; color:#1D1349; }
.btn-grad{ background:linear-gradient(100deg,#0030EF,#1D1349); box-shadow:0 8px 24px rgba(0,48,239,.25); }
.btn-grad:hover{ box-shadow:0 14px 32px rgba(0,48,239,.32); }

/* Chips: fondo claro oficial + texto Navy */
.tn-chip{ background:var(--tv-cream); color:#1D1349; }
.tn-chip-blue{ background:var(--tv-sky); color:#1D1349; }
.tn-chip-pink{ background:var(--tv-coral); color:#1D1349; }
.tn-chip-gold{ background:var(--tv-lime); color:#1D1349; }

/* Sobre blanco no se usan los tonos claros como texto */
.tn-stat.gold .n, .tn-stat.pink .n, .tn-stat.green .n{ color:var(--tv-indigo); }
.text-pink{ color:#1D1349!important; }
.text-gold{ color:#1D1349!important; }

/* Degradado decorativo con la paleta nueva */
.tn-grad-text{ background:linear-gradient(100deg,#D9E583,#F69195 55%,#A7D3F0); -webkit-background-clip:text; background-clip:text; }

/* ===================================================================
   SUBPALETA "TALENT": Forest · Lima · Rosa claro (Coral) · Blanco
   Decisión de marca (24-09-2026): de los ocho colores oficiales 2026 la
   plataforma usa los cuatro más cercanos a la identidad de Talent.
   Forest #0C221E es el color estructural (fondos oscuros, texto sobre
   blanco, botones primarios). Lima #D9E583 y Coral #F69195 son acentos y
   SIEMPRE van como fondo con texto Forest. El blanco es la base.
   Navy, Electric Blue y Sky quedan fuera de uso: sus tokens se remapean
   aquí, así que no hay que tocar las vistas una por una.
   BLOQUE ADITIVO Y REVERSIBLE: borrar esta sección vuelve al estado anterior.
   =================================================================== */
:root{
  --tv-forest:#0C221E; --tv-forest-l:#14332C; --tv-forest-xl:#1E4A40;
  --tv-lime:#D9E583; --tv-lime-soft:#ECF2C1; --tv-lime-d:#CDD96F;
  --tv-coral:#F69195; --tv-coral-soft:#FBC7C9; --tv-coral-d:#F07F84;

  /* El azul eléctrico y el navy dejan de usarse: pasan a Forest */
  --tv-blue:#0C221E; --tv-blue-d:#14332C; --tv-indigo:#0C221E;
  --tv-sky:#ECF2C1;            /* Sky fuera de uso -> lima suave */
  --tn-navy:#0C221E; --tn-blue:#0C221E; --tn-blue-d:#14332C;
  --tn-green:#0C221E; --tn-sky:#ECF2C1;
  --tn-gold:#D9E583; --tn-pink:#F69195; --tn-orange:#F69195;
  --bs-primary:#0C221E; --bs-primary-rgb:12,34,30;
  --bs-link-color:#0C221E; --bs-link-hover-color:#1E4A40;
  --tn-shadow:0 10px 40px rgba(12,34,30,.10);
  --tn-shadow-lg:0 24px 60px rgba(12,34,30,.16);
}

/* Heroes: verde profundo con destellos lima y coral (sin azul) */
.tn-hero{ background:var(--tv-forest); }
.tn-hero::before{ background:
    radial-gradient(48% 62% at 85% 10%, rgba(217,229,131,.22), transparent 62%),
    radial-gradient(42% 55% at 10% 92%, rgba(246,145,149,.18), transparent 62%),
    linear-gradient(150deg,#0C221E 0%,#091A17 58%,#050D0B 100%); }
.tn-hero.alt::before{ background:
    radial-gradient(50% 62% at 12% 12%, rgba(217,229,131,.24), transparent 62%),
    radial-gradient(45% 55% at 90% 90%, rgba(246,145,149,.20), transparent 62%),
    linear-gradient(150deg,#050D0B 0%,#091A17 58%,#0C221E 100%); }
.tn-blob.b1{ background:radial-gradient(circle,rgba(217,229,131,.30),transparent 70%); }
.tn-blob.b2{ background:radial-gradient(circle,rgba(246,145,149,.28),transparent 70%); }

/* Acentos */
.tn-kicker{ color:var(--tv-forest); }
.tn-kicker.pill{ background:var(--tv-lime-soft); color:var(--tv-forest); }
.tn-stat .n, .tn-stat.gold .n, .tn-stat.pink .n, .tn-stat.green .n{ color:var(--tv-forest); }
.text-navy,.text-primary{ color:var(--tv-forest)!important; }
.text-pink,.text-gold{ color:var(--tv-forest)!important; }

/* Botones */
.btn-tv,.btn-primary{ --bs-btn-bg:var(--tv-forest); --bs-btn-border-color:var(--tv-forest);
  --bs-btn-hover-bg:var(--tv-forest-xl); --bs-btn-hover-border-color:var(--tv-forest-xl);
  --bs-btn-active-bg:var(--tv-forest-xl); --bs-btn-color:#fff; }
.btn-tv{ background:var(--tv-forest); border-color:var(--tv-forest); color:#fff; }
.btn-tv:hover,.btn-tv:focus{ background:var(--tv-forest-xl); border-color:var(--tv-forest-xl); color:#fff; }
.btn-lime{ background:var(--tv-lime); border-color:var(--tv-lime); color:var(--tv-forest); }
.btn-lime:hover,.btn-lime:focus{ background:var(--tv-lime-d); border-color:var(--tv-lime-d); color:var(--tv-forest); }
.btn-gold{ --bs-btn-color:var(--tv-forest); --bs-btn-hover-color:var(--tv-forest); color:var(--tv-forest); }
.btn-pink{ --bs-btn-color:var(--tv-forest); --bs-btn-bg:var(--tv-coral); --bs-btn-border-color:var(--tv-coral);
  --bs-btn-hover-bg:var(--tv-coral-d); --bs-btn-hover-border-color:var(--tv-coral-d);
  --bs-btn-hover-color:var(--tv-forest); color:var(--tv-forest); }
.btn-grad{ background:linear-gradient(100deg,#0C221E,#1E4A40); box-shadow:0 8px 24px rgba(12,34,30,.25); }
.btn-grad:hover{ box-shadow:0 14px 32px rgba(12,34,30,.32); }
.btn-outline-primary{ --bs-btn-color:var(--tv-forest); --bs-btn-border-color:var(--tv-forest);
  --bs-btn-hover-bg:var(--tv-forest); --bs-btn-hover-border-color:var(--tv-forest); --bs-btn-hover-color:#fff; }

/* Chips y etiquetas: fondo lima/coral/blanco, texto Forest */
.tn-chip,.tn-chip-blue{ background:var(--tv-lime-soft); color:var(--tv-forest); }
.tn-chip-gold{ background:var(--tv-lime); color:var(--tv-forest); }
.tn-chip-pink{ background:var(--tv-coral-soft); color:var(--tv-forest); }

/* Fondos de sección: el crema se sustituye por blanco y lima muy suave */
.tv-cream{ background:#fff!important; }
.tv-lime-soft-bg{ background:var(--tv-lime-soft)!important; }
.tv-lime-text{ color:var(--tv-lime)!important; }

/* Degradado decorativo dentro de la subpaleta */
.tn-grad-text{ background:linear-gradient(100deg,#D9E583,#F69195 60%,#D9E583); -webkit-background-clip:text; background-clip:text; }

/* --- Zonas que todavía traían los colores antiguos como valor literal ---
   (no llegaban por los tokens, así que se corrigen aquí una por una) */

/* Fondo de las pantallas de acceso: era azul/magenta/dorado antiguo */
.tcv-auth-wrap{ background:var(--tv-forest); }
.tcv-auth-wrap::before{ background:
  radial-gradient(40% 50% at 15% 20%, rgba(217,229,131,.26), transparent 62%),
  radial-gradient(45% 55% at 85% 85%, rgba(246,145,149,.22), transparent 62%),
  radial-gradient(40% 50% at 90% 15%, rgba(217,229,131,.16), transparent 60%),
  linear-gradient(120deg,#091A17,#14332C); }

/* Editor de contenidos */
.tcv-editor-area:focus{ border-color:var(--tv-forest); box-shadow:0 0 0 .2rem rgba(12,34,30,.15); }
.tcv-editor-area h2,.tcv-editor-area h3,.tcv-editor-area a{ color:var(--tv-forest); }

/* Documento del convenio (además usaba Rubik, que no es tipografía oficial) */
.tcv-mou-doc h2{ font-family:'Instrument Sans',sans-serif; color:var(--tv-forest); border-bottom-color:var(--tv-lime); }
.tcv-mou-doc h3,.tcv-mou-doc a{ color:var(--tv-forest); }

/* Detalles sueltos */
.tn-ejemplo .bi-lightbulb{ color:var(--tv-forest); }
.tcv-ruta-punto{ border-color:var(--c,#0C221E); color:var(--c,#0C221E); }
.tn-chip-gold{ background:var(--tv-lime); color:var(--tv-forest); }

/* Tinte lima muy suave para recuadros y avisos (el blanco sigue siendo la base) */
:root{ --tv-lime-1:#F6F9E6; }
.tv-lime-1-bg{ background:var(--tv-lime-1)!important; }

/* NOTA: los estados semánticos de Bootstrap (success / warning / danger / info)
   se dejan con sus colores de aviso a propósito: no son color de marca, son
   señales de interfaz y cambiarlos haría menos legibles los mensajes. */

/* Grises de interfaz: eran azulados (venían del azul antiguo). Se pasan a
   neutros cálidos para que no desentonen con el verde de marca. */
footer.tn-footer{ color:#D5DED2; }
.tcv-navbar,.tcv-sidebar{ border-color:#E7EAE5; }
.tn-formacion-prog{ background:#E7EAE5; }
.tn-matriz .equipo-row{ border-bottom-color:#EFF1EC; }
.tcv-ruta-nodo:not(:last-child):before{ background:#E4E8E0; }
.tcv-ruta-act{ background:var(--tv-lime-1); border-color:#E7EDD4; color:#3A443C; }
.tn-ejemplo{ background:var(--tv-lime-1); color:#5E6B67; }
@media print{ .tn-card,.card{ border-color:#DDE3DC!important; } }

/* Tablas dentro de contenidos guardados (materiales, guías, convenio).
   El saneador elimina el atributo class, así que Bootstrap no las alcanza:
   se les da formato por etiqueta, con la paleta de marca. */
.tcv-mou-contenido table{ width:100%; border-collapse:collapse; margin:1rem 0 1.4rem; font-size:.94rem; }
.tcv-mou-contenido thead th{ background:var(--tv-forest); color:#fff; font-weight:600;
  text-align:left; padding:.55rem .75rem; }
.tcv-mou-contenido thead th:first-child{ border-radius:.5rem 0 0 0; }
.tcv-mou-contenido thead th:last-child{ border-radius:0 .5rem 0 0; }
.tcv-mou-contenido tbody td{ padding:.55rem .75rem; border-bottom:1px solid #E7EAE5; vertical-align:top; }
.tcv-mou-contenido tbody tr:nth-child(odd) td{ background:var(--tv-lime-1); }
.tcv-mou-contenido table strong{ color:var(--tv-forest); }
.tcv-mou-contenido h4{ margin:1.6rem 0 .5rem; font-weight:700; color:var(--tv-forest); }
.tcv-mou-contenido hr{ margin:1.6rem 0; border:0; border-top:1px solid #E7EAE5; }
.tcv-mou-contenido ul{ margin:0 0 1rem 1.2rem; } .tcv-mou-contenido li{ margin-bottom:.4rem; }
@media (max-width:575.98px){
  .tcv-mou-contenido table{ display:block; overflow-x:auto; white-space:nowrap; }
}

/* ===================================================================
   ICONOGRAFÍA SEGÚN EL MANUAL 2026
   Regla literal del manual: "Use line-style icons in brand-color circles"
   y "Do not use fill-style icons". Grosor de línea homogéneo (~3px).
   Sustituye a los PNG de clip-art negro (ic-woman, ic-notebook,
   ic-networking, ic-finanzas), que no cumplían ninguna de las dos cosas.
   Usa Bootstrap Icons, que ya está cargado: es vectorial y de línea.
   =================================================================== */
.tv-ico{ display:inline-flex; align-items:center; justify-content:center;
  width:4.25rem; height:4.25rem; border-radius:50%; font-size:1.85rem; line-height:1;
  flex:0 0 auto; -webkit-text-stroke:.4px currentColor; }
.tv-ico-lime  { background:var(--tv-lime);      color:var(--tv-forest); }
.tv-ico-coral { background:var(--tv-coral);     color:var(--tv-forest); }
.tv-ico-soft  { background:var(--tv-lime-soft); color:var(--tv-forest); }
.tv-ico-forest{ background:var(--tv-forest);    color:#fff; }
.tv-ico-sm{ width:3rem; height:3rem; font-size:1.25rem; }
.tv-ico-lg{ width:6rem; height:6rem; font-size:2.6rem; }

/* Composición del hero: cuatro círculos que anticipan las cuatro etapas */
.tv-hero-ico{ display:grid; grid-template-columns:repeat(2,auto); gap:1.15rem;
  justify-content:center; }
.tv-hero-ico .tv-ico:nth-child(even){ transform:translateY(1.1rem); }

/* Menú público: a 1024px los 7 enlaces no caben y "Hoja de ruta" partía en
   tres líneas, estirando la barra de 56 a 106px. Se impide el corte de
   palabra y se aprieta el espaciado en el tramo justo (992-1199px). */
.tn-public-nav .nav-link{ white-space:nowrap; }
.tn-public-nav .navbar-nav{ flex-wrap:nowrap; }
@media (min-width:992px) and (max-width:1199.98px){
  .tn-public-nav .nav-link{ font-size:.9rem; padding-left:.45rem; padding-right:.45rem; }
  .tn-public-nav .navbar-nav{ gap:0!important; }
  .tn-public-nav .tn-lock .txt{ font-size:.82rem; }
  .tn-public-nav .navbar-brand img{ height:26px; }
}
/* Sombra del menú: era del azul antiguo */
.tn-public-nav{ box-shadow:0 1px 0 rgba(12,34,30,.08); }
.tn-public-nav.tn-scrolled{ box-shadow:0 8px 30px rgba(12,34,30,.10); }

/* ===================================================================
   VARIABLES DE TEMA DE BOOTSTRAP 5.3
   Las clases *-subtle y *-emphasis NO derivan de --bs-primary-rgb: llevan
   su propio color fijo. Por eso en el backoffice seguían saliendo azules
   (badges del directorio, tipo de acceso en auditoría, etc.). Se redefinen
   aquí para que caigan dentro de la subpaleta.
   Se respetan a propósito success / warning / danger: son señales, no marca.
   =================================================================== */
:root{
  /* primary -> Forest */
  --bs-primary:#0C221E; --bs-primary-rgb:12,34,30;
  --bs-primary-bg-subtle:#ECF2C1; --bs-primary-border-subtle:#D9E583;
  --bs-primary-text-emphasis:#0C221E;
  /* info (se usa como acento neutro, no como aviso) -> Forest / lima */
  --bs-info:#0C221E; --bs-info-rgb:12,34,30;
  --bs-info-bg-subtle:#ECF2C1; --bs-info-border-subtle:#D9E583;
  --bs-info-text-emphasis:#0C221E;
  /* grises: eran azulados */
  --bs-secondary:#5E6B67; --bs-secondary-rgb:94,107,103;
  --bs-secondary-bg-subtle:#EFF1EE; --bs-secondary-border-subtle:#DDE3E0;
  --bs-secondary-text-emphasis:#3A4440;
  --bs-link-color:#0C221E; --bs-link-hover-color:#1E4A40;
  --bs-link-color-rgb:12,34,30;
}

/* Barra lateral del backoffice: los grises eran azulados y el hover usaba
   --tn-gris, que se quedó sin remapear. */
:root{ --tn-gris:#F4F6F3; }
.tcv-sidebar .nav-link{ color:#3A4440; }
.tcv-sidebar .nav-link:hover{ background:var(--tv-lime-1); color:var(--tv-forest); }
.tcv-sidebar .nav-link.activo{ background:var(--tv-forest); color:#fff; }
.tcv-sidebar .nav-link.activo i{ color:var(--tv-lime); }
.tcv-sidebar .tcv-grupo{ color:#87918E; }

/* Contraste: los badges ámbar de Bootstrap traen texto blanco por defecto
   (≈1.9:1, ilegible). Se les pone texto oscuro, que es lo que pide WCAG. */
.badge.bg-warning{ color:#1F2A27; }
.badge.bg-light{ color:#1F2A27; }

/* Estas cuatro reglas del bloque original llevan !important con los colores
   antiguos (cian, dorado, gris azulado, azul), así que las variables de tema
   no las alcanzaban. Se corrigen explícitamente. El ámbar de "warning" se
   mantiene: es una señal de aviso, no color de marca. */
.bg-info-subtle      { background:var(--tv-lime-soft) !important; }
.bg-secondary-subtle { background:#EFF1EE !important; }
.text-info           { color:var(--tv-forest) !important; }

/* Cuadro de entidades de la página de patrocinios: el tamaño del logo baja
   con el nivel, y la co-embajadora lleva su distintivo encima. */
.tv-fila-logos{ display:flex; flex-wrap:wrap; align-items:center; gap:.6rem 1.2rem; margin:0 0 1.9rem; }
.tv-fila-logos .lbl{ flex:0 0 190px; font-size:.72rem; font-weight:700; letter-spacing:.06em;
  text-transform:uppercase; color:rgba(255,255,255,.78); }
.tv-logo{ position:relative; background:#fff; border-radius:.75rem; display:flex; align-items:center;
  justify-content:center; text-align:center; padding:.5rem .75rem; color:var(--tv-forest);
  font-weight:700; line-height:1.15; }
.tv-logo a{ color:inherit; text-decoration:none; display:flex; align-items:center; justify-content:center; height:100%; }
.tv-logo img{ max-width:100%; max-height:100%; object-fit:contain; }
.tv-logo-xl{ min-width:210px; height:92px; font-size:.95rem; }
.tv-logo-l { min-width:170px; height:78px; font-size:.88rem; }
.tv-logo-m { min-width:140px; height:64px; font-size:.8rem; }
.tv-logo-s { min-width:112px; height:52px; font-size:.72rem; font-weight:600; }
.tv-coemb{ position:absolute; top:-.6rem; left:50%; transform:translateX(-50%);
  background:var(--tv-lime); color:var(--tv-forest); font-size:.6rem; font-weight:800;
  letter-spacing:.03em; padding:.15rem .5rem; border-radius:2rem; white-space:nowrap;
  border:2px solid #fff; }
@media (max-width:767.98px){
  .tv-fila-logos .lbl{ flex:0 0 100%; }
  .tv-logo-xl,.tv-logo-l{ min-width:140px; height:64px; font-size:.8rem; }
}

/* Cuadro de entidades sobre fondo claro (ediciones anteriores) */
.tv-cuadro-claro .tv-fila-logos{ margin-bottom:1.3rem; }
.tv-cuadro-claro .tv-fila-logos .lbl{ color:#5E6B67; }
.tv-cuadro-claro .tv-logo{ border:1px solid #E1E6E0; }
.tv-cuadro-claro .tv-logo-xl{ min-width:180px; height:76px; }
.tv-cuadro-claro .tv-logo-l { min-width:150px; height:66px; }
.tv-cuadro-claro .tv-coemb{ border-color:#fff; }

/* ===================================================================
   MATERIALES (web pública)
   =================================================================== */
.tv-buscador{ position:relative; max-width:560px; }
.tv-buscador i{ position:absolute; left:1.1rem; top:50%; transform:translateY(-50%); color:var(--tv-forest); }
.tv-buscador input{ width:100%; border:0; border-radius:2rem; padding:.85rem 1.2rem .85rem 2.8rem;
  font-size:1rem; background:#fff; color:#1F2A27; box-shadow:0 8px 30px rgba(0,0,0,.18); }
.tv-buscador input:focus{ outline:3px solid var(--tv-lime); outline-offset:2px; }

.tv-filtro{ border:1px solid #DDE3DC; background:#fff; color:#3A4440; border-radius:2rem;
  padding:.4rem .95rem; font-size:.88rem; font-weight:600; cursor:pointer; transition:.15s; }
.tv-filtro span{ display:inline-block; min-width:1.4rem; margin-left:.25rem; padding:0 .35rem;
  border-radius:1rem; background:var(--tv-lime-1); color:var(--tv-forest); font-size:.75rem; }
.tv-filtro:hover{ border-color:var(--tv-forest); color:var(--tv-forest); }
.tv-filtro.activo{ background:var(--tv-forest); border-color:var(--tv-forest); color:#fff; }
.tv-filtro.activo span{ background:var(--tv-lime); }

.tv-mat-card{ display:flex; align-items:flex-start; gap:1rem; height:100%; padding:1.25rem;
  background:#fff; border:1px solid #E7EAE5; border-radius:1rem; color:inherit;
  text-decoration:none; transition:transform .15s, box-shadow .15s, border-color .15s; }
.tv-mat-card:hover{ transform:translateY(-2px); border-color:var(--tv-lime); box-shadow:var(--tn-shadow); color:inherit; }
.tv-mat-card:focus-visible{ outline:3px solid var(--tv-lime); outline-offset:2px; }
.tv-mat-card > span:last-child{ display:flex; flex-direction:column; min-width:0; }
.tv-mat-tipo{ font-size:.72rem; font-weight:700; letter-spacing:.05em; text-transform:uppercase; color:#5E6B67; margin-bottom:.2rem; }
.tv-mat-tit{ font-weight:700; color:var(--tv-forest); line-height:1.3; }
.tv-mat-desc{ font-size:.88rem; color:#5E6B67; margin-top:.3rem; }
.tv-mat-accion{ font-size:.85rem; font-weight:700; color:var(--tv-forest); margin-top:.7rem; }
.tv-mat-mini{ align-items:center; padding:.75rem 1rem; }
.tv-mat-mini .tv-mat-tit{ font-size:.9rem; }

/* Imprimir una guía: solo el contenido, sin menú, pie ni cabecera oscura */
@media print{
  .tn-public-nav, footer, .no-print, .tn-hero .small{ display:none !important; }
  .tn-hero{ background:#fff !important; color:#0C221E !important; }
  .tn-hero::before, .tn-hero::after{ display:none !important; }
  .tn-hero h1, .tn-hero .lead, .tn-hero .tn-kicker{ color:#0C221E !important; }
  .tn-section{ padding-top:0 !important; }
  .col-lg-8{ flex:0 0 100% !important; max-width:100% !important; }
  .tcv-mou-contenido thead th{ -webkit-print-color-adjust:exact; print-color-adjust:exact; }
}
.tn-section .tv-grupo-tit{ font-size:1.15rem; font-weight:700; color:var(--tv-forest); margin:0 0 1rem; }

/* Contenido dentro de un .tn-hero usado como tarjeta (sin .container):
   hay que subirlo de capa, o el fondo decorativo ::before lo tapa. */
.tn-hero .tv-hero-capa{ position:relative; z-index:2; }

/* Fotos de eventos: más altas en tarjetas y en la cabecera de la ficha */
.tv-evento-foto{ height:230px; background-position:center; background-size:cover; }
.tv-evento-img{ display:block; width:100%; height:220px; object-fit:cover; }
.tv-evento-cabecera{ min-height:clamp(320px, 40vw, 460px); display:flex; align-items:flex-end; }
.tv-evento-cabecera > .container{ width:100%; }
@media (max-width:575.98px){ .tv-evento-foto,.tv-evento-img{ height:200px; } }

/* Interruptor de inscripciones en el listado de eventos */
.tv-insc{ display:inline-flex; align-items:center; gap:.45rem; border:1px solid #DDE3DC; background:#fff;
  color:#5E6B67; border-radius:2rem; padding:.25rem .75rem; font-size:.82rem; font-weight:600; cursor:pointer; }
.tv-insc .punto{ width:.55rem; height:.55rem; border-radius:50%; background:#A9B3AF; }
.tv-insc.abiertas{ background:var(--tv-lime-1); border-color:var(--tv-lime); color:var(--tv-forest); }
.tv-insc.abiertas .punto{ background:#198754; }
.tv-insc:hover{ border-color:var(--tv-forest); }
.tv-interruptor .form-switch .form-check-input{ width:2.6em; height:1.35em; cursor:pointer; }
.tv-interruptor .form-check-input:checked{ background-color:var(--tv-forest); border-color:var(--tv-forest); }
.tv-interruptor .form-check-label{ margin-left:.35rem; padding-top:.15rem; cursor:pointer; }

/* Estadísticas del listado de mentores */
.tv-barra{ margin-bottom:.65rem; }
.tv-barra-et{ display:flex; justify-content:space-between; gap:.5rem; font-size:.85rem; margin-bottom:.2rem; }
.tv-barra-fondo{ height:.5rem; border-radius:1rem; background:#EFF1EC; overflow:hidden; }
.tv-barra-fondo > div{ height:100%; border-radius:1rem; background:var(--tv-forest); }
.tv-acm-resumen{ background:var(--tv-lime-1); border-radius:.75rem; padding:.7rem 1rem; font-size:.9rem; }

/* Emparejamiento: tarjetas de sugerencia y razones */
.tv-sugerencia{ border:1px solid #E7EAE5; border-radius:.75rem; padding:.75rem .85rem; height:100%; background:#fff; }
.tv-sugerencia.mejor{ border-color:var(--tv-lime); background:var(--tv-lime-1); }
.tv-razon{ display:inline-block; font-size:.72rem; font-weight:600; padding:.1rem .5rem; border-radius:1rem; }
.tv-razon.ok{ background:#E6F2EA; color:#146C43; }
.tv-razon.no{ background:#FBE9EA; color:#A34A4E; }

/* ===================================================================
   LOGOTIPOS 2026 (Technovation Comunidad Valenciana, índigo y blanco)
   Los PNG nuevos vienen recortados, sin margen transparente: por eso
   las alturas son menores que con el logo antiguo y ocupan lo mismo.
   Índigo (#1D1349) sobre fondo claro; blanco sobre Forest.
   =================================================================== */
.tn-lock img{ height:34px; width:auto; }
.tn-lock .bar{ background:var(--tv-indigo); opacity:.25; height:26px; }
.tn-lock .txt .l2{ color:var(--tv-indigo); opacity:.75; }
.tcv-navbar .navbar-brand img{ height:30px; width:auto; }
@media (min-width:992px) and (max-width:1199.98px){
  .tn-public-nav .navbar-brand img{ height:28px; }
}
@media (max-width:575.98px){
  .tn-lock img{ height:30px; }
}

/* Captcha propio: la pregunta y el campo trampa (fuera de la vista, no display:none,
   porque algunos robots se saltan los campos ocultos con display:none). */
.tv-captcha{ background:var(--tv-lime-1); border:1px solid var(--tv-lime-soft); border-radius:.6rem; padding:.6rem .75rem; }
.tv-captcha label{ color:var(--tv-forest); }
.tv-captcha .form-control{ max-width:220px; }
.tv-captcha-trampa{ position:absolute!important; left:-10000px!important; top:auto; width:1px; height:1px; overflow:hidden; }

/* Ficha del evento (backoffice): vista previa del correo y variables clicables */
.tv-previa-correo{ width:100%; height:680px; border:1px solid #E7EAE5; border-radius:.75rem; background:#F1F3F0; }
.tv-variable{ cursor:pointer; background:var(--tv-lime-1); color:var(--tv-forest); padding:.05rem .35rem; border-radius:.3rem; margin-right:.15rem; }
.tv-variable:hover{ background:var(--tv-lime-soft); }
