.public-root {
    display: flex;
    color: #333;
    box-sizing: border-box;
    font-weight: bold;
    font-family: "Noto Serif JP", serif;
}
.public-root main {
    width: 80vw;
}
/* -----------------------------------------------
header
----------------------------------------------- */
#header-pc {
    position: sticky;
    top: 0;
    padding: 1vw;
    width: 20vw;
    height: 100vh;
    font-size: 1.1vw;
    z-index: 99999999999;
}
#header-logo {
    margin: 10%;
    width: 80%;
}
#header-pc ul {
    margin: 1vw 0;
    padding: 1vw 0;
    text-align: center;
    border-top: solid 3px #333;
}
#header-pc ul li a {
    display: inline-block;
    width: 100%;
    padding: 1.5vw 0;
    border-bottom: solid 1px #ccc;
}
#header-pc-btn01 {
    padding: 1vw 0;
    color: #fff;
    background-color: #15803d;
    margin-bottom: 1vw;
    border-bottom: solid 0px #00000000;
}
#header-pc-btn02 {
    padding: 1vw 0;
    color: #fff;
    background-color: #f97316;
    border-bottom: solid 0px #00000000;
}
#header-pc-sns-area {
    display: flex;
    justify-content: space-around;
    padding: 0 1vw;
}
#header-pc-sns-area img {
    width: 2vw;
}
#header-pc ul li a:not(#header-pc-btn01):not(#header-pc-btn02):hover {
    background-color: #15803d;
    color: #fff;
}
/* ▼ 大会一覧のサブメニュー用 ▼ */
#header-pc ul li.header-has-sub {
    position: relative;
}
#header-pc ul li.header-has-sub .header-sub {
    position: fixed;
    top: -5.9vw;
    left: 18.8vw;
    min-width: 20vw;
    height: 110vh;
    background: #15803d;
    display: none;
    z-index: 999999999999999999999;
    border-left: solid 2px #fff;
}
#header-pc ul li.header-has-sub .header-sub li:first-child {
    margin-top: 34.8vw;
    border-top: solid 1px #ccc;
}
#header-pc ul li.header-has-sub .header-sub li a {
    padding: 1.5vw;
    border-bottom: 1px solid #ccc;
    color: #fff;
}

/* 大会一覧にホバーした時だけサブメニュー表示 */
#header-pc ul li.header-has-sub:hover > .header-sub {
    display: block;
}
/* サブメニュー（大会一覧の右側）のリンクホバー */
#header-pc ul li.header-has-sub .header-sub li a:hover {
    background-color: #0f5f2f !important;
    color: #fff;
}


/* ===============================================
Mobile Header / Drawer
=============================================== */

/* まずモバイルヘッダーはPCでは非表示 */
.header-mobile {
  display: none;
}

/* ハンバーガー */
.hamburger-btn {
  cursor: pointer;
  width: 10vw;
  height: 6vw;
  max-width: 52px;
  max-height: 52px;
  border: 0;
  background: transparent;
  display: grid;
  place-items: center;
  gap: 1.2vw;
  padding: 0;
}
.hamburger-btn span {
  display: block;
  width: 7vw;
  max-width: 30px;
  height: 0.6vw;
  max-height: 3px;
  background: #333;
  border-radius: 999vw;
}

/* Drawer root */
.mobile-drawer {
  position: fixed;
  inset: 0;
  z-index: 1000000000000; /* header z-indexより上 */
  pointer-events: none;
  opacity: 0;
  transition: opacity 0.2s ease;
}
.mobile-drawer.is-open {
  pointer-events: auto;
  opacity: 1;
}

.mobile-drawer-backdrop {
  position: absolute;
  inset: 0;
  border: 0;
  background: rgba(0,0,0,0.45);
}

/* Panel（右から） */
.mobile-drawer-panel {
  position: absolute;
  top: 0;
  right: 0;
  width: 85vw;
  height: 100%;
  background: #fff;
  transform: translateX(100%);
  transition: transform 0.25s ease;
  border-left: solid 0.3vw #dedede;
  display: flex;
  flex-direction: column;
}
.mobile-drawer.is-open .mobile-drawer-panel {
  transform: translateX(0);
}

/* Drawer header */
.mobile-drawer-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 4.5vw 4vw;
  border-bottom: solid 0.3vw #dedede;
}
.mobile-drawer-title {
  font-size: 5vw;
  margin: 0;
}
.mobile-drawer-close {
  cursor: pointer;
  border: 0;
  background: transparent;
  font-size: 7vw;
  line-height: 1;
}

/* Drawer nav */
.mobile-drawer-nav {
  overflow: auto;
  padding: 2vw 0 6vw 0;
}
.mobile-drawer-list {
  list-style: none;
  margin: 0;
  padding: 0;
}
.mobile-drawer-list li a,
.mobile-accordion-btn {
  display: block;
  width: 100%;
  text-align: left;
  padding: 3.2vw 4vw;
  border-bottom: solid 0.25vw #eee;
  color: #333;
  background: #fff;
}

