@charset "UTF-8";
/*
    Template: swell
    Theme Name: FreeSpirit Dance Method
    Theme URI: https://freespirit-dance.com/
    Description: FreeSpirit Dance Method 公式サイト - SWELLの子テーマ
    Version: 1.0.0
    Author: Englobal Life
*/

/* =============================================
   CSS カスタムプロパティ（ブランドカラー）
   ============================================= */
:root {
  --fsdm-black:      #000000;
  --fsdm-black-soft: #0a0a0a;
  --fsdm-dark:       #111111;
  --fsdm-dark2:      #1a1a1a;
  --fsdm-purple:     #7126e6;
  --fsdm-purple-l:   #8f4cef;
  --fsdm-gold:       #c9a961;  /* ロゴのアンティークゴールド */
  --fsdm-gold-l:     #dfc285;  /* 明るい補助色 */
  --fsdm-gold-d:     #a3884c;  /* 影・縁取り */
  --fsdm-white:      #f5f5f5;
  --fsdm-gray:       #aaaaaa;
  --fsdm-gray-d:     #555555;
  --fsdm-border:     rgba(201, 169, 97, 0.25);

  --font-ja:  'Noto Sans JP', 'Yu Gothic', 'ヒラギノ角ゴ ProN', sans-serif;
  --font-en:  'Montserrat', 'Helvetica Neue', Arial, sans-serif;

  --transition: 0.3s ease;
  --radius: 4px;
  --max-w: 1100px;
}

/* =============================================
   グローバルリセット・ベース
   ============================================= */
*, *::before, *::after { box-sizing: border-box; }

html {
  scroll-behavior: smooth;
}

body {
  background-color: var(--fsdm-black) !important;
  color: var(--fsdm-white) !important;
  font-family: var(--font-ja) !important;
  line-height: 1.8;
  -webkit-font-smoothing: antialiased;
}

a {
  color: var(--fsdm-gold);
  text-decoration: none;
  transition: color var(--transition);
}
a:hover { color: var(--fsdm-gold-l); }

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

/* =============================================
   ヘッダー
   ============================================= */
#header,
.l-header {
  background-color: rgba(0, 0, 0, 0.95) !important;
  border-bottom: 1px solid var(--fsdm-border) !important;
  position: sticky !important;
  top: 0;
  z-index: 1000;
}

.c-headLogo a,
.c-headLogo img {
  max-height: 60px;
}

/* グローバルナビ */
.c-gnav__item a,
.c-gnav .c-gnav__item > a,
.c-gnav__item a span,
.c-gnav a,
.l-header .c-gnav a {
  color: #ffffff !important;
  font-family: var(--font-en);
  font-size: 0.82rem;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  padding: 0 1rem;
  transition: color var(--transition);
}
.c-gnav__item a:hover,
.c-gnav__item.current-menu-item > a,
.c-gnav__item.current-menu-item > a span {
  color: var(--fsdm-gold) !important;
}
/* SPメニュー（ドロワー）をダークテーマ化 */
.c-iconBtn__label,
.l-header__menuBtn {
  color: #ffffff !important;
}
.p-spMenu,
.p-spMenu__inner,
.p-spMenu__body,
.p-spMenu .menu {
  background-color: var(--fsdm-black) !important;
}
.p-spMenu__head,
.p-spMenu .menu-title,
.p-spMenu__title {
  background-color: var(--fsdm-dark) !important;
  color: var(--fsdm-gold) !important;
  letter-spacing: 0.1em;
}
.p-spMenu a,
.p-spMenu li a,
.p-spMenu .menu-item a,
.p-spMenu .menu-item > a,
.p-spMenu .menu li > a {
  color: #ffffff !important;
  background-color: transparent !important;
  border-bottom: 1px solid var(--fsdm-border) !important;
}
.p-spMenu a:hover,
.p-spMenu .current-menu-item > a {
  color: var(--fsdm-gold) !important;
}
.p-spMenu__close,
.p-spMenu__closeBtn {
  color: #ffffff !important;
}

/* ヘッダーCTAボタン */
.header-cta-btn {
  background: var(--fsdm-gold) !important;
  color: var(--fsdm-black) !important;
  font-family: var(--font-en);
  font-size: 0.78rem;
  font-weight: 700;
  letter-spacing: 0.08em;
  padding: 0.5rem 1.2rem !important;
  border-radius: var(--radius);
  white-space: nowrap;
  transition: background var(--transition), transform var(--transition);
}
.header-cta-btn:hover {
  background: var(--fsdm-gold-l) !important;
  color: var(--fsdm-black) !important;
  transform: translateY(-1px);
}

