/* =====================================================
********************************************************

Program
<main id="program-page" class="main">

********************************************************
===================================================== */

#program-page .program-table {
  margin-top: clamp(2rem, 0.636rem + 2.182vw, 5rem);
  background-color: #fff;
  overflow-x: auto;
  cursor: grab;
  user-select: none;
  border: 1px solid #000;
}

#program-page .program-table.is-dragging {
  cursor: grabbing;
}

#program-page .program-table table {
  table-layout: fixed;
  width: clamp(125rem, 2.500rem + 155vw, 462.5rem);
  border-collapse: collapse;
  border: 1px solid #000;
  font-size: clamp(0.593rem, 0.012rem + 0.744vw, 1.5rem);
  font-weight: bold;
}

#program-page .program-table td,
#program-page .program-table th {
  padding: clamp(0.494rem, 0.010rem + 0.62vw, 1.25rem);
  border: none;
  vertical-align: top;
  text-align: left;
}

#program-page .program-table tr:first-child th {
  border-bottom: 1px solid #000;
}

#program-page .program-table tr:nth-child(4) td,
#program-page .program-table tr:nth-child(4) th,
#program-page .program-table tr:nth-child(5) td,
#program-page .program-table tr:nth-child(5) th {
  border-bottom: 1px solid #fff;
}

#program-page .program-table tr:nth-child(2) td:not(.program-table__side-event):not(.program-table__exhibition-hall),
#program-page .program-table tr:nth-child(4) td:not(.program-table__side-event):not(.program-table__exhibition-hall),
#program-page .program-table tr:nth-child(5) td:not(.program-table__side-event):not(.program-table__exhibition-hall) {
  padding-top: clamp(3.75rem, 0.075rem + 4.65vw, 9.375rem);
  padding-bottom: clamp(6.5rem, 0.130rem + 8.06vw, 16.25rem);
  padding-left: clamp(2.5rem, 0.050rem + 3.1vw, 6.25rem);
  padding-right: clamp(2.5rem, 0.050rem + 3.1vw, 6.25rem);
}

#program-page .program-table th {
  font-size: clamp(1.6rem, 0.032rem + 1.984vw, 4rem);
  vertical-align: middle;
  text-align: center;
}

#program-page .program-table__day,
#program-page .program-table__time {
  text-align: center;
  vertical-align: middle;
  white-space: nowrap;
}

/* Column 1 - 400px at 3200px */
#program-page .program-table tr td:nth-child(1),
#program-page .program-table tr th:nth-child(1) {
  background-color: #9C9C9C;
  color: #fff;
  width: clamp(10rem, 0.200rem + 12.4vw, 25rem);
}

/* Column 2 - 1100px at 3200px */
#program-page .program-table tr td:nth-child(2),
#program-page .program-table tr th:nth-child(2) {
  background-color: #AF1400;
  color: #fff;
  width: clamp(27.5rem, 0.550rem + 34.1vw, 68.75rem);
}

/* Column 3 - 1100px at 3200px */
#program-page .program-table tr td:nth-child(3),
#program-page .program-table tr th:nth-child(3) {
  background-color: #9B553B;
  color: #fff;
  width: clamp(27.5rem, 0.550rem + 34.1vw, 68.75rem);
}

/* Column 4 - 1100px at 3200px */
#program-page .program-table tr td:nth-child(4),
#program-page .program-table tr th:nth-child(4) {
  background-color: #677F33;
  color: #fff;
  width: clamp(27.5rem, 0.550rem + 34.1vw, 68.75rem);
}

/* Column 5 - 1100px at 3200px */
#program-page .program-table tr td:nth-child(5),
#program-page .program-table tr th:nth-child(5) {
  background-color: #8D8836;
  color: #fff;
  width: clamp(27.5rem, 0.550rem + 34.1vw, 68.75rem);
}

/* Column 6 - 1100px at 3200px */
#program-page .program-table tr td:nth-child(6),
#program-page .program-table tr th:nth-child(6) {
  background-color: #2C4D54;
  color: #fff;
  width: clamp(27.5rem, 0.550rem + 34.1vw, 68.75rem);
}

/* Column 7 - 750px at 3200px */
#program-page .program-table tr td:nth-child(7),
#program-page .program-table tr th:nth-child(7) {
  background-color: #D9D9D9;
  color: #000;
  width: clamp(18.75rem, 0.375rem + 23.25vw, 46.875rem);
}

/* Column 8 - 750px at 3200px */
#program-page .program-table tr td:nth-child(8),
#program-page .program-table tr th:nth-child(8) {
  background-color: #D9D9D9;
  color: #000;
  width: clamp(18.75rem, 0.375rem + 23.25vw, 46.875rem);
}

