/*
Theme Name: Mori Membership Theme
Theme URI: https://your-domain.com
Author: Mori
Description: 会員制サブスクリプションサイト用テーマ。3カラムレイアウト（salon.jp/nishino スタイル）。
Version: 1.2.0
Requires at least: 6.0
Tested up to: 6.5
Requires PHP: 8.0
License: GPL-2.0-or-later
Text Domain: mori-theme
*/

/* ===== Google Sans (英語フォント・self-hosted) ===== */
@font-face {
  font-family: 'Google Sans';
  font-style: normal;
  font-weight: 300 900;
  font-display: swap;
  src: url('assets/fonts/GoogleSans.woff') format('woff');
  /* Latin glyphのみ適用し、日本語は次のフォントにフォールバック */
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

/* ===== LINE Seed JP (数字フォント・self-hosted / 数字のみ適用) ===== */
@font-face {
  font-family: 'LINE Seed JP';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('assets/fonts/LINESeedJP-400.woff2') format('woff2');
  /* 数字(0-9)のみ適用し、その他は次のフォントにフォールバック */
  unicode-range: U+0030-0039;
}
@font-face {
  font-family: 'LINE Seed JP';
  font-style: normal;
  font-weight: 700 900;
  font-display: swap;
  src: url('assets/fonts/LINESeedJP-700.woff2') format('woff2');
  unicode-range: U+0030-0039;
}

/* ===== CSS Variables ===== */
:root {
  --color-bg:           #ffffff;
  --color-bg-secondary: #f0f0ee;
  --color-bg-card:      #ffffff;
  --color-border:       #e0e0de;
  --color-text:         #2a2a2a;
  --color-text-muted:   #888888;
  --color-text-light:   #aaaaaa;
  --color-accent:       #2d2d2d;
  --color-accent-hover: #111111;
  --color-accent-light: #f0f0ee;
  --color-black:        #1a1a1a;
  --color-danger:       #e74c3c;
  --color-success:      #27ae60;

  --font-sans: 'LINE Seed JP', 'Google Sans', 'Noto Sans JP', 'Hiragino Kaku Gothic ProN', 'Helvetica Neue', Arial, sans-serif;
  --font-serif: 'LINE Seed JP', 'Google Sans', 'Noto Serif JP', 'Hiragino Mincho ProN', serif;

  --radius:    4px;
  --radius-lg: 8px;
  --radius-xl: 12px;
  --transition: 0.2s ease;
  --shadow:    0 2px 12px rgba(0,0,0,0.06);
  --shadow-md: 0 4px 20px rgba(0,0,0,0.10);

  --header-h:   72px;
  --left-w:     220px;
  --right-w:    280px;
}

/* ===== Reset ===== */
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
html { scroll-behavior: smooth; }
body {
  background: var(--color-bg-secondary);
  color: var(--color-text);
  font-family: var(--font-sans);
  font-size: 15px;
  line-height: 1.8;
  -webkit-font-smoothing: antialiased;
}
a { color: var(--color-accent); text-decoration: none; transition: color var(--transition); }
a:hover { color: var(--color-accent-hover); }
img { max-width: 100%; height: auto; display: block; }
h1,h2,h3,h4,h5,h6 { font-weight: 700; line-height: 1.35; color: var(--color-black); font-family: var(--font-serif); }
p { margin-bottom: 1.1em; }
p:last-child { margin-bottom: 0; }

/* ===== HEADER ===== */
.site-header {
  position: fixed;
  top: 0; left: 0; right: 0;
  z-index: 200;
  height: var(--header-h);
  background: #2d2d2d;
  border-bottom: none;
  display: flex;
  align-items: center;
}
.header-inner {
  width: 100%;
  max-width: 1280px;
  margin: 0 auto;
  padding: 0 20px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
}
.site-logo {
  display: flex;
  align-items: center;
  gap: 6px;
  text-decoration: none;
  flex-shrink: 0;
  min-width: 0;
}
.site-logo-main {
  font-size: 22px;
  font-weight: 900;
  color: #ffffff;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  line-height: 1;
  white-space: nowrap;
}
.site-logo-sub {
  font-size: 20px;
  font-weight: 300;
  color: #ffffff;
  letter-spacing: 0.01em;
  line-height: 1;
  white-space: nowrap;
}
.site-logo-supported {
  font-size: 10px;
  font-weight: 400;
  color: #999999;
  letter-spacing: 0.1em;
  margin-left: 8px;
  display: flex;
  align-items: center;
  gap: 2px;
  border-left: 1px solid #555;
  padding-left: 10px;
  white-space: nowrap;
}
.site-logo:hover .site-logo-main { color: #dddddd; }
.header-right {
  display: flex;
  align-items: center;
  gap: 12px;
  font-size: 13px;
  flex-shrink: 0;
}
.header-logout-btn,
.header-login-btn {
  color: #ffffff !important;
  font-size: 13px;
  font-weight: 600;
  text-decoration: none;
  letter-spacing: 0.04em;
}
.header-logout-btn:hover,
.header-login-btn:hover { color: #cccccc !important; }
.btn-header-join {
  background: #ffffff;
  color: #2d2d2d !important;
  font-size: 12px;
  font-weight: 700;
  padding: 6px 16px;
  border-radius: 20px;
  text-decoration: none;
  letter-spacing: 0.04em;
  transition: background .2s;
  white-space: nowrap;
}
.btn-header-join:hover { background: #eeeeee; }

/* hamburger */
.hamburger {
  display: none;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 4px;
  cursor: pointer;
  padding: 7px 11px;
  background: rgba(255,255,255,.06);
  border: 1px solid rgba(255,255,255,.28);
  border-radius: 6px;
  flex-shrink: 0;
  transition: background .2s ease, border-color .2s ease, transform .12s ease;
  -webkit-tap-highlight-color: transparent;
}
.hamburger:hover,
.hamburger:focus-visible { background: rgba(255,255,255,.16); border-color: rgba(255,255,255,.5); }
.hamburger:active { transform: scale(.95); }
.hamburger-lines {
  display: flex; flex-direction: column; gap: 4px; align-items: center;
}
.hamburger-lines span {
  display: block; width: 22px; height: 2px;
  background: #ffffff; border-radius: 2px;
  transition: all .3s;
}
.hamburger-lines span:nth-child(2) { width: 16px; }
.hamburger:hover .hamburger-lines span:nth-child(2) { width: 22px; }
.hamburger-label {
  font-size: 9px; font-weight: 700; letter-spacing: .14em;
  line-height: 1; color: #ffffff; margin-top: 1px;
}

/* スマホ: 740px以下でハンバーガー表示 & ロゴ縮小 */
@media (max-width: 740px) {
  .hamburger { display: flex !important; }
  .header-login-btn,
  .header-logout-btn,
  .btn-header-join { display: none !important; }
  .site-logo-main { font-size: 16px; }
  .site-logo-sub  { font-size: 14px; }
  .site-logo-supported { display: none; }
  .header-inner { padding: 0 16px; }
}

/* ===== 3-COLUMN WRAPPER ===== */
.site-wrapper {
  display: flex;
  max-width: 1280px;
  margin: 0 auto;
  padding-top: var(--header-h);
  align-items: flex-start;
  min-height: 100vh;
}

/* ===== LEFT SIDEBAR ===== */
.sidebar-left {
  width: var(--left-w);
  flex-shrink: 0;
  position: sticky;
  top: var(--header-h);
  height: calc(100vh - var(--header-h));
  overflow-y: auto;
  background: #fff;
  border-right: 1px solid var(--color-border);
  display: flex;
  flex-direction: column;
}
.sidebar-left::-webkit-scrollbar { width: 4px; }
.sidebar-left::-webkit-scrollbar-thumb { background: var(--color-border); border-radius: 2px; }

/* サロン名・アイコンエリア */
.sl-brand {
  padding: 28px 20px 20px;
  border-bottom: 1px solid var(--color-border);
  text-align: center;
}
.sl-avatar {
  width: 72px; height: 72px;
  border-radius: 50%;
  overflow: hidden;
  margin: 0 auto 12px;
  background: var(--color-accent-light);
  border: 2px solid var(--color-border);
  display: flex; align-items: center; justify-content: center;
  font-size: 28px;
}
.sl-avatar img { width: 100%; height: 100%; object-fit: cover; }
.sl-name {
  font-size: 13px;
  font-weight: 700;
  color: var(--color-black);
  line-height: 1.4;
}
.sl-tagline {
  font-size: 11px;
  color: var(--color-text-muted);
  margin-top: 4px;
}

/* ページ内ナビ */
.sl-nav { padding: 16px 0; flex: 1; }
.sl-nav-label {
  font-size: 10px;
  letter-spacing: 0.15em;
  text-transform: uppercase;
  color: var(--color-text-light);
  font-weight: 700;
  padding: 8px 20px 4px;
}
.sl-nav a {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 9px 20px;
  font-size: 13px;
  color: var(--color-text-muted);
  transition: all var(--transition);
  border-left: 2px solid transparent;
}
.sl-nav a:hover,
.sl-nav a.is-active {
  color: var(--color-accent);
  background: var(--color-accent-light);
  border-left-color: var(--color-accent);
}
.sl-nav a .icon { font-size: 14px; flex-shrink: 0; }

/* ===== CENTER MAIN ===== */
.site-main {
  flex: 1;
  min-width: 0;
  background: var(--color-bg);
  border-right: 1px solid var(--color-border);
}

/* セクション共通 */
.lp-section {
  padding: 40px 36px;
  border-bottom: 1px solid var(--color-border);
}
.lp-section:last-child { border-bottom: none; }

.sec-label {
  font-size: 10px;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color: var(--color-accent);
  font-weight: 700;
  margin-bottom: 8px;
}
.sec-title {
  font-size: 22px;
  font-weight: 900;
  color: var(--color-black);
  margin-bottom: 6px;
}
.sec-sub {
  font-size: 13px;
  color: var(--color-text-muted);
  margin-bottom: 28px;
  line-height: 1.8;
}

/* ヒーロー */
.lp-hero { padding: 0; position: relative; }
.lp-hero-img {
  width: 100%;
  aspect-ratio: 16/7;
  object-fit: cover;
  display: block;
}
.lp-hero-placeholder {
  width: 100%;
  aspect-ratio: 16/7;
  background: linear-gradient(135deg, #f0f0ee 0%, #e8dfc8 100%);
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 12px;
}
.lp-hero-placeholder .icon { font-size: 56px; }
.lp-hero-placeholder h2 {
  font-size: 20px;
  color: var(--color-black);
}
.lp-hero-placeholder p {
  font-size: 13px;
  color: var(--color-text-muted);
  text-align: center;
  max-width: 320px;
  line-height: 1.8;
  margin: 0;
}
.lp-hero-caption {
  padding: 20px 28px;
  background: var(--color-bg-secondary);
  border-bottom: 1px solid var(--color-border);
  font-size: 13px;
  color: var(--color-text-muted);
  line-height: 1.8;
}

/* Enjoy Salon グリッド */
.enjoy-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 1px;
  background: var(--color-border);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-lg);
  overflow: hidden;
  margin-top: 4px;
}
.enjoy-card {
  background: var(--color-bg);
  padding: 24px 20px;
  transition: background var(--transition);
}
.enjoy-card:hover { background: var(--color-accent-light); }
.enjoy-icon { font-size: 28px; margin-bottom: 10px; }
.enjoy-card h3 { font-size: 14px; color: var(--color-black); margin-bottom: 6px; font-weight: 700; }
.enjoy-card p { font-size: 12px; color: var(--color-text-muted); line-height: 1.7; margin: 0; }

/* 記事一覧 */
.article-list { display: flex; flex-direction: column; gap: 0; }
.article-item {
  display: flex;
  gap: 16px;
  align-items: flex-start;
  padding: 16px 0;
  border-bottom: 1px solid var(--color-border);
  text-decoration: none;
  color: inherit;
  transition: opacity var(--transition);
}
.article-item:last-child { border-bottom: none; }
.article-item:hover { opacity: 0.8; }
.article-thumb {
  width: 90px;
  height: 60px;
  border-radius: var(--radius);
  overflow: hidden;
  flex-shrink: 0;
  background: var(--color-bg-secondary);
}
.article-thumb img { width: 100%; height: 100%; object-fit: cover; }
.article-thumb-placeholder {
  width: 100%; height: 100%;
  display: flex; align-items: center; justify-content: center;
  font-size: 20px;
  background: var(--color-accent-light);
}
.article-body { flex: 1; min-width: 0; }
.article-title {
  font-size: 14px;
  font-weight: 700;
  color: var(--color-black);
  line-height: 1.5;
  margin-bottom: 4px;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}
.article-meta {
  font-size: 11px;
  color: var(--color-text-light);
  display: flex;
  align-items: center;
  gap: 8px;
}
.article-badge {
  display: inline-block;
  padding: 1px 8px;
  font-size: 10px;
  font-weight: 700;
  border-radius: 20px;
  background: var(--color-accent-light);
  color: var(--color-accent);
  border: 1px solid rgba(45,45,45,0.2);
}

/* こんな方におすすめ */
.recommend-grid {
  display: grid;
  grid-template-columns: 1fr 1fr 1fr;
  gap: 12px;
  margin-top: 4px;
}
.recommend-card {
  background: var(--color-bg-secondary);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-lg);
  overflow: hidden;
  transition: box-shadow var(--transition);
}
.recommend-card:hover { box-shadow: var(--shadow); }
.recommend-img {
  height: 100px;
  background: linear-gradient(135deg, #f0e8d5, #e0d0b0);
  display: flex; align-items: center; justify-content: center;
  font-size: 36px;
}
.recommend-body { padding: 14px; }
.recommend-body h3 { font-size: 13px; font-weight: 700; color: var(--color-black); margin-bottom: 6px; line-height: 1.4; }
.recommend-body p { font-size: 11px; color: var(--color-text-muted); line-height: 1.7; margin: 0; }

/* メンバーの声 */
.voices-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; margin-top: 4px; }
.voice-card {
  background: var(--color-bg-secondary);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-lg);
  padding: 20px;
  position: relative;
}
.voice-card::before {
  content: '"';
  font-size: 52px;
  color: var(--color-accent);
  opacity: 0.15;
  position: absolute;
  top: 8px; left: 12px;
  line-height: 1;
  font-family: Georgia, serif;
}
.voice-text { font-size: 13px; line-height: 1.8; color: var(--color-text); margin-bottom: 14px; padding-top: 10px; }
.voice-author { display: flex; align-items: center; gap: 8px; }
.voice-avatar { width: 32px; height: 32px; border-radius: 50%; background: var(--color-accent-light); display: flex; align-items: center; justify-content: center; font-size: 14px; flex-shrink: 0; }
.voice-name { font-size: 12px; font-weight: 700; color: var(--color-black); }
.voice-role { font-size: 11px; color: var(--color-text-muted); }

/* 特典 */
.benefit-list { display: flex; flex-direction: column; gap: 0; }
.benefit-item {
  display: flex;
  gap: 16px;
  padding: 20px 0;
  border-bottom: 1px solid var(--color-border);
  align-items: flex-start;
}
.benefit-item:last-child { border-bottom: none; }
.benefit-num {
  width: 32px; height: 32px;
  border-radius: 50%;
  background: var(--color-accent);
  color: #fff;
  font-size: 13px;
  font-weight: 900;
  display: flex; align-items: center; justify-content: center;
  flex-shrink: 0;
  margin-top: 2px;
}
.benefit-body h3 { font-size: 15px; font-weight: 700; color: var(--color-black); margin-bottom: 4px; }
.benefit-body p { font-size: 13px; color: var(--color-text-muted); line-height: 1.8; margin: 0; }

/* 入会条件 */
.conditions-list { list-style: none; display: flex; flex-direction: column; gap: 10px; }
.conditions-list li {
  display: flex; gap: 10px;
  font-size: 13px; color: var(--color-text); line-height: 1.7;
}
.conditions-list li::before {
  content: '●';
  color: var(--color-accent);
  font-size: 8px;
  flex-shrink: 0;
  margin-top: 6px;
}

/* 料金 */
.pricing-wrap { max-width: 400px; }
.pricing-card {
  background: var(--color-bg-secondary);
  border: 2px solid var(--color-accent);
  border-radius: var(--radius-xl);
  padding: 28px;
  position: relative;
}
.pricing-badge {
  position: absolute; top: -11px; left: 20px;
  background: var(--color-accent); color: #fff;
  font-size: 11px; font-weight: 700;
  padding: 3px 14px; border-radius: 20px;
  letter-spacing: 0.05em;
}
.pricing-name { font-size: 12px; color: var(--color-text-muted); letter-spacing: 0.1em; text-transform: uppercase; margin-bottom: 12px; font-weight: 700; }
.pricing-price { font-size: 42px; font-weight: 900; color: var(--color-black); line-height: 1; }
.pricing-price span { font-size: 16px; font-weight: 400; color: var(--color-text-muted); }
.pricing-period { font-size: 12px; color: var(--color-text-muted); margin-bottom: 20px; }
.pricing-features { list-style: none; display: flex; flex-direction: column; gap: 8px; margin-bottom: 24px; }
.pricing-features li { font-size: 13px; color: var(--color-text-muted); display: flex; gap: 8px; align-items: flex-start; }
.pricing-features li::before { content: '✓'; color: var(--color-accent); font-weight: 700; flex-shrink: 0; }

/* 主催者 */
.organizer-wrap { display: flex; gap: 20px; align-items: flex-start; }
.organizer-img {
  width: 80px; height: 80px;
  border-radius: 50%; overflow: hidden;
  background: var(--color-accent-light);
  display: flex; align-items: center; justify-content: center;
  font-size: 32px;
  flex-shrink: 0;
  border: 2px solid var(--color-border);
}
.organizer-img img { width: 100%; height: 100%; object-fit: cover; }
.organizer-name { font-size: 17px; font-weight: 900; color: var(--color-black); margin-bottom: 2px; }
.organizer-title { font-size: 12px; color: var(--color-accent); font-weight: 700; margin-bottom: 10px; }
.organizer-bio { font-size: 13px; color: var(--color-text-muted); line-height: 1.8; }

/* イベント */
.event-list { display: flex; flex-direction: column; gap: 12px; }
.event-item {
  display: flex; gap: 16px; align-items: center;
  background: var(--color-bg-secondary);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-lg);
  padding: 16px 20px;
  text-decoration: none; color: inherit;
  transition: border-color var(--transition);
}
.event-item:hover { border-color: var(--color-accent); }
.event-date-box {
  text-align: center;
  background: var(--color-accent-light);
  border: 1px solid rgba(45,45,45,0.2);
  border-radius: var(--radius);
  padding: 8px 12px;
  flex-shrink: 0;
  min-width: 52px;
}
.event-day { font-size: 22px; font-weight: 900; color: var(--color-accent); line-height: 1; }
.event-mon { font-size: 10px; text-transform: uppercase; letter-spacing: 0.08em; color: var(--color-text-muted); }
.event-name { font-size: 14px; font-weight: 700; color: var(--color-black); margin-bottom: 3px; }
.event-info { font-size: 12px; color: var(--color-text-muted); }

/* ===== RIGHT SIDEBAR ===== */
.sidebar-right {
  width: var(--right-w);
  flex-shrink: 0;
  position: sticky;
  top: var(--header-h);
  height: calc(100vh - var(--header-h));
  overflow-y: auto;
  padding: 20px 16px;
  background: var(--color-bg-secondary);
  display: flex;
  flex-direction: column;
  gap: 12px;
}
.sidebar-right::-webkit-scrollbar { width: 4px; }
.sidebar-right::-webkit-scrollbar-thumb { background: var(--color-border); border-radius: 2px; }

/* 入会CTAバナー */
.sr-cta-card {
  background: #fff;
  border: 1px solid var(--color-border);
  border-radius: var(--radius-xl);
  padding: 20px;
  box-shadow: var(--shadow);
}
.sr-cta-header { text-align: center; margin-bottom: 14px; }
.sr-cta-avatar {
  width: 60px; height: 60px;
  border-radius: 50%;
  background: var(--color-accent-light);
  display: flex; align-items: center; justify-content: center;
  font-size: 24px;
  margin: 0 auto 8px;
  border: 2px solid var(--color-border);
  overflow: hidden;
}
.sr-cta-avatar img {
  width: 60px !important;
  height: 60px !important;
  border-radius: 50% !important;
  object-fit: cover;
  display: block;
}
.sr-cta-name { font-size: 13px; font-weight: 700; color: var(--color-black); }
.sr-cta-price {
  text-align: center;
  padding: 12px 0;
  border-top: 1px solid var(--color-border);
  border-bottom: 1px solid var(--color-border);
  margin-bottom: 14px;
}
.sr-cta-amount { font-size: 30px; font-weight: 900; color: var(--color-black); line-height: 1; }
.sr-cta-amount span { font-size: 14px; font-weight: 400; color: var(--color-text-muted); }
.sr-cta-note { font-size: 11px; color: var(--color-text-muted); margin-top: 4px; }
.sr-cta-features { list-style: none; display: flex; flex-direction: column; gap: 7px; margin-bottom: 16px; }
.sr-cta-features li { font-size: 12px; color: var(--color-text-muted); display: flex; gap: 7px; align-items: flex-start; line-height: 1.5; }
.sr-cta-features li::before { content: '✓'; color: var(--color-accent); font-weight: 700; flex-shrink: 0; }

/* ログインカード */
.sr-login-card {
  background: #fff;
  border: 1px solid var(--color-border);
  border-radius: var(--radius-xl);
  padding: 16px 20px;
  text-align: center;
}
.sr-login-card p { font-size: 12px; color: var(--color-text-muted); margin-bottom: 10px; }

