.color-hero-section {
  --duration: 1.6s;
  --blur-amount: 35px;
  --scale-amount: 1.15;

  position: relative;
  width: 100%;
  min-height: 100vh;
  display: flex;
  flex-direction: column;
  justify-content: center;
  overflow: hidden;
  font-family: 'Noto Sans JP', 'Inter', sans-serif;
  transition: background-color 2.4s cubic-bezier(0.25, 1, 0.5, 1);
  /* 1.4sから2.4sにのばして色変化をふわっと */
  z-index: 1;
}

/* 文字の可読性を高めるための暗めフェードオーバーレイ */
.color-hero-section::before {
  content: '';
  position: absolute;
  inset: 0;
  background: linear-gradient(to bottom, rgba(15, 23, 42, 0.15) 0%, rgba(15, 23, 42, 0.35) 100%);
  z-index: 2;
  /* 動画(0)とグラデーション(1)の上、グリッド(2)と同じ階層、テキスト(10)の下 */
  opacity: 0;
  transition: opacity 2.4s cubic-bezier(0.25, 1, 0.5, 1);
  pointer-events: none;
}

.color-hero-section.theme-reversed::before {
  opacity: 1;
  /* 反転完了時にフェードイン */
}

/* 初期状態は無垢な白背景ベース */
.color-hero-section.theme-init {
  background-color: #f8fafc;
}

.color-hero-section .vibrant-bg {
  position: absolute;
  inset: 0;
  background: linear-gradient(-45deg, #0f172a, #090d16, #020617, #1e1b4b);
  /* 漆黒・ダークトーンのグラデーション */
  background-size: 400% 400%;
  opacity: 0;
  z-index: 1;
  /* 動画の上に重ねてブレンドする */
  transition: opacity 2.4s cubic-bezier(0.25, 1, 0.5, 1);
  /* 1.4sから2.4sにのばしてふわっと出現 */
  animation: gradientFlow 15s ease infinite;
}

/* 背景が反転した状態 */
.color-hero-section.theme-reversed .vibrant-bg {
  /* レインボーの透過 */
  opacity: 0.5;
  /* 0.7から0.5にさらに薄くする */
  mix-blend-mode: overlay;
}

/* 背景動画ラッパー */
.color-hero-section .bg-video-wrapper {
  position: absolute;
  inset: 0;
  z-index: 0;
  /* グラデーションの背面へ */
  overflow: hidden;
  opacity: 0;
  /* 初期（白背景）：動画は非表示にし、テキストが浮かび上がる演出に集中させる */
  transition: opacity 2.4s cubic-bezier(0.25, 1, 0.5, 1);
  /* 反転時にふわっとフェードイン */
  pointer-events: none;
}

.color-hero-section .bg-video-wrapper video {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

/* 反転時（theme-reversed）：動画を透過なしで100%表示 */
.color-hero-section.theme-reversed .bg-video-wrapper {
  opacity: 1.0;
  mix-blend-mode: normal;
}

@keyframes gradientFlow {
  0% {
    background-position: 0% 50%;
  }

  50% {
    background-position: 100% 50%;
  }

  100% {
    background-position: 0% 50%;
  }
}

/* グリッドオーバーレイ */
.color-hero-section .grid-overlay {
  position: absolute;
  inset: 0;
  background-size: 60px 60px;
  background-image:
    linear-gradient(to right, rgba(15, 23, 42, 0.02) 1px, transparent 1px),
    linear-gradient(to bottom, rgba(15, 23, 42, 0.02) 1px, transparent 1px);
  transition: background-image 1.4s;
  opacity: 0.5;
  pointer-events: none;
  z-index: 0;
}

.color-hero-section.theme-reversed .grid-overlay {
  background-image:
    linear-gradient(to right, rgba(255, 255, 255, 0.04) 1px, transparent 1px),
    linear-gradient(to bottom, rgba(255, 255, 255, 0.04) 1px, transparent 1px);
}

/* マウス追従型 インタラクティブ・スポットライト */
.color-hero-section .mouse-glow {
  position: absolute;
  width: 600px;
  height: 600px;
  background: radial-gradient(circle, rgba(15, 23, 42, 0.04) 0%, rgba(15, 23, 42, 0) 70%);
  border-radius: 50%;
  pointer-events: none;
  transform: translate(-50%, -50%);
  will-change: transform;
  transition: transform 0.1s cubic-bezier(0.25, 1, 0.5, 1), opacity 1.4s;
  z-index: 1;
}

.color-hero-section.theme-reversed .mouse-glow {
  background: radial-gradient(circle, rgba(255, 255, 255, 0.15) 0%, rgba(255, 255, 255, 0) 70%);
}

/* デジタルパルススキャン */
.color-hero-section .pulse-line {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 2px;
  background: linear-gradient(90deg, transparent, rgba(15, 23, 42, 0.05), rgba(15, 23, 42, 0.1), rgba(15, 23, 42, 0.05), transparent);
  animation: scanline 8s linear infinite;
  pointer-events: none;
  z-index: 1;
}

.color-hero-section.theme-reversed .pulse-line {
  background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.08), rgba(255, 255, 255, 0.2), rgba(255, 255, 255, 0.08), transparent);
}