#program-page .program-table__list {
  list-style: none;
  padding: 0;
  margin: 0;
  display: flex;
  flex-direction: column;
  gap: clamp(0.75rem, 0.015rem + 0.93vw, 1.875rem);
  position: relative;
  z-index: 0;
  width: 100%;
}

#program-page .program-table__list li {
  background-color: #fff;
  color: #000;
  padding: clamp(0.8rem, 0.016rem + 0.992vw, 2rem) clamp(0.5rem, 0.004rem + 0.62vw, 1.25rem);
  font-size: clamp(1rem, 0.020rem + 1.24vw, 2.5rem);
  line-height: 1.4;
}

#program-page .program-table__side-event {
  vertical-align: middle;
  text-align: center;
  padding: 0 clamp(0.95rem, 0.019rem + 1.178vw, 2.375rem);
}

#program-page .program-table__exhibition-hall {
  vertical-align: middle;
  text-align: center;
  padding: 0 clamp(0.95rem, 0.019rem + 1.178vw, 2.375rem);
  border-left: 1px solid #000;
}

#program-page .program-table__side-event-inner {
  display: flex;
  align-items: center;
  justify-content: center;
  height: 100%;
}

#program-page .program-table__side-event-link {
  display: inline-block;
  background-color: #fff;
  color: #000;
  padding: clamp(0.8rem, 0.016rem + 0.992vw, 2rem) clamp(0.5rem, 0.004rem + 0.62vw, 1.25rem);
  font-size: clamp(1rem, 0.020rem + 1.24vw, 2.5rem);
  line-height: 1.4;
  text-decoration: none;
  margin: auto;
  width: 100%;
  text-align: center;
  border-radius: 9999px;
  transition: opacity 0.3s;
}

#program-page .program-table__side-event-link:hover {
  opacity: 0.7;
}

#program-page .program-table__room-label,
#program-page .program-table__day-label {
  font-weight: normal;
  padding-right: 0.5rem;
}

#program-page .program-table__bridge td {
  padding: 0 clamp(2.5rem, 0.050rem + 3.1vw, 6.25rem);
  position: relative;
  vertical-align: middle;
}
#program-page .program-table__bridge td.program-table__side-event::before,
#program-page .program-table__bridge td.program-table__exhibition-hall::before {
  content: none;
}
#program-page .program-table__bridge td::before {
  content: "";
  position: absolute;
  top: 50%;
  left: 0;
  right: 0;
  border-top: 1px solid #fff;
}
#program-page .program-table__bridge th {
  position: relative;
}
#program-page .program-table__bridge th::before {
  content: "";
  position: absolute;
  top: 50%;
  left: 0;
  right: 0;
  border-top: 1px solid #fff;
}

#program-page .program-page {
  background-color: rgba(255, 255, 255, .9);
}

#program-page .program-page .title__container {
  background-color: transparent;
  padding-bottom: 0;
}

#program-page .program-page .content__inner {
  padding: 0;
  background-color: transparent;
}

/* Program Tab */
#program-page .program-tab {
  display: flex;
  justify-content: center;
  align-items: center;
  gap: clamp(1rem, 0.020rem + 1.24vw, 2.5rem);
  margin-bottom: clamp(1.5rem, 0.030rem + 1.86vw, 3.75rem);
}
#program-page .program-tab__btn {
  width: clamp(17.77rem, 0.36rem + 22.32vw, 45rem);
  padding: clamp(1.234rem, 0.025rem + 1.55vw, 3.125rem) clamp(1.5rem, 0.030rem + 1.86vw, 3.75rem);
  font-size: clamp(1.5rem, 0.030rem + 1.86vw, 3.75rem);
  font-weight: bold;
  background-color: #000;
  color: #fff;
  cursor: pointer;
  border-radius: 9999px;
  border: none;
  transition: background-color 0.3s, color 0.3s;
}
#program-page .program-tab__btn.is-active {
  background-color: var(--color-primary);
}
#program-page .program-tab__btn:hover {
  opacity: 0.8;
}
#program-page .program-tab__btn span {
  font-weight: normal;
}

/* Program Table Show/Hide */
#program-page .program-table {
  display: none;
}
#program-page .program-table.is-active {
  display: block;
}

/* Program Table Item */
#program-page .program-table__item-title {
  margin: 0;
}
#program-page .program-table--popup-enabled .program-table__item {
  cursor: pointer;
  transition: opacity 0.3s;
}
#program-page .program-table--popup-enabled .program-table__item:hover {
  opacity: 0.7;
}

