@charset "UTF-8";
@import url("https://fonts.googleapis.com/css2?family=Albert+Sans:ital,wght@0,100..900;1,100..900&family=Zen+Kaku+Gothic+New:wght@300;400;500;700;900&display=swap");
@import url(base_three.css);
@import url(swiper-bundle.min.css);

@font-face {
  font-family: "Makinas 4 Square";
  src: url("../fonts/Makinas-4-Square.otf") format("opentype");
}

[id] {
  scroll-margin-top: 100px;
}

/* ==========================================================================
   アニメーション
   ========================================================================== */
.js-anim {
    opacity: 0;
    transform: translateY(30px);
    transition: opacity 0.8s ease, transform 0.8s ease;
}
.js-anim.is-complete {
    opacity: 1;
    transform: translateY(0);
}

/* ==========================================================================
   3つのテーマについて
   ========================================================================== */

#theme {
  position: relative;
  --mb-min: 115;
  --mb-max: 209;
  margin-bottom: var(--mb-val);
}

#theme .p-csr__csr__txt .head .en__txt {
  --f-min: 16;
  --f-max: 16;
}

#theme .txt {
  --f-min: 14;
  --f-max: 14;
  letter-spacing: -0.2px;
  font-family: "Zen Kaku Gothic New", sans-serif;
}

@media screen and (max-width: 768px) {
  #theme .txt {
    line-height: 32px;
  }

  /* 1行目の上の余白を消す */
  #theme .txt::before {
    content: "";
    display: block;
    width: 0;
    height: 0;
    margin-top: calc((1em - 32px) / 2);
  }

  /* 最後の行の下の余白を消す */
  #theme .txt::after {
    content: "";
    display: block;
    width: 0;
    height: 0;
    margin-bottom: calc((1em - 32px) / 2);
  }
}

#program {
  position: relative;
  --mb-min: 100;
  --mb-max: 124;
  margin-bottom: var(--mb-val);
}

#program .head {
  color: #21436F;
  --f-min: 35;
  --f-max: 45;
  --mb-min: 23;
  --mb-max: 23;
  margin-bottom: var(--mb-val);
  font-family: "Makinas 4 Square", sans-serif;
  letter-spacing: -0.024em;
  position: relative;
}

#program .midasi_box {
  position: relative;
}

#program .text {
  position: relative;
}

.governance_text {
  --mb-min: 45;
  --mb-max: 40;
  margin-bottom: var(--mb-val);
  --f-min: 16;
  --f-max: 16;
  letter-spacing: 0;
  line-height: 2.3;
  margin-top: -0.7em;
}

.bubble {
  position: absolute;
  top: -22px;
  left: auto;
  right: 17.9vw;
  width: 17.130208vw;
  height: 30.5338541667vw;
  z-index: -1;
}

@media screen and (max-width: 768px) {
  .governance_text {
    letter-spacing: 0;
    line-height: 2.3;
    margin-top: -0.4em;
  }
  #program h2.head {
    line-height: 50px;
  }
  .bubble {
    right: 0vw;
    top: -5vw;
  }
}

@media screen and (max-width: 700px) {
  .bubble {
    width: 32vw;
    height: 46.6666666667vw;
    top: -5.820513vw;
  }
}

@media screen and (min-width: 1000px) {
  .bubble {
    right: 5vw;
    top: -6vw;
  }
}

@media screen and (min-width: 1200px) {
  .bubble {
    right: 11vw;
  }
}

@media screen and (min-width: 1250px) {
  .bubble {
    right: 15vw;
  }
}

@media screen and (min-width: 1350px) {
  .bubble {
    right: 18vw;
  }
}

.pg-box {
  max-width: 897px;
  box-sizing: border-box;
  border-bottom: 1px solid #B6C8D0;
  --pb-min: 54;
  --pb-max: 46;
  padding-bottom: var(--pb-val);
  --mb-min: 48;
  --mb-max: 52;
  margin-bottom: var(--mb-val);
}

