/*
Theme Name: FREYJA Blocksy Child
Template: blocksy
Version: 2.2.9
Description: FREYJA用 Blocksy子テーマ。白黒＋ブルーのスタイリッシュ設計。
*/

@import url('https://fonts.googleapis.com/css2?family=Montserrat:wght@600;700;800&family=Noto+Sans+JP:wght@400;500;700;900&display=swap');

:root{
  --ink:#0e1116;      /* 見出し・黒 */
  --text:#333740;
  --muted:#727883;
  --line:#e6e8ec;
  --bg:#ffffff;
  --soft:#f5f7fa;     /* 薄グレー背景 */
  --blue:#0085b2;     /* アクセント・ブルー */
  --blue-dark:#004c66;
  --radius:0;
  --maxw:1120px;
  --sans:"Noto Sans JP", sans-serif;
  --disp:"Montserrat", sans-serif;
}

/* ---------- ベース ---------- */
*,*::before,*::after{ box-sizing:border-box; }
body{ color:var(--text); background:var(--bg); font-family:var(--sans); font-feature-settings:"palt"; line-height:1.9; letter-spacing:.02em; }
body.home{
  --theme-container-edge-spacing:24px;
  --wp--style--global--content-size:var(--maxw);
  --wp--style--global--wide-size:100vw;
}
body:not(.home){
  --theme-container-edge-spacing:24px;
  --wp--style--global--content-size:var(--maxw);
  --wp--style--global--wide-size:100vw;
}
img{ max-width:100%; height:auto; }
a{ color:var(--blue); }
.entry-content > section,
.entry-content section{ max-width:var(--maxw); margin-inline:auto; padding:88px 24px; }
body.home .entry-content.is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull)){
  max-width:var(--maxw);
  margin-left:auto !important;
  margin-right:auto !important;
}
.center{ text-align:center; }
.muted{ color:var(--muted); }

/* ---------- 見出し / eyebrow ---------- */
h1,h2,h3,h4{ color:var(--ink); font-weight:900; line-height:1.35; letter-spacing:.02em; }
.eyebrow{
  font-family:var(--disp); font-weight:700; letter-spacing:.22em; font-size:12px;
  color:var(--blue); text-align:center; margin:0 0 10px;
}
.entry-content h2{ font-size:clamp(24px,3.4vw,36px); text-align:center; margin:0 0 1.4em; }
.entry-content h2 + .lead, .section > .center{ margin-top:-1em; }
.mobile-break{ display:none; }