/* =============================================
   フッター
   ============================================= */
#footer,
.l-footer {
  background-color: var(--fsdm-dark) !important;
  border-top: 1px solid var(--fsdm-border) !important;
  color: var(--fsdm-gray) !important;
}

.l-footer a { color: var(--fsdm-gray); }
.l-footer a:hover { color: var(--fsdm-gold); }

/* =============================================
   共通セクション
   ============================================= */
.fsdm-section {
  padding: 80px 24px;
  max-width: var(--max-w);
  margin: 0 auto;
}

.fsdm-section--full {
  padding: 80px 24px;
  width: 100%;
}

/* セクション見出し */
.fsdm-section-label {
  display: block;
  font-family: var(--font-en);
  font-size: 0.72rem;
  letter-spacing: 0.3em;
  text-transform: uppercase;
  color: var(--fsdm-gold);
  margin-bottom: 0.6rem;
}

.fsdm-section-title {
  font-size: clamp(1.6rem, 4vw, 2.4rem);
  font-weight: 700;
  color: var(--fsdm-white);
  line-height: 1.3;
  margin: 0 0 1.2rem;
}

.fsdm-section-lead {
  font-size: 1rem;
  color: var(--fsdm-gray);
  max-width: 640px;
  line-height: 1.9;
}

.fsdm-divider {
  width: 48px;
  height: 2px;
  background: linear-gradient(90deg, var(--fsdm-purple), var(--fsdm-gold));
  margin: 1.2rem 0 2.4rem;
  border: none;
}

/* =============================================
   ボタン
   ============================================= */
.fsdm-btn {
  display: inline-block;
  font-family: var(--font-en);
  font-size: 0.85rem;
  font-weight: 700;
  letter-spacing: 0.1em;
  padding: 0.9rem 2rem;
  border-radius: var(--radius);
  transition: all var(--transition);
  cursor: pointer;
  text-align: center;
}

.fsdm-btn--primary {
  background: var(--fsdm-gold);
  color: var(--fsdm-black) !important;
  border: 2px solid var(--fsdm-gold);
}
.fsdm-btn--primary:hover {
  background: transparent;
  color: var(--fsdm-gold) !important;
  transform: translateY(-2px);
  box-shadow: 0 8px 24px rgba(201, 169, 97, 0.3);
}

.fsdm-btn--outline {
  background: transparent;
  color: var(--fsdm-gold) !important;
  border: 2px solid var(--fsdm-gold);
}
.fsdm-btn--outline:hover {
  background: var(--fsdm-gold);
  color: var(--fsdm-black) !important;
  transform: translateY(-2px);
}

.fsdm-btn--purple {
  background: var(--fsdm-purple);
  color: var(--fsdm-white) !important;
  border: 2px solid var(--fsdm-purple);
}
.fsdm-btn--purple:hover {
  background: var(--fsdm-purple-l);
  transform: translateY(-2px);
  box-shadow: 0 8px 24px rgba(74, 20, 140, 0.4);
}

/* =============================================
   ページヘッダー（各ページ上部）
   ============================================= */
.fsdm-page-hero {
  position: relative;
  height: 400px;
  display: flex;
  align-items: center;
  justify-content: center;
  text-align: center;
  overflow: hidden;
  background: var(--fsdm-dark);
}

.fsdm-page-hero__bg {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  opacity: 0.35;
}

.fsdm-page-hero__overlay {
  position: absolute;
  inset: 0;
  background: linear-gradient(to bottom, rgba(0,0,0,0.3), rgba(0,0,0,0.7));
}

.fsdm-page-hero__content {
  position: relative;
  z-index: 2;
  padding: 0 24px;
}

.fsdm-page-hero__en {
  font-family: var(--font-en);
  font-size: 0.72rem;
  letter-spacing: 0.35em;
  text-transform: uppercase;
  color: var(--fsdm-gold);
  display: block;
  margin-bottom: 1rem;
}

.fsdm-page-hero__title {
  font-size: clamp(2rem, 5vw, 3.2rem);
  font-weight: 700;
  color: var(--fsdm-white);
  margin: 0;
  line-height: 1.2;
}

/* =============================================
   TOP Hero セクション
   ============================================= */
.fsdm-hero {
  position: relative;
  min-height: 100vh;        /* PC: フルスクリーン */
  min-height: 100svh;       /* モダンブラウザ: アドレスバー考慮 */
  display: flex;
  align-items: center;
  overflow: hidden;
  background: var(--fsdm-black);
}

