@charset "UTF-8";

/* =========================================
   Variables & Reset
   ========================================= */
:root {
  --color-primary: #e86c00;
  --color-secondary: #b02428;
  --color-text: #4e3f33;
  --color-accent: #77c7c0;
  --color-base: #fffcf5;
  --font-main: "Zen Maru Gothic", sans-serif;
  --font-display: "Darumadrop One", cursive;
}

* {
  box-sizing: border-box;
}

body {
  margin: 0;
  padding: 0;
  font-family: var(--font-main);
  color: var(--color-text);
  background-color: var(--color-base);
  overflow-x: hidden;
  width: 100%;
  position: relative;
}

a {
  text-decoration: none;
  color: inherit;
  transition: opacity 0.3s ease, transform 0.3s ease;
}
a:hover {
  opacity: 0.8;
}
img {
  display: block;
  max-width: 100%;
  height: auto;
}

/* =========================================
   Utilities
   ========================================= */
.container {
  margin: 0 auto;
  padding: 0 0px;
}
.flex-center {
  display: flex;
  justify-content: center;
  align-items: center;
}
.text-center {
  text-align: center;
}
.text-justify {
  text-align: justify;
}
.font-bold {
  font-weight: 700;
}
.font-medium {
  font-weight: 500;
}
.font-black {
  font-weight: 900;
}
.display-font {
  font-family: var(--font-display);
}
.relative {
  position: relative;
}
.absolute {
  position: absolute;
}
.w-full {
  width: 100%;
}
.h-full {
  height: 100%;
}
.overflow-hidden {
  overflow: hidden;
}
main {
  position: relative;

}

.sp-decoration-layer {
  display: none;
}
.sp-decoration-frame32 {
  display: none;
}
.sp-decoration-star2 {
  display: none;
}

/* =========================================
   fonts
   ========================================= */

h1 {
  font-size: 32px;
}

p {
  font-size: 20px;
}

@media screen and (max-width: 1199px) {

  h1,h2,h3,h4,h5,h6 {
   font-size: 20px;
}

  p {
    font-size: 16px;
  }
}

/* =========================================
   Tree Illustrations
   ========================================= */

.tree-content-wrapper{
  position: relative;
  width: 100%;
  height: 100%;
}

.tree-container {
  position: absolute;
  width: 350px; /* 画像を少し小さくするため幅を縮小 */
  height: 860px;
  left: 0px;
  top: -62px;
  z-index: 0;
  pointer-events: none;
}
.tree-img {
  width: 100%;
  height: 100%;
  object-fit: contain;
}

.tree2-container {
  position: absolute;
  width: 254px;
  height: 426px;
  right: 0;
  top: 324px;
  z-index: 15;
  pointer-events: none;
}
.tree2-img {
  width: 100%;
  height: 100%;
  object-fit: contain;
}

/* =========================================
   Header
   ========================================= */
header {
  width: 100%;
  max-width: 1440px;
  margin: 0 auto;
  position: relative;
  z-index: 50;
  height: 124px; /* Fixed height for PC absolute positioning */
  padding: 0; /* Remove padding for precise coordinate mapping */
}

/* PC Header Content */
.header-pc-content {
  width: 100%;
  height: 100%;
}

.header-logo-container {
  position: absolute;
  left: 121px;
  top: 24px;
  width: 100px;
  height: 98px;
  flex-shrink: 0;
  display: flex;
  justify-content: center;
  align-items: center;
}
.logo-img {
  width: 100%;
  height: auto;
  object-fit: contain;
}

.nav-menu {
  position: absolute;
  left: 712px;
  top: 24px;
  display: flex;
  flex-wrap: nowrap; /* カラム落ちさせない */
  gap: 48px;
  align-items: center;
}

.nav-item {
  background-color: #fff;
  display: flex;
  flex-direction: column;
  gap: 0; /* ユーザーの指摘により余白を削除 */
  height: 100px;
  width: 116px;
  align-items: center;
  justify-content: center;
  padding: 8px;
  border-radius: 20px;
  box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
  flex-shrink: 0;
  position: relative;
}
.nav-item:hover {
  box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
  transform: translateY(-2px);
}

.nav-icon {
  width: 47px;
  height: 47px;
  position: relative;
  display: flex;
  justify-content: center;
  align-items: center;
  flex-shrink: 0;
}
.nav-icon-img {
  width: 100%;
  height: 100%;
  object-fit: contain;
}

.nav-label {
  margin: 0; /* ブラウザのデフォルトマージン（特に上部）を削除 */
  font-size: 13px;
  font-weight: 700;
  line-height: 15px;
  text-align: center;
  white-space: pre-wrap;
  color: var(--color-text);
}

/* SP Header (Hidden by default on PC) */
.header-sp-container {
  display: none; /* PC default */
}

/* =========================================
   Hero Section
   ========================================= */
#hero {
  position: relative;
  width: 100%;
  height: 700px;
  z-index: 10;
}

/* Hero Image Slider */
.hero-image-wrapper {
  position: absolute;
  left: 255px;
  top: 25px; /* ヘッダー下の位置に修正 (Figma Y=149 - Header 124 = 25) */
  width: 1185px;
  height: 600px;
  z-index: 0;
}

.hero-main-img-container {
  position: relative;
  width: 100%;
  height: 100%;
  border-radius: 60px 60px 60px 0; /* 左下のみ角丸なし */
  overflow: hidden;
}
/* JS-based Fade */
.hero-slide-img {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  opacity: 0;
  transition: opacity 1.5s ease-in-out; /* 1.5s fade duration */
}

.hero-slide-img img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block; /* 余白除去のため */
}

.hero-slide-img.active {
  opacity: 1;
}

/* Floating Items */
.hero-float-item {
  position: absolute;
  z-index: 20; /* Ensure above slider */
}

.hero-item-1 {
  left: 220px;
  top: 10px;
  width: 235px;
  height: 268px;
}

.rotated-container {
  position: absolute;
  left: -10px;
  top: -7px;
  width: 235px;
  height: 325px;
  display: flex;
  align-items: center;
  justify-content: center;
  overflow: visible !important;
  transform: scale(1.1); /* 比率計算なしで拡大 */
}
.rotate-wrapper {
  transform: none; /* ユーザーの要望により回転を解除して水平にする */
  overflow: visible !important; /* CRITICAL */
}
/* Top Item 1 Internal Layout */
.top-item1-container {
  position: relative;
  width: 211px;
  height: 294px;
  overflow: visible !important; /* CRITICAL */
}
.top-item1-bg {
  width: 100%;
  height: 100%;
  object-fit: contain;
  position: relative;
  z-index: 1;
}

/* Character & Note Overlays */
.character-decoration {
  position: absolute;
  left: 270px; /* Adjusted: Parent left (220) + Old left (50) */
  top: 440px;  /* Adjusted: Parent top (10) + Old top (430) */
  width: 500px;
  height: 172px;
  z-index: 30;
  max-width: none; /* これが重要：親要素の幅制限を解除 */
}
.note-decoration {
  position: absolute;
  left: 1074px; /* 右基準(right)から左基準(left)に変更して位置を固定 */
  top: 10px;
  width: 144.82px;
  height: 151.91px;
  z-index: 25;
  pointer-events: none;
}

.hero-item-2 {
  left: 843px;
  top: 400px;
  width: 248px;
  height: 259px;
}
.top-item2-container {
  position: relative;
  width: 100%;
  height: 100%;
}
.top-item2-img {
  width: 100%;
  height: 100%;
  object-fit: contain;
}

/* =========================================
   About Section
   ========================================= */


.about {
  padding: 80px 0;
}

.about__inner {
  max-width: 1200px;
  margin: 0 auto;
  display: flex;
  align-items: flex-start;
  gap: 40px;
}

/* 左テキスト */
.about__text {
  flex: 1;
  padding-top: 40px;
  width: 593px;
}


.about-heading h1 {
  color: #c0392b;
  line-height: 1.8;
  margin-bottom: 32px;
  text-align: justify;
}


/* 右ビジュアルエリア */
.about__visual {
  position: relative;
  width: 580px;
  flex-shrink: 0;
  height: 700px; /* 装飾が散らばる高さ分確保 */
}

.about__main-photo {
  position: absolute;
  width: 378px;
  top: 55px;
  left: 40%;
  transform: translateX(-50%);
  z-index: 5;
}

