:root {
  --lime: #b8eb20;
  --cyan: #2cccf0;
  --white: #ffffff;
  --dark: #0d0d0d;
  --dark2: #141414;
  --gray: #f4f4f4;
  --gray2: #e0e0e0;
  --text: #1a1a1a;
  --text-muted: #666666;
  --font: 'Zen Kaku Gothic New', sans-serif;
  --nav-h: 72px;
  --orange: #ff6900;
  --blue: #0693e3;
  --green: #00d084;
}

* { margin: 0; padding: 0; box-sizing: border-box; }
html { scroll-behavior: smooth; }
body { font-family: var(--font); color: var(--text); background: var(--white); overflow-x: hidden; }

/* =============================================
   NAVIGATION
============================================= */
nav {
  position: fixed; top: 0; left: 0; right: 0; z-index: 1000;
  height: var(--nav-h);
  background: linear-gradient(to bottom, rgba(0,0,0,0.6) 0%, rgba(0,0,0,0.6) 100%);
  background-size: 100% 100%;
  /* nav自体の高さ分だけ暗くなる。その下は透明 */
  display: flex; align-items: center; justify-content: space-between;
  padding: 0 48px;
  transition: background 0.5s ease, box-shadow 0.5s ease;
}
nav.scrolled {
  background: rgba(255,255,255,0.97);
  backdrop-filter: blur(20px); -webkit-backdrop-filter: blur(20px);
  box-shadow: 0 1px 0 rgba(0,0,0,0.08);
}
nav.scrolled .nav-logo { color: var(--dark); }
nav.scrolled .nav-logo span { color: var(--lime); }
nav.scrolled .nav-links a { color: var(--text); }
nav.scrolled .nav-links a:hover { background: rgba(0,0,0,0.05); color: var(--dark); }
nav.scrolled .nav-cta { border-color: var(--dark); color: var(--dark); }
nav.scrolled .nav-cta:hover { border-color: var(--lime); }
nav.scrolled .hamburger span { background: var(--dark); }

.nav-logo {
  font-size: 26px; font-weight: 900; letter-spacing: -0.04em;
  color: white; text-decoration: none;
  display: flex; align-items: center; gap: 2px;
  transition: color 0.4s;
}
.nav-logo span { color: var(--lime); }

.nav-links { display: flex; gap: 4px; list-style: none; }
.nav-links a {
  font-size: 13px; font-weight: 500; color: rgba(255,255,255,0.85);
  text-decoration: none; letter-spacing: 0.06em;
  padding: 8px 16px; border-radius: 40px;
  position: relative; transition: all 0.25s;
}
.nav-links a:hover { background: rgba(255,255,255,0.12); color: white; }
.nav-links a::after {
  content: ''; position: absolute; bottom: 6px; left: 50%;
  transform: translateX(-50%) scale(0);
  width: 4px; height: 4px; border-radius: 50%;
  background: var(--lime); transition: transform 0.3s ease;
}
.nav-links a:hover::after { transform: translateX(-50%) scale(1); }

.nav-cta {
  position: relative; overflow: hidden;
  background: transparent; color: white;
  border: 1.5px solid rgba(255,255,255,0.5);
  padding: 10px 28px; border-radius: 40px;
  font-family: var(--font); font-size: 13px; font-weight: 700;
  cursor: pointer; transition: all 0.35s; letter-spacing: 0.06em;
  text-decoration: none; display: inline-flex; align-items: center; gap: 8px;
}
.nav-cta::before {
  content: ''; position: absolute; inset: 0; border-radius: 40px;
  background: var(--lime); transform: scaleX(0); transform-origin: right;
  transition: transform 0.4s cubic-bezier(0.16,1,0.3,1); z-index: 0;
}
.nav-cta:hover { border-color: var(--lime); color: var(--dark); }
.nav-cta:hover::before { transform: scaleX(1); transform-origin: left; }
.nav-cta-text { position: relative; z-index: 1; }

.hamburger { display: none; flex-direction: column; gap: 5px; cursor: pointer; }
.hamburger span { width: 24px; height: 2px; background: white; transition: all 0.3s; }

/* =============================================
   HERO
============================================= */
#hero {
  position: relative; min-height: 100vh;
  display: flex; flex-direction: column;
  overflow: hidden; background: var(--dark);
  padding-top: 0;
}
.hero-video-bg { position: absolute; inset: 0; overflow: hidden; z-index: 0; background: var(--dark); }
#ytPlayer,
.hero-video-bg iframe {
  position: absolute !important; top: 50% !important; left: 50% !important;
  transform: translate(-50%, -50%) !important;
  width: 177.78vh !important; height: 56.25vw !important;
  min-width: 100% !important; min-height: 100% !important;
  pointer-events: none !important; border: none !important; opacity: 0.75;
}
.hero-video-overlay {
  position: absolute; inset: 0; z-index: 1;
  background: linear-gradient(to bottom, rgba(0,0,0,0.25) 0%, rgba(0,0,0,0.1) 40%, rgba(0,0,0,0.35) 100%);
}

/* 装飾ライン */
.hero-deco-line { position: absolute; z-index: 2; }
.hero-deco-line.line-v { top: 0; left: 0; width: 3px; height: 0; background: linear-gradient(to bottom, var(--lime), var(--cyan)); animation: lineGrowV 1.2s ease forwards 0.4s; }
.hero-deco-line.line-h { bottom: 80px; left: 0; width: 0; height: 1px; background: linear-gradient(to right, var(--lime), transparent); animation: lineGrowH 1.5s ease forwards 0.8s; }
@keyframes lineGrowV { to { height: 100%; } }
@keyframes lineGrowH { to { width: 40%; } }
.hero-corner { position: absolute; z-index: 2; width: 48px; height: 48px; opacity: 0; }
.hero-corner.tl { top: calc(var(--nav-h) + 28px); left: 48px; border-top: 2px solid var(--lime); border-left: 2px solid var(--lime); animation: fadeIn 0.5s ease forwards 1.4s; }
.hero-corner.br { bottom: 88px; right: 48px; border-bottom: 2px solid var(--cyan); border-right: 2px solid var(--cyan); animation: fadeIn 0.5s ease forwards 1.6s; }

/* ヒーローコンテンツ */
.hero-content { position: relative; z-index: 3; max-width: 1200px; width: 100%; margin: auto; padding: calc(var(--nav-h) + 60px) 80px 48px; }

.hero-eyebrow { display: flex; align-items: center; gap: 12px; margin-bottom: 36px; overflow: hidden; }
.hero-eyebrow-line { width: 0; height: 2px; background: var(--lime); animation: widthTo40 0.8s ease forwards 0.5s; }
@keyframes widthTo40 { to { width: 40px; } }
.hero-eyebrow-text { font-size: 11px; font-weight: 700; letter-spacing: 0.2em; color: var(--lime); text-transform: uppercase; opacity: 0; transform: translateX(-20px); animation: slideFromLeft 0.7s ease forwards 0.7s; }

/* タイトル：左右交互スライドイン */
.hero-title { font-size: clamp(46px, 6.5vw, 90px); font-weight: 900; line-height: 1.05; color: white; letter-spacing: -0.04em; margin-bottom: 36px; }
.hero-title-row { display: block; overflow: hidden; line-height: 1.18; }
.hero-title-inner { display: block; }

/* 1行目：左からドン（速め） */
.hero-title-row:nth-child(1) .hero-title-inner {
  transform: translateX(-110%);
  animation: slideInBounceLeft 1.4s cubic-bezier(0.1, 0.8, 0.2, 1) forwards;
  animation-delay: 0.4s;
}
/* 2行目：右からドン（少し遅め・ゆっくり） */
.hero-title-row:nth-child(2) .hero-title-inner {
  transform: translateX(110%);
  animation: slideInBounceRight 1.6s cubic-bezier(0.1, 0.8, 0.2, 1) forwards;
  animation-delay: 0.7s;
}
/* 3行目：左からスッと（一番ゆっくり） */
.hero-title-row:nth-child(3) .hero-title-inner {
  transform: translateX(-80%);
  animation: slideInBounceLeft 1.8s cubic-bezier(0.1, 0.8, 0.2, 1) forwards;
  animation-delay: 1.0s;
}

@keyframes slideInBounceLeft {
  0%   { }
  68%  { transform: translateX(4%); }
  82%  { transform: translateX(-2%); }
  92%  { transform: translateX(0.8%); }
  100% { transform: translateX(0); }
}
@keyframes slideInBounceRight {
  0%   { }
  68%  { transform: translateX(-4%); }
  82%  { transform: translateX(2%); }
  92%  { transform: translateX(-0.8%); }
  100% { transform: translateX(0); }
}

.hero-title em { font-style: normal; color: var(--lime); }
.hero-title .cyan { color: var(--cyan); }

.hero-subtitle {
  font-size: clamp(18px, 2.4vw, 26px);
  font-weight: 700;
  font-style: italic;
  line-height: 1.6;
  color: white;
  max-width: 900px;
  white-space: nowrap;
  margin-bottom: 52px;
  letter-spacing: -0.01em;
  text-shadow: 0 2px 20px rgba(0,0,0,0.4);
  overflow: hidden;
  /* 最初は非表示、MISSIONシーケンス後にJSで表示 */
  visibility: hidden;
}
.hero-subtitle.subtitle-reveal .hero-subtitle-inner {
  animation: slideInBounceLeft 1.6s cubic-bezier(0.1, 0.8, 0.2, 1) forwards;
}
.hero-subtitle-inner {
  display: block;
  transform: translateX(-110%);
}
.hero-subtitle em {
  font-style: normal;
  color: var(--lime);
}
.hero-btns { display: flex; gap: 16px; flex-wrap: wrap; opacity: 0; transform: translateY(20px); animation: fadeUp 0.9s ease forwards 1.35s; }

.btn-primary { background: var(--lime); color: var(--dark); padding: 16px 40px; border-radius: 3px; font-family: var(--font); font-size: 14px; font-weight: 900; text-decoration: none; letter-spacing: 0.06em; transition: all 0.25s; display: inline-flex; align-items: center; gap: 8px; border: none; cursor: pointer; }
.btn-primary:hover { background: #c8ff20; transform: translateY(-2px); box-shadow: 0 8px 28px rgba(184,235,32,0.3); }
.btn-secondary { background: transparent; color: white; padding: 16px 40px; border-radius: 3px; font-family: var(--font); font-size: 14px; font-weight: 500; text-decoration: none; letter-spacing: 0.06em; transition: all 0.25s; display: inline-flex; align-items: center; gap: 8px; border: 1.5px solid rgba(255,255,255,0.3); }
.btn-secondary:hover { border-color: var(--cyan); color: var(--cyan); }

/* =============================================
   MISSION SEQUENCE
   .hero-mission-area は #hero の中の absolute
   → スクロールしても追従しない
============================================= */
.hero-mission-area {
  position: absolute;
  inset: 0;
  z-index: 8;
  pointer-events: none;
  overflow: visible;
}
.hero-mission-area.done { display: none; }

/* フェーズ1：大テキスト（画面中央） */
.mission-big-text {
  position: absolute;
  left: 0; right: 0; top: 50%;
  transform: translateY(-50%);
  padding: 0 8vw;
  opacity: 0;
  pointer-events: none;
  z-index: 9;
  text-align: center;
}
.mission-big-text.big-enter {
  animation: bigTextIn 2.2s cubic-bezier(0.08, 0.85, 0.15, 1) forwards;
}
.mission-big-text.big-exit {
  animation: bigTextOut 0.9s ease forwards;
}
.mission-big-num {
  font-size: 11px; font-weight: 700; letter-spacing: 0.28em;
  color: var(--lime); margin-bottom: 16px; text-transform: uppercase;
}
.mission-big-body {
  font-size: clamp(28px, 3.8vw, 52px);
  font-weight: 900; line-height: 1.25; color: white;
  letter-spacing: -0.03em;
  text-shadow: 0 4px 40px rgba(0,0,0,0.6);
  max-width: 900px;
  margin: 0 auto;
}
.mission-big-body em { font-style: normal; color: var(--lime); }

@keyframes bigTextIn {
  0%   { opacity:0; transform:translateY(calc(-50% + 60px)) scale(0.88); filter:blur(18px); }
  30%  { opacity:0.4; filter:blur(8px); }
  65%  { filter:blur(2px); }
  100% { opacity:1; transform:translateY(-50%) scale(1); filter:blur(0); }
}
@keyframes bigTextOut {
  0%   { opacity:1; transform:translateY(-50%) scale(1); filter:blur(0); }
  100% { opacity:0; transform:translateY(calc(-50% - 32px)) scale(1.07); filter:blur(10px); }
}

/* フェーズ2：吹き出しバブル（右側・3箇所バラけ） */
.mission-bubbles {
  display: none !important;
}

/* バブル共通 */
.mission-bubble {
  position: absolute;
  width: 90px; height: 90px;
  background: var(--cyan);
  border-radius: 50%;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  padding: 10px 8px;
  text-align: center;
  opacity: 0;
  transform: scale(0.5);
  overflow: visible;
  filter: drop-shadow(0 6px 18px rgba(44,204,240,0.5));
  pointer-events: auto;
  cursor: pointer;
}

/* 吹き出し尻尾：CSSボーダートリックで正確に */
.mission-bubble::before {
  content: '';
  position: absolute;
  border-style: solid;
}

/* バブル1：右上、尻尾は左下方向 */
.mission-bubble:nth-child(1) {
  top: calc(var(--nav-h) + 80px);
  right: 20%;
}
.mission-bubble:nth-child(1)::before {
  bottom: -22px; left: 50px;
  border-width: 22px 14px 0 0;
  border-color: var(--cyan) transparent transparent transparent;
}

/* バブル2：右端中央、尻尾は左方向 */
.mission-bubble:nth-child(2) {
  top: 35%; right: 10%;
}
.mission-bubble:nth-child(2)::before {
  left: -24px; top: 50%;
  transform: translateY(-50%);
  border-width: 14px 24px 14px 0;
  border-color: transparent var(--cyan) transparent transparent;
}

/* バブル3：右下、尻尾は左上方向 */
.mission-bubble:nth-child(3) {
  bottom: 28%; right: 22%;
}
.mission-bubble:nth-child(3)::before {
  top: -22px; left: 50px;
  border-width: 0 14px 22px 0;
  border-color: transparent transparent var(--cyan) transparent;
}

/* MISSION番号：大きく・太字・斜体 */
.bubble-num {
  font-size: 36px; font-weight: 900; font-style: italic;
  letter-spacing: 0.03em; color: var(--lime);
  margin-bottom: 8px; text-transform: uppercase;
  line-height: 1; white-space: nowrap;
  text-shadow: 0 2px 12px rgba(0,0,0,0.4);
  position: relative; z-index: 2;
}

/* 説明文：バブルからはみ出しOK・大きく */
.bubble-text {
  font-size: 14px; font-weight: 700; line-height: 1.6;
  color: white; width: 200px;
  text-shadow: 0 1px 4px rgba(0,0,0,0.25);
  position: relative; z-index: 2;
  overflow: visible;
}

/* スマホ：バブル内テキストを非表示 */
@media (max-width: 768px) {
  .bubble-text { display: none; }
  .mission-bubble {
    width: 100px; height: 100px;
    cursor: pointer;
    pointer-events: auto;
  }
  .bubble-num { font-size: 12px; }
}

.mission-bubble.bubble-pop {
  animation: bubblePop 0.75s cubic-bezier(0.16, 1.5, 0.3, 1) forwards;
}
.mission-bubble.bubble-visible {
  opacity: 1; transform: scale(1);
}

@keyframes bubblePop {
  0%   { opacity:0; transform:scale(0.4) rotate(-5deg); }
  55%  { transform:scale(1.12) rotate(2deg); }
  78%  { transform:scale(0.97) rotate(-1deg); }
  100% { opacity:1; transform:scale(1) rotate(0deg); }
}

/* タイトル再表示 */
.hero-title.title-refade {
  animation: titleRefade 1.4s ease forwards;
}
@keyframes titleRefade {
  0%   { opacity:0.15; filter:blur(6px); }
  100% { opacity:1;    filter:blur(0); }
}

.hero-japan-map {
  position: absolute;
  right: calc(8% - 70px);
  top: 46%;
  transform: translateY(-50%) translateY(20px) rotate(-20deg);
  width: 60%;
  max-width: 860px;
  opacity: 0;
  z-index: 6;
  pointer-events: none;
  mix-blend-mode: screen;
  filter: drop-shadow(0 0 24px rgba(44,204,240,0.3));
  transition: opacity 1.2s ease, transform 1.2s ease;
}
.hero-japan-map.map-visible {
  opacity: 0.5;
  transform: translateY(-50%) rotate(-20deg);
}

/* =============================================
   MISSION 詳細セクション（PC・SP共通）
============================================= */
.hero-mission-bottom {
  display: block;
  background: var(--dark);
  position: relative;
  overflow: hidden;
  padding: 100px 0 80px;
}
.hero-mission-bottom::before {
  content: '';
  position: absolute;
  inset: 0;
  background-image:
    linear-gradient(rgba(184,235,32,.035) 1px, transparent 1px),
    linear-gradient(90deg, rgba(184,235,32,.035) 1px, transparent 1px);
  background-size: 60px 60px;
  pointer-events: none;
}
.hero-mission-bottom-heading {
  text-align: center;
  margin-bottom: 64px;
  position: relative; z-index: 1;
}
.hero-mission-bottom-heading .eyebrow {
  display: inline-flex; align-items: center; gap: 12px;
  font-size: 13px; font-weight: 700; letter-spacing: 0.25em;
  color: var(--lime); text-transform: uppercase; margin-bottom: 16px;
}
.hero-mission-bottom-heading .eyebrow::before,
.hero-mission-bottom-heading .eyebrow::after {
  content: ''; width: 32px; height: 1px;
  background: var(--lime); opacity: 0.5;
}
.hero-mission-bottom-heading h2 {
  font-size: clamp(26px, 3.5vw, 44px);
  font-weight: 900; color: #fff;
  letter-spacing: -0.02em; line-height: 1.2;
}
.hero-mission-bottom-heading h2 em { color: var(--lime); font-style: italic; }
.hero-mission-bottom-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 2px;
  max-width: 1200px;
  margin: 0 auto;
  padding: 0 40px;
  position: relative; z-index: 1;
}
.hero-mission-bottom-item {
  background: rgba(255,255,255,0.03);
  border: 1px solid rgba(255,255,255,0.07);
  padding: 48px 36px 40px;
  position: relative;
  overflow: hidden;
  opacity: 0;
  transform: translateY(32px);
  transition: opacity 0.7s ease, transform 0.7s ease, background 0.3s;
}
.hero-mission-bottom-item:nth-child(2) { transition-delay: 0.15s; }
.hero-mission-bottom-item:nth-child(3) { transition-delay: 0.30s; }
.hero-mission-bottom-item:hover { background: rgba(184,235,32,0.04); }
.hero-mission-bottom-item.visible { opacity: 1; transform: translateY(0); }
.hero-mission-bottom-item::before {
  content: '';
  position: absolute;
  top: 0; left: 0; right: 0; height: 3px;
  background: linear-gradient(90deg, var(--lime), var(--cyan));
  transform: scaleX(0); transform-origin: left;
  transition: transform 0.5s ease;
}
.hero-mission-bottom-item.visible::before { transform: scaleX(1); }
.hero-mission-bottom-item::after {
  content: attr(data-num);
  position: absolute;
  bottom: -10px; right: -4px;
  font-size: 120px; font-weight: 900; font-style: italic;
  color: rgba(255,255,255,0.025);
  letter-spacing: -0.05em; line-height: 1;
  pointer-events: none; user-select: none;
}
.hero-mission-bottom-num {
  display: inline-flex; align-items: center; gap: 8px;
  font-size: 13px; font-weight: 900; font-style: italic;
  color: var(--cyan); letter-spacing: 0.18em;
  text-transform: uppercase; margin-bottom: 20px;
}
.hero-mission-bottom-num::before {
  content: '';
  display: block; width: 20px; height: 2px; background: var(--cyan);
}
.hero-mission-bottom-title {
  font-size: clamp(17px, 1.5vw, 22px);
  font-weight: 900; color: #fff;
  line-height: 1.4; margin-bottom: 16px;
}
.hero-mission-bottom-title em { color: var(--lime); font-style: italic; }
.hero-mission-bottom-text {
  font-size: 14px; font-weight: 400; line-height: 1.95;
  color: rgba(255,255,255,0.65);
}
.btn-mission-scroll {
  display: none;
  align-items: center; gap: 8px; margin-top: 16px;
  font-size: 13px; font-weight: 700; color: var(--cyan);
  text-decoration: none; letter-spacing: 0.08em;
  border-bottom: 1px solid rgba(44,204,240,0.4); padding-bottom: 2px;
}
@media (max-width: 768px) {
  .mission-bubbles { display: none !important; }
  .hero-mission-area { display: none !important; }
  .hero-japan-map { display: none; }
  .btn-mission-scroll { display: inline-flex; }
  .hero-mission-bottom { padding: 64px 0 48px; }
  .hero-mission-bottom-grid { grid-template-columns: 1fr; padding: 0 20px; gap: 1px; }
  .hero-mission-bottom-item { padding: 36px 24px 28px; }
  .hero-mission-bottom-item::after { font-size: 80px; }
}