/* 告知バナー */
.sr-banner-card {
  background: #fff;
  border: 1px solid var(--color-border);
  border-radius: var(--radius-xl);
  overflow: hidden;
}
.sr-banner-img {
  width: 100%; height: 130px;
  background: linear-gradient(135deg, var(--color-accent-light), #f0e0c0);
  display: flex; align-items: center; justify-content: center;
  font-size: 40px;
}
.sr-banner-body { padding: 14px 16px; }
.sr-banner-body h4 { font-size: 13px; font-weight: 700; color: var(--color-black); margin-bottom: 4px; }
.sr-banner-body p { font-size: 11px; color: var(--color-text-muted); margin: 0; line-height: 1.6; }

/* ===== BUTTONS ===== */
.btn {
  display: inline-block;
  padding: 11px 24px;
  font-size: 14px;
  font-weight: 700;
  letter-spacing: 0.05em;
  border-radius: var(--radius);
  transition: all var(--transition);
  cursor: pointer;
  border: none;
  text-align: center;
  text-decoration: none;
}
.btn-primary { background: var(--color-accent); color: #fff; }
.btn-primary:hover { background: var(--color-accent-hover); color: #fff; transform: translateY(-1px); }
.btn-outline { background: transparent; color: var(--color-accent); border: 1.5px solid var(--color-accent); }
.btn-outline:hover { background: var(--color-accent); color: #fff; }
.btn-dark { background: var(--color-black); color: #fff; }
.btn-dark:hover { background: #333; color: #fff; }
.btn-block { width: 100%; display: block; text-align: center; }
.btn-sm { padding: 8px 16px; font-size: 12px; }

/* ===== FOOTER ===== */
.site-footer {
  background: var(--color-black);
  color: rgba(255,255,255,0.5);
  padding: 48px 0 28px;
}
.footer-inner {
  max-width: 1280px;
  margin: 0 auto;
  padding: 0 20px;
}
.footer-grid {
  display: grid;
  grid-template-columns: 2fr 1fr 1fr 1fr;
  gap: 40px;
  margin-bottom: 40px;
}
.footer-brand h3 { color: #fff; font-size: 16px; margin-bottom: 10px; }
.footer-brand p { font-size: 12px; color: rgba(255,255,255,0.4); line-height: 1.8; }
.footer-col h4 { font-size: 10px; letter-spacing: 0.15em; text-transform: uppercase; color: rgba(255,255,255,0.3); margin-bottom: 14px; }
.footer-col ul { list-style: none; display: flex; flex-direction: column; gap: 9px; }
.footer-col ul li a { font-size: 13px; color: rgba(255,255,255,0.5); }
.footer-col ul li a:hover { color: #fff; }
.footer-bottom {
  border-top: 1px solid rgba(255,255,255,0.07);
  padding-top: 24px;
  display: flex; justify-content: space-between;
  font-size: 12px; color: rgba(255,255,255,0.25);
}

/* ===== DASHBOARD (members page) ===== */
.members-only-notice {
  background: var(--color-bg-secondary); border: 1px solid var(--color-border);
  border-radius: var(--radius-xl); padding: 48px 24px; text-align: center; margin: 32px;
}
.members-only-notice h3 { font-size: 20px; color: var(--color-black); margin-bottom: 10px; }
.members-only-notice p { color: var(--color-text-muted); margin-bottom: 24px; }
.members-only-notice .icon { font-size: 40px; display: block; margin-bottom: 16px; }

/* ===== PMPro ===== */
.pmpro_checkout input[type="submit"], .pmpro_checkout button[type="submit"] {
  background: var(--color-accent) !important; color: #fff !important;
  border: none !important; border-radius: var(--radius) !important;
  font-weight: 700 !important; padding: 12px 28px !important;
}

/* ===== bbPress ===== */
#bbpress-forums { background: transparent !important; font-family: var(--font-sans) !important; }
#bbpress-forums .bbp-forum-title a, #bbpress-forums .bbp-topic-title a { color: var(--color-black) !important; }
#bbpress-forums .bbp-forum-title a:hover, #bbpress-forums .bbp-topic-title a:hover { color: var(--color-accent) !important; }
#bbpress-forums button, #bbpress-forums input[type="submit"] {
  background: var(--color-accent) !important; color: #fff !important;
  border: none !important; border-radius: var(--radius) !important; font-weight: 700 !important;
}

/* ===== Entry Content ===== */
.entry-content h2 { font-size: 22px; margin: 2em 0 .8em; padding-bottom: 10px; border-bottom: 1px solid var(--color-border); }
.entry-content h3 { font-size: 18px; margin: 1.8em 0 .7em; }
.entry-content p { margin-bottom: 1.4em; }
.entry-content a { color: var(--color-accent); text-decoration: underline; text-underline-offset: 2px; }
.entry-content ul, .entry-content ol { padding-left: 1.4em; margin-bottom: 1.4em; }
.entry-content li { margin-bottom: .4em; }
.entry-content blockquote { border-left: 3px solid var(--color-accent); padding: 14px 20px; background: var(--color-accent-light); border-radius: 0 var(--radius) var(--radius) 0; margin: 1.8em 0; }
.entry-content pre { background: #f4f4f4; border: 1px solid var(--color-border); border-radius: var(--radius); padding: 16px; overflow-x: auto; font-size: 13px; }
.entry-content code { background: #f4f4f4; padding: 2px 5px; border-radius: 2px; font-size: 13px; }

/* ===== RESPONSIVE ===== */
@media (max-width: 1100px) {
  :root { --left-w: 180px; --right-w: 240px; }
}
@media (max-width: 960px) {
  .sidebar-left { display: none; }
  :root { --left-w: 0px; }
  .footer-grid { grid-template-columns: 1fr 1fr; }
}
@media (max-width: 720px) {
  :root { --right-w: 0px; }
  .sidebar-right { display: none; }
  .site-wrapper { flex-direction: column; }
  .site-main { width: 100%; border-right: none; }
  .lp-section { padding: 28px 20px; }
  .enjoy-grid { grid-template-columns: 1fr; }
  .voices-grid { grid-template-columns: 1fr; }
  .recommend-grid { grid-template-columns: 1fr; }
  .hamburger { display: flex; }
  .footer-grid { grid-template-columns: 1fr; }
}

/* ===== MOBILE DRAWER ===== */
.mobile-sidebar {
  display: none;
  position: fixed;
  top: 0; left: 0; right: 0; bottom: 0;
  z-index: 300;
}
.mobile-sidebar.is-open { display: block; }
.mobile-overlay {
  position: absolute; inset: 0;
  background: rgba(0,0,0,0.55);
  backdrop-filter: blur(2px);
}
.mobile-drawer {
  position: absolute;
  top: 0; right: 0; bottom: 0;
  width: min(300px, 85vw);
  background: #fff;
  overflow-y: auto;
  box-shadow: -4px 0 32px rgba(0,0,0,.18);
  display: flex;
  flex-direction: column;
  transform: translateX(100%);
  transition: transform .3s cubic-bezier(.4,0,.2,1);
}
.mobile-sidebar.is-open .mobile-drawer {
  transform: translateX(0);
}
.mobile-drawer-close {
  position: absolute; top: 16px; right: 16px;
  background: #f5f5f5; border: none; border-radius: 50%;
  width: 36px; height: 36px;
  display: flex; align-items: center; justify-content: center;
  cursor: pointer; color: #555; z-index: 1;
}
.mobile-drawer-close:hover { background: #eee; }

/* ドロワー ロゴ */
.mobile-drawer-logo {
  padding: 20px 20px 14px;
  border-bottom: 1px solid #f0f0f0;
  display: flex; align-items: center; gap: 10px;
}
.mobile-drawer-logo-img { height: 32px; width: auto; }
.mobile-drawer-logo-sub { font-size: 11px; letter-spacing: .12em; color: #999; }

/* ドロワー ユーザー情報 */
.mobile-drawer-user {
  padding: 16px 20px 12px;
  border-bottom: 1px solid #f0f0f0;
  background: #fafafa;
}
.mobile-drawer-user-name { font-size: 15px; font-weight: 700; color: var(--color-black); }
.mobile-drawer-user-label { font-size: 11px; color: var(--color-accent); font-weight: 600; margin-top: 2px; }

/* ドロワー ナビ */
.mobile-drawer-nav {
  flex: 1;
  padding: 8px 0;
}
.mobile-drawer-nav-label {
  font-size: 10px; letter-spacing: .14em; text-transform: uppercase;
  color: #bbb; font-weight: 700;
  padding: 14px 20px 6px;
}
.mobile-drawer-nav a {
  display: flex; align-items: center; gap: 12px;
  padding: 13px 20px;
  font-size: 14px; font-weight: 500; color: #333;
  text-decoration: none;
  border-bottom: 1px solid #f5f5f5;
  transition: background .15s, color .15s;
}
.mobile-drawer-nav a:hover { background: #fafafa; color: var(--color-black); }
.mobile-drawer-nav a svg { flex-shrink: 0; color: #999; }

/* ドロワー フッター */
.mobile-drawer-footer {
  padding: 16px 20px 32px;
  border-top: 1px solid #f0f0f0;
  display: flex; flex-direction: column; gap: 10px;
}
.mobile-drawer-btn {
  display: block; padding: 13px; border-radius: 10px;
  font-size: 14px; font-weight: 700; text-align: center;
  text-decoration: none; transition: opacity .18s;
}
.mobile-drawer-btn--fill { background: var(--color-accent); color: #fff; }
.mobile-drawer-btn--outline { background: transparent; border: 1.5px solid #ddd; color: #333; }
.mobile-drawer-btn:hover { opacity: .85; }
.mobile-drawer-logout {
  display: block; text-align: center; padding: 13px;
  font-size: 13px; color: #999; text-decoration: none;
  border: 1.5px solid #eee; border-radius: 10px;
}
.mobile-drawer-logout:hover { color: #333; border-color: #ccc; }

/* ===== EMOJI REPLACEMENT STYLES ===== */

/* nav-dot: ナビリンクの丸点 */
.nav-dot {
  display: inline-block;
  width: 6px; height: 6px;
  border-radius: 50%;
  background: var(--color-text-light);
  margin-right: 10px;
  flex-shrink: 0;
  vertical-align: middle;
  transition: background .2s;
}
.sl-nav a:hover .nav-dot,
.sl-nav a.is-active .nav-dot {
  background: var(--color-accent);
}

/* hero placeholder icon */
.hero-placeholder-icon {
  width: 64px; height: 64px;
  border-radius: 50%;
  background: var(--color-accent);
  margin: 0 auto 16px;
}

/* sl-avatar placeholder */
.sl-avatar-placeholder {
  width: 72px; height: 72px;
  border-radius: 50%;
  background: var(--color-bg-secondary);
  border: 2px solid var(--color-border);
}

/* sr-avatar placeholder */
.sr-avatar-placeholder {
  width: 60px; height: 60px;
  border-radius: 50%;
  background: var(--color-bg-secondary);
  border: 2px solid var(--color-border);
}

/* organizer img placeholder */
.organizer-img-placeholder {
  width: 80px; height: 80px;
  border-radius: 50%;
  background: var(--color-bg-secondary);
  border: 2px solid var(--color-border);
}

/* article thumb placeholder */
.article-thumb-placeholder {
  width: 100%; height: 100%;
  background: var(--color-bg-secondary);
  border-radius: var(--radius-md);
}

/* enjoy-icon-box: カラーブロック */
.enjoy-icon-box {
  width: 48px; height: 48px;
  border-radius: var(--radius-md);
  margin-bottom: 14px;
}
.enjoy-icon-1 { background: #2d2d2d; }
.enjoy-icon-2 { background: #5b8dd9; }
.enjoy-icon-3 { background: #e07b54; }
.enjoy-icon-4 { background: #6abf8a; }
.enjoy-icon-5 { background: #b07fd4; }
.enjoy-icon-6 { background: #e0b84a; }

/* recommend-img placeholder */
.recommend-img {
  width: 56px; height: 56px;
  border-radius: 50%;
  flex-shrink: 0;
}
.recommend-img-1 { background: #f0e6d3; }
.recommend-img-2 { background: #dce8f5; }
.recommend-img-3 { background: #d8f0e4; }

/* voice-avatar: イニシャルアバター */
.voice-avatar {
  width: 40px; height: 40px;
  border-radius: 50%;
  display: flex; align-items: center; justify-content: center;
  font-size: 16px; font-weight: 700; color: #fff;
  flex-shrink: 0;
}
.voice-avatar-1 { background: #2d2d2d; }
.voice-avatar-2 { background: #5b8dd9; }
.voice-avatar-3 { background: #e07b54; }
.voice-avatar-4 { background: #6abf8a; }

/* sr-banner-img placeholder */
.sr-banner-img {
  width: 100%; height: 80px;
  background: var(--color-bg-secondary);
  border-radius: var(--radius-md);
  margin-bottom: 12px;
}

/* sns-btn */
.sns-btn {
  display: inline-flex; align-items: center; justify-content: center;
  width: 36px; height: 36px;
  border-radius: 50%;
  background: var(--color-bg-secondary);
  border: 1px solid var(--color-border);
  font-size: 11px; font-weight: 700;
  color: var(--color-text-muted);
  text-decoration: none;
  transition: background .2s, color .2s;
}
.sns-btn:hover {
  background: var(--color-accent);
  color: #fff;
  border-color: var(--color-accent);
}

/* ===== REGISTER PAGE ===== */
.register-page-wrap {
  min-height: 100vh;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 40px 16px;
  background: var(--color-bg-secondary);
}
.register-card {
  background: #fff;
  border: 1px solid var(--color-border);
  border-radius: var(--radius-xl);
  padding: 40px 36px 32px;
  width: 100%;
  max-width: 420px;
  box-shadow: var(--shadow-md);
}
.register-logo {
  text-align: center;
  margin-bottom: 24px;
}
.register-logo img { max-height: 48px; }
.register-site-name {
  font-size: 20px;
  font-weight: 900;
  color: var(--color-black);
  letter-spacing: .05em;
}
.register-title {
  font-size: 20px;
  font-weight: 900;
  text-align: center;
  color: var(--color-black);
  margin: 0 0 6px;
}
.register-sub {
  font-size: 13px;
  color: var(--color-text-muted);
  text-align: center;
  margin: 0 0 28px;
}

/* ソーシャルボタン共通 */
.social-btns { display: flex; flex-direction: column; gap: 12px; }
.social-btn {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 13px 20px;
  border-radius: var(--radius-lg);
  font-size: 14px;
  font-weight: 700;
  cursor: pointer;
  text-decoration: none;
  transition: opacity .15s, transform .1s;
  border: none;
  width: 100%;
  box-sizing: border-box;
}
.social-btn:hover { opacity: .88; transform: translateY(-1px); }
.social-btn-icon {
  display: flex; align-items: center; justify-content: center;
  width: 24px; height: 24px; flex-shrink: 0;
}

/* Google */
.social-btn-google {
  background: #fff;
  border: 1.5px solid #dadce0;
  color: #3c4043;
}

/* LINE */
.social-btn-line {
  background: #06C755;
  color: #fff;
}

/* Email */
.social-btn-email {
  background: var(--color-bg-secondary);
  border: 1.5px solid var(--color-border);
  color: var(--color-text);
}

/* OR 区切り */
.register-divider {
  display: flex;
  align-items: center;
  gap: 12px;
  margin: 20px 0;
  color: var(--color-text-light);
  font-size: 12px;
}
.register-divider::before,
.register-divider::after {
  content: '';
  flex: 1;
  height: 1px;
  background: var(--color-border);
}

/* フッター */
.register-footer {
  text-align: center;
  margin-top: 24px;
  font-size: 13px;
  color: var(--color-text-muted);
}
.register-footer a {
  color: var(--color-accent);
  font-weight: 700;
  margin-left: 4px;
}
.register-terms {
  text-align: center;
  font-size: 11px;
  color: var(--color-text-light);
  margin-top: 16px;
  line-height: 1.6;
}
.register-terms a { color: var(--color-accent); }

/* NSL ショートコード上書き */
.nsl-container { display: flex; flex-direction: column; gap: 12px; }
.nsl-container .nsl-button {
  border-radius: var(--radius-lg) !important;
  font-size: 14px !important;
  font-weight: 700 !important;
  padding: 13px 20px !important;
  height: auto !important;
}

/* ===== LOGIN FORM ===== */
.login-form { margin-top: 4px; }
.login-field {
  display: flex; flex-direction: column; gap: 6px;
  margin-bottom: 14px;
}
.login-field label {
  font-size: 12px; font-weight: 700;
  color: var(--color-text-muted);
  letter-spacing: .05em;
}
.login-field input {
  padding: 11px 14px;
  border: 1.5px solid var(--color-border);
  border-radius: var(--radius-md);
  font-size: 14px;
  color: var(--color-black);
  outline: none;
  transition: border-color .2s;
  width: 100%;
  box-sizing: border-box;
}
.login-field input:focus { border-color: var(--color-accent); }
.login-remember {
  font-size: 12px; color: var(--color-text-muted);
  margin-bottom: 4px;
  display: flex; align-items: center; gap: 6px;
}
.login-remember input { width: auto; }
.login-error {
  background: #fff0f0;
  border: 1px solid #fca5a5;
  border-radius: var(--radius-md);
  padding: 10px 14px;
  font-size: 13px;
  color: #dc2626;
  margin-bottom: 10px;
}

/* ===== PMPRO CHECKOUT STYLING ===== */
.pmpro_checkout_wrap,
#pmpro_form {
  max-width: 560px;
  margin: 0 auto;
  font-family: inherit;
}

/* セクションヘッダー */
.pmpro_checkout h3,
.pmpro_checkout_section_title {
  font-size: 13px !important;
  font-weight: 700 !important;
  letter-spacing: .12em !important;
  text-transform: uppercase !important;
  color: var(--color-text-light) !important;
  margin: 0 0 16px !important;
  padding: 0 !important;
  border: none !important;
}

/* セクションブロック */
.pmpro_checkout_section,
.pmpro_section {
  background: #fff;
  border: 1px solid var(--color-border);
  border-radius: 16px;
  padding: 28px 28px;
  margin-bottom: 16px !important;
}

/* Membership Information セクション */
.pmpro_checkout .pmpro_section:first-child,
#pmpro_level_cost {
  background: var(--color-bg-secondary);
  border: 1px solid var(--color-border);
  border-radius: 16px;
  padding: 24px 28px;
  margin-bottom: 16px;
  font-size: 14px;
  color: var(--color-text-muted);
  line-height: 1.7;
}

/* フォームラベル */
.pmpro_checkout label,
#pmpro_form label {
  display: block;
  font-size: 12px !important;
  font-weight: 700 !important;
  color: var(--color-text-muted) !important;
  letter-spacing: .05em;
  margin-bottom: 6px !important;
}

/* 入力フィールド */
.pmpro_checkout input[type="text"],
.pmpro_checkout input[type="email"],
.pmpro_checkout input[type="password"],
.pmpro_checkout input[type="tel"],
.pmpro_checkout select,
#pmpro_form input[type="text"],
#pmpro_form input[type="email"],
#pmpro_form input[type="password"],
#pmpro_form select {
  width: 100% !important;
  padding: 11px 14px !important;
  border: 1.5px solid var(--color-border) !important;
  border-radius: 8px !important;
  font-size: 14px !important;
  color: var(--color-black) !important;
  background: #fff !important;
  box-sizing: border-box !important;
  transition: border-color .2s;
  outline: none !important;
  box-shadow: none !important;
}
.pmpro_checkout input:focus,
#pmpro_form input:focus {
  border-color: var(--color-accent) !important;
}

/* フィールドグループ（2カラム） */
.pmpro_cols-2 {
  display: grid !important;
  grid-template-columns: 1fr 1fr !important;
  gap: 12px !important;
}

/* Submit ボタン */
#pmpro_submit_span input[type="submit"],
.pmpro_submit input[type="submit"],
#pmpro_form input[type="submit"] {
  width: 100% !important;
  background: var(--color-accent) !important;
  color: #fff !important;
  border: none !important;
  border-radius: 12px !important;
  padding: 15px !important;
  font-size: 15px !important;
  font-weight: 700 !important;
  cursor: pointer !important;
  transition: opacity .2s !important;
  letter-spacing: .05em;
}
#pmpro_submit_span input[type="submit"]:hover {
  opacity: .88 !important;
}

/* すでに会員の方 */
#pmpro_account_fields .pmpro_login_link,
.pmpro_already_a_member {
  font-size: 13px;
  color: var(--color-text-muted);
  text-align: center;
  margin-top: 16px;
}
.pmpro_already_a_member a,
#pmpro_account_fields a {
  color: var(--color-accent);
  font-weight: 700;
}

/* エラーメッセージ */
.pmpro_error,
.pmpro_message {
  border-radius: 8px !important;
  padding: 12px 16px !important;
  font-size: 13px !important;
  margin-bottom: 16px !important;
}
.pmpro_error { background: #fff0f0; border: 1px solid #fca5a5; color: #dc2626; }
.pmpro_message { background: #f0fdf4; border: 1px solid #86efac; color: #16a34a; }

/* チェックアウトページラッパー */
.pmpro-checkout-page-wrap {
  min-height: 60vh;
  padding: 60px 16px 80px;
  background: var(--color-bg-secondary);
}
.pmpro-checkout-inner {
  max-width: 580px;
  margin: 0 auto;
}
.pmpro-checkout-title {
  text-align: center;
  font-size: 22px;
  font-weight: 900;
  color: var(--color-black);
  margin-bottom: 32px;
}

/* ================================================
   PMPro CHECKOUT — 全面UI改善
   ================================================ */

/* ── ラッパー ── */
.pmpro-checkout-page-wrap {
    min-height: 70vh;
    padding: 56px 16px 80px;
    background: var(--color-bg-secondary);
}
.pmpro-checkout-inner {
    max-width: 560px;
    margin: 0 auto;
}
.pmpro-checkout-title {
    text-align: center;
    font-size: 24px;
    font-weight: 900;
    color: var(--color-black);
    margin-bottom: 8px;
    letter-spacing: -.01em;
}
.pmpro-checkout-subtitle {
    text-align: center;
    font-size: 13px;
    color: var(--color-text-muted);
    margin-bottom: 32px;
}

/* ── カードセクション ── */
#pmpro_form .pmpro_checkout,
#pmpro_form .pmpro_section,
.pmpro_checkout_div,
table.pmpro_checkout {
    background: #fff !important;
    border: 1px solid var(--color-border) !important;
    border-radius: 16px !important;
    padding: 28px !important;
    margin-bottom: 16px !important;
    box-shadow: none !important;
    width: 100% !important;
    border-collapse: separate !important;
}

/* ── セクション見出し ── */
#pmpro_form h3,
.pmpro_checkout h3,
.pmpro_section_title,
#pmpro_form thead th {
    font-size: 11px !important;
    font-weight: 700 !important;
    letter-spacing: .14em !important;
    text-transform: uppercase !important;
    color: var(--color-text-light) !important;
    margin: 0 0 20px !important;
    padding: 0 0 12px !important;
    border: none !important;
    border-bottom: 1px solid var(--color-border) !important;
    background: none !important;
    display: block !important;
    width: 100% !important;
}

/* ── プラン情報 ── */
#pmpro_level_cost,
.pmpro_level_cost {
    background: linear-gradient(135deg, #fffbf4 0%, #fff8ec 100%) !important;
    border: 1.5px solid #f0d9a8 !important;
    border-radius: 12px !important;
    padding: 20px 24px !important;
    margin-bottom: 16px !important;
    font-size: 14px !important;
    color: var(--color-text-muted) !important;
    line-height: 1.7 !important;
}
#pmpro_level_cost strong,
.pmpro_level_cost strong {
    color: var(--color-accent) !important;
    font-size: 18px !important;
    font-weight: 900 !important;
}

/* ── ラベル ── */
#pmpro_form label,
.pmpro_checkout label {
    display: block !important;
    font-size: 12px !important;
    font-weight: 700 !important;
    color: var(--color-text-muted) !important;
    letter-spacing: .04em !important;
    margin-bottom: 6px !important;
    margin-top: 16px !important;
}
#pmpro_form label:first-child,
.pmpro_checkout label:first-child { margin-top: 0 !important; }

/* ── 入力フィールド ── */
#pmpro_form input[type="text"],
#pmpro_form input[type="email"],
#pmpro_form input[type="password"],
#pmpro_form input[type="tel"],
#pmpro_form input[type="number"],
#pmpro_form select,
.pmpro_checkout input[type="text"],
.pmpro_checkout input[type="email"],
.pmpro_checkout input[type="password"],
.pmpro_checkout select {
    width: 100% !important;
    padding: 12px 14px !important;
    border: 1.5px solid var(--color-border) !important;
    border-radius: 10px !important;
    font-size: 14px !important;
    color: var(--color-black) !important;
    background: #fafafa !important;
    box-sizing: border-box !important;
    transition: border-color .18s, box-shadow .18s !important;
    outline: none !important;
    box-shadow: none !important;
    -webkit-appearance: none !important;
}
#pmpro_form input:focus,
#pmpro_form select:focus,
.pmpro_checkout input:focus {
    border-color: var(--color-accent) !important;
    background: #fff !important;
    box-shadow: 0 0 0 3px rgba(45,45,45,.12) !important;
}

/* ── Show Password リンク ── */
.pmpro_show_password,
a.pmpro_show_password {
    font-size: 11px !important;
    color: var(--color-text-light) !important;
    float: right !important;
    margin-top: -24px !important;
    text-decoration: none !important;
    padding: 2px 6px !important;
}

/* ── 2カラムグリッド（Exp/CVV等） ── */
.pmpro_cols-2,
#pmpro_form .pmpro_card_expiry_cvc {
    display: grid !important;
    grid-template-columns: 1fr 1fr !important;
    gap: 12px !important;
}

/* ── Stripe カード入力 ── */
.pmpro-stripe-element-wrap,
#pmpro_stripe_card_element,
.StripeElement {
    border: 1.5px solid var(--color-border) !important;
    border-radius: 10px !important;
    padding: 13px 14px !important;
    background: #fafafa !important;
    font-size: 14px !important;
    transition: border-color .18s !important;
}
.StripeElement--focus {
    border-color: var(--color-accent) !important;
    box-shadow: 0 0 0 3px rgba(45,45,45,.12) !important;
}
.StripeElement--invalid {
    border-color: #f87171 !important;
}

/* ── 送信ボタン ── */
#pmpro_submit_span input[type="submit"],
.pmpro_btn-submit,
#pmpro_form input[type="submit"] {
    width: 100% !important;
    background: var(--color-accent) !important;
    color: #fff !important;
    border: none !important;
    border-radius: 12px !important;
    padding: 16px !important;
    font-size: 16px !important;
    font-weight: 900 !important;
    cursor: pointer !important;
    transition: opacity .2s, transform .1s !important;
    letter-spacing: .04em !important;
    margin-top: 8px !important;
    box-shadow: 0 4px 16px rgba(45,45,45,.28) !important;
}
#pmpro_submit_span input[type="submit"]:hover,
#pmpro_form input[type="submit"]:hover {
    opacity: .88 !important;
    transform: translateY(-1px) !important;
}

/* ── ログインリンク ── */
#pmpro_account_fields .pmpro_login_link,
.pmpro_already_a_member,
#pmpro_form .pmpro_login_link {
    text-align: center !important;
    font-size: 13px !important;
    color: var(--color-text-muted) !important;
    margin-top: 20px !important;
    padding-top: 20px !important;
    border-top: 1px solid var(--color-border) !important;
    display: block !important;
}
.pmpro_already_a_member a,
#pmpro_account_fields a,
#pmpro_form .pmpro_login_link a {
    color: var(--color-accent) !important;
    font-weight: 700 !important;
}

/* ── エラー・成功メッセージ ── */
.pmpro_error, .pmpro-error, div.pmpro_message.pmpro_error {
    background: #fff0f0 !important;
    border: 1px solid #fca5a5 !important;
    color: #dc2626 !important;
    border-radius: 10px !important;
    padding: 14px 18px !important;
    font-size: 13px !important;
    margin-bottom: 16px !important;
}
.pmpro_message, div.pmpro_message {
    background: #f0fdf4 !important;
    border: 1px solid #86efac !important;
    color: #16a34a !important;
    border-radius: 10px !important;
    padding: 14px 18px !important;
    font-size: 13px !important;
    margin-bottom: 16px !important;
}

/* ── テーブルセル余白リセット ── */
#pmpro_form td,
#pmpro_form th,
.pmpro_checkout td,
.pmpro_checkout th {
    padding: 4px 0 !important;
    border: none !important;
    background: none !important;
    vertical-align: top !important;
}

/* ── レスポンシブ ── */
@media (max-width: 540px) {
    .pmpro-checkout-inner { padding: 0; }
    #pmpro_form .pmpro_section,
    table.pmpro_checkout { padding: 20px !important; border-radius: 12px !important; }
    .pmpro_cols-2 { grid-template-columns: 1fr !important; }
}

/* ================================================
   CHECKOUT UI 修正 v2
   ================================================ */

/* ── ヘッダーとの余白修正 ── */
.pmpro-checkout-page-wrap {
    padding-top: 80px !important;
}

/* ── プラン情報カード：全体を再設計 ── */
#pmpro_form table.pmpro_checkout:first-of-type,
.pmpro_checkout_div:first-child,
#pmpro_level_cost_div,
div#pmpro_level_cost_div {
    background: #fff !important;
    border: 1px solid var(--color-border) !important;
    border-radius: 16px !important;
    padding: 0 !important;
    overflow: hidden !important;
    margin-bottom: 16px !important;
}

/* プラン情報の中のテキストを非表示にしてCSSで再描画 */
#pmpro_level_cost {
    display: none !important;
}

/* "You have selected the..." & "月額会員プラン" の段落 */
#pmpro_level_cost_div p,
.pmpro_checkout_level_description {
    padding: 0 !important;
    margin: 0 !important;
    background: none !important;
    border: none !important;
}

/* プラン情報セクションを横並びバッジデザインに */
#pmpro_form .pmpro_section:has(h3:first-child),
.pmpro_checkout_section_membership_info {
    padding: 0 !important;
}

/* プラン情報ボックスをモダンカードに */
#pmpro_level_cost_div {
    background: #fff !important;
    border: 1px solid var(--color-border) !important;
    border-radius: 16px !important;
    overflow: hidden !important;
    margin-bottom: 16px !important;
}

/* プランバナー上部 */
#pmpro_level_cost_div::before {
    content: 'プラン情報';
    display: block;
    font-size: 11px;
    font-weight: 700;
    letter-spacing: .14em;
    text-transform: uppercase;
    color: var(--color-text-light);
    padding: 20px 24px 0;
}

/* プラン名テキスト */
#pmpro_level_cost_div p:first-of-type {
    font-size: 13px !important;
    color: var(--color-text-muted) !important;
    padding: 8px 24px 0 !important;
    margin: 0 !important;
}
#pmpro_level_cost_div p:first-of-type strong {
    color: var(--color-black) !important;
    font-size: 15px !important;
}

/* 料金バッジ */
#pmpro_level_cost_div #pmpro_level_cost {
    display: flex !important;
    align-items: center !important;
    justify-content: space-between !important;
    background: linear-gradient(135deg, #1a1a1a 0%, #2a2a2a 100%) !important;
    border-radius: 0 0 16px 16px !important;
    padding: 20px 24px !important;
    margin: 16px 0 0 !important;
    border: none !important;
}
#pmpro_level_cost_div #pmpro_level_cost::before {
    content: '月額料金';
    font-size: 11px;
    letter-spacing: .12em;
    text-transform: uppercase;
    color: rgba(255,255,255,.5);
    font-weight: 700;
}
#pmpro_level_cost_div #pmpro_level_cost * {
    color: #fff !important;
}
#pmpro_level_cost_div #pmpro_level_cost strong {
    font-size: 26px !important;
    font-weight: 900 !important;
    color: var(--color-accent) !important;
    letter-spacing: -.02em !important;
}

/* ── 外側白カードの余白を詰める ── */
#pmpro_form .pmpro_section,
table.pmpro_checkout {
    padding: 24px !important;
}

/* ── h3 を上部にぴったり ── */
#pmpro_form h3,
.pmpro_checkout h3 {
    margin-top: 0 !important;
}

/* ================================================
   CHECKOUT FORM v3 — 追加フィールド & 2カラム修正
   ================================================ */

/* ── フォーム全体をflexboxで縦積みに強制 ── */
#pmpro_form .pmpro_checkout,
#pmpro_form table.pmpro_checkout,
#pmpro_form .pmpro_section {
    display: block !important;
}
#pmpro_form tbody,
#pmpro_form tr,
#pmpro_form td {
    display: block !important;
    width: 100% !important;
}

/* Show Password リンクを右上に絶対配置 */
.pmpro_show_password,
a.pmpro_show_password {
    position: absolute !important;
    top: 0 !important;
    right: 0 !important;
    margin: 0 !important;
    float: none !important;
    font-size: 11px !important;
    color: var(--color-text-light) !important;
    text-decoration: none !important;
    padding: 2px 4px !important;
    z-index: 1 !important;
}
/* パスワードラベルをrelativeに */
#pmpro_form label[for="password"],
#pmpro_form label[for="password2"],
#pmpro_form label[for="bemail"],
#pmpro_form label[for="bconfirmemail"] {
    position: relative !important;
}

/* 2カラムGrid（パスワード・メール）*/
#pmpro_user_fields_table tr:has(#password),
#pmpro_user_fields_table tr:has(#password2) {
    display: inline-block !important;
    width: 48% !important;
    vertical-align: top !important;
    margin-right: 2% !important;
}

/* ── 追加フィールドセクション ── */
.mori-extra-fields {
    background: #fff;
    border: 1px solid var(--color-border);
    border-radius: 16px;
    padding: 24px;
    margin-bottom: 16px;
}

.mori-fields-heading {
    font-size: 11px !important;
    font-weight: 700 !important;
    letter-spacing: .14em !important;
    text-transform: uppercase !important;
    color: var(--color-text-light) !important;
    margin: 0 0 20px !important;
    padding: 0 0 12px !important;
    border-bottom: 1px solid var(--color-border) !important;
    display: block !important;
}

/* フィールドラップ */
.mori-field-wrap {
    margin-bottom: 16px;
}
.mori-field-wrap:last-child { margin-bottom: 0; }

.mori-field-wrap label {
    display: flex !important;
    align-items: center !important;
    gap: 6px !important;
    font-size: 12px !important;
    font-weight: 700 !important;
    color: var(--color-text-muted) !important;
    margin-bottom: 7px !important;
    margin-top: 0 !important;
}

/* 必須バッジ */
.req-badge {
    display: inline-block;
    background: #dc2626;
    color: #fff;
    font-size: 10px;
    font-weight: 700;
    padding: 1px 6px;
    border-radius: 4px;
    letter-spacing: .04em;
    line-height: 1.6;
}

/* 入力フィールド統一 */
.mori-field-wrap input[type="text"],
.mori-field-wrap input[type="tel"],
.mori-field-wrap select {
    width: 100%;
    padding: 12px 14px;
    border: 1.5px solid var(--color-border);
    border-radius: 10px;
    font-size: 14px;
    color: var(--color-black);
    background: #fafafa;
    box-sizing: border-box;
    transition: border-color .18s, box-shadow .18s;
    outline: none;
    -webkit-appearance: none;
    appearance: none;
}
.mori-field-wrap input:focus,
.mori-field-wrap select:focus {
    border-color: var(--color-accent);
    background: #fff;
    box-shadow: 0 0 0 3px rgba(45,45,45,.12);
}

/* セレクト矢印 */
.mori-field-wrap select {
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1l5 5 5-5' stroke='%23999' stroke-width='1.5' fill='none' stroke-linecap='round'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: right 14px center;
    padding-right: 38px;
}

/* 2カラムGrid */
.mori-grid-2 {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 12px;
}

/* 生年月日 3分割 */
.mori-birthday-wrap {
    display: grid;
    grid-template-columns: 2fr 1fr 1fr;
    gap: 10px;
}
.mori-birthday-wrap select {
    width: 100%;
    padding: 12px 10px;
    border: 1.5px solid var(--color-border);
    border-radius: 10px;
    font-size: 14px;
    color: var(--color-black);
    background: #fafafa;
    box-sizing: border-box;
    outline: none;
    -webkit-appearance: none;
    appearance: none;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1l5 5 5-5' stroke='%23999' stroke-width='1.5' fill='none' stroke-linecap='round'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: right 10px center;
    padding-right: 28px;
    cursor: pointer;
    transition: border-color .18s;
}
.mori-birthday-wrap select:focus {
    border-color: var(--color-accent);
    box-shadow: 0 0 0 3px rgba(45,45,45,.12);
}

/* 利用規約チェック */
.mori-terms-wrap {
    background: var(--color-bg-secondary);
    border: 1px solid var(--color-border);
    border-radius: 10px;
    padding: 16px;
    margin-top: 20px;
}
.mori-terms-label {
    display: flex !important;
    align-items: flex-start !important;
    gap: 10px !important;
    cursor: pointer !important;
    font-size: 13px !important;
    font-weight: 500 !important;
    color: var(--color-text-muted) !important;
    line-height: 1.6 !important;
    margin: 0 !important;
}
.mori-terms-label input[type="checkbox"] {
    width: 18px !important;
    height: 18px !important;
    min-width: 18px !important;
    border: 1.5px solid var(--color-border) !important;
    border-radius: 4px !important;
    margin-top: 1px !important;
    cursor: pointer !important;
    accent-color: var(--color-accent) !important;
}

/* ── レスポンシブ ── */
@media (max-width: 480px) {
    .mori-grid-2       { grid-template-columns: 1fr; }
    .mori-birthday-wrap { grid-template-columns: 1fr 1fr 1fr; }
}

/* ================================================
   CHECKOUT v4 — アカウント情報UI強化
   ================================================ */

/* ── 全フィールドを確実に縦並び全幅に ── */
#pmpro_user_fields_table,
#pmpro_user_fields_table tbody,
#pmpro_user_fields_table tr,
#pmpro_user_fields_table td {
    display: block !important;
    width: 100% !important;
    padding: 0 !important;
    border: none !important;
    box-sizing: border-box !important;
}
/* 2カラムCSS（前回のもの）を完全無効化 */
#pmpro_user_fields_table tr:has(#password),
#pmpro_user_fields_table tr:has(#password2) {
    display: block !important;
    width: 100% !important;
    margin: 0 !important;
}

/* ── フィールド間の余白 ── */
#pmpro_user_fields_table tr { margin-bottom: 18px !important; }
#pmpro_user_fields_table tr:last-child { margin-bottom: 0 !important; }

/* ── ヒントテキスト ── */
.mori-field-hint {
    font-size: 12px;
    color: var(--color-text-muted);
    margin: 6px 0 0;
    line-height: 1.6;
}
.mori-field-hint-inline {
    font-size: 11px;
    color: var(--color-text-light);
    font-weight: 400;
    margin-left: 6px;
}

/* ── パスワード自動生成ボタン ── */
.mori-pw-gen-wrap {
    display: flex;
    gap: 8px;
    margin-top: 8px;
}
.mori-pw-gen-btn {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    background: var(--color-bg-secondary);
    border: 1.5px solid var(--color-border);
    border-radius: 8px;
    padding: 8px 14px;
    font-size: 12px;
    font-weight: 700;
    color: var(--color-text-muted);
    cursor: pointer;
    transition: border-color .18s, color .18s;
}
.mori-pw-gen-btn:hover {
    border-color: var(--color-accent);
    color: var(--color-accent);
}
.mori-pw-copy-btn {
    display: inline-flex;
    align-items: center;
    background: #f0fdf4;
    border: 1.5px solid #86efac;
    border-radius: 8px;
    padding: 8px 14px;
    font-size: 12px;
    font-weight: 700;
    color: #16a34a;
    cursor: pointer;
    transition: opacity .18s;
}
.mori-pw-copy-btn:hover { opacity: .8; }

/* ── パスワード強度メーター ── */
.mori-pw-meter {
    margin-top: 8px;
    display: flex;
    align-items: center;
    gap: 10px;
}
.mori-pw-meter-bar {
    flex: 1;
    height: 4px;
    background: var(--color-border);
    border-radius: 99px;
    overflow: hidden;
}
.mori-pw-bar {
    height: 100%;
    width: 0;
    border-radius: 99px;
    transition: width .3s, background .3s;
}
.mori-pw-meter-label {
    font-size: 11px;
    font-weight: 700;
    min-width: 60px;
    text-align: right;
}

/* ── サブアドレスリンク ── */
.mori-sub-addr-hint { font-size: 12px; }
.mori-sub-use-link {
    color: var(--color-accent);
    font-weight: 700;
    text-decoration: underline;
    cursor: pointer;
}

/* ── Log in here を上書き（CSSアプローチ） ── */
#pmpro_account_fields .pmpro_login_link a,
.pmpro_already_a_member a {
    color: var(--color-accent) !important;
}

/* ================================================
   CHECKOUT v5 — テーブル2カラム根本修正
   ================================================ */

/* テーブル全体をflex縦積みに強制 */
#pmpro_user_fields_table {
    display: flex !important;
    flex-direction: column !important;
    gap: 18px !important;
    width: 100% !important;
}
/* tr を透明化してtdが直接flexアイテムになるように */
#pmpro_user_fields_table tr {
    display: contents !important;
}
/* td を全幅ブロックに */
#pmpro_user_fields_table td {
    display: block !important;
    width: 100% !important;
    min-width: 0 !important;
    padding: 0 !important;
    box-sizing: border-box !important;
}

