/* CNCR.tech · Events (/events/ and /events/<slug>/). Loaded after site.css: uses its tokens, type, buttons,
   chapters, cards (.way), nav, form sheet and dock, and adds only what the event components need. */

/* ---------- phase switches ----------
   The page carries every state it can be in; <html data-phase> (upcoming | live | past) and data-reg (before | open | after)
   are set from the event's dates before first paint and re-checked every minute (events.js). Cards on /events/ carry their own. */
[data-phase="upcoming"] [data-when]:not([data-when~="upcoming"]),
[data-phase="live"] [data-when]:not([data-when~="live"]),
[data-phase="past"] [data-when]:not([data-when~="past"]),
[data-reg="before"] [data-reg-when]:not([data-reg-when~="before"]),
[data-reg="open"] [data-reg-when]:not([data-reg-when~="open"]),
[data-reg="after"] [data-reg-when]:not([data-reg-when~="after"]) { display: none !important; }

/* nav: the events link is the current place */
.nav-links a[aria-current="page"] { color: var(--bone); }
.nav-links a[aria-current="page"]::before { transform: scale(1); }
.ev-page .brand.hidden { opacity: 1; }
.btn.is-pending { opacity: .62; cursor: default; pointer-events: none; }
.btn.is-pending::before { background: var(--graphite); }

/* text over cubes: the ink halo from the homepage */
.ev-hero-copy > *, .ev-idx-hero .wrap > *, .ev-sec-head > *, .ev-why-grid .title, .ev-why-copy > *, .ev-punch, .ev-join-title {
  text-shadow: 0 1px 2px rgba(12, 11, 16, .6), 0 0 28px rgba(12, 11, 16, .85);
}

/* ---------- shared ---------- */
.ev-sec { padding-block: clamp(96px, 15vh, 168px); }
.ev-sec-head { display: grid; gap: 20px; margin-bottom: clamp(36px, 6vh, 56px); max-width: 900px; }
.ev-sec-meta { font: 500 var(--fs-label-l)/1.5 var(--mono); letter-spacing: .1em; text-transform: uppercase; color: var(--soft); }
.ev-note { margin-top: 28px; color: var(--mute); font-size: var(--fs-small); max-width: 60ch; }
.ev-tbc { display: inline-flex; align-items: center; font: 500 var(--fs-micro)/1 var(--mono); font-style: normal; letter-spacing: .1em; text-transform: uppercase; color: var(--soft); border: 1px dashed var(--line-2); border-radius: 2px; padding: 5px 6px; vertical-align: middle; }
.ev-question { font-size: var(--fs-h4); font-weight: 600; line-height: 1.22; letter-spacing: -.02em; padding-left: 18px; border-left: 2px solid var(--eosin); max-width: 36ch; text-wrap: balance; }

/* EventStatus */
.ev-status-row { display: flex; flex-wrap: wrap; gap: 8px; }
.ev-status, .ev-chip {
  display: inline-flex; align-items: center; gap: 8px; padding: 8px 10px; border: 1px solid var(--line-2); border-radius: 2px;
  font: 500 var(--fs-label)/1 var(--mono); letter-spacing: .1em; text-transform: uppercase; color: var(--soft); background: rgba(12, 11, 16, .62);
  text-shadow: none;
}
.ev-status { color: var(--bone); }
.ev-status::before { content: ''; width: 7px; height: 7px; background: var(--graphite); flex: none; }
.ev-status[data-state="open"]::before, .ev-status[data-state="live"]::before { background: var(--eosin); }
.ev-status[data-state="waitlist"]::before { background: var(--bone); }
.ev-status[data-state="past"], .ev-status[data-state="closed"], .ev-status[data-state="sold-out"] { color: var(--soft); }
@keyframes ev-pulse { 50% { opacity: .25; } }
.ev-status[data-state="live"]::before { animation: ev-pulse 1.6s ease-in-out infinite; }
html.still .ev-status[data-state="live"]::before { animation: none; }

