/* Event detail page — hero banner, agenda, speakers, sponsor logo wall. */

/* hero split with banner */
.hero-grid { display: grid; grid-template-columns: minmax(0, 1fr) minmax(300px, 440px); gap: 48px; align-items: center; }
@media (max-width: 900px) { .hero-grid { grid-template-columns: 1fr; } }
.banner { width: 100%; display: block; border-radius: var(--r-card); border: 1px solid var(--border); box-shadow: var(--shadow-card); }
.banner-ph { box-sizing: border-box; aspect-ratio: 16/10; display: flex; flex-direction: column; justify-content: flex-end; gap: 4px; padding: 26px; color: var(--blue-deep); background: linear-gradient(140deg, var(--blue-tint), var(--blue)); }
.banner-ph b { font: 650 1.8rem 'Space Grotesk', sans-serif; letter-spacing: -0.02em; }
.banner-ph span { font: 500 0.95rem 'Space Grotesk', sans-serif; font-feature-settings: "tnum"; }

/* agenda */
.agenda { background: var(--cream); border-radius: var(--r-card); padding: 12px 28px; }
.agenda-row { display: grid; grid-template-columns: 72px 1fr; gap: 20px; padding: 15px 0; border-top: 1px solid var(--border); align-items: baseline; }
.agenda-row:first-child { border-top: none; }
.agenda-time { font-family: 'Space Grotesk', sans-serif; font-weight: 600; font-size: 0.9rem; font-feature-settings: "tnum"; color: var(--orange-deep); }
.agenda-row b { font-weight: 600; font-size: 0.98rem; }
.agenda-row .who { font-size: 0.875rem; color: var(--text-muted); }
.agenda-row.pause b { font-weight: 500; color: var(--text-muted); }
.agenda-row .chip { margin-left: 8px; vertical-align: 1px; }

/* conference schedule — tracks (Sessionize rooms) as pill tabs, one agenda list at a time */
.room-pills { display: flex; gap: 8px; flex-wrap: wrap; margin: 0 0 16px; }
.room-pill { font: 500 0.8125rem 'Space Grotesk', sans-serif; background: var(--surface); color: var(--ink); border: 1px solid var(--border); border-radius: 999px; padding: 7px 16px; cursor: pointer; transition: all 200ms ease-out; }
.room-pill:hover { border-color: var(--orange); }
.room-pill.active { background: var(--ink); color: var(--ink-inverse); border-color: var(--ink); }
.room-pill:focus-visible { outline: 3px solid var(--blue); outline-offset: 2px; }
.sched-view { display: none; }
.sched-view.active { display: block; }
.session-row { width: 100%; border: none; background: none; font: inherit; color: inherit; text-align: left; cursor: pointer; }
.session-row:hover b { color: var(--orange-deep); }
.session-row .session-main b { display: block; }
.session-row .session-main .who { display: block; margin-top: 2px; }
/* session/speaker detail overlay */
.session-modal-title { font-size: 1.2rem; margin: 8px 0 12px; }
.session-desc { margin: 0 0 6px; font-size: 0.92rem; }
.speaker-row { display: flex; gap: 12px; align-items: flex-start; padding-top: 14px; border-top: 1px solid var(--border); margin-top: 14px; }
.speaker-pic { width: 48px; height: 48px; border-radius: 50%; object-fit: cover; flex: none; background: var(--cream); display: inline-flex; align-items: center; justify-content: center; font: 600 0.85rem 'Space Grotesk', sans-serif; color: var(--text-muted); }
.speaker-row b { display: block; }
.speaker-row .who { display: block; font-size: 0.82rem; color: var(--text-muted); margin-top: 1px; }
.speaker-bio { margin: 6px 0 0; font-size: 0.88rem; color: var(--text-muted); line-height: 1.5; }

/* speakers */
.card .talk { font-family: 'Space Grotesk', sans-serif; font-weight: 600; font-size: 1.15rem; letter-spacing: -0.01em; line-height: 1.3; color: var(--ink); }
.card .who b { color: var(--ink); font-weight: 600; }
.avatar-lg { width: 56px; height: 56px; font-size: 1.1rem; }
.panel-card { background: var(--cream-warm); border: none; }
.panel-card:hover { border-color: transparent; box-shadow: var(--shadow-card); }
.panel-people { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 4px; }
.panel-people .chip { background: var(--surface); color: var(--ink); font-weight: 500; }
.panel-people .chip b { font-weight: 600; }

