
:root {
  --vw-base: 1920;
}

@media not all and (min-width: 768px) {
  :root {
    --vw-base: 375;
  }
}
@media not all and (min-width: 768px) {
    .venue-card__content .num01 {
        font-size: calc(100vw / var(--vw-base) * 25);
        margin-bottom: calc(100vw / var(--vw-base) * 40);
    }
}
/* ----------------------------------------
見出し
---------------------------------------- */
@media not all and (min-width: 768px) {
  .ttl-h2 {
      font-size: calc(100vw / var(--vw-base) * 24);
      margin-bottom: calc(100vw / var(--vw-base) * 20);
  }
  .ttl-h3 {
      font-size: calc(100vw / var(--vw-base) * 18);
      margin-bottom: calc(100vw / var(--vw-base) * 15);
      margin-top: calc(100vw / var(--vw-base) * 10);
  }
  .txt-01 {
        font-size: calc(100vw / var(--vw-base) * 14);
    }
}

.ttl-h2 {
    display: block;
    font-size: clamp(2.75rem, 100vw / var(--vw-base) * 34, 3.75rem);
    margin-bottom: calc(100vw / var(--vw-base) * 30);
    font-weight: 500;
    line-height: 1.5;
}

.ttl-h3 {
    font-size: clamp(2.12rem, 100vw / var(--vw-base) * 26, 2.87rem);
    margin-bottom: calc(100vw / var(--vw-base) * 20);
    margin-top: calc(100vw / var(--vw-base) * 15);
    font-weight: 500;
    line-height: 1.5;
}
.txt-01 {
    font-size: clamp(1.63rem, 100vw / var(--vw-base) * 20, 2.21rem);
    font-weight: 500;
    line-height: 2;
}
hr {
  padding: 20px 0;
  border: none;
}
/* ========== Hero Section ========== */
.hero-headline{
  font-size: clamp(2.63rem, 100vw / var(--vw-base) * 32, 4.4rem);
  font-weight:700;
  color:#B60081;
  margin:1rem 0 1.5rem;
  line-height:1.3;
}
.hero-sub{
  font-size: clamp(1.6rem, 100vw / var(--vw-base) * 23, 2.2rem);
  line-height:1.6;
  margin-bottom:2rem;
}
.hero-cta{
  display:block; 
  background:#B60081;
  color:#fff;
  padding:1.2rem 2.4rem;
  border-radius:0.5rem;
  font-size: clamp(1.5rem, 100vw / var(--vw-base) * 18, 1.8rem);
  text-align:center;
  text-decoration:none;
  text-align: center;
}
/* ▼ 新規追加：キービジュアル下に置くラッパー ▼ */
.hero-copy{
  margin:3rem auto 4rem;
  /* max-width:var(--content-width,1000px); */
  padding:0 clamp(16px,4vw,40px);
  position:relative;
  z-index:3;
}
/* モバイル固定 CTA */
@media not all and (min-width:768px){
  .hero-cta{
    width:100%;
  }
  .hero-cta--sticky{
    position:fixed;
    bottom:0;
    left:0;
    right:0;
    z-index:90;
  }
}
/* ========== Pain Block ========== */
.pain-block{
  background:#FFF7F2;
  padding:clamp(3rem, 100vw/var(--vw-base)*40, 6rem) 0;
  margin-bottom:clamp(2rem, 100vw/var(--vw-base)*25, 3.6rem);
}
.pain-ttl{
  font-size:clamp(1.63rem, 100vw/var(--vw-base)*20, 2.21rem);
  font-weight:500;
  text-align:center;
  margin-bottom:clamp(2rem, 4vw, 3rem);
}
.pain-list{
  display:grid;
  grid-template-columns:repeat(auto-fit, minmax(280px,1fr));
  gap:clamp(1.6rem, 3vw, 2.4rem);
  max-width:var(--content-width,1000px);
  margin:0 auto;
  padding:0 clamp(16px,4vw,40px);
  list-style:none;
}
.pain-card{
  background:#fff;
  border-radius:1rem;
  padding:clamp(2rem, 4vw, 2.8rem);
  text-align:left;
  box-shadow:0 4px 8px rgba(0,0,0,.05);
}
.pain-icn{
  font-size:2.4rem;
}
.pain-main{
  font-size:clamp(1.8rem, 100vw/var(--vw-base)*22, 2rem);
  font-weight:700;
  margin:0.8rem 0 .5rem;
}
.pain-sub{
  font-size:clamp(1.4rem, 100vw/var(--vw-base)*18, 1.6rem);
  line-height:1.8;
}
/* ----------------------------------------
ポイント
---------------------------------------- */
.point {
  margin-bottom: 4rem;
}
  .point-list {
  display: flex;
  gap: 2rem;
  flex-wrap: wrap;
}
.point-item {
  flex: 1 1 calc(50% - 1rem);
  min-width: 200px;
  padding: 2rem;
  border-radius: 0.8rem;
  text-align: center;
  color: #B60081;
  background-color: #fff;
}
.point-item i {
  font-size: 2.5rem;
  margin-bottom: 1rem;
}
.point-item .point-title {
    position: relative;
    font-size: calc(100vw / var(--vw-base) * 22);
    display: block;
    margin-bottom: 0.5rem;
    color: #B60081;
}   
@media not all and (min-width: 768px) {
  .point-item .point-title {
      font-size: calc(100vw / var(--vw-base) * 12);
  }
  .point-item {
    flex: 1
  }
}
.point-item .program-detail {
  color:#333
}
@media not all and (max-width: 1400px) {
  .point-item {
    flex: 1
  }  
}

