/* ==========================================
   BASE
========================================== */

* {
  box-sizing: border-box;
}

html {
  scroll-behavior: smooth;
}

body {
  margin: 0;

  color: #17243a;
  background: #ffffff;

  font-family:
    "Yu Gothic",
    "YuGothic",
    "Hiragino Kaku Gothic ProN",
    "Noto Sans JP",
    Arial,
    sans-serif;

  line-height: 1.8;
}

img {
  display: block;
  max-width: 100%;
}

a {
  color: inherit;
}

.container {
  width: min(1100px, calc(100% - 48px));
  margin-inline: auto;
}


/* ==========================================
   KEY VISUAL
========================================== */

.hero {
  width: 100%;
  overflow: hidden;
  background: #020914;
}

.hero img {
  display: block;
  width: 100%;
  height: auto;
  margin: 0 auto;
}


/* ==========================================
   QUICK ENTRY
========================================== */

.quick-entry {
  padding: 28px 16px;
  background: #06172c;
  text-align: center;
}


/* ==========================================
   BUTTON
========================================== */

.button {
  display: inline-block;

  min-width: 270px;
  padding: 15px 38px;

  border-radius: 4px;

  font-weight: 700;
  letter-spacing: 0.04em;

  text-align: center;
  text-decoration: none;

  transition:
    color 0.2s ease,
    background-color 0.2s ease,
    transform 0.2s ease;
}

.button:hover {
  transform: translateY(-2px);
}

.button:focus-visible {
  outline: 3px solid #58cfff;
  outline-offset: 4px;
}

.button--primary {
  color: #ffffff;
  border: 1px solid #45b9e8;
  background: #087caf;
}

.button--primary:hover {
  background: #0b91c7;
}

.button--white {
  color: #062b53;
  background: #ffffff;
}


/* ==========================================
   DISABLED ENTRY
========================================== */

.entry-button-disabled {
  display: inline-block;

  min-width: 290px;
  padding: 13px 38px;

  color: #ffffff;

  border: 1px solid #7d8d9b;
  border-radius: 4px;

  background: #657583;

  font-weight: 700;
  line-height: 1.5;

  text-align: center;
}

.entry-button-disabled span {
  display: block;

  margin-top: 2px;

  font-size: 0.72rem;
  font-weight: 400;

  opacity: 0.88;
}


/* ==========================================
   COMMON SECTION
========================================== */

.section {
  padding: 90px 0;
}

.section--light {
  background: #f4f7fa;
}

.section-label {
  margin: 0 0 8px;

  color: #1184bd;

  font-size: 0.78rem;
  font-weight: 700;
  letter-spacing: 0.22em;
}

.section-label--white {
  color: #9be7ff;
}

.section h1,
.section h2 {
  margin: 0 0 40px;

  color: #082f58;

  font-size: clamp(1.7rem, 3vw, 2.3rem);
  line-height: 1.45;
}

.section h1::after,
.section h2::after {
  display: block;

  width: 55px;
  height: 3px;

  margin-top: 16px;

  background: #1592c8;

  content: "";
}


/* ==========================================
   ABOUT
========================================== */

.lead {
  max-width: 880px;
  font-size: 1.03rem;
}

.lead p {
  margin: 0 0 1.5em;
}


/* ==========================================
   INFORMATION
========================================== */

.information {
  margin: 0;
  border-top: 1px solid #cbd5df;
}

.information > div {
  display: grid;
  grid-template-columns: 180px 1fr;

  border-bottom: 1px solid #cbd5df;
}

.information dt,
.information dd {
  margin: 0;
  padding: 20px 24px;
}

.information dt {
  color: #083762;
  background: #e9f0f5;

  font-weight: 700;
}

.information dd {
  background: #ffffff;
}


/* ==========================================
   PROGRAM
========================================== */

.program {
  background: #ffffff;
}


/* ==========================================
   CATEGORY
========================================== */