.about__photo-piano {
  position: absolute;
  width: 260px;
  top: 0;
  right: 0;
  z-index: 3;
  border-radius: 50%;
}

.about__badge {
  position: absolute;
  width: 375px;
  bottom: 0;
  right: 0;
  z-index: 4;
}

.about__badge img {
  width: 100%;
}

.about__girl {
  position: absolute;
  width: 120px;
  bottom: 0;
  left: 20px;
  z-index: 3;
}

.about__globe {
  position: absolute;
  width: 90px;
  top: 0;
  left: 110px;
  z-index: 1;
}

.about__egg {
  position: absolute;
  width: 117px;
  top: 320px;
  right: 10px;
  z-index: 4;
}

.about__triangle {
  position: absolute;
  width: 80px;
  bottom: 200px;
  left: 100px;
  z-index: 3;
}

.about__star1 {
  position: absolute;
  width: 53px;
  top: 260px;
  right: 0;
}

.about__star2 {
  position: absolute;
  width: 94px;
  top: 5%;
  left: 0;
}

@media screen and (max-width: 1199px) {

  .about__inner {
    display: block;
  }

  .about__photo-piano,
  .about__girl,
  .about__globe,
  .about__egg,
  .about__star1,
  .about__star2,
  .about__triangle {
  display: none;
  }

  .about__visual {
    width: 90%;
    height: auto;
    margin: 0 auto;
    display: flex;
    align-items: center;
    justify-content: center;
    flex-wrap: wrap;
  }

  .about__main-photo,.about__badge {
    position: static;
    width: 300px;
    transform: none;
  }
  
  .about__badge img {
  width: 300px;
  }

  .about__text {
    width: 90%;
    margin: 0 auto 9vh auto;
  }
}

/* =========================================
   Features Section
   ========================================= */
#features {
  
  display: flex-start;
  justify-content: center;
  position: relative;
  z-index: 20;
}
.features-box {
  background-color: var(--color-primary);
  color: #fffcf5;
  border-radius: 20px;
  padding: 40px 48px;
  margin: 0 auto;
  max-width: 1200px;
  width: 100%;
  flex-shrink: 0;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 0px;
  text-align: center;
}
.features-title {
  font-size: 32px;
  font-weight: 700;
}
.features-text {
  
  line-height: 30px;
  margin-top: 0;
  margin-bottom: 0;
}

/* =========================================
   News Section
   ========================================= */
#news {
  
  display: flex;
  justify-content: flex-start;
  position: relative;
  z-index: 20;
}
.news-grid {
  display: flex;
  flex-wrap: nowrap;
  gap: 24px;
  justify-content: center;
  margin-left:80px;
  width: 1200px;
  flex-shrink: 0;
  
}
.news-card {
  flex-shrink: 0;
  background: #fff;
  border: 4px solid var(--color-primary);
  border-radius: 20px;
  padding: 56px 56px 64px 56px;
  width: 100%;
  max-width: 587px;
  display: flex;
  flex-direction: column;
  align-items: center;
}
.news-card-body {
  display: flex;
  flex-direction: column;
  align-items: center;
  width: 100%;
}
.news-title {
  font-family: var(--font-display);
  font-size: 48px;
  color: var(--color-primary);
  margin-bottom: 24px;
}
.news-list {
  display: flex;
  flex-direction: column;
  gap: 24px;
  width: 100%;
}
.news-item {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px 24px;
  
  line-height: 35px;
}
.news-item p {
  margin: 0px;
  }
.news-divider {
  height: 1px;
  width: 100%;
  border-top: 1px solid var(--color-text);
}
.news-divider-solid {
  height: 1px;
  width: 100%;
  background-color: var(--color-text);
}
.btn-more {
  background-color: var(--color-primary);
  border: 2px solid var(--color-primary);
  border-radius: 10px;
  padding: 8px 32px;
  color: #fff;
  display: inline-flex;
  justify-content: center;
  align-items: center;
  gap: 0px;
  padding-left: 40px;
  padding-top: 10px;
  padding-bottom: 10px;
  padding-right: 40px;
  font-weight: 900;
  margin-top: 10px;
  
  align-self: center;
}
    .btn-more p {
      margin: 0;      /* <p>タグのデフォルトの余白を消す */
      line-height: 1; /* 行の高さを文字サイズぴったりにする */
      
    }
.btn-more:hover {
  background-color: #fff;
  color: var(--color-primary);
}
.btn-more img {
  filter: brightness(0) invert(1);
}
.btn-more:hover img {
  filter: none;
}
.btn-more-icon {
  width: 24px;
  height: 24px;
}

/* =========================================
   Programs Section
   ========================================= */
.contents-section {
  max-width: 1200px;
  width: 90%;
  margin: 0 auto;
}

.contents-title {
  font-family: var(--font-display);
  text-align: center;
  font-size: 48px;
  margin-bottom: 36px;
  letter-spacing: 0.05em;
}

.contents-grid {
  display: flex;
  flex-direction: row;
  flex-wrap: wrap;
  gap: 28px;
  justify-content: center;
  align-items: flex-start;
}

.contents-card {
  position: relative;
  flex: 1;
  width: 300px;
  min-width: 300px;
  max-width: 300px;
  border-radius: 100px 100px 100px 0 / 100px 100px 100px 0;
  overflow: hidden;
  border: 4px solid #4ec4b8;
  cursor: pointer;
  height: 300px;
}

  .contents-card::after {
  content: '';
  position: absolute;
  inset: 0;
  background: rgba(255, 255, 255, 0);
  transition: background 0.3s ease;
  pointer-events: none;
  }