@keyframes scanline {
  0% {
    transform: translateY(-10vh);
    opacity: 0;
  }

  10% {
    opacity: 0.8;
  }

  90% {
    opacity: 0.8;
  }

  100% {
    transform: translateY(110vh);
    opacity: 0;
  }
}

/* 微粒子エフェクト */
.color-hero-section .dust-particle {
  position: absolute;
  background: radial-gradient(circle, rgba(15, 23, 42, 0.15) 0%, rgba(15, 23, 42, 0) 70%);
  border-radius: 50%;
  pointer-events: none;
  animation: driftUp 14s linear infinite;
  transition: background 1.4s;
}

.color-hero-section.theme-reversed .dust-particle {
  background: radial-gradient(circle, rgba(255, 255, 255, 0.25) 0%, rgba(255, 255, 255, 0) 70%);
}

@keyframes driftUp {
  0% {
    transform: translateY(0) rotate(0deg);
    opacity: 0;
  }

  20% {
    opacity: 0.2;
  }

  80% {
    opacity: 0.2;
  }

  100% {
    transform: translateY(-120px) rotate(360deg);
    opacity: 0;
  }
}

/* 動的な色変化クラス */
.color-hero-section .text-vibrant-transition {
  color: #0f172a;
  transition: color 2.4s cubic-bezier(0.25, 1, 0.5, 1);
  /* 背景と同調させて2.4sでふわっと色変化 */
}

.color-hero-section.theme-reversed .text-vibrant-transition {
  color: #ffffff;
}

/* FOUC（スタイル適用前のちらつき）防止のための初期非表示 */
.js-active .color-hero-section .char {
  opacity: 0;
}

.js-active .color-hero-section .line-fade-reveal {
  opacity: 0;
}

.js-active .color-hero-section .strong-change-word {
  opacity: 0;
}

.js-active .color-hero-section .reveal-item {
  opacity: 0;
}

/* 分割前テキストの初期ちらつき防止 */
.js-active .color-hero-section .hero-title-line {
  opacity: 0;
}

.js-enabled .color-hero-section .hero-title-line {
  opacity: 1;
}

/* アニメーション動作時のクラス定義（JSロード後に付与される） */
.js-enabled .color-hero-section .char {
  display: inline-block;
  opacity: 0;
  filter: blur(var(--blur-amount));
  transform: scale(var(--scale-amount));
  animation: charReveal var(--duration) cubic-bezier(0.25, 1, 0.5, 1) forwards;
}

.js-enabled .color-hero-section .line-fade-reveal {
  opacity: 0;
  filter: blur(var(--blur-amount));
  transform: scale(var(--scale-amount));
  animation: lineReveal var(--duration) cubic-bezier(0.25, 1, 0.5, 1) forwards;
}