.program-category {
  margin-bottom: 48px;

  overflow: hidden;

  border: 1px solid #d8e1e8;
  border-radius: 5px;

  background: #ffffff;
}

.program-category__header {
  display: flex;

  gap: 18px;
  align-items: center;

  padding: 20px 26px;

  color: #ffffff;

  background:
    linear-gradient(
      100deg,
      #061e3d 0%,
      #073e68 60%,
      #075d7d 100%
    );
}

.program-category__header h3 {
  margin: 0;

  font-size: 1.35rem;
  line-height: 1.5;
}

.program-category__number {
  color: #73dcff;

  font-size: 0.8rem;
  font-weight: 700;
  letter-spacing: 0.16em;
}


/* ==========================================
   LECTURE
========================================== */

.lecture {
  display: grid;

  grid-template-columns: 150px minmax(0, 1fr);

  min-height: 165px;

  border-bottom: 1px solid #dfe6eb;

  background: #ffffff;
}

.lecture:last-child {
  border-bottom: 0;
}


/* ==========================================
   TIME
========================================== */

.lecture__time {
  display: flex;

  flex-direction: column;

  justify-content: center;
  align-items: center;

  padding: 22px 18px;

  color: #123f65;
  background: #f2f6f9;

  font-size: 1.05rem;
  font-weight: 700;
  line-height: 1.4;

  text-align: center;
}

.lecture__time span {
  margin-top: 3px;

  color: #73808a;

  font-size: 0.78rem;
  font-weight: 500;
}


/* ==========================================
   LECTURE BODY
========================================== */

/*
  写真なし：
  本文だけで横幅いっぱい
*/

.lecture__body {
  display: grid;

  grid-template-columns: minmax(0, 1fr);

  align-items: center;

  min-width: 0;

  padding: 24px 32px;
}


/*
  写真あり：
  中央に本文、右端に写真
*/

.lecture--has-photo .lecture__body {
  grid-template-columns:
    minmax(0, 1fr)
    130px;

  gap: 40px;

  align-items: center;
}


/* ==========================================
   CONTENT
========================================== */

.lecture__content {
  min-width: 0;
  padding: 0;
}


/* 講演番号 */

.lecture__label {
  margin: 0 0 5px;

  color: #1688bb;

  font-size: 0.78rem;
  font-weight: 700;
  letter-spacing: 0.05em;
}


/* 研究テーマ */

.lecture__theme {
  margin: 0;

  color: #153552;

  font-size: 1.18rem;
  font-weight: 700;
  line-height: 1.55;
}


/* ==========================================
   正式講演タイトル
========================================== */

.lecture__title {
  margin: 8px 0 0;

  color: #081f39;

  font-size: 1.25rem;
  font-weight: 700;
  line-height: 1.6;
}


/* ==========================================
   SPEAKER
========================================== */

.lecture__speaker {
  margin: 14px 0 0;

  color: #435568;

  line-height: 1.6;
}


/* 所属 */

.lecture__affiliation {
  display: block;

  margin-bottom: 6px;

  color: #6a7885;

  font-size: 0.84rem;
  font-weight: 400;
  line-height: 1.55;
}


/* 役職＋氏名 */

.lecture__profile {
  display: block;
  line-height: 1.5;
}


/* 役職 */

.lecture__position {
  margin-right: 0.6em;

  color: #56697a;

  font-size: 0.9rem;
}


/* 氏名 */

.lecture__speaker-name {
  color: #173653;

  font-size: 1.02rem;
  font-weight: 700;
}


/* ==========================================
   PHOTO
========================================== */

.lecture__photo {
  grid-column: 2;

  width: 120px;
  height: 120px;

  margin: 0;

  justify-self: end;

  overflow: hidden;

  border: 1px solid #d6e0e8;
  border-radius: 5px;

  background: #eef3f6;
}

.lecture__photo img {
  display: block;

  width: 100%;
  height: 100%;

  object-fit: cover;
  object-position: 50% 30%;
}