.contents-card:hover::after {
  background: rgba(255, 255, 255, 0.4);
}

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

    /* プレースホルダー背景（画像なし時） */
    .card-placeholder {
      width: 100%;
      height: 100%;
      display: flex;
      align-items: center;
      justify-content: center;
    }

    .card-placeholder.classroom {
      background: linear-gradient(135deg, #fffde7 0%, #fff9c4 50%, #f9f0a0 100%);
    }

    .card-placeholder.lesson {
      background: linear-gradient(135deg, #f0fafa 0%, #d0f0ec 100%);
    }

    .card-placeholder.faq {
      background: linear-gradient(135deg, #fce4ec 0%, #f8bbd0 100%);
    }

    /* 教室のSVGイラスト */
    .card-placeholder svg {
      opacity: 0.35;
      width: 60%;
      height: 60%;
    }

    .card-label {
      position: absolute;
      top: 50%;
      left: 50%;
      transform: translate(-50%, -50%);
      font-size: 1.05rem;
      font-weight: 900;
      padding: 8px 16px;
      border-radius: 20px;
      letter-spacing: 0.04em;
      line-height: 1.4;
      text-align: center;
      white-space: nowrap;
      -webkit-text-stroke: 6px #FFFCF5;
      paint-order: stroke fill;
    }

/* =========================================
   CTA Section
   ========================================= */
#cta {
  position: relative;
  width: 100%;
  flex-shrink: 0;
  height: auto; /* 高さを可変に */
  min-height: 442px;
  padding: 100px 0 60px; /* 上下の余白を確保 */
  margin-top: 80px;
  background-color: var(--color-primary);
  overflow: visible;
  z-index: 20;
  display: flex;
  flex-direction: column;
  align-items: center; /* 横方向の中央寄せ */
  justify-content: center;
}

.cta-title {
  position: relative; /* 通常配置に戻す */
  z-index: 10;
  font-weight: 900;
  font-size: 44px;
  text-align: center;
  color: #fff;
  white-space: nowrap;
  margin: 0;
  line-height: 1.2;
}

.cta-title p {
  margin: 0;
}

.cta-bubble1 {
  position: absolute;
  left: calc(50% - 241px);
  top: -25px;
  border-radius: 30px 30px 0 30px;
  border: 4px solid var(--_, #E86C00);
  background: #fff;
  border-top-left-radius: 9999px;
  border-bottom-left-radius: 9999px;
  border-top-right-radius: 9999px;
  padding: 4px 40px;
  color: var(--color-primary);
  font-weight: 700;
  
  z-index: 20;
}

.cta-bubble1 p {
  margin: 5px 0px;
  padding: 0;
}

.cta-bubble {
  position: absolute;
  left: calc(50% - 41px);
  top: 20px;
  background: #fff;
  border-top-right-radius: 9999px;
  border-bottom-right-radius: 9999px;
  border-top-left-radius: 9999px;
  padding: 4px 40px;
  color: var(--color-primary);
  font-weight: 700;
  
  z-index: 20;
}

.cta-bubble p {
  margin: 10px 5px;
  padding: 0;
}

.cta-price {
  position: absolute;
  left: calc(50% - 20px);
  transform: translateX(-50%);
  top: 270px;
  color: #fff;
  
  line-height: 35px;
  z-index: 10;
}

.cta-button-container {
  position: relative; /* 通常配置に戻す */
  margin-top: 40px; /* タイトルとの間隔 */
  z-index: 20;
}

.cta-link-new {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 8px;
  background-color: #fff100;
  padding: 24px 48px;
  border-radius: 10px;
  text-decoration: none;
  box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
  transition: transform 0.3s;
}

.cta-link-new:hover {
  transform: scale(1.05);
  opacity: 1;
}

.cta-text-main {
  color: var(--color-primary);
  font-family: var(--font-main);
  font-weight: 900;
  font-size: 52px;
  text-align: center;
  line-height: 1.2;
}

.cta-text-sub {
  color: var(--color-text);
  font-family: var(--font-main);
  
  font-weight: 400;
}

.cta-text-action {
  color: var(--color-primary);
  font-family: var(--font-main);
  
  font-weight: 700;
}

.cta-illustration {
  position: absolute;
  left: calc(50% + 240px);
  bottom: 0; /* 下端に固定 */
  width: 195.85px;
  height: 244px;
  z-index: 10;
}

/* =========================================
   Instagram Section
   ========================================= */
#instagram {
  padding: 80px 16px;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 32px;
  position: relative;
  z-index: 20;
}
.insta-header {
  text-align: center;
}
.insta-title {
  font-family: var(--font-display);
  font-size: 54px;
  color: var(--color-primary);
  font-weight: 700;
}
#sbi_images .sbi_item{
border-radius: 15px;
border: 3px solid var(--color-primary);
}
/*
.insta-scroll-container {
  width: 100%;
  overflow-x: auto;
  padding-bottom: 16px;
}
.insta-scroll-track {
  display: flex;
  gap: 24px;
  width: max-content;
  padding: 0 16px;
}
.insta-item {
  width: 357px;
  height: 357px;
  flex-shrink: 0;
  border: 4px solid var(--color-primary);
  border-radius: 20px;
  position: relative;
  overflow: hidden;
}
.insta-item img {
  position: absolute;
  left: -176%;
  top: -95%;
  max-width: none;
  width: 558%;
  height: 361%;
}
  */
.btn-follow {
  background-color: var(--color-primary);
  color: #fff;
  padding: 12px 48px;
  border-radius: 9999px;
  font-weight: 700;
  
  box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
}
.btn-follow:hover {
  background-color: #d65f00;
}

/* =========================================
   Footer Container
   ========================================= */
.footer-wrapper {
  width: 100%;
  background-color: var(--color-base);
  position: relative;
  z-index: 20;
}
.contact-info-section {
  max-width: 1200px;
  margin: 0 auto;
  padding: 48px 0;
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 48px;
}
.map-container {
  width: 586px;
  height: 522px;
  position: relative;
  overflow: hidden;
  border: 2px solid rgba(78, 63, 51, 0.1);
  flex-shrink: 0;
}
.info-details {
  display: flex;
  flex-direction: column;
  width: 556px;
}
.info-header {
  display: flex;
  flex-direction: column;
}
.info-label-box {
  background-color: var(--color-text);
  padding: 2px 16px;
  border-radius: 10px;
  color: #fffcf5;
  font-weight: 500;
  margin-bottom: 4px;
}
.info-row {
  display: flex;
  align-items: center;
  gap: 16px;
  margin-top: 8px;
  
}
.info-row-mail {
  margin-bottom: 16px;
}
.info-row p {
  margin-bottom: 4px;
  margin-top: 4px;
} 

.info-table {
  display: flex;
  flex-direction: column;
  border-top: 1px solid var(--color-text);
}
.info-header .display-font {
  font-size: 48px;
  line-height: 53.5px;
  margin-top: 0px;
  margin-bottom: 4px;

}
.sp-br {
    display: none;
}
.info-address {
  
  font-weight: 500;
}
.info-address p {
  margin: 0;
}
.info-row p {
  font-weight: 500;
  font-size: 24px;
}
.table-label.label-period {
  padding-top: 4px;
}
.table-content-period p:first-child {
  margin-bottom: 0;
}
.table-row {
  display: flex;
  gap: 32px;
  
  color: var(--color-text);
}
.table-label {
  font-weight: 500;
  min-width: 80px;
}
.table-divider {
  height: 1px;
  background-color: var(--color-text);
  width: 100%;
}

/* =========================================
   Footer (Red Bar)
   ========================================= */
.main-footer {
  width: 100%;
  min-width: 1440px;
  background-color: var(--color-secondary);
  height: 306px;
  margin-top: 80px;
  position: relative;
  color: #fff;
}
.footer-content {
  max-width: 1200px;
  margin: 0 auto;
  position: relative;
  height: 100%;
}
.footer-logo-area {
  position: absolute;
  left: 93px;
  top: 50px;
  display: flex;
  align-items: center;
  gap: 16px;
}
.footer-address {
  position: absolute;
  left: 93px;
  top: 133px;
  
  font-weight: normal;
}
.footer-sns {
  position: absolute;
  left: 96px;
  top: 250px;
  width: 42px;
  height: 42px
}
.footer-nav {
  position: absolute;
  left: 740px;
  top: 50px;
  display: flex;
  gap: 48px;
}
.footer-nav-item {
  background-color: #fff;
  color: var(--color-secondary);
  display: flex;
  flex-direction: column;
  gap: 4px;
  height: 100px;
  width: 116px;
  align-items: center;
  justify-content: center;
  padding: 8px;
  border-radius: 20px;
}
.footer-nav-icon {
  width: 47px;
  height: 47px;
  position: relative;
  display: flex;
  align-items: center;
  justify-content: center;
}
.sticky-footer-nav{
  display: none;
}

/* =========================================
   Responsive Adjustments (PC to Tablet)
   ========================================= */
.pc-hamburger-btn {
  display: none;
}

@media screen and (max-width: 1080px) {
  header {
    z-index: 200; /* メニューオーバーレイ(100)より上にする */
  }

  .nav-menu {
    display: none; /* 1080px以下でPCナビゲーションを非表示 */
  }
  
  .pc-hamburger-btn {
    display: flex;
    position: absolute;
    right: 16px; /* スマホと同じように画面右端に余白 */
    top: 24px; /* PCのnav-itemと同じ上下位置 */
    background-color:var(--color-secondary);
    flex-direction: column;
    gap: 18px; /* 線の間隔 */
    height: 100px;
    width: 116px;
    align-items: center;
    justify-content: center;
    border-radius: 20px;
    box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
    cursor: pointer;
    z-index: 200;
    transition: transform 0.3s ease, box-shadow 0.3s ease;
  }

  .pc-hamburger-btn:hover {
    box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
    transform: translateY(-2px);
  }

  .pc-hamburger-bar {
    width: 60px;
    height: 6px;
    border-radius: 4px;
    background: #FFF;
    transition: transform 0.6s ease, opacity 0.6s ease;
    transform-origin: center;
    position: relative;
  }

  /* ハンバーガーメニューのアニメーション (バツ印) */
  .pc-hamburger-btn.active .pc-hamburger-bar {
    position: absolute;
    top: 50%;
    left: 50%;
    translate: -50% -50%;
  }

  .pc-hamburger-btn.active .pc-hamburger-bar:nth-child(1) {
    transform: rotate(45deg);
  }
  .pc-hamburger-btn.active .pc-hamburger-bar:nth-child(2) {
    opacity: 0;
  }
  .pc-hamburger-btn.active .pc-hamburger-bar:nth-child(3) {
    transform: rotate(-45deg);
  }
}

/* =========================================
   Responsive Adjustments (SP)
   ========================================= */

@media screen and (max-width: 1199px) {
  .tree2-container img {
     display: none;
  }

  .tree-container,
  .tree2-container,
  .decoration-frame-86,
  .decoration-star2,
  .decoration-layer1,
  .decoration-layer2,
  .decoration-star1,
  .decoration-sunnysideup,
  .decoration-frame32,
  .decoration-triangle,
  .decoration-layer3 {
    display: none;
  }

  /* Reset Header for SP */
  header {
    height: auto;
    padding: 10px 16px;
    margin-top: 0;
    margin-bottom: 10px;
    z-index: 200; /* オーバーレイ(100)より上にする */
  }

  /* Hide PC Header, Show SP Header */
  .header-pc-content {
    display: none;
  }
  .header-sp-container {
    position: fixed;
    display: flex;
    justify-content: space-between;
    align-items: center;
    width: 90%;
    height: 50px;
    z-index: 101; /* Menu Overlay(100)より上にする */
    left: 50%;         /* 追加 */
    transform: translateX(-50%); /* 追加 */
  }
  .sp-logo-icon {
    position: relative;
    top:4px;
    width: 50px;
    height: 50px;
  }
  .sp-logo-icon img {
    width: 100%;
    height: 100%;
    object-fit: contain;
  }
  .hamburger-btn {
    top:4px;
    width: 50px;
    height: 50px;
    background: var(--color-secondary);
    border-radius: 10px;
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    gap: 6px;
    cursor: pointer;
    position: relative; /* z-indexのために必要 */
    z-index: 200; /* オーバーレイ(100)より上 */
  }
  .hamburger-bar {
    width: 30px;
    height: 3px;
    margin: 1px 0;
    border-radius: 3px;
    background: #fff;
    transition: transform 0.6s ease, opacity 0.6s ease;
    transform-origin: center;
  }

  /* ハンバーガーメニューのアニメーション (バツ印) */
  .hamburger-btn.active .hamburger-bar {
    position: absolute;
    /* 中心に配置 */
    top: 50%;
    left: 50%;
    translate: -50% -50%; /* 要素の中心を基準点に */
  }

  .hamburger-btn.active .hamburger-bar:nth-child(1) {
    transform: rotate(45deg);
  }
  .hamburger-btn.active .hamburger-bar:nth-child(2) {
    opacity: 0;
  }
  .hamburger-btn.active .hamburger-bar:nth-child(3) {
    transform: rotate(-45deg);
  }

  main.container{
    padding-top: 60px;
  }
  /* Hero */
  #hero {
    height: auto;
    padding-bottom: 40px;
    overflow: hidden;
  }
  .hero-image-wrapper {
    position: relative;
    left: 0;
    top: 0;
    width: 90%;
    height: 700px; /* Aspect ratio from SP design */
    margin: 0 auto;
  }


  .hero-main-img-container {
    border-radius: 20px;
  }

  .character-decoration {
    display: block !important;
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    z-index: 500;
    width: 250px;
    height: auto;
  }

  .hero-float-item {
    display: none;
  } /* Hide floating items on SP or adjust if needed */
  .note-decoration {
    display: none;
  } /* Simplified for SP */



  /* Features */
  .features-box {
    width: 90%;
    padding: 30px 20px;
    text-align: left;
  }
  .features-title {
    
  }
  .features-text {
    font-size: 16px;
    line-height: 1.8;
    text-align: left;
  }

  .sp-decoration-layer {
    display: block;
    width: 100%;
    padding: 0 8px;
    margin: 20px 0;
    position: relative;
    z-index: 10;
  }
  .sp-decoration-layer img {
    width: 100%;
    height: auto;
    display: block;
  }
  
  .sp-decoration-frame32 {
    display: block;
    width: 100%;
    padding: 0 8px;
    margin: -100px 0 40px 0;
    position: relative;
    z-index: 5;
  }
  .sp-decoration-frame32 .frame32-img {
    width: 100%;
    height: auto;
    display: block;
  }

  .sp-decoration-star2 {
    display: block;
    position: absolute;
    left: 10%;
    bottom: 0%;
    width: 25%;
    z-index: 6;
  }
  .sp-decoration-star2 img {
    width: 100%;
    height: auto;
  }
    .sp-decoration-sunnysideup {
    display: block;
    position: absolute;
    left: 63%;
    bottom: -3%;
    width: 30%;
    z-index: 6;
  }
  .sp-decoration-sunnysideup img {
    width: 100%;
    height: auto;
  }

  /* News */
  .news-grid {
    flex-direction: column;
    margin-left: 0;
    width: 100%;
    gap: 32px;
  }
  .news-card {
    padding: 30px 20px;
    max-width: 100%;
    border-width: 2px;
  }
  .news-title {
    font-size: 32px;
    margin-bottom: 16px;
  }
  .news-item {
    font-size: 16px;
    gap: 4px;
  }
  .btn-more {
    font-size: 16px;
    padding: 6px 20px;
  }

  /* Programs */
  .programs-card {
    width: 100%;
    max-width: 350px;
    height: auto;
    aspect-ratio: 1/1;
    padding: 40px;
  }
  .section-title {
    font-size: 32px;
  }

      /* CTA */
      #cta {
        width: 100%;
        height: auto;
        margin-top: 60px;
        margin-left: 0;
        padding: 70px 0 0px 0;
        display: flex;
        flex-direction: column;
        align-items: center;
        position: relative;
        background-color: var(--color-primary);
        overflow: visible;
      }

      /* Bubble 1: こどもに合うかわからない (Frame 82) */
      .cta-bubble1 {
        position: relative;
        left: auto;
        top: -100px;
        transform: none;
        width: calc(100% - 20%);
        margin: 0 auto 20px auto;
        background: #fff;
        border: 4px solid var(--color-primary);
        border-top-left-radius: 9999px;
        border-bottom-left-radius: 9999px;
        border-top-right-radius: 9999px;
        border-bottom-right-radius: 0;
        padding: 16px 20px;
        text-align: center;
      
        z-index: 10;
      }
      .cta-bubble1 p {
        margin: 0;
        
        font-weight: 700;
        color: var(--color-primary);
        font-family: var(--font-main);
      }

      /* Bubble 2: 詳細を知りたい (Frame 63) */
      .cta-bubble {
        position: relative;
        left: auto;
        top: -80px;
        transform: none;
        width: fit-content;
        max-width: calc(100% - 60px);
        margin: 0 10% 10px auto; /* 右寄せ */
        background: #fff;
        border: none;
        border-top-left-radius:9999px; 
        border-top-right-radius: 9999px;
        border-bottom-right-radius: 9999px;
        border-bottom-left-radius: 0;
        padding: 16px 40px;
        text-align: center;
        box-shadow: none;
        z-index: 10;
      }
      .cta-bubble p {
        margin: 0;
        
        font-weight: 700;
        color: var(--color-primary);
        font-family: var(--font-main);
      }

      .cta-title {
        position: relative;
        left: auto;
        top: -60px;
        transform: none;
        width: calc(100% - 60px);
        margin: 0 auto 0px auto;
        font-weight: 900;
        font-size: 47px;
        text-align: center;
        color: #fff;
        white-space: normal;
        line-height: 1.2;
        z-index: 10;
      }
      .cta-title p {
        margin: 0;
      }

      .cta-price {
        position: relative;
        left: auto;
        top: -50px;
        transform: none;
        width: calc(100% - 60px);
        margin: 0 auto 30px auto;
        color: #fff;
        font-size: 30px;
        line-height: 35px;
        text-align: center;
        z-index: 10;
      }
    
      .cta-button-container {
        position: relative;
        left: auto;
        transform: none;
        width: 100%;
        margin: 0 auto 20px auto; 
        display: flex;
        align-items: center;
        justify-content: center;
        z-index: 10;
      }
      
      .cta-link-new {
        padding: 16px 20px; /* スマホ用にパディングを小さく */
        width: 100%; /* 横幅いっぱいに */
        max-width: 320px; /* 広がりすぎないように */
      }
      .cta-link-new:hover {
  transform: scale(1.05);
  opacity: 1;
}

      .cta-text-main {
        font-size: 32px; /* スマホ用にフォントサイズを小さく */
      }

      .cta-text-sub {
        font-size: 14px;
      }

      .cta-text-action {
        font-size: 16px;
      }

      .cta-illustration {
        position: relative;
        left: auto;
        top: auto;
        margin: 0  auto;
        width: 100%;
        display: flex;
        justify-content: center;
        z-index: 10;
      }
      .cta-illustration img {
        width: 200px;
        height: auto;
      }

  /* Instagram */
  .insta-title {
    font-size: 32px;
  }
  
  .insta-item {
    width: 280px;
    height: 280px;
  }

  /* Footer */
  .contact-info-section {
    gap: 32px;
  }
  .map-container {
    margin-top: 60px;
    width: 90%;
    height: auto;
    aspect-ratio: 586 / 522; /* 元画像の比率を維持 */
  }
  .info-details {
    gap: 32px;
    width: 90%;
  }
  .info-header .display-font {
    font-size: 40px;
    line-height: 1.2;
  }
  .sp-br {
        display: inline; /* ここで改行を有効にする */
    }
  .info-address p {
    font-size: 15px;
    font-weight: 400;
  }
  .info-row p{
    font-size: 19px;
    font-weight: 600;
  }

  #about {
    padding: 0 0 30px 0;
  }
  .about-content {
    width: 100%;
    margin-left: 0;
    padding: 0 16px;
    text-align: left; 
    gap: 20px;
  }
  .about-heading {
    
    line-height: 2.5;
  }
  .about-text {
    font-size: 16px;
    line-height: 1.6;
  }

  .info-row {
    font-size: 16px;
    flex-wrap: wrap;
  }
  .table-row {
    font-size: 16px;
    gap: 16px;
  }

  .main-footer {
    width: 100%;
    min-width: 0;
    height: auto; 
    text-align: center;
  }
  .footer-content {
  width: 100%;
  height: auto;
  display: flex;  
  flex-direction: column;
  align-items: center;
  padding-bottom: 100px;
  }
  .footer-info-group{
    padding-top: 24px;
    display: flex;
    flex-direction: column;
    align-items: center;
  }
  .footer-logo-area
  { display: flex;
    position: relative;
    flex-direction: column;
    left: auto;
    top: auto;
    margin: 0 auto 20px auto;
    justify-content: center;
    align-items: center;
    width: 100%; /* 幅を広げる */
    height: auto;
    gap: 30px; /* 画像間の余白 */
  }
  .footer-logo-area .logo-img{
    width: 130px;
    height: auto;
  }
  .footer-logo-area .logo-img1{
    width: 260px;
    height: auto;
  }
  .footer-sns {
    width: 100%;
    display: flex;
    position: relative;
    left: auto;
    top: auto;
    flex-direction: column;
    margin: 0 auto 20px auto;
    justify-content: center;
    align-items: flex-start; /* ボックス内で左寄せ */
  }

  .footer-address{
    width: fit-content;
    text-align: left;
    display: flex;
    position: relative;
    left: auto;
    top: auto;
    flex-direction: column;
    margin: 0 auto 20px auto;
    justify-content: center;
    align-items: center;
  }
  .footer-address p{
    margin: 0;
    font-weight: 400;
    font-size: 18px;
  }
  
  .footer-nav {
    position: relative;
    left: auto;
    top: auto;
    display: grid;
    grid-template-columns: repeat(2, auto);
    gap: 70px;
    justify-content: center;
    margin-top: 20px;
  }