/* label も全幅に */
#pmpro_user_fields_table label {
    display: block !important;
    width: 100% !important;
}

/* input / select も全幅に */
#pmpro_user_fields_table input[type="text"],
#pmpro_user_fields_table input[type="email"],
#pmpro_user_fields_table input[type="password"],
#pmpro_user_fields_table select {
    width: 100% !important;
    box-sizing: border-box !important;
}

/* 自動生成ボタンを横並び・改行しない */
.mori-pw-gen-wrap {
    display: flex !important;
    flex-direction: row !important;
    gap: 8px !important;
    width: 100% !important;
    margin-top: 8px !important;
    flex-wrap: nowrap !important;
}
.mori-pw-gen-btn {
    white-space: nowrap !important;
    width: auto !important;
    min-width: 0 !important;
    flex-shrink: 0 !important;
}
.mori-pw-copy-btn {
    white-space: nowrap !important;
    flex-shrink: 0 !important;
}

/* サブアドレスヒント */
.mori-sub-hint {
    margin-top: 6px !important;
}
.mori-sub-link {
    color: var(--color-accent) !important;
    font-weight: 700 !important;
    text-decoration: underline !important;
    cursor: pointer !important;
}

/* ================================================
   CHECKOUT v6 — div置換後の縦並び + 目アイコン
   ================================================ */

