/* =================================================================
   IDCT 2026 — Conference Programme Styles
   Editorial-Diplomatic · White background · Print-ready
   ================================================================= */

@import url('https://fonts.googleapis.com/css2?family=Fraunces:opsz,wght@9..144,300;9..144,400;9..144,500;9..144,600;9..144,700&family=Inter+Tight:wght@300;400;500;600;700&display=swap');
@import url('https://fonts.googleapis.com/css2?family=El+Messiri:wght@400..700&display=swap');
@import url('https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@20..48,100..700,0..1,-50..200');

:root {
  --ink:           #0E1525;
  --ink-soft:      #1F2A44;
  --paper:         #FFFFFF;
  --paper-2:       #FCFBF8;
  --cream:         #F4EFE2;
  --line:          #E2DDCE;
  --line-soft:     #EFEBDC;
  --muted:         #6B6F7E;
  --muted-2:       #9CA0AE;

  --gold:          #B8923B;
  --gold-soft:     #DCC079;
  --gold-glow:     rgba(184,146,59,0.15);

  --proud:         #B8243A;
  --proud-soft:    #FBEEF0;
  --proud-deep:    #7C0A1B;

  --dialog:        #0F7A4D;
  --dialog-soft:   #ECF6F0;
  --dialog-deep:   #054A2E;

  --family:        #2C3680;
  --family-soft:   #EEF0F8;
  --family-deep:   #161D52;

  --scientific:      #5A5F6E;
  --scientific-soft: #F0F1F3;
  --scientific-deep: #2E3240;

  --display:       'El Messiri', 'Fraunces', sans-serif;
  --body:          'Inter Tight', -apple-system, BlinkMacSystemFont, sans-serif;

  --ease:          cubic-bezier(0.22, 1, 0.36, 1);
}

/* =================================================================
   RESET & BASE
   ================================================================= */
.idct2026-app,
.idct2026-app *,
.idct2026-app *::before,
.idct2026-app *::after {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}
.idct2026-app {
  scroll-behavior: smooth;
  font-family: var(--body);
  background: var(--paper);
  color: var(--ink);
  line-height: 1.5;
  -webkit-font-smoothing: antialiased;
  overflow: visible !important;
  position: relative;
}
.idct2026-app a {
  text-decoration: none;
}
.idct2026-app,
.idct2026-app input,
.idct2026-app button,
.idct2026-app select,
.idct2026-app textarea {
  font-family: var(--body);
}

/* =================================================================
   PAGE WRAPPER
   ================================================================= */
.wrap {
  max-width: 1280px;
  margin: 0 auto;
  padding: 32px 24px 48px;
}

/* =================================================================
   PROGRAMME HEADER
   ================================================================= */
.prog-header {
  display: flex;
  justify-content: space-between;
  align-items: flex-end;
  padding-bottom: 32px;
  border-bottom: 1px solid var(--line);
  margin-bottom: 48px;
}
.prog-header-left .eyebrow {
  font-size: 11px;
  letter-spacing: 0.28em;
  text-transform: uppercase;
  color: var(--gold);
  font-weight: 600;
  margin-bottom: 12px;
}
.prog-header-left h1 {
  font-family: var(--display);
  font-weight: 300;
  font-size: clamp(28px, 3.5vw, 44px);
  line-height: 1.05;
  letter-spacing: -0.02em;
  color: var(--ink);
  font-variation-settings: "opsz" 144;
}
.prog-header-left h1 em {
  font-style: italic;
  color: var(--gold);
  font-weight: 400;
}
.prog-header-right {
  text-align: right;
  font-size: 12px;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--muted-2);
  font-weight: 500;
}
.prog-header-right strong {
  display: block;
  color: var(--ink);
  font-weight: 600;
  font-size: 13px;
  margin-top: 4px;
  letter-spacing: 0.16em;
}

/* =================================================================
   STAGE LEGEND CARDS
   ================================================================= */
.stage-legend {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 20px;
  margin-bottom: 56px;
}
.stage-card {
  background: var(--paper-2);
  border: 1px solid var(--line);
  border-left: 4px solid var(--accent);
  padding: 24px 24px 22px;
  border-radius: 4px;
  position: relative;
  transition: transform 0.5s var(--ease), box-shadow 0.5s var(--ease);
}
.stage-card:hover {
  transform: translateY(-3px);
  box-shadow: 0 16px 40px -16px rgba(14,21,37,0.10);
}
.stage-card.proud  { --accent: var(--proud); }
.stage-card.dialog { --accent: var(--dialog); }
.stage-card.family     { --accent: var(--family); }
.stage-card.scientific { --accent: var(--scientific); }
.stage-card .num {
  font-family: var(--display);
  font-size: 12px;
  font-weight: 500;
  color: var(--accent);
  letter-spacing: 0.14em;
  text-transform: uppercase;
}
.stage-card .name {
  font-family: var(--display);
  font-size: 22px;
  font-weight: 500;
  letter-spacing: -0.01em;
  line-height: 1.15;
  margin-top: 6px;
  margin-bottom: 10px;
  color: var(--ink);
}
.stage-card .desc {
  font-size: 13px;
  line-height: 1.5;
  color: var(--muted);
}

/* =================================================================
   TIMELINE / TIMEBLOCK
   ================================================================= */
.timeblock { margin-bottom: 36px; }
.idct2026-app.js-enabled .timeblock {
  opacity: 0;
  transform: translateY(30px);
  transition: opacity 0.8s var(--ease), transform 0.8s var(--ease);
}
.idct2026-app.js-enabled .timeblock.visible {
  opacity: 1;
  transform: translateY(0);
}