/* Program Modal */
.program-modal {
  display: none;
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  z-index: 10000;
}
.program-modal.is-active {
  display: flex;
  align-items: center;
  justify-content: center;
}
.program-modal__overlay {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background-color: rgba(0, 0, 0, 0.6);
}
.program-modal__dialog {
  position: relative;
  background-color: #fff;
  max-width: 162.5rem;
  width: 81.25%;
  max-height: 85vh;
  overflow: hidden;
  display: flex;
  flex-direction: column;
  z-index: 1;
  animation: programModalFadeIn 0.3s ease;
}
.program-modal__dialog::before,
.program-modal__dialog::after {
  content: '';
  position: absolute;
  left: 0;
  width: 100%;
  height: clamp(1.6rem, 0.032rem + 1.984vw, 4rem);
  background: linear-gradient(to right, #9B553B 0% 25%, #677F33 25% 50%, #8D8836 50% 75%, #2C4D54 75% 100%);
}
.program-modal__dialog::before {
  top: 0;
}
.program-modal__dialog::after {
  bottom: 0;
}
@keyframes programModalFadeIn {
  from { opacity: 0; transform: translateY(20px); }
  to { opacity: 1; transform: translateY(0); }
}
.program-modal__close {
  position: absolute;
  top: calc(clamp(1.6rem, 0.032rem + 1.984vw, 4rem) + 0.75rem);
  right: 1rem;
  background: none;
  border: none;
  width: clamp(1.3rem, 0.026rem + 1.612vw, 3.25rem);
  height: clamp(1.3rem, 0.026rem + 1.612vw, 3.25rem);
  cursor: pointer;
  transition: opacity 0.3s;
}
.program-modal__close::before,
.program-modal__close::after {
  content: '';
  position: absolute;
  top: 50%;
  left: 50%;
  width: 100%;
  height: 2px;
  background-color: #333;
}
.program-modal__close::before {
  transform: translate(-50%, -50%) rotate(45deg);
}
.program-modal__close::after {
  transform: translate(-50%, -50%) rotate(-45deg);
}
.program-modal__close:hover {
  opacity: 0.6;
}
.program-modal__scroll {
  overflow-y: auto;
  padding: calc(clamp(1.6rem, 0.032rem + 1.984vw, 4rem) + clamp(2.5rem, 0.050rem + 3.1vw, 6.25rem)) clamp(3.25rem, 0.065rem + 4.03vw, 8.125rem);
}
.program-modal__title {
  font-size: clamp(1.2rem, 0.024rem + 1.488vw, 3rem);
  font-weight: bold;
  margin: 0 0 0.5em;
}
.program-modal__date {
  font-size: clamp(0.875rem, 0.0175rem + 1.085vw, 2.1875rem);
  color: #555;
  margin: 0 0 1.5em;
}
.program-modal__body {
  font-size: clamp(1rem, 0.020rem + 1.24vw, 2.5rem);
  line-height: 1.8;
}

/* Program SP */
@media only screen and (max-width: 768px) {
  #program-page .program-tab {
    gap: 10px;
  }
  #program-page .program-tab__btn {
    font-size: clamp(1rem, 0.286rem + 1.905vw, 1.25rem);
    padding: 10px;
  }
  #program-page .program-table tr td:nth-child(1),
  #program-page .program-table tr th:nth-child(1) {
    width: clamp(8rem, 0.160rem + 9.92vw, 20rem);
  }
  #program-page .program-table tr td:nth-child(2),
  #program-page .program-table tr th:nth-child(2),
  #program-page .program-table tr td:nth-child(3),
  #program-page .program-table tr th:nth-child(3),
  #program-page .program-table tr td:nth-child(4),
  #program-page .program-table tr th:nth-child(4),
  #program-page .program-table tr td:nth-child(5),
  #program-page .program-table tr th:nth-child(5),
  #program-page .program-table tr td:nth-child(6),
  #program-page .program-table tr th:nth-child(6) {
    width: clamp(22rem, 0.440rem + 27.28vw, 55rem);
  }
  #program-page .program-table tr td:nth-child(7),
  #program-page .program-table tr th:nth-child(7) {
    width: clamp(15rem, 0.300rem + 18.6vw, 37.5rem);
  }
  #program-page .program-table tr td:nth-child(8),
  #program-page .program-table tr th:nth-child(8) {
    width: clamp(15rem, 0.300rem + 18.6vw, 37.5rem);
  }
  #program-page .program-table tr:nth-child(2) td:not(.program-table__side-event):not(.program-table__exhibition-hall),
  #program-page .program-table tr:nth-child(4) td:not(.program-table__side-event):not(.program-table__exhibition-hall),
  #program-page .program-table tr:nth-child(5) td:not(.program-table__side-event):not(.program-table__exhibition-hall) {
    padding-top: clamp(1.875rem, 0.0375rem + 2.325vw, 4.6875rem);
    padding-bottom: clamp(3.25rem, 0.065rem + 4.03vw, 8.125rem);
    padding-left: clamp(1.25rem, 0.025rem + 1.55vw, 3.125rem);
    padding-right: clamp(1.25rem, 0.025rem + 1.55vw, 3.125rem);
  }
  #program-page .program-table th {
    font-size: clamp(1.25rem, 0.012rem + 0.744vw, 1.5rem);
  }
  #program-page .program-table__bridge td {
    padding: 0 clamp(1.25rem, 0.025rem + 1.55vw, 3.125rem);
  }
}