/* ==========================================
   OPENING
========================================== */

.lecture--opening {
  margin-bottom: 36px;

  overflow: hidden;

  border: 1px solid #d8e1e8;
  border-radius: 5px;

  background: #ffffff;
}

.lecture--opening .lecture__body {
  border-left: 4px solid #5b95b8;
}


/* ==========================================
   GUEST
========================================== */

.lecture--guest {
  position: relative;

  background: #f4fbfd;
}

.lecture--guest::before {
  position: absolute;

  top: 0;
  bottom: 0;
  left: 0;

  width: 4px;

  background: #1ca7ca;

  content: "";
}

.lecture--guest .lecture__time {
  background: #e8f7fb;
}

.lecture--guest .lecture__label {
  color: #087392;
}


/* ==========================================
   TIME PENDING
========================================== */

.lecture--time-pending {
  display: block;
}

.lecture--time-pending .lecture__body {
  min-height: 165px;
}

/* ==========================================
   DISCUSSION
========================================== */

.discussion {
  display: grid;
  grid-template-columns: 150px minmax(0, 1fr);

  overflow: hidden;

  color: #ffffff;

  border-radius: 5px;

  background:
    linear-gradient(
      100deg,
      #064468 0%,
      #087f99 100%
    );
}


/* 時間 */

.discussion__time {
  display: flex;

  align-items: center;
  justify-content: center;

  padding: 24px 18px;

  background: rgba(0, 0, 0, 0.13);

  font-weight: 700;

  text-align: center;
}


/* 本体 */

.discussion__body {
  display: grid;

  grid-template-columns:
    minmax(0, 1fr)
    130px;

  gap: 40px;

  align-items: center;

  padding: 24px 32px;
}


/* 内容 */

.discussion__content {
  min-width: 0;
}

.discussion__label {
  margin: 0 0 3px;

  color: #9deaff;

  font-size: 0.72rem;
  font-weight: 700;
  letter-spacing: 0.16em;
}

.discussion__content h3 {
  margin: 0;

  font-size: 1.3rem;
  line-height: 1.55;
}


/* 所属・氏名 */

.discussion__speaker {
  margin: 14px 0 0;
}

.discussion__affiliation {
  display: block;

  margin-bottom: 6px;

  color: #d0e8ef;

  font-size: 0.84rem;
  line-height: 1.55;
}

.discussion__profile {
  display: block;
}

.discussion__position {
  margin-right: 0.6em;

  color: #d0e8ef;

  font-size: 0.9rem;
}

.discussion__speaker-name {
  color: #ffffff;

  font-size: 1.02rem;
  font-weight: 700;
}


/* 写真 */

.discussion__photo {
  width: 120px;
  height: 120px;

  margin: 0;

  justify-self: end;

  overflow: hidden;

  border: 1px solid rgba(255, 255, 255, 0.35);
  border-radius: 5px;

  background: rgba(255, 255, 255, 0.1);
}

.discussion__photo img {
  display: block;

  width: 100%;
  height: 100%;

  object-fit: cover;
  object-position: 50% 30%;
}


/* ==========================================
   DISCUSSION MOBILE
========================================== */

@media (max-width: 700px) {

  .discussion {
    display: block;
  }

  .discussion__time {
    justify-content: flex-start;

    padding: 10px 18px;

    text-align: left;
  }

  .discussion__body {
    grid-template-columns:
      minmax(0, 1fr)
      82px;

    gap: 14px;

    align-items: start;

    padding: 18px;
  }

  .discussion__photo {
    width: 82px;
    height: 82px;
  }

  .discussion__affiliation {
    font-size: 0.76rem;
  }

  .discussion__position {
    font-size: 0.82rem;
  }

  .discussion__speaker-name {
    font-size: 0.9rem;
  }

}

/* ==========================================
   ENTRY
========================================== */