* { margin: 0; padding: 0; box-sizing: border-box; }
html { scroll-behavior: smooth; }
body { font-family: var(--font); color: var(--text); background: var(--white); overflow-x: hidden; }

/* =============================================
   NAVIGATION
============================================= */
nav {
  position: fixed; top: 0; left: 0; right: 0; z-index: 1000;
  height: var(--nav-h);
  background: linear-gradient(to bottom, rgba(0,0,0,0.6) 0%, rgba(0,0,0,0.6) 100%);
  background-size: 100% 100%;
  /* nav自体の高さ分だけ暗くなる。その下は透明 */
  display: flex; align-items: center; justify-content: space-between;
  padding: 0 48px;
  transition: background 0.5s ease, box-shadow 0.5s ease;
}
nav.scrolled {
  background: rgba(255,255,255,0.97);
  backdrop-filter: blur(20px); -webkit-backdrop-filter: blur(20px);
  box-shadow: 0 1px 0 rgba(0,0,0,0.08);
}
nav.scrolled .nav-logo { color: var(--dark); }
nav.scrolled .nav-logo span { color: var(--lime); }
nav.scrolled .nav-links a { color: var(--text); }
nav.scrolled .nav-links a:hover { background: rgba(0,0,0,0.05); color: var(--dark); }
nav.scrolled .nav-cta { border-color: var(--dark); color: var(--dark); }
nav.scrolled .nav-cta:hover { border-color: var(--lime); }
nav.scrolled .hamburger span { background: var(--dark); }

.nav-logo {
  font-size: 26px; font-weight: 900; letter-spacing: -0.04em;
  color: white; text-decoration: none;
  display: flex; align-items: center; gap: 2px;
  transition: color 0.4s;
}
.nav-logo span { color: var(--lime); }

.nav-links { display: flex; gap: 4px; list-style: none; }
.nav-links a {
  font-size: 13px; font-weight: 500; color: rgba(255,255,255,0.85);
  text-decoration: none; letter-spacing: 0.06em;
  padding: 8px 16px; border-radius: 40px;
  position: relative; transition: all 0.25s;
}
.nav-links a:hover { background: rgba(255,255,255,0.12); color: white; }
.nav-links a::after {
  content: ''; position: absolute; bottom: 6px; left: 50%;
  transform: translateX(-50%) scale(0);
  width: 4px; height: 4px; border-radius: 50%;
  background: var(--lime); transition: transform 0.3s ease;
}
.nav-links a:hover::after { transform: translateX(-50%) scale(1); }

.nav-cta {
  position: relative; overflow: hidden;
  background: transparent; color: white;
  border: 1.5px solid rgba(255,255,255,0.5);
  padding: 10px 28px; border-radius: 40px;
  font-family: var(--font); font-size: 13px; font-weight: 700;
  cursor: pointer; transition: all 0.35s; letter-spacing: 0.06em;
  text-decoration: none; display: inline-flex; align-items: center; gap: 8px;
}
.nav-cta::before {
  content: ''; position: absolute; inset: 0; border-radius: 40px;
  background: var(--lime); transform: scaleX(0); transform-origin: right;
  transition: transform 0.4s cubic-bezier(0.16,1,0.3,1); z-index: 0;
}
.nav-cta:hover { border-color: var(--lime); color: var(--dark); }
.nav-cta:hover::before { transform: scaleX(1); transform-origin: left; }
.nav-cta-text { position: relative; z-index: 1; }

.hamburger { display: none; flex-direction: column; gap: 5px; cursor: pointer; }
.hamburger span { width: 24px; height: 2px; background: white; transition: all 0.3s; }

/* =============================================
   HERO
============================================= */
#hero {
  position: relative; min-height: 100vh;
  display: flex; flex-direction: column;
  overflow: hidden; background: var(--dark);
  padding-top: 0;
}
.hero-video-bg { position: absolute; inset: 0; overflow: hidden; z-index: 0; background: var(--dark); }
#ytPlayer,
.hero-video-bg iframe {
  position: absolute !important; top: 50% !important; left: 50% !important;
  transform: translate(-50%, -50%) !important;
  width: 177.78vh !important; height: 56.25vw !important;
  min-width: 100% !important; min-height: 100% !important;
  pointer-events: none !important; border: none !important; opacity: 0.75;
}
.hero-video-overlay {
  position: absolute; inset: 0; z-index: 1;
  background: linear-gradient(to bottom, rgba(0,0,0,0.25) 0%, rgba(0,0,0,0.1) 40%, rgba(0,0,0,0.35) 100%);
}

/* 装飾ライン */
.hero-deco-line { position: absolute; z-index: 2; }
.hero-deco-line.line-v { top: 0; left: 0; width: 3px; height: 0; background: linear-gradient(to bottom, var(--lime), var(--cyan)); animation: lineGrowV 1.2s ease forwards 0.4s; }
.hero-deco-line.line-h { bottom: 80px; left: 0; width: 0; height: 1px; background: linear-gradient(to right, var(--lime), transparent); animation: lineGrowH 1.5s ease forwards 0.8s; }
@keyframes lineGrowV { to { height: 100%; } }
@keyframes lineGrowH { to { width: 40%; } }
.hero-corner { position: absolute; z-index: 2; width: 48px; height: 48px; opacity: 0; }
.hero-corner.tl { top: calc(var(--nav-h) + 28px); left: 48px; border-top: 2px solid var(--lime); border-left: 2px solid var(--lime); animation: fadeIn 0.5s ease forwards 1.4s; }
.hero-corner.br { bottom: 88px; right: 48px; border-bottom: 2px solid var(--cyan); border-right: 2px solid var(--cyan); animation: fadeIn 0.5s ease forwards 1.6s; }

/* ヒーローコンテンツ */
.hero-content { position: relative; z-index: 3; max-width: 1200px; width: 100%; margin: auto; padding: calc(var(--nav-h) + 60px) 80px 48px; }

.hero-eyebrow { display: flex; align-items: center; gap: 12px; margin-bottom: 36px; overflow: hidden; }
.hero-eyebrow-line { width: 0; height: 2px; background: var(--lime); animation: widthTo40 0.8s ease forwards 0.5s; }
@keyframes widthTo40 { to { width: 40px; } }
.hero-eyebrow-text { font-size: 11px; font-weight: 700; letter-spacing: 0.2em; color: var(--lime); text-transform: uppercase; opacity: 0; transform: translateX(-20px); animation: slideFromLeft 0.7s ease forwards 0.7s; }

/* タイトル：左右交互スライドイン */
.hero-title { font-size: clamp(46px, 6.5vw, 90px); font-weight: 900; line-height: 1.05; color: white; letter-spacing: -0.04em; margin-bottom: 36px; }
.hero-title-row { display: block; overflow: hidden; line-height: 1.18; }
.hero-title-inner { display: block; }

/* 1行目：左からドン（速め） */
.hero-title-row:nth-child(1) .hero-title-inner {
  transform: translateX(-110%);
  animation: slideInBounceLeft 1.4s cubic-bezier(0.1, 0.8, 0.2, 1) forwards;
  animation-delay: 0.4s;
}
/* 2行目：右からドン（少し遅め・ゆっくり） */
.hero-title-row:nth-child(2) .hero-title-inner {
  transform: translateX(110%);
  animation: slideInBounceRight 1.6s cubic-bezier(0.1, 0.8, 0.2, 1) forwards;
  animation-delay: 0.7s;
}
/* 3行目：左からスッと（一番ゆっくり） */
.hero-title-row:nth-child(3) .hero-title-inner {
  transform: translateX(-80%);
  animation: slideInBounceLeft 1.8s cubic-bezier(0.1, 0.8, 0.2, 1) forwards;
  animation-delay: 1.0s;
}

@keyframes slideInBounceLeft {
  0%   { }
  68%  { transform: translateX(4%); }
  82%  { transform: translateX(-2%); }
  92%  { transform: translateX(0.8%); }
  100% { transform: translateX(0); }
}
@keyframes slideInBounceRight {
  0%   { }
  68%  { transform: translateX(-4%); }
  82%  { transform: translateX(2%); }
  92%  { transform: translateX(-0.8%); }
  100% { transform: translateX(0); }
}

.hero-title em { font-style: normal; color: var(--lime); }
.hero-title .cyan { color: var(--cyan); }

.hero-subtitle {
  font-size: clamp(18px, 2.4vw, 26px);
  font-weight: 700;
  font-style: italic;
  line-height: 1.6;
  color: white;
  max-width: 900px;
  white-space: nowrap;
  margin-bottom: 52px;
  letter-spacing: -0.01em;
  text-shadow: 0 2px 20px rgba(0,0,0,0.4);
  overflow: hidden;
  /* 最初は非表示、MISSIONシーケンス後にJSで表示 */
  visibility: hidden;
}
.hero-subtitle.subtitle-reveal .hero-subtitle-inner {
  animation: slideInBounceLeft 1.6s cubic-bezier(0.1, 0.8, 0.2, 1) forwards;
}
.hero-subtitle-inner {
  display: block;
  transform: translateX(-110%);
}
.hero-subtitle em {
  font-style: normal;
  color: var(--lime);
}
.hero-btns { display: flex; gap: 16px; flex-wrap: wrap; opacity: 0; transform: translateY(20px); animation: fadeUp 0.9s ease forwards 1.35s; }