/* ----------------------------------------
会場情報
---------------------------------------- */
.venue-card__content .num01 {
    position: relative;
    font-size: calc(100vw / var(--vw-base) * 40);
    line-height: 1;
    color: #b60081;
    white-space: nowrap;
}
@media not all and (min-width: 768px) {
.venue-card__content .txt {
    font-size: calc(100vw / var(--vw-base) * 12);
}
}
.venue-card__content .txt {
    position: relative;
    font-size: calc(100vw / var(--vw-base) * 22);
    line-height: 1;
    white-space: nowrap;
}
@media not all and (min-width: 768px) {
.venue-card__content .venue-name {
    font-size: calc(100vw / var(--vw-base) * 20);
}
}
.venue-card__content .venue-name {
    position: relative;
    margin-bottom: 1rem;
    margin-top: 1rem;
    font-size: calc(100vw / var(--vw-base) * 30);
    line-height: 1;
    white-space: nowrap;
}
.venue-card-wrap {
  display: flex;
  gap: 2rem;
  flex-wrap: wrap;
  margin: 4rem 0;
}
.venue-card {
  flex: 1;
  min-width: 280px;
  border: 1px solid #eee;
  border-radius: 0.8rem;
  box-shadow: 0 0.2rem 0.8rem rgba(0,0,0,0.1);
  overflow: hidden;
  background-color: #fff;
}
.venue-card__header {
  background-color: #f9f9f9;
  padding: 2rem;
  border-bottom: 1px solid #eee;
}
.venue-card__header h4 {
  color: #B60081;
  display: flex;
  align-items: center;
  gap: 0.5rem;
}
.venue-card__content {
  padding: 2rem;
  font-size: 1.2rem;
}
.access-btn-wrap {
  text-align: center;
  margin-top: calc(100vw / var(--vw-base) * 20);
}
.access-btn {
  display: inline-block;
  padding: calc(100vw / var(--vw-base) * 12) calc(100vw / var(--vw-base) * 24);
  background-color: #B60081;
  color: #fff;
  border-radius: 0.5rem;
  font-size: calc(100vw / var(--vw-base) * 18);
  text-decoration: none;
}
@media not all and (min-width: 768px) {
  .access-btn-wrap {
    margin-top: calc(100vw / var(--vw-base) * 15);
  }
  .access-btn {
    padding: calc(100vw / var(--vw-base) * 10) calc(100vw / var(--vw-base) * 20);
    font-size: calc(100vw / var(--vw-base) * 16);
  }
}
/* ========== Special Talk ========== */
.talk-block{
  padding:clamp(3rem,100vw/var(--vw-base)*40,6rem) 0;
}
.talk-list{
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(280px,1fr));
  gap:clamp(1.6rem,3vw,2.4rem);
  max-width:var(--content-width,1000px);
  margin:0 auto;
  padding:0 clamp(16px,4vw,40px);
  list-style:none;
}
.talk-card{
  background:#fff;
  border-radius:1rem;
  box-shadow:0 4px 8px rgba(0,0,0,.05);
  overflow:hidden;
  text-align:left;
}
.talk-photo img{
  width:100%;height:100%;
  aspect-ratio:4/3;object-fit:cover;
}
.talk-location{
  background:#B60081;color:#fff;font-size:1.3rem;
  padding:.4rem 1rem;display:inline-block;
  border-radius:0 0 .5rem 0;
}
.talk-name{
  font-size:clamp(1.7rem,100vw/var(--vw-base)*20,1.9rem);
  font-weight:700;margin:1.2rem 1.6rem .6rem;
  line-height:1.4;
}
.talk-title{
  display:block;font-size:1.3rem;font-weight:500;
  margin-top:.2rem;line-height:1.4;
}
.talk-theme{
  font-size:clamp(1.4rem,100vw/var(--vw-base)*18,1.6rem);
  margin:0 1.6rem 2rem;line-height:1.6;
}