.time-marker {
  display: flex;
  align-items: center;
  gap: 14px;
  margin-bottom: 14px;
  padding-bottom: 8px;
  border-bottom: 1px solid var(--line);
}
.time-marker .pulse {
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: var(--gold);
  box-shadow: 0 0 0 0 var(--gold-glow);
  animation: pulse 2.4s ease-out infinite;
  flex-shrink: 0;
}
@keyframes pulse {
  0%   { box-shadow: 0 0 0 0 rgba(184,146,59,0.4); }
  100% { box-shadow: 0 0 0 12px rgba(184,146,59,0); }
}
.time-marker .block-label {
  font-family: var(--display);
  font-weight: 500;
  font-style: italic;
  font-size: 14px;
  letter-spacing: 0.01em;
  color: var(--ink);
}
.time-marker .block-label em {
  font-style: normal;
  color: var(--gold);
  font-weight: 600;
  margin-right: 8px;
  font-family: var(--body);
  font-size: 12px;
  letter-spacing: 0.16em;
  text-transform: uppercase;
}
.time-marker .meta {
  margin-left: auto;
  font-size: 10.5px;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--muted-2);
  font-weight: 600;
}
.time-marker .meta strong { color: var(--ink); font-weight: 600; }

/* =================================================================
   PARALLEL GRID
   ================================================================= */
.parallel-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 16px;
  margin-bottom: 14px;
}
.parallel-grid .session { margin-bottom: 0; }
.parallel-grid > .session:only-child { grid-column: 1 / -1; }
.parallel-grid .speakers {
  grid-template-columns: repeat(2, 1fr) !important;
  gap: 8px 16px !important;
}
.parallel-grid .speaker.is-chair { grid-column: 1 / -1 !important; }

/* =================================================================
   SESSION CARD
   ================================================================= */
.session {
  background: var(--paper-2);
  border-radius: 6px;
  border: 1px solid var(--line);
  overflow: hidden;
  margin-bottom: 14px;
  transition: transform 0.5s var(--ease), box-shadow 0.5s var(--ease);
}
.session:hover {
  box-shadow: 0 24px 50px -20px rgba(14,21,37,0.12);
}
.session.proud  { --accent: var(--proud);  --accent-soft: var(--proud-soft);  --accent-deep: var(--proud-deep); }
.session.dialog { --accent: var(--dialog); --accent-soft: var(--dialog-soft); --accent-deep: var(--dialog-deep); }
.session.family     { --accent: var(--family);     --accent-soft: var(--family-soft);     --accent-deep: var(--family-deep); }
.session.scientific { --accent: var(--scientific); --accent-soft: var(--scientific-soft); --accent-deep: var(--scientific-deep); }

/* Roundtable — gold override */
.session.roundtable {
  --accent:      #B8923B;
  --accent-soft: #F5EDD8;
  --accent-deep: #6B5320;
  border: 1.5px solid #DCC079;
  box-shadow: 0 8px 28px -10px rgba(184,146,59,0.25);
}
.session.roundtable .session-header {
  background: linear-gradient(135deg, #B8923B 0%, #9B7A2D 100%);
}

/* Session header */
.session-header {
  background: var(--accent);
  color: white;
  padding: 12px 28px;
  display: flex;
  flex-direction: column;
  gap: 4px;
  position: relative;
  overflow: hidden;
}
.session-header::before {
  content: '';
  position: absolute;
  right: -50px;
  top: -50px;
  width: 160px;
  height: 160px;
  border-radius: 50%;
  background: radial-gradient(circle, rgba(255,255,255,0.12), transparent 70%);
}
.session-header-top {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 16px;
}
.session-header-bottom {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 16px;
  font-size: 11.5px;
  letter-spacing: 0.10em;
  font-weight: 500;
  opacity: 0.92;
  position: relative;
  z-index: 1;
}
.session-header-bottom .session-time {
  font-family: var(--display);
  font-style: italic;
  font-weight: 400;
  font-size: 14px;
  letter-spacing: -0.005em;
  opacity: 1;
}
.session-header-bottom .session-block {
  font-size: 10.5px;
  letter-spacing: 0.20em;
  text-transform: uppercase;
  font-weight: 600;
  opacity: 0.9;
}
.stage-tag {
  font-size: 11px;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  font-weight: 600;
  position: relative;
  z-index: 1;
}
.session-num {
  font-family: var(--body);
  font-weight: 600;
  font-style: normal;
  font-size: 11px;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  opacity: 0.90;
  position: relative;
  z-index: 1;
  white-space: nowrap;
}

/* Session body */
.session-body { padding: 22px 28px 24px; }

.session-format {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  font-size: 11px;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--accent);
  font-weight: 600;
  padding: 6px 14px;
  background: var(--accent-soft);
  border-radius: 100px;
  margin-bottom: 14px;
}
.session-format::before {
  content: '';
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: var(--accent);
}

.session-title {
  font-family: var(--display);
  font-weight: 400;
  font-size: clamp(20px, 2.2vw, 26px);
  line-height: 1.2;
  letter-spacing: -0.012em;
  color: var(--ink);
  margin-bottom: 14px;
}
.session-title em { font-style: italic; color: var(--accent); }

.session-topic {
  font-size: 13px;
  line-height: 1.55;
  color: var(--muted);
  font-style: italic;
  padding-left: 14px;
  border-left: 2px solid var(--accent);
  margin-bottom: 16px;
}

/* Featured session overrides */
.session.featured .session-body { padding: 36px clamp(28px, 4vw, 48px) 36px; }
.session.featured .session-title {
  font-size: clamp(26px, 3.2vw, 38px);
  line-height: 1.05;
  font-weight: 300;
  font-variation-settings: "opsz" 144;
  margin-bottom: 16px;
}
.session.featured .session-intro {
  font-size: 14px;
  line-height: 1.6;
  color: var(--muted);
  font-style: italic;
  padding: 14px 18px;
  background: var(--accent-soft);
  border-radius: 4px;
  margin-bottom: 32px;
}

/* =================================================================
   CEREMONY SEGMENTS
   ================================================================= */