.pg-container {
  display: flex;
  justify-content: space-between;
  gap: 4.7rem;
}

.pg-image-wrapper {
  flex: 1;
  max-width: 39.5%;
  position: relative;
}

.pg-image-wrapper img {
  width: 100%;
  height: auto;
  border-radius: 60px;
}

@media screen and (max-width: 1000px) {
  .pg-box {
    width: 100%;
  }
}
@media (min-width: 1001px) {
  .pg-box {
    margin-right: 3%;
  }
}
@media (min-width: 1381px) {
  .pg-box {
    max-width: 92%;
  }
}
.pg-content {
  flex: 1;
  text-align: left;
}

.pg-header {
  display: flex;
  align-items: center;
  --mb-min: 36;
  --mb-max: 36;
  margin-bottom: var(--mb-val);
  flex-wrap: wrap;
  gap: 0.9vw;
}

.pg-title {
  --f-min: 24;
  --f-max: 24;
  font-weight: 700;
  color: #1a3c6d;
  margin: 0;
  line-height: 1;
      --mt-min: 5;
    --mt-max: 8.5;
    margin-top: var(--mt-val);
}

.pg-badge {
  font-family: "Zen Kaku Gothic New", sans-serif;
  color: #ffffff;
  --f-min: 13;
  --f-max: 13;
  font-weight: 700;
  --pt-min: 6;
  --pt-max: 6;
  padding-top: var(--pt-val);
  --pb-min: 6;
  --pb-max: 6;
  padding-bottom: var(--pb-val);
  border-radius: 12px;
  vertical-align: middle;
  min-width: 77px;
  height: 29px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  box-sizing: border-box;
  background-color: #21436F;
  display: inline-flex;
    align-items: baseline;
    justify-content: center;
    background-color: #1a3b66;
    color: #ffffff;
    font-size: 13px;
    font-weight: 700;
    line-height: 1;
    border-radius: 12px;
    white-space: nowrap;
    height: 29px;
    box-sizing: border-box;
    padding: 8px 8px;
        --mt-min: 5;
    --mt-max: 3.5;
    margin-top: var(--mt-val);
}

.mini-text {
  --f-min: 10;
  --f-max: 10;
}

.pg-description {
  font-family: "Zen Kaku Gothic New", sans-serif;
  --f-min: 14;
  --f-max: 14;
  line-height: 32px;
  color: #333333;
  margin: 0;
  letter-spacing: 0;
}

/* 小学生向け・高校生向け (77px) */
.w-short {
  width: 77px;
  --f-min: 13;
  --f-max: 13;
}

/* 中学生 / 高校生向け (135px) */
.w-long {
  width: 135px;
}

@media (min-width: 1367px) {
  .pg-badge {
    border-radius: 0.878vw;
    height: 2.1vw;
    height: 29px;
    display: flex;
    justify-content: center;
  }

  /* 幅の書き換え */
  .w-short {
    width: 5.58vw;
  }

  .w-long {
    width: 9.876vw;
  }

  /* フォントサイズの書き換え */
  .text-main {
    font-size: 0.951vw;
  }
  .text-sub {
    font-size: 0.732vw;
    margin-left: 0.146vw;
  }
}

/* 共通設定：擬似要素の準備 */
.pg-description::before,
.pg-description::after {
  content: "";
  display: block;
  width: 0;
  height: 0;
}

.pg-description::before {
  margin-top: calc((1em - 33px) / 2);
}

.pg-description::after {
  margin-bottom: calc((1em - 33px) / 2);
}

@media screen and (max-width: 768px) {
  .pg-title {
    margin-bottom: 10px;
  }

  .pg-container {
    flex-direction: column;
    gap: 31px;
  }

  .pg-image-wrapper {
    max-width: 100%;
  }

  .pg-header {
    justify-content: flex-start;
    align-items: flex-start;
    flex-direction: column;
  }

  .pg-description {
    line-height: 31.5px;
  }
}