/* スマホのみ改行用 */
.sp-only{display:none;}
@media not all and (min-width:768px){.sp-only{display:inline;}}

/* ----------------------------------------
ゲスト
---------------------------------------- */
.guest_wrap {
  display: flex;
  gap: 2rem;
  flex-wrap: wrap;
  margin-bottom: 4rem;
}
.guest_item {
  flex: 1;
  min-width: 200px;
  background-color: #fff;
  border: 1px solid #eee;
  border-radius: 0.8rem;
  box-shadow: 0 0.2rem 0.8rem rgba(0,0,0,0.1);
  overflow: hidden;
  text-align: center;
}
.guest_item img {
  width: 100%;
  height: auto;
  display: block;
}
.guest_item .guest_name {
  margin-top: calc(100vw / var(--vw-base) * 20);
  margin-bottom: calc(100vw / var(--vw-base) * 10);
  font-size: calc(100vw / var(--vw-base) * 24);
  font-weight: 500;
}
.guest_item .guest_role {
  margin-bottom: calc(100vw / var(--vw-base) * 20);
  font-size: calc(100vw / var(--vw-base) * 18);
  color: #B60081;
}
@media not all and (min-width: 768px) {
  .guest_item .guest_name {
    margin-top: calc(100vw / var(--vw-base) * 15);
    margin-bottom: calc(100vw / var(--vw-base) * 8);
    font-size: calc(100vw / var(--vw-base) * 20);
  }
  .guest_item .guest_role {
    margin-bottom: calc(100vw / var(--vw-base) * 15);
    font-size: calc(100vw / var(--vw-base) * 16);
  }
}

/* === タイムテーブル === */
/* タイムテーブル用グリッド */
/* タイムテーブル用グリッド */
/* タイムテーブル用グリッド */
/* タイムテーブル用グリッド */
.timetable-grid {
  --row-height: 40px; /* 30分＝40px */
  display: grid;
  grid-template-columns: calc(100vw/var(--vw-base)*60) 1fr 1fr;
  grid-auto-rows: minmax(var(--row-height), auto);
  gap: 0;
  padding: calc(100vw/var(--vw-base)*14);
  font-size: calc(100vw/var(--vw-base)*18);
}

/* ヘッダーセル */
.timetable-grid .header {
  text-align: center;
  padding: 8px 0;
  border: 2px solid #004165;
  border-radius: 4px;
  background: #fff;
  font-weight: bold;
}

/* 時刻セル */
.timetable-grid .time {
  position: relative;
  top: calc(var(--row-height) / -2);
  display: flex;
  align-items: flex-start;
  justify-content: flex-end;
  padding-right: 8px;
  font-weight: bold;
}
/* 受付開始セル（非展開） */
.timetable-grid .reception {
  cursor: default;
  background: #fff;
  border: 2px solid #004165;
  text-align: center;
}

/* 展開可能イベント */
.timetable-grid .box.event {
  display: block;
  cursor: pointer;
  padding: 8px;
  border: 2px solid #d9731e;
  border-radius: 4px;
  background: #fff;
  transition: background 0.2s, border-color 0.2s;
}

/* summary 部分 */
.timetable-grid .box.event summary {
  list-style: none;
  margin: 0;
  font-weight: bold;
}
.timetable-grid .box.event summary::-webkit-details-marker {
  display: none;
}
.timetable-grid .box.event summary::after {
  content: '▼';
  float: right;
  transition: transform 0.2s;
}
.timetable-grid .box.event[open] summary::after {
  transform: rotate(-180deg);
}

/* detail 部分 */
.timetable-grid .box.event .detail {
  display: none;
  margin-top: 8px;
  color: #333;
}
.timetable-grid .box.event[open] .detail {
  display: block;
}

