/*--------------------------------------------------------------
# Program Schedule Table
# Scoped under .program-schedule to avoid conflicts with main styles.
# Can be linked from index.html and any future standalone schedule page.
--------------------------------------------------------------*/

.program-schedule table {
  border-collapse: collapse;
  width: 100%;
  table-layout: fixed;
}

/* Column widths proportional to spreadsheet: A=100, B=200, C=200, D=200, E=130 */
.program-schedule col.col-time     { width: 13.5%; }
.program-schedule col.col-sessA    { width: 27%;   }
.program-schedule col.col-sessB    { width: 27%;   }
.program-schedule col.col-sessC    { width: 27%;   }
.program-schedule col.col-location { width: 17.5%; }

.program-schedule td,
.program-schedule th {
  border: 1px solid #000;
  padding: 6px 8px;
  vertical-align: middle;
  font-size: 11pt;
  text-align: center;
  box-sizing: border-box;
}

/* Title rows — no side borders */
.program-schedule .title-row td {
  border-left: none;
  border-right: none;
  border-top: none;
  border-bottom: none;
}
.program-schedule .title-row.bottom-border td {
  border-bottom: 1px solid #000;
}

/* Spacer rows */
.program-schedule .spacer td {
  border: none;
  padding: 0;
}

/* Day header */
.program-schedule .day-header td {
  background-color: #B4C6E7;
  color: #1F4E79;
  font-weight: bold;
  font-size: 14pt;
}

/* Column header */
.program-schedule .col-header td,
.program-schedule .col-header th {
  background-color: #4472C4;
  color: #fff;
  font-weight: bold;
}

/* Session colors */
.program-schedule .sess-a { background-color: #E2EFDA; text-align: left; }
.program-schedule .sess-b { background-color: #FCE4D6; text-align: left; }
.program-schedule .sess-c { background-color: #DDEBF7; text-align: left; }

/* Keynote */
.program-schedule .keynote { background-color: #FFF2CC; font-weight: bold; }
.program-schedule .keynote-span { background-color: #FFF2CC; }

/* Break / Lunch */
.program-schedule .break { background-color: #EDEDED; }

/* Regular centered */
.program-schedule .time-cell { text-align: center; white-space: nowrap; }
.program-schedule .loc-cell  { text-align: center; }
.program-schedule .center    { text-align: center; }

/* Multiline cells */
.program-schedule .multiline { white-space: pre-line; }

/* Responsive: smaller text + horizontal scroll on small screens */
@media (max-width: 768px) {
  .program-schedule {
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
  }

  /* Wrapper provides overlay gradients that sit on top of cell backgrounds */
  .program-schedule-wrap {
    position: relative;
  }
  .program-schedule-wrap::before,
  .program-schedule-wrap::after {
    content: '';
    position: absolute;
    top: 0;
    bottom: 0;
    width: 24px;
    pointer-events: none;
    z-index: 1;
    opacity: 0;
    transition: opacity 0.2s;
  }
  /* Right edge gradient — visible by default */
  .program-schedule-wrap::after {
    right: 0;
    background: linear-gradient(to left, rgba(0,0,0,0.1), transparent);
    opacity: 1;
  }
  /* Left edge gradient — visible when scrolled away from start */
  .program-schedule-wrap::before {
    left: 0;
    background: linear-gradient(to right, rgba(0,0,0,0.1), transparent);
  }
  .program-schedule-wrap.scrolled-start::before { opacity: 1; }
  .program-schedule-wrap.scrolled-end::after { opacity: 0; }

  .program-schedule table {
    min-width: 600px;
  }

  /* Tighter cells on mobile */
  .program-schedule td,
  .program-schedule th {
    font-size: 9pt;
    padding: 4px 5px;
  }

  .program-schedule .day-header td {
    font-size: 11pt;
  }

  .program-schedule .col-header td,
  .program-schedule .col-header th {
    font-size: 9pt;
  }
}