.ceremony-segments { display: flex; flex-direction: column; gap: 0; }
.ceremony-segment {
  padding: 24px 0;
  border-top: 1px solid var(--line-soft);
  display: grid;
  grid-template-columns: 80px 1fr;
  gap: 24px;
  align-items: start;
}
.ceremony-segment:last-child { border-bottom: 1px solid var(--line-soft); }
.ceremony-segment .num {
  font-family: var(--display);
  font-style: italic;
  font-size: 32px;
  font-weight: 400;
  color: var(--accent);
  line-height: 1;
}
.ceremony-segment .label {
  font-size: 10px;
  letter-spacing: 0.24em;
  text-transform: uppercase;
  color: var(--accent);
  font-weight: 700;
  margin-bottom: 6px;
}
.ceremony-segment .seg-title {
  font-family: var(--display);
  font-size: 20px;
  font-weight: 500;
  line-height: 1.25;
  color: var(--ink);
  margin-bottom: 10px;
  letter-spacing: -0.005em;
}
.ceremony-segment .seg-topic {
  font-size: 13px;
  line-height: 1.55;
  color: var(--muted);
  font-style: italic;
  margin-bottom: 14px;
  padding-left: 12px;
  border-left: 2px solid var(--accent);
}
.ceremony-segment .seg-pending {
  font-size: 13px;
  font-style: italic;
  color: var(--muted-2);
  padding: 10px 14px;
  background: var(--paper);
  border: 1px dashed var(--line);
  border-radius: 4px;
}

/* =================================================================
   SPEAKERS GRID
   ================================================================= */
.speakers {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 10px 20px;
  margin-top: 14px;
  padding-top: 14px;
  border-top: 1px solid var(--line);
  position: relative;
}
.speakers::before {
  content: 'Panel Speakers';
  position: absolute;
  top: -8px;
  left: 0;
  background: var(--paper-2);
  padding: 0 10px 0 0;
  font-size: 10px;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  font-weight: 700;
  color: var(--accent);
}
.session-segment-title + .speakers::before { display: none; }
.session-segment-title + .speakers { margin-top: 4px; padding-top: 0; border-top: none; }
.ceremony-segment .speakers { margin-top: 4px; padding-top: 0; border-top: none; }
.ceremony-segment .speakers::before { display: none; }
.speakers:empty { display: none; }

.speaker {
  padding: 6px 0 6px 14px;
  border-left: 2px solid var(--accent-soft);
  transition: border-color 0.3s var(--ease);
}
.speaker:hover { border-left-color: var(--accent); }
.speaker.is-chair {
  grid-column: 1 / -1;
  padding-top: 8px;
  margin-top: 4px;
  border-top: 1px dashed var(--line);
  border-left-color: var(--accent);
  border-left-width: 3px;
}
.speaker.is-chair .speaker-name { color: var(--accent-deep); }

.speaker-name {
  font-size: 13.5px;
  font-weight: 600;
  color: var(--ink);
  line-height: 1.3;
  margin-bottom: 2px;
  word-wrap: break-word;
  overflow-wrap: break-word;
}
.speaker-name .proposed {
  font-weight: 400;
  font-style: italic;
  color: var(--muted-2);
  font-size: 11px;
  margin-left: 4px;
  white-space: nowrap;
}
.speaker-meta {
  font-size: 11.5px;
  color: var(--muted);
  line-height: 1.4;
  word-wrap: break-word;
  overflow-wrap: break-word;
}
.chair-badge {
  display: inline-block;
  font-size: 9px;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  font-weight: 700;
  color: var(--accent);
  margin-right: 8px;
  padding: 2px 6px;
  background: var(--accent-soft);
  border-radius: 3px;
  vertical-align: 1px;
}

.session-segment-title {
  font-family: var(--display);
  font-weight: 500;
  font-size: 15px;
  line-height: 1.3;
  letter-spacing: -0.005em;
  color: var(--ink);
  margin-bottom: 4px;
  margin-top: 18px;
}

/* =================================================================
   AWARD BLOCK
   ================================================================= */
.award-block {
  background: linear-gradient(135deg, var(--cream) 0%, var(--paper-2) 100%);
  border: 1px solid var(--gold-soft);
  border-radius: 6px;
  padding: 20px 24px;
  display: flex;
  align-items: center;
  gap: 18px;
}
.award-icon {
  width: 48px; height: 48px;
  border-radius: 50%;
  background: var(--gold);
  color: white;
  display: grid;
  place-items: center;
  flex-shrink: 0;
}
.award-icon svg { width: 24px; height: 24px; }
.award-text { font-size: 13px; line-height: 1.55; color: var(--muted); font-style: italic; }
.award-text strong { display: block; font-style: normal; color: var(--ink); font-size: 14px; font-weight: 600; margin-bottom: 2px; }

/* =================================================================
   LUNCH BAND
   ================================================================= */
.lunch-band {
  margin: 36px 0 24px;
  padding: 22px 36px;
  background: linear-gradient(135deg, var(--cream) 0%, var(--paper-2) 100%);
  border: 1px solid var(--line);
  border-radius: 6px;
  display: flex;
  justify-content: space-between;
  align-items: center;
  position: relative;
  overflow: hidden;
}
.idct2026-app.js-enabled .lunch-band {
  opacity: 0;
  transform: translateY(30px);
  transition: opacity 0.8s var(--ease), transform 0.8s var(--ease);
}
.idct2026-app.js-enabled .lunch-band.visible { opacity: 1; transform: translateY(0); }
.lunch-band::before {
  content: '';
  position: absolute; inset: 0;
  background: radial-gradient(ellipse at top right, var(--gold-glow), transparent 60%);
  pointer-events: none;
}
.lunch-band .label { font-size: 10.5px; letter-spacing: 0.26em; text-transform: uppercase; color: var(--gold); font-weight: 700; margin-bottom: 4px; }
.lunch-band .title { font-family: var(--display); font-weight: 400; font-size: 24px; letter-spacing: -0.015em; color: var(--ink); }
.lunch-band .title em { font-style: italic; }
.lunch-band .time-text { font-family: var(--display); font-style: italic; font-size: 17px; color: var(--muted); }

/* =================================================================
   BREAK BAND
   ================================================================= */