.eng-near-intro__container {
  font-family: "Zen Kaku Gothic New", sans-serif;
  letter-spacing: -0.02em;
  --f-min: 16;
  --f-max: 16;
  line-height: 44px;
  color: #333333;
  text-align: left;
  --mb-min: 77;
  --mb-max: 72;
  margin-bottom: var(--mb-val);
}

.eng-near-intro__underline-dashed {
  position: relative;
  --pb-min: 5;
  --pb-max: 9;
  padding-bottom: var(--pb-val);
}
.eng-near-intro__underline-dashed::after {
  content: '';
  position: absolute;
  
  /* 線の位置を下端にします */
  bottom: 0; 
  
  /* --- ここがポイント！線の幅を短くします --- */
  left: 0em;
  right: 0.6em;
  
  /* 破線のスタイル（元の設定と同じ色・太さ・種類） */
  border-bottom: 2px dashed #21436F;
}
.eng-near-intro__bold-text,
.eng-near-intro__highlight-text {
  font-weight: 700;
  --f-min: 20;
  --f-max: 20;
}

.eng-near-intro__highlight-text {
  color: #1a3c6e;
}

.eng-near-intro__bold-text {
  color: #222222;
}

.p-eng-near-intro__highlight-text {
  --f-min: 20;
  --f-max: 20;
  color: #21436F;
  letter-spacing: -0.3px;
  font-family: "Zen Kaku Gothic New", sans-serif;
}

.near_text {
  --f-min: 20;
  --f-max: 20;
}

@media screen and (max-width: 768px) {
  .eng-near-intro__highlight-text {
    letter-spacing: 0.3px;
  }

  .p-eng-near-intro__highlight-text {
    color: #21436F;
  }

  .near_text {
    color: #21436F;
  }
  .eng-near-intro__container {
    line-height: 2.75em;
  }
  .eng-near-intro__container::before {
    content: "";
    display: block;
    width: 0;
    height: 0;
    margin-top: calc((1em - 32px) / 2);
  }

  .eng-near-intro__container::after {
    content: "";
    display: block;
    width: 0;
    height: 0;
    margin-bottom: calc((1em - 32px) / 2);
  }

  .eng-near-intro__underline-dashed {
    letter-spacing: 0.3px;
  }
}

/* ==========================================================================
   推進テーマ
   ========================================================================== */
.suisin-theme-box {
  position: relative;
  height: 475px;
}

.suisin-text {
  font-family: "Zen Kaku Gothic New", sans-serif;
  position: absolute;
  top: 22px;
  z-index: 2;
  --f-min: 18;
  --f-max: 18;
  letter-spacing: -0.033em;
}

.suisin-text .bottom {
  line-height: 35px;
  font-size: 18px;
  letter-spacing: 0px;
}

.suisin-img {
  position: absolute;
  bottom: -68px;
  right: 6vw;
  z-index: 1;
}

.suisin-img img {
  width: 100%;
  height: auto;
  display: block;
}

.suisin-theme-box-pick {
  display: flex;
  align-items: flex-end;
  gap: 10px;
  --mt-min: 12;
  --mt-max: 11;
  margin-top: var(--mt-val);
  --mb-min: 9;
  --mb-max: 10;
  margin-bottom: var(--mb-val);
  flex-wrap: wrap;
}

.suisin-theme-box-pick .pick {
  color: #21436F;
  --f-min: 24;
  --f-max: 24;
  background: #fff;
  padding: 0px 8px;
  border-radius: 6px;
}

.no-text {
  margin-left: -5px;
}

@media screen and (max-width: 768px) {
  .suisin-theme-box {
    height: auto;
    text-align: left;
  }
  .suisin-theme-box-pick{
    gap: 11px;
  }
  .no-text{
    margin-left: 0px;
  }
  .suisin-text,
  .suisin-img {
    position: static;
    max-width: 100%;
    width: 100%;
  }

  .suisin-text {
    margin-bottom: 43px;
  }
}