/* ---------- EventHero ---------- */
.ev-hero { min-height: 100svh; padding-top: calc(var(--nav-h) + clamp(32px, 7vh, 88px)); padding-bottom: clamp(48px, 9vh, 104px); display: grid; align-items: end; }
.ev-hero .wrap { display: grid; }
.ev-hero-copy { display: grid; gap: 24px; justify-items: start; max-width: 900px; }
.ev-crumb { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; font: 500 var(--fs-label-l)/1.3 var(--mono); letter-spacing: .12em; text-transform: uppercase; color: var(--soft); }
.ev-crumb::before { content: ''; width: 10px; height: 10px; background: var(--eosin); }
.ev-crumb a { color: var(--bone); text-decoration: none; transition: color 160ms ease; }
.ev-crumb a:hover { color: var(--eosin); }
.ev-crumb span::before { content: '/'; margin-right: 10px; color: var(--graphite); }
.ev-title { font-size: var(--fs-display); font-weight: 700; line-height: 1.02; letter-spacing: -.04em; text-transform: uppercase; max-width: 15ch; }
@media (min-width: 821px) { .ev-title { font-size: var(--fs-display-wide); } }
.ev-series { display: block; color: var(--mute); }   /* grey, like CANCER before it becomes CNCR */
.ev-subtitle { font-size: var(--fs-h4); font-weight: 600; letter-spacing: -.02em; line-height: 1.2; max-width: none; color: var(--bone); }
.ev-when { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 14px; font: 500 var(--fs-label-l)/1.4 var(--mono); letter-spacing: .1em; text-transform: uppercase; color: var(--bone); }
.ev-when > * + *::before { content: ''; display: inline-block; width: 6px; height: 6px; background: var(--eosin); margin-right: 14px; vertical-align: 2px; }
.ev-reg { display: grid; gap: 14px; justify-items: start; margin-top: 6px; }
.ev-reg-note, .ev-cal { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 12px; font: 500 var(--fs-label)/1.5 var(--mono); letter-spacing: .1em; text-transform: uppercase; color: var(--mute); }
.ev-reg-note > i { width: 4px; height: 4px; background: var(--graphite); }
.ev-reg-note a, .ev-cal a { color: var(--soft); text-underline-offset: 3px; text-decoration-color: var(--line-2); transition: color 160ms ease; }
.ev-reg-note a:hover, .ev-cal a:hover { color: var(--eosin); }
.ev-cal span::after { content: ':'; }
.ev-partof { font: 500 var(--fs-label)/1.4 var(--mono); letter-spacing: .12em; text-transform: uppercase; color: var(--mute); padding-top: 18px; border-top: 1px solid var(--line); min-width: min(100%, 320px); }

/* registration embed */
.ev-embed-box { border: 1px solid var(--line-2); border-radius: 4px; background: var(--panel); overflow: hidden; }
.ev-embed-box iframe { display: block; width: 100%; height: min(760px, 85svh); border: 0; }

/* ---------- Why attend ---------- */
.ev-why-grid { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 32px clamp(40px, 6vw, 96px); align-items: start; }
.ev-why-copy { display: grid; gap: 24px; }
.ev-why-copy .lead { max-width: 30ch; }
.ev-punch { margin-top: clamp(64px, 10vh, 112px); padding-top: 32px; border-top: 1px solid var(--line); display: grid; gap: 18px; }
.ev-punch-intro { font: 500 var(--fs-label-l)/1.4 var(--mono); letter-spacing: .12em; text-transform: uppercase; color: var(--soft); }
.ev-punch-lines { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: 6px 26px; }
.ev-punch-lines li { display: inline-flex; align-items: center; gap: 26px; font-size: var(--fs-h2); font-weight: 700; letter-spacing: -.035em; line-height: 1.08; text-transform: uppercase; }
.ev-punch-lines li:not(:last-child)::after { content: ''; width: .26em; height: .26em; background: var(--eosin); }