/* アコーディオン */
.mobile-accordion-btn {
  cursor: pointer;
  border: 0;
  font-weight: bold;
}
.mobile-accordion-icon {
  float: right;
  transition: transform 0.2s ease;
}
.mobile-accordion-icon.is-open {
  transform: rotate(180deg);
}

.mobile-accordion-panel {
  display: none;
  background: #f0fdf4;
}
.mobile-accordion-panel.is-open {
  display: block;
}
.mobile-accordion-panel li a {
  padding-left: 7vw;
}

/* ログアウトボタンがli内で自然に見えるように */
.mobile-logout button {
  width: 100%;
}

/* ===============================================
Responsive layout（public-root / main）
=============================================== */
@media (max-width: 768px) {
  /* PCサイドヘッダーを隠す */
  #header-pc {
    display: none;
  }

  /* モバイル上部ヘッダー表示 */
  .header-mobile {
    display: flex;
    position: sticky;
    top: 0;
    z-index: 99999999999;
    background: #fff;
    border-bottom: solid 0.3vw #dedede;
    padding: 2.5vw 3.5vw;
    align-items: center;
    justify-content: space-between;
  }

  .header-mobile-logo {
    display: inline-block;
    width: 40vw;
  }

  /* レイアウト：サイドバー前提を解除 */
  .public-root {
    display: block;
  }

  .public-root main {
    width: 100%;
  }
}

/* -----------------------------------------------
slideshow-container
----------------------------------------------- */
.slideshow-container {
    position: relative;
    max-width: 90%;
    margin: 0 auto;
    margin-top: 5%;
    overflow: hidden;
}

.slideshow-track {
    width: 100%;
}

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

.slideshow-track.is-pc {
    display: flex;
    will-change: transform;
}

.slideshow-track.is-pc.is-animate {
    transition: transform 0.45s ease;
}

.slideshow-slide {
    flex: 0 0 100%;
}

.prev-btn,
.next-btn {
    cursor: pointer;
    position: absolute;
    z-index: 10;
    top: 50%;
    transform: translateY(-50%);
    width: 5vw;
    height: 5vw;
    text-align: center;
    line-height: 5vw;
    font-size: 2vw;
    color: #fff;
    border-radius: 50%;
    background: rgba(0,0,0,0.7);
}

.prev-btn { left: 1vw; }
.next-btn { right: 1vw; }

.dots-container {
    text-align: center;
    padding: 1rem 0;
}

.dot {
    display: inline-block;
    width: 12px;
    height: 12px;
    margin: 0 6px;
    background: #ccc;
    border-radius: 50%;
    cursor: pointer;
    transition: background 0.3s;
}

.dot.active {
    background: #333;
}

@media (max-width: 768px) {
    .slideshow-container {
        max-width: 100%;
        margin-top: 4vw;
        border-radius: 4vw;

        /* モバイルでスクロールを渋くしない保険（必要なければ消してOK） */
        overflow: visible;
    }

    .dot {
        width: 3vw;
        height: 3vw;
        margin: 0 1.2vw;
    }

    .slideshow-track.is-mobile {
        display: flex;
        overflow-x: auto;
        scroll-snap-type: x mandatory;
        -webkit-overflow-scrolling: touch;
        gap: 0;

        /* ★CSSで smooth を付けると JS の smooth と二重になって挙動が変になるので付けない */
        scroll-behavior: auto;

        overscroll-behavior-x: contain;

        /* ★横スワイプ許可（pan-y だと横が死ぬ） */
        touch-action: auto;
    }

    .slideshow-track.is-mobile::-webkit-scrollbar {
        display: none;
    }

    .slideshow-slide {
        flex: 0 0 100%;
        scroll-snap-align: start;
    }

    .prev-btn,
    .next-btn {
        display: none;
    }
}




/* --- Tournament Carousel (3 cards) --- */
.tournament-carousel {
  margin: 0 5%;
  padding: 1vw 2.6vw;
  background: #fff;
}

.tournament-carousel__title {
  font-size: 1.35vw;
  text-align: left;
  margin-bottom: 1.6vw;
}

.tournament-carousel__viewport {
  position: relative;
  overflow: hidden;
  width: 100%;
}

/* 横に3枚ぶんを基準にスライド */
.tournament-carousel__track {
  display: flex;
  transition: transform 0.35s ease;
  will-change: transform;
}

/* 1枚の幅 = 100% / 3 */
.tournament-card {
  flex: 0 0 calc(100% / 3);
  padding: 0 0.6vw; /* カード間の余白 */
  box-sizing: border-box;
}

.tournament-card__inner {
  padding: 1.6vw 1.6vw;
  border-radius: 1.2vw;
  background: #bbf7d0;
  border-left: solid 0.45vw #15803d;
  min-height: 12vw; /* カードを小さくしつつ高さは揃える */
}