.break-band {
  margin: 8px 0 14px;
  padding: 6px 14px 6px 22px;
  display: flex; align-items: center; gap: 12px;
  position: relative;
  color: var(--muted); font-size: 11.5px; letter-spacing: 0.04em;
}
.break-band::before {
  content: '';
  position: absolute; left: 0; top: 50%;
  width: 6px; height: 6px;
  border-radius: 50%;
  background: var(--gold-soft);
  transform: translateY(-50%);
  opacity: 0.7;
}
.break-band .break-label { font-size: 9.5px; letter-spacing: 0.22em; text-transform: uppercase; font-weight: 700; color: var(--gold); }
.break-band .break-text { font-family: var(--display); font-style: italic; font-size: 13px; color: var(--muted); }
.break-band .break-time { margin-left: auto; font-family: var(--display); font-style: italic; font-size: 12px; color: var(--muted-2); }
.idct2026-app.js-enabled .break-band { opacity: 0; transform: translateY(8px); transition: opacity 0.6s var(--ease), transform 0.6s var(--ease); }
.idct2026-app.js-enabled .break-band.visible { opacity: 1; transform: translateY(0); }
.break-band.is-hidden { display: none; }

/* =================================================================
   DAY TABS
   ================================================================= */
.day-tabs {
  display: grid;
  grid-template-columns: repeat(3, 1fr) auto;
  gap: 8px;
  margin-bottom: 14px;
  padding-bottom: 14px;
  border-bottom: 1px solid var(--line);
  align-items: stretch;
}
.day-tab {
  position: relative;
  padding: 10px 14px 9px;
  background: transparent;
  border: 1px solid var(--line);
  border-radius: 6px;
  cursor: pointer;
  font-family: var(--body);
  text-align: left;
  display: flex; flex-direction: column; gap: 2px;
  transition: background 0.3s var(--ease), border-color 0.3s var(--ease);
  overflow: hidden;
}
.day-tab::before {
  content: '';
  position: absolute; left: 0; top: 0; bottom: 0;
  width: 3px; background: transparent;
  transition: background 0.3s var(--ease);
}
.day-tab:hover { border-color: var(--gold-soft); }
.day-tab:hover::before { background: var(--gold-soft); }
.day-tab.active { background: var(--ink); border-color: var(--ink); color: var(--paper); }
.day-tab.active::before { background: var(--gold); }
.day-tab-num { font-family: var(--display); font-style: italic; font-weight: 400; font-size: 12px; color: var(--gold); letter-spacing: 0.04em; }
.day-tab-meta { font-size: 9px; letter-spacing: 0.18em; text-transform: uppercase; color: var(--muted-2); font-weight: 600; }
.day-tab.active .day-tab-meta { color: var(--gold-soft); }
.day-tab-label { font-family: var(--display); font-weight: 500; font-size: 14px; letter-spacing: -0.005em; color: var(--ink); line-height: 1.15; margin-top: 1px; }
.day-tab.active .day-tab-label { color: var(--paper); }

.day-content { display: none; }
.day-content.active { display: block; }

/* =================================================================
   FLOATING DAY INDICATOR
   ================================================================= */
.day-indicator {
  position: fixed;
  top: calc(16px + var(--wp-admin-bar-height, 0px));
  left: 50%;
  transform: translateX(-50%) translateY(-80px);
  z-index: 9998;
  background: var(--ink);
  color: var(--paper);
  padding: 9px 18px 9px 14px;
  border-radius: 100px;
  display: flex; align-items: center; gap: 10px;
  font-family: var(--body); font-size: 13px; font-weight: 500;
  box-shadow: 0 12px 32px -8px rgba(14,21,37,0.45), 0 0 0 1px rgba(255,255,255,0.06) inset;
  opacity: 0;
  transition: transform 0.45s var(--ease), opacity 0.35s var(--ease);
  pointer-events: none;
  white-space: nowrap;
  cursor: pointer;
}
.day-indicator.is-visible { transform: translateX(-50%) translateY(0); opacity: 1; pointer-events: auto; }
.day-indicator::before { content: ''; width: 8px; height: 8px; border-radius: 50%; background: var(--gold); box-shadow: 0 0 0 3px rgba(184,146,59,0.25); flex-shrink: 0; }
.day-indicator-num { font-family: var(--display); font-style: italic; font-size: 14px; color: var(--gold-soft); }
.day-indicator-divider { width: 1px; height: 14px; background: rgba(255,255,255,0.20); }
.day-indicator-label { color: var(--paper); }
.day-indicator-meta { font-size: 11px; color: var(--muted-2); letter-spacing: 0.04em; }
.day-indicator-arrow { color: var(--gold-soft); margin-left: 4px; transition: transform 0.2s var(--ease); }
.day-indicator:hover .day-indicator-arrow { transform: translateY(-1px); }

/* =================================================================
   FILTER BAR
   ================================================================= */
.filter-bar {
  position: relative;
  z-index: 100;
  background: rgba(255,255,255,0.96);
  backdrop-filter: saturate(180%) blur(12px);
  -webkit-backdrop-filter: saturate(180%) blur(12px);
  border-bottom: 1px solid var(--line);
  padding: 14px 24px 12px;
  box-sizing: border-box;
  margin-bottom: 32px;
}
.filter-bar.is-stuck {
  box-shadow: 0 4px 20px -6px rgba(14,21,37,0.08);
  margin-bottom: 0;
}
.idct2026-app .filter-bar-spacer { display: none; width: 100%; }

.filter-row { display: flex; gap: 12px; align-items: center; margin-bottom: 12px; }
.filter-row:last-child { margin-bottom: 0; }
.filter-row-single { flex-wrap: nowrap; }
.filter-row-single .search-wrap { flex: 1 1 auto; min-width: 0; }
.filter-row-single .dropdown { flex: 0 0 auto; }
.filter-row-single .result-count { margin-left: auto; flex-shrink: 0; }
.filter-row-single .reset-btn { flex-shrink: 0; }