/* ---------- Programme ---------- */
.ev-prog { list-style: none; margin: 0; padding: 0; border-top: 1px solid var(--line); }
.ev-slot { position: relative; display: grid; grid-template-columns: minmax(150px, 220px) minmax(0, 1fr); gap: 14px 40px; padding: clamp(28px, 4vh, 40px) 0; border-bottom: 1px solid var(--line); }
.ev-slot::before { content: ''; position: absolute; left: 0; top: -1px; height: 2px; width: 0; background: var(--eosin); transition: width 500ms var(--ease-out); }
.ev-slot.is-now::before { width: 100%; }
.ev-slot-time { display: flex; flex-wrap: wrap; align-items: baseline; gap: 2px 4px; font: 500 var(--fs-label-l)/1.4 var(--mono); letter-spacing: .06em; color: var(--bone); }
.ev-slot-time time { font-size: 1.05rem; }
.ev-slot-time span { color: var(--mute); }
.ev-now { display: none; flex-basis: 100%; margin-top: 10px; font: 500 var(--fs-micro)/1 var(--mono); font-style: normal; letter-spacing: .12em; text-transform: uppercase; color: var(--eosin); }
.ev-slot.is-now .ev-now { display: block; }
.ev-slot-body { display: grid; gap: 14px; justify-items: start; max-width: 780px; }
.ev-slot-kind { display: inline-flex; align-items: center; gap: 8px; font: 500 var(--fs-label)/1 var(--mono); letter-spacing: .12em; text-transform: uppercase; color: var(--mute); }
.ev-slot-kind::before { content: ''; width: 6px; height: 6px; background: var(--eosin); }
.ev-slot-title { font-size: var(--fs-h3); font-weight: 700; line-height: 1.04; letter-spacing: -.03em; text-transform: uppercase; }
.ev-slot-kicker { font-size: var(--fs-lead); line-height: 1.35; letter-spacing: -.01em; max-width: 36ch; }
.ev-slot-desc { color: var(--soft); max-width: 60ch; }
.ev-slot-link { font: 500 var(--fs-label)/1.4 var(--mono); letter-spacing: .1em; text-transform: uppercase; color: var(--soft); text-underline-offset: 4px; text-decoration-color: var(--line-2); }
.ev-slot-link:hover { color: var(--eosin); }
.ev-slot[data-kind="break"] { padding-block: 18px; }
.ev-slot[data-kind="break"] .ev-slot-title { font-size: var(--fs-h4); color: var(--soft); }
.ev-slot[data-kind="break"] .ev-slot-kind::before { background: var(--graphite); }

/* a model or a pitch format: numbered steps, like the homepage pipeline rail */
.ev-flow { display: grid; gap: 10px; width: 100%; }
.ev-flow ol { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: 8px 0; }
.ev-flow li { display: inline-flex; align-items: center; }
.ev-flow li:not(:last-child)::after { content: ''; width: 14px; height: 1px; background: var(--line-2); }
.ev-flow li span { display: inline-flex; align-items: baseline; gap: 8px; padding: 10px 12px; border: 1px solid var(--line-2); border-radius: 2px; background: rgba(12, 11, 16, .7); }
.ev-flow small { font: 500 var(--fs-micro)/1 var(--mono); letter-spacing: .1em; color: var(--eosin); }
.ev-flow b { font: 500 var(--fs-label)/1.2 var(--mono); letter-spacing: .08em; text-transform: uppercase; color: var(--bone); }
.ev-topics { display: grid; gap: 10px; }
.ev-topics ul { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: 8px 22px; }
.ev-topics li { display: inline-flex; align-items: center; gap: 10px; color: var(--bone); font-weight: 500; }
.ev-topics li::before { content: ''; width: 7px; height: 7px; background: var(--eosin); flex: none; }
.ev-statements { list-style: none; margin: 0; padding: 0; display: grid; gap: 6px; }
.ev-statements li { font-size: var(--fs-h4); font-weight: 700; line-height: 1.15; letter-spacing: -.02em; text-transform: uppercase; }

/* people in a slot */
.ev-people { list-style: none; margin: 4px 0 0; padding: 0; display: flex; flex-wrap: wrap; gap: 14px 28px; }
.ev-person { display: inline-flex; align-items: center; gap: 12px; text-decoration: none; color: inherit; }
a.ev-person:hover .ev-who b { color: var(--eosin); }
.ev-who { display: grid; gap: 4px; }
.ev-who b { font-weight: 600; font-size: var(--fs-small); line-height: 1.25; transition: color 160ms ease; }
.ev-who small { font: 500 var(--fs-micro)/1.35 var(--mono); letter-spacing: .08em; text-transform: uppercase; color: var(--mute); max-width: 34ch; }