.color-hero-section .strong-change-word {
  display: inline-block;
  font-weight: 900;
  color: #0f172a;
  transform: rotate(-5deg);
  /* 傾きを-5度に強めてより特徴的に */
  transform-origin: center;
  transition: color 2.4s cubic-bezier(0.25, 1, 0.5, 1), transform 1.2s cubic-bezier(0.25, 1, 0.5, 1), filter 2.4s;
}

.color-hero-section .strong-change-word ruby {
  ruby-position: over;
}

.color-hero-section .strong-change-word rt {
  font-size: 0.23em;
  /* 0.18em から 0.23em に拡大 */
  /* 親文字のサイズに比例して適度に小さくする */
  font-weight: 700;
  letter-spacing: 0.05em;
  padding-bottom: 0.25em;
  /* 文字との隙間を確保 */
  transition: color 2.4s cubic-bezier(0.25, 1, 0.5, 1);
}

@media (max-width: 767px) {
  .color-hero-section .strong-change-word rt {
    font-size: 0.32em;
    /* SPで「アプデ」の文字サイズをより大きく */
  }
}

.js-enabled .color-hero-section .strong-change-word {
  /* 表示時間を2.2秒に延ばし、より滑らかなイージングを適用してフワッと感を強調 */
  animation: changeWordReveal 2.2s cubic-bezier(0.22, 1, 0.36, 1) forwards;
}

.color-hero-section.theme-reversed .strong-change-word {
  color: #ffffff;
  transform: rotate(-5deg) !important;
  /* スケールアップ(scale)を削除してサイズ変化を無くす */
  filter: drop-shadow(0 15px 35px rgba(255, 255, 255, 0.25));
}

/* 「更新（アプデ）」部分のみに適用するグリッチターゲット */
.color-hero-section .glitch-target {
  display: inline-block;
  transform: translate(0, 0);
  transition: transform 1.2s;
}

.js-enabled .color-hero-section .glitch-target {
  /* 登場アニメーション完了後の2.8秒後から、定期グリッチを無限ループで開始 */
  animation: glitchNoise 6s infinite ease-in-out 2.8s;
}

.color-hero-section.theme-reversed .glitch-target {
  /* 反転時は!importantで反転用グリッチアニメーションに切り替え */
  animation: glitchNoiseReversed 6s infinite ease-in-out !important;
}

@keyframes charReveal {
  0% {
    opacity: 0;
    filter: blur(var(--blur-amount));
    transform: scale(var(--scale-amount));
  }

  100% {
    opacity: 1;
    filter: blur(0px);
    transform: scale(1);
  }
}

@keyframes lineReveal {
  0% {
    opacity: 0;
    filter: blur(var(--blur-amount));
    transform: scale(var(--scale-amount));
  }

  100% {
    opacity: 1;
    filter: blur(0px);
    transform: scale(1);
  }
}

@keyframes changeWordReveal {
  0% {
    opacity: 0;
    filter: blur(var(--blur-amount));
    transform: scale(var(--scale-amount)) rotate(-5deg);
  }

  100% {
    opacity: 1;
    filter: blur(0px);
    transform: scale(1) rotate(-5deg);
  }
}

/* 通常時（白背景）の定期的なグリッチ（ノイズ）アニメーション */
@keyframes glitchNoise {

  0%,
  75%,
  80.5%,
  82.5%,
  87.5%,
  100% {
    text-shadow: none;
    transform: translate(0, 0);
  }

  76% {
    text-shadow: -2px 0 #ef4444, 2px 0 #3b82f6;
    /* 赤と青のノイズ影 */
    transform: translate(-2px, 1px);
  }

  78% {
    text-shadow: 2px 0 #ef4444, -2px 0 #3b82f6;
    transform: translate(2px, -1px);
  }

  80% {
    text-shadow: -1px 0 #ef4444, 1px 0 #3b82f6;
    transform: translate(-1px, 0);
  }

  83% {
    text-shadow: -3px 0 #ef4444, 3px 0 #0ea5e9;
    /* シアンと赤の激しい影 */
    transform: translate(-3px, -1px);
  }

  85% {
    text-shadow: 3px 0 #ef4444, -3px 0 #0ea5e9;
    transform: translate(3px, 2px);
  }

  87% {
    text-shadow: -1px 0 #ef4444, 1px 0 #0ea5e9;
    transform: translate(0, 0);
  }
}