/* Search */
.search-wrap { position: relative; flex: 1; min-width: 0; }
.search-icon { position: absolute; left: 14px; top: 50%; transform: translateY(-50%); color: var(--muted-2); pointer-events: none; }
.search-input {
  width: 100%; padding: 11px 14px 11px 42px;
  border: 1px solid var(--line); border-radius: 6px;
  background: var(--paper); font-family: var(--body); font-size: 14px; color: var(--ink);
  transition: border-color 0.2s var(--ease), box-shadow 0.2s var(--ease);
}
.search-input::placeholder { color: var(--muted-2); }
.search-input:focus { outline: none; border-color: var(--gold); box-shadow: 0 0 0 3px rgba(184,146,59,0.15); }
.search-clear {
  position: absolute; right: 10px; top: 50%; transform: translateY(-50%);
  width: 22px; height: 22px; border-radius: 50%;
  background: var(--line); color: var(--muted); border: none; cursor: pointer;
  display: none; align-items: center; justify-content: center;
  font-size: 14px; line-height: 1;
  transition: background 0.2s var(--ease);
}
.search-clear:hover { background: var(--muted-2); color: white; }
.search-wrap.has-value .search-clear { display: flex; }

.result-count { font-size: 12px; color: var(--muted); font-weight: 500; white-space: nowrap; letter-spacing: 0.04em; }
.result-count strong { color: var(--ink); font-weight: 600; }
.result-breakdown { font-size: 11px; color: var(--muted-2); font-weight: 400; letter-spacing: 0.02em; margin-left: 4px; }

.reset-btn {
  padding: 8px 14px; border: 1px solid var(--line); background: transparent;
  color: var(--muted); border-radius: 100px; font-family: var(--body);
  font-size: 12px; font-weight: 500; letter-spacing: 0.04em; cursor: pointer;
  transition: all 0.2s var(--ease); white-space: nowrap;
}
.reset-btn:hover { border-color: var(--gold); color: var(--gold); }
.reset-btn:disabled { opacity: 0.4; cursor: not-allowed; }

/* Dropdowns */
.dropdown { position: relative; flex: 0 1 200px; max-width: 240px; min-width: 160px; }
.dropdown-trigger {
  width: 100%; display: flex; align-items: center; gap: 10px;
  padding: 10px 14px; border: 1px solid var(--line); background: var(--paper);
  border-radius: 6px; font-family: var(--body); font-size: 13px; color: var(--ink);
  cursor: pointer; transition: border-color 0.2s var(--ease), box-shadow 0.2s var(--ease); text-align: left;
}
.dropdown-trigger:hover { border-color: var(--ink-soft); }
.dropdown.is-open .dropdown-trigger,
.dropdown-trigger:focus-visible { outline: none; border-color: var(--gold); box-shadow: 0 0 0 3px rgba(184,146,59,0.15); }
.dropdown-label { font-size: 10px; letter-spacing: 0.18em; text-transform: uppercase; color: var(--muted-2); font-weight: 600; flex-shrink: 0; }
.dropdown-value { flex: 1; font-weight: 500; color: var(--ink); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.dropdown.has-selection .dropdown-value { color: var(--gold); font-weight: 600; }
.dropdown-chev { flex-shrink: 0; color: var(--muted-2); transition: transform 0.2s var(--ease); }
.dropdown.is-open .dropdown-chev { transform: rotate(180deg); }
.dropdown-menu {
  position: absolute; top: calc(100% + 4px); left: 0; right: 0;
  background: var(--paper); border: 1px solid var(--line); border-radius: 6px;
  box-shadow: 0 16px 40px -8px rgba(14,21,37,0.18); padding: 6px;
  z-index: 200; display: none; max-height: 320px; overflow-y: auto;
}
.dropdown.is-open .dropdown-menu { display: block; animation: dropdownIn 0.18s var(--ease); }
@keyframes dropdownIn { from { opacity: 0; transform: translateY(-4px); } to { opacity: 1; transform: translateY(0); } }
.dropdown-option {
  display: flex; align-items: center; gap: 10px;
  padding: 9px 12px; border-radius: 4px; cursor: pointer;
  font-size: 13px; color: var(--ink); transition: background 0.15s var(--ease); user-select: none;
}
.dropdown-option:hover { background: var(--line-soft); }
.dropdown-option input[type="checkbox"] { margin: 0; width: 14px; height: 14px; accent-color: var(--gold); cursor: pointer; flex-shrink: 0; }
.dropdown-option input[type="checkbox"]:checked + span { font-weight: 600; }

.stage-dot { width: 10px; height: 10px; border-radius: 50%; flex-shrink: 0; }
.stage-dot-proud  { background: var(--proud); }
.stage-dot-dialog { background: var(--dialog); }
.stage-dot-family { background: var(--family); }

/* Highlight */
mark { background: rgba(184,146,59,0.25); color: inherit; padding: 0 2px; border-radius: 2px; font-weight: inherit; }

/* Hidden / filtered states */
.session.is-hidden,
.timeblock.is-hidden,
.lunch-band.is-hidden { display: none; }
.session.is-dimmed { opacity: 0.25; pointer-events: none; }
.ceremony-segment.is-hidden { display: none; }

/* No results */
.no-results { display: none; text-align: center; padding: 60px 20px; color: var(--muted); }
.no-results.show { display: block; }
.no-results .icon { font-family: var(--display); font-style: italic; font-size: 48px; color: var(--gold); margin-bottom: 12px; }
.no-results .msg { font-family: var(--display); font-size: 22px; font-weight: 400; color: var(--ink); margin-bottom: 6px; }
.no-results .hint { font-size: 13px; color: var(--muted); }

/* =================================================================
   ATTENDEE INFORMATION
   ================================================================= */
.attendee-info { margin-top: 80px; padding-top: 56px; border-top: 1px solid var(--line); }
.info-header { margin-bottom: 32px; max-width: 720px; }
.info-eyebrow { font-size: 11px; letter-spacing: 0.28em; text-transform: uppercase; color: var(--gold); font-weight: 600; margin-bottom: 12px; }
.info-title { font-family: var(--display); font-weight: 300; font-size: clamp(28px, 3.5vw, 44px); line-height: 1.05; letter-spacing: -0.02em; color: var(--ink); font-variation-settings: "opsz" 144; margin-bottom: 16px; }
.info-title em { font-style: italic; color: var(--gold); font-weight: 400; }
.info-lede { font-size: 15px; line-height: 1.55; color: var(--muted); }

.pavilions-intro { margin: 36px 0 18px; padding-top: 28px; border-top: 1px solid var(--line); }
.pavilions-intro-eyebrow { font-size: 11px; letter-spacing: 0.24em; text-transform: uppercase; color: var(--gold); font-weight: 700; margin-bottom: 8px; }
.pavilions-intro-title { font-family: var(--display); font-weight: 400; font-size: clamp(22px, 2.6vw, 30px); line-height: 1.1; letter-spacing: -0.015em; color: var(--ink); margin: 0 0 16px; }
.pavilions-intro-title em { font-style: italic; color: var(--gold); font-weight: 400; }
.attendee-info .stage-legend { margin-top: 0; margin-bottom: 28px; }

/* Floor plan toggle */
.floorplan-toggle {
  width: 100%; display: flex; align-items: center; gap: 14px;
  padding: 18px 24px; background: var(--ink); color: var(--paper);
  border: none; border-radius: 8px; font-family: var(--body); font-size: 15px; font-weight: 500;
  cursor: pointer; transition: background 0.3s var(--ease), transform 0.3s var(--ease); margin-bottom: 16px;
}
.floorplan-toggle:hover { background: var(--ink-soft); transform: translateY(-1px); }
.floorplan-toggle .floorplan-icon { color: var(--gold-soft); }
.floorplan-toggle-text { flex: 1; text-align: left; }
.floorplan-chev { transition: transform 0.3s var(--ease); color: var(--gold-soft); }
.floorplan-toggle[aria-expanded="true"] .floorplan-chev { transform: rotate(180deg); }
.floorplan-panel { overflow: hidden; margin-bottom: 32px; animation: floorplanIn 0.4s var(--ease); }
@keyframes floorplanIn { from { opacity: 0; transform: translateY(-8px); } to { opacity: 1; transform: translateY(0); } }
.floorplan-panel[hidden] { display: none; }
.floorplan-image-wrap { border: 1px solid var(--line); border-radius: 8px; overflow: hidden; background: var(--paper-2); }
.floorplan-placeholder { padding: 80px 32px; text-align: center; color: var(--muted); }
.floorplan-placeholder svg { color: var(--line); margin-bottom: 16px; }
.floorplan-placeholder-title { font-family: var(--display); font-size: 22px; font-weight: 400; color: var(--ink); margin-bottom: 8px; }
.floorplan-placeholder-text { font-size: 14px; line-height: 1.55; max-width: 480px; margin: 0 auto; }

/* Info grid */
.info-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 16px; }
.info-card {
  background: var(--paper-2); border: 1px solid var(--line); border-radius: 6px; padding: 24px;
  transition: transform 0.4s var(--ease), box-shadow 0.4s var(--ease), border-color 0.4s var(--ease);
}
.info-card:hover { transform: translateY(-3px); box-shadow: 0 16px 40px -16px rgba(14,21,37,0.10); border-color: var(--gold-soft); }
.info-card-icon { width: 40px; height: 40px; border-radius: 8px; background: rgba(184,146,59,0.10); color: var(--gold); display: grid; place-items: center; margin-bottom: 14px; }
.info-card h3 { font-family: var(--display); font-weight: 500; font-size: 17px; letter-spacing: -0.005em; color: var(--ink); margin-bottom: 8px; line-height: 1.25; }
.info-card p { font-size: 13px; line-height: 1.55; color: var(--muted); }
.info-card p strong { color: var(--ink); font-weight: 600; }

