

.section {
  padding:2rem 2%;
  margin-bottom: 6rem;
}

main {
  padding-left: 2%;
  padding-right: 2%;
}

/* 固定ヘッダーに重ならないようアンカー位置を調整 */
.section[id] {
  scroll-margin-top: 70px;   /* ヘッダーの高さに合わせる */
}



/* ✅ スマホ表示時に余白を小さくする */
@media (max-width: 768px) {
  .section {
    padding: 10px 3.5% 20px 3.5%;
    margin-bottom: 2rem;
  }

  main {
    padding-left: 2%;
    padding-right: 2%;
  }
    }

body.preload-bg {
  background-image: none !important;
}



html,
body {
  overscroll-behavior-x: none;
}

body {
  touch-action: pan-y;
  overflow-x: hidden;
}




@media (max-width: 768px) {
  body {
    background-image: none;
  }
}

@media (orientation: portrait) and (min-width: 769px) {
  body {
    background-image: none;
  }
}


/* ----------------------*
 * コンテナー
 * ----------------------*/
.cal-container {
  --item-width: min(600px, 100%);
  --item-gap: 60px;
  position: relative;
  max-width: 1000px;
  width: 100%;
  margin: 0 auto 40px;
}


.cal-container.narrow-carousel {
  --item-width: min(540px, 100%);
  --item-gap: 30px;
}

/* ----------------------*
 * カルーセル
 * ----------------------*/
.carousel {
  display: flex;
  gap: var(--item-gap);
  overflow-x: auto;
  overflow-y: hidden;
  overscroll-behavior-x: contain;
  touch-action: pan-x;
  scroll-snap-type: x mandatory;
  scroll-snap-stop: always;
  padding: 0;
  scroll-padding-left: calc((100% - var(--item-width)) / 2);
  scroll-padding-right: calc((100% - var(--item-width)) / 2);
  scrollbar-width: none;
}

.carousel::-webkit-scrollbar {
  display: none;
}


.carousel a {
  pointer-events: auto;
}

/* ----------------------*
 * カルーセルの画像アイテム
 * ----------------------*/
.item {
  flex: 0 0 auto;
  width: var(--item-width);
  scroll-snap-align: center;
}

.item img {
  width: 100%;
  height: auto;
  display: block;
  opacity: 0.8;
  transition: transform 0.4s ease, opacity 0.4s ease;
}

.item.active img {
  opacity: 1;
  transform: scale(1.05);
}


.carousel-button {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  z-index: 10;
  width: 70px;
  height: 70px;
  cursor: pointer;
  background: transparent !important;
  border: none;
  padding: 0;
}

.carousel-button img {
  width: 100%;
  height: 100%;
  object-fit: contain;
  pointer-events: none;
  display: block;
  margin: auto;
  filter: drop-shadow(0 0 12px rgba(255, 255, 255, 1));
}

.carousel-button.left {
  left: 0;
}

.carousel-button.right {
  right: 0;
}


.dots {
  display: flex;
  justify-content: center;
  gap: 10px;
}

.dot {
  width: 10px;
  height: 10px;
  border-radius: 50%;
  background-color: #ccc;
  transition: background-color 0.3s;
}

.dot.active {
  background-color: rgb(81 109 235);
}



@media screen and (max-width: 768px) {
  .cal-container {
    --item-width: calc(100% - 90px);
    --item-gap: 5vw;
    padding: 0;
    width: 100%;
  }

  .carousel {
    gap: var(--item-gap);
    padding: 0;
  }

  .carousel-button {
    width: 50px;
    height: 50px;

  }

  .carousel-button.left {
    left: 0;
  }

  .carousel-button.right {
    right: 0;
  }

  .dot {
    width: 8px;
    height: 8px;
  }

  .cal-container.narrow-carousel {
    --item-width: 78vw;
    --item-gap: 18px;
    width: 100%;
    margin: 1.5rem auto 0;
    position: relative;
  }



  .cal-container.narrow-carousel .carousel {
    padding: 0;
    touch-action: pan-x;
  }

  .cal-container.narrow-carousel .item.active img {
    transform: scale(1.05);
  }

  .dots {
    margin-top: -1rem;
    margin-bottom: 3rem;
  }

    #beginner-guide .dots {
    margin-top: 1rem;
    margin-bottom: 3rem;
  }


}