/* ---------- ボタン ---------- */
.btn-cta{
  display:inline-block; font-weight:700; text-decoration:none; color:#fff !important;
  background:var(--blue); padding:16px 44px; border-radius:0; letter-spacing:.06em;
  box-shadow:0 12px 24px -10px rgba(0,133,178,.7); transition:.18s;
}
.btn-cta:hover{ background:var(--blue-dark); transform:translateY(-2px); }
.btn-ghost{
  display:inline-block; font-weight:700; text-decoration:none; color:var(--ink) !important;
  border:1.5px solid var(--ink); padding:14px 34px; border-radius:0; letter-spacing:.04em; transition:.18s;
}
.btn-ghost:hover{ background:var(--ink); color:#fff !important; }

/* ---------- ヒーロー ---------- */
.hero{
  text-align:center; padding:120px 24px 108px !important;
  background:linear-gradient(180deg,#fff 0%,var(--soft) 100%);
  border-bottom:1px solid var(--line);
}
.hero .eyebrow{ font-size:13px; }
.hero h1{ font-size:clamp(30px,6vw,60px); letter-spacing:.03em; margin:.1em 0 .5em; }
.hero h1 .accent{ color:var(--blue); }
.hero .lead{ font-size:clamp(15px,2vw,19px); color:var(--text); max-width:660px; margin:0 auto 2em; }
.hero-actions{ display:flex; gap:14px; justify-content:center; flex-wrap:wrap; margin-bottom:1.2em; }
.hero-note{ color:var(--muted); font-size:12px; margin:0; }
.hero.visual-hero{
  position:relative; width:100vw; max-width:none !important; min-height:clamp(560px,74vh,820px);
  margin:0 calc(50% - 50vw) !important;
  padding:clamp(96px,12vw,168px) max(24px,calc((100vw - var(--maxw)) / 2)) clamp(76px,9vw,128px) !important;
  display:flex; flex-direction:column; justify-content:center; overflow:hidden; text-align:left; color:#fff;
  background:
    linear-gradient(90deg,rgba(4,7,12,.92) 0%,rgba(4,7,12,.74) 42%,rgba(4,7,12,.34) 72%,rgba(4,7,12,.72) 100%),
    linear-gradient(180deg,rgba(0,0,0,.20),rgba(0,0,0,.70)),
    var(--hero-bg);
  background-size:cover; background-position:center;
  border-bottom:1px solid rgba(255,255,255,.14); isolation:isolate;
}
.hero.visual-hero::before{
  content:""; position:absolute; inset:auto max(24px,calc((100vw - var(--maxw)) / 2)) 56px;
  height:1px; background:linear-gradient(90deg,var(--blue),rgba(255,255,255,.18),transparent); z-index:1;
}
.hero.visual-hero::after{
  content:""; position:absolute; inset:0;
  background:
    linear-gradient(135deg,rgba(0,133,178,.20),transparent 42%,rgba(255,255,255,.06)),
    repeating-linear-gradient(90deg,rgba(255,255,255,.08) 0 1px,transparent 1px 120px);
  pointer-events:none; z-index:0;
}
.hero.visual-hero > *{ position:relative; z-index:2; max-width:720px; margin-left:0; margin-right:0; }
.hero.visual-hero .eyebrow{ text-align:left; color:rgba(255,255,255,.72); }
.hero.visual-hero h1{ color:#fff; font-size:clamp(38px,7vw,82px); text-shadow:0 18px 44px rgba(0,0,0,.48); }
.hero.visual-hero h1 .accent{ color:#57c7ee; }
.hero.visual-hero .lead{ color:rgba(255,255,255,.88); margin:0 0 2em; max-width:660px; }
.hero.visual-hero .hero-actions{ justify-content:flex-start; }
.hero.visual-hero .btn-ghost{
  color:#fff !important; border-color:rgba(255,255,255,.7);
  background:rgba(255,255,255,.05); backdrop-filter:blur(10px);
}
.hero.visual-hero .btn-ghost:hover{ background:#fff; color:var(--ink) !important; }
.hero.visual-hero .hero-note{ color:rgba(255,255,255,.66); }
.hero-stats{
  display:flex; gap:12px; flex-wrap:wrap; margin:0 0 1.4em;
}
.hero-stat{
  display:inline-grid; grid-template-columns:auto auto; align-items:end; column-gap:10px; row-gap:2px;
  min-width:210px; padding:14px 18px 16px;
  color:#fff; background:rgba(4,7,12,.56); border:1px solid rgba(255,255,255,.22);
  border-left:4px solid #57c7ee; backdrop-filter:blur(12px);
  box-shadow:0 24px 60px -36px rgba(0,0,0,.78);
}
.hero-stat .stat-label{
  grid-column:1 / -1; font-size:12px; color:rgba(255,255,255,.72); letter-spacing:.16em;
}
.hero-stat strong{
  font-family:var(--disp); font-size:clamp(34px,5vw,54px); line-height:1; color:#fff;
}
.hero-stat small{
  padding-bottom:5px; font-size:11px; line-height:1.45; color:rgba(255,255,255,.74);
}
.image-band{
  width:100vw; max-width:none !important; min-height:clamp(260px,36vw,460px);
  margin:10px calc(50% - 50vw) 0 !important; padding:0 !important;
  background:
    linear-gradient(90deg,rgba(4,7,12,.80),rgba(4,7,12,.22),rgba(4,7,12,.82)),
    linear-gradient(180deg,rgba(0,0,0,.26),rgba(0,0,0,.44)),
    var(--band-bg);
  background-size:cover; background-position:center;
  border-block:1px solid rgba(14,17,22,.12);
}

/* ---------- グリッド / カード ---------- */
.grid{ display:grid; gap:22px; }
.grid-3{ grid-template-columns:repeat(3,1fr); }
.grid-4{ grid-template-columns:repeat(4,1fr); }
.card{
  background:#fff; border:1px solid var(--line); border-radius:0;
  padding:30px 26px; transition:border-color .2s, box-shadow .2s;
  box-shadow:0 20px 60px -52px rgba(14,17,22,.36);
}
.card:hover{ border-color:#cdd4df; box-shadow:0 26px 70px -50px rgba(14,17,22,.46); }
.card h3{ font-size:19px; margin:.2em 0 .5em; }
.card p{ margin:0; font-size:15px; }

/* 5つの理由 */
.section-head.left{ width:100%; max-width:var(--maxw); margin:0 auto 34px; }
.section-head.left .eyebrow,
.section-head.left h2{ text-align:left; }
.feature-lines{ display:grid; gap:0; border-top:1px solid var(--line); }
.feature-line{
  display:grid; grid-template-columns:minmax(280px,42%) minmax(52px,72px) minmax(0,1fr);
  align-items:center; gap:28px; padding:28px 0;
  border-bottom:1px solid var(--line); position:relative;
}
.feature-line::before{
  content:""; position:absolute; left:0; bottom:-1px;
  width:84px; height:1px; background:var(--blue);
}
.feature-line figure{
  margin:0; aspect-ratio:16/9; overflow:hidden; background:#080a0e;
}
.feature-line img{
  width:100%; height:100%; object-fit:cover; display:block;
  filter:saturate(.82) contrast(1.08); transition:transform .35s ease, filter .35s ease;
}
.feature-line:hover img{ transform:scale(1.035); filter:saturate(1) contrast(1.1); }
.feature-line .num{
  font-family:var(--disp); font-weight:800; font-size:clamp(30px,4vw,54px);
  color:var(--blue); line-height:1;
}
.feature-line h3{ margin:0 0 8px; font-size:clamp(18px,2vw,24px); }
.feature-line p{ margin:0; color:var(--muted); font-size:15px; line-height:1.9; }

/* 料金プラン */
.plan{ text-align:center; }
.plan .price{ font-family:var(--disp); font-weight:800; font-size:28px; color:var(--blue); margin:.3em 0; }
.plan .price small{ font-size:14px; color:var(--muted); font-weight:600; }

/* 店舗 */
.stores-grid .store h3{ font-size:17px; }
.stores-grid .store p{ color:var(--muted); font-size:14px; line-height:1.8; }
.stores-grid .store .line-action{ margin:14px 0 0; }
.stores-grid .store .btn-line{ width:100%; box-sizing:border-box; padding:12px 10px; font-size:13px; text-align:center; }

/* ---------- 下層ページ共通 ---------- */
.page-band{
  position:relative; width:100vw; max-width:none !important; min-height:340px;
  margin:0 calc(50% - 50vw) 18px !important;
  padding:clamp(92px,12vw,132px) max(24px,calc((100vw - var(--maxw)) / 2)) !important;
  display:grid; align-content:end; overflow:hidden; color:#fff;
  background:
    linear-gradient(90deg,rgba(4,7,12,.94),rgba(4,7,12,.70),rgba(4,7,12,.34)),
    linear-gradient(180deg,rgba(0,0,0,.18),rgba(0,0,0,.66)),
    var(--band-bg);
  background-size:cover; background-position:center;
  border-bottom:1px solid rgba(14,17,22,.18);
}
.page-band::before{
  content:""; position:absolute; left:max(24px,calc((100vw - var(--maxw)) / 2)); bottom:48px;
  width:min(320px,42vw); height:2px; background:linear-gradient(90deg,var(--blue),rgba(255,255,255,.20),transparent);
}
.page-band::after{
  content:""; position:absolute; inset:0;
  background:repeating-linear-gradient(90deg,rgba(255,255,255,.07) 0 1px,transparent 1px 132px);
  pointer-events:none;
}
.page-band > *{ position:relative; z-index:1; max-width:760px; margin-left:0; margin-right:0; }
.page-band .eyebrow{ text-align:left; color:#57c7ee; margin:0 0 8px; }
.page-band h1{ color:#fff; font-size:clamp(32px,5.5vw,58px); margin:0; }
.page-band .lead{ color:rgba(255,255,255,.80); max-width:680px; margin:14px 0 0; }
.line-card{
  display:grid; grid-template-columns:72px minmax(0,1fr); gap:22px; align-items:start;
  padding:28px 0; border-top:1px solid var(--line); position:relative;
}
.line-card:last-child{ border-bottom:1px solid var(--line); }
.line-card::before{
  content:""; position:absolute; left:0; top:-1px; width:84px; height:1px; background:var(--blue);
}
.line-card .num,
.plan-card .num,
.store-card .num{
  font-family:var(--disp); font-weight:800; color:var(--blue); line-height:1;
}
.line-card .num{ font-size:42px; }
.line-card h3{ margin:0 0 8px; }
.line-card p{ margin:0; color:var(--muted); }
.plan-lineup{ display:grid; grid-template-columns:repeat(3,1fr); gap:18px; }
.plan-card{
  position:relative; padding:30px 24px; border:1px solid var(--line); border-top:3px solid var(--ink);
  background:#fff; box-shadow:0 22px 60px -52px rgba(14,17,22,.38);
}
.plan-card.featured{ border-top-color:var(--blue); background:linear-gradient(180deg,#fff 0%,#f7faff 100%); }
.plan-card .num{ font-size:18px; letter-spacing:.16em; }
.plan-card h3{ margin:14px 0 8px; }
.plan-card .price{ font-family:var(--disp); font-size:30px; font-weight:800; color:var(--blue); margin:.4em 0; }
.plan-card .price small{ font-family:var(--sans); font-size:13px; color:var(--muted); }
.price-table{ width:100%; border-collapse:collapse; background:#fff; border-top:1px solid var(--line); }
.price-table th,
.price-table td{ padding:16px 18px; border-bottom:1px solid var(--line); vertical-align:top; }
.price-table th{ width:34%; background:#f7f9fc; color:var(--ink); font-weight:800; }
.qa-list{ display:grid; gap:12px; }
.qa-item{ padding:22px 24px; border:1px solid var(--line); background:#fff; }
.qa-item h3{ margin:0 0 8px; font-size:18px; }
.qa-item p{ margin:0; color:var(--muted); }
.store-card{
  padding:28px 24px; border:1px solid var(--line); border-top:3px solid var(--blue); background:#fff;
  box-shadow:0 22px 60px -52px rgba(14,17,22,.38);
}
.store-card .num{ font-size:18px; letter-spacing:.16em; }
.store-card h3{ margin:14px 0 10px; }
.store-meta{ display:grid; gap:8px; margin:0 0 18px; color:var(--muted); font-size:14px; line-height:1.75; }
.text-link{ font-weight:800; text-decoration:none; border-bottom:1px solid currentColor; }
.note-panel,
.trainer-panel,
.contact-panel{
  padding:28px; border:1px solid var(--line); border-left:4px solid var(--blue); background:#fff;
  box-shadow:0 24px 64px -56px rgba(14,17,22,.42);
}
.contact-form-shell{
  padding:28px; border:1px solid var(--line); background:#fff;
}

/* ---------- ご利用の流れ（番号ステップ） ---------- */
.steps{ counter-reset:s; list-style:none; padding:0; max-width:760px; margin:0 auto; display:grid; gap:12px; }
.steps li{
  counter-increment:s; position:relative; padding:18px 22px 18px 70px;
  background:#fff; border:1px solid var(--line); border-radius:0; font-weight:500;
}
.steps li::before{
  content:counter(s,decimal-leading-zero); position:absolute; left:20px; top:16px;
  font-family:var(--disp); font-weight:800; color:var(--blue); font-size:20px;
}

/* ---------- 締めCTA（黒背景） ---------- */
.cta-foot{
  text-align:center; background:var(--ink); color:#fff; border-radius:0;
  padding:96px 24px !important; max-width:none;
}
.cta-foot h2{ color:#fff; }
.cta-foot p{ color:#c8ccd4; }

/* ---------- 背景切替 ---------- */
.section.soft{ background:var(--soft); max-width:none; }
.section.soft > *{ max-width:var(--maxw); margin-inline:auto; }

/* ---------- 下層ページ用（料金/流れ/店舗の素のHTML） ---------- */
.entry-content section ul{ list-style:none; padding:0; max-width:760px; margin:0 auto; }
.entry-content section ul li{ padding:12px 16px 12px 40px; margin:8px 0; background:var(--soft); border-radius:0; position:relative; }
.entry-content section ul li::before{ content:""; position:absolute; left:16px; top:20px; width:10px; height:10px; background:var(--blue); border-radius:50%; }
.entry-content section table{ width:100%; border-collapse:collapse; margin:1em 0; }
.entry-content section table th{ text-align:left; white-space:nowrap; padding:12px 18px; background:var(--soft); width:32%; border-bottom:1px solid var(--line); }
.entry-content section table td{ padding:12px 18px; border-bottom:1px solid var(--line); }
.store{ border:1px solid var(--line); border-radius:0; padding:24px 28px; margin:14px 0; border-top:3px solid var(--blue); background:#fff; }

/* ---------- ナビ（Blocksy .ct-header） ---------- */
.ct-header{ border-bottom:1px solid var(--line); }
.site-title a{ font-family:var(--disp); font-weight:800; letter-spacing:.18em; color:var(--ink) !important; text-decoration:none; }
.ct-menu-link{ font-weight:500; letter-spacing:.05em; color:var(--ink) !important; }
.ct-menu-link:hover{ color:var(--blue) !important; }
#header-menu-1 .current-menu-item > .ct-menu-link{ color:var(--blue) !important; }

/* Blocksyのページタイトル帯はトップではヒーローと重複するため隠す */
body.home .hero-section[data-type="type-1"],
body:not(.home) .hero-section[data-type="type-1"]{ display:none; }

/* ---------- アニメ ---------- */
.entry-content section{ animation:fadeUp .7s ease both; }
@keyframes fadeUp{ from{opacity:0; transform:translateY(16px);} to{opacity:1; transform:none;} }

/* ---------- スマホ ---------- */
@media (max-width:980px){
  .grid-4{ grid-template-columns:repeat(2,1fr); }
  .plan-lineup{ grid-template-columns:1fr; }
}
@media (max-width:820px){ .grid-3,.grid-4{ grid-template-columns:1fr 1fr; } }
@media (max-width:600px){
  :root{ --theme-container-edge-spacing:16px !important; }
  html,body{ width:100%; max-width:100%; overflow-x:hidden; }
  body.home,
  body:not(.home){
    --theme-container-edge-spacing:16px !important;
    --wp--style--global--content-size:100% !important;
    --wp--style--global--wide-size:100% !important;
  }
  body.home .site-main,
  body.home .ct-container-full,
  body.home .entry-content,
  body:not(.home) .site-main,
  body:not(.home) .ct-container-full,
  body:not(.home) .entry-content{
    width:100% !important; max-width:100% !important; min-width:0 !important; overflow-x:hidden; box-sizing:border-box;
  }
  body.home .ct-container-full,
  body:not(.home) .ct-container-full{
    padding-left:0 !important;
    padding-right:0 !important;
  }
  body.home .entry-content,
  body:not(.home) .entry-content{
    padding-left:0 !important;
    padding-right:0 !important;
  }
  body.home .entry-content.is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull)),
  body:not(.home) .entry-content.is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull)){
    width:100% !important;
    max-width:100% !important;
    margin-left:auto !important;
    margin-right:auto !important;
  }
  .entry-content section{
    width:100%;
    max-width:100%;
    min-width:0;
    box-sizing:border-box;
    padding:56px 16px;
  }
  .mobile-break{ display:block; }
  .entry-content h2{
    display:block;
    width:100%;
    max-width:calc(100vw - 32px);
    margin-left:auto;
    margin-right:auto;
    font-size:clamp(19px,4.8vw,21px);
    line-height:1.42;
    letter-spacing:0;
    overflow-wrap:normal;
    word-break:normal;
    writing-mode:horizontal-tb;
  }
  body.home .entry-content > section:not(.visual-hero):not(.image-band){
    width:100% !important;
    max-width:100% !important;
    margin-left:auto !important;
    margin-right:auto !important;
    box-sizing:border-box;
    overflow:hidden;
  }
  body.home .entry-content > section:not(.visual-hero):not(.image-band) > *{
    width:100%;
    max-width:100%;
    min-width:0;
    box-sizing:border-box;
  }
  body.home .entry-content section.soft{
    width:100% !important;
    max-width:100% !important;
    margin-left:auto !important;
    margin-right:auto !important;
  }
  body.home .entry-content section.soft > *{ max-width:100% !important; }
  .section > *{ max-width:100%; box-sizing:border-box; }
  .grid,.grid-3,.grid-4,.plan-lineup,.card{ width:100%; max-width:100%; min-width:0; box-sizing:border-box; overflow:hidden; }
  .grid,.grid-3,.grid-4,.plan-lineup{ grid-template-columns:minmax(0,1fr) !important; }
  .card{ min-width:0; padding:24px 20px; }
  .section-head.left{ width:100%; max-width:100%; margin-bottom:24px; }
  .section-head.left .eyebrow,
  .section-head.left h2{
    display:block;
    width:100% !important;
    max-width:100% !important;
    min-width:0 !important;
    text-align:left;
    white-space:normal !important;
    overflow-wrap:normal !important;
    word-break:normal !important;
    writing-mode:horizontal-tb !important;
    text-orientation:mixed !important;
  }
  .feature-lines{ border-top:0; gap:22px; }
  .feature-line{
    grid-template-columns:1fr; gap:12px; padding:0 0 24px;
    border-bottom:1px solid var(--line);
  }
  .feature-line::before{ width:64px; }
  .feature-line figure{ aspect-ratio:16/9; }
  .feature-line .num{
    position:absolute; top:12px; left:12px;
    font-size:22px; color:#fff; background:var(--blue); padding:8px 10px;
  }
  .card h3,.card p,.stores-grid .store p,.steps li{
    white-space:normal !important;
    overflow-wrap:anywhere !important;
    word-break:break-word;
    line-break:anywhere;
    letter-spacing:0;
  }
  .steps,
  .steps li,
  .qa-list,
  .qa-item{
    width:100%;
    max-width:100%;
    min-width:0;
    box-sizing:border-box;
  }
  .steps{
    grid-template-columns:minmax(0,1fr);
    max-width:calc(100vw - 32px);
    overflow:hidden;
  }
  .steps li{
    padding:18px 16px;
    width:100%;
    max-width:100%;
    margin-left:auto;
    margin-right:auto;
    font-size:14px;
    line-height:1.85;
    white-space:normal !important;
    overflow-wrap:anywhere !important;
    word-break:break-all;
    line-break:anywhere;
    overflow:hidden;
  }
  .steps li::before{
    position:static;
    display:block;
    margin-bottom:8px;
    font-size:17px;
    line-height:1;
  }
  .hero{ padding:84px 18px 72px !important; }
  .hero.visual-hero{
    width:100% !important; max-width:100% !important; min-height:560px;
    margin-left:0 !important; margin-right:0 !important;
    padding:82px 16px 70px !important; text-align:center; background-position:center;
  }
  .hero.visual-hero::before{ inset:auto 16px 42px; }
  .hero.visual-hero > *{ width:100%; max-width:100%; margin-inline:auto; }
  .hero.visual-hero .eyebrow{ text-align:center; font-size:10px; letter-spacing:.14em; line-height:1.6; overflow-wrap:anywhere; }
  .hero.visual-hero h1{
    display:block;
    width:100%;
    max-width:100% !important;
    font-size:24px;
    line-height:1.34;
    letter-spacing:0;
    white-space:normal !important;
    overflow-wrap:normal !important;
    word-break:normal !important;
    writing-mode:horizontal-tb !important;
    text-orientation:mixed !important;
  }
  .hero.visual-hero .lead{
    width:100%;
    max-width:100%;
    min-width:0;
    box-sizing:border-box;
    font-size:13px;
    line-height:1.9;
    white-space:normal !important;
    overflow-wrap:anywhere !important;
    word-break:break-word;
    line-break:anywhere;
  }
  .hero.visual-hero .hero-actions{ justify-content:center; }
  .hero-stats{ justify-content:center; }
  .hero-stat{ width:100%; max-width:250px; margin-inline:auto; }
  .image-band{
    width:100% !important; max-width:100% !important; min-height:220px;
    margin-left:0 !important; margin-right:0 !important;
  }
  .btn-cta,.btn-ghost{ width:100%; max-width:100%; box-sizing:border-box; text-align:center; padding-inline:18px; }
  .hero-actions{ flex-direction:column; }
  .page-band{
    width:100% !important; max-width:100% !important; min-height:280px;
    margin-left:0 !important; margin-right:0 !important;
    padding:72px 16px !important;
  }
  .page-band::before{ left:16px; bottom:44px; width:160px; }
  .page-band .eyebrow{ text-align:left; font-size:10px; letter-spacing:.15em; }
  .page-band h1{ font-size:clamp(27px,8vw,34px); letter-spacing:0; }
  .page-band .lead{ font-size:13px; line-height:1.85; }
  .line-card{ grid-template-columns:1fr; gap:10px; padding:24px 0; }
  .line-card .num{ font-size:28px; }
  .plan-card,.store-card,.note-panel,.trainer-panel,.contact-panel,.contact-form-shell{ padding:24px 18px; }
  .price-table th,.price-table td{ display:block; width:100%; padding:12px 14px; }
  .qa-item{ padding:20px 18px; }
  .cta-foot{ padding-left:18px !important; padding-right:18px !important; }
}

/* ---------- v1.4.0: 導線・AI検索ブラッシュアップ ---------- */

/* 事実文（エンティティ宣言・AI引用向け） */
.intro-statement{ padding:36px 24px !important; }
.intro-statement p{
  max-width:820px; margin:0 auto; text-align:center;
  font-size:15px; line-height:2.1; color:var(--muted);
}

/* キャンペーン帯 */
.campaign-strip{
  max-width:820px; margin:28px auto 0; padding:14px 20px; text-align:center;
  background:var(--blue); color:#fff; font-weight:700; letter-spacing:.06em;
  font-size:15px;
}

/* 電話リンク */
.tel-link{
  color:var(--ink) !important; text-decoration:none; font-weight:700;
  border-bottom:1px solid var(--blue); padding-bottom:1px;
}
.tel-link:hover{ color:var(--blue) !important; }

/* モバイル固定CTA（PCでは非表示） */
.freyja-fixed-cta{ display:none; }
@media (max-width:782px){
  .freyja-fixed-cta{
    display:block; position:fixed; left:0; right:0; bottom:0; z-index:9999;
    padding:10px 14px calc(10px + env(safe-area-inset-bottom));
    background:rgba(14,17,22,.92); backdrop-filter:blur(6px);
  }
  .freyja-fixed-cta a{
    display:block; text-align:center; background:var(--blue); color:#fff;
    font-weight:700; letter-spacing:.08em; text-decoration:none;
    padding:14px 10px; border-radius:6px;
  }
  body{ padding-bottom:74px; } /* 固定CTA分の余白 */
}

/* ========== v2.0.0: モダン強化（マーキー/ダーク/グラス/グロー） ========== */

/* 流れる英字マーキー（CSSのみ） */
.marquee{
  width:100vw; max-width:none !important; margin:0 calc(50% - 50vw) !important;
  padding:26px 0 !important; overflow:hidden; background:#fff;
  border-bottom:1px solid var(--line); position:relative;
}
.marquee-track{
  display:flex; gap:64px; white-space:nowrap; width:max-content;
  animation:freyja-marq 26s linear infinite;
}
.marquee-track span{
  font-family:var(--disp); font-weight:800; font-size:clamp(40px,6vw,84px);
  line-height:1; letter-spacing:.06em; color:transparent;
  -webkit-text-stroke:1px rgba(14,17,22,.22);
}
.marquee-track span b{ color:var(--blue); -webkit-text-stroke:0; font-weight:800; }
@keyframes freyja-marq{ from{ transform:translateX(0);} to{ transform:translateX(-50%);} }

/* ダークセクション（全幅・グロー付き） */
.section.dark{
  width:100vw; max-width:none !important; margin:0 calc(50% - 50vw) !important;
  padding:96px max(24px,calc((100vw - var(--maxw)) / 2)) !important;
  background:radial-gradient(90% 70% at 80% 0%, rgba(0,133,178,.22), transparent 55%), var(--ink);
  color:#c8ccd4; position:relative; overflow:hidden; isolation:isolate;
}
.section.dark::before{
  content:""; position:absolute; width:520px; height:520px; border-radius:50%;
  left:-160px; bottom:-260px; z-index:0; pointer-events:none;
  background:radial-gradient(circle, rgba(0,133,178,.28), transparent 62%);
  filter:blur(10px);
}
.section.dark > *{ position:relative; z-index:1; }
.section.dark h2{ color:#fff; }
.section.dark .eyebrow{ color:#57c7ee; }
.section.dark .card{
  background:rgba(255,255,255,.045); border:1px solid rgba(255,255,255,.14);
  backdrop-filter:blur(14px); color:#d7dbe2;
  box-shadow:0 30px 80px -50px rgba(0,0,0,.9);
}
.section.dark .card:hover{ border-color:rgba(87,199,238,.55); box-shadow:0 0 0 1px rgba(87,199,238,.25), 0 34px 90px -50px rgba(0,0,0,.95); }
.section.dark .card h3{ color:#fff; }
.section.dark .plan .price{ color:#57c7ee; }
.section.dark .btn-ghost{ color:#fff !important; border-color:rgba(255,255,255,.6); }
.section.dark .btn-ghost:hover{ background:#fff; color:var(--ink) !important; }
.section.dark .campaign-strip{ background:var(--blue); box-shadow:0 0 42px rgba(0,133,178,.5); }

/* カードの時差フェードイン */
.grid > *, .feature-line, .steps li{ animation:fadeUp .7s ease both; }
.grid > *:nth-child(1), .feature-line:nth-child(1), .steps li:nth-child(1){ animation-delay:.05s; }
.grid > *:nth-child(2), .feature-line:nth-child(2), .steps li:nth-child(2){ animation-delay:.14s; }
.grid > *:nth-child(3), .feature-line:nth-child(3), .steps li:nth-child(3){ animation-delay:.23s; }
.grid > *:nth-child(4), .feature-line:nth-child(4), .steps li:nth-child(4){ animation-delay:.32s; }
.grid > *:nth-child(5), .feature-line:nth-child(5), .steps li:nth-child(5){ animation-delay:.41s; }
.steps li:nth-child(6){ animation-delay:.5s; }

/* CTAボタン：シャイン（光が走る） */
.btn-cta{ position:relative; overflow:hidden; }
.btn-cta::after{
  content:""; position:absolute; top:0; bottom:0; width:44%; left:-70%;
  background:linear-gradient(100deg, transparent, rgba(255,255,255,.5), transparent);
  transform:skewX(-18deg); transition:left .55s ease;
}
.btn-cta:hover::after{ left:130%; }

/* 数字の存在感UP（plan/point） */
.plan-card .num, .point .num{ text-shadow:0 0 26px rgba(0,133,178,.45); }

/* LINE ボタン・パネル */
.line-panel{
  width:100%; max-width:640px; margin:0 auto; text-align:center;
  border:1px solid var(--line); background:#fff; padding:48px 32px;
  box-shadow:0 30px 80px -60px rgba(14,17,22,.5);
  box-sizing:border-box;
  overflow-wrap:anywhere;
}
.line-panel h2,
.line-panel p{ max-width:100%; overflow-wrap:anywhere; }
.line-panel h2{
  display:block;
  width:100%;
  max-width:100%;
  white-space:normal !important;
  overflow-wrap:anywhere;
  line-break:anywhere;
}
.line-copy{
  max-width:34em;
  margin-left:auto;
  margin-right:auto;
}
.line-action{ margin:28px 0 10px; }
.line-note{ font-size:12px; }
.btn-line{
  display:inline-block; font-weight:700; text-decoration:none; color:#fff !important;
  background:#06C755; padding:18px 52px; letter-spacing:.06em; font-size:17px;
  box-shadow:0 14px 30px -12px rgba(6,199,85,.65); transition:.18s;
  position:relative; overflow:hidden; max-width:100%; text-align:center;
  box-sizing:border-box;
}
.btn-line:hover{ transform:translateY(-2px); filter:brightness(1.05); }
.tel-list{ width:100%; max-width:640px; margin:28px auto 0; display:grid; gap:10px; }
.tel-list li{
  list-style:none; display:flex; justify-content:space-between; gap:12px;
  padding:14px 18px; background:var(--soft); font-size:14px;
}

@media (max-width:600px){
  .marquee{ padding:16px 0 !important; }
  .marquee-track span{ font-size:34px; }
  .section.dark{ padding:64px 18px !important; }
  .line-panel{
    width:auto;
    max-width:none;
    margin-inline:16px;
    padding:34px 16px;
    overflow:hidden;
  }
  .line-panel h2{
    font-size:18px;
    line-height:1.55;
    letter-spacing:0;
  }
  .line-panel p{
    font-size:14px;
    line-height:1.9;
    width:100%;
    box-sizing:border-box;
  }
  .line-panel .line-copy{
    max-width:260px !important;
    margin-left:auto !important;
    margin-right:auto !important;
    white-space:normal !important;
    overflow-wrap:anywhere;
  }
  .line-panel .line-action,
  .line-panel .line-note{
    max-width:100% !important;
  }
  .line-panel .line-action{
    display:flex;
    justify-content:center;
  }
  .btn-line{
    display:inline-flex;
    justify-content:center;
    align-items:center;
    width:100%;
    max-width:280px;
    min-width:0;
    padding:16px 18px;
    font-size:15px;
    white-space:normal;
    overflow-wrap:anywhere;
  }
  .tel-list li{ flex-direction:column; gap:2px; }
  .ct-footer,
  .ct-footer *{
    writing-mode:horizontal-tb !important;
    text-orientation:mixed !important;
  }
  .ct-footer [data-row] > div,
  .ct-footer .ct-container,
  .ct-footer [data-column],
  .ct-footer [data-id="copyright"],
  .ct-footer .ct-footer-copyright{
    width:100% !important;
    max-width:100% !important;
    min-width:0 !important;
    text-align:center;
  }
  .ct-footer .ct-footer-copyright{
    white-space:normal !important;
    overflow-wrap:normal;
    letter-spacing:0;
  }
}

/* ---------- v2.0.1: 店舗別LINEグリッド ---------- */
.line-grid{
  display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:20px;
  max-width:860px; margin:36px auto 0;
}
.line-store{
  background:#fff; border:1px solid var(--line); border-top:3px solid #06C755;
  padding:28px 24px; text-align:center;
  box-shadow:0 24px 60px -52px rgba(14,17,22,.4);
}
.line-store h3{ margin:0 0 .3em; font-size:18px; }
.line-store .muted{ font-size:12.5px; line-height:1.7; min-height:2.6em; }
.line-store .btn-line{ padding:14px 30px; font-size:15px; width:100%; max-width:280px; box-sizing:border-box; }
.line-store .store-meta{ margin-top:12px; font-size:13px; }
@media (max-width:640px){
  .line-grid{ grid-template-columns:1fr; }
  .line-store .muted{ min-height:0; }
}

/* ========== v2.1.0: FREYJAブランド寄せ（TCD FORCE準拠） ========== */

/* ヘッダーをダーク化（白ロゴSVG用） */
.ct-header, .ct-header [data-row]{ background:#0c1219 !important; }
.ct-header{ border-bottom:1px solid rgba(255,255,255,.08) !important; box-shadow:none; }
.site-title a{ color:#fff !important; }
.ct-header .ct-menu-link, .ct-header a{ color:#e8ecf1 !important; }
.ct-header .ct-menu-link:hover{ color:#57c7ee !important; }
#header-menu-1 .current-menu-item > .ct-menu-link{ color:#57c7ee !important; }
.ct-header .custom-logo, .ct-header .site-logo img{ max-height:44px; width:auto; }
/* モバイルのハンバーガー等も白へ */
.ct-header button, .ct-header .ct-toggle{ color:#fff !important; }
.ct-header svg{ fill:#fff; }
.ct-header-trigger svg rect,
.ct-header-trigger .ct-icon rect{ fill:#fff !important; }
.ct-header-trigger{ --theme-icon-color:#fff !important; color:#fff !important; }
.ct-header [data-id="trigger"]{ --toggle-button-size:36px !important; visibility:visible !important; opacity:1 !important; }

/* キャンペーン帯はブランドのオレンジ */
.campaign-strip{ background:#ff8000 !important; box-shadow:0 0 42px rgba(255,128,0,.4) !important; }

/* ダークセクションのグローもティールに調和（既に置換済みだが微調整） */
.section.dark{ background:radial-gradient(90% 70% at 80% 0%, rgba(0,133,178,.26), transparent 55%), var(--ink); }

/* ---------- v2.1.1: ヘッダー直下の白帯除去 ---------- */
.page .entry-header,
body.home .entry-header,
.hero-section .entry-header{ display:none !important; }   /* Blocksyのページタイトル欄（home含む全ページ） */
.site-main, main#main{ margin-block-start:0 !important; padding-block-start:0 !important; margin-block-end:0 !important; }
.hero-section{ padding:0 !important; margin:0 !important; }
article{ margin-top:0 !important; }
.entry-content{ margin-top:0 !important; }
.entry-content > :first-child{ margin-top:0 !important; }
/* ヒーロー/ページ帯をヘッダーに密着 */
.hero.visual-hero, .page-band{ margin-top:0 !important; }
/* ct-container-full / ct-container のBlocksy vertical spacing を除去（白帯原因） */
/* Blocksy: [data-vertical-spacing*=top]{ padding-top: var(--theme-content-vertical-spacing) } を打ち消す */
/* CSS変数を0に上書きして全コンテナの上パディングを除去 */
body.home .ct-container-full,
body:not(.home) .ct-container-full{ --theme-content-vertical-spacing:0px !important; }
body.home .ct-container-full > article{ padding-top:0 !important; margin-top:0 !important; }
body:not(.home) .ct-container-full > article{ padding-top:0 !important; margin-top:0 !important; }
/* ブログ/アーカイブ: ct-container の vertical spacing を CSS変数で除去 */
body.blog .ct-container,
body.archive .ct-container,
body.search .ct-container,
body.author .ct-container{ --theme-content-vertical-spacing:0px !important; }
/* ブログ一覧の記事グリッドに適切な上余白 */
body.blog .ct-container > section:first-child,
body.archive .ct-container > section:first-child{ padding-top:60px !important; }

/* SNSリンク（締めCTA内） */
.sns-links a{ color:#c8ccd4 !important; text-decoration:none; border-bottom:1px solid rgba(255,255,255,.3); padding-bottom:2px; font-size:13px; letter-spacing:.08em; }
.sns-links a:hover{ color:#57c7ee !important; border-color:#57c7ee; }

/* ---------- v2.1.3: トレーナーカード ---------- */
.trainer-card{ text-align:center; padding:0 0 24px; overflow:hidden; }
.trainer-card figure{ margin:0 0 18px; aspect-ratio:1/1; overflow:hidden; background:var(--soft); }
.trainer-card figure img{ width:100%; height:100%; object-fit:cover; transition:transform .35s; }
.trainer-card:hover figure img{ transform:scale(1.04); }
.trainer-card h3{ font-size:17px; margin:0 8px .2em; }
.trainer-card .en{ display:block; font-family:var(--disp); font-weight:600; font-size:11px; letter-spacing:.14em; color:var(--muted); margin-top:2px; }
.trainer-card .muted{ font-size:13px; margin:0 8px; }
.trainer-card .career{ font-size:12.5px; color:var(--blue); font-weight:700; margin:6px 8px 0; }
.photo-placeholder{ display:flex; align-items:center; justify-content:center; height:100%; font-family:var(--disp); font-weight:700; font-size:12px; letter-spacing:.2em; color:var(--muted); }

/* ========== v2.2.4: ヘッダーロゴ・サイトタイトル修正 ========== */

/* サイトタイトルテキスト「FREYJA」を非表示（PC・モバイル共通）
   .site-title-container と span.site-title のテキストを隠す。
   ロゴ画像（site-logo-container > img）は残す。 */
.ct-header .site-title-container,
.ct-header .site-title,
.ct-header [data-id="logo"] .site-title {
  display: none !important;
}

/* モバイルヘッダー：ロゴとハンバーガーが重ならないようにflexレイアウト */
@media (max-width: 999.98px) {
  /* モバイルヘッダー行をflexで左右に分配 */
  .ct-header [data-device="mobile"] [data-row="middle"] .ct-container {
    display: flex !important;
    align-items: center !important;
    justify-content: space-between !important;
    padding-left: 16px !important;
    padding-right: 16px !important;
  }
  /* ロゴ：左寄せ・最大高さ40px */
  .ct-header [data-device="mobile"] .site-logo-container img,
  .ct-header [data-device="mobile"] .site-branding img,
  .ct-header [data-device="mobile"] [data-id="logo"] img {
    max-height: 40px !important;
    width: auto !important;
    display: block !important;
  }
  /* ロゴブロック（site-branding）をflexアイテムとして左側に */
  .ct-header [data-device="mobile"] [data-id="logo"] {
    flex: 0 0 auto !important;
    margin-right: auto !important;
  }
  /* ハンバーガートリガーを右端に固定 */
  .ct-header [data-device="mobile"] [data-id="trigger"],
  .ct-header [data-device="mobile"] .ct-header-trigger {
    flex: 0 0 auto !important;
    margin-left: auto !important;
    position: static !important;
  }
  /* モバイルロゴコンテナ（site-logo-container）を表示 */
  .ct-header [data-device="mobile"] .site-logo-container {
    display: block !important;
  }
}

/* ========== v2.2.5: voiceページ 2カラムグリッド ========== */
.grid-2{ grid-template-columns:repeat(2,1fr); }

/* ========== v2.2.6: contactメールフォーム（CF7） ========== */
.contact-form-shell{ max-width:640px; margin:36px auto 0; }
.contact-form-shell .wpcf7 label{
  display:block; font-size:14px; font-weight:700; color:var(--ink); margin:0 0 18px;
}
.contact-form-shell .wpcf7 input[type="text"],
.contact-form-shell .wpcf7 input[type="email"],
.contact-form-shell .wpcf7 input[type="tel"],
.contact-form-shell .wpcf7 select,
.contact-form-shell .wpcf7 textarea{
  display:block; width:100%; margin-top:6px; padding:12px;
  height:auto; line-height:1.6; /* Blocksyのheight:40px固定を解除（padding12pxと干渉し文字が見切れる） */
  background:#fff; border:1px solid var(--line); border-radius:0;
  font-family:var(--sans); font-size:15px; font-weight:400; color:var(--text);
  box-sizing:border-box;
}
.contact-form-shell .wpcf7 input:focus,
.contact-form-shell .wpcf7 select:focus,
.contact-form-shell .wpcf7 textarea:focus{
  outline:none; border-color:var(--blue); box-shadow:0 0 0 2px rgba(0,133,178,.15);
}
.contact-form-shell .wpcf7 textarea{ min-height:160px; resize:vertical; }
.contact-form-shell .wpcf7 p:has(> .wpcf7-submit){ text-align:center; }
.contact-form-shell .wpcf7 input[type="submit"]{
  float:none !important; /* Blocksy cf-7.min.css の float:left を解除（floatはdisplayをblock化し中央寄せを阻害） */
  display:inline-block;
  margin:8px 0 0; cursor:pointer;
  font-family:var(--sans); font-size:15px; font-weight:700; color:#fff;
  background:var(--blue); border:0; padding:16px 44px; border-radius:0; letter-spacing:.06em;
  box-shadow:0 12px 24px -10px rgba(0,133,178,.7); transition:.18s;
}
.contact-form-shell .wpcf7 input[type="submit"]:hover{ background:var(--blue-dark); transform:translateY(-2px); }