.tournament-card.is-blank .tournament-card__inner {
  background: transparent;
  border-left: none;
}

.tournament-card__date {
  font-size: 0.95vw;
  margin-bottom: 0.7vw;
  opacity: 0.9;
}

/* タイトル2行で省略（…） */
.tournament-card__title {
  font-size: 1.05vw;
  line-height: 1.55;
  margin: 0 0 0.8vw 0;

  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 2; /* 2行 */
  overflow: hidden;
  text-overflow: ellipsis;

  /* まれに効かない環境の保険 */
  max-height: calc(1.55em * 2);
}

.tournament-card__venue {
  font-size: 0.95vw;
  margin: 0 0 1.0vw 0;
}

/* 要項/申込/結果ボタンを小さく */
.tournament-card__links {
  display: flex;
  gap: 0.6vw;
  flex-wrap: wrap;
  align-items: center;
}

.tournament-mini-btn {
  display: inline-flex;
  align-items: center;
  gap: 0.35vw;
  padding: 0.35vw 0.7vw;
  border-radius: 9999px;
  background: #fff;
  border: solid 0.18vw #dedede;
  text-decoration: none;
  font-size: 0.9vw;
  cursor: pointer;
}

.tournament-mini-btn img.pdf-logo,
.tournament-mini-btn img.url-logo {
  width: 1.0vw;
  height: auto;
}

/* prev/next */
.tournament-carousel__prev,
.tournament-carousel__next {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  width: 2.4vw;
  height: 2.4vw;
  font-size: 1.6vw;
  color: #fff;
  border: none;
  border-radius: 9999px;
  text-align: center;
  line-height: 1.5;
  cursor: pointer;
  background: rgba(0, 0, 0, .9);
}

.tournament-carousel__prev {
  left: 0;
}
.tournament-carousel__next {
  right: 0;
}

.tournament-carousel__prev:disabled,
.tournament-carousel__next:disabled {
  opacity: 0.5;
  cursor: default;
}

.tournament-carousel__count {
  margin-top: 1.0vw;
  text-align: center;
  font-size: 0.9vw;
  opacity: 0.8;
}

.tournament-carousel__empty {
  text-align: center;
  font-size: 1vw;
  padding: 1.8vw 0;
}
/* ==========================
   Tournament Carousel (SP)
   ========================== */
@media (max-width: 768px) {
  .tournament-carousel {
    margin: 6vw 5%;
    padding: 4.2vw 4.2vw;
  }

  .tournament-carousel__title {
    font-size: 4.2vw;
    margin-bottom: 4.0vw;
    line-height: 1.3;
  }

  .tournament-carousel__viewport {
    width: 100%;
    overflow: hidden;
    border-radius: 3.2vw; /* 角を丸めたい場合 */
  }

  /* SPは 1枚ずつスライド */
  .tournament-card {
    flex: 0 0 100%;
    padding: 0 1.6vw;
    box-sizing: border-box;
  }

  .tournament-card__inner {
    padding: 4.2vw 4.2vw;
    border-radius: 3.2vw;
    border-left-width: 1.2vw;
    min-height: 34vw;
  }

  .tournament-card__date {
    font-size: 3.4vw;
    margin-bottom: 2.2vw;
  }

  .tournament-card__title {
    font-size: 3.8vw;
    margin: 0 0 2.6vw 0;
    line-height: 1.45;

    -webkit-line-clamp: 2;
    max-height: calc(1.45em * 2);
  }

  .tournament-card__venue {
    font-size: 3.4vw;
    margin: 0 0 3.2vw 0;
  }

  .tournament-card__links {
    gap: 2.2vw;
  }

  .tournament-mini-btn {
    gap: 1.2vw;
    padding: 1.8vw 3.0vw;
    border-width: 0.4vw;
    font-size: 3.2vw;
  }

  .tournament-mini-btn img.pdf-logo,
  .tournament-mini-btn img.url-logo {
    width: 4.2vw;
    height: auto;
  }

  /* prev/next：SPは大きめ */
  .tournament-carousel__prev,
  .tournament-carousel__next {
    display: none;
  }

  .tournament-carousel__count {
    margin-top: 3.0vw;
    font-size: 3.2vw;
  }

  .tournament-carousel__empty {
    font-size: 3.6vw;
    padding: 6vw 0;
  }
}