/* faces: black and white in site colours, the logo's cube as the full stop (as the About portrait) */
.ev-face { position: relative; display: block; flex: none; background: var(--panel); }
.ev-face picture, .ev-face img { display: block; width: 100%; height: 100%; }
.ev-face img { object-fit: cover; filter: grayscale(1) contrast(1.06) brightness(.94); }
.ev-face-s { width: 40px; height: 40px; border: 1px solid var(--line-2); }
.ev-face-l { width: 100%; aspect-ratio: 4 / 5; border: 1px solid var(--line); }
.ev-face-l::after { content: ''; position: absolute; right: -6px; bottom: -6px; width: 12px; height: 12px; background: var(--eosin); }
.ev-face.is-empty {
  display: grid; place-items: center;
  background:
    linear-gradient(#ffffff08 1px, transparent 1px) 0 0 / 22px 22px,
    linear-gradient(90deg, #ffffff08 1px, transparent 1px) 0 0 / 22px 22px,
    var(--panel);
}
.ev-face.is-empty b { font: 700 clamp(2.4rem, 5vw, 4rem)/1 var(--sans); letter-spacing: -.04em; color: var(--line-2); }
.ev-face-s.is-empty { background: var(--panel); }
.ev-face-s.is-empty b { font: 500 var(--fs-micro)/1 var(--mono); letter-spacing: .06em; color: var(--soft); }

/* ---------- Speakers ---------- */
.ev-speakers { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 40px 20px; }
.ev-speaker { display: grid; gap: 20px; align-content: start; }
.ev-speaker-text { display: grid; gap: 8px; justify-items: start; }
.ev-speaker-name { font-size: var(--fs-h4); line-height: 1.12; letter-spacing: -.02em; }
.ev-hon { font-weight: 500; font-size: .62em; letter-spacing: 0; color: var(--soft); }
.ev-speaker-role { color: var(--bone); font-size: var(--fs-small); line-height: 1.4; }
.ev-speaker-org { color: var(--mute); font-size: var(--fs-small); line-height: 1.4; }
.ev-speaker-bio { color: var(--soft); font-size: var(--fs-small); margin-top: 6px; }
.ev-speaker-links { display: flex; gap: 14px; margin-top: 4px; }
.ev-speaker-link { font: 500 var(--fs-label)/1 var(--mono); letter-spacing: .1em; text-transform: uppercase; color: var(--soft); text-underline-offset: 4px; }
.ev-speaker-link:hover { color: var(--eosin); }
.ev-speaker.is-tbc .ev-face-l { border-style: dashed; border-color: var(--line-2); }
.ev-speaker.is-tbc .ev-face-l::after { background: var(--graphite); }

/* ---------- Projects ---------- */
.ev-projects { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 16px; }
.ev-project { display: grid; grid-template-rows: auto 1fr; border: 1px solid var(--line); border-radius: 4px; background: rgba(12, 11, 16, .72); overflow: hidden; transition: border-color 240ms ease; }
.ev-project:hover { border-color: var(--line-2); }
.ev-project-media { display: block; aspect-ratio: 16 / 9; background: var(--panel); border-bottom: 1px solid var(--line); }
.ev-project-media img { width: 100%; height: 100%; object-fit: cover; }
.ev-project-media.is-logo img { object-fit: contain; padding: 12%; }
.ev-project-text { display: grid; gap: 12px; align-content: start; justify-items: start; padding: 24px; }
.ev-project-award { font: 500 var(--fs-label)/1 var(--mono); letter-spacing: .12em; text-transform: uppercase; color: var(--eosin); }
.ev-project h3 { font-size: var(--fs-h4); line-height: 1.1; letter-spacing: -.02em; }
.ev-project-team { font: 500 var(--fs-label)/1.3 var(--mono); letter-spacing: .1em; text-transform: uppercase; color: var(--mute); }
.ev-project-challenge { color: var(--soft); font-size: var(--fs-small); }
.ev-project-challenge .label { margin-right: 6px; }
.ev-project-owner { color: var(--mute); }
.ev-project-summary { color: var(--bone); }
.ev-project .btn { margin-top: 6px; }
/* while the teams are not known yet: one invitation-like block, never a wall of empty cards */
.ev-pending { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 24px; padding: clamp(28px, 5vw, 56px); border: 1px dashed var(--line-2); border-radius: 4px; background: rgba(18, 16, 23, .6); }
.ev-pending .h { font-size: var(--fs-h2); font-weight: 700; letter-spacing: -.03em; line-height: 1.05; text-transform: uppercase; max-width: 22ch; }
.ev-slots { display: grid; gap: 12px; justify-items: start; }
.ev-slot-squares { display: flex; gap: 8px; }
.ev-slot-squares i { width: 22px; height: 22px; border: 1px solid var(--line-2); }
.ev-slot-squares i:last-child { border-color: var(--eosin); background: var(--eosin); }

/* generated cube pattern (cards and projects without an image) */
.ev-art { display: grid; grid-template-columns: repeat(8, 1fr); gap: 5px; width: 100%; height: 100%; padding: 18px; align-content: center; }
.ev-art i { aspect-ratio: 1; background: var(--line); }
.ev-art i.mid { background: var(--line-2); }
.ev-art i.on { background: var(--eosin); }

/* ---------- Recap ---------- */
.ev-video { display: grid; gap: 12px; margin-bottom: 32px; }
.ev-video-btn, .ev-video iframe { position: relative; display: block; width: 100%; aspect-ratio: 16 / 9; border: 1px solid var(--line-2); border-radius: 4px; background: var(--panel); padding: 0; cursor: pointer; overflow: hidden; }
.ev-video-btn img { width: 100%; height: 100%; object-fit: cover; filter: grayscale(.4); opacity: .8; transition: opacity 240ms ease; }
.ev-video-btn:hover img { opacity: 1; }
.ev-video-play { position: absolute; left: 50%; top: 50%; transform: translate(-50%, -50%); display: inline-flex; align-items: center; gap: 10px; padding: 16px 20px; background: var(--bone); color: var(--ink); font: 500 var(--fs-label-l)/1 var(--mono); letter-spacing: .08em; text-transform: uppercase; }
.ev-video-play::before { content: ''; width: 10px; height: 12px; background: var(--eosin); clip-path: polygon(0 0, 100% 50%, 0 100%); }
.ev-gallery { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 280px), 1fr)); gap: 8px; }
.ev-gallery img { width: 100%; aspect-ratio: 3 / 2; object-fit: cover; }