/* テーブル置換後のラッパー */
.mori-fields-wrap {
    display: flex !important;
    flex-direction: column !important;
    gap: 20px !important;
    width: 100% !important;
}
.mori-field-block {
    display: block !important;
    width: 100% !important;
    box-sizing: border-box !important;
}
.mori-field-block label {
    display: block !important;
    width: 100% !important;
    margin-bottom: 6px !important;
}
.mori-field-block input[type="text"],
.mori-field-block input[type="email"],
.mori-field-block input[type="password"],
.mori-field-block select {
    width: 100% !important;
    box-sizing: border-box !important;
}

/* 目アイコン付きパスワードラッパー */
.mori-pw-input-wrap {
    position: relative !important;
    display: block !important;
    width: 100% !important;
}
.mori-pw-input-wrap input[type="password"],
.mori-pw-input-wrap input[type="text"] {
    width: 100% !important;
    padding-right: 44px !important;
    box-sizing: border-box !important;
}
.mori-pw-eye {
    position: absolute !important;
    right: 12px !important;
    top: 50% !important;
    transform: translateY(-50%) !important;
    background: none !important;
    border: none !important;
    cursor: pointer !important;
    padding: 0 !important;
    color: #888 !important;
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    line-height: 1 !important;
}
.mori-pw-eye:hover { color: #333 !important; }

/* 既存のPMPro「Hide password」テキストを非表示 */
.pmpro_hide_password,
#pmpro_checkout_hide_password {
    display: none !important;
}

/* 自動生成ボタン列 */
.mori-pw-gen-wrap {
    display: flex !important;
    flex-direction: row !important;
    gap: 8px !important;
    width: 100% !important;
    margin-top: 8px !important;
    flex-wrap: nowrap !important;
}
.mori-pw-gen-btn,
.mori-pw-copy-btn {
    white-space: nowrap !important;
    flex-shrink: 0 !important;
    width: auto !important;
}

/* ================================================
   CHECKOUT v7 — pmpro_cols-2 縦一列 + 目アイコン整形
   ================================================ */

/* 2カラムdivを縦一列に強制 */
.pmpro_cols-2 {
    display: block !important;
    width: 100% !important;
}
.pmpro_cols-2 .pmpro_form_field,
.pmpro_cols-1 .pmpro_form_field {
    display: block !important;
    width: 100% !important;
    max-width: 100% !important;
    float: none !important;
    margin-bottom: 20px !important;
}

/* 全フォームフィールドのinputを全幅に */
.pmpro_form_field input[type="text"],
.pmpro_form_field input[type="email"],
.pmpro_form_field input[type="password"],
.pmpro_form_field select {
    width: 100% !important;
    box-sizing: border-box !important;
}

/* 目アイコンを入力欄内に配置 */
.mori-pw-input-wrap {
    position: relative !important;
    display: block !important;
    width: 100% !important;
}
.mori-pw-input-wrap input {
    width: 100% !important;
    padding-right: 48px !important;
    box-sizing: border-box !important;
}
.pmpro_form_field-password-toggle {
    position: absolute !important;
    right: 10px !important;
    top: 50% !important;
    transform: translateY(-50%) !important;
    margin: 0 !important;
    padding: 0 !important;
    background: none !important;
    background-color: transparent !important;
    border: none !important;
    box-shadow: none !important;
    line-height: 1 !important;
    height: auto !important;
    min-height: 0 !important;
}
.pmpro_form_field-password-toggle *,
.pmpro_form_field-password-toggle button,
.pmpro_form_field-password-toggle a,
.pmpro_form_field-password-toggle .pmpro_btn {
    background: none !important;
    background-color: transparent !important;
    border: none !important;
    box-shadow: none !important;
    padding: 4px !important;
    cursor: pointer !important;
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    color: #888 !important;
    min-height: 0 !important;
    height: auto !important;
    line-height: 1 !important;
}
.pmpro_form_field-password-toggle *:hover,
.pmpro_form_field-password-toggle button:hover {
    color: #333 !important;
    background: none !important;
    background-color: transparent !important;
}
.pmpro_form_field-password-toggle-state {
    display: none !important;
}

/* 自動生成ボタン列 */
.mori-pw-gen-wrap {
    display: flex !important;
    flex-direction: row !important;
    gap: 8px !important;
    width: 100% !important;
    margin-top: 10px !important;
    flex-wrap: nowrap !important;
    align-items: center !important;
}
.mori-pw-gen-btn {
    display: inline-flex !important;
    align-items: center !important;
    gap: 6px !important;
    padding: 8px 16px !important;
    background: #f0f0ee !important;
    border: 1px solid #2d2d2d !important;
    border-radius: 8px !important;
    color: #2a2a2a !important;
    font-size: 13px !important;
    font-weight: 600 !important;
    cursor: pointer !important;
    white-space: nowrap !important;
    flex-shrink: 0 !important;
}
.mori-pw-gen-btn:hover {
    background: #e0e0de !important;
}
.mori-pw-copy-btn {
    padding: 8px 14px !important;
    background: #fff !important;
    border: 1px solid #ccc !important;
    border-radius: 8px !important;
    font-size: 13px !important;
    cursor: pointer !important;
    white-space: nowrap !important;
    flex-shrink: 0 !important;
}

/* 強度メーター */
.mori-pw-meter {
    margin-top: 8px !important;
    width: 100% !important;
}
.mori-pw-meter-bar {
    height: 4px !important;
    background: #eee !important;
    border-radius: 2px !important;
    overflow: hidden !important;
    margin-bottom: 4px !important;
}
.mori-pw-bar {
    height: 100% !important;
    width: 0 !important;
    transition: width .3s, background .3s !important;
    border-radius: 2px !important;
}
.mori-pw-meter-label {
    font-size: 12px !important;
    font-weight: 600 !important;
}

/* ================================================
   キャンペーンバナー（TOPページ・チェックアウト共通）
   ================================================ */