.fsdm-hero__bg {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center center; /* PC: 中央 */
  opacity: 0.4;
  animation: fsdm-slow-zoom 20s ease-in-out infinite alternate;
}

@keyframes fsdm-slow-zoom {
  from { transform: scale(1); }
  to   { transform: scale(1.05); }
}

.fsdm-hero__overlay {
  position: absolute;
  inset: 0;
  background: linear-gradient(135deg, rgba(113,38,230,0.35) 0%, rgba(0,0,0,0.8) 60%);
}

.fsdm-hero__content {
  position: relative;
  z-index: 2;
  max-width: var(--max-w);
  margin: 0 auto;
  padding: 120px 24px 80px;
}

.fsdm-hero__tagline {
  font-family: var(--font-en);
  font-size: 0.75rem;
  letter-spacing: 0.35em;
  text-transform: uppercase;
  color: var(--fsdm-gold);
  display: block;
  margin-bottom: 1.5rem;
  animation: fsdm-fade-up 0.8s ease both;
}

.fsdm-hero__title {
  font-size: clamp(2.4rem, 6vw, 4rem);
  font-weight: 700;
  color: var(--fsdm-white);
  line-height: 1.25;
  margin: 0 0 1rem;
  animation: fsdm-fade-up 0.9s ease 0.1s both;
}

.fsdm-hero__title span {
  color: var(--fsdm-gold);
}

.fsdm-hero__sub {
  font-size: clamp(0.95rem, 2vw, 1.1rem);
  color: var(--fsdm-gray);
  max-width: 540px;
  line-height: 1.9;
  margin: 0 0 2.4rem;
  animation: fsdm-fade-up 1s ease 0.2s both;
}

.fsdm-hero__btns {
  display: flex;
  gap: 1rem;
  flex-wrap: wrap;
  animation: fsdm-fade-up 1s ease 0.3s both;
}

@keyframes fsdm-fade-up {
  from { opacity: 0; transform: translateY(24px); }
  to   { opacity: 1; transform: translateY(0); }
}

/* 実績バンド */
.fsdm-record-band {
  background: rgba(201,169,97,0.08);
  border-top: 1px solid var(--fsdm-border);
  border-bottom: 1px solid var(--fsdm-border);
  padding: 20px 24px;
  display: flex;
  align-items: center;
  gap: 1.5rem;
  flex-wrap: wrap;
}

.fsdm-record-band__text {
  font-size: 0.85rem;
  color: var(--fsdm-gray);
  line-height: 1.6;
}

.fsdm-record-band__text strong {
  color: var(--fsdm-gold);
  font-weight: 700;
}

.fsdm-record-band__link {
  font-family: var(--font-en);
  font-size: 0.78rem;
  letter-spacing: 0.12em;
  color: var(--fsdm-gold);
  white-space: nowrap;
  border-bottom: 1px solid var(--fsdm-gold-d);
}

/* =============================================
   3つの問いセクション
   ============================================= */
.fsdm-questions {
  background: var(--fsdm-dark);
  padding: 80px 24px;
  text-align: center;
}

.fsdm-questions__list {
  list-style: none;
  margin: 2rem auto 2.4rem;
  padding: 0;
  max-width: 640px;
  display: flex;
  flex-direction: column;
  gap: 1.2rem;
}

.fsdm-questions__item {
  background: rgba(255,255,255,0.04);
  border: 1px solid var(--fsdm-border);
  border-left: 3px solid var(--fsdm-purple);
  padding: 1rem 1.4rem;
  text-align: left;
  font-size: 0.95rem;
  color: var(--fsdm-white);
  line-height: 1.7;
}

.fsdm-questions__answer {
  font-size: 1rem;
  color: var(--fsdm-gray);
  max-width: 480px;
  margin: 0 auto;
}

/* =============================================
   カードグリッド
   ============================================= */
.fsdm-card-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
  gap: 1.5rem;
  margin-top: 2.4rem;
}

.fsdm-card {
  background: var(--fsdm-dark);
  border: 1px solid rgba(255,255,255,0.08);
  border-radius: var(--radius);
  overflow: hidden;
  transition: transform var(--transition), border-color var(--transition),
              box-shadow var(--transition);
}
.fsdm-card:hover {
  transform: translateY(-4px);
  border-color: var(--fsdm-gold-d);
  box-shadow: 0 12px 40px rgba(0,0,0,0.5);
}

.fsdm-card__img {
  width: 100%;
  aspect-ratio: 3 / 2;
  object-fit: cover;
}