/* =================================================================
   CTA SECTION
   ================================================================= */
.cta-section { margin-top: 64px; }
.cta-card {
  position: relative; background: var(--ink); color: var(--paper);
  border-radius: 12px; padding: 56px clamp(32px, 5vw, 72px); overflow: hidden; isolation: isolate;
}
.cta-card::before {
  content: ''; position: absolute; inset: 0;
  background: radial-gradient(ellipse 60% 80% at 100% 0%, rgba(184,146,59,0.20), transparent 60%),
              radial-gradient(ellipse 50% 80% at 0% 100%, rgba(44,54,128,0.30), transparent 60%);
  z-index: -1;
}
.cta-glyph { position: absolute; right: -40px; top: 50%; transform: translateY(-50%); font-family: var(--display); font-weight: 200; font-size: 320px; line-height: 1; color: rgba(184,146,59,0.06); pointer-events: none; user-select: none; z-index: -1; }
.cta-content { max-width: 640px; position: relative; z-index: 1; }
.cta-eyebrow { font-size: 11px; letter-spacing: 0.28em; text-transform: uppercase; color: var(--gold); font-weight: 600; margin-bottom: 12px; }
.cta-title { font-family: var(--display); font-weight: 300; font-size: clamp(32px, 4.5vw, 56px); line-height: 1; letter-spacing: -0.025em; margin-bottom: 16px; font-variation-settings: "opsz" 144; }
.cta-title em { font-style: italic; color: var(--gold-soft); font-weight: 400; }
.cta-text { font-size: 15px; line-height: 1.6; color: var(--cream); margin-bottom: 28px; font-family: var(--display); font-style: italic; font-weight: 400; }
.cta-button {
  display: inline-flex; align-items: center; gap: 12px;
  padding: 16px 28px; background: var(--gold); color: var(--ink);
  border-radius: 100px; font-family: var(--body); font-size: 14px; font-weight: 600;
  letter-spacing: 0.04em; text-decoration: none;
  transition: transform 0.3s var(--ease), box-shadow 0.3s var(--ease), background 0.3s var(--ease); white-space: nowrap;
}
.cta-button:hover { background: var(--gold-soft); transform: translateY(-2px); box-shadow: 0 16px 40px -8px rgba(184,146,59,0.4); }
.cta-button svg { transition: transform 0.3s var(--ease); }
.cta-button:hover svg { transform: translateX(4px); }

/* =================================================================
   FOOTER
   ================================================================= */