/* ---------- Venue ---------- */
.ev-venue { display: grid; grid-template-columns: minmax(0, 1.1fr) minmax(0, 1fr); gap: 40px clamp(40px, 6vw, 96px); align-items: center; }
.ev-venue-copy { display: grid; gap: 22px; justify-items: start; }
.ev-venue-copy .lead { max-width: 34ch; }
.ev-facts { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1px; margin: 6px 0 0; background: var(--line); border: 1px solid var(--line); width: 100%; }
.ev-facts > div { background: rgba(12, 11, 16, .86); padding: 16px 18px; display: grid; gap: 8px; }
.ev-facts dt { font: 500 var(--fs-label)/1 var(--mono); letter-spacing: .12em; text-transform: uppercase; color: var(--mute); }
.ev-facts dd { margin: 0; font-weight: 600; line-height: 1.3; }
.ev-seats { margin: 0; display: grid; gap: 14px; justify-items: start; }
.ev-seat-grid { display: grid; grid-template-columns: repeat(var(--cols, 10), 1fr); gap: 7px; width: min(100%, 440px); }
.ev-seat-grid i { aspect-ratio: 1; background: var(--line-2); transition: background-color 400ms ease; }
.ev-seat-grid i:last-child { background: var(--eosin); }
.ev-seats:hover .ev-seat-grid i:nth-child(7n + 3) { background: var(--soft); }
.ev-venue-photos { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
.ev-venue-photos li:first-child { grid-column: 1 / -1; }
.ev-venue-photos img { width: 100%; aspect-ratio: 3 / 2; object-fit: cover; }

/* ---------- PartnerStrip: typeset names; a logo only with written approval ---------- */
.ev-partners { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 240px), 1fr)); gap: 1px; background: var(--line); border: 1px solid var(--line); margin-bottom: 48px; }
.ev-pgroup { background: rgba(12, 11, 16, .86); padding: 26px 24px 30px; display: grid; gap: 22px; align-content: start; }
.ev-pgroup ul { list-style: none; margin: 0; padding: 0; display: grid; gap: 20px; }
.ev-pgroup a, .ev-pgroup li > span { display: grid; gap: 8px; justify-items: start; text-decoration: none; color: inherit; }
.ev-org-name { font-size: var(--fs-h4); font-weight: 700; line-height: 1.1; letter-spacing: -.02em; transition: color 160ms ease; }
.ev-pgroup a:hover .ev-org-name { color: var(--eosin); }
.ev-org-logo { height: 26px; width: auto; }
.ev-org-tag { font: 500 var(--fs-label)/1.3 var(--mono); letter-spacing: .1em; text-transform: uppercase; color: var(--mute); }
.ev-invite-copy { display: grid; gap: 10px; max-width: 46ch; }