.fsdm-card__body {
  padding: 1.4rem;
}

.fsdm-card__label {
  font-family: var(--font-en);
  font-size: 0.7rem;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color: var(--fsdm-gold);
  display: block;
  margin-bottom: 0.4rem;
}

.fsdm-card__title {
  font-size: 1.05rem;
  font-weight: 700;
  color: var(--fsdm-white);
  margin: 0 0 0.6rem;
}

.fsdm-card__text {
  font-size: 0.88rem;
  color: var(--fsdm-gray);
  line-height: 1.7;
}

/* =============================================
   Method テーブル
   ============================================= */
.fsdm-method-table {
  width: 100%;
  border-collapse: collapse;
  margin: 2rem 0;
}

.fsdm-method-table th,
.fsdm-method-table td {
  padding: 1rem 1.2rem;
  text-align: left;
  border: 1px solid rgba(255,255,255,0.1);
  font-size: 0.9rem;
  line-height: 1.7;
}

.fsdm-method-table thead th {
  background: var(--fsdm-purple);
  color: var(--fsdm-white);
  font-family: var(--font-en);
  letter-spacing: 0.08em;
  font-size: 0.8rem;
}

.fsdm-method-table tbody tr {
  background: rgba(255,255,255,0.02);
  transition: background var(--transition);
}

.fsdm-method-table tbody tr:hover {
  background: rgba(201,169,97,0.06);
}

.fsdm-method-table tbody td:first-child {
  color: var(--fsdm-gold);
  font-weight: 700;
  white-space: nowrap;
  width: 200px;
}

/* =============================================
   生徒の声カード
   ============================================= */
.fsdm-voice-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
  gap: 1.8rem;
  margin-top: 2.4rem;
}

.fsdm-voice-card {
  background: var(--fsdm-dark);
  border: 1px solid var(--fsdm-border);
  border-radius: var(--radius);
  padding: 2rem;
  position: relative;
}

.fsdm-voice-card::before {
  content: '"';
  font-family: Georgia, serif;
  font-size: 5rem;
  line-height: 1;
  color: var(--fsdm-purple);
  opacity: 0.5;
  position: absolute;
  top: 0.5rem;
  left: 1.2rem;
}

.fsdm-voice-card__text {
  font-size: 0.9rem;
  color: var(--fsdm-gray);
  line-height: 1.9;
  margin: 0 0 1.4rem;
  padding-top: 1.6rem;
}

.fsdm-voice-card__author {
  display: flex;
  align-items: center;
  gap: 0.8rem;
}

.fsdm-voice-card__avatar {
  width: 48px;
  height: 48px;
  border-radius: 50%;
  object-fit: cover;
  border: 2px solid var(--fsdm-border);
}

.fsdm-voice-card__initial {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 48px;
  height: 48px;
  border-radius: 50%;
  border: 2px solid var(--fsdm-border);
  background: rgba(201, 169, 97,0.12);
  color: var(--fsdm-gold);
  font-family: var(--font-en);
  font-size: 0.9rem;
  font-weight: 700;
  letter-spacing: 0.05em;
  flex-shrink: 0;
}

.fsdm-voice-card__name {
  font-size: 0.85rem;
  font-weight: 700;
  color: var(--fsdm-white);
}

.fsdm-voice-card__meta {
  font-size: 0.75rem;
  color: var(--fsdm-gray-d);
}

/* =============================================
   Records / 実績リスト
   ============================================= */
.fsdm-records-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(320px, 1fr));
  gap: 1.5rem;
  margin-top: 2rem;
}

.fsdm-record-item {
  background: var(--fsdm-dark);
  border: 1px solid rgba(255,255,255,0.08);
  border-radius: var(--radius);
  padding: 1.4rem;
  display: flex;
  align-items: flex-start;
  gap: 1rem;
  transition: border-color var(--transition);
}

.fsdm-record-item:hover {
  border-color: var(--fsdm-gold-d);
}

.fsdm-record-item__rank {
  font-family: var(--font-en);
  font-size: 0.7rem;
  letter-spacing: 0.15em;
  text-transform: uppercase;
  padding: 0.3rem 0.7rem;
  border-radius: 2px;
  white-space: nowrap;
  flex-shrink: 0;
}

.fsdm-record-item__rank--1st {
  background: var(--fsdm-gold);
  color: var(--fsdm-black);
  font-weight: 700;
}

.fsdm-record-item__rank--2nd {
  background: rgba(201,169,97,0.2);
  color: var(--fsdm-gold);
  border: 1px solid var(--fsdm-gold-d);
}