/* ================================================================
   Program Grid Layout (style-grid.css)
   table -> CSS Grid (div) conversion
   ================================================================ */

/* Grid container */
.program-grid {
  display: grid;
  font-size: clamp(0.593rem, 0.012rem + 0.744vw, 1.5rem);
  font-weight: bold;
}

/* 8-column layout (EN Day1/Day2, JA Day1/Day2) */
.program-grid--8col {
  grid-template-columns:
    clamp(10rem, 0.200rem + 12.4vw, 25rem)
    repeat(5, clamp(27.5rem, 0.550rem + 34.1vw, 68.75rem))
    repeat(2, clamp(18.75rem, 0.375rem + 23.25vw, 46.875rem));
}

/* 7-column layout (JA Day3: no Exhibition Hall) */
.program-grid--7col {
  grid-template-columns:
    clamp(10rem, 0.200rem + 12.4vw, 25rem)
    repeat(5, clamp(27.5rem, 0.550rem + 34.1vw, 68.75rem))
    clamp(18.75rem, 0.375rem + 23.25vw, 46.875rem);
}

/* Header cells */
.program-grid__header {
  padding: clamp(0.494rem, 0.010rem + 0.62vw, 1.25rem);
  border-bottom: 1px solid #000;
  font-size: clamp(1.6rem, 0.032rem + 1.984vw, 4rem);
  text-align: center;
  display: flex;
  align-items: center;
  justify-content: center;
}

/* Time cells (AM / PM / Evening) */
.program-grid__time {
  padding: clamp(0.494rem, 0.010rem + 0.62vw, 1.25rem);
  font-size: clamp(1.6rem, 0.032rem + 1.984vw, 4rem);
  text-align: center;
  display: flex;
  align-items: center;
  justify-content: center;
  white-space: nowrap;
}

/* Content cells (body cells for col2-col6) */
.program-grid__cell {
  padding: clamp(3.75rem, 0.075rem + 4.65vw, 9.375rem) clamp(2.5rem, 0.050rem + 3.1vw, 6.25rem) clamp(6.5rem, 0.130rem + 8.06vw, 16.25rem);
}