.footer-nav .nav-label{
  color: var(--color-secondary);

}

.sticky-footer-nav{
  display: flex;
  position: fixed;
  bottom: 0;
  width: 100%;
  height:60px;
  z-index: 999;
}
.sticky-footer-btn{
  flex: 1;
  display: flex; 
   align-items: center; 
   justify-content: center; 
   font-family: var(--font-display); 
   color: #fff; 
   font-size: 24px;   
}
.sticky-footer-about{
   background-color: var(--color-text);
}
.sticky-footer-contact{
   background-color: var(--color-secondary); 
}

}



/* =========================================
   Fixed Decorations
   ========================================= */
.decoration-frame-86 {
  position: absolute;
  left: 862px;
  top: 910px; /* 973 - 124 = 849 */
  width: 137px;
  height: 136px;
  z-index: 25;
  pointer-events: none;
}
.decoration-star2 {
  position: absolute;
  left: 772px;
  top: 1015px; /* 991 - 124 = 867 */
  width: 94px;
  height: 72px;
  z-index: 25;
  pointer-events: none;
}
.decoration-layer1 {
  position: absolute;
  left: 880px;
  top: 815px; /* 801 - 124 = 677 */
  width: 340px;
  height: 453px;
  z-index: 25;
  pointer-events: none;
}
.decoration-layer2 {
  position: absolute;
  left: 750px;
  top: 1080px; /* 801 - 124 = 677 */
  width: 390px;
  height: 383px;
  z-index: 27;
  pointer-events: none;
}
.decoration-star1 {
  position: absolute;
  left: 1200px;
  top: 1200px; /* 991 - 124 = 867 */
  width: 53px;
  height: 83px;
  z-index: 25;
  pointer-events: none;
}
.decoration-sunnysideup {
  position: absolute;
  left: 1150px;
  top: 1315px;
  width: 117px;
  height: 98px;
  z-index: 27;
  pointer-events: none;
}
.decoration-frame32 {
  position: absolute;
  left: 980px;
  top: 1350px;
  width: 375px;
  height: 375px;
  z-index: 25;
  pointer-events: none;
}
.decoration-triangle {
  position: absolute;
  left: 820px;
  top: 1470px;
  width: 124px;
  height: 131px;
  z-index: 25;
  pointer-events: none;
}
.decoration-layer3 {
  position: absolute;
  left: 750px;
  top: 1590px;
  width: 123px;
  height: 226px;
  z-index: 25;
  transform: rotate(6deg);
  pointer-events: none;
}