/* TOPページ 料金セクションのキャンペーンバナー */
.campaign-banner {
    display: flex;
    align-items: center;
    gap: 14px;
    background: linear-gradient(135deg, #f5f5f5 0%, #ebebeb 100%);
    border: 2px solid #2d2d2d;
    border-radius: 12px;
    padding: 16px 20px;
    margin-bottom: 24px;
}
.campaign-banner-icon { font-size: 28px; flex-shrink: 0; }
.campaign-banner-title {
    font-size: 15px;
    font-weight: 900;
    color: #1a1a1a;
    margin-bottom: 4px;
}
.campaign-banner-text {
    font-size: 13px;
    color: #555555;
    line-height: 1.6;
}
.campaign-banner-text s { color: #999; }
.campaign-banner-text strong { color: #c0392b; }

/* 料金カードの入会費表示 */
.pricing-initfee {
    display: flex;
    align-items: center;
    gap: 6px;
    font-size: 13px;
    color: #666;
    margin: -4px 0 10px;
    padding: 6px 10px;
    background: #f5f5f5;
    border-radius: 6px;
}
.pricing-initfee-old { color: #999; }
.pricing-initfee-free {
    color: #c0392b;
    font-weight: 900;
}

/* 右サイドバーのキャンペーンバッジ */
.sr-campaign-badge {
    background: linear-gradient(90deg, #2d2d2d, #555555);
    color: #fff;
    font-size: 12px;
    font-weight: 900;
    text-align: center;
    padding: 6px 12px;
    border-radius: 20px;
    margin-bottom: 10px;
    letter-spacing: 0.03em;
}
.sr-cta-initfee {
    font-size: 12px;
    color: #666;
    margin-top: 4px;
}
.sr-cta-initfee s { color: #999; }
.sr-cta-initfee strong { color: #c0392b; font-weight: 900; }

/* チェックアウトページのキャンペーンバナー */
.mori-checkout-campaign {
    display: flex;
    align-items: center;
    gap: 12px;
    background: linear-gradient(135deg, #f5f5f5 0%, #ebebeb 100%);
    border: 2px solid #2d2d2d;
    border-radius: 12px;
    padding: 14px 18px;
    margin-bottom: 20px;
}
.mori-checkout-campaign-icon { font-size: 24px; flex-shrink: 0; }
.mori-checkout-campaign-title {
    font-size: 14px;
    font-weight: 900;
    color: #1a1a1a;
    margin-bottom: 3px;
}
.mori-checkout-campaign-text {
    font-size: 12px;
    color: #555555;
    line-height: 1.6;
}
.mori-checkout-campaign-text s { color: #999; }
.mori-checkout-campaign-text strong { color: #c0392b; }

/* チェックアウトの入会費無料ライン */
.mori-initfee-free-notice {
    display: flex;
    align-items: center;
    gap: 8px;
    flex-wrap: wrap;
    padding: 10px 14px;
    background: #fff3f3;
    border-left: 3px solid #c0392b;
    border-radius: 0 8px 8px 0;
    margin-top: 10px;
    font-size: 13px;
}
.mori-initfee-label { color: #555; font-weight: 600; }
.mori-initfee-old { color: #999; }
.mori-initfee-arrow { color: #888; }
.mori-initfee-free { color: #c0392b; font-weight: 900; font-size: 14px; }

/* ================================================
   FRONT-PAGE — MORIDOJO デザイン準拠
   ================================================ */

/* ── ラッパー（3カラム） ── */
.fp-wrap {
    display: flex;
    min-height: 100vh;
    padding-top: var(--header-h);
}

/* ── 左サイドバー ── */
.fp-sidebar-left {
    width: var(--left-w);
    flex-shrink: 0;
    background: #fff;
    border-right: 1px solid var(--color-border);
    position: sticky;
    top: var(--header-h);
    height: calc(100vh - var(--header-h));
    overflow-y: auto;
}
.fp-sidebar-left-inner {
    padding: 28px 20px;
    display: flex;
    flex-direction: column;
    gap: 28px;
    height: 100%;
}
.fp-left-logo a { text-decoration: none; }
.fp-left-logo-main {
    display: block;
    font-size: 15px;
    font-weight: 900;
    color: #1a1a1a;
    letter-spacing: 0.06em;
}
.fp-left-logo-sub {
    display: block;
    font-size: 12px;
    font-weight: 300;
    color: #888;
    letter-spacing: 0.04em;
}
.fp-left-nav-label {
    display: block;
    font-size: 10px;
    font-weight: 700;
    color: #bbb;
    letter-spacing: 0.12em;
    margin-bottom: 10px;
}
.fp-left-nav ul { list-style: none; padding: 0; margin: 0; }
.fp-left-nav li { margin-bottom: 2px; }
.fp-left-nav a {
    display: block;
    padding: 8px 10px;
    font-size: 13px;
    font-weight: 500;
    color: #444;
    border-radius: 6px;
    text-decoration: none;
    transition: background .15s, color .15s;
}
.fp-left-nav a:hover { background: #f0f0ee; color: #1a1a1a; }

.fp-left-footer-links {
    margin-top: auto;
    display: flex;
    flex-direction: column;
    gap: 6px;
}
.fp-left-footer-links a {
    font-size: 10px;
    color: #aaa;
    text-decoration: none;
}
.fp-left-footer-links a:hover { color: #555; }

.fp-left-login-block {
    border-top: 1px solid var(--color-border);
    padding-top: 16px;
    text-align: center;
}
.fp-left-login-block p { font-size: 11px; color: #888; margin-bottom: 8px; }
.fp-left-login-btn {
    display: inline-block;
    padding: 7px 24px;
    background: #2d2d2d;
    color: #fff;
    font-size: 12px;
    font-weight: 700;
    border-radius: 20px;
    text-decoration: none;
    letter-spacing: 0.06em;
}
.fp-left-login-btn:hover { background: #111; }

/* ── メインコンテンツ ── */
.fp-main {
    flex: 1;
    min-width: 0;
    background: #f8f8f8;
}

/* HERO */
.fp-hero {
    background: #1a1a1a;
    color: #fff;
    padding: 80px 48px 80px;
    position: relative;
    overflow: hidden;
}
.fp-hero::before {
    content: 'MORIDOJO';
    position: absolute;
    bottom: -30px;
    right: -10px;
    font-size: 120px;
    font-weight: 900;
    color: rgba(255,255,255,.04);
    letter-spacing: .08em;
    pointer-events: none;
    white-space: nowrap;
}
.fp-hero-catch {
    font-size: 13px;
    color: #aaa;
    letter-spacing: 0.04em;
    margin-bottom: 16px;
}
.fp-hero-title {
    font-size: 32px;
    font-weight: 900;
    line-height: 1.4;
    margin-bottom: 20px;
    letter-spacing: 0.02em;
}
.fp-hero-title em { font-style: normal; border-bottom: 2px solid #fff; }
.fp-hero-desc {
    font-size: 14px;
    color: #ccc;
    line-height: 1.9;
    margin-bottom: 24px;
}
.fp-hero-tags { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 32px; }
.fp-hero-tags span {
    font-size: 11px;
    color: #999;
    background: rgba(255,255,255,.07);
    border: 1px solid rgba(255,255,255,.12);
    border-radius: 20px;
    padding: 4px 12px;
}
.fp-hero-scroll {
    display: flex;
    align-items: center;
    gap: 6px;
    font-size: 11px;
    color: #666;
    letter-spacing: 0.1em;
}

/* セクション共通 */
.fp-section {
    padding: 64px 48px;
    background: #fff;
}
.fp-section--dark {
    background: #1a1a1a;
    color: #fff;
}
.fp-section--gray { background: #f5f5f3; }
.fp-section-label {
    font-size: 11px;
    font-weight: 700;
    letter-spacing: 0.14em;
    color: #bbb;
    margin-bottom: 8px;
}
.fp-section--dark .fp-section-label { color: #666; }
.fp-section-title {
    font-size: 26px;
    font-weight: 900;
    color: #1a1a1a;
    margin-bottom: 8px;
    letter-spacing: 0.02em;
}
.fp-section--dark .fp-section-title { color: #fff; }
.fp-section-sub { font-size: 13px; color: #888; margin-bottom: 32px; }

/* Information */
.fp-news-list { display: flex; flex-direction: column; gap: 0; margin-bottom: 24px; }
.fp-news-item {
    display: flex;
    align-items: baseline;
    gap: 16px;
    padding: 14px 0;
    border-bottom: 1px solid #eee;
}
.fp-section--dark .fp-news-item { border-color: #333; }
.fp-news-date { font-size: 12px; color: #aaa; flex-shrink: 0; }
.fp-news-title { font-size: 14px; color: #2a2a2a; text-decoration: none; }
.fp-news-title:hover { text-decoration: underline; }
.fp-more-btn {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 10px 28px;
    border: 1.5px solid #2d2d2d;
    border-radius: 24px;
    font-size: 13px;
    font-weight: 700;
    color: #2d2d2d;
    text-decoration: none;
    letter-spacing: 0.06em;
    transition: background .15s, color .15s;
}
.fp-more-btn:hover { background: #2d2d2d; color: #fff; }

/* Mission */
.fp-mission-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 20px;
    margin-top: 32px;
}
.fp-mission-card {
    background: rgba(255,255,255,.05);
    border: 1px solid rgba(255,255,255,.1);
    border-radius: 12px;
    padding: 28px 24px;
}
.fp-mission-num {
    font-size: 32px;
    font-weight: 900;
    color: rgba(255,255,255,.15);
    margin-bottom: 10px;
    line-height: 1;
}
.fp-mission-heading { font-size: 16px; font-weight: 800; color: #fff; margin-bottom: 10px; }
.fp-mission-text { font-size: 13px; color: #aaa; line-height: 1.8; }

/* Charter */
.fp-charter-grid {
    display: grid;
    grid-template-columns: repeat(5, 1fr);
    gap: 12px;
    margin-top: 32px;
}
.fp-charter-item {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 8px;
    padding: 20px 12px;
    background: #f5f5f3;
    border-radius: 10px;
    text-align: center;
}
.fp-charter-num {
    font-size: 11px;
    font-weight: 700;
    color: #bbb;
    letter-spacing: 0.06em;
}
.fp-charter-text { font-size: 13px; font-weight: 700; color: #1a1a1a; line-height: 1.5; }

/* Benefits */
.fp-benefits-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 16px;
    margin-top: 32px;
}
.fp-benefit-card {
    background: rgba(255,255,255,.05);
    border: 1px solid rgba(255,255,255,.1);
    border-radius: 10px;
    padding: 24px 20px;
}
.fp-benefit-num {
    font-size: 28px;
    font-weight: 900;
    color: rgba(255,255,255,.12);
    line-height: 1;
    margin-bottom: 8px;
}
.fp-benefit-card h3 { font-size: 14px; font-weight: 800; color: #fff; margin-bottom: 8px; }
.fp-benefit-card p { font-size: 12px; color: #999; line-height: 1.8; }
.fp-benefit-card small { font-size: 10px; color: #888; }

/* Column */
.fp-column-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 20px;
    margin: 32px 0 24px;
}
.fp-column-card {
    background: #fff;
    border: 1px solid #eee;
    border-radius: 10px;
    overflow: hidden;
}
.fp-column-thumb {
    display: block;
    aspect-ratio: 16/9;
    overflow: hidden;
    background: #f0f0ee;
}
.fp-column-thumb img { width: 100%; height: 100%; object-fit: cover; }
.fp-column-thumb--noimg {
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 18px;
    font-weight: 900;
    color: #ccc;
    letter-spacing: .06em;
}
.fp-column-body { padding: 14px 16px; }
.fp-column-body time { font-size: 11px; color: #bbb; display: block; margin-bottom: 6px; }
.fp-column-ttl {
    font-size: 13px;
    font-weight: 600;
    color: #2a2a2a;
    text-decoration: none;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
}
.fp-column-ttl:hover { text-decoration: underline; }

/* Conditions */
.fp-conditions-list {
    list-style: none;
    padding: 0;
    margin: 24px 0 0;
    display: flex;
    flex-direction: column;
    gap: 10px;
}
.fp-conditions-list li {
    font-size: 13px;
    color: #555;
    padding-left: 18px;
    position: relative;
    line-height: 1.7;
}
.fp-conditions-list li::before {
    content: '■';
    position: absolute;
    left: 0;
    font-size: 8px;
    color: #999;
    top: 5px;
}

/* About */
.fp-about-wrap { display: flex; gap: 32px; margin-top: 32px; align-items: flex-start; }
.fp-about-photo { flex-shrink: 0; }
.fp-about-photo-placeholder {
    width: 140px;
    height: 180px;
    background: #e8e8e8;
    border-radius: 10px;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 13px;
    font-weight: 700;
    color: #bbb;
}
.fp-about-name { font-size: 22px; font-weight: 900; margin-bottom: 4px; }
.fp-about-title { font-size: 12px; color: #888; margin-bottom: 16px; }
.fp-about-bio { font-size: 14px; color: #444; line-height: 1.9; margin-bottom: 16px; }
.fp-about-tags { display: flex; flex-wrap: wrap; gap: 8px; }
.fp-about-tags span {
    font-size: 11px;
    color: #666;
    background: #f0f0ee;
    border-radius: 20px;
    padding: 4px 12px;
}

/* ── 右サイドバー ── */
.fp-sidebar-right {
    width: var(--right-w);
    flex-shrink: 0;
    background: #fff;
    border-left: 1px solid var(--color-border);
    position: sticky;
    top: var(--header-h);
    height: calc(100vh - var(--header-h));
    overflow-y: auto;
}
.fp-sidebar-right-inner { padding: 24px 20px; display: flex; flex-direction: column; gap: 16px; }

.fp-right-logo { text-align: center; padding-bottom: 16px; border-bottom: 1px solid #eee; }
.fp-right-logo-main { display: block; font-size: 16px; font-weight: 900; color: #1a1a1a; letter-spacing: .06em; }
.fp-right-logo-sub { display: block; font-size: 13px; font-weight: 300; color: #888; margin-bottom: 6px; }
.fp-right-supported { font-size: 10px; color: #aaa; letter-spacing: .1em; margin-bottom: 6px; }
.fp-right-tagline { font-size: 11px; color: #888; }

.fp-right-campaign-badge {
    background: #2d2d2d;
    color: #fff;
    font-size: 11px;
    font-weight: 800;
    text-align: center;
    padding: 6px 10px;
    border-radius: 20px;
    letter-spacing: .03em;
}
.fp-right-price-block { text-align: center; }
.fp-right-price {
    font-size: 36px;
    font-weight: 900;
    color: #1a1a1a;
    line-height: 1.1;
}
.fp-right-price span { font-size: 36px; }
.fp-right-price em { font-size: 14px; font-weight: 400; color: #888; font-style: normal; }
.fp-right-initfee { font-size: 12px; color: #666; margin-top: 4px; }
.fp-right-initfee s { color: #bbb; }
.fp-right-initfee strong { color: #c0392b; font-weight: 900; }
.fp-right-note { font-size: 11px; color: #aaa; margin-top: 4px; }

.fp-right-features {
    list-style: none;
    padding: 0;
    margin: 0;
    border-top: 1px solid #eee;
    border-bottom: 1px solid #eee;
    padding: 12px 0;
}
.fp-right-features li {
    font-size: 12px;
    color: #555;
    padding: 5px 0 5px 16px;
    position: relative;
}
.fp-right-features li::before {
    content: '■';
    position: absolute;
    left: 0;
    font-size: 7px;
    color: #2d2d2d;
    top: 8px;
}
.fp-right-cta-btn {
    display: block;
    background: #1a1a1a;
    color: #fff;
    text-align: center;
    padding: 14px;
    border-radius: 8px;
    font-size: 15px;
    font-weight: 800;
    text-decoration: none;
    letter-spacing: .04em;
    transition: background .2s;
}
.fp-right-cta-btn:hover { background: #333; }
.fp-right-login { text-align: center; }
.fp-right-login p { font-size: 11px; color: #aaa; margin-bottom: 4px; }
.fp-right-login a { font-size: 13px; font-weight: 700; color: #2d2d2d; text-decoration: none; }
.fp-right-login a:hover { text-decoration: underline; }

/* ── レスポンシブ ── */
@media (max-width: 1100px) {
    .fp-sidebar-left { display: none; }
    .fp-mission-grid { grid-template-columns: 1fr; }
    .fp-benefits-grid { grid-template-columns: repeat(2,1fr); }
    .fp-charter-grid { grid-template-columns: repeat(2,1fr); }
}
@media (max-width: 768px) {
    .fp-sidebar-right { display: none; }
    .fp-section, .fp-hero { padding: 48px 24px; }
    .fp-column-grid { grid-template-columns: 1fr; }
    .fp-benefits-grid { grid-template-columns: 1fr; }
    .fp-hero-title { font-size: 24px; }
}

/* ================================================
   RIGHT SIDEBAR v2 — ダークカードデザイン
   ================================================ */
.fp-sidebar-right {
    width: var(--right-w);
    flex-shrink: 0;
    background: #fff;
    border-left: none;
    position: sticky;
    top: var(--header-h);
    height: calc(100vh - var(--header-h));
    overflow-y: auto;
}
/* コラム一覧・記事詳細のみダーク背景 */
.archive .fp-sidebar-right,
.single .fp-sidebar-right {
    background: #fff;
}
.fp-sidebar-right-inner {
    padding: 16px 14px;
    display: flex;
    flex-direction: column;
    gap: 10px;
}

/* ── カード共通 ── */
.fp-right-card {
    background: #3a3a3a;
    border-radius: 12px;
    padding: 24px 20px;
    display: flex;
    flex-direction: column;
    gap: 14px;
}

/* 区切り線 */
.fp-right-card-line {
    height: 1px;
    background: rgba(255,255,255,.15);
}

/* 金額 */
.fp-right-price-block { text-align: center; padding: 8px 0; }
.fp-right-price {
    font-size: 28px;
    font-weight: 900;
    color: #ffffff;
    letter-spacing: .02em;
    line-height: 1.1;
}
.fp-right-price-unit {
    font-size: 20px;
    font-weight: 700;
    color: #ffffff;
}
.fp-right-note {
    font-size: 12px;
    color: #aaaaaa;
    margin-top: 6px;
}

/* 特典リスト */
.fp-right-features {
    list-style: none;
    padding: 0;
    margin: 0;
    display: flex;
    flex-direction: column;
    gap: 6px;
    border: none !important;
}
.fp-right-features li {
    font-size: 13px;
    color: #dddddd;
    padding: 0 0 0 16px;
    position: relative;
    line-height: 1.5;
}
.fp-right-features li::before {
    content: '■';
    position: absolute;
    left: 0;
    font-size: 7px;
    color: #aaa;
    top: 5px;
}

.fp-right-etc {
    font-size: 12px;
    color: #888;
    margin: -4px 0 0;
}

/* 今すぐ入会するボタン */
.fp-right-cta-btn {
    display: block;
    background: #ffffff;
    color: #1a1a1a !important;
    text-align: center;
    padding: 16px;
    border-radius: 8px;
    font-size: 16px;
    font-weight: 800;
    text-decoration: none !important;
    letter-spacing: .04em;
    transition: background .2s;
    white-space: nowrap;
}
.fp-right-cta-btn:hover { background: #eeeeee; }

/* Loginカード */
.fp-right-card--login {
    padding: 20px;
    text-align: center;
    gap: 12px;
}
.fp-right-login-label {
    font-size: 12px;
    color: #aaaaaa;
}
.fp-right-login-btn {
    display: block;
    background: #ffffff;
    color: #1a1a1a !important;
    padding: 13px;
    border-radius: 40px;
    font-size: 15px;
    font-weight: 700;
    text-decoration: none !important;
    letter-spacing: .06em;
    transition: background .2s;
}
.fp-right-login-btn:hover { background: #eeeeee; }

/* ── 金額フォント統一修正 ── */
.fp-right-price {
    font-size: 26px !important;
    font-weight: 900 !important;
    color: #ffffff !important;
    letter-spacing: .02em !important;
    line-height: 1.2 !important;
}
.fp-right-price-unit {
    font-size: 26px !important;
    font-weight: 900 !important;
    color: #ffffff !important;
}

/* ── 特典リスト 改行防止 ── */
.fp-right-features li {
    font-size: 11px !important;
    white-space: nowrap !important;
    overflow: hidden !important;
    text-overflow: ellipsis !important;
}

/* ── 特典リスト 改行問題修正 v2 ── */
.fp-right-features li {
    font-size: 11px !important;
    white-space: normal !important;
    overflow: visible !important;
    text-overflow: clip !important;
    color: #dddddd !important;
    line-height: 1.4 !important;
}
/* カードの横幅に合わせてpaddingを詰める */
.fp-right-card {
    padding: 20px 16px !important;
}
.fp-sidebar-right-inner {
    padding: 16px 12px !important;
}

/* ================================================
   HERO / MV v2 — 背景画像＋テキストオーバーレイ
   画像差し替え時は .fp-hero の background-image を変更
   ================================================ */
.fp-hero {
    position: relative;
    min-height: 480px;
    background: #1a1a1a;
    overflow: hidden;
    padding: 0;
}
/* 動画が読み込まれるまでの背景色フォールバック */
.fp-hero-video {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: center;
    z-index: 0;
}
/* 薄いグラデーションオーバーレイ（右側テキストを読みやすく） */
.fp-hero::after {
    content: '';
    position: absolute;
    inset: 0;
    background: linear-gradient(
        to right,
        rgba(0,0,0,.15) 0%,
        rgba(0,0,0,.35) 50%,
        rgba(0,0,0,.55) 100%
    );
    z-index: 1;
}
.fp-hero-bg { display: none; }

.fp-hero-inner {
    position: relative;
    z-index: 2;
    min-height: 480px;
    display: flex;
    align-items: flex-end;
    justify-content: flex-end;
    padding: 40px 48px;
}
.fp-hero-text-block {
    text-align: right;
    max-width: 600px;
}
.fp-hero-catch {
    font-size: 18px;
    font-weight: 800;
    color: #ffffff;
    letter-spacing: .03em;
    margin-bottom: 10px;
    text-shadow: 0 2px 8px rgba(0,0,0,.7), 0 1px 2px rgba(0,0,0,.9);
    font-family: 'LINE Seed JP', 'Noto Serif JP', serif;
    white-space: nowrap; /* PC: 1行 */
}
/* PCでは改行しない、スマホでは改行 */
.fp-hero-catch br.sp-only { display: none; }
@media (max-width: 767px) {
    .fp-hero-catch { white-space: normal; }
    .fp-hero-catch br.sp-only { display: inline; }
}
.fp-hero-name-badge {
    display: inline-block;
    background: rgba(255,255,255,.92);
    color: #1a1a1a;
    font-size: 12px;
    font-weight: 700;
    padding: 5px 14px;
    border-radius: 4px;
    margin-bottom: 16px;
    letter-spacing: .04em;
}
.fp-hero-logo-title {
    display: flex;
    flex-direction: column;
    align-items: flex-end;
    margin-bottom: 16px;
    line-height: 1.0;
}
.fp-hero-logo-main {
    font-size: clamp(48px, 7vw, 88px);
    font-weight: 900;
    color: #ffffff;
    letter-spacing: .04em;
    text-transform: uppercase;
    text-shadow: 0 3px 16px rgba(0,0,0,.6), 0 1px 4px rgba(0,0,0,.8);
    line-height: 1;
}
.fp-hero-logo-sub {
    font-size: clamp(36px, 5.5vw, 68px);
    font-weight: 300;
    color: #ffffff;
    letter-spacing: .02em;
    text-shadow: 0 3px 16px rgba(0,0,0,.6), 0 1px 4px rgba(0,0,0,.8);
    line-height: 1.1;
}
.fp-hero-tags {
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
    justify-content: flex-end;
}
.fp-hero-tags span {
    font-size: 11px;
    color: #fff;
    background: transparent;
    border: none;
    padding: 0;
    text-shadow: 0 1px 4px rgba(0,0,0,.8);
    letter-spacing: .03em;
}

/* 左サイドバー ロゴ画像 */
.fp-left-logo-img {
    width: 100%;
    max-width: 180px;
    height: auto;
    display: block;
}

/* 左サイドバー背景をロゴと統一 */
.fp-sidebar-left {
    background: #f0f0ee !important;
    border-right: 1px solid #e0e0de !important;
}

/* ================================================
   左サイドバー メニューデザイン v2
   ================================================ */
.fp-left-nav-header { margin-bottom: 16px; }
.fp-left-nav-label {
    display: block;
    font-size: 15px;
    font-weight: 900;
    color: #1a1a1a;
    letter-spacing: .08em;
    margin-bottom: 8px;
}
.fp-left-nav-line {
    height: 2px;
    background: #1a1a1a;
    width: 100%;
}
.fp-left-nav ul {
    list-style: disc;
    padding-left: 18px;
    margin: 0;
}
.fp-left-nav li {
    margin-bottom: 18px;
}
.fp-left-nav li a {
    display: inline;
    padding: 0;
    font-size: 14px;
    font-weight: 500;
    color: #bbbbbb;
    background: none;
    border-radius: 0;
    text-decoration: none;
    transition: color .15s;
}
.fp-left-nav li a:hover { color: #1a1a1a; background: none; }
.fp-left-nav li::marker { color: #bbbbbb; }

/* 最初のメニューだけ黒・太字 */
.fp-left-nav li.active a {
    color: #1a1a1a !important;
    font-weight: 700 !important;
}
.fp-left-nav li.active::marker { color: #1a1a1a; }

/* フッターリンク */
.fp-left-footer-links {
    margin-top: auto;
}
.fp-left-footer-links p {
    font-size: 12px;
    color: #888;
    line-height: 2.0;
}
.fp-left-footer-links a {
    color: #888;
    text-decoration: none;
    font-size: 12px;
}
.fp-left-footer-links a:hover { color: #333; }

/* SNSアイコン */
.fp-left-sns {
    display: flex;
    gap: 12px;
    align-items: center;
    padding-top: 8px;
}
.fp-left-sns-btn {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 42px;
    height: 42px;
    border-radius: 50%;
    border: 2px solid #1a1a1a;
    color: #1a1a1a;
    text-decoration: none;
    transition: background .15s, color .15s;
    flex-shrink: 0;
}
.fp-left-sns-btn:hover {
    background: #1a1a1a;
    color: #fff;
}
.fp-left-sns-line {
    background: #06C755;
    border-color: #06C755;
    color: #fff;
}
.fp-left-sns-line:hover {
    background: #05a848;
    border-color: #05a848;
    color: #fff;
}

/* ================================================
   CATCHCOPY セクション（MV直下）
   ================================================ */
.fp-catchcopy {
    background: #ffffff;
    padding: 72px 52px 64px;
}
.fp-cc-sub {
    font-size: 22px;
    font-weight: 500;
    color: #1a1a1a;
    font-family: 'LINE Seed JP', 'Noto Serif JP', 'Hiragino Mincho ProN', serif;
    margin-bottom: 4px;
    letter-spacing: .03em;
}
.fp-cc-main {
    font-size: 40px;
    font-weight: 900;
    color: #1a1a1a;
    font-family: 'LINE Seed JP', 'Noto Serif JP', 'Hiragino Mincho ProN', serif;
    letter-spacing: .04em;
    line-height: 1.3;
    margin-bottom: 32px;
}
.fp-cc-main em {
    font-style: normal;
    font-size: 52px;
    letter-spacing: .12em;
}
.fp-cc-lead {
    display: flex;
    align-items: center;
    gap: 20px;
    margin-bottom: 28px;
}
.fp-cc-lead span:first-child {
    font-size: 16px;
    font-weight: 400;
    color: #1a1a1a;
    white-space: nowrap;
    font-family: 'LINE Seed JP', 'Noto Serif JP', 'Hiragino Mincho ProN', serif;
    letter-spacing: .04em;
}
.fp-cc-line {
    flex: 1;
    height: 1px;
    background: #1a1a1a;
    display: block;
}
.fp-cc-desc {
    font-size: 14px;
    color: #444;
    line-height: 2.0;
    letter-spacing: .03em;
}

/* ================================================
   MARQUEE スライダー（右→左 無限ループ）
   ================================================ */
.fp-marquee-wrap {
    width: 100%;
    overflow: hidden;
    background: #fff;
    padding: 0;
    line-height: 0;
}
.fp-marquee-track {
    display: flex;
    gap: 0;
    width: max-content;
    animation: fp-marquee 28s linear infinite;
}
.fp-marquee-track:hover { animation-play-state: paused; }

@keyframes fp-marquee {
    0%   { transform: translateX(0); }
    100% { transform: translateX(-50%); }
}
.fp-marquee-item {
    flex-shrink: 0;
    width: 320px;
    height: 220px;
    overflow: hidden;
}
.fp-marquee-item img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: center;
    display: block;
    filter: grayscale(15%);
    transition: filter .3s;
}
.fp-marquee-item:hover img { filter: grayscale(0%); }

/* ================================================
   INFORMATION セクション v2
   ================================================ */
.fp-section--info {
    background: #ffffff;
    padding: 72px 52px 64px;
}
.fp-info-header {
    text-align: center;
    margin-bottom: 48px;
}
.fp-info-en {
    font-size: 42px;
    font-weight: 900;
    color: #1a1a1a;
    letter-spacing: .04em;
    margin-bottom: 10px;
    font-family: 'LINE Seed JP', 'Google Sans', 'Helvetica Neue', Arial, sans-serif;
}
.fp-info-ja {
    font-size: 16px;
    font-weight: 500;
    color: #1a1a1a;
    letter-spacing: .1em;
}

/* ニュースリスト */
.fp-section--info .fp-news-list {
    border-top: 1px solid #d0d0d0;
    margin-bottom: 0;
}
.fp-section--info .fp-news-item {
    display: flex;
    align-items: center;
    gap: 48px;
    padding: 28px 12px;
    border-bottom: 1px solid #d0d0d0;
    border-top: none;
}
.fp-section--info .fp-news-date {
    font-size: 16px;
    font-weight: 400;
    color: #1a1a1a;
    flex-shrink: 0;
    width: 110px;
    letter-spacing: .04em;
}
.fp-section--info .fp-news-title {
    font-size: 20px;
    font-weight: 400;
    color: #1a1a1a;
    text-decoration: none;
    letter-spacing: .02em;
    line-height: 1.5;
}
.fp-section--info .fp-news-title:hover { opacity: .6; }

/* Moreボタン */
.fp-info-more-wrap {
    text-align: center;
    margin-top: 48px;
}
.fp-info-more-btn {
    display: inline-block;
    background: #1a1a1a;
    color: #fff !important;
    font-size: 16px;
    font-weight: 700;
    padding: 16px 80px;
    border-radius: 40px;
    text-decoration: none !important;
    letter-spacing: .08em;
    transition: background .2s;
}
.fp-info-more-btn:hover { background: #444; }

/* ================================================
   MISSION セクション v2
   ================================================ */
.fp-section--mission {
    background: #f0f0ee;
    padding: 72px 52px 80px;
}
.fp-mission-header {
    text-align: center;
    margin-bottom: 48px;
}
.fp-mission-en {
    font-size: 42px;
    font-weight: 900;
    color: #1a1a1a;
    letter-spacing: .04em;
    margin-bottom: 10px;
    font-family: 'LINE Seed JP', 'Google Sans', 'Helvetica Neue', Arial, sans-serif;
}
.fp-mission-ja {
    font-size: 16px;
    font-weight: 500;
    color: #1a1a1a;
    letter-spacing: .1em;
}

/* フルwidth写真 */
.fp-mission-photo {
    width: 100%;
    margin: 0 -52px 0;
    width: calc(100% + 104px);
    margin-bottom: 64px;
    overflow: hidden;
    aspect-ratio: 16/7;
}
.fp-mission-photo img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: center;
    display: block;
}

/* ミッション各項目 */
.fp-mission-items {
    display: flex;
    flex-direction: column;
    gap: 0;
}
.fp-mission-item {
    padding: 48px 0;
}
.fp-mi-line {
    height: 1px;
    background: #c0c0be;
    margin-bottom: 20px;
}
.fp-mi-num {
    display: block;
    font-size: 14px;
    font-weight: 400;
    color: #888;
    letter-spacing: .08em;
    margin-bottom: 16px;
}
.fp-mi-heading {
    font-size: 32px;
    font-weight: 700;
    color: #1a1a1a;
    font-family: 'LINE Seed JP', 'Noto Serif JP', 'Hiragino Mincho ProN', serif;
    letter-spacing: .04em;
    margin-bottom: 20px;
    line-height: 1.3;
}
.fp-mi-heading em {
    font-style: normal;
    font-size: 40px;
    font-weight: 900;
}
.fp-mi-text {
    font-size: 16px;
    color: #444;
    line-height: 2.0;
    letter-spacing: .03em;
}

/* Mission 写真サイズ修正 */
.fp-mission-photo {
    width: 100% !important;
    margin: 0 0 64px !important;
    aspect-ratio: 16/8 !important;
    max-height: 420px !important;
    border-radius: 8px !important;
    overflow: hidden !important;
}

/* ================================================
   LEADER'S CHARTER セクション v2
   ================================================ */
.fp-section--charter {
    background: #3a3a3a;
    padding: 80px 52px;
}
.fp-charter-header {
    text-align: center;
    margin-bottom: 72px;
}
.fp-charter-en {
    font-size: 38px;
    font-weight: 700;
    color: #ffffff;
    letter-spacing: .08em;
    margin-bottom: 0;
}
.fp-charter-ja {
    font-size: 18px;
    font-weight: 400;
    color: #ffffff;
    letter-spacing: .12em;
    margin-bottom: 40px;
}
.fp-charter-sub {
    font-size: 52px;
    font-weight: 300;
    color: #ffffff;
    letter-spacing: .04em;
    font-family: 'LINE Seed JP', 'Google Sans', 'Helvetica Neue', Arial, sans-serif;
    line-height: 1;
}

/* 10カードグリッド */
.fp-section--charter .fp-charter-grid {
    display: grid;
    grid-template-columns: repeat(5, 1fr);
    gap: 2px;
    background: rgba(255,255,255,.08);
    border-radius: 12px;
    overflow: hidden;
}
.fp-section--charter .fp-charter-item {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 10px;
    padding: 32px 16px;
    background: rgba(255,255,255,.04);
    text-align: center;
    border-radius: 0;
    transition: background .2s;
}
.fp-section--charter .fp-charter-item:hover {
    background: rgba(255,255,255,.10);
}
.fp-section--charter .fp-charter-num {
    font-size: 12px;
    font-weight: 400;
    color: #888;
    letter-spacing: .1em;
}
.fp-section--charter .fp-charter-text {
    font-size: 15px;
    font-weight: 600;
    color: #ffffff;
    line-height: 1.6;
}

/* ================================================
   CHARTER グリッド v3 — 重なり合う円
   ================================================ */
.fp-section--charter .fp-charter-grid {
    display: grid !important;
    grid-template-columns: repeat(5, 1fr) !important;
    grid-template-rows: repeat(2, 1fr) !important;
    gap: 0 !important;
    background: none !important;
    border-radius: 0 !important;
    overflow: visible !important;
    margin: 0 -20px !important;
}
.fp-section--charter .fp-charter-item {
    aspect-ratio: 1 / 1 !important;
    border-radius: 50% !important;
    border: 1px solid rgba(255,255,255,.35) !important;
    background: transparent !important;
    display: flex !important;
    flex-direction: column !important;
    align-items: center !important;
    justify-content: center !important;
    gap: 14px !important;
    padding: 20px !important;
    margin: -2% !important;
    transition: background .2s !important;
}
.fp-section--charter .fp-charter-item:hover {
    background: rgba(255,255,255,.06) !important;
}
.fp-section--charter .fp-charter-num {
    font-size: 13px !important;
    font-weight: 300 !important;
    color: #aaaaaa !important;
    letter-spacing: .12em !important;
}
.fp-section--charter .fp-charter-text {
    font-size: 15px !important;
    font-weight: 400 !important;
    color: #ffffff !important;
    line-height: 1.7 !important;
    text-align: center !important;
}

/* CHARTER 円サイズ調整 */
.fp-section--charter .fp-charter-grid {
    margin: 0 !important;
    grid-template-columns: repeat(5, 1fr) !important;
}
.fp-section--charter .fp-charter-item {
    aspect-ratio: 1 / 1 !important;
    margin: -4% !important;
    padding: 16px !important;
}
.fp-section--charter .fp-charter-text {
    font-size: 13px !important;
}

/* CHARTER 円サイズ縮小 + フォント最適化 */
.fp-section--charter .fp-charter-grid {
    grid-template-columns: repeat(5, 160px) !important;
    justify-content: center !important;
    gap: 0 !important;
    margin: 0 !important;
}
.fp-section--charter .fp-charter-item {
    width: 160px !important;
    height: 160px !important;
    aspect-ratio: unset !important;
    margin: -8px !important;
    padding: 12px !important;
    border: 1.5px solid rgba(255,255,255,.4) !important;
}
.fp-section--charter .fp-charter-num {
    font-size: 12px !important;
    color: #cccccc !important;
    font-weight: 400 !important;
    letter-spacing: .1em !important;
}
.fp-section--charter .fp-charter-text {
    font-size: 14px !important;
    font-weight: 500 !important;
    color: #ffffff !important;
    line-height: 1.8 !important;
    letter-spacing: .04em !important;
    font-family: 'LINE Seed JP', 'Noto Sans JP', 'Hiragino Kaku Gothic ProN', sans-serif !important;
}

/* ===== Charter スマホ対応 ===== */
@media (max-width: 740px) {
  .fp-section--charter {
    padding: 48px 16px !important;
  }
  .fp-charter-header {
    margin-bottom: 40px !important;
  }
  .fp-charter-en {
    font-size: 26px !important;
  }
  .fp-charter-ja {
    font-size: 14px !important;
    margin-bottom: 20px !important;
  }
  .fp-charter-sub {
    font-size: 32px !important;
    line-height: 1.2 !important;
  }
  .fp-section--charter .fp-charter-grid {
    grid-template-columns: repeat(3, 1fr) !important;
    justify-content: center !important;
    gap: 0 !important;
  }
  .fp-section--charter .fp-charter-item {
    width: auto !important;
    height: auto !important;
    aspect-ratio: 1 / 1 !important;
    margin: -4% !important;
    padding: 8px !important;
  }
  .fp-section--charter .fp-charter-num {
    font-size: 10px !important;
  }
  .fp-section--charter .fp-charter-text {
    font-size: 11px !important;
    line-height: 1.6 !important;
  }
}

/* ================================================
   BENEFITS セクション v2 — リスト形式
   ================================================ */
.fp-section--benefits {
    background: #ffffff;
    padding: 80px 52px;
}
.fp-benefits-header {
    text-align: center;
    margin-bottom: 64px;
}
.fp-benefits-en {
    font-size: 38px;
    font-weight: 700;
    color: #1a1a1a;
    letter-spacing: .02em;
    margin-bottom: 16px;
    font-family: 'LINE Seed JP', 'Google Sans', 'Helvetica Neue', Arial, sans-serif;
}
.fp-benefits-ja {
    font-size: 17px;
    font-weight: 400;
    color: #1a1a1a;
    letter-spacing: .12em;
}
.fp-benefits-list {
    display: flex;
    flex-direction: column;
    gap: 0;
}
.fp-benefits-item {
    padding: 48px 0;
}
.fp-bi-line {
    height: 1px;
    background: #d0d0d0;
    margin-bottom: 24px;
}
.fp-bi-num {
    display: block;
    font-size: 15px;
    font-weight: 400;
    color: #888;
    letter-spacing: .08em;
    margin-bottom: 20px;
}
.fp-bi-heading {
    font-size: 30px;
    font-weight: 700;
    color: #1a1a1a;
    font-family: 'LINE Seed JP', 'Noto Serif JP', 'Hiragino Mincho ProN', serif;
    letter-spacing: .06em;
    margin-bottom: 20px;
    line-height: 1.4;
}
.fp-bi-heading small {
    font-size: 14px;
    font-weight: 400;
    color: #888;
    font-family: 'LINE Seed JP', 'Noto Sans JP', sans-serif;
}
.fp-bi-text {
    font-size: 16px;
    color: #555;
    line-height: 2.0;
    letter-spacing: .04em;
}

/* ================================================
   COLUMN セクション v2 — 縦並びカード
   ================================================ */
.fp-section--column {
    background: #f0f0ee;
    padding: 80px 52px;
}
.fp-column-header {
    text-align: center;
    margin-bottom: 56px;
}
.fp-column-en {
    font-size: 42px;
    font-weight: 900;
    color: #1a1a1a;
    letter-spacing: .02em;
    margin-bottom: 12px;
    font-family: 'LINE Seed JP', 'Google Sans', 'Helvetica Neue', Arial, sans-serif;
}
.fp-column-ja {
    font-size: 18px;
    font-weight: 400;
    color: #1a1a1a;
    letter-spacing: .08em;
}

/* カードリスト */
.fp-col-list {
    display: flex;
    flex-direction: column;
    gap: 16px;
    margin-bottom: 56px;
}
.fp-col-card {
    display: flex;
    align-items: center;
    gap: 28px;
    background: #ffffff;
    border-radius: 16px;
    padding: 20px 24px;
    box-shadow: 0 2px 8px rgba(0,0,0,.06);
    text-decoration: none;
    transition: box-shadow .2s;
}
.fp-col-card:hover { box-shadow: 0 4px 16px rgba(0,0,0,.1); }

/* サムネイル */
.fp-col-thumb {
    flex-shrink: 0;
    width: 220px;
    height: 140px;
    border-radius: 8px;
    overflow: hidden;
    background: #3a3a3a;
    display: block;
}
.fp-col-thumb img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
}
.fp-col-thumb-placeholder {
    display: block;
    width: 100%;
    height: 100%;
    background: #3a3a3a;
}

/* 本文 */
.fp-col-body {
    flex: 1;
    display: flex;
    flex-direction: column;
    gap: 16px;
    min-width: 0;
}
.fp-col-ttl {
    font-size: 18px;
    font-weight: 500;
    color: #1a1a1a;
    text-decoration: none;
    line-height: 1.7;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
    letter-spacing: .02em;
}
.fp-col-ttl:hover { opacity: .7; }
.fp-col-meta {
    display: flex;
    align-items: center;
    gap: 6px;
    color: #888;
}
.fp-col-meta svg { flex-shrink: 0; }
.fp-col-meta time { font-size: 14px; color: #888; letter-spacing: .04em; }

/* Moreボタン */
.fp-col-more-wrap { text-align: center; }
.fp-col-more-btn {
    display: inline-block;
    background: #2d2d2d;
    color: #fff !important;
    font-size: 16px;
    font-weight: 700;
    padding: 16px 80px;
    border-radius: 40px;
    text-decoration: none !important;
    letter-spacing: .08em;
    transition: background .2s;
}
.fp-col-more-btn:hover { background: #555; }

/* ================================================
   MEMBERSHIP CONDITIONS v2 — ボーダーボックス
   ================================================ */
.fp-section--conditions {
    background: #ffffff;
    padding: 80px 52px;
}
.fp-conditions-box {
    border: 1px solid #d0d0d0;
    border-radius: 0;
    padding: 52px 56px;
}
.fp-conditions-en {
    font-size: 28px;
    font-weight: 700;
    color: #1a1a1a;
    text-align: center;
    letter-spacing: .02em;
    margin-bottom: 10px;
    font-family: 'LINE Seed JP', 'Google Sans', 'Helvetica Neue', Arial, sans-serif;
}
.fp-conditions-ja {
    font-size: 16px;
    color: #1a1a1a;
    text-align: center;
    letter-spacing: .08em;
    margin-bottom: 40px;
}
.fp-conditions-list {
    list-style: none;
    padding: 0;
    margin: 0;
    display: flex;
    flex-direction: column;
    gap: 18px;
}
.fp-conditions-list li {
    font-size: 16px;
    color: #1a1a1a;
    padding-left: 28px;
    position: relative;
    line-height: 1.7;
    letter-spacing: .02em;
}
.fp-conditions-list li::before {
    content: '■';
    position: absolute;
    left: 0;
    font-size: 12px;
    color: #1a1a1a;
    top: 4px;
}

/* ================================================
   ABOUT v2 — 中央・円形写真
   ================================================ */
.fp-section--about {
    background: #ffffff;
    padding: 100px 52px 80px;
    text-align: center;
}
.fp-about-heading {
    font-size: 22px;
    font-weight: 400;
    color: #1a1a1a;
    letter-spacing: .3em;
    margin-bottom: 60px;
    font-family: 'LINE Seed JP', 'Noto Serif JP', 'Hiragino Mincho ProN', serif;
}
.fp-about-photo-circle {
    display: flex;
    justify-content: center;
    margin-bottom: 48px;
}
.fp-about-circle-placeholder {
    width: 280px;
    height: 280px;
    border-radius: 50%;
    background: #3a3a3a;
}
.fp-about-company {
    margin-bottom: 36px;
}
.fp-about-company-name {
    font-size: 20px;
    font-weight: 400;
    color: #1a1a1a;
    letter-spacing: .12em;
    margin-bottom: 10px;
    font-family: 'LINE Seed JP', 'Noto Serif JP', 'Hiragino Mincho ProN', serif;
}
.fp-about-company-role {
    font-size: 20px;
    font-weight: 400;
    color: #1a1a1a;
    letter-spacing: .12em;
    font-family: 'LINE Seed JP', 'Noto Serif JP', 'Hiragino Mincho ProN', serif;
}
.fp-about-bio-wrap {
    max-width: 560px;
    margin: 0 auto;
}
.fp-about-bio-text {
    font-size: 15px;
    color: #555;
    line-height: 2.0;
    letter-spacing: .04em;
    margin-bottom: 24px;
    text-align: left;
}
.fp-about-tags {
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
    justify-content: center;
}
.fp-about-tags span {
    font-size: 12px;
    color: #888;
    background: #f0f0ee;
    border-radius: 20px;
    padding: 5px 14px;
}

/* About 本文 — 幅広・左寄せ・読みやすく */
.fp-about-bio-wrap {
    max-width: 680px !important;
    margin: 0 auto !important;
    text-align: left !important;
}
.fp-about-bio-text {
    font-size: 16px !important;
    color: #1a1a1a !important;
    line-height: 2.0 !important;
    letter-spacing: .04em !important;
    font-family: 'LINE Seed JP', 'Noto Sans JP', 'Hiragino Kaku Gothic ProN', sans-serif !important;
}

/* ================================================
   ARE YOU READY CTA セクション
   ================================================ */
.fp-section--cta {
    background: #ffffff;
    padding: 120px 52px 140px;
    text-align: center;
}
.fp-cta-title {
    font-size: clamp(48px, 7vw, 80px);
    font-weight: 900;
    color: #1a1a1a;
    letter-spacing: .02em;
    margin-bottom: 20px;
    font-family: 'LINE Seed JP', 'Google Sans', 'Helvetica Neue', Arial, sans-serif;
    line-height: 1.1;
}
.fp-cta-sub {
    font-size: 18px;
    font-weight: 400;
    color: #1a1a1a;
    letter-spacing: .08em;
    margin-bottom: 48px;
}
.fp-cta-line {
    width: 60%;
    max-width: 680px;
    height: 1px;
    background: #d0d0d0;
    margin: 0 auto 64px;
}
.fp-cta-btn {
    display: inline-block;
    background: #3a3a3a;
    color: #fff !important;
    font-size: 18px;
    font-weight: 500;
    padding: 22px 40px;
    border-radius: 4px;
    text-decoration: none !important;
    letter-spacing: .08em;
    transition: background .2s;
    white-space: nowrap;
}
.fp-cta-btn:hover { background: #222; }

/* ================================================
   FOOTER v2 — MORIDOJO デザイン
   ================================================ */
.site-footer-new {
    background: #3a3a3a;
    text-align: center;
    padding: 80px 40px 48px;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 48px;
}

/* ロゴ */
.ft-logo-wrap { display: flex; flex-direction: column; align-items: center; gap: 4px; }
.ft-logo-main {
    font-size: 64px;
    font-weight: 900;
    color: #ffffff;
    letter-spacing: .04em;
    line-height: 1.05;
    font-family: 'LINE Seed JP', 'Google Sans', 'Helvetica Neue', Arial, sans-serif;
}
.ft-logo-sub {
    font-size: 54px;
    font-weight: 300;
    color: #ffffff;
    letter-spacing: .01em;
    line-height: 1.05;
    font-family: 'LINE Seed JP', 'Google Sans', 'Helvetica Neue', Arial, sans-serif;
}
.ft-logo-supported {
    font-size: 13px;
    font-weight: 600;
    color: #aaaaaa;
    letter-spacing: .14em;
    margin-top: 10px;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 4px;
}

/* ナビ */
.ft-nav {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    justify-content: center;
    gap: 10px 4px;
}
.ft-nav a {
    font-size: 16px;
    color: #cccccc;
    text-decoration: none;
    letter-spacing: .02em;
    transition: color .15s;
}
.ft-nav a:hover { color: #ffffff; }
.ft-nav span { color: #666; font-size: 16px; }

/* SNS */
.ft-sns {
    display: flex;
    gap: 20px;
    align-items: center;
    justify-content: center;
}
.ft-sns-btn {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 52px;
    height: 52px;
    border-radius: 50%;
    border: 2px solid #ffffff;
    color: #ffffff;
    text-decoration: none;
    transition: background .15s;
}
.ft-sns-btn:hover { background: rgba(255,255,255,.1); }
.ft-sns-line {
    background: #06C755;
    border-color: #06C755;
}
.ft-sns-line:hover { background: #05a848; border-color: #05a848; }

/* コピーライト */
.ft-copy {
    font-size: 13px;
    color: #666;
    letter-spacing: .1em;
}

/* ===== MEMBER LOGIN STATE ===== */
.fp-left-username {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 12px 20px 4px;
}
.fp-left-username-avatar {
  width: 36px; height: 36px;
  border-radius: 50%;
  background: #3a3a3a;
  color: #fff;
  font-size: 15px;
  font-weight: 700;
  display: flex; align-items: center; justify-content: center;
  flex-shrink: 0;
}
.fp-left-username span {
  font-size: 13px;
  color: #f0f0ee;
  font-weight: 500;
}

/* Morning Section */
.fp-section--morning { padding: 56px 0; }
.fp-morning-header { text-align: center; margin-bottom: 36px; }
.fp-morning-en { font-size: clamp(22px,3vw,30px); font-weight: 700; letter-spacing: .1em; color: #1a1a1a; }
.fp-morning-ja { font-size: 13px; color: #888; letter-spacing: .05em; margin-top: 4px; }
.fp-morning-list { display: flex; flex-direction: column; gap: 1px; border-top: 1px solid #e0e0de; }
.fp-morning-item {
  display: flex; align-items: center; justify-content: space-between;
  padding: 20px 0; border-bottom: 1px solid #e0e0de; gap: 16px;
}
.fp-morning-item--past { opacity: .7; }
.fp-morning-item-body { flex: 1; }
.fp-morning-item-title { font-size: 14px; font-weight: 600; color: #1a1a1a; margin: 0 0 6px; }
.fp-morning-item-title a { color: inherit; text-decoration: none; }
.fp-morning-item-title a:hover { text-decoration: underline; }
.fp-morning-item-date { font-size: 12px; color: #888; margin: 0; }
.fp-morning-badge {
  flex-shrink: 0;
  padding: 6px 18px; border-radius: 20px; font-size: 12px; font-weight: 600;
  text-decoration: none; letter-spacing: .05em;
}
.fp-morning-badge--join { background: #1a1a1a; color: #fff; }
.fp-morning-badge--past { background: #e8e8e8; color: #666; }
.fp-morning-more-wrap { text-align: right; margin-top: 24px; }
.fp-morning-more-btn {
  display: inline-block; font-size: 13px; font-weight: 600;
  color: #1a1a1a; border-bottom: 1px solid #1a1a1a;
  text-decoration: none; padding-bottom: 2px; letter-spacing: .08em;
}

/* Calendar Section */
.fp-section--calendar { padding: 56px 0; }
.fp-calendar-header { text-align: center; margin-bottom: 36px; }
.fp-calendar-en { font-size: clamp(22px,3vw,30px); font-weight: 700; letter-spacing: .1em; color: #1a1a1a; }
.fp-calendar-ja { font-size: 13px; color: #888; letter-spacing: .05em; margin-top: 4px; }
.fp-calendar-placeholder {
  text-align: center; padding: 60px 20px; color: #aaa;
  border: 1px dashed #e0e0de; border-radius: 8px;
}
.fp-calendar-placeholder p { margin-top: 12px; font-size: 14px; }

/* Right sidebar - member card */
.fp-right-card--member { padding: 24px 20px; }
.fp-right-member-welcome { text-align: center; padding: 8px 0 16px; }
.fp-right-member-avatar {
  width: 56px; height: 56px; border-radius: 50%;
  background: #2d2d2d; color: #fff;
  font-size: 22px; font-weight: 700;
  display: flex; align-items: center; justify-content: center;
  margin: 0 auto 10px;
}
.fp-right-member-name { font-size: 15px; font-weight: 700; color: #1a1a1a; margin: 0 0 4px; }
.fp-right-member-label { font-size: 11px; color: #888; letter-spacing: .1em; margin: 0; }
.fp-right-member-nav { display: flex; flex-direction: column; gap: 2px; padding: 16px 0; }
.fp-right-member-nav-item {
  display: flex; align-items: center; gap: 10px;
  padding: 12px 8px; font-size: 13px; font-weight: 500; color: #1a1a1a;
  text-decoration: none; border-radius: 6px; transition: background .2s;
}
.fp-right-member-nav-item:hover { background: #f5f5f3; }
.fp-right-logout-btn {
  display: block; text-align: center;
  padding: 12px; margin-top: 8px;
  font-size: 13px; font-weight: 600; letter-spacing: .08em;
  color: #888; border: 1px solid #e0e0de; border-radius: 6px;
  text-decoration: none; transition: all .2s;
}
.fp-right-logout-btn:hover { color: #1a1a1a; border-color: #1a1a1a; }

/* ===== LEFT SIDEBAR MEMBER BLOCK ===== */
.fp-left-member-block {
  text-align: center;
  padding: 20px 16px 16px;
  border-bottom: 1px solid rgba(255,255,255,.12);
  margin-bottom: 8px;
}
.fp-left-member-avatar {
  width: 52px; height: 52px; border-radius: 50%;
  background: rgba(255,255,255,.15);
  border: 2px solid rgba(255,255,255,.3);
  color: #fff;
  font-size: 20px; font-weight: 700;
  display: flex; align-items: center; justify-content: center;
  margin: 0 auto 10px;
}
.fp-left-member-name {
  font-size: 14px; font-weight: 600;
  color: #f0f0ee; margin: 0 0 8px;
  letter-spacing: .03em;
}
.fp-left-mypage-link {
  display: inline-block;
  font-size: 11px; letter-spacing: .08em;
  color: rgba(240,240,238,.6);
  text-decoration: none; border-bottom: 1px solid rgba(240,240,238,.3);
  padding-bottom: 1px; transition: color .2s;
}
.fp-left-mypage-link:hover { color: #f0f0ee; }

/* ===== MORNING CARD LAYOUT ===== */
.fp-section--morning { padding: 64px 0; }
.fp-morning-header { text-align: center; margin-bottom: 48px; }
.fp-morning-en { font-size: clamp(26px,3.5vw,42px); font-weight: 700; letter-spacing: .04em; color: #1a1a1a; margin: 0 0 10px; }
.fp-morning-ja { font-size: 14px; color: #888; letter-spacing: .05em; margin: 0; }

.fp-morning-list { display: flex; flex-direction: column; gap: 22px; max-width: 560px; margin: 0 auto; }

.fp-morning-card {
  display: block;
  background: #fff; border: none; border-radius: 0;
  box-shadow: 0 2px 14px rgba(0,0,0,.07);
  overflow: hidden;
  transition: box-shadow .3s ease, transform .3s ease, border-color .3s ease;
}
.fp-morning-card:hover { box-shadow: 0 14px 34px rgba(0,0,0,.12); transform: translateY(-3px); border-color: #1a1a1a; }
.fp-morning-card--past { opacity: .8; }

.fp-morning-card-thumb {
  position: relative;
  width: 100%; height: 230px; border-radius: 0; overflow: hidden; background: #1a1a1a;
}
.fp-morning-card-thumb img {
  width: 100%; height: 100%; object-fit: cover; display: block;
  transition: transform .5s ease;
}
.fp-morning-card:hover .fp-morning-card-thumb img { transform: scale(1.05); }
.fp-morning-card-thumb-placeholder { width: 100%; height: 100%; background: linear-gradient(135deg,#2a2a2a,#111); }
.fp-morning-card-grad {
  position: absolute; left: 0; right: 0; bottom: 0; height: 55%;
  background: linear-gradient(to top, rgba(0,0,0,.55), transparent);
  pointer-events: none;
}
.fp-morning-card-tag {
  position: absolute; top: 14px; left: 14px; z-index: 2;
  background: #1a1a1a; color: #fff;
  font-size: 10px; font-weight: 700; letter-spacing: .18em;
  padding: 6px 12px;
}
.fp-morning-card--past .fp-morning-card-tag { background: #666; }

.fp-morning-card-body {
  display: flex; flex-direction: column; gap: 14px;
  padding: 22px 24px 24px;
}
.fp-morning-card-title { font-size: 18px; font-weight: 700; color: #1a1a1a; margin: 0; line-height: 1.5; letter-spacing: .01em; }
.fp-morning-card-title a { color: inherit; text-decoration: none; }
.fp-morning-card-title a:hover { opacity: .65; }
.fp-morning-card-date {
  display: flex; align-items: center; gap: 7px;
  font-size: 13px; color: #999; margin: 0; letter-spacing: .04em;
  padding-bottom: 16px; border-bottom: 1px solid #ededea;
}

.fp-morning-card-btn {
  display: flex; align-items: center; justify-content: center; gap: 10px;
  width: 100%; padding: 15px 0; border-radius: 0;
  background: #1a1a1a; color: #fff;
  font-size: 14px; font-weight: 700; letter-spacing: .08em;
  text-decoration: none;
  transition: background .25s ease, letter-spacing .25s ease;
}
.fp-morning-card-btn svg { transition: transform .25s ease; }
.fp-morning-card-btn:hover { background: #000; letter-spacing: .12em; }
.fp-morning-card-btn:hover svg { transform: translateX(4px); }
.fp-morning-card-btn--past { background: #555; }
.fp-morning-card-btn--past:hover { background: #3a3a3a; }

/* Information(最新情報)カード: バナー画像のみのクリーンなカード（タイトル/日付/ボタン非表示・画像はフル表示で高画質・トリミングなし） */
#information .fp-morning-card-body { display: none !important; }
#information .fp-morning-card-grad { display: none !important; }
#information .fp-morning-card-thumb { height: auto !important; background: transparent !important; }
#information .fp-morning-card-thumb img { height: auto !important; object-fit: contain !important; }

/* Column(コラム)カード: バナー画像のみのクリーンなカード（タイトル/日付/ボタン非表示・画像はフル表示で高画質・トリミングなし） */
#column .fp-morning-card-body { display: none !important; }
#column .fp-morning-card-grad { display: none !important; }
#column .fp-morning-card-thumb { height: auto !important; background: transparent !important; }
#column .fp-morning-card-thumb img { height: auto !important; object-fit: contain !important; }

/* Column(コラム): PCでは2カラム横並び・スマホでは1カラム */
@media (min-width: 768px) {
  #column .fp-morning-list {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 28px;
    max-width: 1080px;
    margin: 0 auto;
  }
  #column .fp-morning-card { margin: 0; }
}

@media (max-width: 600px) {
  .fp-morning-list { gap: 18px; }
  .fp-morning-card-thumb { height: 190px; }
  .fp-morning-card-body { padding: 20px 18px 22px; gap: 12px; }
  .fp-morning-card-title { font-size: 16px; }
  .fp-section--morning .fp-morning-list,
  .fp-section--morning .fp-morning-more-wrap {
    padding-left: 20px !important;
    padding-right: 20px !important;
  }
}

.fp-morning-more-wrap { text-align: center; margin-top: 40px; }
.fp-morning-more-btn {
  display: inline-block;
  padding: 15px 80px; border-radius: 0;
  background: #1a1a1a; color: #fff;
  font-size: 14px; font-weight: 700; letter-spacing: .12em;
  text-decoration: none; transition: background .2s;
}
.fp-morning-more-btn:hover { background: #000; }

/* Morning カード 左右余白 */
.fp-section--morning .fp-morning-list,
.fp-section--morning .fp-morning-more-wrap {
  padding-left: 40px !important;
  padding-right: 40px !important;
}

/* ===== SECTION BACKGROUND COLORS ===== */
.fp-section--morning {
  background: #efefed !important;
  margin: 0 !important;
  padding-left: 0 !important;
  padding-right: 0 !important;
}
.fp-section--column {
  background: #2d2d2d !important;
  margin: 0 !important;
  padding: 64px 40px !important;
}
.fp-section--column .fp-column-header h2,
.fp-section--column .fp-column-en { color: #fff !important; }
.fp-section--column .fp-column-ja { color: rgba(255,255,255,.6) !important; }
.fp-section--column .fp-col-card { background: rgba(255,255,255,.06) !important; }
.fp-section--column .fp-col-ttl { color: #f0f0ee !important; }
.fp-section--column .fp-col-meta { color: rgba(240,240,238,.5) !important; }
.fp-section--column .fp-col-more-btn {
  color: #fff !important;
  border-color: #fff !important;
}

/* ===== COLUMN ROW CARD LAYOUT (ログイン後) ===== */
.fp-section--column {
  background: #3a3a3a !important;
  padding: 64px 40px !important;
}
.fp-section--column .fp-column-header { text-align: center; margin-bottom: 48px; }
.fp-section--column .fp-column-en { font-size: clamp(26px,3.5vw,42px); font-weight: 700; color: #fff !important; margin: 0 0 10px; }
.fp-section--column .fp-column-ja { font-size: 14px; color: rgba(255,255,255,.6) !important; margin: 0; }

.fp-col-list--card { display: flex; flex-direction: column; gap: 16px; }

.fp-col-row {
  display: flex; align-items: center; gap: 16px;
  background: rgba(255,255,255,.08); border: 1px solid rgba(255,255,255,.12);
  border-radius: 16px; padding: 16px 16px;
  transition: background .2s;
}
.fp-col-row:hover { background: rgba(255,255,255,.12); }

.fp-col-row-thumb {
  flex-shrink: 0;
  width: 130px; height: 86px; border-radius: 8px; overflow: hidden;
  background: #2d2d2d; display: block;
}
.fp-col-row-thumb img { width: 100%; height: 100%; object-fit: cover; display: block; }
.fp-col-row-thumb-placeholder { display: block; width: 100%; height: 100%; background: #3d3d3d; }

.fp-col-row-body { flex: 1; min-width: 0; }
.fp-col-row-ttl {
  display: block; font-size: 14px; font-weight: 600;
  color: #f0f0ee !important; text-decoration: none;
  line-height: 1.6; margin-bottom: 10px;
}
.fp-col-row-ttl:hover { text-decoration: underline; }
.fp-col-row-meta {
  display: flex; align-items: center; gap: 6px;
  font-size: 12px; color: rgba(240,240,238,.5) !important;
}

/* More ボタン (Column内) */
.fp-section--column .fp-col-more-wrap { text-align: center; margin-top: 40px; }
.fp-section--column .fp-col-more-btn {
  display: inline-block;
  padding: 14px 80px; border-radius: 32px;
  background: transparent; color: #fff !important;
  border: 2px solid #fff !important;
  font-size: 14px; font-weight: 700; letter-spacing: .1em;
  text-decoration: none; transition: all .2s;
}
.fp-section--column .fp-col-more-btn:hover { background: #fff; color: #2d2d2d !important; }

/* ===== EVENT LIST (Calendar section) ===== */
.fp-section--calendar { background: #f7f7f5; padding: 64px 40px !important; }
.fp-calendar-header { text-align: center; margin-bottom: 48px; }
.fp-calendar-en { font-size: clamp(26px,3.5vw,42px); font-weight: 700; letter-spacing: .04em; color: #1a1a1a; margin: 0 0 10px; }
.fp-calendar-ja { font-size: 14px; color: #888; margin: 0; }

.fp-event-list { display: flex; flex-direction: column; }

.fp-event-item {
  display: flex; align-items: center; gap: 24px;
  padding: 20px 24px; border-bottom: 1px solid #e8e8e6;
  text-decoration: none; transition: background .2s; background: #fff;
  border-radius: 0;
}
.fp-event-list .fp-event-item:first-child { border-radius: 12px 12px 0 0; border-top: 1px solid #e8e8e6; }
.fp-event-list .fp-event-item:last-child  { border-radius: 0 0 12px 12px; }
.fp-event-item:hover { background: #f5f5f3; }
.fp-event-item--past { opacity: .6; }

.fp-event-date-block {
  flex-shrink: 0; width: 52px; text-align: center;
  background: #2d2d2d; color: #fff; border-radius: 8px; padding: 6px 0;
}
.fp-event-item--past .fp-event-date-block { background: #999; }
.fp-event-month { display: block; font-size: 11px; font-weight: 600; letter-spacing: .08em; text-transform: uppercase; }
.fp-event-day   { display: block; font-size: 22px; font-weight: 700; line-height: 1.1; }

.fp-event-body { flex: 1; min-width: 0; }
.fp-event-title { font-size: 14px; font-weight: 600; color: #1a1a1a; margin: 0 0 6px; line-height: 1.5; }
.fp-event-meta  { display: flex; align-items: center; gap: 16px; margin: 0; flex-wrap: wrap; }
.fp-event-meta span { display: flex; align-items: center; gap: 4px; font-size: 12px; color: #888; }

.fp-event-arrow { flex-shrink: 0; color: #bbb; }
.fp-event-badge--past {
  font-size: 11px; font-weight: 600; color: #999;
  border: 1px solid #ddd; border-radius: 12px; padding: 3px 10px;
}
.fp-event-empty { text-align: center; padding: 40px; color: #aaa; font-size: 14px; }

/* ===== EVENT SINGLE PAGE ===== */
.ev-wrap { max-width: 100%; padding: 40px 0 80px; }
.ev-inner { max-width: 760px; margin: 0 auto; padding: 0 24px; }

.ev-breadcrumb { display: flex; align-items: center; gap: 8px; font-size: 12px; color: #aaa; margin-bottom: 32px; flex-wrap: wrap; }
.ev-breadcrumb a { color: #888; text-decoration: none; } .ev-breadcrumb a:hover { text-decoration: underline; }

.ev-thumb { border-radius: 16px; overflow: hidden; margin-bottom: 32px; }
.ev-thumb img { width: 100%; height: 360px; object-fit: cover; display: block; }
.ev-title { font-size: clamp(22px,3vw,32px); font-weight: 700; color: #1a1a1a; margin: 0 0 28px; line-height: 1.4; }

.ev-meta-list { display: flex; flex-direction: column; gap: 0; border: 1px solid #e8e8e6; border-radius: 12px; overflow: hidden; margin-bottom: 40px; background: #fafaf8; }
.ev-meta-item { display: flex; padding: 16px 20px; border-bottom: 1px solid #e8e8e6; gap: 16px; }
.ev-meta-item:last-child { border-bottom: none; }
.ev-meta-item dt { display: flex; align-items: center; gap: 6px; font-size: 13px; font-weight: 600; color: #555; min-width: 80px; flex-shrink: 0; }
.ev-meta-item dd { font-size: 14px; color: #1a1a1a; margin: 0; }

.ev-content { font-size: 15px; line-height: 1.9; color: #333; margin-bottom: 56px; }
.ev-content p { margin-bottom: 1.2em; }

/* 参加フォーム */
.ev-form-section { background: #f7f7f5; border-radius: 16px; padding: 40px; margin-bottom: 40px; }
.ev-form-title { font-size: 20px; font-weight: 700; color: #1a1a1a; margin: 0 0 28px; }
.ev-form-error { color: #e53; background: #fff0ef; border: 1px solid #fcc; border-radius: 8px; padding: 12px 16px; font-size: 14px; margin-bottom: 20px; }
.ev-form-group { margin-bottom: 20px; }
.ev-form-label { display: block; font-size: 13px; font-weight: 600; color: #333; margin-bottom: 8px; }
.ev-required { background: #2d2d2d; color: #fff; font-size: 10px; border-radius: 4px; padding: 2px 6px; margin-left: 8px; font-weight: 600; letter-spacing: .03em; }
.ev-form-input, .ev-form-textarea {
  width: 100%; padding: 14px 16px; border: 1px solid #ddd; border-radius: 8px;
  font-size: 14px; color: #1a1a1a; background: #fff;
  box-sizing: border-box; transition: border .2s;
  font-family: inherit;
}
.ev-form-input:focus, .ev-form-textarea:focus { outline: none; border-color: #2d2d2d; }
.ev-form-textarea { resize: vertical; }
.ev-form-submit {
  width: 100%; padding: 18px; border-radius: 40px;
  background: #2d2d2d; color: #fff; border: none;
  font-size: 16px; font-weight: 700; letter-spacing: .08em;
  cursor: pointer; transition: background .2s; margin-top: 8px;
}
.ev-form-submit:hover { background: #1a1a1a; }

/* 完了画面 */
.ev-complete { text-align: center; padding: 80px 20px; }
.ev-complete-icon { color: #2d2d2d; margin-bottom: 24px; }
.ev-complete-title { font-size: 22px; font-weight: 700; margin: 0 0 16px; }
.ev-complete-text { font-size: 15px; color: #666; margin: 0 0 32px; line-height: 1.8; }
.ev-complete-btn {
  display: inline-block; padding: 14px 56px; border-radius: 32px;
  background: #2d2d2d; color: #fff; text-decoration: none;
  font-size: 14px; font-weight: 700; letter-spacing: .08em;
}

.ev-back-wrap { text-align: center; }
.ev-back-link { display: inline-flex; align-items: center; gap: 6px; font-size: 13px; color: #888; text-decoration: none; }
.ev-back-link:hover { color: #1a1a1a; }

/* ===== EVENT SINGLE PAGE (updated) ===== */
.ev-wrap { padding: 40px 0 80px; }
.ev-inner { max-width: 760px; margin: 0 auto; padding: 0 32px; }
.ev-breadcrumb { display: flex; align-items: center; gap: 6px; font-size: 12px; color: #aaa; margin-bottom: 32px; flex-wrap: wrap; }
.ev-breadcrumb a { color: #888; text-decoration: none; }
.ev-breadcrumb a:hover { text-decoration: underline; }
.ev-bc-sep { color: #ccc; }

/* ステータスバッジ */
.ev-status-badge { display: inline-block; font-size: 11px; font-weight: 700; letter-spacing: .08em; border-radius: 20px; padding: 4px 14px; margin-bottom: 14px; }
.ev-status-badge--open { background: #e8f5e9; color: #2e7d32; }
.ev-status-badge--past { background: #f5f5f5; color: #999; }

.ev-thumb { border-radius: 16px; overflow: hidden; margin-bottom: 28px; }
.ev-thumb img { width: 100%; height: 400px; object-fit: cover; display: block; }
.ev-title { font-size: clamp(20px,3vw,30px); font-weight: 700; color: #1a1a1a; margin: 0 0 28px; line-height: 1.4; }

/* メタ情報 */
.ev-meta-list { border: 1px solid #e8e8e6; border-radius: 14px; overflow: hidden; margin-bottom: 40px; background: #fafaf8; }
.ev-meta-item { display: flex; align-items: flex-start; padding: 16px 20px; border-bottom: 1px solid #eee; gap: 16px; }
.ev-meta-item:last-child { border-bottom: none; }
.ev-meta-item dt { display: flex; align-items: center; gap: 8px; font-size: 13px; font-weight: 600; color: #666; min-width: 90px; flex-shrink: 0; padding-top: 2px; }
.ev-meta-item dd { font-size: 14px; color: #1a1a1a; margin: 0; line-height: 1.6; }
.ev-price-free { background: #e8f5e9; color: #2e7d32; font-weight: 700; padding: 2px 10px; border-radius: 12px; font-size: 13px; }
.ev-price-amount { font-size: 20px; font-weight: 700; color: #1a1a1a; }
.ev-price-tax { font-size: 12px; color: #888; margin-left: 4px; }

.ev-content { font-size: 15px; line-height: 1.9; color: #333; margin-bottom: 56px; }
.ev-content p { margin-bottom: 1.4em; }

/* 参加申込エリア */
.ev-apply-section { margin-bottom: 48px; }
.ev-apply-past { text-align: center; padding: 40px; background: #f5f5f3; border-radius: 14px; color: #999; }
.ev-apply-past a { color: #555; }

/* ログイン促進 */
.ev-apply-login { text-align: center; background: #f7f7f5; border-radius: 16px; padding: 48px 32px; }
.ev-apply-login-icon { color: #ccc; margin-bottom: 20px; }
.ev-apply-login h3 { font-size: 18px; font-weight: 700; color: #1a1a1a; margin: 0 0 10px; }
.ev-apply-login p { font-size: 14px; color: #888; margin: 0 0 28px; }
.ev-apply-login-btns { display: flex; gap: 12px; justify-content: center; flex-wrap: wrap; }
.ev-btn { display: inline-block; padding: 14px 32px; border-radius: 32px; font-size: 14px; font-weight: 700; letter-spacing: .05em; text-decoration: none; transition: all .2s; }
.ev-btn--primary { background: #2d2d2d; color: #fff; }
.ev-btn--primary:hover { background: #1a1a1a; }
.ev-btn--outline { background: transparent; color: #2d2d2d; border: 2px solid #2d2d2d; }
.ev-btn--outline:hover { background: #2d2d2d; color: #fff; }

/* 申込ボックス */
.ev-apply-box { background: #f7f7f5; border-radius: 20px; padding: 40px; }
.ev-apply-title { font-size: 20px; font-weight: 700; color: #1a1a1a; margin: 0 0 24px; }
.ev-apply-summary { background: #fff; border-radius: 12px; padding: 20px 24px; margin-bottom: 28px; border: 1px solid #e8e8e6; }
.ev-apply-event-name { font-size: 14px; font-weight: 600; color: #1a1a1a; margin-bottom: 14px; padding-bottom: 14px; border-bottom: 1px solid #f0f0ee; }
.ev-apply-price-row { display: flex; justify-content: space-between; align-items: center; font-size: 14px; color: #555; }
.ev-apply-price-val { font-size: 22px; font-weight: 700; color: #1a1a1a; }
.ev-apply-price-val strong { font-size: 18px; color: #2e7d32; }
.ev-apply-price-val small { font-size: 12px; color: #888; font-weight: 400; margin-left: 4px; }
.ev-apply-submit {
  width: 100%; display: flex; align-items: center; justify-content: center; gap: 10px;
  padding: 20px; border-radius: 40px; border: none; cursor: pointer;
  background: #2d2d2d; color: #fff;
  font-size: 16px; font-weight: 700; letter-spacing: .06em;
  transition: background .2s; font-family: inherit;
}
.ev-apply-submit:hover { background: #1a1a1a; }
.ev-apply-stripe-note { display: flex; align-items: center; gap: 6px; font-size: 12px; color: #aaa; text-align: center; justify-content: center; margin-top: 12px; }

/* 完了・キャンセル画面 */
.ev-complete { text-align: center; padding: 80px 20px; }
.ev-complete-icon { margin-bottom: 24px; }
.ev-complete-title { font-size: 24px; font-weight: 700; color: #1a1a1a; margin: 0 0 16px; }
.ev-complete-text { font-size: 15px; color: #666; margin: 0 0 36px; line-height: 1.9; }
.ev-complete-btn { display: inline-block; padding: 16px 64px; border-radius: 40px; background: #2d2d2d; color: #fff; text-decoration: none; font-size: 15px; font-weight: 700; letter-spacing: .08em; transition: background .2s; }
.ev-complete-btn:hover { background: #1a1a1a; }

.ev-back-wrap { text-align: center; padding-top: 20px; }
.ev-back-link { display: inline-flex; align-items: center; gap: 6px; font-size: 13px; color: #aaa; text-decoration: none; }
.ev-back-link:hover { color: #333; }

/* ===== EVENT DETAIL PAGE (fix) ===== */
.ev-wrap { background:#fff; min-height:60vh; padding:48px 0 100px; }
.ev-inner { max-width:720px; margin:0 auto; padding:0 32px; }
.ev-breadcrumb { display:flex; align-items:center; gap:8px; font-size:12px; color:#aaa; margin-bottom:36px; flex-wrap:wrap; }
.ev-breadcrumb a { color:#888; text-decoration:none; }
.ev-bc-sep { color:#ddd; }

.ev-thumb { border-radius:14px; overflow:hidden; margin-bottom:28px; background:#2d2d2d; }
.ev-thumb img { width:100%; height:380px; object-fit:cover; display:block; }
.ev-thumb--placeholder { height:240px; background:linear-gradient(135deg,#2d2d2d,#555); }

.ev-meta-top { display:flex; gap:8px; flex-wrap:wrap; margin-bottom:16px; }
.ev-badge { display:inline-block; font-size:11px; font-weight:700; letter-spacing:.08em; border-radius:20px; padding:4px 14px; }
.ev-badge--open  { background:#e8f5e9; color:#2e7d32; }
.ev-badge--past  { background:#f5f5f5; color:#999; }
.ev-badge--free  { background:#e3f2fd; color:#1565c0; }
.ev-badge--price { background:#2d2d2d; color:#fff; }

.ev-title { font-size:clamp(20px,3.5vw,30px); font-weight:800; color:#1a1a1a; margin:0 0 32px; line-height:1.4; }

.ev-meta-list { border:1px solid #eee; border-radius:14px; overflow:hidden; background:#fafaf8; margin-bottom:40px; }
.ev-meta-item { display:flex; align-items:flex-start; padding:16px 20px; border-bottom:1px solid #f0f0ee; gap:14px; }
.ev-meta-item:last-child { border-bottom:none; }
.ev-meta-item dt { display:flex; align-items:center; gap:7px; font-size:12px; font-weight:700; color:#777; min-width:72px; flex-shrink:0; padding-top:2px; text-transform:uppercase; letter-spacing:.04em; }
.ev-meta-item dd { font-size:14px; color:#1a1a1a; margin:0; line-height:1.6; }

.ev-content { font-size:15px; line-height:2; color:#333; margin-bottom:56px; }
.ev-content p { margin-bottom:1.4em; }

/* 申込エリア */
.ev-apply-section { margin-bottom:56px; }
.ev-apply-ended { text-align:center; padding:40px; background:#f5f5f3; border-radius:14px; color:#999; font-size:14px; }
.ev-apply-ended a { color:#666; }

.ev-apply-login { text-align:center; background:#f7f7f5; border-radius:18px; padding:52px 32px; }
.ev-apply-login h3 { font-size:17px; font-weight:700; color:#1a1a1a; margin:16px 0 8px; }
.ev-apply-login p  { font-size:13px; color:#999; margin:0 0 28px; }
.ev-apply-login-btns { display:flex; gap:12px; justify-content:center; flex-wrap:wrap; }
.ev-btn { display:inline-block; padding:14px 32px; border-radius:32px; font-size:14px; font-weight:700; letter-spacing:.05em; text-decoration:none; transition:all .2s; }
.ev-btn--dark { background:#2d2d2d; color:#fff; }
.ev-btn--dark:hover { background:#1a1a1a; }
.ev-btn--outline { background:transparent; color:#2d2d2d; border:2px solid #2d2d2d; }
.ev-btn--outline:hover { background:#2d2d2d; color:#fff; }

.ev-apply-box { background:#f7f7f5; border-radius:20px; padding:40px; }
.ev-apply-title { font-size:20px; font-weight:700; color:#1a1a1a; margin:0 0 24px; }
.ev-apply-summary { background:#fff; border-radius:12px; padding:20px 24px; margin-bottom:28px; border:1px solid #eee; }
.ev-apply-event-name { font-size:14px; font-weight:600; color:#1a1a1a; margin:0 0 14px; padding-bottom:14px; border-bottom:1px solid #f0f0ee; }
.ev-apply-price-row { display:flex; justify-content:space-between; align-items:center; font-size:13px; color:#888; }
.ev-apply-price-val { font-size:22px; font-weight:800; color:#1a1a1a; }
.ev-apply-price-val small { font-size:12px; color:#aaa; font-weight:400; margin-left:4px; }
.ev-price-free { color:#2e7d32; }
.ev-apply-submit {
  width:100%; display:flex; align-items:center; justify-content:center; gap:10px;
  padding:20px; border-radius:40px; border:none; cursor:pointer;
  background:#2d2d2d; color:#fff; font-size:16px; font-weight:700;
  letter-spacing:.06em; transition:background .2s; font-family:inherit;
}
.ev-apply-submit:hover { background:#1a1a1a; }
.ev-stripe-note { display:flex; align-items:center; justify-content:center; gap:6px; font-size:12px; color:#bbb; margin-top:12px; text-align:center; }

/* 申込済み */
.ev-registered-box { display:flex; align-items:center; justify-content:center; gap:10px; background:#f0fdf4; border:1.5px solid #86efac; border-radius:12px; padding:16px 20px; font-size:15px; font-weight:600; color:#16a34a; }
.ev-registered-note { text-align:center; font-size:13px; color:#888; margin-top:10px; }

/* 完了画面 */
.ev-complete { text-align:center; padding:80px 24px; }
.ev-complete-icon { margin-bottom:24px; }
.ev-complete-title { font-size:24px; font-weight:800; color:#1a1a1a; margin:0 0 16px; }
.ev-complete-text { font-size:15px; color:#666; margin:0 0 40px; line-height:1.9; }
.ev-complete-btn { display:inline-block; padding:16px 64px; border-radius:40px; background:#2d2d2d; color:#fff; text-decoration:none; font-size:15px; font-weight:700; letter-spacing:.08em; }
.ev-complete-btn--outline { background:transparent; color:#888; border:2px solid #ddd; }

.ev-back-wrap { text-align:center; padding-top:16px; }
.ev-back-link { display:inline-flex; align-items:center; gap:6px; font-size:13px; color:#bbb; text-decoration:none; }
.ev-back-link:hover { color:#555; }

/* ===== RIGHT SIDEBAR MEMBER CARD (redesign) ===== */
.fp-right-card--member {
  background: #2d2d2d !important;
  border-radius: 16px !important;
  padding: 24px 20px 28px !important;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 0;
}
.fp-right-card--member .fp-right-card-line {
  width: 100%;
  height: 1px;
  background: rgba(255,255,255,.15);
  margin: 16px 0;
}
.fp-right-member-avatar-wrap {
  width: 90px; height: 90px;
  border-radius: 50%;
  overflow: hidden;
  background: #fff;
  margin: 8px 0 16px;
  flex-shrink: 0;
}
.fp-right-member-avatar-img {
  width: 100%; height: 100%;
  object-fit: cover; display: block;
  border-radius: 50%;
}
.fp-right-member-username {
  font-size: 14px; font-weight: 600;
  color: #f0f0ee; margin: 0 0 4px;
  text-align: center; letter-spacing: .03em;
}
.fp-right-mypage-btn {
  display: block; width: 100%;
  padding: 14px 0; border-radius: 40px;
  background: #fff; color: #1a1a1a;
  font-size: 15px; font-weight: 700;
  text-align: center; text-decoration: none;
  letter-spacing: .05em; margin-top: 4px;
  transition: background .2s;
  box-sizing: border-box;
}
.fp-right-mypage-btn:hover { background: #f0f0ee; }
.fp-right-logout-link {
  display: block; font-size: 12px;
  color: rgba(240,240,238,.4); text-decoration: none;
  text-align: center; margin-top: 14px;
  letter-spacing: .06em; transition: color .2s;
}
.fp-right-logout-link:hover { color: rgba(240,240,238,.8); }

/* ===== ACCOUNT PAGE ===== */
.acc-wrap { max-width: 640px; margin: 0 auto; padding: 48px 32px 100px; }
.acc-page-title { font-size: 24px; font-weight: 800; color: #1a1a1a; margin: 0 0 32px; }
.acc-notice { padding: 14px 20px; border-radius: 10px; font-size: 14px; margin-bottom: 28px; }
.acc-notice--success { background: #e8f5e9; color: #2e7d32; border: 1px solid #c8e6c9; }
.acc-notice--error   { background: #fff0ef; color: #c62828; border: 1px solid #ffcdd2; }
.acc-section { background: #fff; border: 1px solid #eee; border-radius: 16px; padding: 32px; margin-bottom: 24px; }
.acc-section-title { font-size: 16px; font-weight: 700; color: #1a1a1a; margin: 0 0 24px; }

/* アバター */
.acc-avatar-form { display: flex; flex-direction: column; align-items: center; gap: 0; }
.acc-avatar-preview { position: relative; width: 120px; height: 120px; }
.acc-avatar-preview img { width: 120px; height: 120px; border-radius: 50%; object-fit: cover; display: block; border: 3px solid #eee; }
.acc-avatar-edit-btn {
  position: absolute; bottom: 0; right: 0;
  background: #2d2d2d; color: #fff;
  border-radius: 20px; padding: 5px 10px;
  font-size: 11px; font-weight: 600; cursor: pointer;
  display: flex; align-items: center; gap: 4px;
  white-space: nowrap;
}
.acc-avatar-hint { font-size: 12px; color: #bbb; text-align: center; margin: 12px 0 16px; }

/* フォーム */
.acc-form-group { margin-bottom: 20px; }
.acc-label { display: block; font-size: 13px; font-weight: 700; color: #333; margin-bottom: 4px; }
.acc-label-hint { font-size: 12px; color: #aaa; margin: 2px 0 8px; }
.acc-input {
  width: 100%; padding: 14px 16px; border: 1px solid #ddd; border-radius: 10px;
  font-size: 14px; color: #1a1a1a; background: #fff; box-sizing: border-box;
  font-family: inherit; transition: border .2s;
}
.acc-input:focus { outline: none; border-color: #2d2d2d; }
.acc-input--readonly { background: #f7f7f5; color: #aaa; cursor: not-allowed; }
.acc-btn { display: inline-block; padding: 14px 40px; border-radius: 32px; font-size: 14px; font-weight: 700; letter-spacing: .05em; cursor: pointer; border: none; font-family: inherit; text-decoration: none; transition: all .2s; }
.acc-btn--primary { background: #2d2d2d; color: #fff; }
.acc-btn--primary:hover { background: #1a1a1a; }
.acc-btn--outline { background: transparent; color: #2d2d2d; border: 2px solid #2d2d2d; }
.acc-btn--outline:hover { background: #2d2d2d; color: #fff; }

/* ===== SIDEBAR LEFT AVATAR (mypage) ===== */
.sl-avatar-wrap {
  position: relative;
  width: 80px; height: 80px;
  margin: 0 auto 12px;
}
.sl-avatar-img {
  width: 80px; height: 80px;
  border-radius: 50%; object-fit: cover;
  display: block; border: 3px solid var(--color-border, #e0e0de);
}
.sl-avatar-edit {
  position: absolute; bottom: 0; right: 0;
  width: 24px; height: 24px; border-radius: 50%;
  background: #2d2d2d; color: #fff;
  display: flex; align-items: center; justify-content: center;
  text-decoration: none; transition: background .2s;
}
.sl-avatar-edit:hover { background: #1a1a1a; }
.sl-name { font-size: 13px !important; }

/* ================================================
   MY PAGE DASHBOARD — 6カードグリッド
   ================================================ */
.mypage-dashboard-header {
    text-align: center;
    padding: 32px 0 24px;
}
.mypage-dashboard-title {
    font-size: 32px;
    font-weight: 700;
    letter-spacing: .02em;
    color: var(--color-black);
    margin: 0 0 6px;
    font-family: 'Georgia', serif;
}
.mypage-dashboard-sub {
    font-size: 13px;
    color: var(--color-text-muted);
    margin: 0;
    letter-spacing: .08em;
}
.mypage-dashboard-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 14px;
    margin-bottom: 8px;
}
.mypage-dash-card {
    background: #2d2d2d;
    border-radius: 14px;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 14px;
    padding: 32px 16px 28px;
    text-decoration: none;
    transition: background .18s, transform .15s;
    cursor: pointer;
}
.mypage-dash-card:hover {
    background: #3a3a3a;
    transform: translateY(-2px);
}
.mypage-dash-icon {
    width: 36px;
    height: 36px;
    color: #fff;
    flex-shrink: 0;
}
.mypage-dash-label {
    font-size: 12px;
    color: #fff;
    font-weight: 500;
    letter-spacing: .04em;
    text-align: center;
    line-height: 1.4;
}
@media (max-width: 600px) {
    .mypage-dashboard-grid {
        grid-template-columns: repeat(2, 1fr);
    }
}

/* イベントカレンダー: カレンダー連携ボタンを非表示 */
.tribe-events-calendar-export-button,
.tribe-events-ical-export-button,
.tribe-events-c-subscribe-dropdown,
.tribe-events-c-subscribe-dropdown__container,
.tribe-common-c-btn-border.tribe-events-c-subscribe-dropdown__button,
a.tribe-events-ical,
.tribe-events-gcal { display: none !important; }

/* ===== アカウント設定: プロフィールフォーム追加スタイル ===== */
.acc-form-row {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 16px;
}
.acc-select {
  appearance: none;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1l5 5 5-5' stroke='%23999' stroke-width='1.5' fill='none' stroke-linecap='round'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: right 14px center;
  padding-right: 36px !important;
  cursor: pointer;
}
.acc-textarea {
  resize: vertical;
  min-height: 120px;
  line-height: 1.7;
}
.acc-char-count {
  text-align: right;
  font-size: 11px;
  color: var(--color-text-muted);
  margin-top: 4px;
}
.acc-input--readonly {
  background: #f5f5f5 !important;
  color: #999 !important;
  cursor: not-allowed;
}
@media (max-width: 540px) {
  .acc-form-row { grid-template-columns: 1fr; }
}

/* 年齢ボタン選択UI */
.acc-age-group {
  display: flex; flex-wrap: wrap; gap: 8px; margin-top: 4px;
}
.acc-age-btn {
  cursor: pointer;
}
.acc-age-btn input[type="radio"] {
  display: none;
}
.acc-age-btn span {
  display: inline-block;
  padding: 10px 20px;
  border: 1.5px solid #e0e0e0;
  border-radius: 30px;
  font-size: 14px;
  font-weight: 600;
  color: #555;
  background: #fafafa;
  transition: all .15s;
  user-select: none;
}
.acc-age-btn input[type="radio"]:checked + span {
  background: #1a1a1a;
  border-color: #1a1a1a;
  color: #fff;
}
.acc-age-btn:hover span {
  border-color: #1a1a1a;
  color: #1a1a1a;
}

/* ===== コラム いいね / 保存 ボタン ===== */
.fp-col-row-footer {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-top: 6px;
  flex-wrap: nowrap;
  gap: 8px;
}
.fp-col-row-actions {
  display: flex;
  align-items: center;
  gap: 4px;
  flex-shrink: 0;
  margin-left: auto;
}
.mori-like-btn,
.mori-save-btn {
  display: flex;
  align-items: center;
  gap: 3px;
  background: none;
  border: none;
  cursor: pointer;
  padding: 4px 6px;
  border-radius: 20px;
  color: #ccc;
  font-size: 12px;
  font-weight: 600;
  transition: color .15s, background .15s;
  line-height: 1;
}
.mori-like-btn:hover  { color: #e57373; background: rgba(229,57,53,.08); }
.mori-save-btn:hover  { color: #555; background: #f5f5f5; }
.mori-like-btn.is-liked  { color: #e53935; }
.mori-like-btn.is-liked svg { fill: #e53935; }
.mori-save-btn.is-saved  { color: #333; }
.mori-save-btn.is-saved svg { fill: #333; }
.mori-like-btn.is-loading,
.mori-save-btn.is-loading { opacity: .5; pointer-events: none; }
.mori-like-count { min-width: 12px; }

/* ===== コラムカード サムネ内オーバーレイ（いいね/保存） ===== */
.fp-col-thumb-link { display: block; width: 100%; height: 100%; }
.fp-col-thumb-link img { width: 100%; height: 100%; object-fit: cover; display: block; }
.fp-col-thumb-actions {
  position: absolute; top: 12px; right: 12px; z-index: 3;
  display: flex; gap: 8px;
}
.fp-col-thumb-actions .mori-like-btn,
.fp-col-thumb-actions .mori-save-btn {
  position: relative;
  width: 34px; height: 34px; padding: 0; justify-content: center;
  background: rgba(255,255,255,.94); border-radius: 50%; color: #555;
  box-shadow: 0 2px 8px rgba(0,0,0,.22);
}
.fp-col-thumb-actions .mori-like-btn:hover { color: #e53935; background: #fff; }
.fp-col-thumb-actions .mori-save-btn:hover { color: #1a1a1a; background: #fff; }
.fp-col-thumb-actions .mori-like-btn.is-liked { color: #e53935; }
.fp-col-thumb-actions .mori-save-btn.is-saved { color: #1a1a1a; }
.fp-col-thumb-actions .mori-like-count {
  position: absolute; top: -3px; right: -3px;
  background: #e53935; color: #fff; font-size: 9px; font-weight: 700;
  min-width: 15px; height: 15px; line-height: 15px; text-align: center;
  border-radius: 8px; padding: 0 3px;
}
.fp-col-thumb-actions .mori-like-count:empty { display: none; }
.fp-col-card .fp-morning-card-body { gap: 10px; }
.fp-col-card .fp-col-row-meta { display: flex; align-items: center; gap: 4px; font-size: 12px; color: #aaa; }
.fp-col-card .fp-morning-card-title { font-size: 15px; line-height: 1.5; }
.fp-col-card .fp-morning-card-title a {
  display: block; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}

/* ===== コラムセクションをライト基調へ統一（lecture/morningと同デザイン） ===== */
.fp-section--column { background: #efefed !important; }
.fp-section--column .fp-column-header h2,
.fp-section--column .fp-column-en { color: #1a1a1a !important; }
.fp-section--column .fp-column-ja { color: #888 !important; }
.fp-section--column .fp-col-card { background: #fff !important; box-shadow: 0 2px 14px rgba(0,0,0,.07) !important; }
.fp-section--column .fp-col-more-btn { color: #1a1a1a !important; border-color: #1a1a1a !important; }
.fp-section--column .fp-col-more-btn:hover { background: #1a1a1a !important; color: #fff !important; }

/* ===== ポリシーページ ===== */
.policy-wrap { max-width: 800px; margin: 0 auto; line-height: 1.9; color: #333; }
.policy-wrap h2 { font-size: 17px; font-weight: 700; margin: 40px 0 12px; padding-bottom: 8px; border-bottom: 2px solid #e8e8e8; color: #1a1a1a; }
.policy-wrap p, .policy-wrap li { font-size: 14px; }
.policy-wrap ul { padding-left: 1.4em; margin: 8px 0 16px; }
.policy-wrap ul li { margin-bottom: 6px; }
.commerce-table { width: 100%; border-collapse: collapse; margin: 16px 0 32px; font-size: 14px; }
.commerce-table th, .commerce-table td { border: 1px solid #e0e0e0; padding: 12px 16px; text-align: left; vertical-align: top; }
.commerce-table th { background: #f5f4f0; font-weight: 600; width: 30%; white-space: nowrap; }
.commerce-table td { background: #fff; }

/* ===== 固定ページ共通 ===== */
.page-hero {
    background: #f5f4f0;
    border-bottom: 1px solid #e8e8e8;
    padding: 56px 24px 40px;
    padding-top: calc(var(--header-h) + 48px);
    text-align: center;
}
.page-hero-inner { max-width: 860px; margin: 0 auto; }
.page-hero-title {
    font-size: 26px;
    font-weight: 700;
    color: #1a1a1a;
    letter-spacing: .04em;
    margin: 0;
}
.page-container {
    padding-top: 48px !important;
    padding-bottom: 80px !important;
    padding-left: 16px !important;
    padding-right: 16px !important;
    box-sizing: border-box;
}
.content-narrow {
    max-width: 860px;
    margin: 0 auto;
    background: #fff;
    border-radius: 16px;
    padding: 48px 56px;
    box-shadow: 0 2px 16px rgba(0,0,0,.06);
    box-sizing: border-box;
}

/* ===== ポリシーページ ===== */
.policy-wrap { max-width: 100%; line-height: 1.9; color: #333; }
.policy-wrap h2 { font-size: 17px; font-weight: 700; margin: 36px 0 12px; padding-bottom: 8px; border-bottom: 2px solid #e8e8e8; color: #1a1a1a; }
.policy-wrap p, .policy-wrap li { font-size: 14px; }
.policy-wrap ul { padding-left: 1.4em; margin: 8px 0 16px; }
.policy-wrap ul li { margin-bottom: 6px; }
.commerce-table { width: 100%; border-collapse: collapse; margin: 16px 0 32px; font-size: 14px; }
.commerce-table th, .commerce-table td { border: 1px solid #e0e0e0; padding: 12px 16px; text-align: left; vertical-align: top; }
.commerce-table th { background: #f5f4f0; font-weight: 600; width: 30%; }
.commerce-table td { background: #fff; }

@media (max-width: 768px) {
    .content-narrow {
        padding: 32px 20px;
        border-radius: 12px;
    }
    .page-container {
        padding-left: 12px !important;
        padding-right: 12px !important;
        padding-top: 32px !important;
        padding-bottom: 60px !important;
    }
    .page-hero { padding: 36px 16px 24px; }
    .page-hero-title { font-size: 20px; }
    .policy-wrap h2 { font-size: 15px; margin-top: 28px; }
    .policy-wrap p, .policy-wrap li { font-size: 13px; }
    .commerce-table { display: block; overflow-x: auto; -webkit-overflow-scrolling: touch; }
    .commerce-table th, .commerce-table td { padding: 10px 12px; font-size: 13px; }
    .commerce-table th { width: 38%; white-space: normal; }
}

/* ============================================================
   マイページ：角のあるスタイリッシュなデザイン（角丸を一括除去）
   .mypage-sharp 配下のすべての要素から border-radius を取り除く
   ============================================================ */
.mypage-sharp,
.mypage-sharp *,
.mypage-sharp *::before,
.mypage-sharp *::after {
  border-radius: 0 !important;
}

/* ============================================================
   マイページ：プロフィール写真は丸アイコン（角丸除去の例外）＋クリックでアップロード
   ============================================================ */
.mypage-sharp img.avatar,
.mypage-sharp .sr-cta-avatar,
.mypage-sharp .sr-cta-avatar img,
.mypage-sharp .acc-avatar,
.mypage-sharp .acc-avatar img,
.mypage-sharp .acc-avatar-preview,
.mypage-sharp .acc-avatar-preview img {
  border-radius: 50% !important;
}
/* アップロード用アバター */
.sr-avatar-form { margin: 0 auto 8px; width: 60px; }
.sr-avatar-upload { position: relative; display: block; width: 60px; height: 60px; margin: 0 auto; cursor: pointer; }
.sr-avatar-upload .sr-cta-avatar { display: block; margin: 0; }
.sr-avatar-upload .sr-avatar-cam {
  position: absolute;
  right: -3px; bottom: -3px;
  width: 22px; height: 22px;
  background: var(--color-black, #111);
  color: #fff;
  border: 2px solid #fff;
  border-radius: 50% !important;
  display: flex; align-items: center; justify-content: center;
  transition: transform .15s ease;
  z-index: 2;
}
.sr-avatar-upload:hover .sr-cta-avatar { opacity: .92; }
.sr-avatar-upload:hover .sr-avatar-cam { transform: scale(1.08); }

/* ============================================================
   マイページ：左右の余白を均一化（ヘッダーと揃える＋横はみ出し防止）
   ============================================================ */
.mypage-sharp { overflow-x: hidden; max-width: 100%; }
.mypage-sharp .lp-section,
.mypage-sharp .site-main { box-sizing: border-box; max-width: 100%; }
@media (max-width: 740px) {
  .mypage-sharp .lp-section { padding-left: 16px; padding-right: 16px; }
}

/* ============================================================
   角のあるボタン統一 — 全ボタンの角丸を解除（pill/rounded → square）
   ※ボタン以外（バッジ/アイコン円/カード）は対象外
   ============================================================ */
.fp-more-btn,
.fp-info-more-btn,
.fp-col-more-btn,
.fp-cta-btn,
.fp-left-login-btn,
.fp-right-login-btn,
.fp-right-cta-btn,
.fp-right-mypage-btn,
.fp-right-logout-btn,
.fp-event-cta,
.fp-morning-card-btn,
.fp-morning-more-btn,
.ev-form-submit,
.ev-complete-btn,
.ev-btn,
.acc-btn,
.mem-card-btn,
.btn-login,
.s-btn,
.ct-submit-btn,
.lp-empty-btn,
.sp-bottom-like,
.sp-bottom-save,
.sp-back-btn,
.sr-mylink-btn {
  border-radius: 0 !important;
}

/* ============================================================
   Membership conditions — スマホ表示最適化（縦長解消）
   ============================================================ */
@media (max-width: 600px) {
  .fp-section--conditions { padding: 44px 14px; }
  .fp-conditions-box { padding: 26px 18px; }
  .fp-conditions-en { font-size: 21px; margin-bottom: 6px; }
  .fp-conditions-ja { font-size: 12px; margin-bottom: 22px; letter-spacing: .04em; }
  .fp-conditions-list { gap: 12px; }
  .fp-conditions-list li { font-size: 12.5px; line-height: 1.65; padding-left: 18px; letter-spacing: 0; }
  .fp-conditions-list li::before { font-size: 9px; top: 3px; }
}