.section.with-webonlyabout {
  padding-left: 0;
  padding-right: 0;
}

@media (max-width: 768px) {
  .section.with-webonlyabout {
    padding-left: 0;
    padding-right: 0;
  }
}




#attention img {
  max-width: 750px;
  margin: 0 auto;
  width: 100%;
}

  #attention.section {
    margin-top: -3rem;
  }

@media (min-width: 769px) {
  #attention.section {
    margin-top: -8rem;
  }
}

#circle h4 {
  font-size: 1rem;
  font-weight: bold;
}

#circle .no-padding-img,
#event .no-padding-img {
  max-width: 530px;
  width: 100%;
  margin: 0 auto;
}




@media (max-width: 768px) {


  #event .no-padding-img {
    max-width: 600px;
    margin: 0.5rem auto;
    width: 100%;
  }

  #attention img {
    max-width: 600px;
    margin: 0 auto;
    width: 100%;
  }

  #circle {
    margin: 4rem 0 2rem 0;
  }

  #circle h4 {
    font-size: clamp(0.75rem, 3vw, 0.88rem);
    font-weight: bold;
    line-height: 1.5;
  }

  #circle .no-padding-img {
    max-width: 600px;
    width: 100%;
  }
}



/* topナビゲーションバー　青*/
.top-nav-bar {
  background-color: var(--color-primary);
  padding: var(--spacing-md) 0;
  width: 100%;
  margin: 0 auto;
  box-sizing: border-box;
  overflow-y: hidden;
  overflow-x: hidden;
  position: relative;
  z-index: 10;
  box-shadow: 0 3px 5px #2357e69f;
}


.top-nav-bar-inner {
  margin: 0 auto;
  display: flex;
  justify-content: center;
  flex-wrap: wrap;
  gap: 0 0.4em;
  text-align: center;
}


.top-nav-item {
  display: inline-flex;
  align-items: center;
  gap: 0.6em;
  font-size: 0.75rem;
  font-weight: 700;
  color: #fff;
  text-decoration: none;
  white-space: nowrap;
}

.top-nav-item:hover {
  transform: scale(1.05);
  color: #bdffd3;
  transition: all 0.3s ease;
}

/* 長いテキストを調整 */
.guide-item {
  line-height: 1.4;
}

@media (min-width: 769px) {
  .top-nav-item:hover {
    transform: scale(1.05);
    color: #bdffd3;
    transition: all 0.3s ease;
  }

  .top-nav-item {
    padding: 1.2em 1.5em;
    flex-direction: column;
    gap: 0.2em;
  }

  .top-nav-item img {
    margin-right: 0;
    margin-bottom: 0.5em;
    width: 25px;
    height: auto;
  }
}




/* スマホ 2列 */
@media (max-width: 768px) {
  .top-nav-bar {
    padding: 0.7em 0 0.7em 0;

  }

  .top-nav-bar-inner {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    text-align: center;
    gap: 0 1.8em;
  }

  .top-nav-item {
    width: 45%;
    margin: 0 auto;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    text-align: center;
    min-height: 3.5em;
    padding: 0.2em 0.5em;
    font-size: clamp(0.7rem, 2.5vw, 0.8rem);
  }

  .top-nav-item img {
    margin-right: 0.4em;
    width: 20px;
    height: auto;
  }

  /* 長いテキストを調整 */
  .guide-item {
    font-size: clamp(0.7rem, 2.5vw, 0.75rem);
    line-height: 1.3;
  }
}

@media (max-width: 360px) {
  .top-nav-item {
    width: 45%;
    min-height: 3.5em;
    padding: 0.2em 0.5em;
    font-size: 0.7rem;
    font-weight: 900;
  }
  .top-nav-item img {
    margin-right: 0.4em;
    width: 18px;
  }
}

/* 項目タイトル1 */
.webonly-heading-image1 {
  position: relative;
  width: 100%;
  height: 0;
}

.webonly-heading-image1 img {
  position: absolute;
  top: -150px;
  left: 50%;
  transform: translateX(-50%);
  max-width: 370px;
  z-index: 2;
}