/* 反転時（グラデーション背景）の定期的なグリッチ（ノイズ）アニメーション */
@keyframes glitchNoiseReversed {

  0%,
  75%,
  80.5%,
  82.5%,
  87.5%,
  100% {
    text-shadow: none;
    transform: translate(0, 0) !important;
  }

  76% {
    text-shadow: -3px 0 #f43f5e, 3px 0 #06b6d4;
    /* 鮮やかなピンクとシアン */
    transform: translate(-2px, 1px) !important;
  }

  78% {
    text-shadow: 3px 0 #f43f5e, -3px 0 #06b6d4;
    transform: translate(2px, -1px) !important;
  }

  80% {
    text-shadow: -1px 0 #f43f5e, 1px 0 #06b6d4;
    transform: translate(-1px, 0) !important;
  }

  83% {
    text-shadow: -4px 0 #f43f5e, 4px 0 #22c55e;
    /* 緑とマゼンタの激しい影 */
    transform: translate(-3px, -2px) !important;
  }

  85% {
    text-shadow: 4px 0 #f43f5e, -4px 0 #22c55e;
    transform: rotate(-5deg) translate(3px, 1px) !important;
  }

  87% {
    text-shadow: -1px 0 #f43f5e, 1px 0 #22c55e;
    transform: rotate(-5deg) translate(0, 0) !important;
  }
}

.js-enabled .color-hero-section .reveal-item {
  animation: itemReveal 1.6s cubic-bezier(0.25, 1, 0.5, 1) forwards;
}

@keyframes itemReveal {
  0% {
    opacity: 0;
    filter: blur(15px);
    transform: translateY(25px);
  }

  100% {
    opacity: 1;
    filter: blur(0px);
    transform: translateY(0);
  }
}

/* レイアウト・マージン・パディング */
.color-hero-section .hero-container {
  position: relative;
  width: 100%;
  min-height: 100vh;
  display: flex;
  flex-direction: column;
  justify-content: center;
  overflow: hidden;
  padding: 4rem 1.5rem;
  /* 上下6remから4remに削減して全体を圧縮 */
  max-width: 80rem;
  margin-left: auto;
  margin-right: auto;
  z-index: 10;
}

@media (min-width: 640px) {
  .color-hero-section .hero-container {
    padding-left: 3rem;
    padding-right: 3rem;
  }
}

@media (min-width: 768px) {
  .color-hero-section .hero-container {
    padding-left: 5rem;
    padding-right: 5rem;
  }
}

.color-hero-section .hero-content-wrapper {
  width: 100%;
  max-width: 72rem;
  text-align: left;
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  margin-top: 1rem;
}

@media (min-width: 768px) {
  .color-hero-section .hero-content-wrapper {
    margin-top: 1.5rem;
  }
}

.color-hero-section .hero-main-title {
  width: 100%;
  display: flex;
  flex-direction: column;
  user-select: none;
  margin-bottom: 2rem;
  /* 3remから2remに削減 */
  text-align: left;
}

@media (min-width: 768px) {
  .color-hero-section .hero-main-title {
    flex-direction: row;
    align-items: flex-end;
    /* 左側の「技術で」「現場を」と右側の「良くする。」の下側のラインを揃える */
    justify-content: space-between;
    gap: 2rem;
  }
}

@media (max-width: 767px) {
  .color-hero-section .hero-main-title {
    gap: 1rem;
  }
}

.color-hero-section .hero-title-line {
  font-size: 2rem;
  font-weight: 800;
  letter-spacing: 0.025em;
  line-height: 1;
  white-space: nowrap;
}