/* ---------- JoinCancerTechCTA (the homepage's three cards) ---------- */
.ev-join .ways-grid { margin-top: clamp(36px, 6vh, 56px); }
.ev-join .way { min-height: 440px; }
.ev-join-reg { margin-top: 16px; display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 20px 32px; padding: clamp(24px, 4vw, 40px); border: 1px solid var(--line-2); border-radius: 4px; background: rgba(12, 11, 16, .72); }
.ev-join-reg > div:first-child { display: grid; gap: 10px; }
.ev-join-reg .h { font-size: var(--fs-h2); font-weight: 700; letter-spacing: -.03em; line-height: 1.05; text-transform: uppercase; }

/* ---------- mobile register bar ---------- */
@media (max-width: 820px) {
  .ev-dock { grid-template-columns: minmax(0, 1fr) auto; align-items: center; gap: 12px; }
  .ev-dock .btn { white-space: nowrap; padding-inline: 16px; }
  .ev-dock-meta { display: grid; gap: 4px; min-width: 0; font: 500 var(--fs-label)/1.2 var(--mono); letter-spacing: .08em; text-transform: uppercase; }
  .ev-dock-meta b { font-weight: 500; color: var(--bone); white-space: nowrap; }
  .ev-dock-meta span { color: var(--mute); }
}