/* -----------------------------------------------
news-area
----------------------------------------------- */
.news-area {
    position: relative;
    margin-top: 7vw;
    padding: 0 5vw;
    width: 100%;
    overflow: hidden;
}
#news-background-img {
    position: absolute;
    top: 23%;
    right: -10%;
    z-index: -1;
    width: 40vw;
}
.news-title-area {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 0 5vw 1vw 5vw;
    border-bottom: solid 2px #333;
}
.news-title-wrap {
    display: flex;
    align-items: flex-end;
}
.news-title-wrap h2 {
    margin-right: 2vw;
    font-size: 4vw;
}
.news-title-wrap p {
    padding-bottom: 0.5vw;
    font-size: 1.2vw;
}
.news-btn-area a {
    display: inline-block;
    padding: 1.4vw 3vw;
    font-size: 1.2vw;
    color: #fff;
    background-color: #15803d;
}
.news-post-area {
    padding: 0 5vw;
    width: 100%;
}
.news-post {
    display: flex;
    align-items: center;
    cursor: pointer;
    padding-top: 1.5vw;
    padding-bottom: 1vw;
    width: 100%;
    border-bottom: solid 2px #333;
}
.post-thumbnail img {
    width: 8vw !important;
    height: 5vw !important;
    object-fit: cover;
    border: solid 2px #dedede;
    border-radius: 5px;
}
.post-text-area {
    margin-left: 1vw;
    width: 100%;
}
.post-text-wrap {
    display: flex;
    align-items: center;
    justify-content: space-between;
    width: 100%;
}
.post-title {
    font-size: 1.2vw;
}
.post-text-wrap img {
    width: 3vw;
}
@media (max-width: 768px) {
    .news-area {
        margin-top: 15vw;
        padding: 0 0;
    }
    #news-background-img {
        top: 10%;
        right: -20%;
        width: 70vw;
        opacity: 0.25;
    }
    .news-title-area {
        padding: 0 1vw 3vw 1vw;
        gap: 3vw;
    }
    .news-title-wrap h2 {
        font-size: 9vw;
        margin-right: 3vw;
    }
    .news-title-wrap p {
        font-size: 3.6vw;
        padding-bottom: 1.2vw;
    }
    .news-btn-area a {
        padding: 2.6vw 4vw;
        font-size: 3.6vw;
        border-radius: 2vw;
    }
    .news-post-area {
        margin: 0 2vw;
        padding: 0;
    }
    .news-post {
        padding: 3.5vw 1vw;
        gap: 3vw;
    }
    .post-thumbnail img {
        width: 20vw !important;
        height: 15vw !important;
        border-radius: 2vw;
    }
    .post-text-area {
        margin-left: 0;
    }
    .post-date {
        margin-bottom: 1vw;
        font-size: 3.2vw;
    }
    .post-title {
        font-size: 4vw;
        line-height: 1.5;
    }
    .post-text-wrap img {
        width: 10vw !important;
    }
}
/* -----------------------------------------------
index-text-area
----------------------------------------------- */
.index-text-area {
    position: relative;
    margin-top: 10vw;
    padding: 15vw 10vw 5vw 10vw;
    color: #fff;
    background-color: #15803d;
    border-radius: 150px 0 0 150px;
}
.marquee-container {
    position: absolute;
    top: -5.5vw;
    left: 0;
    width: 100%;
    overflow: hidden;
    white-space: nowrap;
    box-sizing: border-box;
}
.marquee-track {
    display: flex;
    width: max-content;
    animation: scroll-left 80s linear infinite;
}

.marquee-text {
    font-size: 15vw;
    padding-right: 1vw;
    opacity: 0.7;
}

@keyframes scroll-left {
    0% {
    transform: translateX(0%);
    }
    100% {
    transform: translateX(-50%);
    }
}
.index-text-title-area h2 {
    font-size: 2.5vw;
}
.index-text-title-area h3 {
    margin-top: 1vw;
    font-size: 1vw;
}
.salutation-text {
    margin: 2vw 0;
    width: 100%;
}
.salutation-text h2 {
    margin-bottom: 2vw;
    font-size: 2vw;
}
.salutation-text p {
    margin-bottom: 1vw;
    line-height: 1.5;
    font-size: 1.1vw;
}
.salutation-text p:last-child {
    margin-bottom: 0;
}
@media (max-width: 768px) {
    .index-text-area {
        margin-top: 20vw;
        padding: 25vw 5vw 15vw 5vw;
        border-radius: 10vw;
    }
    .marquee-container {
        top: -5vw;
    }
    .marquee-text {
        font-size: 22vw;
        padding-right: 2vw;
    }
    .index-text-title-area h2 {
        font-size: 8vw;
    }
    .index-text-title-area h3 {
        margin-top: 2vw;
        font-size: 4vw;
    }
    .salutation-text {
        margin: 8vw 0 0 0;
    }
    .salutation-text h2 {
        margin-bottom: 6vw;
        font-size: 6vw;
    }
    .salutation-text p {
        margin-bottom: 3vw;
        font-size: 4vw;
        line-height: 1.75;
    }
}
/* -----------------------------------------------
tournament-schedule
----------------------------------------------- */
.tournament-schedule {
  position: relative;
  margin-top: 10vw;
  font-size: 1vw;
}

.schedule-title-area {
  text-align: center;
}
.schedule-title-area h2 {
  font-size: 2.5vw;
}
.schedule-title-area h3 {
  margin-top: 1vw;
  font-size: 1.2vw;
}
.schedule-title-area p {
  margin-top: 2vw;
  font-size: 1.2vw;
}