@media (min-width: 480px) {
  .color-hero-section .hero-title-line {
    font-size: 2.5rem;
  }
}

@media (min-width: 640px) {
  .color-hero-section .hero-title-line {
    font-size: 3rem;
  }
}

@media (min-width: 768px) {
  .color-hero-section .hero-title-line {
    font-size: 3.25rem;
  }
}

@media (min-width: 1024px) {
  .color-hero-section .hero-title-line {
    font-size: 4.25rem;
  }
}

@media (min-width: 1200px) {
  .color-hero-section .hero-title-line {
    font-size: 5rem;
  }
}

@media (min-width: 1400px) {
  .color-hero-section .hero-title-line {
    font-size: 6.5rem;
  }
}

.color-hero-section .hero-line-2 {
  margin-top: 0;
}

@media (min-width: 768px) {
  .color-hero-section .hero-line-2 {
    margin-top: 1rem;
  }
}

.color-hero-section .strong-change-word {
  font-size: 3.25rem;
  font-weight: 900;
  line-height: 1;
  letter-spacing: -0.025em;
  white-space: nowrap;
}

@media (min-width: 480px) {
  .color-hero-section .strong-change-word {
    font-size: 4.5rem;
  }
}

@media (min-width: 640px) {
  .color-hero-section .strong-change-word {
    font-size: 6rem;
  }
}

@media (min-width: 768px) {
  .color-hero-section .strong-change-word {
    font-size: 6.5rem;
  }
}

@media (min-width: 1024px) {
  .color-hero-section .strong-change-word {
    font-size: 8.5rem;
  }
}

@media (min-width: 1200px) {
  .color-hero-section .strong-change-word {
    font-size: 10rem;
  }
}

@media (min-width: 1400px) {
  .color-hero-section .strong-change-word {
    font-size: 11.5rem;
  }
}

/* 装飾用シネマティックライン */
.color-hero-section .decorator-line {
  position: relative;
  /* 擬似要素の位置基準 */
  overflow: hidden;
  /* 流れる光のはみ出しを防ぐ */
  height: 1px;
  width: 100%;
  background: rgba(15, 23, 42, 0.15);
  /* ベースの静かなライン */
  margin-bottom: 2.5rem;
  transition: all 1s ease-in-out;
}

@media (min-width: 768px) {
  .color-hero-section .decorator-line {
    width: 20rem;
  }
}

.color-hero-section.theme-reversed .decorator-line {
  background: rgba(255, 255, 255, 0.2);
  /* 反転時のベースライン */
}

/* ライン上を流れる光の演出 */
.color-hero-section .decorator-line::after {
  content: '';
  position: absolute;
  top: 0;
  height: 100%;
  width: 50%;
  background: linear-gradient(90deg, transparent, rgba(15, 23, 42, 0.5), transparent);
  animation: lineFlow 4s infinite ease-in-out;
}

.color-hero-section.theme-reversed .decorator-line::after {
  background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.7), transparent);
}

@keyframes lineFlow {
  0% {
    left: -50%;
  }

  30% {
    left: 100%;
  }

  100% {
    left: 100%;
  }
}

.color-hero-section .sub-copy-area {
  margin-top: 0;
  /* タイトルとの間隔を十分に設ける */
  margin-bottom: 1rem;
  /* テクノロジータグとの距離を近づける */
  text-align: left;
  transition: color 1s;
}

@media (min-width: 768px) {
  .color-hero-section .sub-copy-area {
    margin-top: 2rem;
  }
}

.color-hero-section .sub-copy-text {
  font-size: 1rem;
  font-weight: 500;
  letter-spacing: 0.025em;
  line-height: 1.625;
  color: #1e293b;
  transition: color 1s;
}

@media (min-width: 640px) {
  .color-hero-section .sub-copy-text {
    font-size: 1.125rem;
  }
}

@media (min-width: 768px) {
  .color-hero-section .sub-copy-text {
    font-size: 1.25rem;
  }
}