/* 各社／体験ブース */
.timetable-grid .booths {
  position: relative;
  border: 2px solid #d9731e;
  border-radius: 4px;
  background: #fff;
  line-height: 1.4;
}
.timetable-grid .box.booths .booths-summary {
    display: none;
  }
/* グリッド内のラベルをクリック領域に */
.timetable-grid .column-toggle {
  /* クリック可能にして背景は透明 */
  display: block;
  cursor: pointer;
  background: transparent;
}
.booths-summary {
  padding: 4px;
  z-index: -5;
}
.booths-text{
  padding: 12px;
}
/* 各 details や booths より下に配置 */
.timetable-grid .column-toggle {
  pointer-events: all;
}
/* 各社／体験ブース：レスポンシブ */
@media not all and (min-width: 768px) {
  .timetable-grid {
    font-size: calc(100vw/var(--vw-base)*16);
  }
  /* ① 初期状態（#view-events が checked） */
  #view-events:checked ~ .timetable-grid {
    grid-template-columns: calc(100vw/var(--vw-base)*45) 1fr 0.1fr;
  }
  #view-events:checked ~ .timetable-grid .box.event {
    display: block;
  }

  /* ② booths をクリック（#view-booths が checked） */
  #view-booths:checked ~ .timetable-grid {
    grid-template-columns: calc(100vw/var(--vw-base)*45) 0.1fr 1fr;   /* 講演会場を隠し、booths を大きく */
  }

  /* 「各社／体験ブース」モード時には講演タイトルを非表示 */
  #view-booths:checked ~ .timetable-grid .box.event summary {
    display: none;
  }
  #view-booths:checked ~ .timetable-grid .box.booths .booths-summary {
    display: none;
  }
  #view-booths:checked ~ .timetable-grid .box.booths .booths-text {
    display: block
  }
  #view-booths:checked ~ .timetable-grid .box.event {
    display: block; 
  }
  /* 「講演会場」モード時に“詳細はこちらをタップ”のヒントを表示 */
  #view-events:checked ~ .timetable-grid .box.booths .booths-summary {
    display: block;
  }
  #view-events:checked ~ .timetable-grid .box.booths .booths-text {
    display: none
  }
    /* オーバーレイは常に配置しておくが、初期（講演ビュー）ではクリックを通す */
  .timetable-grid .column-toggle {
    pointer-events: none;
    position: relative;
    z-index: 10;
  }

  /* ブースビュー時だけクリックをキャッチする */
  #view-booths:checked ~ .timetable-grid .column-toggle {
    pointer-events: auto;
  }
}
/* ========== Course Block (モデルコース) ========== */
.course-block{
  padding:clamp(3rem, 100vw/var(--vw-base)*40, 6rem) 0;
}

.course-ttl{
  font-size:clamp(1.63rem,100vw/var(--vw-base)*20,2.21rem);
  font-weight:500;
  text-align:center;
  margin-bottom:clamp(2rem,4vw,3rem);
}

.course-list{
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(300px,1fr));
  gap:clamp(1.6rem,3vw,2.4rem);
  max-width:var(--content-width,1000px);
  margin:0 auto;
  padding:0 clamp(16px,4vw,40px);
  list-style:none;
}

/* <details> カード */
.course-card{
  background:#fff;
  border-left:6px solid #B60081;
  border-radius:1rem;
  overflow:hidden;                /* SP で閉じた時に隠す */
}

/* summary 見出し行 */
.course-summary{
  cursor:pointer;
  padding:clamp(2rem,4vw,2.8rem);
  font-size:clamp(1.8rem,100vw/var(--vw-base)*22,2rem);
  font-weight:700;
  line-height:1.4;
  display:flex;
  justify-content:space-between;
  align-items:center;
}
/* Safari 用マーカー非表示 */
.course-summary::-webkit-details-marker{display:none;}

.course-length{
  font-size:clamp(1.4rem,100vw/var(--vw-base)*18,1.6rem);
  font-weight:500;
}