/* =========================================================
   スライダー PC用コントロールエリア（スクロールバー ＋ 矢印）
   ========================================================= */

/* ベース設定 */
.slider-container {
  width: 100%;
  max-width: none !important;
  overflow: hidden;
  --mt-min: 2;
  --mt-max: 42;
  margin-top: var(--mt-val);
  padding-bottom: 6rem;
}

.swiper {
  width: 100%;
  padding: 0 !important;
  overflow: visible !important;
}

.swiper-slide {
  height: auto;
  box-sizing: border-box;
}

.slide-image {
  background-color: #dbe4e8;
  overflow: hidden;
}

.slide-image img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}

.slide-title {
  --f-min: 20;
  --f-max: 24;
}

.swiper-pc .slide-text 
  font-family: "Zen Kaku Gothic New", sans-serif;{
  --f-min: 14;
  --f-max: 14;
  letter-spacing: 0;
}

/* ------------------------------------------------
   スライダー PC・タブレット (769px以上)
   ------------------------------------------------ */
@media screen and (min-width: 769px) {
  /* スマホ用を完全非表示 */
  .swiper-sp,
  .swiper-sp_control {
    display: none !important;
  }

  .swiper-pc {
    display: block !important;
    padding: 2rem 2rem 0 2rem !important;
    margin: -2rem -2rem 0 -2rem !important;
  }

  .swiper-pc .swiper-slide {
    width: 64% !important;
    margin-right: 5rem !important;
    display: flex !important;
    flex-direction: column !important;
    height: auto !important; /* 最も高いスライドに合わせる */
  }

  /* カードデザイン */
  .swiper-pc .slide-image {
    width: 100%;
    height: 25rem;
    border-radius: 4.5rem 4.5rem 0 0;
    z-index: 1;
    flex-shrink: 0;
  }

  .swiper-pc .slide-content {
    background-color: #f0f4f7;
    border-radius: 4.5rem;
    padding: 5rem 5rem 3rem;
    margin-top: -5rem; /* 重なり */
    position: relative;
    z-index: 2;
    flex-grow: 1 !important;
    min-height: 29rem;
  }

  .swiper-pc .slide-title {
    font-family: "Zen Kaku Gothic New", sans-serif;
    --f-min: 20;
    --f-max: 24;
    font-weight: 700;
    color: #0f2d52;
    --mb-min: 15;
    --mb-max: 15;
    margin-bottom: var(--mb-val);
  }

  .slide-title-sub {
    --f-min: 12;
    --f-max: 16;
  }

  .swiper-pc .slide-text {
    line-height: 32px;
  }

  /* --- PCコントローラー (横並び) --- */
  .controls-pc {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: 7rem;
    --mt-min: 17;
    --mt-max: 17;
    margin-top: var(--mt-val);
    padding-right: 3rem;
    position: relative;
    width: 100%;
  }

  /* スクロールバー */
  .pc-scrollbar {
    position: relative !important;
    width: 100% !important;
    height: 2px !important;
    background: transparent !important;
    border-radius: 0 !important;
    border-bottom: 2px dotted #21436F; /* 点線 */
    left: auto !important;
    bottom: auto !important;
  }

  .pc-scrollbar .swiper-scrollbar-drag {
    background: #21436F !important;
    height: 3px !important;
    top: 0px !important;
    border-radius: 2px !important;
  }

  /* 矢印ボタン */
  .nav-arrows {
    display: flex;
    gap: 7.5rem;
  }

  .pc-prev,
  .pc-next {
    position: static !important;
    width: 46px;
    height: 46px;
    margin: 0 !important;
    border-radius: 50%;
    color: #0f2d52;
    display: flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    transition: 0.3s;
    background: transparent;
  }

  /* PC用アイコンサイズ */
  .pc-prev:after,
  .pc-next:after {
    font-size: 26px !important;
    font-weight: bold;
  }

  .pc-prev:hover,
  .pc-next:hover {
    border-color: #0f2d52 !important;
  }

  .pc-prev.swiper-button-disabled,
  .pc-next.swiper-button-disabled {
    opacity: 0.4;
    cursor: default;
    pointer-events: none;
  }
}

