

:root{
  --gold:#DC9517; --gold-600:#B37508; --gold-100:#FCEFD6;
  --ink:#323537;  --ink-80:#4A4D50;
  --teal:#2C6C76; --teal-100:#DCEDEE;
  --coral:#C9472F; --plum:#A2477A;
  --cream:#FBF7EF; --paper:#FFFDF9;
  --line:rgba(50,53,55,.10);
  --radius:18px;
  --nav-h:64px;
  /* alias para compatibilidad con el sitio anterior */
  --primary:var(--gold); --secondary:var(--teal);
}

*,*::before,*::after{ box-sizing:border-box; }
html{ scroll-behavior:smooth; scroll-padding-top:calc(var(--nav-h) + 12px); -webkit-text-size-adjust:100%; }
body{
  font-family:'Fira Sans',system-ui,sans-serif;
  color:var(--ink);
  background:var(--cream);
  overflow-x:clip;
}
img{ max-width:100%; }
a{ color:inherit; text-decoration:none; }
:focus-visible{ outline:3px solid var(--gold); outline-offset:3px; border-radius:6px; }
[hidden]{ display:none !important; }

.titulo{ font-family:'Fira Sans',sans-serif; font-weight:800; font-style:italic; letter-spacing:-.01em; line-height:1.1; }
.font-display{ font-family:'Fira Sans',sans-serif; }
.link{ color:var(--gold-600); font-weight:600; text-decoration:underline; text-underline-offset:3px; }
.no-scrollbar{ scrollbar-width:none; }
.no-scrollbar::-webkit-scrollbar{ display:none; }

/* ---------- Fondo animado (muy sutil) ---------- */
.bg-anim{ position:fixed; inset:0; z-index:-1; overflow:hidden; pointer-events:none; }
.bg-anim .blob{
  position:absolute; width:60vmax; height:60vmax; border-radius:50%;
  filter:blur(70px); opacity:.22; will-change:transform;
}
.bg-anim .b1{ background:radial-gradient(circle, var(--gold) 0%, transparent 65%); top:-25vmax; left:-20vmax; animation:drift1 38s ease-in-out infinite alternate; }
.bg-anim .b2{ background:radial-gradient(circle, var(--teal) 0%, transparent 65%); bottom:-30vmax; right:-25vmax; opacity:.16; animation:drift2 46s ease-in-out infinite alternate; }
.bg-anim .b3{ background:radial-gradient(circle, var(--coral) 0%, transparent 65%); top:30%; left:40%; width:40vmax; height:40vmax; opacity:.10; animation:drift3 52s ease-in-out infinite alternate; }
@keyframes drift1{ to{ transform:translate(18vw,22vh) scale(1.15); } }
@keyframes drift2{ to{ transform:translate(-20vw,-18vh) scale(1.1); } }
@keyframes drift3{ 0%{ transform:translate(0,0); } 50%{ transform:translate(-25vw,10vh) scale(1.2);} 100%{ transform:translate(10vw,-15vh);} }

/* ---------- Navegación ---------- */
.site-nav{
  background:rgba(255,253,249,.82);
  backdrop-filter:saturate(160%) blur(14px); -webkit-backdrop-filter:saturate(160%) blur(14px);
  border-bottom:1px solid var(--line);
  padding-top:env(safe-area-inset-top);
}
.nav-tag{ font-size:11px; letter-spacing:.06em; color:var(--ink-80); max-width:220px; line-height:1.25; border-left:2px solid var(--gold); padding-left:.75rem; }
.site-nav nav a{ position:relative; padding:.25rem 0; transition:color .2s; }
.site-nav nav a::after{ content:""; position:absolute; left:0; right:100%; bottom:-4px; height:2px; background:var(--gold); transition:right .25s; }
.site-nav nav a:hover, .site-nav nav a.is-active{ color:var(--ink); }
.site-nav nav a:hover::after, .site-nav nav a.is-active::after{ right:0; }
.mobile-menu{ border-top:1px solid var(--line); background:var(--paper); }
.mobile-menu a{ padding:.75rem .9rem; border-radius:12px; background:var(--cream); }
.mobile-menu a:active{ background:var(--gold-100); }