.fsdm-record-item__rank--judge {
  background: rgba(113,38,230,0.3);
  color: #a678e0;
  border: 1px solid var(--fsdm-purple);
}

.fsdm-record-item__rank--mvp {
  background: linear-gradient(135deg, var(--fsdm-gold), var(--fsdm-gold-l));
  color: var(--fsdm-black);
  font-weight: 700;
  border: none;
}

.fsdm-record-item__rank--top4 {
  background: rgba(201,169,97,0.15);
  color: var(--fsdm-gold);
  border: 1px solid var(--fsdm-gold-d);
}

.fsdm-record-item__rank--top8 {
  background: rgba(255,255,255,0.06);
  color: #cccccc;
  border: 1px solid rgba(255,255,255,0.2);
}

.fsdm-record-item__rank--guest {
  background: rgba(30,120,80,0.25);
  color: #5fd4a0;
  border: 1px solid rgba(30,120,80,0.5);
}

.fsdm-record-item__body { flex: 1; }

.fsdm-record-item__event {
  font-size: 0.92rem;
  font-weight: 700;
  color: var(--fsdm-white);
  margin: 0 0 0.2rem;
}

.fsdm-record-item__detail {
  font-size: 0.78rem;
  color: var(--fsdm-gray);
}

/* 統計バー */
.fsdm-stats {
  display: flex;
  gap: 2rem;
  flex-wrap: wrap;
  margin: 2rem 0;
}

.fsdm-stat {
  text-align: center;
}

.fsdm-stat__num {
  font-family: var(--font-en);
  font-size: clamp(2.4rem, 5vw, 3.6rem);
  font-weight: 700;
  color: var(--fsdm-gold);
  line-height: 1;
  display: block;
}

.fsdm-stat__label {
  font-size: 0.78rem;
  color: var(--fsdm-gray);
  display: block;
  margin-top: 0.3rem;
}

/* =============================================
   Lessons カード
   ============================================= */
.fsdm-lesson-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
  gap: 1.5rem;
  margin-top: 2rem;
}

.fsdm-lesson-card {
  background: var(--fsdm-dark);
  border: 1px solid rgba(255,255,255,0.08);
  border-radius: var(--radius);
  padding: 2rem 1.5rem;
  text-align: center;
  transition: transform var(--transition), border-color var(--transition);
}

.fsdm-lesson-card:hover {
  transform: translateY(-4px);
  border-color: var(--fsdm-gold-d);
}

.fsdm-lesson-card__icon {
  width: 56px;
  height: 56px;
  background: rgba(113,38,230,0.3);
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  margin: 0 auto 1.2rem;
  font-size: 1.3rem;
  color: var(--fsdm-gold);
}

.fsdm-lesson-card__type {
  font-family: var(--font-en);
  font-size: 0.7rem;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color: var(--fsdm-gold);
  display: block;
  margin-bottom: 0.4rem;
}

.fsdm-lesson-card__name {
  font-size: 1.1rem;
  font-weight: 700;
  color: var(--fsdm-white);
  margin: 0 0 0.6rem;
}

.fsdm-lesson-card__duration {
  font-size: 0.82rem;
  color: var(--fsdm-gray);
  margin: 0 0 0.8rem;
}

.fsdm-lesson-card__price {
  font-family: var(--font-en);
  font-size: 1.3rem;
  font-weight: 700;
  color: var(--fsdm-gold);
  display: block;
  margin-bottom: 1rem;
}

.fsdm-lesson-card__price small {
  font-size: 0.7rem;
  font-weight: 400;
  color: var(--fsdm-gray);
}

.fsdm-lesson-card__desc {
  font-size: 0.82rem;
  color: var(--fsdm-gray);
  line-height: 1.7;
  text-align: left;
}

/* =============================================
   Contact フォーム
   ============================================= */
.fsdm-contact-wrap {
  max-width: 680px;
  margin: 0 auto;
}

.fsdm-form-group {
  margin-bottom: 1.6rem;
}

.fsdm-form-group label {
  display: block;
  font-size: 0.85rem;
  font-weight: 700;
  color: var(--fsdm-white);
  margin-bottom: 0.5rem;
}

.fsdm-form-group label .required {
  color: var(--fsdm-gold);
  font-size: 0.75rem;
  margin-left: 0.4rem;
}