/* =========================================
   SP Menu Overlay
   ========================================= */
.sp-menu-overlay {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 100vh;
  background-color: var(--color-secondary);
  z-index: 100;
  display: flex;
  flex-direction: column;
  justify-content: flex-start;
  align-items: center;
  padding-top: 120px; /* Header space */
  padding-bottom: 40px;
  opacity: 0;
  visibility: hidden;
  transition: opacity 0.6s ease, visibility 0.6s ease;
  overflow-y: auto;
}

.sp-menu-overlay.active {
  opacity: 1;
  visibility: visible;
}

.sp-nav-list {
  display: flex;
  flex-direction: column;
  gap: 24px;
  align-items: center;
  width: 100%;
}

.sp-nav-item {
  background-color: #fff;
  width: 357px; /* Fixed width from design */
  max-width: 90%; /* For smaller screens */
  height: 100px;
  border-radius: 20px;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 24px;
  box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
  color: var(--color-text); /* Reset color */
  flex-shrink: 0;
}

.sp-nav-icon {
  width: 47px;
  height: 47px;
  display: flex;
  justify-content: center;
  align-items: center;
}
.sp-nav-icon img {
  width: 100%;
  height: 100%;
  object-fit: contain;
}

.sp-nav-label {
  font-size: 16px;
  font-weight: 700;
  margin: 0;
  font-family: var(--font-main);
}

.sp-insta-link {
  margin-top: 40px;
  display: flex;
  flex-direction: column;
  align-items: center;
  color: #fffcf5;
  text-align: center;
  flex-shrink: 0;
  position: relative;
}

.sp-insta-title {
  font-family: var(--font-display);
  font-size: 40px;
  margin: 0;
  line-height: 1.2;
}

.sp-insta-text {
  font-size: 16px;
  margin: 0;
  margin-top: 8px;
  font-weight: 500;
}

.sp-menu-decoration-1 {
  position: absolute;
  left: -110px; /* Instagram文字の左側 */
  top: -10px;  /* 文字の少し上 */
  width: 110px;
  transform: rotate(-7deg);
  z-index: -1;
  pointer-events: none;
}
.sp-menu-decoration-1 img {
  width: 100%;
  height: auto;
}

.sp-menu-decoration-2 {
  position: absolute;
  right: -90px; /* Instagram文字の右側 */
  bottom: -80px; /* 文字の下 */
  width: 120px;
  transform: rotate(-0.3deg);
  z-index: -1;
  pointer-events: none;
}
.sp-menu-decoration-2 img {
  width: 100%;
  height: auto;
}

/* =========================================
   Loading Screen
   ========================================= */