/* ==========================
   月ボタン
   ========================== */
.month-buttons {
  display: flex;
  justify-content: space-around;
  margin-top: 3vw;
  width: 100%;
}

.month-buttons .month-btn {
  cursor: pointer;
  padding: 0.5vw 2vw;
  color: #000;
  background: #f97316;
}

.month-buttons .month-btn.active {
  color: #fff;
  background: #15803d;
}

/* ==========================
   PC：テーブル（崩れ対策込み）
   ========================== */
.month-table {
  display: none;
  width: 100%;
  margin-top: 2vw;

  /* ★追加：列幅固定で崩れにくくする */
  border-collapse: collapse;
  table-layout: fixed;
  font-size: .9vw;
}

/* 共通セル（罫線・余白・はみ出し抑制） */
.month-table th,
.month-table td {
  padding: 1vw .5vw;
  text-align: center;
  vertical-align: middle;

  /* ★追加：見やすい区切り線 */
  border-bottom: solid 1px #bbf7d0;
  border-right: solid 1px #bbf7d0;

  /* ★追加：固定レイアウト下でのはみ出し抑制 */
  overflow: hidden;
}

/* 左端の罫線 */
.month-table th:first-child,
.month-table td:first-child {
  border-left: solid 1px #bbf7d0;
}

/* ヘッダー */
.month-table thead {
  color: #fff;
  background-color: #15803d;
}
.month-table thead th {
  border-right: solid 1px rgba(255, 255, 255, 0.35);
  line-height: 1.25;
  font-weight: 700;
}

/* 行の区切り（既存の偶数行背景色を維持） */
.month-table tbody tr {
  border-bottom: none; /* th/td側で線を引くのでここは不要 */
}
.tournament-schedule .month-table tbody tr:nth-child(even) {
  background-color: #bbf7d0;
}

/* --- 列幅設計（9列） ---
   1:開催日 2:大会名 3:会場 4:締切日 5:参加料 6:使用球 7:要項 8:申込 9:結果
*/
.month-table th:nth-child(1),
.month-table td:nth-child(1) {
  width: 6%;
}
.month-table th:nth-child(2),
.month-table td:nth-child(2) {
  width: 33%;
}
.month-table th:nth-child(3),
.month-table td:nth-child(3) {
  width: 20%;
}
.month-table th:nth-child(4),
.month-table td:nth-child(4) {
  width: 7%;
}
.month-table th:nth-child(5),
.month-table td:nth-child(5) {
  width: 11%;
}
.month-table th:nth-child(6),
.month-table td:nth-child(6) {
  width: 11%;
}
.month-table th:nth-child(7),
.month-table td:nth-child(7) {
  width: 4%;
}
.month-table th:nth-child(8),
.month-table td:nth-child(8) {
  width: 4%;
}
.month-table th:nth-child(9),
.month-table td:nth-child(9) {
  width: 4%;
}

/* --- 折り返し＆左寄せにしたい列（大会名・会場・参加料・使用球） --- */
.month-table td:nth-child(2),
.month-table td:nth-child(3),
.month-table td:nth-child(5),
.month-table td:nth-child(6) {
  text-align: left;
  white-space: normal;      /* 折り返し */
  overflow-wrap: anywhere;  /* 長い文字も折る */
  word-break: break-word;
  line-height: 1.5;
}

/* 参加料・使用球は少し小さめ */
.month-table td:nth-child(5),
.month-table td:nth-child(6) {
  font-size: 0.8vw;
}

/* --- 改行させたくない列（開催日・締切日・アイコン列） --- */
.month-table td:nth-child(1),
.month-table td:nth-child(4),
.month-table td:nth-child(7),
.month-table td:nth-child(8),
.month-table td:nth-child(9) {
  white-space: nowrap;
}

/* アイコン列は中央寄せ（セル内もリンクも） */
.month-table td:nth-child(7),
.month-table td:nth-child(8),
.month-table td:nth-child(9) {
  text-align: center;
}

.month-table td:nth-child(7) a,
.month-table td:nth-child(8) a,
.month-table td:nth-child(9) a {
  display: inline-flex;
  align-items: center;
  justify-content: center;
}


/* ロゴ（PC） */
.pdf-logo {
  width: 1vw;
  height: auto;
}
.url-logo {
  width: 1vw;
  height: auto;
}

/* ==========================
   表示切替
   ========================== */
@media (min-width: 769px) {
  .month-cards {
    display: none;
  }
}