/* 開いた時 summary と本文の区切り線 */
.course-card[open] .course-summary{border-bottom:1px solid #ddd;}

/* ---------- タイムライン ---------- */
/* 初期は非表示、open 時に表示（SP） */
.course-timeline{
  list-style:none;
  padding:clamp(1.6rem,4vw,2.4rem);
  margin:0;
  display:none;
}
.course-card[open] .course-timeline{display:block;}

.course-timeline li{
  position:relative;
  padding-left:2.4rem;
  margin:0 0 .8rem;
}
.course-timeline li::before{
  content:"";
  position:absolute;
  left:0;
  top:.4rem;
  width:.8rem;
  height:.8rem;
  background:#B60081;
  border-radius:50%;
}
.course-timeline li::after{
  content:"";
  position:absolute;
  left:.35rem;
  top:1.2rem;
  width:2px;
  height:calc(100% - 1.2rem);
  background:#B60081;
}
.course-timeline li:last-child::after{display:none;}

.course-time{
  font-weight:700;
  margin-right:.4rem;
}
@media (min-width:768px){
  .course-card{overflow:visible;}
  .course-card .course-timeline{display:block;}
  .course-card > .course-summary{
    pointer-events:none;   /* サマリクリックを無効化 */
    cursor:default;
  }
}
/* ----------------------------------------
companies
---------------------------------------- */
.companies_list {
  display: flex;
  flex-wrap: wrap;
  gap: calc(100vw / var(--vw-base) * 20);
  margin-top: calc(100vw / var(--vw-base) * 30);
}

.company_item {
  flex: 1 1 280px;
  min-width: 280px;     /* 15文字表示の余裕を確保 */
  background-color: #fff;
  border: 1px solid #eee;
  border-radius: 0.8rem;
  box-shadow: 0 0.2rem 0.8rem rgba(0, 0, 0, 0.1);
  overflow: hidden;
  text-align: center;
  padding: calc(100vw / var(--vw-base) * 20) calc(100vw / var(--vw-base) * 16);
}

.company_name {
  margin-bottom: calc(100vw / var(--vw-base) * 12);
  font-size: calc(100vw / var(--vw-base) * 24);
  font-weight: 600;
  color: #B60081;
  white-space: nowrap;
}

.company_desc {
  font-size: calc(100vw / var(--vw-base) * 18);
  color: #555;
  white-space: nowrap;
}

@media not all and (min-width: 768px) {
  .companies_list {
    gap: calc(100vw / var(--vw-base) * 15);
    margin-top: calc(100vw / var(--vw-base) * 20);
  }
  .company_item {
    padding: calc(100vw / var(--vw-base) * 15) calc(100vw / var(--vw-base) * 12);
  }
  .company_name {
    font-size: calc(100vw / var(--vw-base) * 20);
    margin-bottom: calc(100vw / var(--vw-base) * 10);
  }
  .company_desc {
    font-size: calc(100vw / var(--vw-base) * 16);
  }
}
@media not all and (max-width: 1440px) {
  .company_item {
    flex: 1 1 500px;
    min-width: 500px;
  }  
}
.modal {
  position: fixed;
  top: 0;
  left: 0;
  width: 100vw;
  height: 100vh;
  display: none;
  align-items: center;
  justify-content: center;
  z-index: 1000;
}
/* チェックが入ると表示 */
.modal-toggle:checked + .company-trigger + .modal {
  display: flex;
}
/* オーバーレイ */
.modal-overlay {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background: rgba(0, 0, 0, 0.5);
  cursor: pointer;
}
/* モーダルコンテンツ全体 */
.modal-content {
  position: relative;
  padding: 2rem;
  background-color: #fff;
}

/* 閉じるボタンを右上に固定 */
.modal-close {
  position: absolute;
  top: 1rem;
  right: 1rem;
  background: transparent;
  border: none;
  font-size: 1.5rem;
  cursor: pointer;
}

/* モバイル：縦並び */
.modal-body {
  display: flex;
  flex-direction: column;
  gap: 1rem;
}
.company-description {
  text-align: left;
}
/* 画像 */
.modal-image img {
  max-width: 100%;
  height: auto;
  border-radius: 0.5rem;
}
.detail-link {
  align-self: start;
}
.detail-link-text {
  text-decoration: underline;
}
/* ホバーでクリック可能感を演出 */
.company-trigger,
.company-item {
  cursor: pointer;
}
.exhibitors-wrapper {
  overflow-x: auto;
  overflow-y: auto;      /* 縦にもスクロール可能 */
  max-height: 60vh;
  margin-top: 1rem;
}
.exhibitors-table {
  width: 100%;
  border-collapse: collapse;
}
.exhibitors-table th,
.exhibitors-table td {
  border: 1px solid #ddd;
  padding: 0.5rem;
  text-align: left;
}
.exhibitors-table th {
  background-color: #f9f9f9;
}
/* PCレイアウト */
@media (min-width: 768px) {
  .modal-body {
    display: grid;
    grid-template-columns: 40% 60%;
    grid-template-rows: auto auto auto;
    grid-template-areas:
      "modal-image company-title"
      "modal-image company-description"
      "modal-image detail-link";
    gap: 1rem 2rem;
    max-width: 800px;
    width: 90vw;
    margin: 0 auto;
  }
  .modal-image {
    grid-area: modal-image;
  }
  .company-title {
    grid-area: company-title;
    margin: 0;
    font-size: calc(100vw / var(--vw-base) * 24);
    font-weight: 600;
    color: #B60081;
  }
  .company-description {
    grid-area: company-description;
    margin: 0;
    line-height: 1.6;
    font-size: calc(100vw / var(--vw-base) * 18);
    text-align: left;
  }
  .detail-link {
    grid-area: detail-link;
  }
}
/* ========== Company Description Scrollable ========== */
.company-description.scrollable{
  max-height: clamp(10rem, 40vh, 80vh);
  overflow-y:auto;
  overscroll-behavior:contain;            /* iOS バウンス抑制 */
  padding-right:.6rem;                    /* スクロールバーとテキストを分ける */
}

/* 自然なスクロールバー表示（ブラウザ標準） */
@supports (scrollbar-width: thin){
  .company-description.scrollable{scrollbar-width:thin;}
}
/* ----------------------------------------
benefits セクション：追加・修正分
---------------------------------------- */
.benefits_list {
  display: flex;
  flex-wrap: wrap;
  gap: calc(100vw / var(--vw-base) * 20);
  margin-top: calc(100vw / var(--vw-base) * 30);
}

.benefits_item {
  flex: 1 1 240px;
  min-width: 240px;
  background-color: #fff;
  border: 1px solid #eee;
  border-radius: 0.8rem;
  box-shadow: 0 0.2rem 0.8rem rgba(0, 0, 0, 0.1);
  overflow: hidden;
  text-align: center;
  padding: 0 calc(100vw / var(--vw-base) * 16);
}

.benefits_item img {
  width: 100%;
  height: auto;
  display: block;
  aspect-ratio: 1 / 1;
}

.benefits_header {
  margin-top: calc(100vw / var(--vw-base) * 12);
  margin-bottom: calc(100vw / var(--vw-base) * 8);
  font-size: calc(100vw / var(--vw-base) * 22);
  color: #B60081;
  white-space: nowrap;
}

.benefits_text {
  margin-bottom: calc(100vw / var(--vw-base) * 20);
  font-size: calc(100vw / var(--vw-base) * 18);
  color: #555;
}

@media not all and (min-width: 768px) {
  .benefits_list {
    gap: calc(100vw / var(--vw-base) * 15);
    margin-top: calc(100vw / var(--vw-base) * 20);
  }
  .benefits_item {
    padding: 0 calc(100vw / var(--vw-base) * 12);
    flex: 1 1 200px;
    min-width: 200px;
  }
  .benefits_header {
    margin-top: calc(100vw / var(--vw-base) * 10);
    margin-bottom: calc(100vw / var(--vw-base) * 6);
    font-size: calc(100vw / var(--vw-base) * 20);
  }
  .benefits_text {
    margin-bottom: calc(100vw / var(--vw-base) * 15);
    font-size: calc(100vw / var(--vw-base) * 16);
  }
}
/* ----------------------------------------
experience-consult セクション：追加・修正分
---------------------------------------- */
.experience-consult {
  padding: calc(100vw / var(--vw-base) * 40) calc(100vw / var(--vw-base) * 16);
}

.experience-consult .ttl-h2 {
  margin-bottom: calc(100vw / var(--vw-base) * 32);
}

/* アイコンカードリスト */
.ec_list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-wrap: wrap;
  gap: calc(100vw / var(--vw-base) * 20);
  justify-content: center;
}