.btn-primary { background: var(--lime); color: var(--dark); padding: 16px 40px; border-radius: 3px; font-family: var(--font); font-size: 14px; font-weight: 900; text-decoration: none; letter-spacing: 0.06em; transition: all 0.25s; display: inline-flex; align-items: center; gap: 8px; border: none; cursor: pointer; }
.btn-primary:hover { background: #c8ff20; transform: translateY(-2px); box-shadow: 0 8px 28px rgba(184,235,32,0.3); }
.btn-secondary { background: transparent; color: white; padding: 16px 40px; border-radius: 3px; font-family: var(--font); font-size: 14px; font-weight: 500; text-decoration: none; letter-spacing: 0.06em; transition: all 0.25s; display: inline-flex; align-items: center; gap: 8px; border: 1.5px solid rgba(255,255,255,0.3); }
.btn-secondary:hover { border-color: var(--cyan); color: var(--cyan); }


.hero-mission-num { font-size: 10px; font-weight: 700; letter-spacing: 0.2em; color: var(--lime); margin-bottom: 8px; }
.hero-mission-text { font-size: clamp(13px, 1.4vw, 15px); font-weight: 300; line-height: 1.95; color: rgba(255,255,255,0.6); max-width: 720px; }

/* 統計数字 */
.hero-stats { position: relative; z-index: 3; display: flex; justify-content: center; gap: 0; opacity: 0; animation: fadeUp 0.9s ease forwards 1.7s; border-top: 1px solid rgba(255,255,255,0.07); padding-bottom: 48px; }
.hero-stat { padding: 28px 52px; text-align: center; border-right: 1px solid rgba(255,255,255,0.08); }
.hero-stat:last-child { border-right: none; }
.hero-stat-num { font-size: 44px; font-weight: 900; color: white; line-height: 1; margin-bottom: 8px; letter-spacing: -0.04em; }
.hero-stat-num span { color: var(--lime); }
.hero-stat-label { font-size: 11px; color: rgba(255,255,255,0.38); letter-spacing: 0.12em; }

.scroll-indicator { position: absolute; bottom: 20px; left: 50%; transform: translateX(-50%); display: flex; flex-direction: column; align-items: center; gap: 8px; opacity: 0; animation: fadeIn 1s ease forwards 2.2s; z-index: 3; cursor: pointer; }
.scroll-indicator span { font-size: 9px; letter-spacing: 0.2em; color: rgba(255,255,255,0.28); text-transform: uppercase; }
.scroll-line { width: 1px; height: 48px; background: rgba(255,255,255,0.12); position: relative; overflow: hidden; }
.scroll-line::after { content: ''; position: absolute; top: -48px; left: 0; width: 100%; height: 48px; background: linear-gradient(to bottom, var(--lime), var(--cyan)); animation: scrollDown 1.8s ease-in-out infinite; }
@keyframes scrollDown { 0%{transform:translateY(0)} 100%{transform:translateY(96px)} }

/* =============================================
   MISSION（パララックス）
============================================= */
#mission { background: white; }
.mission-item { display: grid; grid-template-columns: 1fr 1fr; gap: 0; min-height: 85vh; align-items: center; overflow: hidden; }
.mission-item:nth-child(even) .mission-text { order: 2; }
.mission-item:nth-child(even) .mission-visual { order: 1; }
.mission-text { padding: 80px 80px 80px 120px; }
.mission-text.from-left { opacity: 0; transform: translateX(-60px); transition: opacity 1s ease, transform 1s ease; }
.mission-text.from-right { opacity: 0; transform: translateX(60px); transition: opacity 1s ease, transform 1s ease; }
.mission-text.visible { opacity: 1; transform: translateX(0); }
.mission-num { font-size: 130px; font-weight: 900; line-height: 0.9; color: var(--gray2); letter-spacing: -0.06em; margin-bottom: -12px; transition: color 0.8s ease; }
.mission-item.in-view .mission-num { color: rgba(184,235,32,0.18); }
.mission-heading { font-size: clamp(22px, 3vw, 36px); font-weight: 900; line-height: 1.3; color: var(--dark); margin-bottom: 24px; letter-spacing: -0.03em; }
.mission-heading em { font-style: normal; color: var(--cyan); }
.mission-body { font-size: 15px; line-height: 2; color: var(--text-muted); font-weight: 300; }
.mission-tags { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 28px; }
.mission-tag { font-size: 11px; font-weight: 700; letter-spacing: 0.1em; padding: 6px 14px; border-radius: 2px; text-transform: uppercase; }
.tag-lime { background: rgba(184,235,32,0.12); color: #5a7a00; }
.tag-cyan { background: rgba(44,204,240,0.12); color: #0090b0; }
.tag-dark { background: rgba(13,13,13,0.07); color: var(--dark); }

/* パララックスビジュアルパネル */
.mission-visual { position: relative; height: 100%; min-height: 550px; overflow: hidden; }
.mission-visual-parallax { position: absolute; inset: -15%; will-change: transform; }
.mv-1 { background: linear-gradient(135deg, #081a08 0%, #0a2a1a 50%, #081520 100%); }
.mv-2 { background: linear-gradient(135deg, #080820 0%, #0a1a28 50%, #150815 100%); }
.mv-3 { background: linear-gradient(135deg, #081018 0%, #102808 50%, #080820 100%); }
.mission-visual-grid { position: absolute; inset: 0; background-image: linear-gradient(rgba(184,235,32,0.04) 1px, transparent 1px), linear-gradient(90deg, rgba(184,235,32,0.04) 1px, transparent 1px); background-size: 48px 48px; }
.mission-visual-content { position: absolute; inset: 0; z-index: 2; display: flex; align-items: center; justify-content: center; padding: 40px; }
.mission-visual-text-block { text-align: center; }
.mission-visual-big { font-size: clamp(64px, 9vw, 120px); font-weight: 900; line-height: 1; letter-spacing: -0.05em; margin-bottom: 16px; background: linear-gradient(135deg, var(--lime), var(--cyan)); -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; }
.mission-visual-label { font-size: 12px; font-weight: 700; color: rgba(255,255,255,0.4); letter-spacing: 0.18em; text-transform: uppercase; }
.parallax-orb { position: absolute; border-radius: 50%; will-change: transform; }
.orb-1 { width: 200px; height: 200px; top: 10%; left: 5%; background: radial-gradient(circle, rgba(184,235,32,0.12) 0%, transparent 70%); }
.orb-2 { width: 120px; height: 120px; bottom: 15%; right: 10%; background: radial-gradient(circle, rgba(44,204,240,0.12) 0%, transparent 70%); }

/* =============================================
   SERVICES
============================================= */
#services { background: var(--dark2); padding: 120px 0; overflow: hidden; }
.section-header { text-align: center; margin-bottom: 72px; padding: 0 40px; }
.section-eyebrow { display: inline-flex; align-items: center; gap: 10px; font-size: 10px; font-weight: 700; letter-spacing: 0.2em; color: var(--lime); text-transform: uppercase; margin-bottom: 16px; }
.section-eyebrow::before,.section-eyebrow::after { content: ''; width: 20px; height: 1px; background: var(--lime); opacity: 0.5; }
.section-title { font-size: clamp(28px, 4.5vw, 52px); font-weight: 900; line-height: 1.15; letter-spacing: -0.04em; }
.on-dark { color: white; }
.section-title em { font-style: normal; color: var(--lime); }
.section-sub { font-size: 15px; font-weight: 300; color: rgba(255,255,255,0.4); margin-top: 16px; line-height: 1.8; }
.section-sub-light { color: var(--text-muted); }
.services-brand { display: flex; align-items: center; justify-content: center; gap: 20px; margin-bottom: 64px; }
.brand-badge { background: var(--lime); color: var(--dark); padding: 7px 22px; font-size: 13px; font-weight: 900; letter-spacing: 0.1em; border-radius: 2px; }
.brand-desc { font-size: 14px; color: rgba(255,255,255,0.38); letter-spacing: 0.04em; }
.services-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1px; max-width: 1200px; margin: 0 auto; padding: 0 40px; background: rgba(255,255,255,0.04); }
.service-card { position: relative; background: var(--dark2); padding: 48px 40px 64px; cursor: pointer; overflow: hidden; transition: all 0.4s ease; }
.service-card::before { content: ''; position: absolute; top: 0; left: 0; right: 0; height: 2px; background: linear-gradient(to right, var(--lime), var(--cyan)); transform: scaleX(0); transform-origin: left; transition: transform 0.4s ease; }
.service-card:hover { background: #1c1c1c; transform: translateY(-4px); }
.service-card:hover::before { transform: scaleX(1); }
.service-num { font-size: 36px; font-weight: 700; letter-spacing: 0.2em; color: var(--lime); margin-bottom: 20px; line-height: 1; }
.service-name { font-size: 27px; font-weight: 900; color: var(--cyan); margin-bottom: 8px; line-height: 1.35; }
.service-sub { font-size: 13px; color: #ffffff; letter-spacing: 0.08em; font-weight: 500; margin-bottom: 20px; }
.service-lead { font-size: 15px; line-height: 1.9; color: #ffffff; font-weight: 300; }
.service-detail { max-height: 0; overflow: hidden; transition: max-height 0.5s ease, opacity 0.5s ease; opacity: 0; }
.service-card:hover .service-detail { max-height: 240px; opacity: 1; }
.service-detail-inner { padding-top: 20px; border-top: 1px solid rgba(255,255,255,0.06); margin-top: 20px; }
.service-features { list-style: none; }
.service-features li { font-size: 14px; color: #ffffff; padding: 5px 0; display: flex; align-items: flex-start; gap: 10px; }
.service-features li::before { content: '▸'; color: var(--lime); font-size: 10px; flex-shrink: 0; margin-top: 2px; }
.service-arrow { position: absolute; bottom: 24px; right: 24px; width: 36px; height: 36px; border: 1px solid rgba(255,255,255,0.1); border-radius: 50%; display: flex; align-items: center; justify-content: center; color: rgba(255,255,255,0.28); font-size: 14px; transition: all 0.3s; }
.service-card:hover .service-arrow { border-color: var(--lime); color: var(--lime); transform: translate(2px, -2px); }
.service-free-badge { display: inline-block; background: var(--lime); color: var(--dark); font-size: 10px; font-weight: 900; padding: 3px 10px; border-radius: 2px; letter-spacing: 0.1em; margin-bottom: 12px; }
.service-external { display: flex; align-items: center; gap: 6px; font-size: 12px; color: var(--cyan); text-decoration: none; margin-top: 16px; transition: gap 0.2s; }
.service-external:hover { gap: 10px; }
.services-cta { text-align: center; margin-top: 56px; padding: 0 40px; }

/* =============================================
   CONTACT BANNER
============================================= */
#contact-banner-1 { background: var(--dark); padding: 80px 40px; overflow: hidden; }

/* =============================================
   SUPPORTERS
============================================= */
#supporters { background: #f0f0f0; padding: 0; overflow: hidden; }
.supporters-hero { position: relative; min-height: 70vh; display: flex; align-items: center; justify-content: center; background: var(--dark); overflow: hidden; padding: 100px 40px; }
.supporters-hero-bg { position: absolute; inset: 0; background: linear-gradient(135deg, #060f06 0%, #060d1a 50%, #06141a 100%); }
.supporters-hero-grid { position: absolute; inset: 0; background-image: linear-gradient(rgba(184,235,32,0.03) 1px, transparent 1px), linear-gradient(90deg, rgba(44,204,240,0.03) 1px, transparent 1px); background-size: 60px 60px; }
.supporters-hero-content { position: relative; z-index: 2; text-align: center; max-width: 760px; }
.sh-label { font-size: 10px; font-weight: 700; letter-spacing: 0.25em; color: var(--cyan); text-transform: uppercase; margin-bottom: 20px; }
.sh-title { font-size: clamp(32px, 5vw, 72px); font-weight: 900; color: white; line-height: 1.15; margin-bottom: 24px; letter-spacing: -0.03em; }
.sh-title em { font-style: normal; color: var(--lime); }
.sh-body { font-size: 15px; color: rgba(255,255,255,0.52); line-height: 1.9; font-weight: 300; margin-bottom: 8px; }
.sh-logos { display: flex; gap: 0; flex-wrap: wrap; justify-content: center; margin-top: 44px; }
.sh-logo-item { padding: 14px 28px; font-size: 13px; font-weight: 700; color: rgba(255,255,255,0.38); letter-spacing: 0.08em; border-left: 1px solid rgba(255,255,255,0.07); }
.sh-logo-item:last-child { border-right: 1px solid rgba(255,255,255,0.07); }
.supporters-panels { display: grid; grid-template-columns: 1fr 1fr; gap: 0; }
.panel { position: relative; min-height: 60vh; display: flex; align-items: flex-end; padding: 60px; overflow: hidden; cursor: pointer; }
.panel-bg { position: absolute; inset: 0; transition: transform 0.8s cubic-bezier(0.16,1,0.3,1); }
.panel-a-bg { background: linear-gradient(135deg, #0a2a15 0%, #062030 100%); }
.panel-b-bg { background: linear-gradient(135deg, #0a0a20 0%, #1a0a10 100%); }
.panel:hover .panel-bg { transform: scale(1.04); }
.panel-grid { position: absolute; inset: 0; background-image: linear-gradient(rgba(184,235,32,0.03) 1px, transparent 1px), linear-gradient(90deg, rgba(184,235,32,0.03) 1px, transparent 1px); background-size: 40px 40px; opacity: 0; transition: opacity 0.4s; }
.panel:hover .panel-grid { opacity: 1; }
.panel-overlay { position: absolute; inset: 0; background: rgba(0,0,0,0.28); }
.panel-accent { position: absolute; top: 0; left: 0; right: 0; height: 3px; transform: scaleX(0); transform-origin: left; transition: transform 0.5s ease; }
.panel:nth-child(1) .panel-accent { background: linear-gradient(to right, var(--lime), var(--cyan)); }
.panel:nth-child(2) .panel-accent { background: linear-gradient(to right, var(--cyan), var(--lime)); }
.panel:hover .panel-accent { transform: scaleX(1); }
.panel-content { position: relative; z-index: 2; }
.panel-tag { font-size: 10px; font-weight: 700; letter-spacing: 0.2em; color: rgba(255,255,255,0.45); text-transform: uppercase; margin-bottom: 14px; }
.panel-title { font-size: clamp(18px, 2.5vw, 28px); font-weight: 900; color: white; line-height: 1.3; margin-bottom: 16px; }
.panel-title em { font-style: normal; color: var(--lime); }
.panel-body { font-size: 13px; color: rgba(255,255,255,0.58); line-height: 1.9; font-weight: 300; max-width: 400px; }
.panel-detail { max-height: 0; overflow: hidden; transition: max-height 0.6s ease; }
.panel:hover .panel-detail { max-height: 300px; }
.panel-detail-inner { padding-top: 24px; }
.panel-detail-list { list-style: none; }
.panel-detail-list li { font-size: 13px; color: rgba(255,255,255,0.72); padding: 5px 0; display: flex; gap: 10px; align-items: flex-start; }
.panel-detail-list li::before { content: '→'; color: var(--lime); flex-shrink: 0; }
.panel-cta { display: inline-flex; align-items: center; gap: 8px; margin-top: 20px; font-size: 12px; font-weight: 700; color: var(--lime); letter-spacing: 0.1em; text-decoration: none; border-bottom: 1px solid rgba(184,235,32,0.35); padding-bottom: 3px; transition: gap 0.2s; }
.panel-cta:hover { gap: 14px; }
.auto-switch-indicator { display: flex; gap: 8px; padding: 20px; background: #f0f0f0; justify-content: center; }
.asi-dot { width: 8px; height: 8px; border-radius: 50%; background: var(--gray2); cursor: pointer; transition: all 0.35s; }
.asi-dot.active { background: var(--lime); width: 24px; border-radius: 4px; }

/* =============================================
   RESULTS
============================================= */
#results { padding: 120px 0; background: white; overflow: hidden; }
.results-header { padding: 0 40px; margin-bottom: 56px; display: flex; align-items: flex-end; justify-content: space-between; max-width: 1200px; margin-left: auto; margin-right: auto; }
.view-all { font-size: 13px; font-weight: 700; color: var(--dark); text-decoration: none; display: flex; align-items: center; gap: 6px; transition: gap 0.2s; border-bottom: 1.5px solid var(--lime); padding-bottom: 2px; }
.view-all:hover { gap: 10px; }
.results-carousel { position: relative; overflow: hidden; }
.results-track { display: flex; gap: 20px; padding: 0 40px; transition: transform 0.6s cubic-bezier(0.16,1,0.3,1); }
.result-card { flex: 0 0 320px; background: var(--gray); border-radius: 6px; overflow: hidden; cursor: pointer; transition: all 0.35s; }
.result-card:hover { transform: translateY(-8px); box-shadow: 0 24px 48px rgba(0,0,0,0.09); }
.result-card-img { height: 200px; overflow: hidden; background: linear-gradient(135deg, #1a2a1a, #0a1a2a); display: flex; align-items: center; justify-content: center; }
.result-card-img-placeholder { font-size: 48px; opacity: 0.2; }
.result-card-body { padding: 24px; }
.result-tags { display: flex; flex-wrap: wrap; gap: 6px; margin-bottom: 12px; }
.result-tag { font-size: 10px; font-weight: 700; letter-spacing: 0.08em; padding: 4px 10px; border-radius: 2px; background: rgba(44,204,240,0.1); color: #0090b0; }
.result-name { font-size: 15px; font-weight: 700; color: var(--dark); margin-bottom: 8px; line-height: 1.5; }
.result-meta { font-size: 12px; color: var(--text-muted); display: flex; gap: 12px; }
.carousel-controls { display: flex; align-items: center; justify-content: center; gap: 12px; margin-top: 36px; }
.carousel-btn { width: 44px; height: 44px; border-radius: 50%; border: 1.5px solid var(--gray2); background: white; cursor: pointer; display: flex; align-items: center; justify-content: center; font-size: 14px; color: var(--text); transition: all 0.25s; font-family: var(--font); }
.carousel-btn:hover { border-color: var(--lime); background: var(--lime); color: var(--dark); }
.carousel-dots { display: flex; gap: 6px; }
.cdot { width: 6px; height: 6px; border-radius: 50%; background: var(--gray2); cursor: pointer; transition: all 0.3s; }
.cdot.active { background: var(--lime); width: 20px; border-radius: 3px; }

/* =============================================
   NEWS
============================================= */
#news { background: #f8f8f8; padding: 120px 0; }
.news-inner { max-width: 1200px; margin: 0 auto; padding: 0 40px; }
.news-layout { display: grid; grid-template-columns: 220px 1fr; gap: 64px; align-items: start; }
.news-tabs { display: flex; flex-direction: column; gap: 4px; }
.news-tab { padding: 12px 20px; font-size: 13px; font-weight: 700; cursor: pointer; border-radius: 3px; transition: all 0.2s; text-align: left; background: transparent; border: none; font-family: var(--font); color: var(--text-muted); }
.news-tab.active { background: var(--dark); color: var(--lime); }
.news-tab:hover:not(.active) { background: var(--gray2); color: var(--dark); }
.news-all-btn { display: flex; align-items: center; gap: 6px; font-size: 12px; font-weight: 700; color: var(--dark); text-decoration: none; padding: 12px 20px; transition: gap 0.2s; border-bottom: 1.5px solid var(--lime); margin: 16px 0 0 20px; width: fit-content; }
.news-all-btn:hover { gap: 10px; }
.news-list { display: flex; flex-direction: column; }
.news-item { display: grid; grid-template-columns: 120px 1fr; gap: 20px; align-items: center; padding: 24px 0; border-bottom: 1px solid var(--gray2); cursor: pointer; transition: all 0.2s; }
.news-item:hover { background: white; margin: 0 -20px; padding: 24px 20px; border-radius: 4px; }
.news-item-img { height: 80px; background: var(--gray2); border-radius: 4px; overflow: hidden; display: flex; align-items: center; justify-content: center; font-size: 28px; }
.news-date { font-size: 11px; color: var(--text-muted); margin-bottom: 6px; font-weight: 500; letter-spacing: 0.05em; }
.news-cat { display: inline-block; font-size: 10px; font-weight: 700; background: rgba(44,204,240,0.1); color: #0090b0; padding: 2px 8px; border-radius: 2px; margin-bottom: 8px; }
.news-title { font-size: 14px; font-weight: 700; color: var(--dark); line-height: 1.6; }

/* =============================================
   FOOTER
============================================= */
footer { background: var(--dark); }
.footer-marquee { overflow: hidden; padding: 56px 0; border-bottom: 1px solid rgba(255,255,255,0.05); }
.footer-marquee-inner { display: flex; gap: 0; white-space: nowrap; animation: marquee 22s linear infinite; }
.footer-marquee-text { font-size: clamp(52px, 7vw, 100px); font-weight: 900; color: rgba(255,255,255,0.03); letter-spacing: -0.04em; padding-right: 60px; white-space: nowrap; }
.footer-marquee-text .lime { color: rgba(184,235,32,0.1); }
.footer-marquee-text .cyan-t { color: rgba(44,204,240,0.08); }
@keyframes marquee { 0%{transform:translateX(0)} 100%{transform:translateX(-50%)} }
.footer-main { max-width: 1200px; margin: 0 auto; padding: 72px 40px 48px; display: grid; grid-template-columns: 2fr 1fr 1fr 1fr; gap: 60px; }
.footer-brand-name { font-size: 26px; font-weight: 900; color: white; margin-bottom: 8px; letter-spacing: -0.03em; }
.footer-brand-name span { color: var(--lime); }
.footer-tagline { font-size: 13px; color: rgba(255,255,255,0.28); line-height: 1.9; font-weight: 300; margin-bottom: 28px; }
.footer-address { font-size: 12px; color: rgba(255,255,255,0.18); line-height: 1.9; }
.footer-col-title { font-size: 10px; font-weight: 700; letter-spacing: 0.2em; color: var(--lime); text-transform: uppercase; margin-bottom: 20px; }
.footer-links { list-style: none; display: flex; flex-direction: column; gap: 12px; }
.footer-links a { font-size: 13px; color: rgba(255,255,255,0.32); text-decoration: none; transition: color 0.2s; }
.footer-links a:hover { color: white; }
.footer-bottom { border-top: 1px solid rgba(255,255,255,0.05); padding: 24px 40px; max-width: 1200px; margin: 0 auto; display: flex; justify-content: space-between; align-items: center; }
.footer-copy { font-size: 12px; color: rgba(255,255,255,0.16); }
.footer-bottom-links { display: flex; gap: 24px; }
.footer-bottom-links a { font-size: 12px; color: rgba(255,255,255,0.16); text-decoration: none; transition: color 0.2s; }
.footer-bottom-links a:hover { color: rgba(255,255,255,0.5); }

/* =============================================
   ANIMATIONS
============================================= */
@keyframes fadeUp { from{opacity:0;transform:translateY(28px)} to{opacity:1;transform:translateY(0)} }
@keyframes fadeIn { from{opacity:0} to{opacity:1} }
@keyframes slideFromLeft { from{opacity:0;transform:translateX(-20px)} to{opacity:1;transform:translateX(0)} }
.reveal { opacity: 0; transform: translateY(40px); transition: opacity 0.9s ease, transform 0.9s ease; }
.reveal.visible { opacity: 1; transform: translateY(0); }
.reveal-delay-1 { transition-delay: 0.15s; }
.reveal-delay-2 { transition-delay: 0.3s; }

/* =============================================
   RESPONSIVE
============================================= */
@media (max-width: 768px) {
  nav { padding: 0 20px; }
  .nav-links { display: none; }
  .hamburger { display: flex; }
  .nav-cta { display: none; }
  .hero-content { padding: 40px 24px 32px; }
  .hero-title { font-size: 38px; }
  .hero-corner,.hero-deco-line { display: none; }
  .hero-stats { flex-wrap: wrap; }
  .hero-stat { border-right: none; border-bottom: 1px solid rgba(255,255,255,0.08); width: 50%; padding: 20px 8px; }
  .hero-stat:nth-child(odd) { border-right: 1px solid rgba(255,255,255,0.08); }
  .hero-stat:nth-last-child(-n+2) { border-bottom: none; }
  .mission-item { grid-template-columns: 1fr; }
  .mission-item:nth-child(even) .mission-text { order: 1; }
  .mission-item:nth-child(even) .mission-visual { order: 2; }
  .mission-text,.mission-text.from-left,.mission-text.from-right { padding: 48px 24px; }
  .mission-visual { min-height: 280px; }
  .mission-num { font-size: 80px; }
  .services-grid { grid-template-columns: 1fr; padding: 0 20px; }
  .supporters-panels { grid-template-columns: 1fr; }
  .panel { min-height: 50vh; padding: 40px 24px; }
  .news-layout { grid-template-columns: 1fr; gap: 32px; }
  .news-tabs { flex-direction: row; flex-wrap: wrap; }
  .footer-main { grid-template-columns: 1fr; gap: 40px; }
  .footer-bottom { flex-direction: column; gap: 12px; text-align: center; }
  .results-track { padding: 0 20px; }
  .result-card { flex: 0 0 280px; }
  #contact-banner-1 { padding: 60px 20px; }
  .contact-banner-inner { grid-template-columns: 1fr; padding: 32px 28px; }
  .section-header,.results-header { padding: 0 20px; }
}

/* スマホMISSIONスクロールボタン */
.btn-mission-scroll {
  display: none;
}
@media (max-width: 768px) {
  .btn-mission-scroll {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    margin-top: 12px;
    font-size: 13px;
    font-weight: 700;
    color: var(--cyan);
    text-decoration: none;
    letter-spacing: 0.08em;
    border-bottom: 1px solid rgba(44,204,240,0.4);
    padding-bottom: 2px;
    transition: gap 0.2s;
  }
  .btn-mission-scroll:hover { gap: 10px; }
}

/* =============================================
   SERVICES OVERVIEW（概要エリア追加分）
============================================= */
.services-overview {
  display: grid;
  grid-template-columns: 280px 1fr;
  gap: 80px;
  max-width: 1200px;
  margin: 0 auto 72px;
  padding: 0 40px;
  align-items: start;
}
.services-overview-left {
  position: sticky;
  top: calc(var(--nav-h) + 32px);
}
.brand-logo-link {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 12px;
  text-decoration: none;
  transition: opacity 0.3s;
}
.brand-logo-link:hover { opacity: 0.8; }
.brand-badge-large {
  background: var(--lime);
  color: var(--dark);
  padding: 10px 28px;
  font-size: clamp(22px, 3vw, 32px);
  font-weight: 900;
  letter-spacing: 0.12em;
  border-radius: 3px;
  line-height: 1;
}
.brand-link-text {
  font-size: 12px;
  font-weight: 700;
  color: var(--cyan);
  letter-spacing: 0.08em;
}
.services-overview-text {
  font-size: 22px;
  line-height: 1.65;
  color: #ffffff;
  font-weight: 300;
  margin-bottom: 20px;
}
.services-features-row {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 1px;
  margin-top: 40px;
  background: rgba(255,255,255,0.06);
}
.services-feature {
  background: var(--dark2);
  padding: 28px 20px;
  text-align: center;
}
.services-feature-num {
  font-size: clamp(32px, 4vw, 52px);
  font-weight: 900;
  color: var(--lime);
  line-height: 1.1;
  margin-bottom: 10px;
  font-style: italic;
}
.services-feature-num span {
  font-size: 0.55em;
  font-style: normal;
  color: var(--cyan);
  margin-left: 3px;
}
.services-feature-label {
  font-size: 18px;
  font-weight: 500;
  color: #ffffff;
  line-height: 1.7;
}

/* ホバーで表示する実績タグ */
.service-result-tags {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  margin-top: 14px;
  padding-top: 14px;
  border-top: 1px solid rgba(255,255,255,0.06);
}
.service-result-tag {
  font-size: 10px;
  font-weight: 700;
  letter-spacing: 0.06em;
  padding: 4px 10px;
  border-radius: 2px;
  background: rgba(184,235,32,0.1);
  color: var(--lime);
  white-space: nowrap;
}

/* reveal-delay追加分 */
.reveal-delay-2 { transition-delay: 0.15s; }
.reveal-delay-3 { transition-delay: 0.30s; }

/* スマホ対応 */
@media (max-width: 768px) {
  .services-overview {
    grid-template-columns: 1fr;
    gap: 40px;
    padding: 0 20px;
    margin-bottom: 48px;
  }
  .services-overview-left { position: static; }
  .brand-badge-large { font-size: 24px; }
  .services-features-row { grid-template-columns: 1fr; }
  .services-feature { padding: 20px 16px; }
}

/* services section-sub サイズ上書き */
#services .section-sub { font-size: 24px; color: rgba(255,255,255,0.75); }

/* =============================================
   実績モーダル
============================================= */
.wavy-modal {
  display: none;
  position: fixed;
  inset: 0;
  z-index: 9000;
  align-items: center;
  justify-content: center;
}
.wavy-modal.active {
  display: flex;
}
.wavy-modal-overlay {
  position: absolute;
  inset: 0;
  background: rgba(0,0,0,0.82);
  backdrop-filter: blur(6px);
}
.wavy-modal-wrap {
  position: relative;
  z-index: 1;
  background: #111111;
  border-radius: 6px;
  width: 90%;
  max-width: 760px;
  max-height: 88vh;
  overflow-y: auto;
  box-shadow: 0 24px 80px rgba(0,0,0,0.6);
  animation: modalIn 0.3s cubic-bezier(0.2,0.8,0.3,1) forwards;
}
@keyframes modalIn {
  from { opacity:0; transform: translateY(24px) scale(0.97); }
  to   { opacity:1; transform: translateY(0) scale(1); }
}
.wavy-modal-close {
  position: absolute;
  top: 16px; right: 16px;
  width: 36px; height: 36px;
  background: rgba(255,255,255,0.08);
  border: none;
  border-radius: 50%;
  color: white;
  font-size: 18px;
  cursor: pointer;
  z-index: 2;
  display: flex; align-items: center; justify-content: center;
  transition: background 0.2s;
}
.wavy-modal-close:hover { background: rgba(255,255,255,0.18); }
.wavy-modal-inner {
  display: flex;
  flex-direction: column;
}
.wavy-modal-img {
  width: 100%;
  max-height: 320px;
  overflow: hidden;
  border-radius: 6px 6px 0 0;
}
.wavy-modal-img img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}
.wavy-modal-body {
  padding: 36px 40px 40px;
}
.wavy-modal-tags {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-bottom: 18px;
}
.wavy-modal-tag {
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.08em;
  padding: 4px 12px;
  border-radius: 2px;
  background: rgba(44,204,240,0.12);
  color: var(--cyan);
}
.wavy-modal-title {
  font-size: clamp(18px, 2.8vw, 26px);
  font-weight: 900;
  color: white;
  line-height: 1.4;
  letter-spacing: -0.02em;
  margin-bottom: 20px;
}
.wavy-modal-divider {
  width: 40px;
  height: 2px;
  background: linear-gradient(to right, var(--lime), var(--cyan));
  margin-bottom: 20px;
}
.wavy-modal-text {
  font-size: 15px;
  font-weight: 300;
  line-height: 2;
  color: rgba(255,255,255,0.75);
  margin-bottom: 24px;
  white-space: pre-wrap;
}
.wavy-modal-meta {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-bottom: 28px;
}
.wavy-modal-meta-tag {
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.06em;
  padding: 4px 12px;
  border-radius: 2px;
  background: rgba(184,235,32,0.1);
  color: var(--lime);
}
.wavy-modal-footer { text-align: right; }
.wavy-modal-link {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-size: 13px;
  font-weight: 700;
  color: var(--cyan);
  text-decoration: none;
  border-bottom: 1px solid rgba(44,204,240,0.4);
  padding-bottom: 2px;
  transition: gap 0.2s;
}
.wavy-modal-link:hover { gap: 10px; }
/* クリック可能に見せる */
.wavy-modal-trigger { cursor: pointer; }

/* スマホ対応 */
@media (max-width: 768px) {
  .wavy-modal-wrap { width: 95%; max-height: 92vh; }
  .wavy-modal-body { padding: 28px 24px 32px; }
  .wavy-modal-img { max-height: 220px; }
}

/* =============================================
   スマホ：MISSIONシーケンスをスキップ
   JSが走ってもタイトル・サブタイトルを常時表示
============================================= */
@media (max-width: 768px) {
  /* タイトルのフェードアウトを無効化 */
  .hero-title {
    opacity: 1 !important;
    filter: none !important;
    transition: none !important;
  }
  /* サブタイトルを最初から表示 */
  .hero-subtitle {
    visibility: visible !important;
    white-space: normal;
    overflow: visible;
    width: 100%;
    max-width: 100%;
  }
  .hero-subtitle-inner {
    transform: translateX(0) !important;
    animation: none !important;
    white-space: normal;
    display: inline;
  }
  /* MISSIONの大テキストは非表示 */
  .mission-big-text {
    display: none !important;
  }
}

/* =============================================
   CONTACT BANNER 1（企業向け・カクカクデザイン v5）
============================================= */
#contact-banner-1 {
  background: #ffffff;
  padding: 80px 40px;
  overflow: hidden;
  position: relative;
}
.cb1-wrap {
  max-width: 1100px;
  margin: 0 auto;
  position: relative;
  opacity: 0;
  transform: translateY(32px);
  transition: opacity 0.8s ease, transform 0.8s cubic-bezier(0.16, 1, 0.3, 1);
}
.cb1-wrap.visible { opacity: 1; transform: translateY(0); }

/* バナー背景：ライム色・上下左右カクカク */
.cb1-photo {
  position: relative;
  width: 100%;
  min-height: 360px;
  background: var(--lime);
  clip-path: polygon(
    0% 5%,
    4% 0%,
    9% 7%,
    16% 1%,
    23% 6%,
    31% 0%,
    38% 8%,
    47% 2%,
    55% 7%,
    63% 0%,
    70% 6%,
    78% 1%,
    85% 7%,
    92% 0%,
    97% 5%,
    100% 3%,
    98% 18%,
    100% 34%,
    97% 50%,
    100% 66%,
    98% 82%,
    100% 97%,
    96% 100%,
    89% 93%,
    82% 100%,
    74% 94%,
    66% 100%,
    58% 93%,
    50% 100%,
    42% 94%,
    34% 100%,
    26% 93%,
    18% 100%,
    11% 94%,
    4% 100%,
    0% 97%,
    2% 82%,
    0% 66%,
    3% 50%,
    0% 34%,
    2% 18%,
    0% 5%
  );
}
.cb1-photo-inner {
  position: absolute;
  inset: 0;
  background: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="40" height="40"><path d="M 40 0 L 0 0 0 40" fill="none" stroke="rgba(0,0,0,0.05)" stroke-width="1"/></svg>') repeat;
}

/* テキスト：バナーに絶対配置で重ねる */
.cb1-body {
  position: absolute;
  inset: 0;
  z-index: 2;
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 40px;
  align-items: start;
  padding: 52px 72px;
}
.cb1-left {}
.cb1-tag { display: none; }
.cb1-title {
  font-size: 28px;
  font-weight: 900;
  color: var(--dark);
  line-height: 1.55;
}
.cb1-title .cb1-quote {
  display: block;
  color: #ffffff;
  font-size: 26px;
  font-weight: 700;
  letter-spacing: 0.01em;
  line-height: 1.75;
}
.cb1-title em {
  font-style: normal;
  color: var(--dark);
  display: block;
  margin-top: 16px;
  font-size: 30px;
  letter-spacing: -0.02em;
  border-bottom: 3px solid rgba(0,0,0,0.2);
  padding-bottom: 8px;
  line-height: 1.3;
}
.cb1-right {
  display: flex;
  flex-direction: column;
  justify-content: center;
}
.cb1-text {
  font-size: 15px;
  color: rgba(0,0,0,0.7);
  line-height: 2;
  font-weight: 500;
  margin-bottom: 32px;
}
.cb1-form-area { position: relative; z-index: 1; }
.cb1-btn {
  display: inline-flex;
  align-items: center;
  gap: 12px;
  background: var(--dark);
  color: var(--lime);
  font-size: 15px;
  font-weight: 900;
  padding: 18px 36px;
  border-radius: 3px;
  text-decoration: none;
  letter-spacing: 0.04em;
  transition: opacity 0.2s, transform 0.2s;
  white-space: nowrap;
  box-shadow: 0 4px 20px rgba(0,0,0,0.25);
}
.cb1-btn:hover { opacity: 0.85; transform: translateY(-2px); }
.cb1-btn-free {
  background: var(--lime);
  color: var(--dark);
  font-size: 10px;
  font-weight: 900;
  padding: 4px 10px;
  border-radius: 2px;
  letter-spacing: 0.1em;
  flex-shrink: 0;
}

/* スマホ対応 */
@media (max-width: 768px) {
  #contact-banner-1 { padding: 40px 16px; }
  .cb1-wrap {
    opacity: 0;
    transform: translateY(0);
    transition: opacity 0.7s ease;
    position: relative;
    /* wrapごとclip-pathでコンテンツを切り取る */
    clip-path: polygon(
      0% 5%,
      4% 0%,
      9% 7%,
      16% 1%,
      23% 6%,
      31% 0%,
      38% 8%,
      47% 2%,
      55% 7%,
      63% 0%,
      70% 6%,
      78% 1%,
      85% 7%,
      92% 0%,
      97% 5%,
      100% 3%,
      100% 97%,
      96% 100%,
      89% 93%,
      82% 100%,
      74% 94%,
      66% 100%,
      58% 93%,
      50% 100%,
      42% 94%,
      34% 100%,
      26% 93%,
      18% 100%,
      11% 94%,
      4% 100%,
      0% 97%
    );
  }
  .cb1-wrap.visible { opacity: 1; }
  /* photoは背景として全面に敷く */
  .cb1-photo {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    min-height: unset;
    clip-path: none; /* wrapでclipするのでphotoのclipは外す */
  }
  /* bodyは通常フロー・paddingでclip-path分の余白を確保 */
  .cb1-body {
    position: relative;
    z-index: 2;
    grid-template-columns: 1fr;
    padding: 48px 28px 56px;
    gap: 16px;
    align-items: start;
  }
  .cb1-tag { display: none; }
  .cb1-title { font-size: 22px; margin-bottom: 0; }
  .cb1-title .cb1-quote { font-size: 18px; line-height: 1.7; color: var(--dark); }
  .cb1-title em { font-size: 24px; margin-top: 8px; }
  .cb1-text { font-size: 15px; line-height: 1.85; margin-bottom: 20px; margin-top: 0; }
  .cb1-btn {
    width: 100%;
    justify-content: center;
    font-size: 14px;
    padding: 16px 24px;
  }
  .cb1-sp-spacer { display: none; }
}

/* supporters-hero 動画背景 */
.supporters-video-bg { position: absolute; inset: 0; overflow: hidden; z-index: 0; }
#supYtPlayer,
.supporters-video-bg iframe {
  position: absolute !important; top: 50% !important; left: 50% !important;
  transform: translate(-50%, -50%) !important;
  width: 177.78vh !important; height: 56.25vw !important;
  min-width: 100% !important; min-height: 100% !important;
  pointer-events: none !important; border: none !important;
}
.supporters-video-overlay { position: absolute; inset: 0; background: rgba(0,0,0,0.55); z-index: 1; }
/* 動画ON時はデフォルト背景を透明に */
.supporters-video-bg ~ .supporters-hero-bg { opacity: 0; }

/* sh-body-main：累計テキスト */
.sh-body-main {
  font-size: 16px;
  color: rgba(255,255,255,0.75);
  line-height: 1.9;
  font-weight: 300;
  margin-bottom: 32px;
  max-width: 640px;
  margin-left: auto;
  margin-right: auto;
}
/* =============================================
   SUPPORTERS — sh-body テキスト強調
============================================= */
.sh-body,
.sh-body-main {
  font-size: 24px;
  color: var(--lime);
  font-weight: 700;
  line-height: 1.75;
}

/* sh-logos 非表示 */
.sh-logos { display: none; }

/* =============================================
   SUPPORTERS PANELS — レイアウト・フォントサイズ改善
============================================= */
.supporters-panels .panel {
  align-items: center;
  min-height: auto;
  padding: 64px 60px;
}
.supporters-panels .panel-tag {
  font-size: 12px;
  color: rgba(255,255,255,0.6);
  margin-bottom: 18px;
}
.supporters-panels .panel-title {
  font-size: clamp(22px, 2.8vw, 32px);
  margin-bottom: 20px;
}
.supporters-panels .panel-body {
  font-size: 16px;
  line-height: 1.9;
  color: rgba(255,255,255,0.75);
  max-width: 480px;
}
.supporters-panels .panel-detail-list li {
  font-size: 15px;
  line-height: 1.8;
  color: rgba(255,255,255,0.82);
}
.supporters-panels .panel:hover .panel-detail {
  max-height: 420px;
}
@media (max-width: 768px) {
  .supporters-panels .panel { padding: 48px 24px; }
  .supporters-panels .panel-body { font-size: 15px; }
}

/* =============================================
   SUPPORTERS PANELS — panel-tag タイトル強調・センター
============================================= */
.supporters-panels .panel-content {
  width: 100%;
  text-align: center;
}
.supporters-panels .panel-tag {
  font-size: 13px;
  font-weight: 700;
  letter-spacing: 0.25em;
  color: var(--cyan);
  text-transform: uppercase;
  margin-bottom: 20px;
  display: block;
}
.supporters-panels .panel-title {
  text-align: center;
}
.supporters-panels .panel-body {
  margin: 0 auto;
  text-align: left;
}
.supporters-panels .panel-detail-inner {
  text-align: left;
}

/* =============================================
   RESULTS — カードリデザイン（v2）
============================================= */
.result-card {
  flex: 0 0 340px;
  background: #fff;
  border-radius: 4px;
  overflow: hidden;
  box-shadow: 0 2px 12px rgba(0,0,0,0.07);
  transition: transform 0.3s ease, box-shadow 0.3s ease;
  display: flex;
  flex-direction: column;
}
.result-card:hover {
  transform: translateY(-6px);
  box-shadow: 0 16px 40px rgba(0,0,0,0.13);
}
.result-card-img {
  height: 210px;
  overflow: hidden;
  background: linear-gradient(135deg, #0d1f0d, #0a1528);
  flex-shrink: 0;
  display: flex;
  align-items: center;
  justify-content: center;
}
.result-card-img img {
  width: 100%; height: 100%; object-fit: cover;
  transition: transform 0.5s ease;
}
.result-card:hover .result-card-img img { transform: scale(1.04); }
.result-card-img-placeholder { font-size: 52px; opacity: 0.18; }

.result-card-body {
  padding: 20px 22px 18px;
  display: flex;
  flex-direction: column;
  flex: 1;
}

/* メタ情報行（導入時期・所在地・規模） */
.result-card-meta-row {
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
  margin-bottom: 12px;
  padding-bottom: 12px;
  border-bottom: 1px solid rgba(0,0,0,0.07);
}
.rcm-item {
  font-size: 11px;
  color: var(--text-muted);
  display: flex;
  align-items: center;
  gap: 4px;
}
.rcm-label {
  font-size: 10px;
  font-weight: 700;
  color: #999;
  letter-spacing: 0.04em;
  background: #f0f0f0;
  padding: 2px 6px;
  border-radius: 2px;
  flex-shrink: 0;
}

/* タイトル */
.result-name {
  font-size: 16px;
  font-weight: 800;
  color: var(--dark);
  line-height: 1.55;
  margin-bottom: 16px;
  flex: 1;
}

/* フッター（タグ＋詳細ボタン） */
.result-card-footer {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 10px;
  margin-top: auto;
}
.result-tags {
  display: flex;
  flex-wrap: wrap;
  gap: 5px;
}
.result-tag {
  font-size: 10px;
  font-weight: 700;
  letter-spacing: 0.06em;
  padding: 4px 10px;
  border-radius: 2px;
  background: rgba(44,204,240,0.1);
  color: #0090b0;
}
.result-card-btn {
  flex-shrink: 0;
  font-size: 12px;
  font-weight: 700;
  color: var(--dark);
  background: var(--lime);
  padding: 7px 14px;
  border-radius: 3px;
  letter-spacing: 0.04em;
  transition: opacity 0.2s;
}
.result-card:hover .result-card-btn { opacity: 0.8; }

@media (max-width: 768px) {
  .result-card { flex: 0 0 290px; }
  .result-card-img { height: 175px; }
}

/* =============================================
   モーダル 画像ギャラリー
============================================= */
.wm-single-img {
  width: 100%; height: 100%; object-fit: cover; display: block;
}
.wm-gallery {
  display: grid;
  gap: 3px;
  width: 100%; height: 100%;
}
/* 2枚：左右50/50 */
.wm-gallery-2 { grid-template-columns: 1fr 1fr; }
/* 3枚：左大＋右2段 */
.wm-gallery-3 {
  grid-template-columns: 2fr 1fr;
  grid-template-rows: 1fr 1fr;
}
.wm-gallery-3 .wm-gallery-item:first-child {
  grid-row: 1 / 3;
}
/* 4枚：2×2 */
.wm-gallery-4 {
  grid-template-columns: 1fr 1fr;
  grid-template-rows: 1fr 1fr;
}
.wm-gallery-item { overflow: hidden; min-height: 100px; }
.wm-gallery-item img {
  width: 100%; height: 100%; object-fit: cover;
  display: block;
  transition: transform 0.4s ease;
}
.wm-gallery-item:hover img { transform: scale(1.04); }

/* =============================================
   モーダル 追加画像（本文下・縦並び）
============================================= */
.wavy-modal-sub-imgs {
  display: flex;
  flex-direction: column;
  gap: 12px;
  margin-bottom: 24px;
}
.wm-sub-img {
  width: 100%;
  border-radius: 4px;
  overflow: hidden;
}
.wm-sub-img img {
  width: 100%;
  height: auto;
  display: block;
  object-fit: cover;
}

/* =============================================
   RESULTS ヘッダー センター配置
============================================= */
.results-header {
  text-align: center;
  display: block;
}
.results-header .view-all {
  color: var(--lime);
  font-size: 13px;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-decoration: none;
  border-bottom: 1px solid rgba(184,235,32,0.4);
  padding-bottom: 2px;
  transition: opacity 0.2s;
}
.results-header .view-all:hover { opacity: 0.7; }

/* =============================================
   実績一覧ページ（archive-achievement）
============================================= */
.archive-achievement-wrap {
  max-width: 1200px;
  margin: 0 auto;
  padding: 120px 40px 80px;
}
.archive-achievement-head {
  margin-bottom: 56px;
}
.archive-achievement-head .section-eyebrow {
  display: inline-flex; align-items: center; gap: 8px;
  font-size: 10px; font-weight: 700; letter-spacing: 0.22em;
  color: var(--lime); text-transform: uppercase; margin-bottom: 14px;
}
.archive-achievement-head h1 {
  font-size: clamp(28px, 4vw, 48px);
  font-weight: 900;
  color: var(--dark);
  letter-spacing: -0.02em;
  margin-bottom: 12px;
}
.archive-achievement-head p {
  font-size: 15px;
  color: var(--text-muted);
}

/* フィルターバー */
.archive-filter-bar {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-bottom: 48px;
  padding-bottom: 24px;
  border-bottom: 1px solid var(--gray2);
}
.archive-filter-btn {
  font-size: 12px;
  font-weight: 700;
  letter-spacing: 0.06em;
  padding: 7px 18px;
  border-radius: 2px;
  border: 1px solid var(--gray2);
  background: #fff;
  color: var(--text-muted);
  cursor: pointer;
  transition: all 0.2s;
  text-decoration: none;
}
.archive-filter-btn:hover,
.archive-filter-btn.active {
  background: var(--dark);
  color: #fff;
  border-color: var(--dark);
}

/* カードグリッド */
.archive-achievement-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 28px;
  margin-bottom: 64px;
}
.archive-achievement-grid .result-card {
  flex: none;
  width: 100%;
}

/* ページネーション */
.archive-pagination {
  display: flex;
  justify-content: center;
  gap: 8px;
}
.archive-pagination .page-numbers {
  display: inline-flex; align-items: center; justify-content: center;
  width: 40px; height: 40px;
  border: 1px solid var(--gray2);
  border-radius: 2px;
  font-size: 13px; font-weight: 700;
  color: var(--text);
  text-decoration: none;
  transition: all 0.2s;
}
.archive-pagination .page-numbers.current,
.archive-pagination .page-numbers:hover {
  background: var(--dark);
  color: #fff;
  border-color: var(--dark);
}
.archive-pagination .page-numbers.dots { border: none; }

@media (max-width: 900px) {
  .archive-achievement-grid { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 600px) {
  .archive-achievement-wrap { padding: 100px 20px 60px; }
  .archive-achievement-grid { grid-template-columns: 1fr; }
}

/* Results section-sub オレンジ色 */
#results .section-sub { color: var(--orange); font-weight: 500; }

/* =============================================
   モーダル リデザイン（大型化・横並びヘッダー）
============================================= */
.wavy-modal-wrap {
  max-width: 1100px !important;
  width: 92vw !important;
  max-height: 92vh !important;
}
/* ヘッダー：画像(左) + タイトル(右) */
.wavy-modal-header {
  display: flex;
  gap: 0;
  align-items: stretch;
  min-height: 280px;
}
.wavy-modal-img {
  width: 340px !important;
  max-height: none !important;
  flex-shrink: 0;
  border-radius: 6px 0 0 0;
  overflow: hidden;
  background: #1a2a1a;
}
.wavy-modal-img img {
  width: 100% !important;
  height: 100% !important;
  object-fit: cover !important;
}
.wavy-modal-header-body {
  flex: 1;
  padding: 40px 48px;
  display: flex;
  flex-direction: column;
  justify-content: center;
  gap: 12px;
}
.wavy-modal-divider {
  margin: 0 40px 0;
  width: auto !important;
}
/* 本文コンテンツエリア */
.wavy-modal-content {
  padding: 32px 40px 40px;
  color: rgba(255,255,255,0.82);
  font-size: 15px;
  line-height: 2;
}
.wavy-modal-content p { margin-bottom: 1.4em; }
.wavy-modal-content img {
  max-width: 100%;
  height: auto;
  display: block;
  margin: 24px auto;
  border-radius: 4px;
}
.wavy-modal-content h2 {
  font-size: 20px; font-weight: 800;
  color: white; margin: 28px 0 12px;
}
.wavy-modal-content h3 {
  font-size: 17px; font-weight: 700;
  color: var(--lime); margin: 24px 0 10px;
}
.wavy-modal-content figure { margin: 24px 0; }
.wavy-modal-content figcaption {
  font-size: 12px; color: rgba(255,255,255,0.45);
  text-align: center; margin-top: 6px;
}
.wavy-modal-content a {
  color: var(--cyan);
  text-decoration: underline;
  text-underline-offset: 3px;
}

/* ローディングアニメーション */
.wm-loading {
  display: flex; align-items: center; justify-content: center;
  gap: 8px; padding: 48px;
}
.wm-loading span {
  width: 8px; height: 8px; border-radius: 50%;
  background: var(--lime); opacity: 0.4;
  animation: wmDot 1s ease-in-out infinite;
}
.wm-loading span:nth-child(2) { animation-delay: 0.15s; }
.wm-loading span:nth-child(3) { animation-delay: 0.30s; }
@keyframes wmDot {
  0%,80%,100% { transform: scale(0.6); opacity:0.3; }
  40% { transform: scale(1); opacity:1; }
}

/* スマホ対応 */
@media (max-width: 768px) {
  .wavy-modal-wrap { width: 95vw !important; max-height: 94vh !important; }
  .wavy-modal-header { flex-direction: column; min-height: auto; }
  .wavy-modal-img { width: 100% !important; height: 200px; border-radius: 6px 6px 0 0; }
  .wavy-modal-header-body { padding: 24px 20px; }
  .wavy-modal-divider { margin: 0 20px; }
  .wavy-modal-content { padding: 24px 20px 32px; }
}

/* =============================================
   お知らせ一覧ページ（page-news.php）
============================================= */
.page-news-wrap {
  max-width: 1200px;
  margin: 0 auto;
  padding: 120px 40px 80px;
}
.page-news-head {
  margin-bottom: 56px;
}
.page-news-head .section-eyebrow {
  display: inline-flex; align-items: center; gap: 8px;
  font-size: 10px; font-weight: 700; letter-spacing: 0.22em;
  color: var(--lime); text-transform: uppercase; margin-bottom: 14px;
}
.page-news-head h1 {
  font-size: clamp(28px, 4vw, 48px);
  font-weight: 900;
  color: var(--dark);
  letter-spacing: -0.02em;
}
.page-news-layout {
  display: grid;
  grid-template-columns: 220px 1fr;
  gap: 64px;
  align-items: start;
}
.page-news-sidebar .news-tabs {
  flex-direction: column;
  position: sticky;
  top: 100px;
}
/* タブをリンク化するための上書き */
.page-news-sidebar .news-tab {
  display: block;
  text-decoration: none;
  color: var(--text-muted);
}
.page-news-sidebar .news-tab.active {
  background: var(--dark);
  color: var(--lime);
}
.page-news-empty {
  color: var(--text-muted);
  padding: 60px 0;
  text-align: center;
}
@media (max-width: 768px) {
  .page-news-wrap { padding: 100px 20px 60px; }
  .page-news-layout { grid-template-columns: 1fr; gap: 32px; }
  .page-news-sidebar .news-tabs { flex-direction: row; flex-wrap: wrap; position: static; }
}

/* =============================================
   お知らせ一覧 リデザイン（page-news.php v2）
============================================= */

/* ヒーローヘッダー */
.pn-hero {
  position: relative;
  background: var(--dark);
  padding: 160px 40px 80px;
  overflow: hidden;
}
.pn-hero-bg {
  position: absolute;
  inset: 0;
  z-index: 0;
}
.pn-hero-grid {
  position: absolute;
  inset: 0;
  background-image:
    linear-gradient(rgba(184,235,32,.04) 1px, transparent 1px),
    linear-gradient(90deg, rgba(184,235,32,.04) 1px, transparent 1px);
  background-size: 48px 48px;
}
.pn-hero-glow {
  position: absolute;
  top: -40%;
  right: -10%;
  width: 600px;
  height: 600px;
  background: radial-gradient(circle, rgba(44,204,240,0.12) 0%, transparent 70%);
  pointer-events: none;
}
.pn-hero-inner {
  position: relative;
  z-index: 1;
  max-width: 1200px;
  margin: 0 auto;
}
.pn-hero-label {
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.3em;
  color: var(--lime);
  text-transform: uppercase;
  margin-bottom: 16px;
  display: flex;
  align-items: center;
  gap: 12px;
}
.pn-hero-label::before {
  content: '';
  display: block;
  width: 32px;
  height: 1px;
  background: var(--lime);
  opacity: 0.6;
}
.pn-hero-title {
  font-size: clamp(40px, 6vw, 80px);
  font-weight: 900;
  color: #fff;
  letter-spacing: -0.04em;
  line-height: 1;
  margin-bottom: 20px;
}
.pn-hero-count {
  font-size: 13px;
  color: rgba(255,255,255,0.4);
  font-weight: 500;
  letter-spacing: 0.05em;
}
.pn-hero-count span {
  color: var(--cyan);
  font-size: 18px;
  font-weight: 700;
  margin-right: 4px;
}

/* フィルターバー */
.pn-filter-bar {
  background: #fff;
  border-bottom: 1px solid var(--gray2);
  position: sticky;
  top: 72px;
  z-index: 100;
  box-shadow: 0 2px 16px rgba(0,0,0,0.05);
}
.pn-filter-inner {
  max-width: 1200px;
  margin: 0 auto;
  padding: 0 40px;
  display: flex;
  gap: 0;
  overflow-x: auto;
}
.pn-filter-btn {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 18px 24px;
  font-size: 13px;
  font-weight: 700;
  color: var(--text-muted);
  text-decoration: none;
  border-bottom: 2px solid transparent;
  white-space: nowrap;
  transition: all 0.2s;
  letter-spacing: 0.04em;
}
.pn-filter-btn:hover { color: var(--dark); border-bottom-color: var(--gray2); }
.pn-filter-btn.active { color: var(--dark); border-bottom-color: var(--lime); }
.pnfb-dot {
  width: 6px; height: 6px;
  border-radius: 50%;
  background: var(--gray2);
  flex-shrink: 0;
  transition: background 0.2s;
}
.pn-filter-btn.active .pnfb-dot { background: var(--lime); }
.pn-filter-btn:hover .pnfb-dot { background: var(--dark); }

/* メインラッパー */
.pn-wrap {
  max-width: 1200px;
  margin: 0 auto;
  padding: 60px 40px 100px;
}

/* フィーチャーカード（最新1件） */
.pn-featured {
  display: grid;
  grid-template-columns: 1fr 1fr;
  min-height: 400px;
  border-radius: 8px;
  overflow: hidden;
  text-decoration: none;
  margin-bottom: 48px;
  background: var(--dark);
  box-shadow: 0 8px 40px rgba(0,0,0,0.12);
  transition: transform 0.3s ease, box-shadow 0.3s ease;
}
.pn-featured:hover { transform: translateY(-4px); box-shadow: 0 20px 60px rgba(0,0,0,0.18); }
.pn-featured-img {
  position: relative;
  overflow: hidden;
  background: #0d1f1a;
}
.pn-featured-img img { width:100%; height:100%; object-fit:cover; transition: transform 0.6s ease; }
.pn-featured:hover .pn-featured-img img { transform: scale(1.04); }
.pn-featured-overlay {
  position: absolute;
  inset: 0;
  background: linear-gradient(to right, transparent 60%, var(--dark));
}
.pn-featured-noimg {
  width:100%; height:100%;
  display:flex; align-items:center; justify-content:center;
  background: linear-gradient(135deg, #0a2a1a, #081828);
}
.pn-featured-noimg span {
  font-size: 80px; font-weight: 900; font-style: italic;
  color: rgba(184,235,32,0.08); letter-spacing: -0.05em;
}
.pn-featured-body {
  padding: 52px 48px;
  display: flex;
  flex-direction: column;
  justify-content: center;
  gap: 16px;
}
.pn-featured-meta {
  display: flex;
  align-items: center;
  gap: 12px;
  flex-wrap: wrap;
}
.pn-featured-badge {
  font-size: 9px;
  font-weight: 900;
  letter-spacing: 0.2em;
  color: var(--dark);
  background: var(--lime);
  padding: 3px 10px;
  border-radius: 2px;
}
.pn-featured-title {
  font-size: clamp(18px, 2.5vw, 26px);
  font-weight: 900;
  color: #fff;
  line-height: 1.45;
  letter-spacing: -0.02em;
}
.pn-featured-excerpt {
  font-size: 14px;
  color: rgba(255,255,255,0.55);
  line-height: 1.85;
  font-weight: 300;
}
.pn-featured-cta {
  font-size: 13px;
  font-weight: 700;
  color: var(--lime);
  letter-spacing: 0.06em;
  margin-top: 8px;
  transition: letter-spacing 0.2s;
}
.pn-featured:hover .pn-featured-cta { letter-spacing: 0.12em; }

/* カテゴリーバッジ */
.pn-cat {
  font-size: 10px;
  font-weight: 700;
  letter-spacing: 0.08em;
  padding: 4px 10px;
  border-radius: 2px;
  background: rgba(44,204,240,0.15);
  color: var(--cyan);
}
.pn-cat--news    { background: rgba(44,204,240,0.12); color: #0090b0; }
.pn-cat--media   { background: rgba(184,235,32,0.12); color: #7aaa00; }
.pn-cat--seminar { background: rgba(255,105,0,0.12);  color: #cc5500; }
.pn-cat--column  { background: rgba(6,147,227,0.12);  color: #0060a0; }
.pn-cat--overlay {
  position: absolute;
  top: 12px; left: 12px;
  z-index: 2;
}

/* 日付 */
.pn-date {
  font-size: 11px;
  color: rgba(255,255,255,0.45);
  font-weight: 500;
  letter-spacing: 0.05em;
}

/* グリッド（2件目以降） */
.pn-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 24px;
}

/* 通常カード */
.pn-card {
  background: #fff;
  border-radius: 6px;
  overflow: hidden;
  text-decoration: none;
  display: flex;
  flex-direction: column;
  box-shadow: 0 2px 12px rgba(0,0,0,0.06);
  transition: transform 0.3s ease, box-shadow 0.3s ease;
  opacity: 0;
  animation: pnCardIn 0.5s ease forwards;
}
.pn-card--delay-0 { animation-delay: 0.05s; }
.pn-card--delay-1 { animation-delay: 0.12s; }
.pn-card--delay-2 { animation-delay: 0.19s; }
@keyframes pnCardIn {
  from { opacity: 0; transform: translateY(20px); }
  to   { opacity: 1; transform: translateY(0); }
}
.pn-card:hover { transform: translateY(-6px); box-shadow: 0 16px 40px rgba(0,0,0,0.12); }
.pn-card-img {
  height: 180px;
  overflow: hidden;
  background: linear-gradient(135deg, #0a2a1a, #081828);
  position: relative;
  flex-shrink: 0;
}
.pn-card-img img { width:100%; height:100%; object-fit:cover; transition: transform 0.4s ease; }
.pn-card:hover .pn-card-img img { transform: scale(1.06); }
.pn-card-noimg {
  width:100%; height:100%;
  display:flex; align-items:center; justify-content:center;
}
.pn-card-noimg span {
  font-size: 52px; font-weight: 900; font-style: italic;
  color: rgba(184,235,32,0.1);
}
.pn-card-body {
  padding: 20px 22px 18px;
  display: flex;
  flex-direction: column;
  flex: 1;
}
.pn-card-body .pn-date { color: var(--text-muted); margin-bottom: 8px; }
.pn-card-title {
  font-size: 14px;
  font-weight: 700;
  color: var(--dark);
  line-height: 1.6;
  flex: 1;
  margin-bottom: 14px;
}
.pn-card-arrow {
  font-size: 16px;
  color: var(--lime);
  font-weight: 700;
  transition: transform 0.2s;
  align-self: flex-end;
}
.pn-card:hover .pn-card-arrow { transform: translateX(4px); }

/* 空状態 */
.pn-empty {
  text-align: center;
  padding: 80px 0;
  color: var(--text-muted);
}
.pn-empty-icon { font-size: 48px; margin-bottom: 16px; }

/* ページネーション */
.pn-pagination {
  display: flex;
  justify-content: center;
  gap: 8px;
  margin-top: 60px;
}
.pn-pagination .page-numbers {
  display: inline-flex; align-items: center; justify-content: center;
  min-width: 44px; height: 44px;
  padding: 0 12px;
  border: 1px solid var(--gray2);
  border-radius: 3px;
  font-size: 13px; font-weight: 700;
  color: var(--text);
  text-decoration: none;
  transition: all 0.2s;
}
.pn-pagination .page-numbers.current,
.pn-pagination .page-numbers:hover {
  background: var(--dark); color: var(--lime); border-color: var(--dark);
}
.pn-pagination .page-numbers.dots { border: none; }

/* レスポンシブ */
@media (max-width: 900px) {
  .pn-grid { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 768px) {
  .pn-hero { padding: 120px 20px 60px; }
  .pn-filter-inner { padding: 0 16px; }
  .pn-wrap { padding: 40px 20px 60px; }
  .pn-featured { grid-template-columns: 1fr; min-height: auto; }
  .pn-featured-img { height: 220px; }
  .pn-featured-overlay { background: linear-gradient(to top, var(--dark) 30%, transparent); }
  .pn-featured-body { padding: 32px 24px; }
  .pn-grid { grid-template-columns: 1fr; }
}

/* フィーチャーカード タイトル・本文色修正 */
.pn-featured-title { color: var(--cyan); }
.pn-featured-excerpt { color: #ffffff; font-weight: 400; }

/* フィーチャーカード 背景色・文字色修正 */
.pn-featured { background: #fdf5e6; }
.pn-featured-title { color: var(--dark) !important; }
.pn-featured-excerpt { color: var(--text) !important; }
.pn-featured-cta { color: var(--dark); font-weight: 900; }
.pn-featured-noimg { background: linear-gradient(135deg, #e8ddc8, #d4c8a8); }
.pn-featured-noimg span { color: rgba(0,0,0,0.08); }
.pn-date { color: var(--text-muted) !important; }

/* フィーチャーカード 縦幅縮小 */
.pn-featured { min-height: 260px; }
.pn-featured-body { padding: 32px 36px; gap: 10px; }
.pn-featured-img { max-height: 260px; }

/* フィーチャーカード 画像を下まで表示 */
.pn-featured { align-items: stretch; }
.pn-featured-img { max-height: none; height: 100%; }
.pn-featured-img img { height: 100%; }
/* =============================================
   FOOTER 修正
============================================= */
/* マーキーテキストを白に */
.footer-marquee-text { color: white; }

/* フッターメニューリンク色を #fdf5e6 に */
.footer-links a { color: #fdf5e6; }

/* フッター ブランドブロック削除に伴うグリッド変更（3列均等） */
.footer-main { grid-template-columns: 1fr 1fr 1fr; }

/* コピーライト・ボトムリンク色を #fdf5e6 に */
.footer-copy { color: #fdf5e6; }
.footer-bottom-links a { color: #fdf5e6; }

/* ナビロゴ：株式会社ウェイビー（日本語対応） */
.nav-logo { font-size: 16px; font-weight: 700; letter-spacing: 0.05em; }

/* =============================================
   MEMBER ARCHIVE（一覧）
============================================= */
.member-hero {
  position: relative; background: var(--dark); overflow: hidden;
  padding: calc(var(--nav-h) + 80px) 40px 80px;
  text-align: center;
}
.member-hero-bg { position: absolute; inset: 0; pointer-events: none; }
.member-hero-grid {
  position: absolute; inset: 0;
  background-image: linear-gradient(rgba(184,235,32,0.04) 1px, transparent 1px),
                    linear-gradient(90deg, rgba(184,235,32,0.04) 1px, transparent 1px);
  background-size: 48px 48px;
}
.member-hero-glow {
  position: absolute; top: 30%; left: 50%; transform: translate(-50%,-50%);
  width: 600px; height: 300px;
  background: radial-gradient(ellipse, rgba(44,204,240,0.12) 0%, transparent 70%);
}
.member-hero-inner { position: relative; z-index: 1; }
.member-hero-label { font-size: 11px; font-weight: 700; letter-spacing: 0.3em; color: var(--cyan); text-transform: uppercase; margin-bottom: 16px; }
.member-hero-title { font-size: clamp(36px, 6vw, 64px); font-weight: 900; color: white; letter-spacing: -0.03em; margin-bottom: 16px; }
.member-hero-sub { font-size: 15px; color: rgba(255,255,255,0.5); font-weight: 300; }

.member-archive-wrap { background: var(--dark); padding: 80px 40px 120px; max-width: 1300px; margin: 0 auto; }

.member-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 40px;
}

.member-card {
  display: block; text-decoration: none; color: inherit;
  background: var(--dark2); border-radius: 16px; overflow: hidden;
  transition: transform 0.35s ease, box-shadow 0.35s ease;
  position: relative;
}
.member-card:hover { transform: translateY(-6px); box-shadow: 0 24px 60px rgba(0,0,0,0.5); }

.member-card-img {
  position: relative; width: 100%; aspect-ratio: 4/3; overflow: hidden; background: #1a1a1a;
}
.member-card-img img { width: 100%; height: 100%; object-fit: cover; object-position: top; transition: transform 0.5s ease; }
.member-card:hover .member-card-img img { transform: scale(1.04); }
.member-card-noimg { width: 100%; height: 100%; display: flex; align-items: center; justify-content: center; font-size: 64px; opacity: 0.2; }
.member-card-overlay { position: absolute; inset: 0; background: linear-gradient(to top, rgba(0,0,0,0.7) 0%, transparent 50%); }
.member-card-num {
  position: absolute; top: 20px; left: 20px;
  font-size: 13px; font-weight: 900; color: var(--lime); letter-spacing: 0.1em;
  background: rgba(0,0,0,0.4); padding: 4px 10px; border-radius: 4px;
  backdrop-filter: blur(8px);
}

.member-card-body { padding: 24px 28px 28px; }
.member-card-role { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; margin-bottom: 10px; }
.member-card-dept { font-size: 11px; color: var(--cyan); font-weight: 700; letter-spacing: 0.1em; }
.member-card-role-name { font-size: 11px; color: rgba(255,255,255,0.4); }
.member-card-name { font-size: 22px; font-weight: 900; color: white; letter-spacing: -0.02em; margin-bottom: 10px; }
.member-card-tagline { font-size: 13px; color: rgba(255,255,255,0.55); line-height: 1.7; margin-bottom: 20px; }
.member-card-arrow { font-size: 12px; font-weight: 700; color: var(--lime); letter-spacing: 0.05em; }

.member-pagination { display: flex; justify-content: center; gap: 8px; margin-top: 60px; }
.member-pagination .page-numbers {
  display: inline-flex; align-items: center; justify-content: center;
  width: 44px; height: 44px; border-radius: 50%;
  font-size: 13px; font-weight: 700; text-decoration: none;
  color: rgba(255,255,255,0.5); border: 1px solid rgba(255,255,255,0.1);
  transition: all 0.2s;
}
.member-pagination .page-numbers.current,
.member-pagination .page-numbers:hover { background: var(--lime); color: var(--dark); border-color: var(--lime); }

/* =============================================
   MEMBER SINGLE（詳細）
============================================= */
/* ヒーロー */
.sm-hero {
  position: relative; min-height: 92vh;
  display: flex; align-items: flex-end;
  overflow: hidden;
}
.sm-hero-img {
  position: absolute; inset: 0;
  background: var(--dark) center/cover no-repeat;
}
.sm-hero-overlay {
  position: absolute; inset: 0;
  background: linear-gradient(to right, rgba(0,0,0,0.85) 40%, rgba(0,0,0,0.2) 100%),
              linear-gradient(to top, rgba(0,0,0,0.7) 0%, transparent 50%);
}
.sm-hero-content { position: relative; z-index: 2; width: 100%; padding: calc(var(--nav-h) + 40px) 64px 80px; }
.sm-back {
  display: inline-flex; align-items: center; gap: 6px;
  font-size: 12px; color: rgba(255,255,255,0.45); text-decoration: none;
  letter-spacing: 0.05em; margin-bottom: 48px;
  transition: color 0.2s;
}
.sm-back:hover { color: white; }
.sm-hero-inner { max-width: 640px; }
.sm-role-chip {
  display: inline-block; font-size: 11px; font-weight: 700;
  color: var(--cyan); letter-spacing: 0.15em;
  border: 1px solid rgba(44,204,240,0.4); padding: 5px 14px; border-radius: 20px;
  margin-bottom: 24px;
}
.sm-tagline {
  font-size: clamp(28px, 4.5vw, 52px); font-weight: 900; color: white;
  letter-spacing: -0.03em; line-height: 1.25; margin-bottom: 24px;
}
.sm-name { font-size: 18px; color: rgba(255,255,255,0.6); font-weight: 500; letter-spacing: 0.1em; }

/* プロフィールバー */
.sm-profile-bar { background: #111; border-top: 1px solid rgba(255,255,255,0.06); }
.sm-profile-bar-inner {
  max-width: 1100px; margin: 0 auto; padding: 40px 64px;
  display: flex; gap: 48px; align-items: flex-start;
}
.sm-profile-label { font-size: 10px; font-weight: 700; letter-spacing: 0.25em; color: var(--lime); text-transform: uppercase; padding-top: 4px; white-space: nowrap; }
.sm-profile-lines { display: grid; grid-template-columns: repeat(2, 1fr); gap: 10px 48px; flex: 1; }
.sm-profile-line { font-size: 13px; color: rgba(255,255,255,0.5); line-height: 1.6; }

/* インタビューセクション共通 */
.sm-interviews { background: var(--dark); }

.sm-section { padding: 100px 64px; border-bottom: 1px solid rgba(255,255,255,0.05); }
.sm-section--text-only .sm-section-inner { max-width: 760px; margin: 0 auto; }
.sm-section--dark { background: var(--dark2); }

.sm-section--img-left,
.sm-section--img-right {
  display: grid; grid-template-columns: 1fr 1fr; gap: 80px; align-items: center;
  max-width: 1200px; margin: 0 auto; padding: 100px 64px;
}
.sm-section-img { border-radius: 12px; overflow: hidden; }
.sm-section-img img { width: 100%; height: 100%; object-fit: cover; display: block; max-height: 500px; }

.sm-q-label { font-size: 10px; font-weight: 700; letter-spacing: 0.25em; color: var(--lime); text-transform: uppercase; margin-bottom: 20px; }
.sm-q-heading {
  font-size: clamp(22px, 3vw, 36px); font-weight: 900; color: white;
  letter-spacing: -0.02em; line-height: 1.4; margin-bottom: 32px;
}
.sm-q-body { font-size: 15px; color: rgba(255,255,255,0.65); line-height: 2; font-weight: 300; }

/* フッターナビ */
.sm-nav-footer { background: var(--dark2); border-top: 1px solid rgba(255,255,255,0.06); }
.sm-nav-footer-inner {
  max-width: 1100px; margin: 0 auto; padding: 48px 64px;
  display: grid; grid-template-columns: 1fr auto 1fr; gap: 24px; align-items: center;
}
.sm-nav-btn {
  font-size: 13px; font-weight: 700; color: rgba(255,255,255,0.45);
  text-decoration: none; transition: color 0.2s; letter-spacing: 0.03em;
}
.sm-nav-btn:hover { color: white; }
.sm-nav-btn--prev { text-align: left; }
.sm-nav-btn--next { text-align: right; }
.sm-nav-btn--list {
  display: inline-block; border: 1px solid rgba(255,255,255,0.15);
  padding: 10px 28px; border-radius: 40px; font-size: 12px; color: rgba(255,255,255,0.5);
  transition: all 0.2s;
}
.sm-nav-btn--list:hover { border-color: var(--lime); color: var(--lime); }

/* =============================================
   MEMBER レスポンシブ
============================================= */
@media (max-width: 768px) {
  .member-archive-wrap { padding: 48px 20px 80px; }
  .member-grid { grid-template-columns: 1fr; gap: 24px; }
  .sm-hero { min-height: 80vh; }
  .sm-hero-content { padding: calc(var(--nav-h) + 20px) 24px 48px; }
  .sm-hero-inner { max-width: 100%; }
  .sm-profile-bar-inner { flex-direction: column; gap: 20px; padding: 32px 24px; }
  .sm-profile-lines { grid-template-columns: 1fr; }
  .sm-section { padding: 60px 24px; }
  .sm-section--img-left, .sm-section--img-right { grid-template-columns: 1fr; gap: 40px; padding: 60px 24px; }
  .sm-section--img-left .sm-section-img { order: -1; }
  .sm-nav-footer-inner { grid-template-columns: 1fr; text-align: center; gap: 16px; }
  .sm-nav-btn--prev, .sm-nav-btn--next { text-align: center; }
}


/* =============================================
   MEMBER ARCHIVE — カラーテーマ（白背景）
============================================= */
.member-hero { background: #fff; }
.member-hero-grid {
  background-image:
    linear-gradient(rgba(0,0,0,.04) 1px, transparent 1px),
    linear-gradient(90deg, rgba(0,0,0,.04) 1px, transparent 1px);
}
.member-hero-glow { background: radial-gradient(ellipse, rgba(44,204,240,.08) 0%, transparent 70%); }
.member-hero-label { color: var(--cyan); font-size: 11px; letter-spacing: 0.3em; }
.member-hero-title { color: var(--dark); }
.member-hero-sub { color: rgba(0,0,0,0.45); }
.member-archive-wrap { background: #fff; }
.member-card {
  background: white;
  border: 1px solid #e8e8e8;
  border-bottom: 3px solid #40e0d0;
  border-radius: 12px;
  overflow: hidden;
}
.member-card-name { font-size: 22px; font-weight: 900; color: var(--dark); letter-spacing: -0.02em; margin-bottom: 12px; }
.member-card-dept { font-size: 13px; color: #555; font-weight: 600; letter-spacing: 0.05em; }
.member-card-role-name { font-size: 13px; color: #555; }
.member-card-tagline { font-size: 14px; color: #444; line-height: 1.8; margin-bottom: 20px; }
.member-card-arrow { font-size: 13px; font-weight: 700; color: #0d9488; letter-spacing: 0.05em; }
.member-card-num { background: rgba(0,0,0,0.15); color: rgba(0,0,0,0.5); }

/* =============================================
   MEMBER SINGLE リデザイン（ライト＆さわやか）
============================================= */
/* ヒーロー：左テキスト・右画像の2カラム構成 */
.sm-hero {
  min-height: 100vh;
  background: #f0fffe;
  display: grid;
  grid-template-columns: 1fr 1fr;
  align-items: stretch;
}
.sm-hero-img {
  position: relative;
  background: #b2ede8 center/cover no-repeat;
}
.sm-hero-overlay {
  background: linear-gradient(to right, rgba(240,255,254,0.15) 0%, transparent 60%);
}
.sm-hero-content {
  position: relative; z-index: 2;
  display: flex; flex-direction: column; justify-content: flex-end;
  padding: calc(var(--nav-h) + 48px) 64px 64px;
  background: #f0fffe;
  order: -1;
}
.sm-back { color: #0d9488; }
.sm-back:hover { color: #0d7a73; }
.sm-role-chip {
  border-color: rgba(13,148,136,0.35);
  color: #0d9488;
}
.sm-tagline { color: #0d2d2b; }
.sm-name { color: #0d9488; font-weight: 700; }

/* プロフィールバー */
.sm-profile-bar { background: #ccf5f0; border-top: none; }
.sm-profile-label { color: #0d7a73; }
.sm-profile-line { color: #1a4a47; }

/* インタビューセクション */
.sm-interviews { background: #ffffff; }
.sm-section { border-bottom: 1px solid #e0f5f3; }
.sm-section--dark { background: #f0fffe; }
.sm-q-label { color: #0d9488; }
.sm-q-heading { color: #0d2d2b; }
.sm-q-body { color: #374151; }

/* フッターナビ */
.sm-nav-footer { background: #f0fffe; border-top: 1px solid #cceae6; }
.sm-nav-btn { color: #0d9488; }
.sm-nav-btn:hover { color: #0d2d2b; }
.sm-nav-btn--list { border-color: #0d9488; color: #0d9488; }
.sm-nav-btn--list:hover { background: #0d9488; color: white; border-color: #0d9488; }

/* レスポンシブ：スマホはシングルカラム */
@media (max-width: 768px) {
  .sm-hero { grid-template-columns: 1fr; }
  .sm-hero-img { min-height: 55vw; order: -1; }
  .sm-hero-content { order: 0; padding: 32px 24px 48px; }
}

/* プロフィールバー文字サイズ拡大 */
.sm-profile-line { font-size: 16px; }

/* インタビュー本文を黒に */
.sm-q-body { color: #0d0d0d; }

/* プロフィールバー文字サイズ再調整 */
.sm-profile-line { font-size: 22px; }

/* プロフィール：1列・19px */
.sm-profile-lines { grid-template-columns: 1fr; gap: 8px; }
.sm-profile-line { font-size: 19px; }

/* インタビュー本文：22px */
.sm-q-body { font-size: 22px; line-height: 1.9; }

/* メンバー一覧 カードエリア背景 */

/* =============================================
   SP TOPページ修正
============================================= */
/* ヒーローコンテンツをナビ高さ分下げる */
@media (max-width: 768px) {
  .hero-content { padding: calc(var(--nav-h) + 32px) 24px 32px; }
}

/* ナビ裏のYouTubeテキストを隠すオーバーレイ */
.hero-video-bg::after {
  content: '';
  position: absolute;
  top: 0; left: 0; right: 0;
  height: calc(var(--nav-h) + 20px);
  background: rgba(0,0,0,0.85);
  z-index: 2;
  pointer-events: none;
}

/* ナビ裏オーバーレイ削除 */
.hero-video-bg::after { display: none; }

/* =============================================
   ABOUT PAGE
============================================= */
/* ヒーロー（メンバーと同トンマナ） */
.about-hero {
  position: relative; background: #40e0d0; overflow: hidden;
  padding: calc(var(--nav-h) + 80px) 40px 80px;
  text-align: center;
}
.about-hero-bg { position: absolute; inset: 0; pointer-events: none; }
.about-hero-grid {
  position: absolute; inset: 0;
  background-image: linear-gradient(rgba(0,0,0,0.06) 1px, transparent 1px),
                    linear-gradient(90deg, rgba(0,0,0,0.06) 1px, transparent 1px);
  background-size: 48px 48px;
}
.about-hero-glow {
  position: absolute; top: 30%; left: 50%; transform: translate(-50%,-50%);
  width: 600px; height: 300px;
  background: radial-gradient(ellipse, rgba(255,255,255,0.25) 0%, transparent 70%);
}
.about-hero-inner { position: relative; z-index: 1; }
.about-hero-label { font-size: 11px; font-weight: 700; letter-spacing: 0.3em; color: white; text-transform: uppercase; margin-bottom: 16px; }
.about-hero-title { font-size: clamp(36px, 6vw, 64px); font-weight: 900; color: #0d2d2b; letter-spacing: -0.03em; margin-bottom: 16px; }
.about-hero-sub { font-size: 16px; color: white; font-weight: 500; }

/* ===== コンテンツエリア ===== */
.about-wrap { background: #0d2d2b; padding: 80px 40px 120px; max-width: 1100px; margin: 0 auto; }

.about-section { margin-bottom: 80px; border-top: 1px solid rgba(64,224,208,0.2); padding-top: 48px; }
.about-section:first-child { border-top: none; }

.about-section-label {
  font-size: 10px; font-weight: 700; letter-spacing: 0.3em;
  color: #40e0d0; text-transform: uppercase; margin-bottom: 32px;
}

/* 基本情報テーブル */
.about-table { width: 100%; border-collapse: collapse; }
.about-table th, .about-table td {
  padding: 20px 0; border-bottom: 1px solid rgba(255,255,255,0.06);
  vertical-align: top; text-align: left;
}
.about-table th {
  width: 200px; font-size: 13px; font-weight: 700;
  color: rgba(255,255,255,0.4); letter-spacing: 0.05em; padding-right: 32px;
}
.about-table td { font-size: 16px; color: white; line-height: 1.8; }

/* 役員リスト */
.about-officer-list { list-style: none; display: flex; flex-direction: column; gap: 12px; }
.about-officer-list li { display: flex; align-items: baseline; gap: 20px; }
.about-officer-role { font-size: 12px; color: #40e0d0; letter-spacing: 0.08em; min-width: 160px; }
.about-officer-name { font-size: 17px; font-weight: 700; color: white; }

/* 事業内容 */
.about-business-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 24px; }
.about-biz-card {
  background: rgba(255,255,255,0.04); border: 1px solid rgba(64,224,208,0.15);
  border-radius: 16px; padding: 36px;
}
.about-biz-tag {
  display: inline-block; font-size: 11px; font-weight: 700;
  color: #40e0d0; border: 1px solid rgba(64,224,208,0.4);
  padding: 5px 14px; border-radius: 20px; margin-bottom: 20px; letter-spacing: 0.05em;
}
.about-biz-lead { font-size: 15px; color: rgba(255,255,255,0.75); line-height: 1.9; margin-bottom: 24px; }
.about-biz-services-label { font-size: 13px; font-weight: 700; color: #40e0d0; margin-bottom: 12px; }
.about-biz-services ul { list-style: none; display: flex; flex-direction: column; gap: 8px; }
.about-biz-services li { font-size: 14px; color: rgba(255,255,255,0.65); padding-left: 12px; position: relative; }
.about-biz-services li::before { content: '—'; position: absolute; left: 0; color: #40e0d0; }

/* 許認可 */
.about-license-list { list-style: none; display: flex; flex-direction: column; gap: 16px; }
.about-license-list li {
  font-size: 16px; color: rgba(255,255,255,0.8); line-height: 1.7;
  padding-left: 20px; position: relative;
}
.about-license-list li::before { content: ''; position: absolute; left: 0; top: 12px; width: 6px; height: 6px; border-radius: 50%; background: #40e0d0; }

/* 出版・メディア */
.about-pub-lead { font-size: 14px; color: rgba(255,255,255,0.4); margin-bottom: 24px; }
.about-pub-scroll { overflow-x: auto; padding-bottom: 12px; }
.about-pub-img { height: 120px; width: auto; max-width: none; display: block; }

/* 代表者役職 */
.about-post-list { list-style: none; display: flex; flex-direction: column; gap: 16px; }
.about-post-list li {
  font-size: 17px; color: white; font-weight: 500;
  padding-left: 20px; position: relative;
}
.about-post-list li::before { content: ''; position: absolute; left: 0; top: 12px; width: 6px; height: 6px; border-radius: 50%; background: #40e0d0; }

/* レスポンシブ */
@media (max-width: 768px) {
  .about-wrap { padding: 48px 20px 80px; }
  .about-table th { width: 100px; font-size: 12px; }
  .about-table td { font-size: 15px; }
  .about-officer-role { min-width: 120px; }
  .about-business-grid { grid-template-columns: 1fr; }
}

/* ABOUT セクションラベル・文字サイズ修正 */
.about-section-label { font-size: 22px; letter-spacing: 0.15em; }
.about-biz-lead { color: #ffffff; font-size: 17px; }
.about-biz-tag { font-size: 15px; }
.about-biz-services-label { font-size: 16px; }
.about-biz-services li { font-size: 16px; }
.about-table th { font-size: 16px; }
.about-officer-role { font-size: 15px; }
.about-officer-name { font-size: 19px; }
.about-license-list li { font-size: 17px; }
.about-post-list li { font-size: 19px; }

/* =============================================
   CONTACT PAGE
============================================= */
.contact-hero {
  position: relative; background: #40e0d0; overflow: hidden;
  padding: calc(var(--nav-h) + 80px) 40px 80px;
  text-align: center;
}
.contact-hero-bg { position: absolute; inset: 0; pointer-events: none; }
.contact-hero-grid {
  position: absolute; inset: 0;
  background-image: linear-gradient(rgba(0,0,0,0.06) 1px, transparent 1px),
                    linear-gradient(90deg, rgba(0,0,0,0.06) 1px, transparent 1px);
  background-size: 48px 48px;
}
.contact-hero-glow {
  position: absolute; top: 30%; left: 50%; transform: translate(-50%,-50%);
  width: 600px; height: 300px;
  background: radial-gradient(ellipse, rgba(255,255,255,0.25) 0%, transparent 70%);
}
.contact-hero-inner { position: relative; z-index: 1; }
.contact-hero-label { font-size: 15px; font-weight: 700; letter-spacing: 0.3em; color: white; text-transform: uppercase; margin-bottom: 16px; }
.contact-hero-title { font-size: clamp(36px, 6vw, 64px); font-weight: 900; color: #0d2d2b; letter-spacing: -0.03em; margin-bottom: 16px; }
.contact-hero-sub { font-size: 18px; color: white; font-weight: 500; }

/* フォームエリア */
.contact-wrap { background: #fdf5e6; padding: 80px 40px 120px; }
.contact-form-box { max-width: 760px; margin: 0 auto; }

/* CF7 スタイル上書き */
.contact-form-box .wpcf7 { font-family: var(--font); }

/* フォームグループ */
.cf7-group { margin-bottom: 36px; }
.cf7-label {
  display: block; font-size: 18px; font-weight: 700;
  color: #0d2d2b; margin-bottom: 12px; letter-spacing: 0.02em;
}
.cf7-label .cf7-required {
  font-size: 12px; color: #e53e3e; margin-left: 8px;
  font-weight: 700; letter-spacing: 0.05em;
}
.cf7-note { font-size: 14px; color: #666; margin-bottom: 12px; line-height: 1.6; }

/* テキスト・テキストエリア */
.contact-form-box .wpcf7-form input[type="text"],
.contact-form-box .wpcf7-form input[type="email"],
.contact-form-box .wpcf7-form input[type="tel"],
.contact-form-box .wpcf7-form textarea {
  width: 100%;
  font-family: var(--font);
  font-size: 18px;
  padding: 16px 20px;
  border: 2px solid #d4c8a8;
  border-radius: 10px;
  background: #fff;
  color: #0d2d2b;
  transition: border-color 0.2s;
  outline: none;
  -webkit-appearance: none;
}
.contact-form-box .wpcf7-form input:focus,
.contact-form-box .wpcf7-form textarea:focus {
  border-color: #40e0d0;
}
.contact-form-box .wpcf7-form textarea { min-height: 160px; resize: vertical; }

/* ラジオボタン */
.contact-form-box .wpcf7-form .wpcf7-radio { display: flex; flex-direction: column; gap: 12px; }
.contact-form-box .wpcf7-form .wpcf7-list-item { margin: 0; }
.contact-form-box .wpcf7-form .wpcf7-list-item label {
  display: flex; align-items: center; gap: 12px;
  font-size: 18px; color: #0d2d2b; cursor: pointer;
  padding: 14px 20px;
  border: 2px solid #d4c8a8; border-radius: 10px;
  background: #fff; transition: all 0.2s;
}
.contact-form-box .wpcf7-form .wpcf7-list-item label:hover { border-color: #40e0d0; background: #f0fffe; }
.contact-form-box .wpcf7-form .wpcf7-list-item input[type="radio"] {
  width: 20px; height: 20px; accent-color: #0d9488; flex-shrink: 0;
}

/* チェックボックス */
.contact-form-box .wpcf7-form .wpcf7-checkbox .wpcf7-list-item label {
  font-size: 16px; padding: 16px 20px; align-items: flex-start;
  background: #fff8e8; border-color: #d4c8a8; border-radius: 10px; line-height: 1.7;
}
.contact-form-box .wpcf7-form .wpcf7-checkbox .wpcf7-list-item input[type="checkbox"] {
  width: 22px; height: 22px; accent-color: #0d9488; flex-shrink: 0; margin-top: 3px;
}

/* 条件付き表示（サービス選択時） */
.cf7-conditional { display: none; margin-top: 16px; padding: 24px; background: #f0fffe; border-radius: 12px; border: 1px solid #b2ede8; }
.cf7-conditional.active { display: block; }

/* 送信ボタン */
.contact-form-box .wpcf7-form .wpcf7-submit {
  display: block; width: 100%;
  background: #0d9488; color: white;
  font-family: var(--font); font-size: 19px; font-weight: 700;
  padding: 20px 40px; border: none; border-radius: 50px;
  cursor: pointer; letter-spacing: 0.05em;
  transition: background 0.25s, transform 0.2s;
  margin-top: 8px;
}
.contact-form-box .wpcf7-form .wpcf7-submit:hover { background: #0d7a73; transform: translateY(-2px); }

/* バリデーション */
.contact-form-box .wpcf7-not-valid-tip { font-size: 13px; color: #e53e3e; margin-top: 6px; display: block; }
.contact-form-box .wpcf7-response-output {
  font-size: 16px; padding: 16px 20px; border-radius: 10px; margin-top: 24px; border: none !important;
}
.contact-form-box .wpcf7-mail-sent-ok { background: #d1fae5; color: #065f46; }
.contact-form-box .wpcf7-mail-sent-ng,
.contact-form-box .wpcf7-spam-blocked { background: #fee2e2; color: #991b1b; }

/* 区切り */
.cf7-divider { border: none; border-top: 1px solid #d4c8a8; margin: 48px 0; }

/* レスポンシブ */
@media (max-width: 768px) {
  .contact-wrap { padding: 48px 20px 80px; }
  .cf7-label { font-size: 16px; }
  .contact-form-box .wpcf7-form input[type="text"],
  .contact-form-box .wpcf7-form input[type="email"],
  .contact-form-box .wpcf7-form input[type="tel"],
  .contact-form-box .wpcf7-form textarea { font-size: 16px; }
  .contact-form-box .wpcf7-form .wpcf7-list-item label { font-size: 16px; }
}

/* service-detail ビジュアル選択肢 */
.service-detail-options { display: flex; flex-direction: column; gap: 12px; }
.service-detail-item {
  display: flex; align-items: center; gap: 12px;
  font-size: 18px; color: #0d2d2b; cursor: pointer;
  padding: 14px 20px;
  border: 2px solid #d4c8a8; border-radius: 10px;
  background: #fff; transition: all 0.2s;
}
.service-detail-item:hover { border-color: #40e0d0; background: #f0fffe; }
.service-detail-item input[type="radio"] { width: 20px; height: 20px; accent-color: #0d9488; flex-shrink: 0; }



/* ===========================================
   PRIVACY POLICY
=========================================== */

.policy-hero {
  position: relative;
  background: var(--dark);
  padding: 140px 32px 80px;
  overflow: hidden;
  text-align: center;
}
.policy-hero-bg { position: absolute; inset: 0; pointer-events: none; }
.policy-hero-grid {
  position: absolute; inset: 0;
  background-image:
    linear-gradient(rgba(184,235,32,.06) 1px, transparent 1px),
    linear-gradient(90deg, rgba(184,235,32,.06) 1px, transparent 1px);
  background-size: 48px 48px;
}
.policy-hero-glow {
  position: absolute; top: -60px; left: 50%; transform: translateX(-50%);
  width: 500px; height: 300px;
  background: radial-gradient(ellipse, rgba(44,204,240,.18) 0%, transparent 70%);
}
.policy-hero-inner { position: relative; z-index: 1; }
.policy-hero-label {
  font-size: 12px; font-weight: 700; letter-spacing: .2em;
  color: var(--cyan); text-transform: uppercase; margin-bottom: 16px;
}
.policy-hero-title {
  font-size: clamp(28px, 5vw, 48px);
  font-weight: 900; color: #fff; margin: 0;
}

/* 本文ラッパー */
.policy-wrap {
  background: #fff;
  padding: 72px 24px 100px;
}
.policy-body {
  max-width: 860px;
  margin: 0 auto;
}

/* イントロ */
.policy-intro {
  font-size: 14px;
  line-height: 2;
  color: #444;
  margin: 0;
}

/* 区切り線 */
.policy-divider {
  border: none;
  border-top: 1px solid #e0e0e0;
  margin: 40px 0;
}

/* セクション */
.policy-section { margin-bottom: 0; }

/* ヘッド：グリッドで「番号バッジ左固定・タイトル残り幅で中央」 */
.policy-section-head {
  display: grid;
  grid-template-columns: 36px 1fr;
  align-items: center;
  gap: 0;
  margin-bottom: 20px;
}

/* 番号バッジ */
.policy-num {
  flex-shrink: 0;
  width: 36px; height: 36px;
  background: #1a1a1a;
  color: #fff;
  border-radius: 50%;
  font-size: 14px;
  font-weight: 800;
  display: flex;
  align-items: center;
  justify-content: center;
}

/* 見出し */
.policy-section-title {
  font-size: clamp(16px, 2.5vw, 20px);
  font-weight: 800;
  color: #1a6db5;
  margin: 0;
  line-height: 1.4;
  text-align: center;
}

/* 本文テキスト */
.policy-section p {
  font-size: 14px;
  line-height: 2;
  color: #444;
  margin: 0 0 16px;
}

/* リスト */
.policy-list {
  list-style: none;
  padding: 0;
  margin: 0 0 20px 0;
}
.policy-list li {
  font-size: 14px;
  line-height: 1.8;
  color: #444;
  padding: 6px 0 6px 24px;
  position: relative;
}
.policy-list li::before {
  content: '●';
  position: absolute;
  left: 0;
  color: #1a6db5;
  font-size: 10px;
  top: 9px;
}

/* 制定日 */
.policy-date {
  text-align: right;
  font-size: 13px;
  color: #888;
  margin: 0;
}

/* SP対応 */
@media (max-width: 600px) {
  .policy-hero { padding: 110px 20px 60px; }
  .policy-wrap { padding: 48px 20px 72px; }
  .policy-section-title { font-size: 15px; }
}

/* ===========================================
   M&A GUIDELINE PAGE
=========================================== */
.ma-section { padding: 8px 0 24px; }

.ma-section-title {
  font-size: clamp(16px, 2.5vw, 20px);
  font-weight: 800;
  color: #1a6db5;
  margin: 0 0 20px;
  line-height: 1.4;
}

/* 本文と日付を横並びに */
.ma-body-row {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  gap: 32px;
  margin-bottom: 24px;
}
.ma-body-text {
  font-size: 14px;
  line-height: 2;
  color: #444;
  margin: 0;
  flex: 1;
}
.ma-date {
  font-size: 14px;
  color: #444;
  white-space: nowrap;
  margin: 0;
  padding-top: 4px;
}

.ma-link-line {
  font-size: 14px;
  line-height: 1.9;
  color: #444;
  margin: 0 0 20px;
}
.ma-link-line a {
  color: #1a6db5;
  text-decoration: none;
  word-break: break-all;
}
.ma-link-line a:hover { text-decoration: underline; }

@media (max-width: 600px) {
  .ma-body-row { flex-direction: column; gap: 8px; }
  .ma-date { align-self: flex-end; }
}

/* ===========================================
   HERO — mp4背景動画
=========================================== */
.hero-mp4-bg {
  position: absolute;
  top: 50%; left: 50%;
  transform: translate(-50%, -50%);
  width: 177.78vh;
  height: 56.25vw;
  min-width: 100%;
  min-height: 100%;
  object-fit: cover;
  pointer-events: none;
  opacity: 0.75;
}

/* SUPPORTERS — mp4背景動画 */
.sup-mp4-bg {
  position: absolute;
  top: 50%; left: 50%;
  transform: translate(-50%, -50%);
  width: 177.78vh;
  height: 56.25vw;
  min-width: 100%;
  min-height: 100%;
  object-fit: cover;
  pointer-events: none;
  opacity: 0.6;
}

/* ===========================================
   ABOUT — 拠点（住所・地図）
=========================================== */
.about-offices {
  display: flex;
  flex-direction: column;
  gap: 40px;
}
.about-office-label {
  display: inline-block;
  font-size: 12px;
  font-weight: 700;
  color: #40e0d0;
  border: 1px solid rgba(64,224,208,0.4);
  padding: 3px 12px;
  border-radius: 20px;
  letter-spacing: 0.08em;
  margin-bottom: 10px;
}
.about-office-addr {
  font-size: 16px;
  color: white;
  line-height: 1.8;
  margin-bottom: 16px;
}
.about-office-map iframe {
  width: 100%;
  height: 240px;
  border-radius: 10px;
  display: block;
  filter: grayscale(20%) brightness(0.9);
}
@media (max-width: 768px) {
  .about-office-map iframe { height: 200px; }
}

/* サービスカード — キャッチコピー追記 */
.service-catch {
  font-size: 13px;
  color: rgba(255,255,255,0.65);
  line-height: 1.7;
  margin: 10px 0 16px;
  padding: 10px 14px;
  border-left: 2px solid var(--lime);
  background: rgba(184,235,32,0.05);
}
.service-catch-link {
  color: var(--lime);
  text-decoration: underline;
  font-weight: 700;
}
.service-catch-link:hover {
  color: #fff;
}

/* =============================================
   single.php — お知らせ個別ページ
   ============================================= */

/* --- HERO --- */
.snews-hero {
  background: #0d0d0d;
  padding: 120px 40px 80px;
  border-bottom: 1px solid rgba(255,255,255,0.08);
}
.snews-hero__inner {
  max-width: 860px;
  margin: 0 auto;
}
.snews-hero__meta {
  display: flex;
  align-items: center;
  gap: 16px;
  margin-bottom: 24px;
}
.snews-hero__date {
  font-size: 22px;
  color: rgba(255,255,255,0.5);
  letter-spacing: 0.05em;
}
.snews-hero__cat {
  font-size: 22px;
  color: var(--cyan);
  background: rgba(44,204,240,0.12);
  border: 1px solid rgba(44,204,240,0.3);
  padding: 4px 14px;
  border-radius: 4px;
  letter-spacing: 0.05em;
}
.snews-hero__title {
  font-size: clamp(26px, 3.5vw, 42px);
  font-weight: 700;
  color: #fff;
  line-height: 1.5;
  letter-spacing: 0.03em;
  margin: 0;
}

/* --- BODY --- */
.snews-body {
  background: #f8f8f8;
  padding: 80px 40px 120px;
}
.snews-body__inner {
  max-width: 860px;
  margin: 0 auto;
}

/* アイキャッチ */
.snews-body__thumb {
  margin-bottom: 56px;
  border-radius: 8px;
  overflow: hidden;
}
.snews-body__thumb img {
  width: 100%;
  height: auto;
  display: block;
}

/* 本文 */
.snews-body__content {
  font-size: 22px;
  line-height: 2;
  color: #222;
  letter-spacing: 0.03em;
}
.snews-body__content p {
  margin-bottom: 1.8em;
}
.snews-body__content h2 {
  font-size: 28px;
  font-weight: 700;
  color: #111;
  border-left: 4px solid var(--lime);
  padding-left: 16px;
  margin: 2.5em 0 1em;
  line-height: 1.5;
}
.snews-body__content h3 {
  font-size: 24px;
  font-weight: 700;
  color: #111;
  margin: 2em 0 0.8em;
  line-height: 1.5;
}
.snews-body__content img {
  max-width: 100%;
  height: auto;
  border-radius: 6px;
  margin: 1.5em 0;
}
.snews-body__content a {
  color: #0d7a8a;
  text-decoration: underline;
  text-underline-offset: 3px;
}
.snews-body__content a:hover {
  color: var(--cyan);
}
.snews-body__content ul,
.snews-body__content ol {
  padding-left: 1.6em;
  margin-bottom: 1.8em;
}
.snews-body__content li {
  margin-bottom: 0.6em;
}
.snews-body__content blockquote {
  border-left: 4px solid #ddd;
  padding: 12px 24px;
  color: #555;
  margin: 1.8em 0;
  background: #fff;
  border-radius: 0 6px 6px 0;
}

/* 戻るボタン */
.snews-body__back {
  margin-top: 72px;
  text-align: center;
}
.snews-back-btn {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  font-size: 22px;
  font-weight: 600;
  color: #111;
  border: 2px solid #222;
  padding: 14px 40px;
  border-radius: 40px;
  text-decoration: none;
  letter-spacing: 0.05em;
  transition: background 0.25s, color 0.25s;
}
.snews-back-btn:hover {
  background: #111;
  color: var(--lime);
}
.snews-back-btn__arrow {
  font-size: 20px;
  transition: transform 0.25s;
}
.snews-back-btn:hover .snews-back-btn__arrow {
  transform: translateX(-4px);
}

/* --- RESPONSIVE --- */
@media (max-width: 768px) {
  .snews-hero {
    padding: 100px 24px 60px;
  }
  .snews-hero__title {
    font-size: 26px;
  }
  .snews-hero__date,
  .snews-hero__cat {
    font-size: 22px;
  }
  .snews-body {
    padding: 56px 24px 80px;
  }
  .snews-body__content {
    font-size: 22px;
  }
  .snews-body__content h2 {
    font-size: 24px;
  }
  .snews-body__content h3 {
    font-size: 22px;
  }
}