@media (max-width: 768px) {
  .tournament-schedule {
    margin-top: 20vw;
    font-size: 3.6vw;
    padding: 0 4vw;
  }

  .schedule-title-area {
    margin-bottom: 10vw;
  }
  .schedule-title-area h2 {
    font-size: 7vw;
  }
  .schedule-title-area h3 {
    margin-top: 4vw;
    font-size: 4.5vw;
  }
  .schedule-title-area p {
    margin-top: 4vw;
    font-size: 3.6vw;
  }

  .month-buttons {
    margin-top: 5vw;
    display: grid;
    grid-template-columns: repeat(6, 1fr);
    gap: 1.6vw;
  }
  .month-buttons li {
    width: 100%;
  }
  .month-buttons .month-btn {
    width: 100%;
    padding: 2.2vw 0;
    border-radius: 2vw;
    text-align: center;
    font-size: 4vw;
  }

  /* SPはテーブル非表示 */
  .month-table {
    display: none !important;
  }

  /* ==========================
     SP：カード表示
     ========================== */
  .month-cards {
    display: block;
    margin-top: 5vw;
  }

  .month-cards__head {
    margin-bottom: 3vw;
  }
  .month-cards__title {
    font-size: 4.2vw;
    margin: 0;
    padding: 3vw 5vw;
    border-left: solid 1.5vw #15803d;
    background: #f6fbff;
  }

  .month-cards__list {
    display: grid;
    gap: 3vw;
  }

  .month-card {
    background: #fff;
    border: solid 0.35vw #dedede;
    border-radius: 3.5vw;
    padding: 3.5vw;
    box-shadow: 0 2vw 6vw rgba(0, 0, 0, 0.08);
  }
  .month-card--empty {
    text-align: center;
    padding: 5vw 3.5vw;
    background: #fff;
  }

  .month-card__top {
    display: grid;
    gap: 2vw;
    padding-bottom: 3vw;
    border-bottom: solid 0.3vw #eee;
    margin-bottom: 3vw;
  }

  .month-card__date {
    display: inline-block;
    width: fit-content;
    padding: 2vw 5vw;
    border-radius: 999vw;
    background: #f97316;
    font-size: 3.2vw;
  }

  .month-card__title {
    margin-top: 2vw;
    font-size: 4.2vw;
    line-height: 1.5;
  }

  .month-card__dl {
    margin: 0;
    display: grid;
    grid-template-columns: 5em 1fr;
    gap: 2vw 3vw;
    font-size: 3.6vw;
    line-height: 1.6;
  }
  .month-card__dl dt {
    color: #555;
  }
  .month-card__dl dd {
    margin: 0;
    color: #111;
  }

  .month-card__actions {
    display: flex;
    justify-content: center;
    gap: 3vw;
    margin-top: 3.5vw;
    flex-wrap: wrap;
  }
  .month-card__action {
    display: inline-flex;
    align-items: center;
    gap: 2vw;
    padding: 2vw 3vw;
    border-radius: 999vw;
    border: solid 0.35vw #dedede;
    background: #fff;
    font-size: 3.6vw;
  }

  .month-card__action img {
    width: 5.5vw;
    height: auto;
  }
}

/* -----------------------------------------------
interview-area
----------------------------------------------- */
.interview-area {
    margin-top: 10vw;
    padding: 0 5vw;
    width: 100%;
}
.interview-title-area {
    display: flex;
    align-items: flex-end;
}
.interview-title-area h2 {
    margin-right: 2vw;
    font-size: 4vw;
}
.interview-title-area h5 {
    padding-bottom: 0.5vw;
    font-size: 1.2vw;
}
.interview-text-area {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-top: 2vw;
    padding-bottom: 1vw;
    line-height: 1.5;
    font-size: 1vw;
    border-bottom: solid 2px #333;
}
.interview-btn-area a {
    display: inline-block;
    padding: 1vw 3vw;
    font-size: 1.2vw;
    color: #fff;
    background-color: #15803d;
}
.interview-card-area {
    display: flex;
    flex-wrap: wrap;
    gap: 16px;
    margin-top: 2vw;
    width: 100%;
}
.interview-post {
    flex: 0 0 calc((100% - 2 * 16px) / 3);
    max-width: calc((100% - 2 * 16px) / 3);
    box-sizing: border-box;
    cursor: pointer;
}
.interview-post-thumbnail img {
    width: 100%;
    height: auto;
    object-fit: cover;
}
.interview-post-date {
    margin-top: 1vw;
    font-size: 0.8vw;
}
.interview-post-title {
    margin: .5em 0;
    white-space: normal;
    overflow-wrap: break-word;
    word-break: break-all;
    font-size: 1.1vw;
}