.ec_item {
  flex: 1 1 280px;
  min-width: 280px;
  background-color: #fff;
  border: 1px solid #eee;
  border-radius: 0.8rem;
  box-shadow: 0 0.2rem 0.8rem rgba(0, 0, 0, 0.1);
  text-align: center;
  padding: calc(100vw / var(--vw-base) * 24) calc(100vw / var(--vw-base) * 16);
  display: flex;
  flex-direction: column;
  align-items: center;
}

.ec_icon {
  font-size: calc(100vw / var(--vw-base) * 48);
  margin-bottom: calc(100vw / var(--vw-base) * 16);
}

.ec_title {
  font-size: calc(100vw / var(--vw-base) * 22);
  font-weight: 700;
  margin-bottom: calc(100vw / var(--vw-base) * 12);
  color: #333;
  white-space: nowrap;
}

.ec_text {
  font-size: calc(100vw / var(--vw-base) * 18);
  color: #555;
  line-height: 1.5;
  margin-bottom: 0; /* ボタンがないため余白は不要 */
}

/* 体験・相談でアイコンの色を変える */
.ec_item--experience .ec_icon {
  color: #FF8C42;
}

.ec_item--consult .ec_icon {
  color: #4CAF50;
}

@media not all and (min-width: 768px) {
  .ec_list {
    gap: calc(100vw / var(--vw-base) * 16);
  }
  .ec_item {
    padding: calc(100vw / var(--vw-base) * 20) calc(100vw / var(--vw-base) * 14);
    flex: 1 1 240px;
    min-width: 240px;
  }
  .ec_icon {
    font-size: calc(100vw / var(--vw-base) *  Forty);
    margin-bottom: calc(100vw / var(--vw-base) * 12);
  }
  .ec_title {
    font-size: calc(100vw / var(--vw-base) * 20);
    margin-bottom: calc(100vw / var(--vw-base) * 10);
  }
  .ec_text {
    font-size: calc(100vw / var(--vw-base) * 16);
  }
}
/* ----------------------------------------
register
---------------------------------------- */
.register {
  padding: calc(100vw / var(--vw-base) * 40) calc(100vw / var(--vw-base) * 16);
  background-color: #F9F9F9;
  text-align: center;
  margin-bottom: calc(100vw / var(--vw-base) * 50);
}