/* ------------------------------------------------
   スライダー スマホ (786px以下)
   ------------------------------------------------ */
@media screen and (max-width: 768px) {
  /* PC用を完全非表示 */
  .swiper-pc {
    display: none !important;
  }

  .swiper-sp,
  .swiper-sp_control {
    display: block !important;
  }

  /* --- レイアウト --- */
  .swiper-sp {
    margin-left: 9rem !important;
  }

  .swiper-sp .swiper-slide {
    max-width: 318px;
    margin-right: 2rem !important;
    display: flex !important;
    flex-direction: column !important;
    height: auto !important;
  }

  .swiper-backface-hidden .swiper-slide {
    height: 498px !important;
  }

  /* カードデザイン */
  .swiper-sp .slide-image {
    width: 100%;
    border-radius: 3rem 3rem 0 0;
    z-index: 1;
    flex-shrink: 0;
  }

  .swiper-sp .slide-content {
    background-color: #f0f4f7;
    border-radius: 3rem;
    padding: 4rem 3rem 3rem;
    margin-top: -3.5rem; /* 重なり */
    position: relative;
    z-index: 2;
    box-shadow: 0 0.5rem 1.5rem rgba(0, 0, 0, 0.05);
    flex-grow: 1 !important;
  }

  .swiper-sp .slide-title {
    font-weight: bold;
    color: #0f2d52;
    margin-bottom: 1.5rem;
  }

  .swiper-sp .slide-text {
    font-size: 1.3rem;
    line-height: 32px;
  }

  /* --- SPコントローラー --- */
  .controls-sp {
    display: block;
    margin-top: 4.8rem;
    margin-inline: 2rem;
  }

  /* スクロールバー */
  .sp-scrollbar {
    position: relative !important;
    width: 100% !important;
    height: 2px !important;
    background: transparent !important;
    border-bottom: 2px dotted #21436F;
    left: auto !important;
    bottom: auto !important;
    margin-bottom: 4rem;
  }

  .sp-scrollbar .swiper-scrollbar-drag {
    background: #0f2d52 !important;
    height: 4px !important;
    top: -1px !important;
    border-radius: 2px !important;
  }

  /* 矢印ボタン */
  .nav-arrows-sp {
    display: flex;
    justify-content: center;
    gap: 8rem;
    width: 100%;
  }

  .sp-prev,
  .sp-next {
    position: static !important;
    width: auto !important;
    height: auto !important;
    margin: 0 !important;
    border: none !important;
    background: transparent !important;
    color: #0f2d52;
    opacity: 1;
  }

  /* スマホ用アイコンサイズ */
  .sp-prev:after,
  .sp-next:after {
    font-size: 24px !important;
    font-weight: 300;
  }

  .sp-prev.swiper-button-disabled,
  .sp-next.swiper-button-disabled {
    opacity: 0.3;
  }
}

.swiper-button-prev:after,
.swiper-rtl .swiper-button-next:after,
.swiper-button-next:after,
.swiper-rtl .swiper-button-prev:after {
  color: #21436F;
}

@media screen and (max-width: 768px) {
  /* コンテナをはみ出させるために、親の切り取り制限を解除 */
  .l-main {
    overflow: visible;
  }

  /* 左右の20pxを打ち消して画面いっぱいにする */
  .slider-container {
    margin-inline: -20px; /* 親の20px分をマイナスで外に引っ張る */
    width: calc(100% + 40px); /* 横幅を左右20pxずつ（計40px）広げる */
  }
}