.fsdm-form-group input,
.fsdm-form-group select,
.fsdm-form-group textarea {
  width: 100%;
  background: var(--fsdm-dark2);
  border: 1px solid rgba(255,255,255,0.15);
  border-radius: var(--radius);
  color: var(--fsdm-white);
  font-family: var(--font-ja);
  font-size: 0.9rem;
  padding: 0.85rem 1rem;
  transition: border-color var(--transition);
  outline: none;
}

.fsdm-form-group input:focus,
.fsdm-form-group select:focus,
.fsdm-form-group textarea:focus {
  border-color: var(--fsdm-gold-d);
}

.fsdm-form-group textarea { min-height: 160px; resize: vertical; }

/* WP Contact Form 7 上書き */
.wpcf7-form input,
.wpcf7-form select,
.wpcf7-form textarea {
  background: var(--fsdm-dark2) !important;
  border: 1px solid rgba(255,255,255,0.15) !important;
  color: var(--fsdm-white) !important;
  border-radius: var(--radius) !important;
  padding: 0.85rem 1rem !important;
}
.wpcf7-form input:focus,
.wpcf7-form textarea:focus {
  border-color: var(--fsdm-gold-d) !important;
  outline: none !important;
}
.wpcf7-submit {
  background: var(--fsdm-gold) !important;
  color: var(--fsdm-black) !important;
  font-weight: 700 !important;
  border: none !important;
  padding: 1rem 2.4rem !important;
  border-radius: var(--radius) !important;
  cursor: pointer;
  transition: background var(--transition) !important;
}
.wpcf7-submit:hover {
  background: var(--fsdm-gold-l) !important;
}

/* =============================================
   SNSリンク
   ============================================= */
.fsdm-sns-links {
  display: flex;
  gap: 1rem;
  flex-wrap: wrap;
  margin-top: 1.6rem;
}

.fsdm-sns-link {
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
  background: rgba(255,255,255,0.05);
  border: 1px solid var(--fsdm-border);
  border-radius: var(--radius);
  padding: 0.6rem 1.2rem;
  font-size: 0.85rem;
  color: var(--fsdm-white) !important;
  transition: all var(--transition);
}

.fsdm-sns-link:hover {
  background: rgba(201,169,97,0.12);
  border-color: var(--fsdm-gold-d);
  color: var(--fsdm-gold) !important;
  transform: translateY(-2px);
}

/* =============================================
   Footer CTA バナー
   ============================================= */
.fsdm-footer-cta {
  background: linear-gradient(135deg, var(--fsdm-purple) 0%, #1a0040 100%);
  padding: 64px 24px;
  text-align: center;
  border-top: 1px solid var(--fsdm-border);
}

.fsdm-footer-cta__title {
  font-size: clamp(1.4rem, 3.5vw, 2rem);
  font-weight: 700;
  color: var(--fsdm-white);
  margin: 0 0 0.8rem;
}

.fsdm-footer-cta__sub {
  font-size: 0.95rem;
  color: rgba(255,255,255,0.65);
  margin: 0 0 2rem;
}

/* =============================================
   フェードインアニメーション
   ============================================= */
.fsdm-animate {
  opacity: 0;
  transform: translateY(20px);
  transition: opacity 0.7s ease, transform 0.7s ease;
}
.fsdm-animate.is-visible {
  opacity: 1;
  transform: none;
}

/* =============================================
   About ページ
   ============================================= */
.fsdm-profile-wrap {
  display: grid;
  grid-template-columns: 1fr 1.5fr;
  gap: 4rem;
  align-items: start;
  margin-top: 2rem;
}

.fsdm-profile-img {
  width: 100%;
  border-radius: var(--radius);
  border: 1px solid var(--fsdm-border);
}

.fsdm-timeline {
  list-style: none;
  padding: 0;
  margin: 0;
  position: relative;
}

.fsdm-timeline::before {
  content: '';
  position: absolute;
  left: 0;
  top: 0;
  bottom: 0;
  width: 2px;
  background: linear-gradient(to bottom, var(--fsdm-purple), var(--fsdm-gold));
}

.fsdm-timeline__item {
  padding: 0 0 2rem 2rem;
  position: relative;
}

.fsdm-timeline__item::before {
  content: '';
  position: absolute;
  left: -5px;
  top: 6px;
  width: 12px;
  height: 12px;
  border-radius: 50%;
  background: var(--fsdm-gold);
}

.fsdm-timeline__num {
  font-family: var(--font-en);
  font-size: 0.7rem;
  letter-spacing: 0.2em;
  color: var(--fsdm-gold);
  display: block;
  margin-bottom: 0.3rem;
}

.fsdm-timeline__title {
  font-size: 1rem;
  font-weight: 700;
  color: var(--fsdm-white);
  margin: 0 0 0.4rem;
}

.fsdm-timeline__text {
  font-size: 0.88rem;
  color: var(--fsdm-gray);
  line-height: 1.8;
}

/* スキルタグ */
.fsdm-skill-tags {
  display: flex;
  flex-wrap: wrap;
  gap: 0.6rem;
  margin-top: 1rem;
}

.fsdm-skill-tag {
  background: rgba(113,38,230,0.25);
  border: 1px solid rgba(113,38,230,0.5);
  color: #c78fff;
  font-size: 0.78rem;
  padding: 0.3rem 0.8rem;
  border-radius: 100px;
}

/* =============================================
   2カラム分割レイアウト（TOPページ等）
   ============================================= */
.fsdm-split {
  max-width: var(--max-w);
  margin: 0 auto;
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 4rem;
  align-items: center;
}

.fsdm-split--text-wide  { grid-template-columns: 1.3fr 1fr; }
.fsdm-split--img-wide   { grid-template-columns: 1fr 1.4fr; }

/* 「向いている人/向かない人」用 2カラム（PC）→ 1カラム（SP） */
.fsdm-for-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 2rem;
}

