﻿    /* ========== CSS変数：学校風・生成り・深緑 ========== */
    :root {
      --cream: #f9f7f2;
      --cream-dark: #f0ebe3;
      --green: #2d5a27;
      --green-dark: #1e3d1a;
      --chalkboard: #1a3329;
      --chalk: #f5f5f0;
      --ink: #2a2a28;
      --muted: #5c5a54;
      --white: #ffffff;
      --border: rgba(45, 90, 39, 0.18);
      --shadow: 0 8px 32px rgba(26, 51, 41, 0.08);
      --shadow-hover: 0 14px 40px rgba(26, 51, 41, 0.12);
      --font-body: "Zen Kaku Gothic New", "Hiragino Sans", "Hiragino Kaku Gothic ProN", Meiryo, sans-serif;
      --font-display: "Kaisei Decol", "Yu Mincho", YuMincho, serif;
      --max: 1200px;
      --header-h: 80px;
      --title-wave: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 48 6' preserveAspectRatio='none'%3E%3Cpath d='M0 4 Q6 0 12 4 T24 4 T36 4 T48 4' fill='none' stroke='%232d5a27' stroke-width='1.5' stroke-linecap='round'/%3E%3C/svg%3E");
    }

    *,
    *::before,
    *::after {
      box-sizing: border-box;
    }

    html {
      scroll-behavior: smooth;
    }

    body {
      margin: 0;
      font-family: var(--font-body);
      font-size: 16px;
      line-height: 1.75;
      color: var(--ink);
      background: var(--cream);
      padding-top: var(--header-h);
    }

    img {
      max-width: 100%;
      height: auto;
      vertical-align: middle;
    }

    a {
      color: var(--green);
      text-decoration: none;
      transition: color 0.25s ease, opacity 0.25s ease, transform 0.25s ease;
    }

    a:hover {
      color: var(--green-dark);
    }

    /* ========== レイアウト ========== */
    .container {
      max-width: var(--max);
      margin-left: auto;
      margin-right: auto;
      padding-left: 24px;
      padding-right: 24px;
    }

    /* ========== ヘッダー（固定） ========== */
    .site-header {
      position: fixed;
      top: 0;
      left: 0;
      right: 0;
      z-index: 1000;
      height: var(--header-h);
      background: rgba(249, 247, 242, 0.94);
      backdrop-filter: blur(10px);
      border-bottom: 1px solid var(--border);
      box-shadow: 0 1px 0 rgba(255, 255, 255, 0.8) inset;
    }

    .site-header__inner {
      max-width: none;
      width: 100%;
      margin: 0 auto;
      padding: 0 clamp(16px, 2.5vw, 40px);
      height: 100%;
      display: flex;
      flex-direction: row;
      align-items: center;
      justify-content: flex-start;
      gap: clamp(12px, 1.5vw, 24px);
    }

    .brand {
      display: flex;
      align-items: center;
      gap: 12px;
      flex-shrink: 0;
    }

    .brand__logo {
      display: block;
      width: auto;
      height: 44px;
      max-width: 120px;
      object-fit: contain;
      object-position: left center;
      flex-shrink: 0;
    }

    .brand__text {
      display: flex;
      flex-direction: column;
      line-height: 1.3;
    }

    .brand__name {
      font-family: var(--font-display);
      font-weight: 700;
      font-size: 1.125rem;
      color: var(--green-dark);
    }

    .brand__tagline {
      font-size: 0.7rem;
      color: var(--muted);
      letter-spacing: 0.02em;
    }

    /* デスクトップナビ（ロゴ・ボタンと縦中央揃え） */
    .nav-desktop {
      display: flex;
      align-items: center;
      justify-content: center;
      flex: 1 1 auto;
      min-width: 0;
      align-self: stretch;
    }

    .nav-desktop__links {
      display: flex;
      align-items: center;
      justify-content: center;
      flex-wrap: nowrap;
      gap: clamp(6px, 0.9vw, 16px);
      list-style: none;
      margin: 0;
      padding: 0;
      height: 100%;
    }

    .nav-desktop__links > li {
      display: flex;
      align-items: center;
      height: 100%;
    }

    .nav-desktop__links a {
      position: relative;
      display: inline-flex;
      align-items: center;
      height: auto;
      padding: 2px 0 4px;
      font-size: 0.8125rem;
      color: var(--ink);
      font-weight: 500;
      white-space: nowrap;
    }

    .nav-desktop__links a::after {
      content: "";
      position: absolute;
      left: 0;
      right: 0;
      bottom: 0;
      height: 2px;
      background: var(--green);
      transform: scaleX(0);
      transform-origin: center;
      transition: transform 0.22s ease;
    }

    .nav-desktop__links a:hover,
    .nav-desktop__links a.is-current {
      color: var(--green);
    }

    .nav-desktop__links a.is-current {
      font-weight: 700;
    }

    .nav-desktop__links a:hover::after,
    .nav-desktop__links a.is-current::after {
      transform: scaleX(1);
    }

    .btn {
      display: inline-flex;
      align-items: center;
      justify-content: center;
      padding: 10px 20px;
      border-radius: 999px;
      font-size: 0.875rem;
      font-weight: 700;
      cursor: pointer;
      border: 2px solid transparent;
      transition: transform 0.28s cubic-bezier(0.34, 1.56, 0.64, 1),
        box-shadow 0.28s ease,
        background 0.28s ease,
        border-color 0.28s ease,
        color 0.28s ease;
    }

    .btn:active {
      transform: scale(0.97);
    }

    .btn--primary {
      background: var(--green);
      color: var(--white);
      box-shadow: 0 4px 14px rgba(45, 90, 39, 0.28);
    }

    .btn--primary:hover {
      background: var(--green-dark);
      color: var(--white);
      transform: translateY(-2px);
      box-shadow: 0 8px 22px rgba(45, 90, 39, 0.35);
    }

    .btn--outline {
      background: var(--white);
      color: var(--green);
      border-color: var(--green);
    }

    .btn--outline:hover {
      background: var(--cream-dark);
      transform: translateY(-2px);
      box-shadow: var(--shadow);
    }

    .btn.is-disabled,
    .enrollment-card__btn.is-disabled,
    .hero__cta-circle.is-disabled {
      opacity: 0.45;
      cursor: not-allowed;
      pointer-events: none;
      box-shadow: none;
      transform: none;
    }

    .nav-desktop__actions {
      display: flex;
      align-items: center;
      gap: 8px;
      flex-shrink: 0;
    }

    .nav-desktop__actions .btn {
      padding: 8px 16px;
      font-size: 0.8125rem;
      white-space: nowrap;
    }

    .nav-actions__user {
      font-size: 0.8125rem;
      font-weight: 700;
      color: var(--green);
      white-space: nowrap;
    }

    .nav-actions__news {
      position: relative;
      display: inline-flex;
      align-items: center;
      justify-content: center;
      width: 40px;
      height: 40px;
      color: var(--green-dark);
      text-decoration: none;
      border-radius: 50%;
      transition: background 0.15s ease, color 0.15s ease;
    }

    .nav-actions__news:hover,
    .nav-actions__news:focus-visible {
      background: rgba(45, 90, 39, 0.08);
      color: var(--green);
    }

    .nav-actions__news-icon {
      display: block;
    }

    .nav-actions__news-badge {
      position: absolute;
      top: 2px;
      right: 2px;
      min-width: 18px;
      height: 18px;
      padding: 0 5px;
      border-radius: 999px;
      background: #c0392b;
      color: var(--white);
      font-size: 0.625rem;
      font-weight: 700;
      line-height: 18px;
      text-align: center;
    }

    .nav-actions__logout {
      display: inline;
      margin: 0;
    }

    .nav-actions__logout button {
      font-family: inherit;
    }

    .nav-mobile__actions .nav-actions__user {
      display: block;
      text-align: center;
      padding: 4px 0 8px;
    }

    .nav-mobile__actions .nav-actions__logout {
      display: block;
    }

    .nav-mobile__actions .nav-actions__logout button {
      width: 100%;
    }

    /* ハンバーガー */
    .nav-toggle {
      display: none;
      width: 44px;
      height: 44px;
      padding: 0;
      border: none;
      background: transparent;
      cursor: pointer;
      border-radius: 8px;
      align-items: center;
      justify-content: center;
      flex-direction: column;
      gap: 6px;
      transition: background 0.2s ease;
    }

    .nav-toggle:hover {
      background: rgba(45, 90, 39, 0.08);
    }

    .nav-toggle__bar {
      width: 24px;
      height: 2px;
      background: var(--green-dark);
      border-radius: 2px;
      transition: transform 0.3s ease, opacity 0.3s ease;
    }

    .nav-toggle[aria-expanded="true"] .nav-toggle__bar:nth-child(1) {
      transform: translateY(8px) rotate(45deg);
    }

    .nav-toggle[aria-expanded="true"] .nav-toggle__bar:nth-child(2) {
      opacity: 0;
    }

    .nav-toggle[aria-expanded="true"] .nav-toggle__bar:nth-child(3) {
      transform: translateY(-8px) rotate(-45deg);
    }

    /* モバイルメニュー */
    .nav-mobile {
      display: none;
      position: fixed;
      top: var(--header-h);
      left: 0;
      right: 0;
      bottom: 0;
      background: rgba(249, 247, 242, 0.98);
      z-index: 999;
      padding: 24px;
      overflow-y: auto;
      border-top: 1px solid var(--border);
    }

    .nav-mobile.is-open {
      display: block;
    }

    .nav-mobile__list {
      list-style: none;
      margin: 0;
      padding: 0;
    }

    .nav-mobile__list li {
      border-bottom: 1px dashed var(--border);
    }

    .nav-mobile__list a {
      display: block;
      padding: 16px 8px;
      font-size: 1rem;
      color: var(--ink);
      font-weight: 500;
    }

    .nav-mobile__actions {
      margin-top: 24px;
      display: flex;
      flex-direction: column;
      gap: 12px;
    }

    .nav-mobile__actions .btn {
      width: 100%;
    }

    /* 狭い幅：ロゴ＋ハンバーガー */
    @media (max-width: 1200px) {
      .nav-desktop {
        display: none;
      }

      .nav-desktop__actions {
        display: none;
      }

      .nav-toggle {
        display: flex;
        margin-left: auto;
      }

      .brand {
        margin-right: auto;
      }
    }

    @media (min-width: 1201px) {
      .nav-toggle {
        display: none;
      }
    }

    /* ========== ヒーロー（校舎写真は画面幅いっぱい） ========== */
    .hero {
      position: relative;
      width: 100%;
      min-height: min(88vh, 820px);
      overflow: hidden;
      background: var(--cream-dark);
    }

    /* 写真レイヤー：ビューポート全幅 */
    .hero__media {
      position: absolute;
      inset: 0;
      z-index: 0;
    }

    /* グローバル img の max-width を上書きして全面カバー */
    .hero .hero__photo {
      position: relative;
      z-index: 0;
      display: block;
      width: 100%;
      height: 100%;
      max-width: none;
      object-fit: cover;
      object-position: center center;
    }

    /* 文字の可読性用（左から生成りのヴェール） */
    .hero::after {
      content: "";
      position: absolute;
      inset: 0;
      z-index: 1;
      pointer-events: none;
      background: linear-gradient(
        105deg,
        rgba(249, 247, 242, 0.88) 0%,
        rgba(249, 247, 242, 0.72) 34%,
        rgba(249, 247, 242, 0.28) 58%,
        rgba(249, 247, 242, 0.08) 78%,
        transparent 100%
      );
    }

    .hero__overlay {
      position: relative;
      z-index: 2;
      max-width: var(--max);
      margin: 0 auto;
      min-height: min(88vh, 820px);
      display: flex;
      align-items: center;
      padding: 56px 24px 72px;
    }

    .hero__content {
      position: relative;
      max-width: 36rem;
      display: flex;
      flex-direction: column;
      justify-content: center;
    }

    .hero__title {
      font-family: var(--font-display);
      font-size: clamp(1.75rem, 4vw, 2.75rem);
      font-weight: 700;
      line-height: 1.45;
      color: var(--green-dark);
      margin: 0 0 24px;
    }

    .hero__lead {
      font-size: 1rem;
      font-weight: 500;
      color: var(--muted);
      max-width: 28em;
      margin: 0 0 32px;
      line-height: 1.85;
    }

    .hero__cta-wrap {
      display: flex;
      flex-wrap: wrap;
      align-items: center;
      gap: 16px;
    }

    /* ファーストビュー：丸型CTA（入学）— 文字サイズは維持しつつ円のみ小型化 */
    .hero__cta-circle {
      display: inline-flex;
      flex-direction: column;
      align-items: center;
      justify-content: center;
      gap: 4px;
      box-sizing: border-box;
      width: clamp(118px, 34vw, 148px);
      height: clamp(118px, 34vw, 148px);
      padding: 9px 11px;
      border-radius: 50%;
      text-align: center;
      line-height: 1.25;
      font-size: inherit;
    }

    .hero__cta-kicker {
      font-size: clamp(0.5625rem, 1.65vw, 0.6875rem);
      font-weight: 600;
      letter-spacing: 0.04em;
      line-height: 1.35;
    }

    .hero__cta-rule {
      display: block;
      width: 68%;
      max-width: 78px;
      height: 1px;
      margin: 0;
      border: none;
      background: rgba(255, 255, 255, 0.92);
      flex-shrink: 0;
    }

    .hero__cta-headline {
      font-size: clamp(0.9375rem, 3.2vw, 1.1875rem);
      font-weight: 700;
      letter-spacing: 0.02em;
      line-height: 1.2;
    }

    .hero__cta-foot {
      font-size: clamp(0.6875rem, 2.2vw, 0.8125rem);
      font-weight: 600;
      line-height: 1.3;
      opacity: 0.98;
    }

    .hero__scribble {
      position: absolute;
      bottom: 12%;
      left: 8%;
      width: 80px;
      height: 80px;
      opacity: 0.15;
      pointer-events: none;
      background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100'%3E%3Cpath fill='%232d5a27' d='M20 80 Q50 20 80 80' stroke='%232d5a27' stroke-width='3' fill='none'/%3E%3C/svg%3E") center/contain no-repeat;
    }

    @media (max-width: 900px) {
      .hero {
        min-height: min(92vh, 780px);
      }

      .hero .hero__photo {
        object-position: right center;
      }

      .hero::after {
        background: linear-gradient(
          to bottom,
          rgba(249, 247, 242, 0.88) 0%,
          rgba(249, 247, 242, 0.78) 28%,
          rgba(249, 247, 242, 0.38) 52%,
          rgba(249, 247, 242, 0.08) 72%,
          transparent 92%
        );
      }

      .hero__overlay {
        align-items: flex-start;
        width: 100%;
        min-height: min(92vh, 780px);
        padding: calc(var(--header-h) + 20px) 24px 32px;
      }

      .hero__content {
        width: 100%;
        max-width: none;
        min-height: calc(min(92vh, 780px) - var(--header-h) - 52px);
        justify-content: flex-start;
      }

      .hero__title {
        margin-bottom: 16px;
      }

      .hero__lead {
        margin-bottom: 0;
      }

      .hero__cta-wrap {
        margin-top: auto;
        padding-top: 24px;
        align-self: flex-start;
      }
    }

    /* ========== お知らせ帯 ========== */
    .news-strip {
      background: var(--white);
      border-top: 1px solid var(--border);
      border-bottom: 1px solid var(--border);
      padding: 14px 0;
    }

    .news-strip__inner {
      display: flex;
      align-items: center;
      justify-content: space-between;
      gap: 16px;
      flex-wrap: wrap;
    }

    .news-strip__tag {
      flex-shrink: 0;
      background: var(--green);
      color: var(--white);
      font-size: 0.75rem;
      font-weight: 700;
      padding: 6px 14px;
      border-radius: 4px;
    }

    .news-strip__text {
      flex: 1;
      min-width: 200px;
      font-size: 0.9375rem;
      color: var(--ink);
    }

    .news-strip__date {
      color: var(--muted);
      margin-right: 8px;
    }

    .news-strip__link {
      flex-shrink: 0;
      font-weight: 700;
      font-size: 0.875rem;
      display: inline-flex;
      align-items: center;
      gap: 4px;
    }

    .news-strip__link::after {
      content: "›";
      transition: transform 0.25s ease;
    }

    .news-strip__link:hover::after {
      transform: translateX(4px);
    }

    /* ========== セクション共通 ========== */
    .section {
      padding: 88px 0;
    }

    .section--alt {
      background: var(--cream-dark);
    }

    /* 部活紹介以降：生成り（#f9f7f2）と温かみクリーム（#f6eee2）を交互 */
    .section--bg-cream {
      background: var(--cream);
    }

    .section--bg-warm {
      background: #f6eee2;
    }

    .section__head {
      text-align: center;
      margin-bottom: 48px;
    }

    .section__title {
      font-family: var(--font-display);
      font-size: clamp(1.5rem, 3vw, 2rem);
      font-weight: 700;
      color: var(--green-dark);
      margin: 0 0 20px;
      position: relative;
      display: inline-block;
      padding-bottom: 10px;
      line-height: 1.35;
    }

    /* h3（panel）と同じ波線・見出し中央下に配置 */
    .section__title::after {
      content: "";
      position: absolute;
      left: 50%;
      bottom: 0;
      width: 3.2em;
      height: 6px;
      transform: translateX(-50%);
      background: var(--title-wave) center bottom / 100% 6px no-repeat;
      opacity: 0.55;
      pointer-events: none;
    }

    /* ========== 栗に夢中について（3カラム） ========== */
    .about-section {
      background: #f6eee2;
      padding-top: 48px;
      padding-bottom: 48px;
    }

    .about-content {
      display: grid;
      grid-template-columns: 1.08fr 1.22fr 0.82fr;
      gap: clamp(20px, 3vw, 32px);
      align-items: center;
    }

    .about-section .section__title {
      margin-bottom: 14px;
      padding-bottom: 8px;
    }

    .about-visual-left,
    .about-visual-right {
      display: flex;
      justify-content: center;
      align-items: center;
      min-width: 0;
    }

    .about-collage-image,
    .about-promise-image {
      width: 100%;
      height: auto;
      display: block;
      object-fit: contain;
    }

    .about-collage-image {
      max-width: 520px;
    }

    .about-promise-image {
      max-width: min(340px, 100%);
    }

    .about-text {
      text-align: center;
      max-width: 42em;
      margin: 0 auto;
      min-width: 0;
    }

    .about-text p {
      margin: 0 0 0.85em;
      color: var(--muted);
    }

    .about-text p:last-of-type {
      margin-bottom: 0;
    }

    .about__btn-wrap {
      margin-top: 18px;
      text-align: center;
    }

    .btn--ghost {
      background: transparent;
      color: var(--green);
      border: 2px solid var(--green);
    }

    .btn--ghost:hover {
      background: var(--green);
      color: var(--white);
      transform: translateY(-2px);
    }

    @media (max-width: 900px) {
      .about-section {
        padding-top: 40px;
        padding-bottom: 40px;
      }

      .about-content {
        grid-template-columns: 1fr;
        gap: 24px;
      }

      .about-visual-left {
        order: 1;
      }

      .about-text {
        order: 2;
      }

      .about-visual-right {
        order: 3;
      }

      .about-collage-image,
      .about-promise-image {
        max-width: 100%;
        margin-left: auto;
        margin-right: auto;
      }
    }

    /* ========== 施設カード ========== */
    .facilities__head-row {
      display: flex;
      align-items: baseline;
      justify-content: space-between;
      flex-wrap: wrap;
      gap: 16px;
      margin-bottom: 40px;
    }

    .facilities__head-row .section__title {
      margin: 0;
    }

    .facilities__all {
      font-weight: 700;
      font-size: 0.875rem;
    }

    .facilities__all::after {
      content: " ›";
    }

    /* 施設・部活紹介：横4列・1行（残りは別ページ） */
    .facility-grid {
      display: grid;
      grid-template-columns: repeat(4, minmax(0, 1fr));
      gap: clamp(16px, 2vw, 24px);
    }

    .facility-card {
      background: #fff;
      border: 1px solid rgba(7, 63, 36, 0.1);
      border-radius: 10px;
      overflow: hidden;
      position: relative;
      box-shadow: 0 10px 28px rgba(0, 0, 0, 0.04);
      transition: transform 0.3s ease, box-shadow 0.3s ease;
    }

    .facility-card:hover {
      transform: translateY(-4px);
      box-shadow: 0 14px 36px rgba(0, 0, 0, 0.07);
    }

    /* 写真＋アイコンを本文より手前に（はみ出したアイコンが白背景で隠れないように） */
    .facility-image-wrap {
      position: relative;
      z-index: 2;
      aspect-ratio: 4 / 3;
      overflow: visible;
      background: var(--cream-dark);
      isolation: isolate;
    }

    .facility-photo {
      width: 100%;
      height: 100%;
      object-fit: cover;
      display: block;
      transition: transform 0.45s ease;
    }

    .facility-card:hover .facility-photo {
      transform: scale(1.03);
    }

    /* アイコン：緑線画のみ表示（filter・縁取りなし・背景ボックスなし）※白い台紙に見える場合はPNG素材を透過線画に差し替えてください */
    .facility-image-wrap img.facility-card-icon {
      --facility-icon-size: 84px;
      position: absolute;
      right: 26px;
      bottom: calc(-0.5 * var(--facility-icon-size));
      width: var(--facility-icon-size) !important;
      height: var(--facility-icon-size) !important;
      max-width: none !important;
      object-fit: contain;
      object-position: center;
      opacity: 0.88;
      z-index: 2;
      display: block;
      filter: none;
      background: none !important;
      background-color: transparent !important;
      border: none !important;
      box-shadow: none !important;
      padding: 0 !important;
      margin: 0 !important;
      border-radius: 0 !important;
      outline: none !important;
      pointer-events: none;
    }

    .facility-card-icon-wrap,
    .facility-icon-wrap,
    .icon-box,
    .facility-icon-bg {
      background: transparent !important;
      background-color: transparent !important;
      border: none !important;
      box-shadow: none !important;
      padding: 0 !important;
      margin: 0 !important;
      border-radius: 0 !important;
    }

    .facility-body {
      position: relative;
      z-index: 0;
      padding: 32px 20px 24px;
      background: #fff;
    }

    .facility-body h3 {
      margin: 0 0 12px;
      font-size: clamp(1rem, 1.6vw, 1.25rem);
      line-height: 1.4;
      font-family: var(--font-display);
      font-weight: 700;
      color: #073f24;
    }

    .facility-body p {
      margin: 0 0 18px;
      font-size: 0.8125rem;
      line-height: 1.75;
      color: #333;
    }

    .facility-button {
      display: inline-flex;
      align-items: center;
      justify-content: center;
      min-width: 130px;
      padding: 9px 16px;
      border: 1px solid rgba(7, 63, 36, 0.35);
      color: #073f24;
      font-size: 14px;
      font-weight: 600;
      text-decoration: none;
      background: transparent;
      transition: border-color 0.2s ease, background 0.2s ease, color 0.2s ease;
    }

    .facility-button:hover {
      border-color: rgba(7, 63, 36, 0.55);
      background: rgba(7, 63, 36, 0.04);
      color: #052818;
    }

    .facility-button::after {
      content: "›";
      margin-left: 10px;
      transition: transform 0.2s ease;
    }

    .facility-button:hover::after {
      transform: translateX(3px);
    }

    @media (max-width: 900px) {
      .facility-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
        gap: 20px;
      }

      .facility-body {
        padding: 32px 24px 26px;
      }

      .facility-body h3 {
        font-size: 1.125rem;
      }

      .facility-body p {
        font-size: 0.875rem;
      }
    }

    @media (max-width: 520px) {
      .facility-grid {
        grid-template-columns: 1fr;
      }

      .facility-image-wrap img.facility-card-icon {
        --facility-icon-size: 75px;
        width: var(--facility-icon-size) !important;
        height: var(--facility-icon-size) !important;
        right: 22px;
        bottom: calc(-0.5 * var(--facility-icon-size));
        opacity: 0.88;
      }
    }

    /* ========== イベント / 掲示板（2列）+ 入学案内（下段） ========== */
    .info-triple {
      display: flex;
      flex-direction: column;
      gap: clamp(40px, 5vw, 56px);
    }

    .info-triple__row--top {
      display: grid;
      grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
      column-gap: clamp(32px, 4.5vw, 56px);
      align-items: start;
    }

    .info-triple__col {
      position: relative;
      min-width: 0;
      overflow: hidden;
      isolation: isolate;
      box-sizing: border-box;
    }

    .info-triple__col--events {
      padding-right: clamp(24px, 3vw, 40px);
      border-right: 1px solid rgba(26, 51, 41, 0.22);
    }

    .info-triple__col--bulletin {
      padding-left: clamp(24px, 3vw, 40px);
    }

    .info-triple__row--enrollment {
      width: 100%;
      min-width: 0;
    }

    .panel {
      background: transparent;
      border: none;
      border-radius: 0;
      padding: 0;
      box-shadow: none;
      height: 100%;
    }

    .panel__top {
      display: flex;
      align-items: flex-end;
      justify-content: space-between;
      gap: 12px;
      margin-bottom: 20px;
      padding-bottom: 0;
      border-bottom: none;
    }

    .panel__title-wrap {
      position: relative;
      padding-bottom: 10px;
    }

    .panel__title {
      font-family: var(--font-display);
      font-size: clamp(1.125rem, 2vw, 1.375rem);
      color: var(--green-dark);
      margin: 0;
      line-height: 1.35;
    }

    .panel__title-wave {
      position: absolute;
      left: 0;
      bottom: 0;
      width: 3.2em;
      height: 6px;
      background: var(--title-wave) left bottom / 100% 6px no-repeat;
      opacity: 0.55;
      pointer-events: none;
    }

    .panel__more {
      flex-shrink: 0;
      font-weight: 700;
      font-size: 0.8125rem;
      color: var(--green-dark);
      white-space: nowrap;
    }

    .panel__more::after {
      content: " ›";
    }

    .panel__list {
      list-style: none;
      margin: 0;
      padding: 0;
    }

    .panel__item {
      display: grid;
      grid-template-columns: 200px minmax(0, 1fr) auto;
      gap: 16px;
      padding: 18px 0;
      border-bottom: 1px solid rgba(45, 90, 39, 0.12);
      align-items: start;
      max-width: 100%;
    }

    .panel__item:last-child {
      border-bottom: none;
    }

    .panel__item--empty {
      grid-template-columns: 1fr;
    }

    .panel__item--empty .panel__item-desc {
      display: block;
      -webkit-line-clamp: unset;
      line-clamp: unset;
      overflow: visible;
    }

    .panel__thumb {
      width: 200px;
      height: 140px;
      border-radius: 10px;
      object-fit: cover;
      flex-shrink: 0;
      background: var(--cream-dark);
    }

    .panel__item-body {
      min-width: 0;
      overflow: hidden;
    }

    .panel__date {
      font-size: 0.75rem;
      color: var(--muted);
      margin: 0 0 4px;
    }

    .panel__item-title {
      font-size: 0.9375rem;
      font-weight: 700;
      margin: 0 0 6px;
      color: var(--green-dark);
      line-height: 1.4;
    }

    .panel__item-desc {
      font-size: 0.8125rem;
      color: var(--ink);
      margin: 0;
      line-height: 1.55;
      display: -webkit-box;
      -webkit-line-clamp: 2;
      line-clamp: 2;
      -webkit-box-orient: vertical;
      overflow: hidden;
    }

    .panel__item .tag {
      justify-self: end;
      align-self: start;
      margin-top: 2px;
      white-space: nowrap;
    }

    @media (max-width: 600px) {
      .panel__item {
        grid-template-columns: 1fr;
        grid-template-rows: auto auto;
        gap: 12px;
        padding: 16px 0;
      }

      .panel__thumb {
        grid-row: 1;
        grid-column: 1;
        width: 100%;
        height: auto;
        aspect-ratio: 10 / 7;
      }

      .panel__item-body {
        grid-row: 2;
        grid-column: 1;
      }

      .panel__item .tag {
        grid-row: 2;
        grid-column: 1;
        justify-self: end;
        align-self: start;
        margin-top: 0;
      }
    }

    .tag {
      display: inline-flex;
      align-items: center;
      justify-content: center;
      font-size: 0.6875rem;
      font-weight: 700;
      padding: 4px 8px;
      border-radius: 3px;
      line-height: 1;
      vertical-align: middle;
    }

    .tag--event {
      background: var(--green);
      color: var(--white);
    }

    .tag--news {
      background: #3d6b9e;
      color: var(--white);
    }

    .tag--news-event {
      background: #b84a4a;
      color: var(--white);
    }

    .tag--target-all {
      background: #3d6b9e;
      color: var(--white);
    }

    .tag--target-club {
      background: var(--green);
      color: var(--white);
    }

    .bullet-list__item {
      padding: 14px 0;
      border-bottom: 1px solid rgba(45, 90, 39, 0.12);
      display: flex;
      flex-wrap: wrap;
      gap: 8px 10px;
      align-items: center;
    }

    .bullet-list__item:last-child {
      border-bottom: none;
    }

    .bullet-list__date {
      font-size: 0.75rem;
      color: var(--muted);
      min-width: 5.25em;
      flex-shrink: 0;
    }

    .bullet-list__text {
      flex: 1;
      min-width: 0;
      font-size: 0.875rem;
      margin: 0;
      color: var(--ink);
      line-height: 1.45;
    }

    .bullet-list__item .tag {
      flex-shrink: 0;
      margin: 0;
    }

    /* 入学のご案内（黒板カード・下段フル幅） */
    .enrollment-card {
      position: relative;
      display: grid;
      grid-template-columns: minmax(0, 0.5fr) auto minmax(2.5rem, 4.5rem) auto minmax(0, 0.5fr);
      row-gap: 20px;
      align-items: center;
      background: #1c482f;
      color: var(--chalk);
      border-radius: 12px;
      padding: clamp(28px, 4vw, 40px) clamp(24px, 4vw, 44px);
      overflow: hidden;
      box-shadow: var(--shadow);
      box-sizing: border-box;
      width: 100%;
      max-width: 100%;
      min-height: 200px;
    }

    .enrollment-card::before {
      content: "";
      position: absolute;
      inset: 0;
      background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='120' viewBox='0 0 120 120'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.8' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='120' height='120' filter='url(%23n)' opacity='0.06'/%3E%3C/svg%3E");
      opacity: 0.35;
      pointer-events: none;
    }

    .enrollment-card__body {
      position: relative;
      z-index: 1;
      grid-column: 2;
      justify-self: end;
      max-width: 26em;
      padding-right: 0;
    }

    .enrollment-card__title {
      font-family: var(--font-display);
      font-size: clamp(1.375rem, 2.6vw, 1.75rem);
      margin: 0 0 16px;
      color: var(--chalk);
    }

    .enrollment-card__text {
      font-size: clamp(0.9375rem, 1.6vw, 1.0625rem);
      line-height: 1.8;
      opacity: 0.95;
      margin: 0 0 22px;
    }

    .enrollment-card__btn {
      display: block;
      width: 100%;
      max-width: 300px;
      text-align: center;
      padding: 13px 22px;
      border: 2px solid rgba(255, 255, 255, 0.9);
      border-radius: 999px;
      background: transparent;
      color: var(--chalk);
      font-size: 0.9375rem;
      font-weight: 700;
      transition: background 0.25s ease, color 0.25s ease;
    }

    .enrollment-card__btn:hover {
      background: rgba(255, 255, 255, 0.12);
      color: var(--white);
    }

    .enrollment-card__btn::after {
      content: " ›";
    }

    .enrollment-card__member-note {
      font-size: 0.8125rem;
      margin: 18px 0 10px;
      opacity: 0.9;
    }

    .enrollment-card__btn--login {
      max-width: 220px;
      padding: 11px 20px;
      font-size: 0.875rem;
    }

    /* 透過PNG：枠に背景を敷かない（矩形の境目が出ないように） */
    .enrollment-card__illust {
      position: relative;
      grid-column: 4;
      align-self: center;
      justify-self: start;
      width: fit-content;
      max-width: min(270px, 33vw);
      margin: 0;
      padding: 0;
      background: transparent;
      pointer-events: none;
      z-index: 1;
      line-height: 0;
    }

    .enrollment-card__illust img {
      display: block;
      width: auto;
      max-width: min(270px, 33vw);
      height: auto;
      object-fit: contain;
      object-position: right bottom;
      background: transparent;
      /* 書き出し時の暗い縁・#1C482Fの半透明フリンジをカード背景に馴染ませる */
      mix-blend-mode: screen;
    }

    @media (max-width: 900px) {
      .info-triple__row--top {
        grid-template-columns: minmax(0, 1fr);
        row-gap: 36px;
      }

      .info-triple__col--events {
        padding-right: 0;
        padding-bottom: 32px;
        border-right: none;
        border-bottom: 1px solid rgba(26, 51, 41, 0.22);
      }

      .info-triple__col--bulletin {
        padding-left: 0;
      }

      .enrollment-card {
        grid-template-columns: 1fr;
        text-align: center;
      }

      .enrollment-card__body,
      .enrollment-card__illust {
        grid-column: 1;
        justify-self: center;
      }

      .enrollment-card__body {
        max-width: none;
      }

      .enrollment-card__btn {
        margin-left: auto;
        margin-right: auto;
      }

      .enrollment-card__illust {
        max-width: 220px;
        margin: 8px auto 0;
        justify-self: center;
      }
    }

    /* ========== LINEバナー（左：黒板＋文言／中央：写真／右：CTA） ========== */
    .line-banner {
      position: relative;
      background: #1c482f;
      color: var(--white);
      overflow: hidden;
    }

    .line-banner__inner {
      display: flex;
      align-items: center;
      width: 100%;
      min-height: 300px;
      gap: 0;
    }

    /* 左：イラスト＋キャッチ（写真とは別エリア） */
    .line-banner__board {
      position: relative;
      flex: 0 0 clamp(300px, 38vw, 480px);
      align-self: stretch;
      min-height: 300px;
      overflow: hidden;
    }

    .line-banner__bg {
      position: absolute;
      left: 0;
      bottom: 14%;
      height: 96%;
      width: auto;
      max-width: 100%;
      object-fit: contain;
      object-position: left bottom;
      pointer-events: none;
    }

    .line-banner__catch {
      position: absolute;
      left: clamp(36px, 4.5vw, 72px);
      top: 50%;
      transform: translateY(-50%);
      z-index: 1;
      margin: 0;
      font-family: var(--font-display);
      font-size: clamp(1.25rem, 2.2vw, 2rem);
      font-weight: 700;
      line-height: 1.6;
      letter-spacing: 0.05em;
      white-space: nowrap;
      text-shadow: 0 1px 3px rgba(0, 0, 0, 0.2);
    }

    /* 中央：ポラロイド風コラージュのみ */
    .line-banner__collage {
      position: relative;
      flex: 0 0 auto;
      width: clamp(340px, 40vw, 500px);
      height: 300px;
      flex-shrink: 0;
      margin: 0 clamp(8px, 1.5vw, 16px);
    }

    .line-banner__photo {
      position: absolute;
      width: clamp(140px, 18vw, 220px);
      height: auto;
      aspect-ratio: 4 / 3;
      object-fit: cover;
      border: 6px solid var(--white);
      border-radius: 2px;
      box-shadow: 0 10px 28px rgba(0, 0, 0, 0.28);
    }

    .line-banner__photo--1 {
      left: 0;
      top: 50%;
      transform: translateY(-50%) rotate(-8deg);
      z-index: 1;
    }

    .line-banner__photo--2 {
      left: 32%;
      top: 50%;
      transform: translateY(-58%) rotate(4deg);
      z-index: 2;
    }

    .line-banner__photo--3 {
      left: 58%;
      top: 50%;
      transform: translateY(-42%) rotate(-5deg);
      z-index: 3;
    }

    .line-banner__cta-area {
      position: relative;
      flex: 0 0 auto;
      flex-shrink: 0;
      margin: 24px 0 24px auto;
      margin-right: clamp(24px, 3.5vw, 56px);
      overflow: visible;
    }

    /* 緑背景エリアの右下（装飾） */
    .line-banner__cta-deco {
      position: absolute;
      left: auto;
      top: auto;
      right: clamp(16px, 4vw, 32px);
      bottom: clamp(12px, 2vw, 20px);
      transform: none;
      height: clamp(67px, 7.8vw, 101px);
      width: auto;
      object-fit: contain;
      object-position: right bottom;
      pointer-events: none;
      z-index: 2;
      mix-blend-mode: screen;
    }

    /* 右：白いCTAボックス */
    .line-banner__cta {
      position: relative;
      flex: 0 0 auto;
      flex-shrink: 0;
      display: flex;
      align-items: center;
      gap: clamp(10px, 1.4vw, 18px);
      margin: 0;
      padding: clamp(14px, 1.8vw, 20px) clamp(16px, 2vw, 24px);
      background: var(--white);
      color: #1c482f;
      border-radius: 14px;
      box-shadow: 0 12px 36px rgba(0, 0, 0, 0.16);
      text-decoration: none;
      transition: transform 0.25s ease, box-shadow 0.25s ease;
    }

    .line-banner__cta:hover {
      transform: translateY(-3px);
      box-shadow: 0 18px 48px rgba(0, 0, 0, 0.22);
      color: #1c482f;
    }

    .line-banner__cta-text {
      display: flex;
      flex-direction: column;
      gap: 2px;
      font-weight: 700;
      font-size: clamp(0.8125rem, 1.35vw, 0.9375rem);
      line-height: 1.4;
      white-space: nowrap;
    }

    .line-banner__cta-line {
      display: block;
    }

    .line-banner__line-icon {
      flex-shrink: 0;
      width: clamp(40px, 5vw, 52px);
      height: clamp(40px, 5vw, 52px);
      object-fit: contain;
    }

    .line-banner__qr {
      flex-shrink: 0;
      width: clamp(56px, 7vw, 72px);
      height: clamp(56px, 7vw, 72px);
      background:
        linear-gradient(90deg, #111 2px, transparent 2px) 0 0 / 8px 8px,
        linear-gradient(#111 2px, transparent 2px) 0 0 / 8px 8px,
        #fff;
      border: 1px solid rgba(0, 0, 0, 0.12);
      border-radius: 4px;
    }

    /* PC（1401px以上）：3カラムグリッドで写真中央・CTA右端 */
    @media (min-width: 1401px) {
      .line-banner {
        overflow: hidden;
      }

      .line-banner__inner {
        display: grid;
        grid-template-columns: clamp(300px, 34vw, 480px) minmax(0, 1fr) auto;
        align-items: center;
        column-gap: clamp(16px, 2vw, 28px);
        padding-right: clamp(24px, 3.5vw, 56px);
        padding-left: 0;
        box-sizing: border-box;
      }

      .line-banner__board {
        grid-column: 1;
        flex: none;
        width: 100%;
        min-height: 300px;
      }

      .line-banner__bg {
        height: 96%;
        bottom: 30%;
      }

      .line-banner__collage {
        grid-column: 2;
        justify-self: center;
        align-self: center;
        flex: none;
        width: clamp(340px, 38vw, 500px);
        max-width: 500px;
        margin: 0;
      }

      .line-banner__photo {
        width: clamp(140px, 16vw, 210px);
      }

      .line-banner__cta-area {
        grid-column: 3;
        justify-self: end;
        align-self: center;
        margin: 24px 0;
        margin-right: 0;
      }

      .line-banner__cta {
        margin: 0;
      }

      .line-banner__cta-deco {
        right: 0;
        bottom: clamp(4px, 0.6vw, 10px);
        height: clamp(67px, 7.8vw, 101px);
        object-position: right bottom;
      }
    }

    /* やや狭いPC幅のみ写真を少し縮小（左イラストは維持） */
    @media (max-width: 1520px) and (min-width: 1401px) {
      .line-banner__collage {
        width: clamp(300px, 36vw, 440px);
      }

      .line-banner__photo {
        width: clamp(125px, 15vw, 185px);
      }

      .line-banner__cta {
        padding: 12px 16px;
        gap: 10px;
      }

      .line-banner__qr {
        width: 56px;
        height: 56px;
      }
    }

    /* 1400px付近で横並びが収まらずQRが切れるため、1400px以下で縦積み */
    @media (max-width: 1400px) {
      .line-banner__inner {
        flex-direction: column;
        align-items: center;
        min-height: auto;
        padding-bottom: 4px;
      }

      .line-banner__board {
        flex: none;
        width: 100%;
        max-width: none;
        min-height: clamp(220px, 36vw, 300px);
        display: flex;
        flex-direction: column;
        align-items: center;
        justify-content: center;
        text-align: center;
        padding: 32px 16px;
        box-sizing: border-box;
      }

      .line-banner__bg {
        left: 0;
        right: 0;
        top: 0;
        bottom: 0;
        width: 85%;
        height: 100%;
        max-width: none;
        margin: 0 auto;
        transform: none;
        object-fit: contain;
        object-position: center bottom;
      }

      .line-banner__catch {
        position: relative;
        left: auto;
        top: auto;
        transform: none;
        z-index: 1;
        text-align: center;
        white-space: normal;
        width: 100%;
        max-width: 22em;
        margin: 0 auto;
        line-height: 1.65;
      }

      .line-banner__catch br {
        display: block;
      }

      .line-banner__collage {
        flex: none;
        width: min(100%, 480px);
        max-width: 480px;
        height: clamp(200px, 42vw, 260px);
        margin: 12px auto 20px;
        padding: 0 16px;
        box-sizing: content-box;
      }

      .line-banner__photo {
        width: 31%;
        max-width: 150px;
        min-width: 90px;
      }

      .line-banner__photo--1 {
        left: 0;
        transform: translateY(-50%) rotate(-8deg);
      }

      .line-banner__photo--2 {
        left: 33%;
        transform: translateY(-55%) rotate(4deg);
      }

      .line-banner__photo--3 {
        left: 66%;
        transform: translateY(-45%) rotate(-5deg);
      }

      .line-banner__cta-area {
        flex: none;
        align-self: center;
        width: calc(100% - 32px);
        max-width: 400px;
        margin: 0 auto 24px;
        margin-left: auto;
        margin-right: auto;
      }

      .line-banner__cta {
        width: 100%;
        justify-content: center;
      }

      .line-banner__cta-deco {
        right: clamp(16px, 4vw, 28px);
        bottom: clamp(10px, 2vw, 18px);
        height: clamp(56px, 14vw, 78px);
      }
    }

    /* タブレット（641px〜1400px）：イラスト幅70%・やや上寄せ */
    @media (min-width: 641px) and (max-width: 1400px) {
      .line-banner__bg {
        width: 70%;
        height: 92%;
        bottom: 6%;
        object-position: center 75%;
      }
    }

    @media (max-width: 640px) {
      .line-banner__board {
        min-height: 180px;
      }

      .line-banner__bg {
        width: 85%;
        height: 90%;
        bottom: 8%;
        object-position: center 72%;
      }

      .line-banner__catch {
        font-size: clamp(1rem, 4.2vw, 1.2rem);
      }

      .line-banner__board {
        min-height: clamp(200px, 48vw, 260px);
      }

      .line-banner__collage {
        width: calc(100% - 24px);
        max-width: none;
        height: clamp(180px, 52vw, 220px);
        margin: 0 auto 6px;
        padding: 0 8px 0 clamp(14px, 4.5vw, 22px);
        transform: translateY(-20px);
      }

      .line-banner__photo {
        width: 30%;
        min-width: 82px;
        max-width: 112px;
        border-width: 4px;
      }

      .line-banner__photo--1 {
        left: 4%;
      }

      .line-banner__photo--2 {
        left: 37%;
      }

      .line-banner__photo--3 {
        left: 70%;
      }

      .line-banner__cta-area {
        max-width: calc(100% - 24px);
        margin-bottom: 16px;
        transform: translateY(-20px);
      }

      .line-banner__cta {
        flex-direction: row;
        flex-wrap: wrap;
        justify-content: center;
        gap: 12px;
        padding: 16px 18px;
      }

      .line-banner__cta-deco {
        right: clamp(12px, 3.5vw, 24px);
        bottom: clamp(8px, 2vw, 14px);
        height: clamp(50px, 14vw, 67px);
      }

      .line-banner__cta-text {
        white-space: normal;
        text-align: center;
        flex: 1 1 100%;
      }

      .line-banner__line-icon,
      .line-banner__qr {
        flex-shrink: 0;
      }
    }

    @media (max-width: 400px) {
      .line-banner__collage {
        height: 170px;
      }

      .line-banner__photo {
        min-width: 72px;
        width: 28%;
      }

      .line-banner__cta {
        flex-direction: column;
        text-align: center;
      }
    }

    /* ========== フッター ========== */
    .site-footer {
      background: #e8e4dc;
      border-top: 1px solid var(--border);
      padding: 48px 0 0;
    }

    .site-footer__main {
      display: grid;
      grid-template-columns: auto 1fr auto;
      gap: 40px;
      align-items: start;
      padding-bottom: 40px;
    }

    .site-footer__nav {
      display: flex;
      flex-wrap: wrap;
      gap: 12px 24px;
      justify-content: center;
      list-style: none;
      margin: 0;
      padding: 0;
    }

    .site-footer__nav a {
      color: var(--ink);
      font-size: 0.875rem;
      font-weight: 500;
    }

    .site-footer__social {
      display: flex;
      gap: 16px;
      justify-content: flex-end;
    }

    .site-footer__social a {
      display: inline-flex;
      align-items: center;
      justify-content: center;
      width: 44px;
      height: 44px;
      border-radius: 8px;
      transition: opacity 0.25s ease, transform 0.25s ease;
    }

    .site-footer__social a:hover {
      opacity: 0.72;
      transform: translateY(-2px);
    }

    .site-footer__social-icon {
      display: block;
      width: auto;
      height: 26px;
      max-width: 100%;
      object-fit: contain;
    }

    .site-footer__social a[aria-label^="X"] .site-footer__social-icon {
      height: 22px;
    }

    .site-footer__bottom {
      background: rgba(45, 90, 39, 0.08);
      padding: 16px 24px;
      text-align: center;
      font-size: 0.75rem;
      color: var(--muted);
    }

    .site-footer__bottom p {
      margin: 0;
    }

    .site-footer__bottom p + p {
      margin-top: 4px;
    }

    .site-footer__company-name {
      font-weight: 700;
      color: var(--ink);
    }

    .site-footer__company-phone a {
      color: inherit;
      text-decoration: underline;
    }

    @media (max-width: 768px) {
      .site-footer__main {
        grid-template-columns: 1fr;
        text-align: center;
      }

      .site-footer__social {
        justify-content: center;
      }
    }

    /* body scroll lock（モバイルメニュー開閉時） */
    body.menu-open {
      overflow: hidden;
    }

    /* スクリーンリーダー向け：視覚的に非表示 */
    .visually-hidden {
      position: absolute;
      width: 1px;
      height: 1px;
      padding: 0;
      margin: -1px;
      overflow: hidden;
      clip: rect(0, 0, 0, 0);
      white-space: nowrap;
      border: 0;
    }