.foot { margin-top: 56px; padding-top: 32px; border-top: 1px solid var(--line); text-align: center; }
.foot .end-mark { font-family: var(--display); font-style: italic; font-weight: 400; font-size: 18px; color: var(--gold); margin-bottom: 8px; }
.foot .org { font-size: 11px; letter-spacing: 0.20em; text-transform: uppercase; color: var(--muted-2); font-weight: 500; }

/* =================================================================
   RESPONSIVE
   ================================================================= */
@media (max-width: 900px) {
  .wrap { padding: 32px 24px 48px; }
  .stage-legend { grid-template-columns: 1fr; gap: 12px; }
  .day-tabs { gap: 6px; margin-bottom: 12px; padding-bottom: 12px; }
  .day-tab { padding: 8px 10px 7px; }
  .day-tab-num { font-size: 11px; }
  .day-tab-meta { font-size: 8px; }
  .day-tab-label { font-size: 12px; line-height: 1.1; }
  .prog-header { flex-direction: column; align-items: flex-start; gap: 16px; }
  .prog-header-right { text-align: left; }
  .ceremony-segment { grid-template-columns: 1fr; gap: 8px; }
  .ceremony-segment .num { font-size: 24px; }
  .lunch-band { flex-direction: column; align-items: flex-start; gap: 14px; }
  .time-marker { flex-wrap: wrap; }
  .time-marker .meta { margin-left: 0; text-align: left; }
  .speakers { grid-template-columns: 1fr; }
  .filter-bar { margin: 0 -24px 28px; padding: 14px 24px 12px; }
  .filter-row { flex-wrap: wrap; gap: 10px; }
  .filter-row-single { flex-wrap: wrap; }
  .filter-row-single .search-wrap { flex: 1 1 100%; }
  .filter-row-single .result-count { margin-left: 0; }
  .dropdown { flex: 1 1 calc(50% - 4px); min-width: 0; max-width: none; }
  .session-header { padding: 10px 18px; }
  .session-header-top, .session-header-bottom { flex-direction: column; align-items: flex-start; gap: 2px; }
  .session-body { padding: 18px 20px 20px; }
  .info-grid { grid-template-columns: 1fr; gap: 12px; }
  .info-card { padding: 20px; }
  .floorplan-toggle { padding: 14px 18px; font-size: 14px; }
  .cta-card { padding: 36px 28px; }
  .cta-glyph { font-size: 200px; right: -30px; }
  .day-indicator { top: 12px; padding: 8px 14px 8px 12px; font-size: 12px; max-width: calc(100vw - 24px); }
  .day-indicator-meta { display: none; }
  .parallel-grid { grid-template-columns: 1fr; }
}
@media (max-width: 720px) {
  .info-grid { grid-template-columns: 1fr; }
  .parallel-grid .speakers { grid-template-columns: 1fr !important; }
}
@media (max-width: 480px) {
  .day-tab-meta { display: none; }
  .day-tab-label { font-size: 11px; }
  .day-tab { padding: 7px 6px; }
}
@media (min-width: 901px) and (max-width: 1100px) {
  .info-grid { grid-template-columns: repeat(2, 1fr); }
}
@media (min-width: 721px) and (max-width: 900px) {
  .speakers { grid-template-columns: repeat(2, 1fr); }
}

/* =================================================================
   PRINT
   ================================================================= */
@page { size: A4 portrait; margin: 12mm 12mm; }
@media print {
  .filter-bar, .no-results, .attendee-info, .cta-section, .day-tabs { display: none !important; }
  .day-content { display: none !important; }
  .day-content.active { display: block !important; }
  html, .idct2026-app { background: white !important; color: black !important; -webkit-print-color-adjust: exact; print-color-adjust: exact; }
  .wrap { max-width: 100%; padding: 0; margin: 0; }
  .stage-legend { grid-template-columns: repeat(3, 1fr) !important; gap: 8px !important; margin-bottom: 18mm; }
  .prog-header { flex-direction: row !important; align-items: flex-end !important; margin-bottom: 14mm; padding-bottom: 4mm; }
  .prog-header-right { text-align: right !important; }
  *, *::before, *::after { animation: none !important; transition: none !important; transform: none !important; opacity: 1 !important; }
  .session:not(.featured), .stage-card, .lunch-band { page-break-inside: avoid; break-inside: avoid; }
  .session.featured { page-break-inside: auto; break-inside: auto; }
  .ceremony-segment { page-break-inside: avoid; break-inside: avoid; }
  .time-marker { page-break-after: avoid; break-after: avoid; }
  .timeblock { margin-bottom: 14mm; }
  .session { margin-bottom: 4mm; }
  .session-body { padding: 14px 18px !important; }
  .parallel-grid { display: flex !important; flex-direction: column !important; gap: 6mm !important; }
  .speakers { grid-template-columns: repeat(3, 1fr) !important; gap: 4px 10px !important; }
  .speaker.is-chair { grid-column: 1 / -1 !important; }
  .lunch-band { padding: 14px 22px !important; margin: 8mm 0 6mm !important; }
  .idct2026-app { font-size: 10.5pt; }
  .session-title { font-size: 13pt !important; line-height: 1.2 !important; margin-bottom: 8px !important; }
  .session.featured .session-title { font-size: 18pt !important; }
  .time-marker .pulse { box-shadow: none !important; }
  .session-header, .award-icon, .stage-card { -webkit-print-color-adjust: exact !important; print-color-adjust: exact !important; }
}

/* =================================================================
   GOOGLE MATERIAL SYMBOLS — icon base styles
   ================================================================= */
.material-symbols-outlined {
  font-family: 'Material Symbols Outlined', sans-serif;
  font-weight: normal;
  font-style: normal;
  font-size: 20px;
  line-height: 1;
  letter-spacing: normal;
  text-transform: none;
  display: inline-block;
  white-space: nowrap;
  word-wrap: normal;
  direction: ltr;
  -webkit-font-smoothing: antialiased;
  color: inherit;
  vertical-align: middle;
  user-select: none;
}

/* Rotate icon when floorplan/dropdown is open */
.floorplan-toggle[aria-expanded="true"] .floorplan-chev {
  transform: rotate(180deg);
  display: inline-block;
  transition: transform 0.3s var(--ease);
}
.dropdown.is-open .dropdown-chev {
  transform: rotate(180deg);
}

