/*
 * TEDxSanEsteban 2026 — landing pública.
 * Rediseño según docs/design_handoff_tedx_san_esteban/README.md.
 * Tokens, tipografía, escalas y animaciones siguen ese documento al pie de la letra.
 */

:root{
  --ink:#0A0A0B;
  --paper:#F5F3F0;
  --red:#EB0028;
  --surface:#121214;
  --surface-alt:#161618;
  --hair-dark:rgba(245,243,240,.14);
  --hair-dark-soft:rgba(245,243,240,.1);
  --hair-light:rgba(10,10,11,.14);
  --ink-72:rgba(245,243,240,.72);
  --ink-55:rgba(245,243,240,.55);
  --ink-45:rgba(245,243,240,.45);
  --paper-62:rgba(10,10,11,.62);
  --paper-50:rgba(10,10,11,.5);
}
*{box-sizing:border-box;}
/* Nota: NO poner overflow-x:hidden aquí — invalida position:sticky en el header
   (al fijar overflow-x, el navegador fuerza overflow-y:auto, y eso rompe el sticky).
   El desbordamiento móvil real ya se corrigió en el tamaño de los elementos del
   nav (ver @media dentro de .tnav-*), así que esta red de seguridad ya no hace falta. */
html{scroll-behavior:smooth;}
body{margin:0; background:var(--ink); color:var(--paper); font-family:Archivo,-apple-system,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif; -webkit-font-smoothing:antialiased; line-height:1.5;}
img{max-width:100%; display:block;}
a{color:inherit; text-decoration:none;}
::selection{background:var(--red); color:#fff;}

@keyframes marquee{from{transform:translateX(0)}to{transform:translateX(-50%)}}
@keyframes riseIn{from{opacity:0; transform:translateY(18px)}to{opacity:1; transform:none}}
@keyframes pulseDot{0%,100%{opacity:1}50%{opacity:.25}}
@media (prefers-reduced-motion: reduce){
  .marquee-track{animation:none !important;}
  .pulse-dot{animation:none !important;}
}

/* Los contenedores de sección aportan su propio padding horizontal (ver cada
   sección abajo); .wrap solo centra el contenido y limita su ancho. */
.wrap{max-width:1280px; margin:0 auto;}
section{position:relative;}

h1,h2,h3,p{margin:0;}

.eyebrow{font-size:24px; font-weight:700; letter-spacing:.1em; text-transform:uppercase; color:var(--red);}
.h2{font-size:clamp(34px,4.6vw,60px); line-height:1; font-weight:800; letter-spacing:-.035em;}
.h2-sm{font-size:clamp(30px,3.6vw,46px); line-height:1; font-weight:800; letter-spacing:-.035em;}

.btn{display:inline-block; border-radius:100px; font-weight:700; cursor:pointer; border:1px solid transparent; transition:background .2s ease, color .2s ease, border-color .2s ease;}
.btn-primary{background:var(--red); color:#fff; padding:17px 30px; font-size:16px;}
.btn-primary:hover{background:#fff; color:var(--ink);}
/* Botones outline para usar SIEMPRE sobre fondo oscuro (texto claro heredado,
   borde claro translúcido); no hay ningún outline sobre fondo claro en este diseño. */
.btn-outline-dark{background:transparent; color:var(--paper); border-color:rgba(245,243,240,.28); padding:17px 30px; font-size:16px; font-weight:600;}
.btn-outline-dark:hover{border-color:var(--paper); background:rgba(245,243,240,.06);}
.btn-outline-sm{background:transparent; color:var(--paper); border-color:rgba(245,243,240,.3); padding:14px 26px; font-size:16px; font-weight:600;}
.btn-outline-sm:hover{background:var(--red); border-color:var(--red); color:#fff;}

/* ==========================================================================
   Header + Hero — rediseño aislado (fuentes/colores propios, NO reutiliza
   clases del resto del sitio: .btn, .eyebrow, .wrap, etc. quedan intactas
   para las demás secciones). Prefijo tnav-/thero- para evitar colisiones.
   ========================================================================== */
.tnav, .thero, .thero *{box-sizing:border-box;}
.tnav{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;}
.tnav-mono{font-family:'IBM Plex Mono',monospace;}

/* ---------- Barra de navegación ---------- */
.tnav{position:sticky; top:0; z-index:50; display:flex; align-items:stretch; background:#fff; border-bottom:1px solid #d8d4cf;}
.tnav-logo{display:flex; align-items:center; padding:17px 28px; font-size:23px; font-weight:700; letter-spacing:-.02em; border-right:1px solid #d8d4cf; white-space:nowrap;}
.tnav-logo .x{color:#eb0028;}
.tnav-logo .s{color:#14120f;}
.tnav-links{flex:1; display:flex; align-items:center; gap:30px; padding:0 30px; font-size:16px; color:#4a453f;}
.tnav-links a{padding:6px 0; border-bottom:2px solid transparent; transition:border-color .15s ease, color .15s ease;}
.tnav-links a:hover, .tnav-links a:focus-visible{border-bottom-color:#eb0028; color:#14120f; font-weight:600;}
.tnav-social{display:flex; align-items:center; gap:16px; margin-left:auto;}
.tnav-social a.tnav-icon{display:flex; padding:0; border-bottom:none; color:#4a453f;}
.tnav-social a.tnav-icon:hover, .tnav-social a.tnav-icon:focus-visible{border-bottom:none; color:#eb0028; font-weight:400;}
.tnav-icon svg{width:19px; height:19px; display:block;}
.tnav-cta{display:flex; align-items:center; background:#eb0028; color:#fff; font-size:15px; font-weight:600; padding:0 30px; white-space:nowrap; transition:background .15s ease;}
.tnav-cta:hover{background:#c50021; color:#fff;}
.tnav-toggle{display:none; background:none; border:none; border-left:1px solid #d8d4cf; color:#14120f; font-size:22px; cursor:pointer; padding:0 22px;}

@media (max-width:768px){
  .tnav-logo{padding:14px 14px; font-size:16px;}
  .tnav-cta{padding:0 12px; font-size:12.5px;}
  .tnav-toggle{padding:0 14px; font-size:20px;}
  .tnav-links{position:fixed; inset:57px 0 0 0; z-index:49; background:#fff; flex-direction:column; align-items:flex-start; gap:22px; padding:28px; display:none; overflow-y:auto; font-size:16px;}
  .tnav-links.open{display:flex;}
  .tnav-links .tnav-cta{margin-top:6px; display:flex; width:100%; justify-content:center; padding:14px 0; font-size:15px;}
  .tnav-toggle{display:block;}
}
@media (max-width:360px){
  .tnav-logo{font-size:14px; padding:14px 10px;}
  .tnav-cta{padding:0 8px; font-size:11px;}
  .tnav-toggle{padding:0 10px; font-size:18px;}
}

/* ---------- Hero ---------- */
.thero{background:#f4f2ef; color:#14120f; overflow:hidden;}
.thero-grid{display:grid; grid-template-columns:1.08fr .92fr; min-height:640px;}

.thero-copy{padding:66px 54px 54px; display:flex; flex-direction:column;}
.thero-kicker{font-size:16px; font-weight:700; letter-spacing:.14em; color:#eb0028; text-transform:uppercase;}
.thero-title{margin:24px 0 0; font-size:92px; line-height:.92; letter-spacing:-.04em; font-weight:700; max-width:13ch; text-wrap:balance; font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;}
.thero-lead{margin:28px 0 0; font-size:19px; line-height:1.6; color:#4a453f; max-width:42ch;}
.thero-actions{margin-top:34px; display:flex; gap:12px; flex-wrap:wrap;}
.thero-btn{display:inline-block; font-size:16px; font-weight:600; padding:17px 28px; font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;}
.thero-btn-primary{background:#14120f; color:#fff;}
.thero-btn-primary:hover{background:#000;}
.thero-btn-outline{border:1px solid #c9c4bd; color:#14120f;}
.thero-btn-outline:hover{border-color:#14120f;}
.thero-spacer{flex:1;}
.thero-stats{margin-top:46px; padding-top:26px; border-top:1px solid #d8d4cf; display:flex; gap:40px; flex-wrap:wrap;}
.thero-stats .n{font-size:30px; font-weight:700;}
.thero-stats .l{margin-top:3px; font-size:11px; letter-spacing:.16em; color:#8a837a;}

.thero-panel{position:relative; background:#0a0a0a;}
.thero-panel-img{position:absolute; inset:0; background-size:cover; background-position:center; filter:grayscale(1) contrast(1.12);}
.thero-panel-duo{position:absolute; inset:0; background:linear-gradient(200deg, rgba(235,0,40,.55), rgba(10,10,10,.75));}
.thero-panel-foot{position:absolute; left:0; right:0; bottom:0; padding:30px 34px; color:#fff; display:flex; align-items:flex-end; justify-content:space-between; gap:20px;}
.thero-panel-venue{font-size:12px; letter-spacing:.14em; line-height:1.7; text-transform:uppercase;}
.thero-panel-cd{display:flex; text-align:right; gap:18px;}
.thero-panel-cd .n{font-size:28px; font-weight:700;}
.thero-panel-cd .l{font-size:10px; letter-spacing:.16em; color:rgba(255,255,255,.75);}

@media (max-width:1024px){
  .thero-grid{grid-template-columns:1fr;}
  .thero-panel{height:320px;}
  .thero-title{font-size:clamp(44px,9vw,72px);}
}
@media (max-width:640px){
  .thero-stats{flex-wrap:wrap; gap:24px;}
}

/* ---------- Banda de estadísticas ---------- */
#stats{border-bottom:1px solid rgba(245,243,240,.1);}
#stats .wrap{display:grid; grid-template-columns:repeat(auto-fit,minmax(200px,1fr));}
.stat-cell{padding:38px 28px; border-right:1px solid rgba(245,243,240,.1); display:flex; align-items:baseline; gap:14px;}
.stat-cell .n{font-size:44px; font-weight:900; letter-spacing:-.04em; color:var(--red); line-height:1;}
.stat-cell .l{font-size:16px; font-weight:600; letter-spacing:.1em; text-transform:uppercase; color:var(--ink-55);}

/* ---------- Section header pattern (eyebrow + h2 + nota) ---------- */
.section-head{display:flex; flex-wrap:wrap; align-items:flex-end; justify-content:space-between; gap:24px; margin-bottom:56px;}
.section-head .note{font-size:16px; color:var(--ink-55); max-width:340px; text-wrap:pretty;}
.section-head.on-light .note{color:var(--paper-50); font-weight:600;}

/* ---------- Quiénes somos ---------- */
#about{padding:120px 28px;}
#about .wrap{display:grid; grid-template-columns:repeat(auto-fit,minmax(300px,1fr)); gap:64px; align-items:start;}
#about h2{margin-top:18px; text-wrap:balance;}
#about .lead{font-size:19px; line-height:1.6; color:rgba(245,243,240,.8); text-wrap:pretty;}
.facts-list{margin-top:38px; display:grid; gap:1px; background:var(--hair-dark); border:1px solid var(--hair-dark);}
.facts-list .fact{background:var(--ink); padding:18px 20px; display:flex; align-items:center; gap:14px; font-size:15px; color:rgba(245,243,240,.82);}
.facts-list .fact .dot{width:7px; height:7px; background:var(--red); flex:none;}

/* ---------- Programa (invertida) ---------- */
#programa{background:var(--paper); color:var(--ink); padding:120px 28px;}
#programa .section-head h2{color:var(--ink);}
.programa-rows{display:grid; gap:0;}
.programa-row{display:grid; grid-template-columns:minmax(90px,130px) 1fr minmax(120px,220px); gap:24px; align-items:baseline; padding:26px 0; border-top:1px solid var(--hair-light); transition:background .2s ease;}
.programa-row:hover{background:rgba(235,0,40,.05);}
.programa-row .time{font-size:clamp(24px,3vw,36px); font-weight:900; letter-spacing:-.03em; color:var(--red); font-variant-numeric:tabular-nums;}
.programa-row .title{font-size:clamp(22px,2.6vw,30px); font-weight:700; letter-spacing:-.02em;}
.programa-row .note{font-size:16px; color:var(--paper-62);}
.programa-rows .rule-end{border-top:1px solid var(--hair-light);}
@media (max-width:640px){
  .programa-row{grid-template-columns:1fr; gap:6px;}
}

/* ---------- Cita ---------- */
#quote{background:var(--red); color:#fff; padding:clamp(56px,7vw,90px) 28px;}
#quote blockquote{max-width:900px; margin:0 auto;}
#quote p{font-family:Newsreader,Georgia,serif; font-weight:300; font-size:clamp(22px,3.2vw,38px); line-height:1.22; letter-spacing:-.02em; text-wrap:pretty;}
#quote footer{margin-top:12px; font-size:22px; font-weight:700; letter-spacing:.1em; text-transform:uppercase; opacity:.95;}

/* ---------- Speakers ---------- */
#speakers{padding:120px 28px;}
.speakers-grid{display:grid; grid-template-columns:repeat(4,1fr); gap:1px; background:var(--hair-dark); border:1px solid var(--hair-dark);}
@media (max-width:980px){ .speakers-grid{grid-template-columns:repeat(2,1fr);} }
@media (max-width:560px){ .speakers-grid{grid-template-columns:1fr;} }
.speaker-tile{background:var(--ink); display:block; position:relative; overflow:hidden; text-align:left; border:none; cursor:pointer; width:100%; padding:0; font:inherit; color:inherit; transition:background .2s ease;}
.speaker-tile:hover, .speaker-tile:focus-visible{background:var(--surface); outline:none;}
.speaker-tile .ph-wrap{aspect-ratio:3/4; overflow:hidden; background:var(--surface-alt);}
.speaker-tile .ph-wrap img{width:100%; height:100%; object-fit:cover; object-position:50% 20%; filter:grayscale(1) contrast(1.05); transition:filter .4s ease, transform .6s ease;}
.speaker-tile:hover .ph-wrap img, .speaker-tile:focus-visible .ph-wrap img{filter:none; transform:scale(1.04);}
.speaker-tile .ph-placeholder{width:100%; height:100%; display:flex; align-items:center; justify-content:center; font-size:2.4rem; font-weight:800; color:var(--ink-45); filter:none;}
.speaker-tile .body{padding:18px 18px 22px;}
.speaker-tile .name{font-size:16px; font-weight:800; letter-spacing:-.02em; line-height:1.2;}
.speaker-tile .role{margin-top:7px; font-size:15px; line-height:1.4; color:var(--ink-55); text-wrap:pretty;}
.speaker-tile .badge{position:absolute; top:0; left:0; background:var(--red); color:#fff; font-size:12px; font-weight:800; padding:5px 9px; letter-spacing:.06em;}

/* ---------- Eventos pasados ---------- */
#pasados{padding:0 28px 120px;}
.pasados-box{max-width:1280px; margin:0 auto; border:1px solid var(--hair-dark); padding:clamp(32px,5vw,64px); display:grid; grid-template-columns:minmax(240px,.9fr) minmax(360px,1.7fr); gap:48px; align-items:center;}
@media (max-width:760px){ .pasados-box{grid-template-columns:1fr;} }
.pasados-box h2{margin:16px 0 14px; font-size:clamp(30px,3.6vw,46px); line-height:1.02; font-weight:800; letter-spacing:-.035em;}
.pasados-box .lead{margin:0 0 28px; font-size:16px; line-height:1.6; color:var(--ink-72); max-width:420px; text-wrap:pretty;}
.pasados-videos{display:grid; grid-template-columns:repeat(auto-fit,minmax(200px,1fr)); gap:18px;}
.pasados-video{position:relative; aspect-ratio:16/11; border:1px solid var(--hair-dark); overflow:hidden; background:var(--surface-alt); display:block; cursor:pointer;}
.pasados-video .thumb{position:absolute; inset:0; width:100%; height:100%; object-fit:cover; opacity:.55; transition:opacity .3s ease;}
.pasados-video:hover .thumb{opacity:.8;}
.pasados-video .stripes{position:absolute; inset:0; background:repeating-linear-gradient(135deg, rgba(245,243,240,.05) 0 8px, transparent 8px 16px);}
.pasados-video .content{position:relative; height:100%; display:flex; flex-direction:column; justify-content:space-between; padding:14px;}
.pasados-video .play{width:40px; height:40px; border-radius:50%; background:var(--red); display:flex; align-items:center; justify-content:center; font-size:14px; color:#fff;}
.pasados-video .label{font-family:ui-monospace,Menlo,monospace; font-size:13px; line-height:1.4; color:var(--ink-55);}
.pasados-video iframe{position:absolute; inset:0; width:100%; height:100%; border:0;}

/* ---------- Boletos ---------- */
#boletos{background:var(--paper); color:var(--ink); padding:120px 28px;}
.boletos-grid{max-width:1280px; margin:0 auto; display:grid; grid-template-columns:repeat(auto-fit,minmax(300px,1fr)); gap:56px; align-items:start;}
.boletos-grid h2{margin:16px 0 20px;}
.boletos-info p{margin:0; font-size:16px; line-height:1.6; color:var(--paper-62); max-width:440px; text-wrap:pretty;}
.boletos-info a{color:var(--red); font-weight:600;}
.boletos-cap-label{margin-top:32px; font-size:15px; font-weight:700; letter-spacing:.16em; text-transform:uppercase; color:var(--paper-50);}
.boletos-cards{display:flex; flex-direction:column; gap:22px;}
.ticket-card{background:var(--ink); color:var(--paper); padding:38px; display:flex; flex-direction:column; gap:26px;}
.ticket-card-top{display:flex; align-items:flex-start; justify-content:space-between; gap:16px;}
.ticket-card .tier{font-size:15px; font-weight:700; letter-spacing:.2em; text-transform:uppercase; color:var(--ink-55);}
.ticket-card .price{margin-top:12px; font-size:clamp(40px,6vw,64px); font-weight:900; letter-spacing:-.04em; line-height:1;}
.ticket-card .price .cur{font-size:26px; font-weight:600; color:var(--ink-55);}
.ticket-card .year-badge{border:1px solid var(--red); color:var(--red); font-size:12px; font-weight:800; letter-spacing:.14em; padding:6px 10px; text-transform:uppercase;}
.ticket-includes{display:grid; gap:1px; background:var(--hair-dark);}
.ticket-includes .item{background:var(--ink); padding:13px 0; font-size:16px; color:rgba(245,243,240,.78); display:flex; gap:12px; align-items:center;}
.ticket-includes .item .plus{color:var(--red); font-weight:900;}
.ticket-card .btn-primary{text-align:center; width:100%; padding:18px; font-size:16px; font-weight:800; letter-spacing:.02em;}
.ticket-card .desc{margin:0; font-size:16px; color:var(--ink-55); line-height:1.5;}

/* ---------- Sede ---------- */
#sede{padding:120px 28px;}
#sede .h2{margin:16px 0 40px;}
.sede-grid{max-width:1280px; margin:0 auto; display:grid; grid-template-columns:repeat(auto-fit,minmax(280px,1fr)); gap:32px; align-items:stretch;}
.sede-map{min-height:320px; border:1px solid var(--hair-dark); overflow:hidden;}
.sede-map iframe{width:100%; height:100%; min-height:320px; border:0; filter:grayscale(1) invert(.92) contrast(.9);}
.sede-side{display:flex; flex-direction:column; justify-content:space-between; gap:28px;}
.sede-facts{display:grid; gap:1px; background:var(--hair-dark); border:1px solid var(--hair-dark);}
.sede-facts .row{background:var(--ink); padding:20px 22px;}
.sede-facts .k{font-size:14px; font-weight:700; letter-spacing:.2em; text-transform:uppercase; color:var(--ink-45);}
.sede-facts .v{margin-top:8px; font-size:24px; font-weight:600;}
.sede-facts .access{margin-top:4px; font-size:14px; color:var(--ink-55);}
.sede-side .btn-outline-dark{text-align:center; display:block;}

/* ---------- Equipo ---------- */
#equipo{padding:0 28px 120px;}
#equipo .h2{margin:16px 0 40px;}
.equipo-grid{max-width:1280px; margin:0 auto; display:grid; grid-template-columns:repeat(auto-fit,minmax(200px,1fr)); gap:1px; background:var(--hair-dark); border:1px solid var(--hair-dark);}
.equipo-card{background:var(--ink); display:flex; flex-direction:column;}
.equipo-avatar{width:100%; aspect-ratio:1; background:rgba(235,0,40,.14); color:var(--red); display:flex; align-items:center; justify-content:center; font-size:2.6rem; font-weight:900; letter-spacing:.02em; overflow:hidden;}
.equipo-avatar img{width:100%; height:100%; object-fit:cover; object-position:50% 20%;}
.equipo-card .body{padding:20px 22px 26px;}
.equipo-card .name{font-size:24px; font-weight:700; letter-spacing:-.02em;}
.equipo-card .role{margin-top:6px; font-size:16px; color:var(--ink-55);}

/* ---------- Sponsors ---------- */
#sponsors{border-top:1px solid rgba(245,243,240,.12); padding:96px 0 110px;}
.sponsors-head{max-width:1280px; margin:0 auto; padding:0 28px 48px; display:flex; flex-wrap:wrap; align-items:flex-end; justify-content:space-between; gap:20px;}
.sponsors-head .h2-sm{margin:16px 0 0;}
.sponsor-featured-row{max-width:1280px; margin:0 auto 40px; padding:0 28px; display:grid; grid-template-columns:repeat(auto-fit, minmax(270px,1fr)); gap:24px;}
.sponsor-featured{display:flex; flex-direction:column; align-items:center; justify-content:center; gap:18px; border:1px solid var(--hair-dark); padding:44px 28px; text-align:center; transition:border-color .2s ease; min-height:180px;}
.sponsor-featured:hover{border-color:var(--red);}
.sponsor-featured .tag{font-size:12px; font-weight:800; letter-spacing:.16em; text-transform:uppercase; color:var(--red);}
.sponsor-featured img{height:84px; object-fit:contain; filter:brightness(0) invert(1); opacity:.92; max-width:100%;}
.marquee-wrap{overflow:hidden; padding:12px 0; mask-image:linear-gradient(90deg, transparent, #000 8%, #000 92%, transparent); -webkit-mask-image:linear-gradient(90deg, transparent, #000 8%, #000 92%, transparent);}
.marquee-track{display:flex; gap:56px; width:max-content; animation:marquee 46s linear infinite; align-items:center;}
.marquee-track img{height:42px; object-fit:contain; filter:brightness(0) invert(1); opacity:.45; transition:opacity .3s ease;}
.marquee-track img:hover{opacity:1;}
.sponsors-cta{max-width:1280px; margin:56px auto 0; padding:0 28px; text-align:center;}
.sponsors-cta .btn-outline-sm{display:inline-block;}

/* ---------- Cierre CTA ---------- */
#cierre{background:var(--red); color:#fff; padding:clamp(64px,9vw,110px) 28px;}
.cierre-grid{max-width:1280px; margin:0 auto; display:grid; grid-template-columns:repeat(auto-fit,minmax(280px,1fr)); gap:40px; align-items:center;}
.cierre-grid h2{margin:0; font-size:clamp(34px,5.4vw,72px); line-height:.95; font-weight:900; letter-spacing:-.04em; text-transform:uppercase;}
.cierre-side{justify-self:end; text-align:right;}
.cierre-side .tag{font-size:16px; font-weight:700; letter-spacing:.14em; text-transform:uppercase; opacity:.8;}
.cierre-side .btn{margin-top:20px; display:inline-block; background:var(--ink); color:#fff; padding:20px 38px; font-size:16px; font-weight:800;}
.cierre-side .btn:hover{background:#fff; color:var(--red);}
@media (max-width:640px){ .cierre-side{justify-self:start; text-align:left;} }

/* ---------- Footer ---------- */
footer{padding:72px 28px 40px;}
.footer-grid{max-width:1280px; margin:0 auto; display:grid; grid-template-columns:repeat(auto-fit,minmax(220px,1fr)); gap:40px;}
.footer-brand{font-weight:900; font-size:26px; letter-spacing:-.04em;}
.footer-tagline{margin:14px 0 0; font-size:16px; line-height:1.6; color:var(--ink-55); max-width:300px;}
.footer-col-title{font-size:14px; font-weight:700; letter-spacing:.2em; text-transform:uppercase; color:var(--ink-45);}
.footer-links{margin-top:14px; display:flex; flex-direction:column; gap:8px; font-size:16px;}
.footer-links a:hover{color:var(--red);}
.footer-legal{max-width:1280px; margin:56px auto 0; padding-top:24px; border-top:1px solid rgba(245,243,240,.12); font-size:14px; color:var(--ink-45);}

/* ---------- Modal semblanza ---------- */
#bioModal{position:fixed; inset:0; background:rgba(8,8,8,0); display:none; align-items:center; justify-content:center; z-index:100; padding:24px; backdrop-filter:blur(0px); transition:background .35s ease, backdrop-filter .35s ease;}
#bioModal.open{display:flex; background:rgba(8,8,8,.78); backdrop-filter:blur(4px);}
#bioModal .box{background:var(--surface); border:1px solid var(--hair-dark); overflow:hidden; max-width:820px; width:100%; max-height:86vh; position:relative; display:grid; grid-template-columns:300px 1fr; opacity:0; transform:translateY(18px) scale(.97); transition:opacity .38s cubic-bezier(.16,1,.3,1), transform .38s cubic-bezier(.16,1,.3,1);}
#bioModal.open .box{opacity:1; transform:translateY(0) scale(1);}
#bioModal .box-photo{position:relative; background:var(--surface-alt); min-height:260px;}
#bioModal .box-photo img{width:100%; height:100%; object-fit:cover; object-position:50% 20%; display:block;}
#bioModal .box-photo .ph-placeholder{width:100%; height:100%; font-size:3rem; display:flex; align-items:center; justify-content:center; font-weight:800; color:var(--ink-45);}
#bioModal .box-text{padding:36px 38px; overflow-y:auto;}
#bioModal .bio-name{font-size:1.5rem; font-weight:800; margin-bottom:4px; text-wrap:balance;}
#bioModal .bio-topic{color:var(--red); font-size:.9rem; text-transform:uppercase; letter-spacing:.1em; font-weight:700; margin-bottom:18px;}
#bioModal .bio-rule{width:44px; height:3px; background:var(--red); margin-bottom:18px;}
#bioModal .bio-text{color:var(--paper); font-size:1.05rem; line-height:1.75; text-align:justify; hyphens:auto;}
#bioModal .close{position:absolute; top:16px; right:18px; background:rgba(0,0,0,.35); border:none; color:#fff; width:34px; height:34px; border-radius:50%; font-size:1.2rem; line-height:1; cursor:pointer; z-index:2; display:flex; align-items:center; justify-content:center; transition:background .2s ease;}
#bioModal .close:hover{background:var(--red);}
@media (max-width:640px){
  #bioModal .box{grid-template-columns:1fr; max-height:90vh;}
  #bioModal .box-photo{min-height:180px;}
  #bioModal .box-text{padding:26px 24px;}
}
@media (prefers-reduced-motion: reduce){
  #bioModal, #bioModal .box{transition:none;}
}

/* ---------- Lightbox de video (Eventos pasados) ---------- */
#videoModal{position:fixed; inset:0; background:rgba(8,8,8,0); display:none; align-items:center; justify-content:center; z-index:100; padding:24px; backdrop-filter:blur(0px); transition:background .35s ease, backdrop-filter .35s ease;}
#videoModal.open{display:flex; background:rgba(8,8,8,.85); backdrop-filter:blur(4px);}
#videoModal .video-box{position:relative; width:100%; max-width:1000px; background:#000; border:1px solid var(--hair-dark); overflow:hidden; opacity:0; transform:translateY(18px) scale(.97); transition:opacity .38s cubic-bezier(.16,1,.3,1), transform .38s cubic-bezier(.16,1,.3,1);}
#videoModal.open .video-box{opacity:1; transform:translateY(0) scale(1);}
#videoModal .video-frame{position:relative; width:100%; aspect-ratio:16/9;}
#videoModal .video-frame iframe{position:absolute; inset:0; width:100%; height:100%; border:0;}
#videoModal .close{position:absolute; top:14px; right:14px; background:rgba(0,0,0,.55); border:none; color:#fff; width:36px; height:36px; border-radius:50%; font-size:1.25rem; line-height:1; cursor:pointer; z-index:2; display:flex; align-items:center; justify-content:center; transition:background .2s ease;}
#videoModal .close:hover{background:var(--red);}
@media (prefers-reduced-motion: reduce){
  #videoModal, #videoModal .video-box{transition:none;}
}

/* Focus visible accesible en todos los enlaces/botones interactivos */
a:focus-visible, button:focus-visible, .speaker-tile:focus-visible, .pasados-video:focus-visible{
  outline:2px solid var(--red); outline-offset:2px;
}