@media (max-width: 768px) {
    .interview-post {
        flex: 0 0 calc((100% - 16px) / 2);
        max-width: calc((100% - 16px) / 2);
    }
}
@media (max-width: 480px) {
    .interview-post {
        flex: 0 0 100%;
        max-width: 100%;
    }
}
/* -----------------------------------------------
sponsor-area
----------------------------------------------- */
.sponsor-area {
    margin-top: 10vw;
}
.sponsor-title-area {
    display: flex;
    justify-content: center;
}
.sponsor-test-area {
    margin: 5vw 0;
    text-align: center;
    font-size: 1.2vw;
    line-height: 2;
}
.sponsor-title-area img {
    width: 30vw;
}
.sponsor-main-upper-area, .sponsor-main-bottom-area {
    display: flex;
    justify-content: space-around;
}
.sponsor-main-upper-area {
    margin-top: 5vw;
    margin-bottom: 3vw;
}
.sponsor-main-area img {
    width: 20vw;
    height: auto;
}
@media (max-width: 768px) {
    .sponsor-area {
        margin-top: 20vw;
        padding: 0 4vw;
    }

    .sponsor-title-area img {
        width: 70vw;
    }

    .sponsor-test-area {
        font-size: 3.6vw;
        margin: 6vw 0;
    }

    .sponsor-main-upper-area,
    .sponsor-main-bottom-area {
        flex-wrap: wrap;
        gap: 4vw;
    }

    .sponsor-main-area img {
        width: 42vw;
    }
}
/* -----------------------------------------------
information-area
----------------------------------------------- */
.information-area {
    margin-top: 10vw;
    padding: 5vw 10vw;
    color: #fff;
    background-color: #15803d;
}
.information-title-area {
    text-align: center;
}
.information-title-area h2 {
    font-size: 3vw;
}
.information-title-area h5 {
    margin-top: 1vw;
    font-size: 1vw;
}
.information-main-area {
    margin-top: 3vw;
    padding: 3vw 5vw;
    background-color: #fff;
    border-radius: 30px;
}
.information-wrap {
    display: flex;
    justify-content: center;
    font-size: 0.9vw;
    color: #000;
}
.information-wrap img {
    margin-bottom: 1vw;
    width: 22vw;
}
.informaiton-main-tel-area, .informaiton-main-mail-area {
    text-align: center;
}
.informaiton-main-tel-area {
    margin-right: 5vw;
}
.information-area a {
    display: inline-block;
    margin-top: 1.5vw;
    margin-bottom: 1.5vw;
    padding: 1vw;
    width: 22vw;
    font-size: 1.3vw;
    background-color: #f97316;
    border-radius: 50px;
}
.information-threestar-area a {
    display: inline-block;
    text-align: center;
    margin-top: 2vw;
    padding: 1vw;
    width: 100%;
    font-size: 1.3vw;
    background-color: #f97316;
    border-radius: 50px;
}
@media (max-width: 768px) {
    
}
/* -----------------------------------------------
footer
----------------------------------------------- */
footer {
    margin-top: 10vw;
    margin-bottom: 2vw;
    padding: 0 3vw;
}
.footer-info-area {
    margin-top: 2vw;
    margin-bottom: 5vw;
    padding: 2vw 2.5vw;
    border: solid 0.15vw #dedede;
    border-radius: 2.2vw;
    background: #fff;
}
.footer-org-name {
    font-size: 1.4vw;
    border-left: solid 0.45vw #15803d;
    padding-left: 1vw;
    margin-bottom: 1.2vw;
}
.footer-org-dl {
    margin: 0;
    font-size: 1vw;
    line-height: 1.9;
}
.footer-org-row {
    display: grid;
    grid-template-columns: 8em 1fr;
    align-items: center;
    gap: 1vw;
    padding: 0.6vw 0;
    border-top: solid 0.12vw #eee;
}
.footer-org-row:first-child {
    border-top: 0;
    padding-top: 0;
}
.footer-org-row dt {
      color: #555;
}
.footer-org-row dd {
    margin: 0;
    color: #333;
}
.footer-contact-link {
    color: #000fff;
    border-bottom: solid 1px #000fff;
}
.footer-org-break {
    display: inline-block;
    margin-left: 0.5em;
}
.footer-tel {
    display: inline-block;
    padding: 0.25vw 2vw;
    border-radius: 999vw;
    background: #f97316;
    color: #000;
    border: solid 0.12vw #f97316;
}
.footer-tel:hover {
    opacity: 0.9;
}
.footer-title-area {
    display: flex;
    justify-content: space-around;
    align-items: center;
}
.footer-title-area h2 {
    font-size: 3vw;
}
#tatesen {
    content: "";
    width: 3px;
    height: 8vw;
    background-color: #ccc;
}
.footer-title-area img {
    width: 7vw;
}
footer ul {
    display: flex;
    justify-content: space-around;
    margin-top: 3vw;
    font-size: 1vw;
}
.copy-light-area {
    padding: 0.5vw 0;
    text-align: center;
    font-size: 1vw;
    color: #fff;
    background-color: #15803d;
}
/* SP（vw統一） */
@media (max-width: 768px) {
    footer {
        margin-top: 20vw;
        padding: 0 4vw;
    }
    .footer-info-area {
        margin-top: 3.5vw;
        padding: 5vw;
        border-radius: 4vw;
        border-width: 0.25vw;
    }
    .footer-org-name {
        font-size: 5vw;
        padding-left: 2vw;
        margin-bottom: 3vw;
        border-left-width: 1vw;
    }
    .footer-org-dl {
        font-size: 3vw;
    }
    .footer-org-row {
        grid-template-columns: 5em 1fr;
        gap: 2vw;
        padding: 2vw 0;
        border-top-width: 0.25vw;
    }
    .footer-tel {
        padding: 1.2vw 5vw;
        border-width: 0.25vw;
    }
    .footer-title-area {
        margin-top: 10vw;
    }
    .footer-title-area h2 {
        font-size: 5vw;
        line-height: 1.3;
    }
    #tatesen {
        width: 2px;
        height: 10vw;
    }
    .footer-title-area img {
        width: 14vw;
    }
    footer ul {
        flex-direction: column;
        margin-top: 10vw;
        font-size: 3.5vw;
        gap: 5vw;
        flex-wrap: wrap;
    }

    .copy-light-area {
        margin-top: 5vw;
        font-size: 3.2vw;
        padding: 2vw 0;
    }
}