/* ---------- /events/ index ---------- */
.ev-idx-hero { min-height: 78svh; padding-top: calc(var(--nav-h) + clamp(48px, 10vh, 120px)); padding-bottom: clamp(56px, 9vh, 96px); display: grid; align-items: end; }
.ev-idx-hero .wrap { display: grid; gap: 26px; }
.ev-idx-hero .chapter { margin: 0; max-width: 560px; }
.ev-idx-hero .display { line-height: 1.02; }
.ev-cards { list-style: none; margin: 0; padding: 0; display: grid; gap: 16px; }
.ev-cards.is-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.ev-empty { color: var(--soft); font-size: var(--fs-lead); max-width: 40ch; }
.ev-empty[hidden] { display: none; }
.ev-card { position: relative; display: grid; grid-template-columns: 132px minmax(0, 1fr); border: 1px solid var(--line); border-radius: 4px; background: rgba(12, 11, 16, .78); overflow: hidden; transition: border-color 240ms ease, background-color 240ms ease; }
.ev-card:hover { border-color: var(--line-2); background: rgba(18, 16, 23, .86); }
.ev-card .ev-card-media { display: none; }
.ev-card.is-featured { grid-template-columns: 180px minmax(0, 1.25fr) minmax(0, 1fr); }
.ev-card.is-featured .ev-card-media { display: block; grid-column: 3; grid-row: 1; border-left: 1px solid var(--line); background: var(--panel); min-height: 100%; }
.ev-card.is-featured .ev-card-media img { width: 100%; height: 100%; object-fit: cover; }
.ev-date { margin: 0; padding: 24px 20px; border-right: 1px solid var(--line); }
.ev-date time { display: grid; gap: 8px; }
.ev-date b { font: 700 clamp(3rem, 5.4vw, 4.75rem)/.86 var(--sans); letter-spacing: -.05em; }
.ev-date span { font: 500 var(--fs-label-l)/1 var(--mono); letter-spacing: .12em; color: var(--soft); }
.ev-card-body { display: grid; gap: 14px; align-content: start; justify-items: start; padding: 24px; }
.ev-card-kicker { display: flex; flex-wrap: wrap; gap: 8px 12px; font: 500 var(--fs-label)/1.3 var(--mono); letter-spacing: .12em; text-transform: uppercase; color: var(--mute); }
.ev-card-kicker span:first-child { color: var(--soft); }
.ev-card-kicker span + span::before { content: '/'; margin-right: 12px; color: var(--graphite); }
.ev-card-title { font-size: var(--fs-h3); line-height: 1.04; letter-spacing: -.03em; text-transform: uppercase; }
.ev-card-title a { text-decoration: none; }
.ev-card-title a::after { content: ''; position: absolute; inset: 0; }   /* the whole card is the link; buttons sit above it */
.ev-card-title a:focus-visible { outline: none; }
.ev-card:has(.ev-card-title a:focus-visible) { outline: 2px solid var(--eosin); outline-offset: 3px; }
.ev-card .cta-row, .ev-card .ev-status-row { position: relative; z-index: 1; }
.ev-card-sum { color: var(--soft); max-width: 48ch; }
.ev-card-meta { font: 500 var(--fs-label)/1.5 var(--mono); letter-spacing: .1em; text-transform: uppercase; color: var(--soft); }
.ev-cards.is-grid .ev-card { grid-template-columns: minmax(0, 1fr); }
.ev-cards.is-grid .ev-date { border-right: 0; border-bottom: 1px solid var(--line); padding: 18px 20px; }
.ev-cards.is-grid .ev-date time { display: flex; align-items: baseline; gap: 12px; }
.ev-cards.is-grid .ev-date b { font-size: 2.6rem; }
.ev-cards.is-grid .ev-card-title { font-size: var(--fs-h4); }

/* the form field that names the event */
.ev-context input { color: var(--soft); background: var(--panel-2); border-style: dashed; }

/* ---------- responsive ---------- */
@media (max-width: 1080px) {
  .ev-projects, .ev-cards.is-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .ev-card.is-featured { grid-template-columns: 150px minmax(0, 1fr); }
  .ev-card.is-featured .ev-card-media { display: none; }
}
@media (max-width: 900px) {
  .ev-speakers { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 820px) {
  .ev-why-grid, .ev-venue { grid-template-columns: minmax(0, 1fr); }
  .ev-slot { grid-template-columns: minmax(0, 1fr); gap: 12px; }
  .ev-slot-time { gap: 2px 4px; }
  .ev-projects, .ev-cards.is-grid { grid-template-columns: minmax(0, 1fr); }
  .ev-card, .ev-card.is-featured { grid-template-columns: minmax(0, 1fr); }
  .ev-date { border-right: 0; border-bottom: 1px solid var(--line); padding: 18px 20px; }
  .ev-date time { display: flex; align-items: baseline; gap: 12px; }
  .ev-date b { font-size: 2.6rem; }
  .ev-join .way { min-height: 340px; }
  .ev-hero { align-items: end; }
  .ev-hero-copy { gap: 20px; }
  .ev-hero .cta-row { width: 100%; }
}
@media (max-width: 560px) {
  .ev-speakers { grid-template-columns: minmax(0, 1fr); gap: 28px; }
  .ev-speaker { grid-template-columns: 112px minmax(0, 1fr); gap: 18px; align-items: start; }
  .ev-facts { grid-template-columns: minmax(0, 1fr); }
  .ev-punch-lines li { font-size: var(--fs-h3); }
  .ev-hero .cta-row .btn { flex: 1 1 100%; justify-content: center; }
}