.register_inner {
  margin: 0 auto;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: calc(100vw / var(--vw-base) * 16);
}

/* 説明テキスト */
.register_text {
  font-size: calc(100vw / var(--vw-base) * 18);
  color: #333;
  line-height: 1.5;
}

/* 既存のボタンは幅いっぱいにならないよう調整 */
.register_inner .c-btn-02 {
  max-width: 30%;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 1rem 2rem;
  border-radius: 0.4rem;
  border: none;
  background: linear-gradient(to right, #FF94A5 0%, #FE4DA8 50%, #D10595 100%);
  color: #fff;
}

/* 「マイページ登録済み～」リンク */
.register_login a {
  font-size: calc(100vw / var(--vw-base) * 16);
  color: #B60081;
  text-decoration: none;
  border-bottom: 1px solid transparent;
  transition: border-color 0.3s;
}
.register_login a:hover {
  border-color: #B60081;
}

@media not all and (min-width: 768px) {
  .register {
    padding: calc(100vw / var(--vw-base) * 30) calc(100vw / var(--vw-base) * 12);
  }
  .register_inner { 
    gap: calc(100vw / var(--vw-base) * 12);
  }
  .register_inner .c-btn-02 {
  max-width: 100%;
  }
  .register_text {
    font-size: calc(100vw / var(--vw-base) * 16);
  }
  .register_login a {
    font-size: calc(100vw / var(--vw-base) * 14);
  }
}
/* ===== register（終了後）==================================== */
.register--closed .c-btn-02,
.register--closed .register_login {
  display: none;           /* ボタンとログイン導線を非表示 */
}

.register--closed .register_text {
  font-weight: 600;        /* メッセージを少し強調 */
  color: #B60081;          /* 見出しに合わせて色を統一（任意） */
}
/* ----------------------------------------
| FAQリスト全体 
---------------------------------------- */
.qa {
  padding: calc(100vw / var(--vw-base) * 40) calc(100vw / var(--vw-base) * 16);
}
.faq__list {
  max-width: 600px;
  margin: 0 auto;
}
/* 各アコーディオンアイテム */
.faq_item {
  border: 1px solid #eee;
  border-radius: 0.6rem;
  margin-bottom: calc(100vw / var(--vw-base) * 16);
  overflow: hidden;
  box-shadow: 0 0.1rem 0.4rem rgba(0, 0, 0, 0.05);
}

/* 質問部分（summary） */
.faq_question {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: calc(100vw / var(--vw-base) * 16) calc(100vw / var(--vw-base) * 16);
  cursor: pointer;
  font-size: calc(100vw / var(--vw-base) * 18);
  font-weight: 600;
  background-color: #F7F7F7;
  position: relative;
}

/* 矢印アイコン（開閉インジケータ） */
.faq_question::after {
  content: "▼";
  font-size: calc(100vw / var(--vw-base) * 14);
  transition: transform 0.3s;
}

/* 開いているときに矢印を回転 */
.faq_item[open] > .faq_question::after {
  transform: rotate(180deg);
}

/* 回答部分 */
.faq_answer {
  padding: calc(100vw / var(--vw-base) * 16) calc(100vw / var(--vw-base) * 16);
  font-size: calc(100vw / var(--vw-base) * 16);
  color: #555;
  line-height: 1.5;
  background-color: #fff;
}

/* レスポンシブ：タブレット以上 */
@media not all and (min-width: 768px) {
  .qa {
    padding: calc(100vw / var(--vw-base) * 30) calc(100vw / var(--vw-base) * 12);
  }
  .faq__list {
    max-width: 700px;
  }
  .faq_question {
    font-size: calc(100vw / var(--vw-base) * 16);
    padding: calc(100vw / var(--vw-base) * 14) calc(100vw / var(--vw-base) * 14);
  }
  .faq_question::after {
    font-size: calc(100vw / var(--vw-base) * 12);
  }
  .faq_answer {
    font-size: calc(100vw / var(--vw-base) * 14);
    padding: calc(100vw / var(--vw-base) * 14) calc(100vw / var(--vw-base) * 14);
  }
}
/* ========== Roadmap Block ========== */
/* ========== Roadmap Block ========== */
.roadmap-block{
  /* セクション自体は背景なしで余白のみ */
  padding:clamp(3rem, 100vw/var(--vw-base)*40, 6rem) 0;
}

/* h2 は共通 .ttl-h2 .c-ttl-01 をそのまま使用 */

/* ---- 背景付きリスト ---- */
.roadmap-list{
  background:#FAFAFA;                                /* 背景はリストのみ */
  border-radius:1rem;
  padding:clamp(2.4rem,5vw,4rem);
  margin:clamp(2rem,4vw,3rem) auto 0;                /* h2 との間隔 */
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(160px,1fr));
  gap:clamp(1.6rem,3vw,2.4rem);
  max-width:var(--content-width,1000px);
  list-style:none;
  text-align:center;
}

