/*
 * DAISEN ビジョンページ スタイルシート
 * daisen-vision/daisen-vision.css
 *
 * デザイン方針:
 *   - トップページ（daisen-top）のダーク宇宙的世界観を継承・深化
 *   - Montserrat × Noto Sans JP × Cormorant Garamond × Cinzel のタイポ体系
 *   - カラー: こげ茶 #2C1810 / 深緑 #1A3025 / ネイビー #0D1B2A / ゴールド #C9A84C
 *   - セクションごとに背景画像（カスタムフィールド）を受けるBG層設計
 *   - DAISENブランドカラー変数を style.css から継承
 */

/* ── リセット ── */
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
html { scroll-behavior: smooth; }
img { max-width: 100%; height: auto; display: block; }
a { text-decoration: none; color: inherit; }
button { cursor: pointer; border: none; background: none; font-family: inherit; }

/* ── ローカル変数 ── */
:root {
  --dv-black:       #070810;
  --dv-kogecha:     #2C1810;
  --dv-kogecha-mid: #3D2314;
  --dv-forest:      #1A3025;
  --dv-navy:        #0D1B2A;
  --dv-navy-acc:    #3D6B9E;
  --dv-gold:        #C9A84C;
  --dv-gold-l:      #E8C97A;
  --dv-cream:       #F0E8D5;
  --dv-cream-dim:   #C4B49A;
  --dv-muted:       #8A7A65;
  --dv-rule:        rgba(201,168,76,.18);
  --dv-rule-s:      rgba(201,168,76,.07);
  --font-display:   'Montserrat', 'Noto Sans JP', sans-serif;
  --font-serif:     'Cormorant Garamond', 'Noto Serif JP', serif;
  --font-cinzel:    'Cinzel', serif;
  --font-body:      'Noto Sans JP', sans-serif;
  --ease-out:       cubic-bezier(0.16, 1, 0.3, 1);
}

/* ── ベース ── */
body.daisen-vision-page {
  font-family: var(--font-body);
  background: var(--dv-black);
  color: var(--dv-cream);
  font-size: 16px;
  line-height: 1.9;
  -webkit-font-smoothing: antialiased;
  overflow-x: hidden;
}

/* ── グレインオーバーレイ ── */
body.daisen-vision-page::after {
  content: '';
  position: fixed;
  inset: 0;
  pointer-events: none;
  z-index: 9900;
  opacity: .35;
  background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.82' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.04'/%3E%3C/svg%3E");
}

/* ============================================================
   HEADER
   ============================================================ */