/* sponsor logo wall */
.logo-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: 14px; }
.logo-card { background: var(--surface); border: 1px solid var(--border); border-radius: var(--r-media); padding: 18px; min-height: 72px; display: flex; align-items: center; justify-content: center; text-align: center; font: 600 0.95rem 'Space Grotesk', sans-serif; letter-spacing: -0.01em; color: var(--text-muted); transition: border-color 200ms ease-out, color 200ms ease-out; }
.logo-card:hover { border-color: var(--orange); color: var(--ink); }
.logo-card img { max-width: 100%; max-height: 52px; display: block; filter: grayscale(1); opacity: 0.72; transition: filter 200ms ease-out, opacity 200ms ease-out; }
.logo-card:hover img { filter: none; opacity: 1; }

/* register side-card → collapsible bottom dock on mobile.
   Desktop: a plain side-card (handle + grip hidden, body always open).
   Mobile : fixed to the viewport bottom; the Register CTA stays visible while the
            details/map/share fold away behind a tap-to-expand handle. */
.event-dock::before { display: none; }
.dock-handle { display: none; }
.dock-cal, .dock-share { display: none; }

@media (max-width: 900px) {
  body.has-dock { padding-bottom: 144px; }
  .event-dock {
    position: fixed; left: 0; right: 0; bottom: 0; z-index: 45;
    display: flex; flex-direction: column; max-height: 88vh;
    border: 1px solid var(--border); border-bottom: none;
    border-radius: 22px 22px 0 0;
    box-shadow: 0 -14px 44px rgba(22, 19, 14, 0.18);
    padding: 12px 18px calc(16px + env(safe-area-inset-bottom, 0px));
  }
  .event-dock::before { content: ''; display: block; order: -3; width: 38px; height: 4px; border-radius: 999px; background: var(--border); margin: 0 auto 6px; }
  .dock-handle { display: flex; align-items: center; gap: 12px; order: -2; width: 100%; background: none; border: none; padding: 4px 2px 12px; cursor: pointer; color: var(--ink); text-align: left; }
  .dock-summary { flex: 1; min-width: 0; font: 500 0.9rem 'Space Grotesk', sans-serif; color: var(--text-muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
  .dock-summary b { color: var(--ink); font-weight: 600; }
  .dock-chev { width: 20px; height: 20px; flex: none; transition: transform 260ms ease-out; }
  .event-dock.open .dock-chev { transform: rotate(180deg); }
  .dock-actions { order: -1; display: flex; align-items: stretch; gap: 10px; }
  .dock-actions .btn { width: auto; }
  .dock-cta { flex: 1; }
  .dock-cal, .dock-share { display: inline-flex; flex: 0 0 52px; width: 52px; padding: 0; }
  .dock-cal svg, .dock-share svg { width: 20px; height: 20px; }
  body.has-dock .hero-ctas { display: none; }
  .event-dock .share { display: none; }
  .dock-body { order: 0; max-height: 0; overflow: hidden; transition: max-height 340ms cubic-bezier(0.22, 1, 0.36, 1); }
  .event-dock.open .dock-body { max-height: 62vh; overflow-y: auto; margin-top: 14px; }
}

/* real event-report photo tiles (override the decorative .photo demo blocks) */
.photo-item { display: block; aspect-ratio: 4/3; border-radius: var(--r-media); overflow: hidden; border: 1px solid var(--border); }
.photo-item img { width: 100%; height: 100%; object-fit: cover; display: block; transition: transform 300ms ease-out; }
.photo-item:hover img { transform: scale(1.04); }

/* event-report video embeds */
.video-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 16px; }
.video-frame { aspect-ratio: 16/9; border-radius: var(--r-media); overflow: hidden; border: 1px solid var(--border); background: #000; }
.video-frame iframe { width: 100%; height: 100%; border: 0; display: block; }