.color-hero-section.theme-reversed .sub-copy-text {
  color: #ffffff;
}

/* ボタンの上のテクノロジータグ（PCのみ、横並びで整列） */
.color-hero-section .hero-tech-tags {
  display: flex;
  flex-wrap: wrap;
  gap: 0.75rem;
  margin-bottom: 2.5rem;
  z-index: 10;
  transition: all 1s;
}

.color-hero-section .tech-tag-item {
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
  padding: 0.55rem 1.1rem;
  border-radius: 0.625rem;
  font-size: 0.8rem;
  font-weight: 600;
  letter-spacing: 0.05em;
  background-color: rgba(255, 255, 255, 0.45);
  color: #334155;
  border: 1px solid rgba(15, 23, 42, 0.06);
  backdrop-filter: blur(8px);
  box-shadow: 0 4px 15px -3px rgba(15, 23, 42, 0.04);
  transition: all 1.2s cubic-bezier(0.25, 1, 0.5, 1);
}

.color-hero-section .tech-tag-item:hover {
  transform: translateY(-2px);
  background-color: rgba(255, 255, 255, 0.75);
  box-shadow: 0 6px 20px -3px rgba(15, 23, 42, 0.08);
}

/* 反転時（ theme-reversed ）は美しく光るガラスモーフィズム */
.color-hero-section.theme-reversed .tech-tag-item {
  background-color: rgba(255, 255, 255, 0.08);
  color: rgba(255, 255, 255, 0.85);
  border: 1px solid rgba(255, 255, 255, 0.12);
  box-shadow: 0 10px 30px -5px rgba(0, 0, 0, 0.15);
}

.color-hero-section.theme-reversed .tech-tag-item:hover {
  background-color: rgba(255, 255, 255, 0.15);
  color: #ffffff;
  border: 1px solid rgba(255, 255, 255, 0.2);
}

.color-hero-section .tech-tag-item .tag-dot {
  width: 0.375rem;
  height: 0.375rem;
  border-radius: 50%;
  opacity: 0.7;
  transition: opacity 1.2s;
}

@media (max-width: 767px) {
  /* スマホ時は折り返さずに横スクロール可能かつ1列に */
  .color-hero-section .hero-tech-tags {
    flex-wrap: nowrap;
    gap: 0.35rem;
    margin-bottom: 1.5rem;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    width: 100%;
    scrollbar-width: none; /* Firefox */
  }
  .color-hero-section .hero-tech-tags::-webkit-scrollbar {
    display: none; /* Safari, Chrome */
  }

  /* タグ本体の極小化 */
  .color-hero-section .tech-tag-item {
    padding: 0.25rem 0.5rem;
    font-size: 0.65rem;
    border-radius: 0.35rem;
    gap: 0.25rem;
    white-space: nowrap;
  }

  /* タグドットの縮小 */
  .color-hero-section .tech-tag-item .tag-dot {
    width: 0.25rem;
    height: 0.25rem;
  }
}

.color-hero-section.theme-reversed .tech-tag-item .tag-dot {
  opacity: 1;
}

.color-hero-section .tech-tag-item .tag-dot.bg-indigo {
  background-color: #6366f1;
}

.color-hero-section .tech-tag-item .tag-dot.bg-sky {
  background-color: #0ea5e9;
}

.color-hero-section .tech-tag-item .tag-dot.bg-teal {
  background-color: #14b8a6;
}

.color-hero-section .tech-tag-item .tag-dot.bg-pink {
  background-color: #ec4899;
}

/* CTAボタン */
.color-hero-section .cta-container {
  display: flex;
  flex-direction: column;
  gap: 1rem;
  width: 100%;
}

@media (min-width: 640px) {
  .color-hero-section .cta-container {
    flex-direction: row;
    align-items: center;
    width: auto;
  }
}

.glass-btn {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 100%;
  padding: 1.125rem 2.5rem;
  font-weight: 700;
  border-radius: 0.75rem;
  font-size: 0.875rem;
  letter-spacing: 0.1em;
  text-decoration: none;
  box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1);
  transition: all 0.4s cubic-bezier(0.25, 1, 0.5, 1);
}