/* -----------------------------------------------
Cookie Consent Modal
（Next.js: components/CookieConsentModal.tsx）
----------------------------------------------- */
.cookie-consent {
  position: fixed;
  inset: 0;
  z-index: 100000000000; /* headerのz-indexが極端に高いので上回る */
  display: flex;
  justify-content: center;
  align-items: flex-end; /* SPは下寄せ */
  padding: 0;
}

.cookie-consent__backdrop {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  border: 0;
  padding: 0;
  margin: 0;
  cursor: pointer;
  background: rgba(0, 0, 0, 0.45);
}

/* パネル */
.cookie-consent__panel {
  position: relative;
  width: 100%;
  max-width: 44vw; /* PCで大きすぎない */
  margin: 0 0 2vw 0;
  background: #fff;
  border-radius: 30px;
  box-shadow: 0 20px 60px rgba(0,0,0,0.25);
  border: solid 2px #dedede;
}

.cookie-consent__content {
  padding: 1.8vw 2vw;
  color: #333;
  box-sizing: border-box;
  font-family: "Noto Serif JP", serif;
  font-weight: bold;
}

.cookie-consent__title {
  font-size: 1.2vw;
  margin-bottom: 0.8vw;
  border-bottom: solid 2px #333;
  padding-bottom: 0.6vw;
}

.cookie-consent__desc {
  font-size: 0.95vw;
  line-height: 1.7;
  color: #333;
}

.cookie-consent__link {
  display: inline-block;
  margin: 0 0.3em;
  color: #15803d;
  text-decoration: underline;
  text-underline-offset: 3px;
}

.cookie-consent__actions {
  display: flex;
  justify-content: flex-end;
  gap: 0.8vw;
  margin-top: 1.2vw;
}

/* ボタン共通 */
.cookie-consent__btn {
  cursor: pointer;
  font-family: "Noto Serif JP", serif;
  font-weight: bold;
  font-size: 0.95vw;
  padding: 0.9vw 1.4vw;
  border-radius: 12px;
  transition: transform 0.15s, opacity 0.15s, background-color 0.15s;
}

.cookie-consent__btn:active {
  transform: translateY(1px);
}

/* 同意しない（白） */
.cookie-consent__btn--ghost {
  background: #fff;
  color: #333;
  border: solid 2px #333;
}

.cookie-consent__btn--ghost:hover {
  background: #f5f5f5;
}

/* 同意する（黄色→あなたのテーマ寄せ） */
.cookie-consent__btn--primary {
  background: #f97316;
  color: #000;
  border: solid 2px #f97316;
}

.cookie-consent__btn--primary:hover {
  opacity: 0.9;
}

/* 注釈 */
.cookie-consent__note {
  margin-top: 0.9vw;
  font-size: 0.75vw;
  color: #666;
}

@media (max-width: 768px) {
  .cookie-consent {
    align-items: flex-end;
  }

  .cookie-consent__panel {
    max-width: none;
    width: 100%;
    margin: 0;
    border-radius: 24px 24px 0 0; /* 下から出る感じ */
    border-left: 0;
    border-right: 0;
    border-bottom: 0;
  }

  .cookie-consent__content {
    padding: 18px 16px;
  }

  .cookie-consent__title {
    font-size: 16px;
    margin-bottom: 10px;
    padding-bottom: 10px;
  }

  .cookie-consent__desc {
    font-size: 13px;
  }

  .cookie-consent__actions {
    justify-content: stretch;
    gap: 10px;
    margin-top: 14px;
  }

  .cookie-consent__btn {
    width: 100%;
    font-size: 14px;
    padding: 12px 14px;
    border-radius: 12px;
  }

  .cookie-consent__note {
    font-size: 11px;
    margin-top: 10px;
  }
}

@media (max-width: 480px) {
  .cookie-consent__panel {
    border-radius: 20px 20px 0 0;
  }
}