#loading-screen {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background-color: #B02428;
  z-index: 9999;
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  transition: opacity 0.6s ease, visibility 0.6s ease;
}

#loading-screen.fade-out {
  opacity: 0;
  visibility: hidden;
}

.loading-content {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 20px; /* Space between loading1/2 and loading3 */
}

/* Adjust image sizes if necessary, or rely on intrinsic SVG size */
.loading-main-img {
  width: auto; 
  height: auto;
  /* Add specific dimensions if the SVGs are too big/small */
}

.loading-sub-img {
  width: auto;
  height: auto;
}


/* -------------------------------------------
   ここからContact Page用のCSS (page-contact.php)
------------------------------------------- */
.contact-decoration {
  position: absolute;
  left: -2px; 
  top: 489px;
  width: 500px;
  height: 172px;
  z-index: 30;
  max-width: none; /* これが重要：親要素の幅制限を解除 */
}

@media screen and (max-width: 1199px){
  .contact-hero-wrapper {
    position: relative;
    width: 100%;
}
  .contact-decoration {
    position: absolute;
    height: auto;
    width: auto;
    max-width: none;
    left: 50%;
    top: auto;
    bottom: 0%; /* 下辺を基準にして位置を固定 */
    transform: translateX(-50%); 
    transform-origin: bottom center;
    z-index: 30;
  }
    /* About/Contact Hero Adjustments to fix bottom alignment of decorations */
  .contact-hero-wrapper,
  .contact-hero-wrapper .hero-main-img-container {
    height: auto;
  }
  .contact-hero-wrapper .hero-slide-img {
    position: relative;
    opacity: 1;
    height: auto;
  }
  .contact-hero-wrapper .hero-slide-img img {
    height: 70vh;
    width: 100%;
  }

}

/* =========================================
   Contact Form 7 Styles
   ========================================= */
.contact-intro-text {
  max-width: 880px;
  margin: 0px auto 30px;
  text-align: center;
  color: var(--color-text);
  font-family: var(--font-main);
  
  font-weight: 700;
  line-height: 1.45; /* 58px height / 2 lines / 20px font size */
}

.contact-intro-text p {
  margin: 0;
  padding: 0;
  display: inline-block;
  text-align: center;
}

@media screen and (max-width: 1199px) {
  .contact-intro-text {
    margin: 60px auto 40px;
    padding: 0 16px;
    font-size: 16px;
    line-height: 1.6;
  }
}


.contact-form-wrapper {
  max-width: 1200px;
  width: 90%;
  margin: 0 auto;
  color: var(--color-text);
  font-family: var(--font-main);
}

/* 各項目のグループ化 */
.contact-form-wrapper .form-group {
  margin-bottom: 40px;
  display: flex;
  flex-direction: column;
  gap: 12px;
}

/* ラベルとバッジの横並びエリア */
.contact-form-wrapper .form-group-header {
  display: flex;
  align-items: center;
  gap: 16px; /* Figma: 16px */
}

/* CF7が自動挿入するPタグの余白を消し、中の要素も横並びにする */
.contact-form-wrapper .form-group-header p {
  margin: 0 !important;
  display: flex;
  align-items: center;
  gap: 16px;
}

.contact-form-wrapper .form-label {
  
  font-weight: 700;
  color: var(--color-text);
  margin: 0 !important;
  cursor: pointer;
  white-space: nowrap; /* 改行防止 */
}

/* 必須・任意バッジ */
.contact-form-wrapper .badge-required,
.contact-form-wrapper .badge-optional {
  font-size: 14px;
  font-weight: 700;
  padding: 4px 16px;
  border-radius: 9999px;
  color: #fff;
  line-height: 1; /* 行の高さを1に固定して余白を排除 */
  display: inline-flex; /* flexにして内包テキストを完璧に中央に */
  align-items: center;
  justify-content: center;
  height: 24px; /* Figmaから推測される高さ（padding分も考慮） */
  transform: translateY(1px); 
}

.contact-form-wrapper .badge-required {
  background-color: var(--color-secondary); /* 赤: #B02428 */
}

.contact-form-wrapper .badge-optional {
  background-color: #a4a4a4; /* 灰色 */
}

/* 説明文（補足テキスト） */
.contact-form-wrapper .contact-light-text {
  font-size: 16px;
  color: var(--color-text);
  margin: 0 !important;
  opacity: 0.8;
}

/* 入力フィールド */
.contact-form-wrapper input[type="text"],
.contact-form-wrapper input[type="email"],
.contact-form-wrapper input[type="tel"],
.contact-form-wrapper textarea {
  width: 100%;
  padding: 16px 24px;
  font-size: 18px;
  border: 3px solid var(--color-text); /* Figma: 茶色の3px枠線 */
  border-radius: 20px;
  background-color: #fff;
  color: var(--color-text);
  font-family: var(--font-main);
}

.contact-form-wrapper input::placeholder,
.contact-form-wrapper textarea::placeholder {
  color: #a4a4a4;
}

/* ラジオボタンを大きなボタン形式にする */
.contact-form-wrapper .wpcf7-radio {
  display: flex;
  flex-direction: column;
  gap: 12px;
  margin-top: 8px;
}

.contact-form-wrapper .wpcf7-list-item {
  margin: 0;
}

.contact-form-wrapper .wpcf7-list-item label {
  background-color: #fff;
  border: 3px solid var(--color-text);
  border-radius: 20px;
  padding: 16px 24px;
  display: flex;
  align-items: center;
  cursor: pointer;
  transition: background-color 0.2s;
}

.contact-form-wrapper .wpcf7-list-item input[type="radio"] {
  display: none; /* デフォルトのラジオボタンを隠す */
}

.contact-form-wrapper .wpcf7-list-item-label {
  display: flex;
  align-items: center;
  
  font-weight: 700;
}

/* カスタムの丸（Figma上のグレーの丸） */
.contact-form-wrapper .wpcf7-list-item-label::before {
  content: "";
  display: block;
  width: 20px;
  height: 20px;
  border-radius: 50%;
  background-color: #eee;
  margin-right: 16px;
  flex-shrink: 0;
  transition: all 0.2s;
}

/* 選択時の丸のスタイル */
.contact-form-wrapper .wpcf7-list-item input[type="radio"]:checked + .wpcf7-list-item-label::before {
  background-color: var(--color-primary);
  box-shadow: inset 0 0 0 4px #fff;
}

/* 選択されたボタン全体の背景（任意） */
.contact-form-wrapper .wpcf7-list-item input[type="radio"]:checked ~ span {
  color: var(--color-primary);
}

/* 個人情報保護方針セクション */
.privacy-policy-section {
  margin-top: 60px;
  text-align: center;
}

.privacy-text {
  background-color: #fff;
  border: 3px solid var(--color-text);
  border-radius: 20px;
  height: 200px;
  overflow-y: scroll;
  padding: 24px;
  margin-bottom: 32px;
  font-size: 14px;
  line-height: 1.8;
  color: var(--color-text);
  text-align: left; /* テキストは左寄せ */
}

/* 同意チェックと必須バッジを横並び中央にする */
.privacy-policy-section .wpcf7-form-control-wrap,
.privacy-policy-section .badge-required {
  display: inline-flex;
  vertical-align: middle;
  align-items: center;
}

.privacy-policy-section .badge-required {
  margin-left: 12px;
}

.privacy-policy-section .wpcf7-acceptance {
  display: inline-flex;
  align-items: center;
}

.privacy-policy-section .wpcf7-list-item label {
  display: inline-flex;
  align-items: center;
  border: none;
  padding: 0;
  background: none;
  cursor: pointer;
}

.privacy-policy-section .wpcf7-list-item input[type="checkbox"] {
  width: 20px;
  height: 20px;
  margin-right: 8px;
  accent-color: var(--color-primary);
}

.privacy-policy-section .wpcf7-list-item-label::before {
  display: none !important;
}

/* 送信ボタン */
.contact-form-wrapper .submit-btn {
  display: block;
  margin: 60px auto 0;
  background-color: var(--color-secondary);
  color: #FFFFFF;
  font-family: var(--font-main);
  font-size: 24px;
  font-weight: 700;
  padding: 16px 80px;
  border: none;
  border-radius:15px;
  cursor: pointer;
  transition: all 0.3s ease;
}