@media (max-width: 768px) {
  .webonly-heading-image1 img {
    top: -105px;
    width: clamp(240px, 60vw, 270px);
  }
}




.webonly-heading-image2 {
  position: relative;
  width: 100%;
  height: 0;
}

.webonly-heading-image2 img {
  position: absolute;
  top: -11.2rem;
  left: 50%;
  transform: translateX(-50%);
  max-width: 450px;
  z-index: 2;
}

#event {
  margin-top: 12rem;
  scroll-margin-top: 220px; /* header height (70px) + heading offset (150px) */
}

#event .heading-6 {
  margin-bottom: 1.2rem;
}

@media (max-width: 768px) {
  .webonly-heading-image2 img {
    top: -7.8rem;
    width:clamp(315px, 75vw, 340px);
  }
}


.section.with-topbk {
  margin-top: 6rem;
  padding-bottom: 0;
}

@media (max-width: 768px) {
  .section.with-topbk {
    margin-bottom: -10em;
    margin-top: 5rem;
  }
}

@media (max-width: 768px) {
  #event {
    margin-top: 7rem;
    scroll-margin-top: 175px; /* header height (70px) + heading offset (105px) */
  }

  #event .heading-6 {
    margin-bottom: 3rem;
  }

  #event p {
    font-size: clamp(0.85rem, 3.5vw, 1rem);
  }
}



@keyframes fade-image-in {
  from {
    opacity: 0;
  }

  to {
    opacity: 1;
  }
}

@keyframes slide-fade-up {
  from {
    opacity: 0;
    transform: translateY(30px);
  }

  to {
    opacity: 1;
    transform: translateY(0);
  }
}

@keyframes zoom-logo {
  from {
    opacity: 0;
    transform: translate(-50%, -50%) scale(0.6);
  }

  to {
    opacity: 1;
    transform: translate(-50%, -50%) scale(1);
  }
}




.with-webonlyabout {
  position: relative;
}

.index-inner {
  max-width: 720px;
  margin: 0 auto;
  text-align: left;
  padding: 0 1em;
}

.index-inner li {
  margin-left: 0;
  padding-left: 1.2em;
  list-style-position: inside;
}

/* webオンリーとは？タイトル画像設定 */
.webonly-title-img {
  max-width: 500px;
  margin: 0.8rem auto;
  margin-top: 13rem;
  width: 100%;
}

/* webオンリーとは？背景画像設定 */
.whbonry-Container {
  position: relative;
  padding: 9em 0 12rem;
  margin: 5em auto;
  width: 100%;
  box-sizing: border-box;
  background-image: url("../images/bk-web-houw-pc.png");
  background-size: cover;
  background-position: top center;
  background-repeat: no-repeat;
  min-height: max(87.1vw, 600px);
}


.webonlyabout-text {
  text-align: center;
  margin: 0.8em 0;
  padding: 0 2rem;
  font-size: 1.2rem;
  font-weight: 900;
  color: #fff;
  text-shadow: 0 0 6px rgba(0, 102, 255, 0.7), 0 0 12px rgba(0, 102, 255, 0.5);
}




@media (max-width: 768px) {
  .webonlyabout-text {
    font-size: clamp(0.8rem, 3vw, 1.2rem);
    padding: 0 2%;
    line-height: 1.4;
    margin-top: 0;
    font-weight: 900;
  }



  

  /* webオンリーとは？背景画像設定 */
  .whbonry-Container {
    padding: 4rem 0 9rem;
    margin: 6rem auto 1rem;
    width: 100%;
    max-width: none;
    box-sizing: border-box;
    background-image: url("../images/bk-web-houw-sm.png");
    background-size: cover;
    background-position: top center;
  }
}


@media (max-width: 768px) {
  .index-inner {
    max-width: 100%;
    padding: 0 0.5em;
  }

  .index-inner li {
    margin-left: -5rem;
    list-style-position: inside;
  }

  .webonly-title-img {
    width: clamp(20rem, 90vw, 25rem);
    margin: 1.5rem auto;
    margin-top: 180px;
  }

}

@media (max-width: 360px) {
  .webonlyabout-text {
    font-size: 0.8rem;
  }
}