.dv-header {
  position: fixed;
  top: 0; left: 0; right: 0;
  z-index: 9990;
  height: 64px;
  background: rgba(7, 7, 16, .90);
  backdrop-filter: blur(16px);
  -webkit-backdrop-filter: blur(16px);
  border-bottom: 1px solid rgba(255,255,255,.06);
  transition: background .4s, box-shadow .4s;
}
.dv-header.scrolled {
  background: rgba(7, 7, 16, .98);
  box-shadow: 0 4px 32px rgba(0,0,0,.6);
}
.dv-header__inner {
  max-width: 1400px;
  margin: 0 auto;
  padding: 0 32px;
  height: 100%;
  display: flex;
  align-items: center;
  gap: 16px;
}
.dv-logo {
  display: flex;
  align-items: center;
  gap: 10px;
  color: #fff;
  font-family: var(--font-display);
  font-weight: 900;
  font-size: 1.1rem;
  letter-spacing: .14em;
  flex-shrink: 0;
}
.dv-logo__mark {
  width: 34px; height: 34px;
  border-radius: 0;
  object-fit: contain;
}
.dv-nav {
  margin-left: auto;
  display: flex;
  align-items: center;
  gap: 2px;
}
.dv-nav__item {
  font-family: var(--font-display);
  font-size: .72rem;
  font-weight: 600;
  letter-spacing: .06em;
  color: rgba(200,210,220,.75);
  padding: 6px 11px;
  border-radius: 6px;
  white-space: nowrap;
  transition: color .3s, background .3s;
}
.dv-nav__item:hover {
  color: #fff;
  background: rgba(255,255,255,.07);
}
.dv-nav__item--cta {
  background: linear-gradient(135deg, #C9A84C, #8B6914);
  color: var(--dv-black) !important;
  font-weight: 700;
  padding: 7px 16px;
  margin-left: 8px;
  border-radius: 6px;
}
.dv-nav__item--cta:hover {
  opacity: .85;
}
.dv-menu-toggle {
  display: none;
  flex-direction: column;
  gap: 6px;
  padding: 8px;
  margin-left: auto;
}
.dv-menu-toggle__bar {
  display: block;
  width: 26px; height: 2px;
  background: rgba(255,255,255,.85);
  border-radius: 1px;
  transition: transform .35s var(--ease-out), opacity .35s;
}
.dv-menu-toggle.is-active .dv-menu-toggle__bar:nth-child(1) { transform: translateY(8px) rotate(45deg); }
.dv-menu-toggle.is-active .dv-menu-toggle__bar:nth-child(2) { opacity: 0; }
.dv-menu-toggle.is-active .dv-menu-toggle__bar:nth-child(3) { transform: translateY(-8px) rotate(-45deg); }

/* ── つながる窓口 CTA ボタン（Visionセクション用）── */
.dv-nav__item--index-btn {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  margin-left: 8px;
  padding: 8px 20px;
  background: linear-gradient(135deg, #00b4d8, #0078c8);
  color: #ffffff !important;
  font-family: var(--font-d);
  font-size: 0.72rem;
  font-weight: 700;
  letter-spacing: 0.10em;
  border-radius: 24px;
  border: 1px solid rgba(255, 255, 255, 0.25);
  white-space: nowrap;
  transition: opacity 0.3s, transform 0.3s, box-shadow 0.3s;
  box-shadow: 0 2px 12px rgba(0, 180, 216, 0.4);
  text-shadow: none;
  background-color: unset;
}

/* ホバー時のスタイル */
.dv-nav__item--index-btn:hover {
  opacity: 1;
  transform: translateY(-1px);
  box-shadow: 0 4px 20px rgba(0, 180, 216, 0.6);
  background: linear-gradient(135deg, #00c8f0, #008cdc);
  color: #ffffff !important;
}

/* ============================================================
   HERO
   ============================================================ */
.dv-hero {
  position: relative;
  width: 100%;
  min-height: 100vh;
  display: flex;
  align-items: center;
  justify-content: center;
  overflow: hidden;
}
.dv-hero__bg {
  position: absolute;
  inset: 0;
  background-size: cover;
  background-position: center;
  transform: scale(1.04);
  transition: transform 8s ease;
}
.dv-hero__bg--default {
  background: radial-gradient(ellipse 80% 60% at 50% 40%, #1A2E18 0%, var(--dv-kogecha) 60%, #0A0806 100%);
}
.dv-hero__overlay {
  position: absolute;
  inset: 0;
  background: linear-gradient(
    to bottom,
    rgba(7,7,16,.25) 0%,
    rgba(7,7,16,.55) 55%,
    rgba(7,7,16,.88) 100%
  );
  z-index: 1;
}

/* 同心円リング */
.dv-hero__rings {
  position: absolute;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  pointer-events: none;
  z-index: 2;
}
.dv-ring {
  position: absolute;
  border-radius: 50%;
  border: 1px solid rgba(201,168,76,.07);
  animation: dv-ring-pulse 8s ease-in-out infinite;
}
.dv-ring--1 { width: 280px;  height: 280px;  animation-delay: 0s; }
.dv-ring--2 { width: 480px;  height: 480px;  animation-delay: 1.5s; border-color: rgba(201,168,76,.05); }
.dv-ring--3 { width: 680px;  height: 680px;  animation-delay: 3s;   border-color: rgba(201,168,76,.04); }
.dv-ring--4 { width: 920px;  height: 920px;  animation-delay: 4.5s; border-color: rgba(201,168,76,.025); }
.dv-ring--5 { width: 1180px; height: 1180px; animation-delay: 6s;   border-color: rgba(201,168,76,.015); }
@keyframes dv-ring-pulse {
  0%, 100% { transform: scale(1); opacity: 1; }
  50%       { transform: scale(1.03); opacity: .6; }
}

.dv-hero__glow {
  position: absolute;
  width: 600px; height: 600px;
  border-radius: 50%;
  background: radial-gradient(circle, rgba(74,122,85,.12) 0%, transparent 70%);
  top: 50%; left: 50%;
  transform: translate(-50%, -50%);
  animation: dv-glow-breathe 6s ease-in-out infinite;
  pointer-events: none;
  z-index: 2;
}
@keyframes dv-glow-breathe {
  0%, 100% { transform: translate(-50%, -50%) scale(1); opacity: .8; }
  50%       { transform: translate(-50%, -50%) scale(1.15); opacity: 1; }
}

.dv-hero__content {
  position: relative;
  z-index: 10;
  text-align: center;
  padding: 3rem 2rem;
  animation: dv-hero-enter 2s cubic-bezier(0.22, 1, 0.36, 1) forwards;
  opacity: 0;
  transform: translateY(30px);
}
@keyframes dv-hero-enter {
  to { opacity: 1; transform: translateY(0); }
}
.dv-hero__eyebrow {
  font-family: var(--font-cinzel);
  font-size: .7rem;
  letter-spacing: .5em;
  color: var(--dv-gold);
  margin-bottom: 2.5rem;
  opacity: 0;
  animation: dv-fade-up 1s .5s ease forwards;
}
.dv-hero__title {
  font-family: var(--font-cinzel);
  font-size: clamp(3.5rem, 10vw, 8rem);
  font-weight: 700;
  letter-spacing: .15em;
  color: var(--dv-cream);
  line-height: 1;
  margin-bottom: 2rem;
  opacity: 0;
  animation: dv-fade-up 1.2s .8s cubic-bezier(0.22, 1, 0.36, 1) forwards;
  text-shadow: 0 0 80px rgba(201,168,76,.3);
}
.dv-hero__catchcopy {
  font-family: var(--font-body);
  font-weight: 300;
  font-size: clamp(1rem, 2.5vw, 1.5rem);
  color: var(--dv-cream-dim);
  letter-spacing: .1em;
  line-height: 2.2;
  margin-bottom: 3rem;
  opacity: 0;
  animation: dv-fade-up 1.2s 1.2s ease forwards;
}
.dv-hero__catchcopy strong { color: var(--dv-gold-l); font-weight: 500; }
.dv-hero__divider {
  width: 1px; height: 60px;
  background: linear-gradient(to bottom, transparent, var(--dv-gold), transparent);
  margin: 2rem auto;
  opacity: 0;
  animation: dv-fade-in 1s 1.6s ease forwards;
}
.dv-hero__tagline {
  opacity: 0;
  animation: dv-fade-up 1.2s 1.8s ease forwards;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: .3rem;
}
.dv-hero__tagline-label {
  font-family: var(--font-cinzel);
  font-size: clamp(1rem, 2vw, 1.3rem);
  letter-spacing: .4em;
  color: var(--dv-cream-dim);
}
.dv-hero__tagline-through {
  font-family: var(--font-serif);
  font-style: italic;
  font-size: clamp(.9rem, 1.8vw, 1.1rem);
  color: var(--dv-muted);
  letter-spacing: .2em;
}
.dv-hero__tagline-fi {
  font-family: var(--font-cinzel);
  font-size: clamp(1.2rem, 3vw, 2rem);
  font-weight: 600;
  letter-spacing: .2em;
  color: var(--dv-navy-acc);
  text-shadow: 0 0 40px rgba(61,107,158,.5);
}
.dv-hero__tagline-jp {
  font-family: var(--font-body);
  font-weight: 300;
  font-size: clamp(.8rem, 1.5vw, .95rem);
  color: var(--dv-cream-dim);
  letter-spacing: .25em;
}
.dv-hero__scroll {
  position: absolute;
  bottom: 2.5rem;
  left: 50%;
  transform: translateX(-50%);
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 8px;
  z-index: 10;
  opacity: 0;
  animation: dv-fade-in 1s 2.8s ease forwards;
}
.dv-hero__scroll-label {
  font-family: var(--font-cinzel);
  font-size: .55rem;
  letter-spacing: .4em;
  color: var(--dv-muted);
}
.dv-hero__scroll-line {
  width: 1px; height: 40px;
  background: linear-gradient(to bottom, var(--dv-gold), transparent);
  animation: dv-scroll-line 2s ease-in-out infinite;
}
@keyframes dv-scroll-line {
  0%   { transform: scaleY(0); transform-origin: top; }
  50%  { transform: scaleY(1); transform-origin: top; }
  51%  { transform: scaleY(1); transform-origin: bottom; }
  100% { transform: scaleY(0); transform-origin: bottom; }
}

@keyframes dv-fade-up {
  from { opacity: 0; transform: translateY(20px); }
  to   { opacity: 1; transform: translateY(0); }
}
@keyframes dv-fade-in {
  from { opacity: 0; }
  to   { opacity: 1; }
}

/* ============================================================
   セクション 共通
   ============================================================ */
.dv-section {
  position: relative;
  padding: clamp(5rem, 10vh, 9rem) clamp(1.5rem, 5vw, 3rem);
}
.dv-section__bg {
  position: absolute;
  inset: 0;
  background-size: cover;
  background-position: center;
  z-index: 0;
}
.dv-section__bg-overlay {
  position: absolute;
  inset: 0;
  background: rgba(7, 7, 16, .75);
  z-index: 1;
}
.dv-section__bg-overlay--deep  { background: rgba(7, 7, 16, .86); }
.dv-section__bg-overlay--cta   { background: linear-gradient(to bottom, rgba(7,7,16,.9) 0%, rgba(10,15,30,.82) 100%); }
.dv-section__inner {
  position: relative;
  z-index: 2;
  max-width: 900px;
  margin: 0 auto;
}
.dv-section__inner--center { text-align: center; }

/* セパレーター */
.dv-section + .dv-section::before {
  content: '';
  display: block;
  position: absolute;
  top: 0; left: 0; right: 0;
  height: 1px;
  background: linear-gradient(to right, transparent, var(--dv-rule), transparent);
}

/* セクション背景カラー */
.dv-section--problem    { background: linear-gradient(180deg, var(--dv-kogecha) 0%, #1A0E08 50%, var(--dv-navy) 100%); }
.dv-section--fi         { background: var(--dv-navy); }
.dv-section--why        { background: linear-gradient(180deg, var(--dv-navy) 0%, var(--dv-kogecha-mid) 100%); }
.dv-section--process    { background: var(--dv-kogecha-mid); }
.dv-section--ai         { background: linear-gradient(180deg, var(--dv-kogecha-mid) 0%, var(--dv-navy) 100%); }
.dv-section--evolution  { background: var(--dv-navy); }
.dv-section--levels     { background: linear-gradient(180deg, var(--dv-navy) 0%, var(--dv-kogecha) 100%); }
.dv-section--philosophy { background: linear-gradient(180deg, var(--dv-kogecha) 0%, #0A0806 100%); min-height: 80vh; }
.dv-section--cta        { background: #0A0806; min-height: 80vh; }

/* セクション ヘッダー共通 */
.dv-sec-tag {
  font-family: var(--font-cinzel);
  font-size: .62rem;
  letter-spacing: .5em;
  color: var(--dv-gold);
  margin-bottom: 1.5rem;
  display: block;
}
.dv-sec-title {
  font-family: var(--font-serif);
  font-size: clamp(1.8rem, 4vw, 3.2rem);
  font-weight: 300;
  line-height: 1.35;
  color: var(--dv-cream);
  margin-bottom: 1rem;
}
.dv-sec-lead {
  font-family: var(--font-body);
  font-size: clamp(.95rem, 2vw, 1.2rem);
  font-weight: 300;
  color: var(--dv-cream-dim);
  letter-spacing: .06em;
  line-height: 2;
  margin-bottom: 2rem;
}
.dv-gold-line {
  width: 60px; height: 1px;
  background: var(--dv-gold);
  margin: 2rem 0;
}
.dv-gold-line--center { margin: 2rem auto; }

/* ============================================================
   PROBLEM セクション
   ============================================================ */
.dv-problem-list {
  list-style: none;
  margin: 2.5rem 0;
}
.dv-problem-list__item {
  font-size: clamp(.9rem, 1.8vw, 1.1rem);
  color: var(--dv-cream-dim);
  padding: 1.2rem 0;
  border-bottom: 1px solid rgba(201,168,76,.12);
  font-weight: 300;
  letter-spacing: .05em;
  display: flex;
  align-items: center;
  gap: 1.2rem;
}
.dv-problem-list__item::before {
  content: '';
  width: 6px; height: 6px;
  background: #8B2020;
  border-radius: 50%;
  flex-shrink: 0;
}
.dv-essence-block {
  background: linear-gradient(135deg, rgba(44,24,16,.8), rgba(13,27,42,.9));
  border: 1px solid rgba(201,168,76,.2);
  border-left: 3px solid var(--dv-gold);
  padding: 2.5rem 3rem;
  margin: 2.5rem 0;
  position: relative;
  overflow: hidden;
}
.dv-essence-block::before {
  content: '"';
  position: absolute;
  top: -20px; left: 20px;
  font-family: var(--font-serif);
  font-size: 8rem;
  color: rgba(201,168,76,.07);
  line-height: 1;
  pointer-events: none;
}
.dv-essence-block p {
  font-family: var(--font-body);
  font-size: clamp(1rem, 2vw, 1.35rem);
  font-weight: 300;
  color: var(--dv-cream);
  letter-spacing: .08em;
  line-height: 2;
  position: relative; z-index: 1;
}
.dv-essence-block strong { color: var(--dv-gold-l); font-weight: 500; }
.dv-redefine-box {
  padding: 2.5rem 3rem;
  background: rgba(26,48,37,.3);
  border: 1px solid rgba(74,122,85,.25);
  text-align: center;
  margin: 2rem 0;
}
.dv-redefine-box p {
  font-size: clamp(1rem, 2vw, 1.3rem);
  color: var(--dv-cream-dim);
  font-weight: 300;
  letter-spacing: .08em;
  line-height: 2;
}
.dv-redefine-box strong { color: #4A7A55; font-weight: 500; }

/* ============================================================
   FI セクション
   ============================================================ */
.dv-fi-definition {
  background: rgba(13,27,42,.8);
  border: 1px solid rgba(61,107,158,.3);
  border-top: 3px solid var(--dv-navy-acc);
  padding: 2.5rem 3rem;
  margin: 2.5rem 0;
  text-align: center;
}
.dv-fi-definition p {
  font-size: clamp(.95rem, 2vw, 1.25rem);
  color: var(--dv-cream-dim);
  font-weight: 300;
  letter-spacing: .08em;
  line-height: 2;
}
.dv-fi-definition strong { color: var(--dv-navy-acc); font-weight: 500; }
.dv-fi-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
  gap: 1.5rem;
  margin: 2.5rem 0;
}
.dv-fi-card {
  background: rgba(26,46,69,.4);
  border: 1px solid rgba(61,107,158,.18);
  padding: 2rem;
  position: relative;
  transition: transform .4s var(--ease-out), border-color .4s;
}
.dv-fi-card:hover {
  transform: translateY(-4px);
  border-color: rgba(61,107,158,.5);
}
.dv-fi-card__num {
  font-family: var(--font-cinzel);
  font-size: 2.5rem;
  font-weight: 700;
  color: rgba(61,107,158,.2);
  position: absolute;
  top: 1rem; right: 1.2rem;
  line-height: 1;
}
.dv-fi-card__arrow {
  font-size: .68rem;
  color: var(--dv-navy-acc);
  letter-spacing: .2em;
  margin-bottom: .8rem;
  display: block;
}
.dv-fi-card__title {
  font-size: 1rem;
  font-weight: 500;
  color: var(--dv-cream);
  margin-bottom: .8rem;
  letter-spacing: .04em;
}
.dv-fi-card__text {
  font-size: .85rem;
  color: var(--dv-cream-dim);
  font-weight: 300;
  line-height: 1.85;
}
.dv-fi-essence {
  text-align: center;
  padding: 2.5rem 3rem;
  background: linear-gradient(135deg, rgba(13,27,42,.6), rgba(26,48,37,.4));
  border: 1px solid rgba(201,168,76,.15);
  margin-top: 2rem;
}
.dv-fi-essence p {
  font-family: var(--font-body);
  font-size: clamp(.95rem, 1.8vw, 1.2rem);
  font-weight: 300;
  color: var(--dv-cream-dim);
  letter-spacing: .1em;
  line-height: 2;
}
.dv-fi-essence strong { color: var(--dv-gold-l); font-weight: 500; }

/* ============================================================
   WHY セクション
   ============================================================ */
.dv-why-conclusion {
  text-align: center;
  padding: 2.5rem 3rem;
  background: rgba(139,32,32,.12);
  border: 1px solid rgba(192,57,43,.25);
  margin-bottom: 3rem;
}
.dv-why-conclusion p {
  font-size: clamp(1rem, 2.2vw, 1.4rem);
  font-weight: 300;
  color: var(--dv-cream);
  letter-spacing: .1em;
  line-height: 2;
}
.dv-why-conclusion strong { color: #E8453C; font-weight: 500; }
.dv-why-cards {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 1.5rem;
  margin: 2.5rem 0;
}
.dv-why-card {
  padding: 2.2rem 1.8rem;
  background: rgba(44,24,16,.5);
  border: 1px solid rgba(201,168,76,.12);
  position: relative;
  overflow: hidden;
  transition: border-color .4s;
}
.dv-why-card:hover { border-color: rgba(201,168,76,.35); }
.dv-why-card::after {
  content: '';
  position: absolute;
  bottom: 0; left: 0;
  width: 100%; height: 2px;
  background: linear-gradient(to right, var(--dv-gold), transparent);
}
.dv-why-card__era {
  font-family: var(--font-cinzel);
  font-size: .62rem;
  letter-spacing: .4em;
  color: var(--dv-muted);
  margin-bottom: 1rem;
  display: block;
}
.dv-why-card__old {
  font-size: .9rem;
  font-weight: 300;
  color: var(--dv-cream-dim);
  margin-bottom: .5rem;
  text-decoration: line-through;
  text-decoration-color: rgba(201,168,76,.3);
}
.dv-why-card__new {
  font-size: 1rem;
  font-weight: 400;
  color: var(--dv-cream);
  letter-spacing: .04em;
}
.dv-why-card__new strong { color: var(--dv-gold-l); }
.dv-why-transition {
  text-align: center;
  padding: 2.5rem;
  background: linear-gradient(135deg, rgba(26,48,37,.3), rgba(13,27,42,.5));
  border: 1px solid rgba(74,122,85,.2);
  margin-top: 2.5rem;
}
.dv-why-transition__old {
  font-size: .9rem;
  color: var(--dv-muted);
  text-decoration: line-through;
  margin-bottom: .8rem;
  letter-spacing: .1em;
}
.dv-why-transition__new {
  font-size: clamp(1rem, 2vw, 1.3rem);
  color: var(--dv-cream);
  font-weight: 300;
  letter-spacing: .08em;
}
.dv-why-transition__new strong { color: #4A7A55; font-weight: 500; }
.dv-qblock {
  border-left: 2px solid var(--dv-gold);
  padding: 1.5rem 2rem;
  margin: 1.5rem 0;
  background: rgba(201,168,76,.03);
}
.dv-qblock p {
  font-size: clamp(.9rem, 1.6vw, 1.05rem);
  color: var(--dv-cream-dim);
  font-weight: 300;
  letter-spacing: .07em;
  line-height: 2;
  font-style: italic;
}
.dv-qblock cite {
  font-style: normal;
  color: var(--dv-muted);
  font-size: .9em;
}

/* ============================================================
   PROCESS セクション
   ============================================================ */
.dv-flow {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 0;
  margin: 3rem auto;
  max-width: 700px;
  flex-wrap: nowrap;
}
.dv-flow__node {
  background: rgba(44,24,16,.7);
  border: 1px solid rgba(201,168,76,.2);
  padding: 1.2rem 1.4rem;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: .3rem;
  text-align: center;
  position: relative;
  transition: all .4s var(--ease-out);
  min-width: 110px;
}
.dv-flow__node:hover {
  border-color: var(--dv-gold);
  background: rgba(201,168,76,.08);
  transform: scale(1.05);
}
.dv-flow__node--highlight {
  border-color: #8B2020;
  background: rgba(139,32,32,.15);
}
.dv-flow__node--highlight .dv-flow__node-label { color: var(--dv-gold-l); }
.dv-flow__node-num {
  font-family: var(--font-cinzel);
  font-size: .7rem;
  color: var(--dv-gold);
  letter-spacing: .1em;
}
.dv-flow__node-label {
  font-size: .82rem;
  color: var(--dv-cream);
  font-weight: 300;
  line-height: 1.5;
}
.dv-flow__node-sub {
  display: block;
  font-size: .68rem;
  color: var(--dv-navy-acc);
  letter-spacing: .05em;
}
.dv-flow__arrow {
  color: var(--dv-gold);
  opacity: .5;
  font-size: 1.2rem;
  padding: 0 .4rem;
  flex-shrink: 0;
}
.dv-flow__arrow::after { content: '→'; }
.dv-process-key {
  text-align: center;
  padding: 2.5rem;
  background: rgba(44,24,16,.5);
  border: 1px solid rgba(201,168,76,.2);
  margin-top: 3rem;
}
.dv-process-key p {
  font-size: clamp(.95rem, 2vw, 1.25rem);
  color: var(--dv-cream);
  font-weight: 300;
  letter-spacing: .1em;
  line-height: 2;
}
.dv-process-key strong { color: var(--dv-gold-l); font-weight: 500; }

/* ============================================================
   AI セクション
   ============================================================ */
.dv-ai-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 1px;
  background: rgba(201,168,76,.1);
  margin: 2.5rem 0;
  border: 1px solid rgba(201,168,76,.1);
}
.dv-ai-role {
  padding: 2.2rem;
  background: rgba(13,27,42,.7);
  transition: background .4s;
}
.dv-ai-role:hover { background: rgba(26,46,69,.8); }
.dv-ai-role__dot {
  width: 8px; height: 8px;
  background: var(--dv-navy-acc);
  border-radius: 50%;
  margin-bottom: 1rem;
}
.dv-ai-role__title {
  font-size: .95rem;
  font-weight: 500;
  color: var(--dv-cream);
  margin-bottom: .5rem;
  letter-spacing: .04em;
}
.dv-ai-role__text {
  font-size: .82rem;
  color: var(--dv-cream-dim);
  font-weight: 300;
  line-height: 1.85;
}
.dv-ai-key {
  text-align: center;
  padding: 2.5rem;
  background: rgba(61,107,158,.1);
  border: 1px solid rgba(61,107,158,.25);
  margin-top: 2rem;
}
.dv-ai-key p {
  font-size: clamp(.95rem, 2vw, 1.2rem);
  color: var(--dv-cream-dim);
  font-weight: 300;
  letter-spacing: .1em;
  line-height: 2;
}
.dv-ai-key strong { color: var(--dv-navy-acc); font-weight: 500; }

/* ============================================================
   EVOLUTION セクション
   ============================================================ */
.dv-table-wrap { overflow-x: auto; -webkit-overflow-scrolling: touch; }
.dv-evolution-table {
  width: 100%;
  border-collapse: collapse;
  margin: 2.5rem 0;
}
.dv-evolution-table th {
  font-family: var(--font-cinzel);
  font-size: .80rem;
  letter-spacing: .4em;
  color: var(--dv-muted);
  padding: 1.2rem 2rem;
  text-align: left;
  border-bottom: 1px solid rgba(201,168,76,.2);
  white-space: nowrap;
  background-color: #121212; /* または #1a1a1a, #1e1e2f */
}
.dv-evolution-table td {
  padding: 1.4rem 2rem;
  font-size: .95rem;
  color: var(--dv-cream-dim);
  font-weight: 300;
  border-bottom: 1px solid rgba(201,168,76,.08);
  letter-spacing: .04em;
}
.dv-evolution-table__future td {
  color: var(--dv-gold-l);
  font-weight: 400;
  font-size: 1rem;
  background: linear-gradient(90deg, #3a3a5a, #c9a84c); /* FUTURE：ネイビーからゴールドへ */
}
.dv-phase-label {
  font-family: var(--font-cinzel);
  font-size: .65rem;
  letter-spacing: .3em;
  color: var(--dv-muted);
}
.dv-phase-label--future { color: var(--dv-gold); }

.dv-evolution-table tr:nth-of-type(1) td {
  background-color: #1a1a1a; /* PAST：深いグレー */
  color: #ffffff;
}

.dv-evolution-table tr:nth-of-type(2) td {
  background-color: #2a2a3a; /* PRESENT：少し明るめのグレー */
  color: #CCCCCC;
}


/* ============================================================
   LEVELS セクション
   ============================================================ */
.dv-levels-def {
  background: rgba(26,48,37,.3);
  border: 1px solid rgba(74,122,85,.25);
  border-top: 3px solid #4A7A55;
  padding: 2.5rem 3rem;
  text-align: center;
  margin-bottom: 3rem;
}
.dv-levels-def p {
  font-size: clamp(.95rem, 1.8vw, 1.2rem);
  color: var(--dv-cream-dim);
  font-weight: 300;
  letter-spacing: .08em;
  line-height: 2;
}
.dv-levels-def strong { color: #4A7A55; font-weight: 500; }
.dv-levels-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 1.5rem;
}
.dv-level-card {
  padding: 2.5rem 2rem;
  position: relative;
  overflow: hidden;
  transition: transform .4s var(--ease-out);
}
.dv-level-card:hover { transform: translateY(-5px); }
.dv-level-card--1 { background: rgba(44,74,110,.3); border: 1px solid rgba(61,107,158,.3); }
.dv-level-card--2 { background: rgba(26,48,37,.35); border: 1px solid rgba(74,122,85,.3); }
.dv-level-card--3 { background: rgba(60,20,20,.3); border: 1px solid rgba(139,32,32,.3); }
.dv-level-card__num {
  font-family: var(--font-cinzel);
  font-size: 3.5rem;
  font-weight: 700;
  opacity: .08;
  position: absolute;
  top: .5rem; right: 1rem;
  line-height: 1;
  color: var(--dv-cream);
}
.dv-level-card__tag {
  font-family: var(--font-cinzel);
  font-size: .58rem;
  letter-spacing: .4em;
  margin-bottom: 1rem;
  display: block;
}
.dv-level-card--1 .dv-level-card__tag { color: var(--dv-navy-acc); }
.dv-level-card--2 .dv-level-card__tag { color: #4A7A55; }
.dv-level-card--3 .dv-level-card__tag { color: #8B2020; }
.dv-level-card__title {
  font-size: 1.1rem;
  font-weight: 500;
  color: var(--dv-cream);
  margin-bottom: .8rem;
  letter-spacing: .04em;
}
.dv-level-card__text {
  font-size: .85rem;
  color: var(--dv-cream-dim);
  font-weight: 300;
  line-height: 1.9;
}

/* ============================================================
   PHILOSOPHY セクション
   ============================================================ */
.dv-philosophy__watermark {
  position: absolute;
  top: 50%; left: 50%;
  transform: translate(-50%, -50%);
  font-family: var(--font-cinzel);
  font-size: clamp(5rem, 18vw, 14rem);
  font-weight: 700;
  color: rgba(201,168,76,.03);
  white-space: nowrap;
  pointer-events: none;
  letter-spacing: .1em;
  z-index: 2;
}
.dv-philosophy__note {
  text-align: center;
  font-size: .95rem;
  color: var(--dv-muted);
  font-weight: 300;
  letter-spacing: .1em;
  margin-bottom: 2rem;
}
.dv-philosophy-quotes {
  display: flex;
  flex-direction: column;
  gap: 4rem;
  margin: 3rem 0;
}
.dv-philosophy-quote {
  position: relative;
  padding: 0 2rem;
  text-align: center;
}
.dv-philosophy-quote::before {
  content: '';
  position: absolute;
  left: 50%;
  top: -2rem;
  width: 40px; height: 1px;
  background: var(--dv-gold);
  transform: translateX(-50%);
}
.dv-philosophy-quote p {
  font-family: var(--font-body);
  font-size: clamp(1rem, 2.5vw, 1.5rem);
  font-weight: 300;
  color: var(--dv-cream-dim);
  letter-spacing: .1em;
  line-height: 2.2;
}
.dv-philosophy-quote strong { color: var(--dv-cream); font-weight: 500; }

/* ============================================================
   CTA セクション
   ============================================================ */
.dv-cta__glow {
  position: absolute;
  width: 800px; height: 800px;
  border-radius: 50%;
  background: radial-gradient(circle, rgba(26,48,37,.2) 0%, transparent 70%);
  top: 50%; left: 50%;
  transform: translate(-50%, -50%);
  pointer-events: none;
  z-index: 1;
}
.dv-cta-questions {
  list-style: none;
  margin: 3rem 0;
}
.dv-cta-question {
  font-size: clamp(.95rem, 2vw, 1.25rem);
  font-weight: 300;
  color: var(--dv-cream-dim);
  padding: 1.2rem 0;
  border-bottom: 1px solid rgba(201,168,76,.1);
  letter-spacing: .08em;
  transition: color .4s;
}
.dv-cta-question:first-child { border-top: 1px solid rgba(201,168,76,.1); }
.dv-cta-question:hover { color: var(--dv-cream); }
.dv-cta-final {
  margin-top: 5rem;
}
.dv-cta-final__main {
  font-family: var(--font-body);
  font-size: clamp(1.2rem, 3vw, 2rem);
  font-weight: 300;
  color: var(--dv-cream);
  letter-spacing: .1em;
  line-height: 1.9;
  margin-bottom: 1.5rem;
}
.dv-cta-final__main strong {
  color: var(--dv-gold-l);
  font-weight: 500;
  display: block;
  margin-bottom: .5rem;
}
.dv-cta-final__sub {
  font-size: clamp(1rem, 2vw, 1.3rem);
  font-weight: 300;
  color: var(--dv-muted);
  letter-spacing: .15em;
  margin-bottom: 3.5rem;
}
.dv-cta-links {
  display: flex;
  justify-content: center;
  gap: 1.5rem;
  flex-wrap: wrap;
}
.dv-cta-btn {
  display: inline-flex;
  align-items: center;
  gap: .6rem;
  padding: 1rem 2rem;
  font-family: var(--font-display);
  font-size: .78rem;
  font-weight: 700;
  letter-spacing: .1em;
  border-radius: 0;
  transition: opacity .3s, transform .3s;
  text-decoration: none;
}
.dv-cta-btn:hover { opacity: .85; transform: translateY(-2px); }
.dv-cta-btn--primary {
  background: linear-gradient(135deg, var(--dv-gold), #8B6914);
  color: var(--dv-black);
}
.dv-cta-btn--secondary {
  background: transparent;
  color: var(--dv-cream);
  border: 1px solid rgba(201,168,76,.4);
}

/* ============================================================
   フローティングナビ
   ============================================================ */
.dv-floating-nav {
  position: fixed;
  right: 2rem;
  top: 50%;
  transform: translateY(-50%);
  z-index: 9000;
  display: flex;
  flex-direction: column;
  gap: .8rem;
  opacity: 0;
  animation: dv-fade-in 1s 3s ease forwards;
}
.dv-dot {
  width: 6px; height: 6px;
  border-radius: 50%;
  background: rgba(201,168,76,.3);
  cursor: pointer;
  transition: all .4s;
  position: relative;
  padding: 0;
}
.dv-dot:hover, .dv-dot.is-active {
  background: var(--dv-gold);
  box-shadow: 0 0 10px rgba(201,168,76,.5);
  transform: scale(1.6);
}
.dv-dot::before {
  content: attr(data-label);
  position: absolute;
  right: calc(100% + 1rem);
  top: 50%;
  transform: translateY(-50%);
  font-family: var(--font-cinzel);
  font-size: .55rem;
  letter-spacing: .2em;
  color: var(--dv-muted);
  white-space: nowrap;
  opacity: 0;
  transition: opacity .3s;
  pointer-events: none;
}
.dv-dot:hover::before { opacity: 1; }

/* ============================================================
   スクロールリビール
   ============================================================ */
.dv-reveal {
  opacity: 0;
  transform: translateY(36px);
  transition: opacity .9s cubic-bezier(0.22,1,0.36,1), transform .9s cubic-bezier(0.22,1,0.36,1);
}
.dv-reveal.is-visible { opacity: 1; transform: translateY(0); }
.dv-reveal--d1 { transition-delay: .12s; }
.dv-reveal--d2 { transition-delay: .24s; }
.dv-reveal--d3 { transition-delay: .36s; }
.dv-reveal--d4 { transition-delay: .48s; }

/* ============================================================
   レスポンシブ
   ============================================================ */
@media (max-width: 1024px) {
  .dv-floating-nav { display: none; }
}
@media (max-width: 768px) {
  .dv-nav { display: none; }
  .dv-menu-toggle { display: flex; }
  .dv-nav.is-open {
    display: flex;
    flex-direction: column;
    position: absolute;
    top: 64px; left: 0; right: 0;
    background: rgba(7,7,16,.98);
    padding: 16px 0 24px;
    border-bottom: 1px solid rgba(255,255,255,.06);
    gap: 0;
  }
  .dv-nav.is-open .dv-nav__item {
    padding: 14px 28px;
    font-size: .88rem;
    border-bottom: 1px solid rgba(255,255,255,.04);
  }
  .dv-why-cards { grid-template-columns: 1fr; }
  .dv-levels-grid { grid-template-columns: 1fr; }
  .dv-ai-grid { grid-template-columns: 1fr; }
  .dv-fi-grid { grid-template-columns: repeat(2, 1fr); }
  .dv-flow { flex-direction: column; }
  .dv-flow__arrow::after { content: '↓'; }
  .dv-essence-block { padding: 1.8rem 2rem; }
  .dv-section { padding: clamp(3.5rem, 7vh, 6rem) clamp(1.2rem, 5vw, 2rem); }
  .dv-cta-links { flex-direction: column; align-items: center; }
}
@media (max-width: 480px) {
  .dv-fi-grid { grid-template-columns: 1fr; }
  .dv-header__inner { padding: 0 20px; }
  .dv-evolution-table th, .dv-evolution-table td { padding: 1rem 1.2rem; }
}

/* ====== CTA Vision Block (トップページ同等演出) ====== */
.dv-cta-vision-block {
  margin: 0 auto 3.5rem;
  text-align: center;
  max-width: 720px;
}

.dv-cta-vision__label {
  font-family: 'Cinzel', serif;
  font-size: clamp(0.65rem, 1.2vw, 0.8rem);
  letter-spacing: .4em;
  color: rgba(212,175,55,.6);
  margin-bottom: 1.5rem;
  text-transform: uppercase;
}

/* 文字単位アニメ */
.dv-cta-kpi-block {
  margin-bottom: 1.8rem;
}
.dv-cta-kpi-line {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 0 .02em;
  margin-bottom: .4em;
  overflow: hidden;
}
.dv-cta-kpi-line--1 .dv-cta-kpi-char {
  font-size: clamp(1.4rem, 3.5vw, 2.2rem);
  font-family: 'Noto Sans JP', sans-serif;
  font-weight: 700;
  color: #fff;
  letter-spacing: .05em;
  opacity: 0;
  transform: translateY(30px);
  transition: opacity .5s ease, transform .5s ease;
}
.dv-cta-kpi-line--2 .dv-cta-kpi-char {
  font-size: clamp(1rem, 2.5vw, 1.5rem);
  font-family: 'Noto Sans JP', sans-serif;
  font-weight: 300;
  color: rgba(255,255,255,.85);
  letter-spacing: .08em;
  opacity: 0;
  transform: translateY(20px);
  transition: opacity .5s ease, transform .5s ease;
}

/* EN ブロック */
.dv-cta-en-block {
  margin-bottom: 2rem;
}
.dv-cta-en-line {
  font-family: 'Cormorant Garamond', serif;
  color: rgba(212,175,55,.9);
  letter-spacing: .15em;
  opacity: 0;
  transform: translateY(16px);
  transition: opacity .6s ease, transform .6s ease;
}
#dv-cta-line-1 { font-size: clamp(1.6rem, 3vw, 2.4rem); font-weight: 300; }
#dv-cta-line-2 { font-size: clamp(.9rem, 1.8vw, 1.2rem); font-style: italic; color: rgba(255,255,255,.6); margin: .3em 0; }
#dv-cta-line-3 { font-size: clamp(1.2rem, 2.5vw, 1.9rem); font-weight: 400; }

.dv-cta-vision__ja {
  font-family: 'Noto Sans JP', sans-serif;
  font-size: clamp(.9rem, 2vw, 1.15rem);
  letter-spacing: .12em;
  line-height: 1.9;
  opacity: 0;
  transform: translateY(12px);
  transition: opacity .7s ease .6s, transform .7s ease .6s;
}
.dv-cta-vision__ja-gold { color: rgba(212,175,55,.9); }
.dv-cta-vision__ja-brand {
  font-size: clamp(.75rem, 1.5vw, .95rem);
  letter-spacing: .45em;
  color: rgba(212,175,55,.6);
  display: block;
  margin-top: .4em;
}

/* is-active 付与で出現 */
.dv-cta-vision-block.is-active .dv-cta-kpi-char { opacity: 1; transform: translateY(0); }
.dv-cta-vision-block.is-active .dv-cta-en-line  { opacity: 1; transform: translateY(0); }
.dv-cta-vision-block.is-active .dv-cta-vision__ja { opacity: 1; transform: translateY(0); }

/* 文字ごとの遅延（1行目: 16文字、2行目: 16文字） */
.dv-cta-kpi-line--1 .dv-cta-kpi-char:nth-child(1)  { transition-delay: .00s; }
.dv-cta-kpi-line--1 .dv-cta-kpi-char:nth-child(2)  { transition-delay: .04s; }
.dv-cta-kpi-line--1 .dv-cta-kpi-char:nth-child(3)  { transition-delay: .08s; }
.dv-cta-kpi-line--1 .dv-cta-kpi-char:nth-child(4)  { transition-delay: .12s; }
.dv-cta-kpi-line--1 .dv-cta-kpi-char:nth-child(5)  { transition-delay: .16s; }
.dv-cta-kpi-line--1 .dv-cta-kpi-char:nth-child(6)  { transition-delay: .20s; }
.dv-cta-kpi-line--1 .dv-cta-kpi-char:nth-child(7)  { transition-delay: .24s; }
.dv-cta-kpi-line--1 .dv-cta-kpi-char:nth-child(8)  { transition-delay: .28s; }
.dv-cta-kpi-line--1 .dv-cta-kpi-char:nth-child(9)  { transition-delay: .32s; }
.dv-cta-kpi-line--1 .dv-cta-kpi-char:nth-child(10) { transition-delay: .36s; }
.dv-cta-kpi-line--1 .dv-cta-kpi-char:nth-child(11) { transition-delay: .40s; }
.dv-cta-kpi-line--1 .dv-cta-kpi-char:nth-child(12) { transition-delay: .44s; }
.dv-cta-kpi-line--1 .dv-cta-kpi-char:nth-child(13) { transition-delay: .48s; }
.dv-cta-kpi-line--1 .dv-cta-kpi-char:nth-child(14) { transition-delay: .52s; }
.dv-cta-kpi-line--1 .dv-cta-kpi-char:nth-child(15) { transition-delay: .56s; }
.dv-cta-kpi-line--1 .dv-cta-kpi-char:nth-child(16) { transition-delay: .60s; }
.dv-cta-kpi-line--2 .dv-cta-kpi-char:nth-child(1)  { transition-delay: .70s; }
.dv-cta-kpi-line--2 .dv-cta-kpi-char:nth-child(2)  { transition-delay: .74s; }
.dv-cta-kpi-line--2 .dv-cta-kpi-char:nth-child(3)  { transition-delay: .78s; }
.dv-cta-kpi-line--2 .dv-cta-kpi-char:nth-child(4)  { transition-delay: .82s; }
.dv-cta-kpi-line--2 .dv-cta-kpi-char:nth-child(5)  { transition-delay: .86s; }
.dv-cta-kpi-line--2 .dv-cta-kpi-char:nth-child(6)  { transition-delay: .90s; }
.dv-cta-kpi-line--2 .dv-cta-kpi-char:nth-child(7)  { transition-delay: .94s; }
.dv-cta-kpi-line--2 .dv-cta-kpi-char:nth-child(8)  { transition-delay: .98s; }
.dv-cta-kpi-line--2 .dv-cta-kpi-char:nth-child(9)  { transition-delay: 1.02s; }
.dv-cta-kpi-line--2 .dv-cta-kpi-char:nth-child(10) { transition-delay: 1.06s; }
.dv-cta-kpi-line--2 .dv-cta-kpi-char:nth-child(11) { transition-delay: 1.10s; }
.dv-cta-kpi-line--2 .dv-cta-kpi-char:nth-child(12) { transition-delay: 1.14s; }
.dv-cta-kpi-line--2 .dv-cta-kpi-char:nth-child(13) { transition-delay: 1.18s; }
.dv-cta-kpi-line--2 .dv-cta-kpi-char:nth-child(14) { transition-delay: 1.22s; }
.dv-cta-kpi-line--2 .dv-cta-kpi-char:nth-child(15) { transition-delay: 1.26s; }
.dv-cta-kpi-line--2 .dv-cta-kpi-char:nth-child(16) { transition-delay: 1.30s; }
#dv-cta-line-1 { transition-delay: 1.5s; }
#dv-cta-line-2 { transition-delay: 1.7s; }
#dv-cta-line-3 { transition-delay: 1.9s; }