/* Day indicator arrow transition */
.day-indicator-arrow {
  transition: transform 0.2s var(--ease);
}
.day-indicator:hover .day-indicator-arrow {
  transform: translateY(-2px);
}

/* CTA button arrow transition */
.cta-button .material-symbols-outlined {
  transition: transform 0.3s var(--ease);
}
.cta-button:hover .material-symbols-outlined {
  transform: translateX(4px);
}

/* Award icon inside .award-icon circle */
.award-icon .material-symbols-outlined {
  font-size: 24px;
  color: white;
}

/* Info card icons */
.info-card-icon .material-symbols-outlined {
  font-size: 22px;
  color: var(--gold);
}

/* =================================================================
   SCIENTIFIC AGENDA TAB
   ================================================================= */

/* Scientific tab — distinctive styling */
.day-tab--scientific {
  border: 1.5px solid var(--scientific);
  background: var(--scientific-soft);
  min-width: 140px;
  position: relative;
}
.day-tab--scientific::after {
  content: 'NEW';
  position: absolute;
  top: -1px;
  right: -1px;
  font-size: 8px;
  font-weight: 700;
  letter-spacing: 0.12em;
  background: var(--scientific);
  color: white;
  padding: 2px 5px;
  border-radius: 0 4px 0 4px;
}
.day-tab--scientific::before {
  background: var(--scientific) !important;
}
.day-tab--scientific:hover {
  border-color: var(--scientific-deep) !important;
  background: rgba(90,95,110,0.12);
}
.day-tab--scientific.active {
  background: var(--scientific-deep) !important;
  border-color: var(--scientific-deep) !important;
}
.day-tab--scientific.active::after {
  background: var(--scientific-soft);
  color: var(--scientific-deep);
}
.day-tab--scientific .day-tab-num {
  color: var(--scientific);
  font-style: normal;
  font-family: var(--body);
  font-size: 10px;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  font-weight: 700;
}
.day-tab--scientific .day-tab-meta { color: var(--scientific); opacity: 0.7; }
.day-tab--scientific .day-tab-label { color: var(--scientific-deep); }
.day-tab--scientific.active .day-tab-num   { color: var(--scientific-soft); }
.day-tab--scientific.active .day-tab-meta  { color: var(--scientific-soft); opacity: 0.8; }
.day-tab--scientific.active .day-tab-label { color: white; }

/* Scientific session intro header */
.scientific-intro {
  margin-bottom: 36px;
  padding-bottom: 28px;
  border-bottom: 1px solid var(--line);
}

/* Day separator between date groups */
.scientific-day-separator {
  display: flex;
  align-items: center;
  gap: 16px;
  margin: 32px 0 20px;
}
.scientific-day-separator::before,
.scientific-day-separator::after {
  content: '';
  flex: 1;
  height: 1px;
  background: var(--line);
}
.scientific-day-label {
  font-family: var(--display);
  font-size: 13px;
  font-weight: 600;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--scientific);
  white-space: nowrap;
  padding: 4px 14px;
  border: 1px solid var(--scientific-soft);
  border-radius: 100px;
  background: var(--scientific-soft);
}

/* Responsive — stack tabs on smaller screens */
@media (max-width: 900px) {
  .day-tabs {
    grid-template-columns: repeat(2, 1fr);
  }
  .day-tab--scientific { min-width: unset; }
}
@media (max-width: 480px) {
  .day-tabs { grid-template-columns: repeat(2, 1fr); }
  .day-tab--scientific .day-tab-num { font-size: 9px; }
  .day-tab--scientific::after { display: none; }
}

/* Scientific Agenda — TBD empty state */
.scientific-tbd {
  text-align: center;
  padding: 80px 32px;
  border: 1px dashed var(--scientific-soft);
  border-radius: 8px;
  background: var(--scientific-soft);
  margin-top: 32px;
}
.scientific-tbd-icon .material-symbols-outlined {
  font-size: 56px;
  color: var(--scientific);
  opacity: 0.4;
  margin-bottom: 16px;
  display: block;
}
.scientific-tbd-title {
  font-family: var(--display);
  font-size: clamp(22px, 2.5vw, 30px);
  font-weight: 500;
  color: var(--ink);
  margin-bottom: 12px;
  line-height: 1.2;
}
.scientific-tbd-title em {
  font-style: italic;
  color: var(--scientific);
}
.scientific-tbd-text {
  font-size: 14px;
  line-height: 1.6;
  color: var(--muted);
  max-width: 480px;
  margin: 0 auto;
}

/* =================================================================
   BACK TO WEBSITE BAR
   ================================================================= */
.back-bar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  margin-bottom: 32px;
  padding: 10px 0;
  border-bottom: 1px solid var(--line);
}

.back-btn {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 9px 18px 9px 12px;
  background: var(--ink);
  color: var(--paper);
  border-radius: 100px;
  font-family: var(--body);
  font-size: 13px;
  font-weight: 600;
  letter-spacing: 0.04em;
  text-decoration: none;
  transition: background 0.25s var(--ease), transform 0.25s var(--ease), box-shadow 0.25s var(--ease);
  white-space: nowrap;
}
.back-btn:hover {
  background: var(--proud);
  transform: translateX(-3px);
  box-shadow: 0 8px 24px -6px rgba(184,36,58,0.35);
  color: var(--paper);
  text-decoration: none;
}
.back-btn-arrow {
  font-size: 18px;
  line-height: 1;
  transition: transform 0.25s var(--ease);
}
.back-btn:hover .back-btn-arrow {
  transform: translateX(-3px);
}

.back-bar-right {
  display: flex;
  align-items: center;
  gap: 10px;
}
.back-bar-label {
  font-size: 11px;
  letter-spacing: 0.20em;
  text-transform: uppercase;
  color: var(--muted-2);
  font-weight: 600;
}

@media (max-width: 600px) {
  .back-bar-right { display: none; }
  .back-btn-text  { display: none; }
  .back-btn { padding: 9px 12px; border-radius: 50%; }
}