@keyframes webonlyFloat {

  0%,
  100% {
    transform: translateY(0);
  }

  50% {
    transform: translateY(-12px);
  }
}

.webonly-ibuki {
  position: absolute;
  height: auto;
  z-index: 3;
  width: 22%;
  max-width: 260px;
  top: clamp(100px, 5vw, 40px);
  left: calc(50% - min(500px, calc(50% - 5px)));
  animation: webonlyFloat 4s ease-in-out infinite;
  animation-delay: 0s;
}

.webonly-shindo {
  position: absolute;
  height: auto;
  z-index: 3;
  width: 22%;
  max-width: 250px;
  top: clamp(150px, 5vw, 40px);
  right: calc(50% - min(510px, calc(50% - 5px)));
  animation: webonlyFloat 4s ease-in-out infinite;
  animation-delay: 2s;
}

@media (max-width: 768px) {
  .webonly-ibuki {
    left: 1rem;
    top: 6rem;
    width: clamp(7rem, 30vw, 8.5rem);
    max-width: 170px;
  }

  .webonly-shindo {
    right: 1rem;
    top: 7rem;
    width: clamp(6rem, 30vw, 8.5rem);
    max-width: 170px;
  }
}


@media (max-width: 360px) {
  .webonly-ibuki {
    left: 15px;
    top: 120px;
    width: 48%;
    max-width: 110px;
  }

  .webonly-shindo {
    right: 5px;
    top: 150px;
    width: 48%;
    max-width: 110px;
  }
}







/* ---------------TOP　メイン画像 ---------------------*/

/* TOP画像ラッパー */
.top-image-wrapper {
  position: relative;
  width: 100%;
  max-width: 1400px;
  aspect-ratio: 2200 / 2473;
  /* PC制限ありの場合 */
  margin: 0 auto;
  overflow: hidden;
  margin-top: 0;
}


/* 背景画像 */
.top-image-bg {
  width: 100%;
  height: auto;
  display: block;
  opacity: 0;
}

.top-image-bg.visible {
  animation: fade-image-in 0.8s ease forwards;
}




/* ロゴ非表示→表示 */
.animate-logo {
  opacity: 0;
  transform: translateY(30px);
  /* slide up from below */
}

/* 表示時にフェードイン＆スライドダウン */
.animate-logo.visible {
  animation: slide-fade-up 1s ease forwards;
}


/* ロゴ（やや左寄り＋アニメーション付き） */
.top-logo {
  position: absolute;
  top: 0%;
  /* お好みの位置に調整可能 */
  left: 0%;
  width: 100%;
  height: auto;
  z-index: 3;
  opacity: 0;
  transform: translateY(30px);
}

.top-logo.visible {
  animation: slide-fade-up 1s ease forwards;
}

.top-logo img {
  width: 90%;
  max-width: none;
  height: auto !important;
  display: block;
}

#top {
  position: relative;
}






/* メイン2非表示→表示 */
.animate-main2 {
  opacity: 0;
  transform: translateY(30px);
  /* slide up from below */
}

/* 表示時にフェードイン＆スライドダウン */
.animate-main2.visible {
  animation: slide-fade-up 1s ease forwards;
}


/* main2画像を同じ位置に重ねる */
.top-main2 {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: auto;
  z-index: 2;
  opacity: 0;
  transform: translateY(30px);
}

.top-main2.visible {
  animation: slide-fade-up 1s ease forwards;
}

.top-main2 img {
  width: 100%;
  /* ← .top-main2 に対してフィット */
  height: auto !important;
  display: block;
}









.top-logo-ske {
  position: absolute;
  top: 83%;
  left: 50%;
  width: 80%;
  transform: translate(-50%, -50%) scale(0.6);
  /* 最初は縮小 */
  opacity: 0;
  z-index: 5;
}

.top-logo-ske.visible {
  animation: zoom-logo 0.8s ease forwards;
}

@media (max-width: 768px) {
  .top-logo-ske {
    top: 89.5%;
    left: 50%;
    width: 100%;
  }
}


@media (max-width: 768px) {
  .top-image-wrapper {
    width: 100%;
    margin-top: 0;
    aspect-ratio: 1000 / 1574;
  }


  .top-image-bg,
  .top-main2 img,
  .top-logo img {
    width: 100%;
    max-width: none;
  }

  #top-s {
    padding: 0;
    /* スマホでは余白なしで表示 */
  }
}