.contact-form-wrapper .submit-btn:hover {
  transform: translateY(2px);
  box-shadow: 0 2px 0 #8a1c1f;
}

/* SP調整 */
@media screen and (max-width: 1199px) {
  .contact-form-wrapper .form-label,
  .contact-form-wrapper .wpcf7-list-item-label {
    font-size: 16px;
  }
  
  .contact-form-wrapper .badge-required,
  .contact-form-wrapper .badge-optional {
    font-size: 12px;
    padding: 2px 10px;
  }

  .contact-form-wrapper .submit-btn {
    width: 100%;
    padding: 16px 40px;
  }
  
}


/* -------------------------------------------
   ここからabout Page用のCSS (page-about.php)
------------------------------------------- */

.about-decoration {
  position: absolute;
  left: -2px; 
  top: 527px;
  width: 528px;
  height: 172px;
  z-index: 30;
  max-width: none; /* これが重要：親要素の幅制限を解除 */
}


@media screen and (max-width: 1199px){
  .contact-hero-wrapper {
    position: relative;
    width: 90%;
}
  .about-decoration {
    position: absolute;
    height: auto;
    width: auto;
    max-width: none;
    left: 50%;
    top: auto;
    bottom: -8%; /* 下辺を基準にして位置を固定 */
    transform: translateX(-50%); 
    transform-origin: bottom center;
    z-index: 30;
  }

}

/* =========================================
   About Page - Goals Section
   ========================================= */
.about-goals-section {
  max-width: 1200px;
  width: 90%;
  margin: 0 auto;
  box-sizing: border-box;
}

.goals-header {
  margin-bottom: 48px;
}

.goals-section-title {
  font-family: var(--font-main);
  font-size: 32px; /* Figmaのデザインに合わせた適切なサイズに調整 */
  font-weight: 700;
  color: var(--color-secondary);
  margin-bottom: 8px; /* 注釈テキストとの間隔 */
}
.goals-header.text-center {
    color: var(--color-secondary);
}

.goals-section-note {
  font-family: var(--font-main);
  
  font-weight: 500;
  margin: 0;
}

/* Tabs (Buttons) */
.goals-tabs {
  display: flex;
  justify-content: space-between;
  gap: 24px;
  margin-bottom: 40px;
}

.goal-tab-btn {
  flex: 1;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  padding: 0 16px;
  aspect-ratio: 1.08 / 1; /* 幅1.08 : 高さ1 の比率を維持 */
  border: 4px solid var(--color-secondary);
  border-bottom-left-radius: 0; /* Figmaの雫型デザインに合わせる（左下） */
  border-top-left-radius: 9999px;
  border-top-right-radius: 9999px;
  border-bottom-right-radius: 9999px;

  background-color: var(--color-secondary);
  color: var(--color-base);
  cursor: pointer;
  transition: all 0.3s ease;
}

.goal-tab-btn .tab-title {
  font-family: var(--font-main);
  font-size: clamp(18px, 2.2vw, 32px); /* 画面幅に合わせて24px〜32pxの間で可変 */
  font-weight: 700;
  margin-bottom: 8px;
  white-space: nowrap; /* 改行を強制的に防止 */
}

.goal-tab-btn .tab-subtitle {
  font-family: var(--font-main);
  font-size: clamp(8px, 1.1vw, 16px); /* 画面幅に合わせて12px〜16pxの間で可変 */
  font-weight: 500;
  white-space: nowrap; /* 改行を強制的に防止 */
}

/* Active State (Inverted Colors) */
.goal-tab-btn.active {
  background-color: var(--color-base);
  color: var(--color-secondary);
}

/* Content Panels */
.goals-content-area {
  position: relative;
  width: 100%;
}

.goal-panel {
  display: none; /* Hide by default */
  gap: 40px;
  align-items: center;
  background-color: var(--color-base);
  border: 4px solid var(--color-secondary); /* Figma: 4pxの赤い枠線 */
  border-radius: 30px; /* Figma: 角丸30px */
  padding: 40px; /* Figma: 内側の余白 */
}

/* Show only the active panel */
.goal-panel.active {
  display: flex;
}

.goal-main-image {
  flex: 1;
  border-radius: 20px;
  overflow: hidden;
}

.goal-main-image img {
  width: 100%;
  height: auto;
  object-fit: cover;
}

.goal-content-body {
  flex: 1;
  display: flex;
  flex-direction: column;
  gap: 24px;
}

.goal-icon {
  width: 150px;
  height: auto;
}

.goal-text h3 {
  font-size: 32px; /* サブタイトルのサイズ */
  color: var(--color-secondary);
  margin-bottom: 16px;
  line-height: 1.2;
}

.goal-main-title {
  font-size: 48px; /* メインタイトルのサイズ（大きくする） */
  font-weight: 700;
  display: inline-block;
  margin-bottom: 8px;
}

.goal-text p {
  
  line-height: 1.8;
  color: var(--color-text);
  margin-bottom: 16px;
  text-align: justify;
}

/* PC to Tablet Adjustments for Goal Tabs */
@media screen and (max-width: 1080px) {
  .goals-tabs {
    flex-wrap: wrap;
    gap: 16px;
  }
  .goal-tab-btn {
    flex: 1 1 calc(50% - 8px); /* 2 columns on mobile/tablet */
    padding: 20px 12px;
    aspect-ratio: auto;
    border-radius: 20px;
  }
  .goal-tab-btn .tab-title {
    
    margin-bottom: 0;
  }
  .goal-tab-btn .tab-subtitle {
    display: none;
  }
}

/* =========================================
   About Page - Greeting Section
   ========================================= */
.about-greeting-section {
  position: relative;
  max-width: 1200px; /* 大画面対応：1440px制限を解除 */
  margin: 0 auto;
  width: 90%;
  overflow: hidden; /* 木がはみ出さないように */
  box-sizing: border-box;
}

/* Tree Decorations */
.greeting-tree {
  position: absolute;
  top: 50px;
  width: 355px; /* Figmaデザイン準拠 */
  height: auto;
  z-index: 0;
  pointer-events: none;
}

.greeting-tree img {
  width: 100%;
  height: auto;
  object-fit: contain;
}

.left-tree {
  left: -20px; /* 画面左端から少しはみ出す程度に調整 */
}

.right-tree {
  right: -20px;
  transform: scaleX(-1); /* 左右反転 */
}

/* Greeting Content */
.greeting-content-container {
  position: relative;
  z-index: 10;
  max-width: 1200px;
  margin: 0 auto;
  padding: 0; /* 親要素で120px取っているので0にする */
  padding-bottom: 80px; /* 下部に配置する校長先生イラストのための余白 */
}

.greeting-section-title {
  font-family: var(--font-display);
  font-size: 48px;
  color: var(--color-secondary);
  margin-bottom: 60px;
}

.greeting-messages {
  display: flex;
  flex-direction: column;
  gap: 28px;
  background-color: #ffffff;
  border: 4px solid var(--color-secondary);
  border-radius: 30px;
  padding: 40px;
}

.greeting-message-block {
  text-align: left;
  display: flex;
  flex-direction: column;
  gap: 16px;
}

.message-title {
  font-family: var(--font-main);
  
  font-weight: 700;
  color: var(--color-secondary);
  margin: 0;
}

.message-text {
  font-family: var(--font-main);
  
  line-height: 35px;
  color: var(--color-text);
  margin: 0;
  text-align: justify;
}

/* Principal Sign (校長先生イラスト) */
.principal-sign {
  position: absolute;
  bottom: 2%; /* 枠の下辺からはみ出させる度合いを調整 */
  right: 3%; /* コンテナの右端からの距離 */
  width: 200px; /* Figmaデザイン準拠の幅 */
  z-index: 20; /* テキスト枠より上に表示 */
}

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


/* =========================================
   About Page - Teachers Section
   ========================================= */
.about-teachers-section {
  max-width: 1200px;
  margin: 0 auto;
  width: 90%;
  box-sizing: border-box;
}

.teachers-content-container {
  max-width: 1200px;
  margin: 0 auto 3vh;
}

.teachers-section-title {
  font-family: var(--font-display);
  font-size: 48px;
  color: var(--color-text);
  margin-bottom: 80px;
}

/* 2-column Layout (PC) */
.teachers-grid {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 80px 48px;
}