.entry {
  padding: 85px 0;

  color: #ffffff;

  background:
    linear-gradient(
      125deg,
      #041a38 0%,
      #063b68 55%,
      #087f9e 100%
    );

  text-align: center;
}

.entry h2 {
  margin: 5px 0 15px;

  font-size: clamp(1.8rem, 4vw, 2.6rem);
  line-height: 1.5;
}

.entry p {
  margin: 0 0 30px;
}


/* ==========================================
   FOOTER
========================================== */

.footer {
  padding: 28px 0;

  color: #c4d1dd;
  background: #020e1d;

  font-size: 0.82rem;

  text-align: center;
}

.footer p {
  margin: 0;
}


/* ==========================================
   TABLET
========================================== */

@media (max-width: 820px) {

  .lecture {
    grid-template-columns: 120px minmax(0, 1fr);
  }

  .lecture__body {
    padding: 20px 24px;
  }

  .lecture--has-photo .lecture__body {
    grid-template-columns:
      minmax(0, 1fr)
      100px;

    gap: 24px;
  }

  .lecture__photo {
    width: 96px;
    height: 96px;
  }

}


/* ==========================================
   MOBILE
========================================== */

@media (max-width: 700px) {

  .container {
    width: min(100% - 32px, 1100px);
  }


  /* KEY VISUAL */

  .hero img {
    width: 100%;
    height: auto;
  }


  /* SECTION */

  .section {
    padding: 60px 0;
  }

  .section h1,
  .section h2 {
    margin-bottom: 30px;
  }


  /* INFORMATION */

  .information > div {
    display: block;
  }

  .information dt {
    padding: 13px 16px 4px;
  }

  .information dd {
    padding: 5px 16px 15px;

    background: transparent;
  }


  /* CATEGORY */

  .program-category {
    margin-bottom: 35px;
  }

  .program-category__header {
    padding: 16px 18px;
  }

  .program-category__header h3 {
    font-size: 1.05rem;
  }


  /* LECTURE */

  .lecture {
    display: block;

    min-height: 0;
  }


  /* TIME */

  .lecture__time {
    display: block;

    padding: 9px 18px;

    text-align: left;
  }

  .lecture__time span {
    display: inline;

    margin-left: 5px;
  }


  /* BODY */

  .lecture__body {
    display: block;

    padding: 18px;
  }


  /*
    スマホでは
    本文｜写真
    の2列
  */

  .lecture--has-photo .lecture__body {
    display: grid;

    grid-template-columns:
      minmax(0, 1fr)
      82px;

    gap: 14px;

    align-items: start;
  }


  /* PHOTO */

  .lecture__photo {
    width: 82px;
    height: 82px;

    justify-self: end;
  }


  /* TEXT */

  .lecture__theme {
    font-size: 1.02rem;
  }

  .lecture__title {
    font-size: 1.06rem;
  }

  .lecture__affiliation {
    font-size: 0.76rem;
  }

  .lecture__position {
    font-size: 0.82rem;
  }

  .lecture__speaker-name {
    font-size: 0.9rem;
  }


  /* TIME PENDING */

  .lecture--time-pending .lecture__body {
    min-height: 0;
  }


  /* DISCUSSION */

  .discussion {
    display: block;
  }

  .discussion__time {
    justify-content: flex-start;

    padding: 10px 18px;

    text-align: left;
  }

  .discussion__content {
    padding: 18px;
  }


  /* BUTTON */

  .button,
  .entry-button-disabled {
    width: 100%;
    max-width: 420px;

    min-width: 0;
  }

}


/* ==========================================
   SMALL MOBILE
========================================== */

@media (max-width: 420px) {

  /*
    かなり狭い場合は
    写真 → 本文の順に縦表示
  */

  .lecture--has-photo .lecture__body {
    display: flex;

    flex-direction: column-reverse;

    gap: 14px;
  }

  .lecture__photo {
    width: 96px;
    height: 96px;

    align-self: flex-start;
  }

}