/* ---------------TOP　メイン画像（ここまで） ---------------------*/


.schedule-box {
  padding-left: 3rem;
  padding-right: 3rem;
}

#schedule .schedule-value {
  font-size: 1.6rem;
  font-weight: bold;
}



#updates {
  margin-top: 0;
  padding-top: 0;
  padding-left: 0;
  padding-right: 0;
}

#updates .update-card.scrollable {
  max-height: 200px;        /* 好きな高さに調整 */
  overflow-y: auto;
  background: transparent;   /* 枠なし・透明 */
  border: none;
  padding-right: 12px;       /* スクロールバー分の余白 */
}

/* スクロールバーの見た目を薄くする場合（不要なら省略） */
#updates .update-card.scrollable::-webkit-scrollbar {
  width: 8px;
}
#updates .update-card.scrollable::-webkit-scrollbar-thumb {
  background: rgba(255, 255, 255, 0.35);
}

/* 更新履歴を縦スクロールにする */
#updates .update-card {
  max-height: 170px;          /* 適宜調整 */
  overflow-y: auto;
  overflow-x: hidden;
  background: transparent;
  border: none;
  padding-right: 12px;        /* スクロールバーぶん余白 */
  -webkit-overflow-scrolling: touch; /* iOSで慣性スクロール */
}

@media (max-width: 768px) {
  #updates .update-card {
    max-height: 120px;        /* モバイル向け高さ調整 */
  }
#updates .update-card.scrollable {
  max-height: 160px;        /* 好きな高さに調整 */
}


}



#updates .update-title {
  display: flex;
  align-items: center;
  gap: 0.35em;
}

#updates .update-link img {
  display: inline-block;
  width: 18px;
  height: 18px;
}


.update-row {
  display: flex;
  align-items: center;
  gap: 0.5em;
  position: relative;
  padding: 0 0.5rem;
}

.update-card {
  position: relative;
  display: block;
  flex: 1;
  padding: 0.75em 1em 0.75em 2em;
  text-align: left;
  overflow: hidden;
  text-decoration: none;
  flex-direction: column;
  transition: transform 0.2s, box-shadow 0.2s;
  color: inherit;
}


.update-card .meta {
  font-size: 0.75rem;
  color: #505cff;
  margin-bottom: 0.1em;
  padding: 0;
  font-weight: 900;
}

.update-card h3 {
  font-size: 1rem;
  margin: 0;
  padding: 0;
  font-weight: 700;
}



.update-card:not(:last-of-type) {
  border-bottom: 1px dotted #4f78ff;
}




.new-tag {
  display: inline-block;
  background-color: #4f6ffd;
  color: #ffffff;
  padding: 0.1em 0.5em;
  font-size: 0.75rem;
  font-weight: 700;
  max-width: 0 0.1rem;
  /* margin-left: 0.5rem; */
  /* margin-right: 0;*/
}

.update-container {
  background: #ffffff86;
  width: 100%;
  max-width: none;
  border-bottom: 2px dashed #6a85ff93;
  padding: 0.5rem 2rem 0;
}

.update-card .date {
  color: #4f6ffd;
  font-size: 1rem;
}

.update-card .text {
  display: flex;
  flex-direction: column;
}

@media (max-width: 768px) {
  .update-row {
    flex-direction: row;
    align-items: center;
    margin-bottom: 0.8em;
    gap: 0.5em;
    padding: 0;
  }


  .schedule-box {
    padding-left: 5%;
    padding-right: 5%;
  }

  .update-container {
    margin: 0 auto;
    border-bottom: 2px dashed #6a85ff93;
    padding: 0;
  }

  .update-card {
    overflow: hidden;
    text-decoration: none;
    color: inherit;
    display: flex;
    flex-direction: column;
    transition: transform 0.2s, box-shadow 0.2s;
  }

  .update-card {
    margin-top: 0.8em;
    padding: 0.1em 4% 0;
  }


  .update-card .text {
    display: flex;
    flex-direction: column;
  }

  .update-card .meta {
    font-size: 0.9rem;
    margin-bottom: 0.1em;
    padding: 0;
  }


  .update-card h3 {
    font-size: clamp(0.7rem, 2vw, 0.9rem);
  }

  .update-card .date {
    font-size: clamp(0.65rem, 3vw, 0.87rem);
  }

  .new-tag {
    display: inline-block;
    padding: 0.1em 0.6em;
    font-size: clamp(0.6rem, 2.5vw, 0.75rem);
    font-weight: 700;
  /* margin-left: 0.5rem; */
  /* margin-right: 0;*/
  }
}