.teacher-card {
  display: flex;
  flex-direction: column;
  gap: 16px;
  width: calc(50% - 24px); /* 2カラムの幅計算 */
  max-width: 500px;
}

.teacher-photo {
  width: 100%;
  height: 400px;
  background-color: #A8A7A7; /* Placeholder background */
  overflow: hidden;
}

.teacher-photo img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.teacher-info {
  display: flex;
  flex-direction: column;
  gap: 8px;
}

.teacher-name {
  font-family: var(--font-main);
  
  font-weight: 700;
  color: var(--color-secondary);
  margin: 0;
}

.teacher-message {
  font-family: var(--font-main);
  
  line-height: 35px;
  color: var(--color-text);
  margin: 0;
  margin-bottom: 8px;
  text-align: justify;
}

.teacher-subject {
  align-self: flex-start; /* 左寄せ */
  border: 4px solid var(--color-secondary);
  border-radius: 20px;
  padding: 16px 24px;
  background-color: #ffffff;
}

.teacher-subject span {
  text-align: justify;
  font-family: var(--font-main);
  font-weight: 700;
  color: var(--color-secondary);
  display: block;
}

/* =========================================
   About Page - Info Image Section (Frame 46)
   ========================================= */
.about-info-image-section {
  max-width: 1200px;
  width: 90%;
  margin: 0 auto 60px;
  box-sizing: border-box;
}

.about-info-image-container {
  width: 100%;
}

.about-info-image-container img {
  width: 100%;
  height: 585px;
  object-fit: cover; /* 比率を維持 */
  object-position: top; /* 上端を基準にする */
  display: block;
}

/* =========================================
   About Page - School Details Section (Frame 135)
   ========================================= */
.about-details-section {
  max-width: 1200px;
  width: 90%;
  margin: 0 auto;
  box-sizing: border-sizing;
}

/* 既存の .contact-info-section のレイアウトを利用しつつ微調整 */
.about-page-details {
  display: flex;
  flex-wrap: nowrap; /* PCでは折り返さない */
  justify-content: space-between;
  align-items: stretch; /* 高さを揃える（必要に応じて） */
  gap: 60px; /* 左右の余白を固定値または % で指定 */
  padding: 0;
}

.about-info-details {
  flex: 1; /* 親の幅に合わせて伸縮 */
  max-width: 500px; /* 広がりすぎ防止 */
}

.about-details-header {
  margin-bottom: 24px;
}

.about-logo-wrapper {
  display: flex;
  flex-direction: column; /* 縦並びに変更 */
  align-items: flex-start; /* 左揃えにする */
  gap: 16px; /* 縦の間隔 */
  margin-bottom: 24px;
}

.about-logo-icon {
  width: 230px;
  height: auto;
}

.about-school-name {
  font-family: var(--font-display);
  font-size: 40px;
  color: var(--color-text);
  margin: 0;
  line-height: 1.2;
}

.about-info-table .table-row {
  padding: 18px 0;
  line-height: 35px;
  align-items: flex-start;
}

.about-info-table .table-row p {
  margin: 0;
}

.about-map-container {
  flex: 1; /* 親の幅に合わせて伸縮 */
  width: 100%;
  height: auto;
  aspect-ratio: 587 / 784; /* Figmaの縦横比を維持 */
  background-color: #D9D9D9;
  display: flex;
  justify-content: center;
  align-items: center;
  border: none;
  overflow: hidden; /* iframeの角丸をはみ出させないため */
}

.map-placeholder p {
  font-family: var(--font-main);
  
  font-weight: 700;
  color: #000;
  margin: 0;
}

/* =========================================
   About Page - Gallery Section
   ========================================= */
.about-gallery-section {
  max-width: 1200px;
  width: 90%;
  margin: 0 auto;
  box-sizing: border-box;
}

.gallery-content-container {
  max-width: 1200px;
  width: 90%;
  margin: 0 auto;
  width: 100%;
}

.gallery-section-title {
  font-family: var(--font-display);
  font-size: 48px;
  color: var(--color-secondary);
  margin-bottom: 80px;
}

/* Main Display */
.gallery-main-display {
  width: 100%;
  height: 500px;
  margin-bottom: 24px;
  border-radius: 20px;
  overflow: hidden;
  background-color: #f0f0f0; /* 画像読み込み前のプレースホルダー色 */
}

.gallery-main-display img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: opacity 0.5s ease-in-out; /* フェードアニメーション */
  opacity: 1;
}

.gallery-main-display img.fade-out {
  opacity: 0;
}

/* Thumbnails */
.gallery-thumbnails {
  display: flex;
  justify-content: space-between;
  gap: 25px;
  width: 100%;
}

.thumbnail-item {
  flex: 1; /* 親の幅に合わせて伸縮 */
  max-width: 179px; /* 元のサイズを最大幅にする */
  aspect-ratio: 179 / 150; /* Figmaの比率を維持 */
  cursor: pointer;
  border-radius: 10px;
  overflow: hidden;
  transition: opacity 0.3s ease;
}

.thumbnail-item img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.thumbnail-item:hover {
  opacity: 0.8;
}

.thumbnail-item.active {
  /* アクティブな画像のスタイル（枠線など）が必要ならここに追加 */
  opacity: 0.6; /* 仮で少し暗くする */
}

/* SP Adjustments for Goals */

/* 中門追加 */
@media screen and (max-width: 1199px) {

  .teachers-grid {
    grid-template-columns: 1fr; /* 1 column on mobile */
  }
  .teachers-grid .teacher-card:nth-child(even) {
    margin-top: 0; /* ジグザグを解除 */
  }
  .teacher-photo {
    height: 250px; /* スマホ時は少し低くする */
  }

  .about-decoration {
  position: absolute;
  height: auto;
  width: auto;
  max-width: none;
  left: 50%;
  bottom: 0%;
  transform: translateX(-50%); 
  z-index: 30;
}

  .goals-section-title {
    
  }

  .goals-section-note {
    display: none;
  }
  .goals-tabs {
    flex-wrap: wrap;
    gap: 16px;
  }
  .goal-tab-btn {
    flex: 1 1 calc(50% - 8px); /* 2 columns on mobile */
    padding: 20px 12px; /* 高さをパディングで調整 */
    aspect-ratio: auto; /* スマホでは比率固定を解除 */
    border-radius: 20px; /* スマホ版は元の角丸に戻す */
  }
  .goal-tab-btn .tab-title {
     /* スマホでは固定サイズ */
    margin-bottom: 0; /* サブタイトルが消えるので余白も消す */
  }
  .goal-tab-btn .tab-subtitle {
    display: none; /* スマホではサブタイトルを非表示 */
  }
  .goal-panel {
    flex-direction: column;
  }

  /* About Page - School Details SP */
  .about-details-section {
    padding: 0 0 60px; /* 親の左右パディングをリセット */
  }
  .about-page-details {
    flex-direction: column; /* スマホでは縦並びにする */
    gap: 40px; /* テキストとマップの間隔 */
  }
  .about-info-details {
    max-width: 100%; /* 幅の制限を解除 */
  }
  .about-info-table {
    padding: 0; /* paddingの代わりにmarginで余白を作る */
    width: calc(100% - 36px); /* 左右18pxずつの余白を確保 */
    margin: 0 auto; /* 中央寄せ */
  }
  .about-info-table .table-row p {
    word-break: break-all; /* メアド等の長い英数字を強制折り返し */
  }
  .about-map-container {
    width: calc(100% - 9px); /* テーブルと揃えて左右18px余白 */
    margin: 0 auto; /* 中央寄せ */
    height: 400px; 
  }

  /* About Page - Gallery Section SP */
  .gallery-section-title {
    font-size: 32px;
    margin-bottom: 40px;
  }
  .gallery-main-display {
    height: 50vh;
    aspect-ratio: 357 / 500; /* スマホではFigmaの比率 (357:500) に合わせる */
  }
  .gallery-thumbnails {
    flex-wrap: wrap; /* 折り返しを有効にする */
    gap: 24px; /* サムネイル間の余白 */
  }
  .thumbnail-item {
    flex: 1 1 calc(50% - 12px); /* 2カラム（2列）にする */
    max-width: none; /* 最大幅の制限を解除 */
    aspect-ratio: 163 / 137; /* スマホ版の比率に変更 */
  }
}