/* =============================================
   レスポンシブ
   ============================================= */
@media (max-width: 768px) {
  .fsdm-section { padding: 56px 20px; }
  .fsdm-section--full { padding: 56px 20px; }

  /* 2カラム → 1カラムに積み替え */
  .fsdm-split,
  .fsdm-split--text-wide,
  .fsdm-split--img-wide {
    grid-template-columns: 1fr;
    gap: 2rem;
  }

  /* モバイルで画像を先に出したいセクションは order で制御 */
  .fsdm-split--img-first-sp .fsdm-split__img  { order: -1; }

  /* Method「向いている人/向かない人」もSPで1カラムに */
  .fsdm-for-grid { grid-template-columns: 1fr !important; gap: 1.4rem !important; }

  /* スマホ: 70vh でヒーローを抑えて下コンテンツを見せる */
  .fsdm-hero {
    min-height: 70vh;
    min-height: 70svh;
  }
  .fsdm-hero__content { padding: 80px 20px 48px; }
  .fsdm-hero__btns { flex-direction: column; }
  .fsdm-hero__btns .fsdm-btn { width: 100%; text-align: center; }

  .fsdm-profile-wrap {
    grid-template-columns: 1fr;
    gap: 2rem;
  }

  .fsdm-method-table {
    font-size: 0.82rem;
  }

  .fsdm-method-table tbody td:first-child {
    width: auto;
    white-space: normal;
  }

  .fsdm-stats { gap: 1.2rem; }

  .fsdm-page-hero { height: 280px; }

  .fsdm-record-band {
    flex-direction: column;
    align-items: flex-start;
    gap: 0.8rem;
  }
}

@media (max-width: 480px) {
  .fsdm-lesson-grid {
    grid-template-columns: 1fr;
  }
  .fsdm-records-grid {
    grid-template-columns: 1fr;
  }
}

/* =============================================
   SWELL ブロック — ダーク背景対応オーバーライド
   .fsdm-swell-content 内で使うすべての SWELL ブロックに適用
   ============================================= */

/* 共通: テキスト色をダーク背景に合わせる */
.fsdm-swell-content {
  color: var(--fsdm-gray);
}
.fsdm-swell-content p,
.fsdm-swell-content li,
.fsdm-swell-content dd {
  color: var(--fsdm-gray);
  line-height: 1.85;
}
.fsdm-swell-content h2,
.fsdm-swell-content h3,
.fsdm-swell-content h4 {
  color: var(--fsdm-white);
}
.fsdm-swell-content a {
  color: var(--fsdm-gold);
}
.fsdm-swell-content a:hover {
  opacity: 0.8;
}

/* ---- STEP ブロック（申込みの流れ） ---- */
.fsdm-swell-step .swell-block-step__item {
  border-color: var(--fsdm-border);
  background: rgba(255,255,255,0.03);
}
.fsdm-swell-step .swell-block-step__num {
  background: var(--fsdm-gold);
  color: var(--fsdm-black);
  font-family: var(--font-en);
  font-weight: 700;
}
.fsdm-swell-step .swell-block-step__title {
  color: var(--fsdm-white);
}
.fsdm-swell-step .swell-block-step__body {
  color: var(--fsdm-gray);
}