/* ---- ステップ ---- */
.roadmap-item{position:relative;}

.roadmap-icn{
  display:inline-flex;
  justify-content:center;
  align-items:center;
  width:4rem;
  height:4rem;
  border-radius:50%;
  background:#B60081;
  color:#fff;
  font-size:1.8rem;
  margin-bottom:.8rem;
}

.roadmap-step{
  font-size:clamp(1.6rem,100vw/var(--vw-base)*19,1.8rem);
  font-weight:700;
  margin:0;
}

.roadmap-desc{
  font-size:clamp(1.3rem,100vw/var(--vw-base)*17,1.5rem);
  line-height:1.6;
  margin:0;
}

/* ---------- スマホ縦タイムライン & アイコン左寄せ ---------- */
@media not all and (min-width:768px){

  /* 1カラムに変更 */
  .roadmap-list{grid-template-columns:1fr;}

  /* アイコンとテキストを横並び */
  .roadmap-item{
    display:flex;
    align-items:flex-start;
    gap:1rem;
  }

  /* アイコン左固定幅 */
  .roadmap-icn{
    flex:0 0 3.6rem;
    width:3.6rem;
    height:3.6rem;
    margin:0;                 /* 上部余白リセット */
  }

  /* テキストをアイコン右に */
  .roadmap-step{text-align:left;margin-top:.4rem;}

  /* 縦ライン：アイコン中心を通す */
  .roadmap-item::before{
    content:"";
    position:absolute;
    left:1.8rem;              /* アイコン半径 (3.6rem/2) */
    top:4.6rem;
    width:2px;
    height:calc(100% - 4.6rem);
    background:#B60081;
  }
  .roadmap-item:last-child::before{display:none;}
}

/* ---------- CTA ボタン ---------- */
.roadmap-cta{
  display:inline-block;
  background:#B60081;
  color:#fff;
  padding:1.2rem 2.4rem;
  border-radius:.5rem;
  font-size:clamp(1.5rem,100vw/var(--vw-base)*18,1.7rem);
  text-decoration:none;
}

@media not all and (min-width:768px){
  .roadmap-cta{width:100%;}
}