/* ---------- Botones ---------- */
.btn-primary, .btn-ghost, .btn-dark{
  display:inline-flex; align-items:center; justify-content:center; gap:.5rem;
  font-weight:700; border-radius:12px; padding:.6rem 1rem; line-height:1.2;
  transition:transform .15s ease, background .2s, box-shadow .2s, color .2s; white-space:nowrap;
  min-height:42px;
}
.btn-primary{ background:var(--gold); color:var(--ink); box-shadow:0 6px 18px -8px rgba(220,149,23,.8); }
.btn-primary:hover{ background:#E9A52A; transform:translateY(-1px); }
.btn-ghost{ background:rgba(255,255,255,.75); color:var(--ink); border:1.5px solid rgba(50,53,55,.18); }
.btn-ghost:hover{ border-color:var(--gold); color:var(--gold-600); }
.btn-dark{ background:var(--ink); color:#fff; white-space:normal; text-align:center; }
.btn-dark:hover{ background:#1f2123; }
.btn-lg{ padding:.85rem 1.3rem; font-size:1rem; }
.btn-xl{ padding:1rem 1.8rem; font-size:1.125rem; border-radius:14px; }
.is-disabled{ opacity:.55; pointer-events:none; filter:grayscale(.4); }

/* ---------- Secciones ---------- */
.section{ padding:4rem 0; position:relative; }
@media (min-width:768px){ .section{ padding:6rem 0; } }
.section-grad-a{ background:linear-gradient(180deg, rgba(251,247,239,.55), rgba(252,239,214,.35)); }
.section-grad-b{ background:rgba(255,253,249,.72); }

.eyebrow{
  display:inline-flex; align-items:center; gap:.6rem;
  font-size:.75rem; font-weight:700; letter-spacing:.2em; text-transform:uppercase; color:var(--gold-600);
}
.eyebrow::before{ content:""; width:26px; height:3px; border-radius:3px; background:linear-gradient(90deg,var(--gold),var(--coral)); }
.eyebrow.justify-center{ display:flex; }
.eyebrow-light{ color:var(--gold); }

/* Reveal on scroll */
.reveal{ opacity:0; transform:translateY(18px); transition:opacity .7s ease, transform .7s ease; }
.reveal.is-visible{ opacity:1; transform:none; }
.reveal-delay-1{ transition-delay:.1s; } .reveal-delay-2{ transition-delay:.2s; }

/* ---------- HERO ---------- */
.hero{ position:relative; padding:calc(var(--nav-h) + 2rem) 0 3rem; overflow:hidden; }
body:has(#streaming) .hero{ padding-top:2rem; }
@media (min-width:1024px){ .hero{ padding:calc(var(--nav-h) + 3.5rem) 0 4.5rem; } }
.hero::before{ /* trama de puntos que se desplaza lentamente */
  content:""; position:absolute; inset:0; pointer-events:none;
  background-image:radial-gradient(rgba(50,53,55,.13) 1px, transparent 1.4px);
  background-size:22px 22px;
  mask-image:radial-gradient(ellipse at 30% 40%, #000 0%, transparent 70%);
  -webkit-mask-image:radial-gradient(ellipse at 30% 40%, #000 0%, transparent 70%);
  animation:dots 40s linear infinite;
}
@keyframes dots{ to{ background-position:220px 110px; } }
.hero-rings{ /* arcos inspirados en el logo Cemefi, giran muy lento */
  position:absolute; width:620px; height:620px; right:-260px; top:-200px; border-radius:50%;
  background:conic-gradient(from 0deg, transparent 0 8%, rgba(220,149,23,.28) 8% 17%, transparent 17% 33%, rgba(44,108,118,.22) 33% 42%, transparent 42% 58%, rgba(201,71,47,.2) 58% 66%, transparent 66% 83%, rgba(162,71,122,.2) 83% 91%, transparent 91%);
  mask:radial-gradient(circle, transparent 55%, #000 56%, #000 66%, transparent 67%);
  -webkit-mask:radial-gradient(circle, transparent 55%, #000 56%, #000 66%, transparent 67%);
  animation:spin 90s linear infinite; pointer-events:none;
}
@keyframes spin{ to{ transform:rotate(360deg); } }
.hero-logo{ width:min(100%, 520px); height:auto; filter:drop-shadow(0 8px 24px rgba(220,149,23,.15)); }
.hero-meta{ display:flex; flex-wrap:wrap; gap:.5rem; margin-top:1.25rem; }
.meta-pill{ display:inline-flex; align-items:center; gap:.45rem; padding:.45rem .85rem; border-radius:999px; background:#fff; border:1px solid var(--line); font-size:.95rem; box-shadow:var(--shadow-card,0 2px 10px -4px rgba(0,0,0,.1)); }
.meta-pill svg{ color:var(--gold-600); }
.hero-lead{ margin-top:1.25rem; color:var(--ink-80); font-size:1.05rem; line-height:1.65; max-width:40rem; }
@media (min-width:768px){ .hero-lead{ font-size:1.15rem; } }

.countdown{ display:grid; grid-template-columns:repeat(4,1fr); gap:.5rem; margin-top:1.75rem; max-width:420px; }
.cd-item{ background:var(--ink); color:#fff; border-radius:14px; padding:.7rem .3rem .55rem; text-align:center; position:relative; overflow:hidden; }
.cd-item::after{ content:""; position:absolute; left:0; right:0; top:50%; height:1px; background:rgba(255,255,255,.08); }
.cd-item span{ display:block; font-size:1.65rem; font-weight:800; font-variant-numeric:tabular-nums; color:var(--gold); line-height:1; }
.cd-item small{ display:block; font-size:.68rem; text-transform:uppercase; letter-spacing:.14em; opacity:.7; margin-top:.3rem; }
.countdown.is-live{ display:flex; grid-template-columns:none; }
.countdown .cd-msg{ background:var(--ink); color:#fff; border-radius:14px; padding:.8rem 1.1rem; font-weight:700; display:flex; gap:.6rem; align-items:center; }
.countdown .cd-msg i{ width:10px; height:10px; border-radius:50%; background:#e5484d; animation:pulse 1.4s infinite; }

.hero-glow{ position:absolute; inset:-14px; border-radius:30px; background:linear-gradient(135deg, rgba(220,149,23,.35), transparent 50%, rgba(44,108,118,.3)); filter:blur(22px); }
.hero-card{ position:relative; border-radius:24px; overflow:hidden; border:4px solid #fff; box-shadow:0 18px 40px -18px rgba(50,53,55,.45); }
.hero-right-carousel{ position:relative; aspect-ratio:4/3; background:#e9dcc5; }
@media (min-width:1024px){ .hero-right-carousel{ aspect-ratio:4/4.4; } }
.hero-right-carousel .slide, .registro-carousel .slide{
  position:absolute; inset:0; background-size:cover; background-position:center;
  opacity:0; transform:scale(1.06); transition:opacity 1.2s ease, transform 7s ease;
}
.hero-right-carousel .slide.is-active, .registro-carousel .slide.is-active{ opacity:1; transform:scale(1); }
.hero-right-dots{ position:absolute; top:12px; right:12px; display:flex; gap:6px; }
.hero-right-dots button{ width:8px; height:8px; border-radius:99px; background:rgba(255,255,255,.55); transition:width .3s, background .3s; }
.hero-right-dots button[aria-current="true"]{ width:22px; background:#fff; }

/* Etiqueta automática para imágenes "placeholder" */
.ph-tag{
  position:absolute; z-index:2; top:12px; left:12px;
  display:inline-flex; align-items:center; gap:.4rem;
  font-size:11px; font-weight:700; letter-spacing:.08em; text-transform:uppercase;
  color:var(--ink); background:rgba(255,255,255,.88); backdrop-filter:blur(6px);
  padding:.35rem .65rem; border-radius:999px; pointer-events:none;
}
.ph-tag svg{ color:var(--gold-600); }
.ph-tag.dark{ background:rgba(50,53,55,.7); color:#fff; }

/* Caja de empresas reconocidas */
.recon-box{
  display:flex; flex-direction:column; gap:1rem;
  background:#fff; border:1px solid var(--line); border-radius:22px; padding:1.25rem;
  box-shadow:0 10px 30px -18px rgba(50,53,55,.35); position:relative; overflow:hidden;
}
.recon-box::before{ content:""; position:absolute; left:0; top:0; bottom:0; width:6px; background:linear-gradient(var(--gold),var(--coral)); }
.recon-icon{ width:52px; height:52px; border-radius:14px; display:grid; place-items:center; background:var(--gold-100); color:var(--gold-600); }
@media (min-width:768px){ .recon-box{ flex-direction:row; align-items:center; padding:1.5rem 1.75rem; gap:1.5rem; } }

/* ---------- ACERCA ---------- */
.pillars{ display:grid; gap:.6rem; margin-top:1.5rem; }
@media (min-width:640px){ .pillars{ grid-template-columns:repeat(3,1fr); } }
.pillar{ background:#fff; border-radius:16px; padding:1rem; border:1px solid var(--line); border-top:4px solid var(--c); }
.pillar span{ font-size:.75rem; font-weight:800; color:var(--c); letter-spacing:.1em; }
.pillar strong{ display:block; font-size:1.15rem; font-style:italic; font-weight:800; margin-top:.15rem; }
.pillar p{ font-size:.875rem; color:var(--ink-80); margin-top:.25rem; line-height:1.45; }

.read-more-body{ position:relative; max-height:7.5rem; overflow:hidden; transition:max-height .5s ease; }
.read-more-body::after{ content:""; position:absolute; left:0; right:0; bottom:0; height:4rem; background:linear-gradient(transparent, var(--paper)); transition:opacity .3s; }
.read-more.is-open .read-more-body{ max-height:60rem; }
.read-more.is-open .read-more-body::after{ opacity:0; }
.read-more-btn{ margin-top:.75rem; font-weight:700; color:var(--gold-600); display:inline-flex; gap:.35rem; align-items:center; }
.read-more-btn::after{ content:"↓"; transition:transform .3s; }
.read-more.is-open .read-more-btn::after{ transform:rotate(180deg); }
@media (min-width:1024px){
  .read-more-body{ max-height:none; } .read-more-body::after, .read-more-btn{ display:none; }
}

.mosaic{ display:grid; grid-template-columns:1.2fr 1fr; grid-template-rows:150px 150px; gap:.75rem; }
@media (min-width:768px){ .mosaic{ grid-template-rows:210px 210px; } }
.mosaic .m-cell{ position:relative; border-radius:18px; overflow:hidden; box-shadow:var(--shadow-card,0 4px 14px -6px rgba(0,0,0,.2)); }
.mosaic .m-cell img{ width:100%; height:100%; object-fit:cover; display:block; transition:transform .8s ease; }
.mosaic .m-cell:hover img{ transform:scale(1.05); }
.mosaic .m-cell:first-child{ grid-row:span 2; }

/* ---------- AGENDA ---------- */
.date-badge{ display:flex; flex-direction:column; align-items:center; justify-content:center; width:64px; height:64px; border-radius:16px; background:var(--ink); color:#fff; line-height:1; }
.date-badge .dp-num{ font-size:1.6rem; font-weight:800; color:var(--gold); }
.date-badge .dp-mo{ font-size:.7rem; text-transform:uppercase; letter-spacing:.18em; margin-top:.2rem; }

.agenda-toolbar{
  position:sticky; top:var(--nav-h); z-index:20;
  margin:1.5rem -1rem 0; padding:.75rem 1rem;
  background:rgba(251,247,239,.92); backdrop-filter:blur(12px); -webkit-backdrop-filter:blur(12px);
  border-bottom:1px solid var(--line);
  display:flex; flex-direction:column; gap:.6rem;
}
@media (min-width:768px){
  .agenda-toolbar{ margin:2rem 0 0; padding:.75rem; border:1px solid var(--line); border-radius:18px; flex-direction:row; align-items:center; }
}
.search-wrap{ position:relative; flex:0 0 auto; }
@media (min-width:768px){ .search-wrap{ width:280px; } }
.search-wrap input{
  width:100%; height:44px; border-radius:12px; border:1.5px solid rgba(50,53,55,.15); background:#fff;
  padding:0 .9rem 0 2.3rem; font-size:16px; /* 16px evita zoom en iOS */
}
.search-wrap input:focus{ outline:none; border-color:var(--gold); box-shadow:0 0 0 4px rgba(220,149,23,.18); }
.search-icn{ position:absolute; left:.8rem; top:50%; transform:translateY(-50%); color:rgba(50,53,55,.5); }

.chips{ display:flex; gap:.45rem; overflow-x:auto; padding-bottom:2px; scroll-snap-type:x proximity; }
.chips.justify-center{ justify-content:flex-start; }
@media (min-width:768px){ .chips.justify-center{ justify-content:center; flex-wrap:wrap; } }
.chip{
  flex:0 0 auto; scroll-snap-align:start; display:inline-flex; align-items:center; gap:.45rem;
  height:38px; padding:0 .9rem; border-radius:999px; font-size:.875rem; font-weight:600;
  background:#fff; border:1.5px solid rgba(50,53,55,.12); color:var(--ink-80); transition:all .2s;
}
.chip .dot{ width:9px; height:9px; border-radius:50%; }
.chip:hover{ border-color:rgba(50,53,55,.3); }
.chip[aria-pressed="true"], .chip[aria-selected="true"]{ background:var(--ink); border-color:var(--ink); color:#fff; }
.chip small{ font-weight:500; opacity:.65; }

/* Línea de tiempo */
.timeline{ display:flex; flex-direction:column; gap:1.25rem; }
.slot{ position:relative; display:grid; grid-template-columns:1fr; gap:.6rem; }
.slot-head{ display:flex; align-items:baseline; gap:.6rem; flex-wrap:wrap; }
.slot-time{ font-size:1.35rem; font-weight:800; font-variant-numeric:tabular-nums; color:var(--ink); }
.slot-end{ font-size:.85rem; color:var(--ink-80); font-weight:500; }
.slot-par{ margin-left:auto; font-size:.72rem; font-weight:700; text-transform:uppercase; letter-spacing:.12em; color:var(--gold-600); background:var(--gold-100); padding:.25rem .55rem; border-radius:999px; }
.slot-cards{ display:grid; gap:.6rem; }
@media (min-width:768px){
  .slot{ grid-template-columns:96px 1fr; gap:1rem; }
  .slot-head{ flex-direction:column; align-items:flex-start; gap:.15rem; position:sticky; top:calc(var(--nav-h) + 90px); align-self:start; padding-top:.6rem; }
  .slot-par{ margin-left:0; margin-top:.35rem; }
  .slot-cards.cols-2{ grid-template-columns:repeat(2,1fr); }
  .slot-cards.cols-3{ grid-template-columns:repeat(3,1fr); }
  /* línea vertical */
  .slot::before{ content:""; position:absolute; left:95px; top:0; bottom:-1.25rem; width:2px; background:linear-gradient(var(--line), var(--line)); }
  .slot:last-child::before{ bottom:0; }
}
@media (min-width:768px) and (max-width:1023px){ .slot-cards.cols-3{ grid-template-columns:repeat(2,1fr); } }
@media (min-width:1024px) and (max-width:1279px){ .slot-cards.cols-3{ grid-template-columns:1fr; } .slot-cards.cols-3 .session{ } }

.session{
  --accent:var(--gold);
  position:relative; background:#fff; border-radius:16px; padding:1rem 1rem 1rem 1.15rem;
  border:1px solid var(--line); box-shadow:0 2px 10px -6px rgba(50,53,55,.2);
  display:flex; flex-direction:column; gap:.55rem; overflow:hidden; transition:transform .2s, box-shadow .2s;
}
.session::before{ content:""; position:absolute; left:0; top:0; bottom:0; width:5px; background:var(--accent); }
.session:hover{ box-shadow:0 12px 26px -14px rgba(50,53,55,.35); }
.session-room{ display:flex; align-items:center; gap:.45rem; flex-wrap:wrap; font-size:.75rem; font-weight:700; }
.room-pill{ display:inline-flex; align-items:center; gap:.35rem; color:var(--accent); text-transform:uppercase; letter-spacing:.08em; }
.room-pill::before{ content:""; width:8px; height:8px; border-radius:50%; background:var(--accent); }
.type-pill{ background:color-mix(in srgb, var(--accent) 12%, white); color:color-mix(in srgb, var(--accent) 80%, black); padding:.15rem .5rem; border-radius:6px; font-size:.72rem; }
.session-title{ font-size:1.02rem; font-weight:700; line-height:1.3; color:var(--ink); }
.session-desc{ font-size:.875rem; color:var(--ink-80); line-height:1.5; }
.session-time-m{ font-size:.75rem; font-weight:600; color:var(--ink-80); margin-left:auto; font-variant-numeric:tabular-nums; }

.session.is-general{ background:linear-gradient(135deg,#fff, #FFF8EA); }
.session.is-featured{ background:var(--ink); color:#fff; border-color:var(--ink); }
.session.is-featured::before{ width:100%; height:5px; bottom:auto; background:linear-gradient(90deg,var(--gold),var(--coral),var(--plum),var(--teal)); }
.session.is-featured .session-title{ color:#fff; font-size:1.15rem; }
.session.is-featured .session-desc{ color:rgba(255,255,255,.75); }
.session.is-featured .type-pill{ background:var(--gold); color:var(--ink); }
.session.is-featured .speaker-chip{ background:rgba(255,255,255,.08); border-color:rgba(255,255,255,.15); color:#fff; }
.session.is-featured .speaker-chip small{ color:rgba(255,255,255,.6); }
.session.is-badge .session-title{ font-size:.95rem; }
.badge-swatch{ display:inline-flex; align-items:center; gap:.4rem; font-size:.78rem; font-weight:700; padding:.2rem .55rem .2rem .3rem; border-radius:999px; background:color-mix(in srgb, var(--b) 15%, white); color:var(--ink); }
.badge-swatch i{ width:14px; height:14px; border-radius:50%; background:var(--b); box-shadow:inset 0 0 0 2px rgba(255,255,255,.6); }
.session.is-featured .badge-swatch{ background:rgba(255,255,255,.12); color:#fff; }

.session.is-now{ box-shadow:0 0 0 2px var(--accent), 0 14px 30px -14px rgba(50,53,55,.4); }
.now-pill{ display:inline-flex; align-items:center; gap:.35rem; background:#e5484d; color:#fff; font-size:.68rem; font-weight:800; letter-spacing:.1em; text-transform:uppercase; padding:.15rem .5rem; border-radius:999px; }
.now-pill::before{ content:""; width:6px; height:6px; border-radius:50%; background:#fff; animation:pulse 1.4s infinite; }
.session.is-past{ opacity:.6; }
@keyframes pulse{ 0%,100%{ opacity:1; } 50%{ opacity:.3; } }

.session-speakers{ display:flex; flex-wrap:wrap; gap:.4rem; margin-top:.1rem; }
.speaker-chip{
  display:inline-flex; align-items:center; gap:.5rem; text-align:left;
  padding:.25rem .7rem .25rem .25rem; border-radius:999px; background:var(--cream); border:1px solid var(--line);
  font-size:.82rem; font-weight:600; line-height:1.15; transition:background .2s, border-color .2s; max-width:100%;
}
.speaker-chip:hover{ border-color:var(--accent); background:#fff; }
.speaker-chip small{ display:block; font-weight:400; font-size:.7rem; color:var(--ink-80); }
.avatar{ width:34px; height:34px; border-radius:50%; flex:0 0 34px; overflow:hidden; display:grid; place-items:center;
  background:linear-gradient(140deg, color-mix(in srgb, var(--accent) 35%, white), color-mix(in srgb, var(--accent) 70%, white)); }
.avatar img{ width:100%; height:100%; object-fit:cover; object-position:top; }
.avatar .ini{ font-size:.75rem; font-weight:800; color:#fff; }

.empty-state{ text-align:center; padding:3rem 1rem; color:var(--ink-80); background:#fff; border:1.5px dashed rgba(50,53,55,.2); border-radius:18px; }

/* Panel de estatuillas */
.badge-panel{ background:var(--ink); border-radius:22px; padding:1.25rem; color:#fff; position:relative; overflow:hidden; }
.badge-panel::after{ content:""; position:absolute; width:220px; height:220px; right:-90px; bottom:-110px; border-radius:50%; border:28px solid rgba(220,149,23,.12); }
.badge-list{ display:flex; gap:.6rem; overflow-x:auto; margin:1rem -1.25rem 0; padding:0 1.25rem .25rem; scroll-snap-type:x mandatory; position:relative; z-index:1; }
.badge-item{ flex:0 0 78%; scroll-snap-align:start; display:flex; gap:.75rem; align-items:flex-start; padding:.8rem; border-radius:14px; background:rgba(255,255,255,.06); border:1px solid rgba(255,255,255,.08); text-align:left; }
.badge-item i{ flex:0 0 14px; width:14px; height:40px; border-radius:6px; background:var(--b); margin-top:.1rem; }
.badge-item b{ display:block; font-size:.95rem; }
.badge-item .bt{ font-variant-numeric:tabular-nums; color:var(--gold); font-weight:700; font-size:.82rem; }
.badge-item p{ font-size:.8rem; color:rgba(255,255,255,.72); margin-top:.15rem; line-height:1.35; }
.badge-item.is-now{ border-color:var(--gold); background:rgba(220,149,23,.14); }
.badge-more{ margin-top:.9rem; font-size:.85rem; font-weight:700; color:var(--gold); position:relative; z-index:1; }
@media (min-width:640px){ .badge-item{ flex-basis:46%; } }
@media (min-width:1024px){
  .badge-list{ flex-direction:column; overflow:visible; margin:1rem 0 0; padding:0; }
  .badge-item{ flex-basis:auto; }
}

/* ---------- PONENTES ---------- */
.speaker-card{
  --c:var(--gold);
  position:relative; display:flex; flex-direction:column; border-radius:18px; overflow:hidden; background:#fff;
  border:1px solid var(--line); box-shadow:0 2px 10px -6px rgba(50,53,55,.2); text-align:left;
  transition:transform .25s ease, box-shadow .25s ease;
}
.speaker-card:hover{ transform:translateY(-4px); box-shadow:0 18px 30px -16px rgba(50,53,55,.4); }
.speaker-card .photo{
  position:relative; aspect-ratio:4/5; overflow:hidden;
  background:
    radial-gradient(circle at 50% 110%, color-mix(in srgb, var(--c) 55%, white) 0%, transparent 60%),
    linear-gradient(160deg, color-mix(in srgb, var(--c) 12%, white), color-mix(in srgb, var(--c) 32%, white));
}
.speaker-card .photo::before{ content:""; position:absolute; width:120%; aspect-ratio:1; left:-10%; top:28%; border-radius:50%; border:2px solid color-mix(in srgb, var(--c) 30%, transparent); }
.speaker-card .photo img{ position:absolute; inset:0; width:100%; height:100%; object-fit:cover; object-position:top; transition:transform .5s ease; }
.speaker-card:hover .photo img{ transform:scale(1.04); }
.speaker-card .meta{ padding:.75rem .85rem .9rem; border-top:4px solid var(--c); }
.speaker-card .n{ font-weight:700; font-size:.92rem; line-height:1.2; }
.speaker-card .r{ font-size:.75rem; color:var(--ink-80); margin-top:.25rem; line-height:1.3; }
.speaker-card .cat{ position:absolute; left:.5rem; top:.5rem; z-index:2; font-size:.62rem; font-weight:800; letter-spacing:.08em; text-transform:uppercase; padding:.2rem .45rem; border-radius:6px; background:rgba(255,255,255,.9); color:var(--c); }
/* Silueta difuminada para ponentes sin foto */
.silhouette{ position:absolute; inset:0; display:grid; place-items:end center; }
.silhouette svg{ width:78%; height:auto; color:color-mix(in srgb, var(--c) 55%, var(--ink)); opacity:.35; filter:blur(3px); }
.silhouette .ini{ position:absolute; top:34%; left:50%; transform:translate(-50%,-50%); font-size:1.8rem; font-weight:800; font-style:italic; color:#fff; text-shadow:0 2px 12px rgba(0,0,0,.18); }
.soon-tag{ position:absolute; bottom:.5rem; left:50%; transform:translateX(-50%); white-space:nowrap; font-size:.62rem; font-weight:700; letter-spacing:.1em; text-transform:uppercase; padding:.2rem .5rem; border-radius:999px; background:rgba(255,255,255,.88); color:var(--ink-80); z-index:2; }

/* ---------- SEDE ---------- */
.sede-bg{ background:var(--paper); }
.sede-photo{ position:absolute; inset:0; background-size:cover; background-position:center; opacity:.35; }
.sede-overlay{ position:absolute; inset:0; background:linear-gradient(100deg, rgba(255,253,249,.97) 0%, rgba(255,253,249,.92) 45%, rgba(255,253,249,.6) 100%); }
.sede-cards{ display:grid; grid-template-columns:1fr 1fr; gap:.6rem; }
.sede-card{ display:flex; gap:.65rem; align-items:flex-start; padding:.85rem; border-radius:14px; background:#fff; border:1px solid var(--line); transition:border-color .2s; }
a.sede-card:hover{ border-color:var(--gold); }
.sede-card svg{ flex:0 0 auto; color:var(--teal); margin-top:.1rem; }
.sede-card strong{ display:block; font-size:.88rem; }
.sede-card span{ display:block; font-size:.76rem; color:var(--ink-80); margin-top:.1rem; }

/* ---------- HOSPEDAJE ---------- */
.hotel-card{ position:relative; background:#fff; border-radius:20px; padding:1.4rem; border:1px solid var(--line); box-shadow:0 2px 12px -6px rgba(50,53,55,.2); overflow:hidden; }
.hotel-card::after{ content:""; position:absolute; right:-40px; top:-40px; width:120px; height:120px; border-radius:50%; background:var(--gold-100); }
.hotel-tag{ position:relative; z-index:1; display:inline-flex; align-items:center; gap:.45rem; font-size:.7rem; text-transform:uppercase; letter-spacing:.16em; font-weight:800; color:var(--teal); }
.hotel-tag span{ width:7px; height:7px; border-radius:50%; background:var(--teal); }
.hotel-card h3{ position:relative; z-index:1; }
.pending-line{ margin-top:.9rem; display:inline-flex; align-items:center; gap:.4rem; font-size:.78rem; color:var(--ink-80); background:var(--cream); border:1px dashed rgba(50,53,55,.2); border-radius:999px; padding:.3rem .7rem; }
.pending-line::before{ content:""; width:6px; height:6px; border-radius:50%; background:var(--gold); animation:pulse 2s infinite; }
.hotel-mini{ background:#fff; border:1px solid var(--line); border-radius:14px; padding:.9rem; }
.code-chip{ font-family:ui-monospace,monospace; font-weight:700; background:var(--ink); color:var(--gold); padding:.1rem .45rem; border-radius:6px; letter-spacing:.08em; }

/* ---------- FAQ ---------- */
.faq-list{ display:flex; flex-direction:column; gap:.55rem; }
.faq-item{ background:#fff; border:1px solid var(--line); border-radius:14px; overflow:hidden; transition:border-color .2s, box-shadow .2s; }
.faq-item[open]{ border-color:rgba(220,149,23,.6); box-shadow:0 10px 24px -16px rgba(50,53,55,.35); }
.faq-item summary{ list-style:none; cursor:pointer; padding:1rem 3rem 1rem 1.1rem; font-weight:600; position:relative; line-height:1.35; }
.faq-item summary::-webkit-details-marker{ display:none; }
.faq-item summary::after{ content:""; position:absolute; right:1.1rem; top:50%; width:10px; height:10px; border-right:2px solid var(--gold-600); border-bottom:2px solid var(--gold-600); transform:translateY(-70%) rotate(45deg); transition:transform .25s; }
.faq-item[open] summary::after{ transform:translateY(-30%) rotate(-135deg); }
.faq-item .ans{ padding:0 1.1rem 1.1rem; color:var(--ink-80); line-height:1.6; font-size:.95rem; }
.faq-item .ans a{ color:var(--gold-600); font-weight:600; text-decoration:underline; text-underline-offset:2px; word-break:break-word; }

/* ---------- PATROCINADORES ---------- */
.sponsors{ display:grid; grid-template-columns:repeat(2,1fr); gap:.75rem; }
@media (min-width:640px){ .sponsors{ grid-template-columns:repeat(3,1fr); } }
@media (min-width:1024px){ .sponsors{ grid-template-columns:repeat(4,1fr); } }
.sponsor{ display:grid; place-items:center; aspect-ratio:16/9; background:#fff; border:1px solid var(--line); border-radius:16px; padding:1rem; }
.sponsor img{ max-height:70px; width:auto; object-fit:contain; filter:grayscale(.2); transition:filter .2s; }
.sponsor:hover img{ filter:none; }
.sponsor.skeleton{ position:relative; overflow:hidden; border-style:dashed; color:var(--ink-80); font-size:.75rem; font-weight:600; letter-spacing:.1em; text-transform:uppercase; }
.sponsor.skeleton::before{ content:""; width:55%; height:26px; border-radius:8px; background:linear-gradient(90deg, #eee 0%, #f7f1e6 50%, #eee 100%); background-size:200% 100%; animation:shimmer 2.4s linear infinite; filter:blur(2px); }
.sponsor.skeleton span{ position:absolute; bottom:.6rem; }
@keyframes shimmer{ to{ background-position:-200% 0; } }
.sponsors-note{ grid-column:1/-1; font-size:.9rem; color:var(--ink-80); margin-top:.5rem; }

/* ---------- REGISTRO ---------- */
.registro-carousel{ position:absolute; inset:0; }
.registro-shade{ background:linear-gradient(110deg, rgba(50,53,55,.92) 0%, rgba(50,53,55,.78) 50%, rgba(179,117,8,.7) 100%); }

/* ---------- FOOTER ---------- */
.site-footer{ background:var(--ink); color:#fff; padding:3.5rem 0 calc(2rem + env(safe-area-inset-bottom)); }
.site-footer a:hover{ color:var(--gold); }

/* ---------- MODALES ---------- */
.modal-backdrop{
  position:fixed; inset:0; z-index:60; background:rgba(30,32,34,.6); backdrop-filter:blur(4px);
  display:flex; align-items:flex-end; justify-content:center;
  opacity:0; pointer-events:none; transition:opacity .25s ease;
}
.modal-backdrop.is-open{ opacity:1; pointer-events:auto; }
.modal{
  position:relative; width:100%; max-height:92vh; background:var(--paper); border-radius:24px 24px 0 0;
  display:flex; flex-direction:column; overflow:hidden;
  transform:translateY(40px); transition:transform .3s cubic-bezier(.2,.8,.2,1);
  padding-bottom:env(safe-area-inset-bottom);
}
.modal::before{ /* "agarradera" estilo hoja inferior en móvil */
  content:""; position:absolute; top:8px; left:50%; transform:translateX(-50%); width:44px; height:5px; border-radius:5px; background:rgba(255,255,255,.55); z-index:3;
}
.modal-backdrop.is-open .modal{ transform:none; }
@media (min-width:768px){
  .modal-backdrop{ align-items:center; padding:2rem; }
  .modal{ max-width:720px; border-radius:24px; max-height:88vh; }
  .modal::before{ display:none; }
}
.modal-scroll{ overflow-y:auto; overscroll-behavior:contain; }
.modal-close{ position:absolute; top:12px; right:12px; z-index:4; width:38px; height:38px; border-radius:50%; background:rgba(255,255,255,.92); color:var(--ink); display:grid; place-items:center; box-shadow:0 4px 12px rgba(0,0,0,.15); }
.modal-head{ --c:var(--gold); position:relative; display:flex; align-items:flex-end; gap:1rem; padding:1.75rem 1.25rem 1.25rem; min-height:220px;
  background:radial-gradient(circle at 20% 120%, color-mix(in srgb, var(--c) 70%, white) 0%, transparent 55%), linear-gradient(140deg, var(--ink), color-mix(in srgb, var(--c) 55%, var(--ink))); }
.modal-photo-wrap{ position:relative; flex:0 0 120px; height:150px; border-radius:16px; overflow:hidden; background:rgba(255,255,255,.12); }
@media (min-width:768px){ .modal-photo-wrap{ flex-basis:170px; height:212px; } .modal-head{ padding:2rem 1.75rem 1.5rem; } }
.modal-photo{ width:100%; height:100%; object-fit:cover; object-position:top; }
.modal-head-text{ flex:1; min-width:0; padding-bottom:.25rem; }
.modal-cat{ display:inline-block; font-size:.68rem; font-weight:800; letter-spacing:.14em; text-transform:uppercase; color:var(--ink); background:var(--gold); padding:.2rem .55rem; border-radius:6px; margin-bottom:.5rem; }
.modal-sessions{ display:flex; flex-direction:column; gap:.5rem; }
.modal-sessions .ms{ --accent:var(--gold); display:flex; gap:.75rem; padding:.7rem .8rem; border-radius:12px; background:#fff; border:1px solid var(--line); border-left:4px solid var(--accent); }
.modal-sessions .ms-t{ font-weight:800; font-variant-numeric:tabular-nums; font-size:.9rem; min-width:3.2rem; }
.modal-sessions .ms-r{ font-size:.7rem; font-weight:700; text-transform:uppercase; letter-spacing:.08em; color:var(--accent); }
.modal-sessions .ms-n{ font-size:.9rem; font-weight:600; line-height:1.3; }
.modal-bio{ margin-top:1.1rem; color:var(--ink-80); line-height:1.7; font-size:.95rem; }
.modal-bio p + p{ margin-top:.8rem; }
.modal-bio .soon{ display:flex; gap:.6rem; align-items:center; padding:1rem; border-radius:14px; background:var(--cream); border:1px dashed rgba(50,53,55,.2); font-size:.9rem; }

/* Modal informativo (logística) */
.modal-info-head{ display:flex; align-items:center; gap:1rem; padding:1.5rem 1.25rem 1.25rem; background:linear-gradient(135deg,var(--ink), #4a3d22); }
.modal-info-icon{ width:44px; height:44px; border-radius:12px; display:grid; place-items:center; background:var(--gold); color:var(--ink); flex:0 0 auto; }
.modal-info-body{ padding:1.25rem; overflow-y:auto; overscroll-behavior:contain; }
@media (min-width:768px){ .modal-info-body{ padding:1.5rem 1.75rem 2rem; } }
.logi{ color:var(--ink-80); line-height:1.65; font-size:.95rem; }
.logi h4{ font-weight:800; font-style:italic; color:var(--ink); font-size:1.08rem; margin:1.4rem 0 .4rem; display:flex; align-items:center; gap:.5rem; }
.logi h4::before{ content:""; width:16px; height:3px; border-radius:3px; background:var(--gold); }
.logi p + p{ margin-top:.6rem; }
.logi a{ color:var(--gold-600); font-weight:600; text-decoration:underline; word-break:break-word; }
.logi-note{ font-size:.82rem; background:var(--cream); border-radius:10px; padding:.6rem .8rem; margin-top:.6rem; }
.logi-badges{ display:grid; gap:.4rem; margin:.75rem 0; }
.logi-badges div{ display:flex; gap:.6rem; align-items:center; padding:.55rem .7rem; border-radius:10px; background:#fff; border:1px solid var(--line); font-size:.88rem; }
.logi-badges i{ width:14px; height:14px; border-radius:50%; background:var(--b); flex:0 0 auto; }
.logi-badges b{ font-variant-numeric:tabular-nums; min-width:6.8rem; color:var(--ink); }
.logi-bank{ display:grid; grid-template-columns:auto 1fr; gap:.3rem .9rem; margin-top:.7rem; padding:.8rem 1rem; border-radius:12px; background:#fff; border:1px solid var(--line); font-size:.88rem; }
.logi-bank dt{ font-weight:700; color:var(--ink); }
.logi-bank dd{ font-variant-numeric:tabular-nums; word-break:break-word; }

/* ---------- Movimiento reducido ---------- */
@media (prefers-reduced-motion: reduce){
  *, *::before, *::after{ animation-duration:.001ms !important; animation-iteration-count:1 !important; transition-duration:.001ms !important; scroll-behavior:auto !important; }
  .bg-anim{ display:none; }
  .reveal{ opacity:1; transform:none; }
}

/* Evita que listas con scroll horizontal ensanchen la cuadrícula en móvil */
.grid > *{ min-width:0; }
html{ overflow-x:clip; }

/* Ajustes finos */
.nav-ghost{ display:none; }
@media (min-width:640px){ .nav-ghost{ display:inline-flex; } }
@media (max-width:767px){ .hero-rings{ display:none; } .sponsor.skeleton:nth-child(n+5){ display:none; } }
.hotel-card::after{ width:84px; height:84px; right:-34px; top:-34px; }
.slot-par{ white-space:nowrap; }
@media (min-width:768px){ .slot-par{ white-space:normal; line-height:1.25; } }
@media (min-width:768px){ .slot-par{ font-size:.62rem; letter-spacing:.06em; padding:.25rem .45rem; } }
@media (min-width:1024px){
  .badge-aside{ position:sticky; top:calc(var(--nav-h) + 92px); }
  .badge-panel{ max-height:calc(100vh - var(--nav-h) - 110px); overflow-y:auto; scrollbar-width:thin; }
}