/* Column colors */
.program-grid__col1 { grid-column: 1; background-color: #9C9C9C; color: #fff; }
.program-grid__col2 { grid-column: 2; background-color: #AF1400; color: #fff; }
.program-grid__col3 { grid-column: 3; background-color: #9B553B; color: #fff; }
.program-grid__col4 { grid-column: 4; background-color: #677F33; color: #fff; }
.program-grid__col5 { grid-column: 5; background-color: #8D8836; color: #fff; }
.program-grid__col6 { grid-column: 6; background-color: #2C4D54; color: #fff; }
.program-grid__col7 { grid-column: 7; background-color: #D9D9D9; color: #000; }
.program-grid__col8 { grid-column: 8; background-color: #D9D9D9; color: #000; border-left: 1px solid #000; }

/* Row span utilities */
.program-grid__span-2 { grid-row: span 2; }
.program-grid__span-3 { grid-row: span 3; }
.program-grid__span-4 { grid-row: span 4; }

/* Side event / Exhibition Hall cells — override style.css #program-page padding */
#program-page .program-table__side-event,
#program-page .program-table__exhibition-hall {
  padding: clamp(3.75rem, 0.075rem + 4.65vw, 9.375rem) clamp(2.5rem, 0.050rem + 3.1vw, 6.25rem) clamp(6.5rem, 0.130rem + 8.06vw, 16.25rem);
}
.program-grid__cell.program-table__side-event,
.program-grid__cell.program-table__exhibition-hall {
  display: flex;
  align-items: start;
  justify-content: center;
  text-align: center;
}

#program-page .program-table__list-item--1row {
  min-height: calc(1.4em + clamp(0.8rem, 0.016rem + 0.992vw, 2rem) * 2);
  display: flex;
  align-items: center;
  justify-content: center;
}

#program-page .program-table__list-item--2row {
  min-height: calc(2.8em + clamp(0.8rem, 0.016rem + 0.992vw, 2rem) * 2);
  display: flex;
  align-items: center;
  justify-content: center;
}

#program-page .program-table__list .program-table__list-item--empty {
  background-color: transparent;
}

#program-page .program-table__exhibition-hall .program-table__list li {
  min-height: calc(2.8em + clamp(0.8rem, 0.016rem + 0.992vw, 2rem) * 2);
  display: flex;
  align-items: center;
  justify-content: center;
}

/* Bridge row cells (EN only: AM-PM transition row) */
.program-grid__bridge {
  padding: 0 clamp(2.5rem, 0.050rem + 3.1vw, 6.25rem) !important;
  position: relative;
  display: flex;
  align-items: center;
}
.program-grid__bridge::before {
  content: "";
  position: absolute;
  top: 50%;
  left: 0;
  right: 0;
  border-top: 1px solid #fff;
}

/* Bridge row side-event cell */
.program-grid__bridge.program-table__side-event {
  text-align: center;
  justify-content: center;
}
.program-grid__bridge.program-table__side-event::before {
  border-top-color: #fff;
}

/* Bridge row exhibition-hall cell */
.program-grid__bridge.program-table__exhibition-hall {
  text-align: center;
  justify-content: center;
}
.program-grid__bridge.program-table__exhibition-hall::before {
  border-top-color: #fff;
}

/* Bridge time cell (empty, with line) */
.program-grid__bridge-time {
  padding: 0 !important;
  position: relative;
}
.program-grid__bridge-time::before {
  content: "";
  position: absolute;
  top: 50%;
  left: 0;
  right: 0;
  border-top: 1px solid #fff;
}

/* PM/Evening row bottom border (visual row separation) */
.program-grid__row-border {
  border-bottom: 1px solid #fff;
}

/* Bottom-aligned modifier (PM row cells) */
.program-grid__cell--bottom {
  display: flex;
  flex-direction: column;
  justify-content: flex-end;
}
.program-grid__cell--bottom.program-table__side-event,
.program-grid__cell--bottom.program-table__exhibition-hall {
  flex-direction: column;
  justify-content: flex-end;
  align-items: stretch;
  text-align: center;
}

/* Evening */
.program-grid__evening {
  border-top: 1px solid #fff;
  padding: clamp(3.75rem, 0.075rem + 4.65vw, 9.375rem) clamp(2.5rem, 0.050rem + 3.1vw, 6.25rem);
}

/* ================================================================
   SP Responsive (Grid)
   ================================================================ */
@media only screen and (max-width: 768px) {
  .program-grid--8col {
    grid-template-columns:
      clamp(8rem, 0.160rem + 9.92vw, 20rem)
      repeat(5, clamp(22rem, 0.440rem + 27.28vw, 55rem))
      repeat(2, clamp(15rem, 0.300rem + 18.6vw, 37.5rem));
  }
  .program-grid--7col {
    grid-template-columns:
      clamp(8rem, 0.160rem + 9.92vw, 20rem)
      repeat(5, clamp(22rem, 0.440rem + 27.28vw, 55rem))
      clamp(15rem, 0.300rem + 18.6vw, 37.5rem);
  }
  .program-grid__header,
  .program-grid__time {
    font-size: clamp(1.25rem, 0.012rem + 0.744vw, 1.5rem);
  }
  .program-grid__cell {
    padding: clamp(1.875rem, 0.0375rem + 2.325vw, 4.6875rem) clamp(1.25rem, 0.025rem + 1.55vw, 3.125rem) clamp(3.25rem, 0.065rem + 4.03vw, 8.125rem);
  }
  .program-grid__bridge {
    padding: 0 clamp(1.25rem, 0.025rem + 1.55vw, 3.125rem) !important;
  }
  #program-page .program-table__side-event, #program-page .program-table__exhibition-hall {
    padding: clamp(1.875rem, 0.0375rem + 2.325vw, 4.6875rem) clamp(1.25rem, 0.025rem + 1.55vw, 3.125rem) clamp(3.25rem, 0.065rem + 4.03vw, 8.125rem);
  }
}

/* Rounded item modifier */
.program-table__item--rounded {
  border-radius: 9999px;
  overflow: hidden;
}