/* ---- FAQ アコーディオン（よくある質問） ---- */
.fsdm-swell-faq .swell-block-faq__item {
  background: rgba(255,255,255,0.03);
  border: 1px solid var(--fsdm-border);
  border-radius: 4px;
  margin-bottom: 0.8rem;
}
.fsdm-swell-faq .swell-block-faq__q {
  color: var(--fsdm-white);
  font-weight: 700;
}
.fsdm-swell-faq .swell-block-faq__q::before {
  color: var(--fsdm-gold);
}
.fsdm-swell-faq .swell-block-faq__a {
  color: var(--fsdm-gray);
}
.fsdm-swell-faq .swell-block-faq__a::before {
  color: var(--fsdm-gold-d);
}

/* ---- 説明リスト（4つの柱） ---- */
.fsdm-swell-pillars .swell-block-dl dt {
  color: var(--fsdm-gold);
  border-left: 3px solid var(--fsdm-gold);
  padding-left: 0.8rem;
  font-weight: 700;
}
.fsdm-swell-pillars .swell-block-dl dd {
  color: var(--fsdm-gray);
  padding-left: 1.2rem;
}
/* テーブルブロックで書いた場合 */
.fsdm-swell-pillars table {
  width: 100%;
  border-collapse: collapse;
  font-size: 0.9rem;
}
.fsdm-swell-pillars table th {
  background: rgba(201,169,97,0.15);
  color: var(--fsdm-gold);
  border: 1px solid var(--fsdm-border);
  padding: 0.7rem 1rem;
  text-align: left;
  font-family: var(--font-en);
  letter-spacing: 0.08em;
  font-size: 0.78rem;
}
.fsdm-swell-pillars table td {
  border: 1px solid var(--fsdm-border);
  padding: 0.9rem 1rem;
  color: var(--fsdm-gray);
  vertical-align: top;
  line-height: 1.75;
}
.fsdm-swell-pillars table tr:hover td {
  background: rgba(255,255,255,0.03);
}

/* ---- リッチカラム（これまで / これから） ---- */
.fsdm-swell-richcol .swell-block-richColumns__item {
  background: rgba(255,255,255,0.03);
  border: 1px solid var(--fsdm-border);
  border-radius: 4px;
  padding: 2rem;
}
.fsdm-swell-richcol .swell-block-richColumns__title {
  color: var(--fsdm-gold);
  font-family: var(--font-en);
  font-size: 0.75rem;
  letter-spacing: 0.18em;
}
.fsdm-swell-richcol .swell-block-richColumns__body {
  color: var(--fsdm-gray);
  line-height: 2;
}

/* ---- 汎用: WordPress コアブロック on dark ---- */
.fsdm-swell-content .wp-block-table td,
.fsdm-swell-content .wp-block-table th {
  border-color: var(--fsdm-border);
  color: var(--fsdm-gray);
}
.fsdm-swell-content .wp-block-table thead th {
  background: rgba(201,169,97,0.12);
  color: var(--fsdm-gold);
}

/* =============================================
   エンソ円（守破離セクション）
   ============================================= */
.fsdm-enso {
  width: 130px;
  height: 130px;
  border-radius: 50%;
  border: 5px solid var(--fsdm-purple);
  border-right-color: transparent;
  border-bottom-color: transparent;
  transform: rotate(-135deg);
  box-shadow: 0 0 28px rgba(113,38,230,0.35), inset 0 0 16px rgba(113,38,230,0.12);
}

/* =============================================
   Instagram フィードセクション
   Smash Balloon オーバーライド
   ============================================= */
.fsdm-instagram-wrap {
  max-width: 900px;
  margin: 0 auto;
}

/* Smash Balloon のデフォルト白背景を透過に */
.fsdm-instagram-wrap .instagram-gallery,
.fsdm-instagram-wrap #sb_instagram,
.fsdm-instagram-wrap .sbi_follow_btn a {
  background: transparent !important;
}

/* フォローボタン → サイトのボタンスタイルに近づける */
.fsdm-instagram-wrap .sbi_follow_btn a {
  background: transparent !important;
  border: 1px solid var(--fsdm-border) !important;
  color: var(--fsdm-gold) !important;
  border-radius: 2px !important;
  font-family: var(--font-en) !important;
  letter-spacing: 0.1em !important;
}

/* ヘッダー（アカウント名表示）非表示 */
.fsdm-instagram-wrap #sbi_images {
  padding: 0 !important;
}

/* スマホ: 人物（右側）が見えるよう右寄せ */
@media (max-width: 768px) {
  .fsdm-hero__bg {
    object-position: 70% center;
  }
}