@media (min-width: 640px) {
  .glass-btn {
    width: auto;
  }
}

.glass-btn:hover {
  transform: translateY(-2px);
}

.btn-primary-cta {
  background-color: #0f172a;
  color: #ffffff;
  border: 1px solid #0f172a;
}

.btn-primary-cta:hover {
  background-color: #1e293b;
}

.btn-primary-cta .cta-icon {
  color: #38bdf8;
  width: 1rem;
  height: 1rem;
  margin-left: 0.625rem;
}

.btn-secondary-cta {
  background-color: rgba(226, 232, 240, 0.5);
  color: #1e293b;
  border: 1px solid rgba(203, 213, 225, 0.4);
}

.btn-secondary-cta:hover {
  background-color: rgba(226, 232, 240, 0.8);
}

.btn-secondary-cta .cta-icon {
  color: #1e293b;
  width: 1rem;
  height: 1rem;
  margin-left: 0.5rem;
}

/* ダーク背景用（テーマ反転時、または背景動画付きセクション内） */
.theme-reversed .btn-primary-cta {
  background-color: #ffffff !important;
  color: #0f172a !important;
  border: none !important;
  box-shadow: 0 10px 15px -3px rgba(255, 255, 255, 0.1) !important;
}

.theme-reversed .btn-primary-cta:hover {
  background-color: #f1f5f9 !important;
}

.theme-reversed .btn-primary-cta .cta-icon {
  color: #0f172a !important;
}

.theme-reversed .btn-secondary-cta,
.video-bg-section .btn-secondary-cta {
  background-color: rgba(255, 255, 255, 0.1) !important;
  color: #ffffff !important;
  border: 1px solid rgba(255, 255, 255, 0.25) !important;
  backdrop-filter: blur(4px);
}

.theme-reversed .btn-secondary-cta:hover,
.video-bg-section .btn-secondary-cta:hover {
  background-color: rgba(255, 255, 255, 0.2) !important;
}

.theme-reversed .btn-secondary-cta .cta-icon,
.video-bg-section .btn-secondary-cta .cta-icon {
  color: #ffffff !important;
}



/* 視覚効果の低減対応 */
@media (prefers-reduced-motion: reduce) {

  .js-enabled .color-hero-section .char,
  .js-enabled .color-hero-section .line-fade-reveal,
  .js-enabled .color-hero-section .reveal-item,
  .color-hero-section .strong-change-word,
  .color-hero-section .pulse-line {
    animation: none !important;
    opacity: 1 !important;
    filter: none !important;
    transform: none !important;
  }

  .color-hero-section .vibrant-bg {
    animation: none !important;
  }

  .color-hero-section .mouse-glow,
  .color-hero-section .dust-particle {
    display: none !important;
  }
}

/* セクション背景動画のスタイル */
.video-bg-section {
  position: relative;
  overflow: hidden;
}

.section-bg-video-wrapper {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  overflow: hidden;
  z-index: 0;
  pointer-events: none;
}

/* 軽く黒い透かし（オーバーレイ）を重ねる */
.section-bg-video-wrapper::after {
  content: '';
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background: rgba(0, 0, 0, 0.25); /* 25%の薄い黒 */
  z-index: 1; /* 動画の上に重ねる */
}

.section-bg-video {
  position: absolute;
  top: 50%;
  left: 50%;
  width: 100%;
  height: 100%;
  object-fit: cover;
  transform: translate(-50%, -50%);
  opacity: 0;
  transition: opacity 1.5s ease; /* フェードイン時間を1.5sにしてより滑らかに */
  z-index: 0; /* 透かしの下に配置 */
}

.section-bg-video.video-loaded {
  opacity: 1;
}

/* 動画の上に重ねるコンテンツの z-index 調整 */
.video-bg-section > *:not(.section-bg-video-wrapper) {
  position: relative;
  z-index: 1;
}