@media (max-width: 768px) {
  #schedule .schedule-box {
    padding: 2em 1.5em;
  }

  #schedule .schedule-value {
    font-size: 1em;
  }
}



/* 参加案内ボタン */
.participation-button {
  --speaker-size: 1.8rem;
  --arrow-size: 1.4rem;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  column-gap: 1rem;
  margin: 0.4em auto;
  padding: 1rem 4.8rem 1.5rem;
  font-size: 1.5rem;
  font-weight: 900;
  color: #fff;
  background-color: #201cff;
  border-radius: 50px;
  text-decoration: none;
  box-shadow: 0 15px 0px rgba(28, 255, 206, 0.719);
  transition: transform 0.2s ease, box-shadow 0.2s ease;
  position: relative;
  z-index: 0;
}

.participation-button img {
  display: block;
  position: relative;
  z-index: 2;
  padding: 0;
  /* override .center-line img default */
}

.participation-button .speaker-icon {
  width: var(--speaker-size);
}

.participation-button .arrow-icon {
  width: var(--arrow-size);
}

.participation-button .label {
  flex: 1;
  text-align: center;
}


.participation-button::before,
.participation-button::after {
  position: absolute;
  content: "";
  width: 100%;
  height: 100%;
  top: 0;
  left: 0;
  z-index: -1;
  background: #4a6bffd5;
  border-radius: inherit;
  animation: wave 2.4s linear infinite;
}

.participation-button::after {
  animation-delay: 0.95s;
}

@keyframes wave {
  0% {
    opacity: 1;
    transform: scaleY(1) scaleX(1);
  }

  20% {
    opacity: 0.8;
  }

  70% {
    opacity: 0.2;
    transform: scaleY(1.4) scaleX(1.18);
  }

  80% {
    opacity: 0;
    transform: scaleY(1.4) scaleX(1.18);
  }

  90% {
    opacity: 0;
    transform: scaleY(1) scaleX(1);
  }

}

.participation-button:hover {
  transform: translateY(-4px);
  box-shadow: 0 15px 0px rgba(28, 255, 149, 0.719);
  background-color: rgb(61, 232, 255);

}



@media (max-width: 768px) {
  .participation-button {
    font-size: clamp(0.8rem, 4vw, 1.5rem);
    padding: 4% 10%;
    margin-top: 0.8rem;
  }
}


#top-s {
  background-image: url("../images/pc-mainbk.png");
  background-size: cover;
  background-position: center -850px;
  background-repeat: no-repeat;
}

@media (orientation: portrait) and (min-width: 769px) {
  #top-s {
    background-position: center center;
  }
}


@media (max-width: 768px) {
  #top-s {
    background-position: center center;
  }
}

/* 更新履歴スクロール（末尾で上書き） */
#updates .update-card,
#updates .update-card.scrollable {
  max-height: 200px;
  overflow-y: auto;
  overflow-x: hidden;
  background: transparent;
  border: none;
  padding-right: 12px;
  -webkit-overflow-scrolling: touch;
}

#updates .update-card::-webkit-scrollbar,
#updates .update-card.scrollable::-webkit-scrollbar {
  width: 8px;
}

#updates .update-card::-webkit-scrollbar-thumb,
#updates .update-card.scrollable::-webkit-scrollbar-thumb {
  background: rgba(255, 255, 255, 0.35);
}

@media (max-width: 768px) {
  #updates .update-card,
  #updates .update-card.scrollable {
    max-height: 130px;
  }
}

/* 更新履歴リンクアイコン調整 */
#updates .update-link {
  display: inline-flex;
  align-items: center;
  margin-left: 0.4em;
}

#updates .update-link img {
  width: 18px;
  height: 18px;
  display: block;
}
