/* 自動生成: style-v2.css を :where(.v2) 配下に詳細度を変えず限定したもの。直接編集しない。
   生成 = AIページ_WP実装/抽出/scope_css.py。WP固有の調整は ai-v2-wp.css に書く */
@charset "UTF-8";
/* ============================================================
   ALNETZ /ai/ ハブ v2 試作（2026-09-04）
   ai.meta.com の作りに寄せる: 黒地の中央揃えFV＋光るオブジェクト、以降は白地に大きな余白、
   サンセリフの中太見出し、英字大文字のラベル、枠線の少ないタイル。本文は v1 と同じ。
   ============================================================ */
.v2 {
  --v2-ink: #1c1e21;
  --v2-ink-2: #465a69;
  --v2-ink-3: #626d7a; /* 12px の英字ラベルが灰地（#f5f6f8）でも AA（4.5:1）を満たす濃さ */
  --v2-line: #e4e6eb;
  --v2-gray: #f5f6f8;
  --v2-black: #050609;
  --v2-blue: #1c4fd8;
  --v2-blue-2: #1440b8;
  --v2-wrap: 1200px;
  /* 日本語はシステムフォント（Webフォントの読み込みで見出しが一瞬大きく出てから縮むのを避ける。Meta も同じ方針） */
  --v2-font: "Hiragino Sans", "Hiragino Kaku Gothic ProN", "Yu Gothic Medium", "Yu Gothic", "Meiryo", "Noto Sans JP", sans-serif;
  --v2-en: "Montserrat", "Hiragino Sans", sans-serif;
}
:where(.v2) *, :where(.v2) *::before, :where(.v2) *::after { box-sizing: border-box; }
.v2 { background: #fff; color: var(--v2-ink); font-family: var(--v2-font); font-size: 16px; line-height: 1.9; -webkit-font-smoothing: antialiased; }
:where(.v2) a { color: var(--v2-blue); }
:where(.v2) a:focus-visible, :where(.v2) button:focus-visible, :where(.v2) summary:focus-visible { outline: 2px solid var(--v2-blue); outline-offset: 3px; }
:where(.v2) code { font-family: ui-monospace, Menlo, monospace; font-size: 0.9em; background: var(--v2-gray); padding: 1px 6px; border-radius: 4px; }
:where(.v2) p { margin: 0 0 1em; }
:where(.v2) h1, :where(.v2) h2, :where(.v2) h3 { margin: 0; font-weight: 600; letter-spacing: -0.01em; color: var(--v2-ink); }
:where(.v2) h2 { text-wrap: balance; }
.v2-skip { position: absolute; left: 16px; top: -100px; z-index: 100; padding: 10px 16px; border-radius: 8px; background: #fff; color: var(--v2-ink); font-weight: 700; text-decoration: none; box-shadow: 0 4px 16px rgba(0,0,0,0.2); }
.v2-skip:focus { top: 12px; }
:where(.v2) main:focus { outline: none; }
.v2-wrap { max-width: var(--v2-wrap); margin: 0 auto; padding: 0 32px; }
.v2-wrap--narrow { max-width: 880px; }
/* ---------- ヘッダー ---------- */
.v2-header { position: sticky; top: 0; z-index: 40; background: rgba(5, 6, 9, 0.86); backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px); color: #fff; }
.v2-header__inner { max-width: var(--v2-wrap); margin: 0 auto; padding: 0 32px; min-height: 64px; display: flex; align-items: center; gap: 36px; }
.v2-header__logo { color: #fff; font-family: var(--v2-en); font-weight: 600; letter-spacing: 0.2em; font-size: 15px; text-decoration: none; }
.v2-header__nav { display: flex; gap: 26px; overflow-x: auto; scrollbar-width: none; }
.v2-header__nav::-webkit-scrollbar { display: none; }
.v2-header__nav a { color: rgba(255,255,255,0.72); font-size: 14px; text-decoration: none; white-space: nowrap; padding: 22px 0; }
.v2-header__nav a:hover, .v2-header__nav a.is-current { color: #fff; }
.v2-header__cta { margin-left: auto; flex: none; padding: 10px 20px; border-radius: 999px; background: #fff; color: var(--v2-ink); font-size: 13.5px; font-weight: 700; text-decoration: none; }
.v2-header__cta:hover { background: rgba(255,255,255,0.88); }
/* ---------- FV ---------- */
.v2-hero { position: relative; overflow: hidden; background: var(--v2-black); color: #fff; text-align: center; }
.v2-hero::before { content: ""; position: absolute; inset: 0; background: radial-gradient(60% 50% at 50% 38%, rgba(60, 80, 220, 0.28), transparent 70%); pointer-events: none; }
.v2-hero__inner { position: relative; z-index: 1; max-width: 880px; margin: 0 auto; padding: 372px 32px 120px; }
.v2-hero h1 { color: #fff; font-size: clamp(36px, 5.2vw, 68px); line-height: 1.18; letter-spacing: -0.015em; font-weight: 600; text-wrap: balance; }
.v2-hero__lead { max-width: 640px; margin: 28px auto 0; color: rgba(255,255,255,0.78); font-size: 17px; line-height: 1.85; }
.v2-hero__actions { display: flex; flex-wrap: wrap; justify-content: center; gap: 14px; margin-top: 40px; }
/* ハニカム 3案目「物流」（山口さん決定）: 19の枠に、ピースが外から運ばれて収まり、持ち上がって別の枠へ移り、外へ運び出される。
   常に空きが2〜3か所。「指定の場所に組み込む／運用が続く」の見立て。JSで生成・進行（build_v2.py）、Web Animations API で移動 */
.v2-honey { position: absolute; left: 0; top: 0; width: 100%; height: 100%; z-index: 0; overflow: visible; opacity: 0; transition: opacity 0.6s ease; }
/* SVG全体の drop-shadow は毎フレーム再描画で重い（33fps→60fps）ので外した。光は ::after のグローで出す */
.v2-ready .v2-honey { opacity: 1; }
.v2-hero__inner { z-index: 2; }
.v2-hero::after { content: ""; position: absolute; left: 50%; top: 40px; width: 300px; height: 300px; margin-left: -150px; border-radius: 50%; background: radial-gradient(circle, rgba(110, 90, 255, 0.28), transparent 62%); filter: blur(24px); pointer-events: none; }
.v2-slot { fill: none; stroke: rgba(255, 255, 255, 0.1); stroke-width: 1; stroke-dasharray: 2 5; transition: stroke-opacity 0.3s ease; }
.v2-slot.is-filled { stroke-opacity: 0; }   /* ピースが乗っている枠は点線を消す（面が半透明で透けるため） */
.v2-slot.is-target { stroke: rgba(190, 180, 255, 0.85); stroke-dasharray: none; animation: v2slot 0.9s ease-in-out infinite; }
@keyframes v2slot { 0%, 100% { stroke-opacity: 0.45; } 50% { stroke-opacity: 1; } }
/* ピース = 立方体（モジュール）に見せる。上面が明るく、左・右の面は暗く。線は面の境界 */
.v2-piece { transform-box: fill-box; transform-origin: center; --lum: 1; animation: v2rest 9s ease-in-out infinite; }
.v2-honey.is-offview .v2-piece { animation-play-state: paused; }   /* FVが画面外の間は明滅を止める（JSが付ける） */
.v2-face { stroke: rgba(255, 255, 255, 0.2); stroke-width: 0.6; stroke-linejoin: round; }
/* 色はCSS変数（--c-top/--c-left/--c-right）。svg に全体の色、運ばれてくる別色のブロックは自分の変数を持つ。はめ込まれると svg の変数が切り替わり、全ブロックが0.9秒で変わる */
.v2-face { transition: fill 0.45s ease; }
.v2-piece.is-ripple { animation: v2ripple 0.5s ease-out; }
@keyframes v2ripple { 0% { transform: scale(1); } 40% { transform: scale(1.1); } 100% { transform: scale(1); } }
.v2-face--top { fill: var(--c-top, rgba(170, 150, 255, 0.5)); }
.v2-face--left { fill: var(--c-left, rgba(120, 100, 235, 0.36)); }
.v2-face--right { fill: var(--c-right, rgba(80, 70, 190, 0.42)); }
.v2-piece.is-core .v2-face, .v2-piece.is-lift .v2-face { filter: brightness(var(--lum)); }
/* 背景の光: グラデーションは transition できないので、単色をマスクで丸く切り抜き、色（background-color）だけを1.2秒でなめらかに変える */
.v2-hero::after { background: var(--c-glow, rgba(110, 90, 255, 0.28)); -webkit-mask: radial-gradient(circle, #000, transparent 62%); mask: radial-gradient(circle, #000, transparent 62%); transition: background-color 1.2s ease; }
.v2-hero::before { background: var(--c-glow, rgba(60, 80, 220, 0.28)); -webkit-mask: radial-gradient(60% 50% at 50% 38%, #000, transparent 70%); mask: radial-gradient(60% 50% at 50% 38%, #000, transparent 70%); opacity: 0.7; transition: background-color 1.2s ease; }
.v2-piece.is-core { --lum: 1.7; }
.v2-piece.is-core .v2-face { stroke: rgba(255, 255, 255, 0.4); }
.v2-piece.is-lift { --lum: 2.1; filter: drop-shadow(0 12px 16px rgba(0, 0, 0, 0.55)); animation: none; }
.v2-piece.is-lift .v2-face { stroke: rgba(255, 255, 255, 0.55); }
@keyframes v2rest { 0%, 100% { opacity: 0.88; } 50% { opacity: 1; } }
@property --lum { syntax: "<number>"; inherits: true; initial-value: 1; }
.reduce-motion .v2-piece { animation: none; }
/* ---------- 共通のブロック ---------- */
.v2-block { padding: 120px 0; }
.v2-block--gray { background: var(--v2-gray); }
.v2-block--dark { background: var(--v2-black); color: #fff; }
.v2-block--dark h2, .v2-block--dark h3 { color: #fff; }
.v2-block--dark p { color: rgba(255,255,255,0.78); }
.v2-block--quiet { padding: 96px 0; border-top: 1px solid var(--v2-line); }
.v2-block__head { max-width: 760px; margin: 0 auto 56px; text-align: center; }
.v2-block__head h2 { font-size: clamp(30px, 3.6vw, 46px); line-height: 1.25; }
.v2-block__intro { margin: 22px auto 0; color: var(--v2-ink-2); font-size: 16.5px; }
.v2-block--dark .v2-block__intro { color: rgba(255,255,255,0.75); }
.v2-block__note { max-width: 760px; margin: 48px auto 0; color: var(--v2-ink-2); text-align: center; font-size: 15.5px; }
.v2-eyebrow { margin: 0 0 18px; color: var(--v2-ink-3); font-family: var(--v2-en); font-size: 12px; font-weight: 600; letter-spacing: 0.22em; }
.v2-eyebrow--light { color: rgba(255,255,255,0.55); }
.v2-h2--small { font-size: 28px; line-height: 1.3; margin-bottom: 20px; }
/* 開幕: 大きな一文 */
.v2-statement { font-size: clamp(24px, 2.5vw, 32px); line-height: 1.6; font-weight: 500; letter-spacing: -0.01em; color: var(--v2-ink); margin: 0 0 36px; }
@media (min-width: 801px) {
  .v2-statement__line { display: block; }
}
/* PCでは文ごとに改行（詩のように3行）。スマホは自然に折り返す */
.v2-body p { color: var(--v2-ink-2); font-size: 16.5px; }
.v2-body--center { max-width: 760px; margin: 40px auto 0; text-align: center; }
.v2-lead-sub { margin: 0 0 22px; color: var(--v2-ink-2); font-size: 15.5px; }
/* ボタン */
.v2-btn { display: inline-flex; align-items: center; justify-content: center; min-height: 52px; padding: 14px 28px; border-radius: 999px; font-size: 15px; font-weight: 700; text-decoration: none; transition: background 0.2s ease, transform 0.2s ease; }
.v2-btn--primary { background: var(--v2-blue); color: #fff; }
.v2-btn--primary:hover { background: var(--v2-blue-2); transform: translateY(-1px); }
.v2-btn--dark { background: rgba(255,255,255,0.1); color: #fff; border: 1px solid rgba(255,255,255,0.22); }
.v2-btn--dark:hover { background: rgba(255,255,255,0.18); }
.v2-btn--ghost { min-height: 44px; padding: 10px 20px; background: #fff; color: var(--v2-ink); border: 1px solid var(--v2-line); font-size: 14px; }
.v2-btn--ghost:hover { border-color: var(--v2-ink); }
/* グリッド */
.v2-grid { display: grid; gap: 16px; }
.v2-grid--3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.v2-grid--2 { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 24px 48px; }
/* 4つで止まります: カード */
/* 活用例: 横に流れるカード */
/* 支援する範囲（黒） */
.v2-range { list-style: none; counter-reset: r; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 12px; }
.v2-range li { counter-increment: r; position: relative; padding: 18px 20px 18px 54px; border-radius: 14px; background: rgba(255,255,255,0.06); border: 1px solid rgba(255,255,255,0.1); color: rgba(255,255,255,0.88); font-size: 14.5px; line-height: 1.75; }
.v2-range li::before { content: counter(r, decimal-leading-zero); position: absolute; left: 20px; top: 18px; color: rgba(255,255,255,0.5); font-family: var(--v2-en); font-size: 12.5px; font-weight: 600; letter-spacing: 0.1em; line-height: 1.7; }
.v2-tile { display: flex; flex-direction: column; gap: 10px; min-height: 240px; padding: 30px 30px 26px; border-radius: 20px; background: #15171c; color: #fff; text-decoration: none; transition: background 0.2s ease, transform 0.2s ease; }
.v2-tile:hover { background: #1e2129; transform: translateY(-2px); }
.v2-tile__eyebrow { color: rgba(255,255,255,0.6); font-family: var(--v2-en); font-size: 11.5px; font-weight: 600; letter-spacing: 0.2em; }
.v2-tile strong { font-size: 21px; line-height: 1.4; font-weight: 500; }
.v2-tile p { margin: 0; color: rgba(255,255,255,0.7); font-size: 14.5px; line-height: 1.8; flex: 1; }
.v2-tile__more { color: #fff; font-size: 14px; font-weight: 700; }
.v2-tile__more::after { content: " →"; }
/* 強み */
.v2-feature h3 { font-size: 22px; line-height: 1.4; margin-bottom: 14px; padding-top: 18px; border-top: 1px solid var(--v2-ink); }
.v2-feature p { color: var(--v2-ink-2); font-size: 15.5px; }
/* 強みの下: 手がけた例（01〜04 の番号つき2列とは別の見た目。白い箱＋罫線の行） */
.v2-proof { margin-top: 56px; background: #fff; border: 1px solid var(--v2-line); border-radius: 18px; padding: 6px 28px 8px; }
.v2-proof__label { margin: 0; padding: 18px 0 12px; color: var(--v2-ink-3); font-size: 12px; font-weight: 700; letter-spacing: 0.14em; }
.v2-proof__list { list-style: none; margin: 0; padding: 0; }
.v2-proof__list li { border-top: 1px solid var(--v2-line); }
.v2-proof a { display: grid; grid-template-columns: 144px minmax(0, 1fr) auto; gap: 6px 24px; align-items: baseline; padding: 20px 0; color: var(--v2-ink); text-decoration: none; }
.v2-proof__thumb { grid-column: 1; grid-row: 1 / span 2; align-self: center; width: 144px; height: 81px; object-fit: cover; border-radius: 12px; background: #f3f4f8; border: 1px solid var(--v2-line); display: block; }
.v2-proof strong { grid-column: 2; font-size: 16.5px; font-weight: 700; line-height: 1.5; }
.v2-proof span { grid-column: 2; color: var(--v2-ink-2); font-size: 14.5px; line-height: 1.8; }
.v2-proof em { grid-column: 3; grid-row: 1 / span 2; align-self: center; font-style: normal; white-space: nowrap; color: var(--v2-blue); font-size: 13.5px; font-weight: 700; }
.v2-proof a:hover strong { color: var(--v2-blue); }
.v2-proof a:hover em { color: var(--v2-blue-2); }
@media (max-width: 700px) {
  .v2-proof { margin-top: 40px; padding: 4px 20px 6px; }
  .v2-proof a { grid-template-columns: minmax(0, 1fr); gap: 10px; padding: 18px 0 20px; }
  .v2-proof__thumb { grid-column: 1; grid-row: auto; width: 100%; height: auto; aspect-ratio: 16 / 9; }
  .v2-proof strong, .v2-proof span, .v2-proof em { grid-column: 1; }
  .v2-proof em { grid-row: auto; margin-top: 4px; }
}
/* 進め方: 横並び */
.v2-steps { list-style: none; counter-reset: s; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 16px; }
.v2-steps li { counter-increment: s; padding: 26px 22px 24px; border-radius: 18px; background: #fff; }
.v2-steps li::before { content: counter(s, decimal-leading-zero); display: block; margin-bottom: 14px; color: var(--v2-blue); font-family: var(--v2-en); font-size: 22px; font-weight: 600; letter-spacing: 0.04em; line-height: 1; }
.v2-step__head { display: block; font-size: 17px; font-weight: 700; line-height: 1.5; margin-bottom: 8px; }
.v2-step__desc { display: block; color: var(--v2-ink-2); font-size: 14px; line-height: 1.8; }
/* 入口 */
.v2-entry { padding: 34px 30px 30px; border-radius: 20px; background: var(--v2-gray); display: flex; flex-direction: column; }
.v2-entry__no { color: var(--v2-blue); font-family: var(--v2-en); font-size: 28px; font-weight: 600; line-height: 1; margin-bottom: 18px; }
.v2-entry h3 { font-size: 21px; line-height: 1.45; font-weight: 700; margin-bottom: 14px; }
.v2-entry p { color: var(--v2-ink-2); font-size: 15px; line-height: 1.85; }
.v2-entry .v2-btn { align-self: flex-start; margin-top: auto; }
/* 目安・初回相談 */
.v2-two { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 64px; }
.v2-two p { color: var(--v2-ink-2); font-size: 15.5px; }
.v2-checks { list-style: none; margin: 0 0 20px; padding: 0; }
.v2-checks li { position: relative; padding: 8px 0 8px 26px; border-bottom: 1px solid var(--v2-line); font-size: 15px; }
.v2-checks li::before { content: ""; position: absolute; left: 2px; top: 17px; width: 7px; height: 12px; border-right: 2px solid var(--v2-blue); border-bottom: 2px solid var(--v2-blue); transform: rotate(45deg); }
/* FAQ */
.v2-faq details { border-top: 1px solid var(--v2-line); }
.v2-faq details:last-child { border-bottom: 1px solid var(--v2-line); }
.v2-faq summary { display: flex; gap: 14px; align-items: flex-start; cursor: pointer; list-style: none; padding: 22px 44px 22px 0; position: relative; font-size: 16.5px; font-weight: 700; }
.v2-faq summary::-webkit-details-marker { display: none; }
.v2-faq summary::after { content: ""; position: absolute; right: 8px; top: 30px; width: 9px; height: 9px; border-right: 1.5px solid var(--v2-ink-3); border-bottom: 1.5px solid var(--v2-ink-3); transform: rotate(45deg); transition: transform 0.2s ease; }
.v2-faq details[open] summary::after { transform: rotate(-135deg); top: 36px; }
.v2-faq__q { color: var(--v2-blue); font-family: var(--v2-en); font-weight: 600; }
.v2-faq__a { padding: 0 12px 24px 30px; }
.v2-faq__a p { color: var(--v2-ink-2); font-size: 15px; }
/* CTA */
.v2-cta { padding: 120px 0; background: var(--v2-black); color: #fff; text-align: center; }
.v2-cta h2 { color: #fff; font-size: clamp(28px, 3.4vw, 42px); line-height: 1.3; }
.v2-cta p { max-width: 560px; margin: 20px auto 36px; color: rgba(255,255,255,0.72); }
/* フッター */
.v2-footer { padding: 48px 0 40px; border-top: 1px solid var(--v2-line); color: var(--v2-ink-3); font-size: 13px; }
.v2-footer__logo { margin: 0 0 6px; color: var(--v2-ink); font-family: var(--v2-en); font-weight: 600; letter-spacing: 0.18em; font-size: 14px; }
.v2-footer__nav { display: flex; flex-wrap: wrap; gap: 18px; }
.v2-footer__nav a { color: var(--v2-ink-2); text-decoration: none; padding: 6px 0; }
.v2-footer__nav a:hover { color: var(--v2-blue); }
/* ハブのフッター: AI SERVICES の一覧（FV直下と同じ部品を小さく、3列で） */
.v2-footer__label { margin: 22px 0 16px; color: var(--v2-ink-3); font-family: var(--v2-en); font-size: 11px; font-weight: 600; letter-spacing: 0.22em; }
.v2-footer__services.v2-strip__row { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 20px 36px; }
.v2-footer__services .v2-strip__item { gap: 12px; }
.v2-footer__services .v2-strip__thumb { width: 48px; height: 48px; border-radius: 10px; }
.v2-footer__services .v2-strip__text { gap: 3px; }
.v2-footer__services .v2-strip__text strong { font-size: 14px; line-height: 1.5; }
.v2-footer__services .v2-strip__text small { font-size: 10px; letter-spacing: 0.1em; }
@media (max-width: 1000px) { .v2-footer__services.v2-strip__row { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 18px 28px; } }
@media (max-width: 640px) { .v2-footer__services.v2-strip__row { grid-template-columns: minmax(0, 1fr); gap: 14px; } }
/* ハブのフッター: 関連コンポーネントと事例（本文の RELATED セクションから移動） */
.v2-footer__related { margin-top: 34px; padding-top: 26px; border-top: 1px solid var(--v2-line); }
.v2-footer__related .v2-chips { margin-bottom: 12px; }
.v2-footer__related .v2-chips a { min-height: 34px; padding: 6px 14px; font-size: 13px; }
.v2-footer__related .v2-rel__more { font-size: 13.5px; }
/* ---------- レスポンシブ ---------- */
@media (max-width: 1100px) {
  .v2-grid--4, .v2-steps { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .v2-range { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 800px) {
  .v2-wrap, .v2-header__inner { padding-left: 20px; padding-right: 20px; }
  .v2-header__inner { flex-wrap: wrap; gap: 12px; padding-top: 12px; padding-bottom: 8px; }
  .v2-header__nav { order: 3; flex: 1 0 100%; gap: 18px; }
  .v2-header__nav a { padding: 8px 0; }
  .v2-hero__inner { padding: 256px 20px 80px; }
  .v2-block { padding: 80px 0; }
  .v2-block__head { margin-bottom: 36px; }
  .v2-grid--4, .v2-grid--3, .v2-grid--2, .v2-steps, .v2-range, .v2-two { grid-template-columns: minmax(0, 1fr); }
  .v2-two { gap: 48px; }
  .v2-hero__actions .v2-btn { width: 100%; }
}
@media (prefers-reduced-motion: reduce) {
  .v2-btn, .v2-tile { transition: none; }
}
/* ---------- 読み込み時のフェードイン ----------
   html.v2-loading の間はFVの中身とハニカムを透明に。フォントが揃ったら v2-ready に切り替えてフェードイン（build_v2.py のスクリプト） */
.v2-hero__inner { opacity: 1; transition: opacity 0.6s ease, transform 0.6s ease; }
.v2-loading .v2-hero__inner { opacity: 0; transform: translateY(8px); transition: none; }
.v2-ready .v2-hero__inner { opacity: 1; transform: none; }
.reduce-motion .v2-hero__inner { transition: none; transform: none; }
/* ---------- v1 から移した仕組み（2026-09-04） ---------- */
/* 現在地の帯 */
.v2-now { position: fixed; top: 64px; left: 0; right: 0; z-index: 39; height: 40px; background: rgba(255, 255, 255, 0.94); backdrop-filter: blur(8px); -webkit-backdrop-filter: blur(8px); border-bottom: 1px solid var(--v2-line); }
.v2-now[hidden] { display: none; }
.v2-now__inner { max-width: var(--v2-wrap); height: 100%; margin: 0 auto; padding: 0 32px; display: flex; align-items: center; gap: 12px; font-size: 13px; }
.v2-now__title { color: var(--v2-ink); font-weight: 600; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.v2-now__top { margin-left: auto; flex: none; color: var(--v2-ink-2); text-decoration: none; padding: 8px 0; }
.v2-now__top:hover { color: var(--v2-blue); text-decoration: underline; }
html { scroll-behavior: smooth; }
:where(.v2) [data-now], #contact { scroll-margin-top: 120px; }
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
}
/* 進め方のステップ: 現在のステップの番号を塗りに、通過したものは薄く */
.v2-steps li::before { transition: color 0.3s ease, background 0.3s ease; border-radius: 999px; }
.v2-steps li.is-done::before { color: var(--v2-ink-3); }
.v2-steps li.is-current { box-shadow: 0 0 0 2px var(--v2-blue) inset; }
/* 横スクロールする活用例: キーボードで到達できるように */
/* 関連コンポーネント・事例 */
.v2-chips { list-style: none; margin: 0 0 8px; padding: 0; display: flex; flex-wrap: wrap; gap: 10px; }
.v2-chips a { display: inline-flex; align-items: center; min-height: 40px; padding: 8px 18px; border-radius: 999px; border: 1px solid var(--v2-line); background: #fff; color: var(--v2-ink); font-size: 14px; text-decoration: none; }
.v2-chips a:hover { border-color: var(--v2-ink); }
.v2-chips a.is-ext::after { content: "↗"; margin-left: 6px; font-size: 0.85em; color: var(--v2-ink-3); }
@media (max-width: 800px) {
  .v2-now { top: 108px; height: 36px; }
  .v2-now__inner { padding: 0 20px; }
  :where(.v2) [data-now], #contact { scroll-margin-top: 160px; }
}
/* ---------- FV直下: 下層5ページの一覧（2026-09-04、山口さん案。Meta の WHAT'S NEW の型） ---------- */
.v2-strip { padding: 56px 0 52px; border-bottom: 1px solid var(--v2-line); background: #fff; }
.v2-eyebrow--center { text-align: center; margin-bottom: 36px; }
.v2-strip__row { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 30px 56px; }   /* 5列は見出しが2〜3行に折れて詰まるため2列に（2026-09-07） */
.v2-strip__item { display: flex; gap: 16px; align-items: flex-start; color: var(--v2-ink); text-decoration: none; padding: 6px; margin: -6px; border-radius: 12px; transition: background 0.2s ease; }
.v2-strip__item:hover { background: var(--v2-gray); }
.v2-strip__thumb { flex: none; width: 72px; height: 72px; border-radius: 16px; background: #0f1218; display: flex; align-items: center; justify-content: center; overflow: hidden; }
.v2-strip__thumb svg { width: 100%; height: 100%; display: block; }
.v2-strip__text { display: flex; flex-direction: column; gap: 6px; min-width: 0; padding-top: 2px; }
.v2-strip__text strong { font-size: 16px; line-height: 1.45; font-weight: 600; color: var(--v2-ink); }
.v2-strip__text small { font-family: var(--v2-en); font-size: 11px; letter-spacing: 0.14em; color: var(--v2-ink-3); font-weight: 600; }
.v2-strip__item:hover strong { color: var(--v2-blue); }
@media (max-width: 1100px) {
  .v2-strip__row { gap: 24px 32px; }
}
@media (max-width: 800px) {
  .v2-strip { padding: 40px 0 36px; }
  .v2-strip__row { grid-template-columns: minmax(0, 1fr); gap: 16px; }
  .v2-strip__thumb { width: 60px; height: 60px; border-radius: 14px; }
}
/* ---------- デモパネル（2026-09-04、山口さん「文章の最後に動画をMetaっぽく」→ コードで動くパネル） ---------- */
.v2-demo { padding: 0 0 120px; background: #fff; }
.v2-demo__stage { border-radius: 24px; background: #0b0d14; padding: 20px 24px; overflow: hidden; }
.v2-demo__svg { width: 100%; height: auto; display: block; }
.v2-demo__svg text { font-family: var(--v2-font); font-size: 13px; fill: rgba(255,255,255,0.6); }
.v2-demo__svg .d-label--c { text-anchor: middle; }
.v2-demo__svg .d-panel { fill: rgba(255,255,255,0.03); stroke: rgba(255,255,255,0.2); stroke-width: 1; }
.v2-demo__svg .d-slot { fill: none; stroke: rgba(255,255,255,0.14); stroke-width: 1; stroke-dasharray: 2 5; transition: stroke 0.3s ease; }
.v2-demo__svg .d-slot.is-target { stroke: rgba(190,180,255,0.9); stroke-dasharray: none; animation: v2slot 0.9s ease-in-out infinite; }
.v2-demo__svg .d-slot.is-filled { stroke: rgba(255,255,255,0.05); }
.v2-demo__svg .d-cube { transform-box: fill-box; transform-origin: center; transition: opacity 0.5s ease; }
.v2-demo__svg .d-cube .d-top { fill: rgba(170,150,255,0.5); }
.v2-demo__svg .d-cube .d-left { fill: rgba(135,120,255,0.36); }
.v2-demo__svg .d-cube .d-right { fill: rgba(80,70,190,0.42); }
.v2-demo__svg .d-cube polygon { stroke: rgba(255,255,255,0.2); stroke-width: 0.6; transition: fill 0.6s ease; }
.v2-demo__svg .d-cube.d-dim { opacity: 0.25; }
.v2-demo__svg .d-cube.d-exist .d-top { fill: rgba(200,206,220,0.42); }
.v2-demo__svg .d-cube.d-exist .d-left { fill: rgba(154,166,184,0.34); }
.v2-demo__svg .d-cube.d-exist .d-right { fill: rgba(96,104,120,0.4); }
.v2-demo__svg .d-label--dim { fill: rgba(255,255,255,0.38); font-size: 12px; }
.v2-demo__svg .d-link.d-back { stroke: rgba(140,214,190,0.75); stroke-dasharray: 6 6; stroke-dashoffset: 0; opacity: 0; transition: opacity 0.6s ease; animation: v2dash 1.2s linear infinite; }
.v2-demo__svg .d-link.d-back.is-in { opacity: 1; }
@keyframes v2dash { to { stroke-dashoffset: -24; } }
.v2-demo__svg .d-cube.d-update { animation: v2update 1.3s ease-in-out; }
@keyframes v2update { 0%, 100% { transform: translateY(0) scale(1); } 40% { transform: translateY(-14px) scale(1.12); } 60% { transform: translateY(-14px) scale(1.12); } }
.v2-demo__svg .d-cube.d-dim.is-on { opacity: 1; }
.v2-demo__svg .d-cube.d-hi polygon { filter: brightness(1.6); }
.v2-demo__svg .d-cube.d-moving { filter: drop-shadow(0 10px 14px rgba(0,0,0,0.6)); }
.v2-demo__svg .d-cube.d-new .d-top { fill: rgba(140,214,190,0.75); }
.v2-demo__svg .d-cube.d-new .d-left { fill: rgba(63,174,138,0.7); }
.v2-demo__svg .d-cube.d-new .d-right { fill: rgba(40,110,88,0.75); }
.v2-demo__svg .d-link { fill: none; stroke: rgba(190,180,255,0.7); stroke-width: 1.5; stroke-dasharray: 400; stroke-dashoffset: 400; transition: stroke-dashoffset 1.1s ease; }
.v2-demo__svg .d-link.is-in { stroke-dashoffset: 0; }
.v2-demo__svg .d-fade { opacity: 0; transition: opacity 0.6s ease; }
.v2-demo__svg .d-fade.is-in { opacity: 1; }
.v2-demo__svg .d-person { opacity: 0; transition: opacity 0.6s ease; }
.v2-demo__svg .d-person.is-in { opacity: 1; }
.v2-demo__svg .d-person__c { fill: rgba(255,255,255,0.06); stroke: rgba(255,255,255,0.5); stroke-width: 1.2; }
.v2-demo__svg .d-check { fill: none; stroke: #b9c4ff; stroke-width: 2.2; stroke-linecap: round; stroke-linejoin: round; }
.v2-demo__svg .d-log { fill: rgba(255,255,255,0.22); }
.v2-demo__caps { list-style: none; margin: 22px 0 0; padding: 0; display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 12px; }
.v2-demo__caps li { display: flex; gap: 10px; align-items: baseline; padding: 12px 0 0; border-top: 2px solid var(--v2-line); color: var(--v2-ink-3); font-size: 14px; line-height: 1.5; transition: color 0.3s ease, border-color 0.3s ease; }
.v2-demo__caps li.is-on { color: var(--v2-ink); border-top-color: var(--v2-blue); font-weight: 600; }
.v2-demo__caps li.is-past { color: var(--v2-ink-2); }
.v2-demo__no { font-family: var(--v2-en); font-size: 12px; font-weight: 600; letter-spacing: 0.1em; flex: none; }
@media (max-width: 800px) {
  .v2-demo { padding-bottom: 72px; }
  .v2-demo__stage { border-radius: 16px; padding: 10px 8px; }
  .v2-demo__svg text { font-size: 18px; }
  .v2-demo__caps { grid-template-columns: minmax(0, 1fr); gap: 6px; }
  .v2-demo__caps li { padding: 8px 0; border-top: none; border-left: 2px solid var(--v2-line); padding-left: 12px; }
  .v2-demo__caps li.is-on { border-left-color: var(--v2-blue); }
}
/* ---------- 「4つで止まります」: 業務システムの断面（層）に 01〜04 の印（2026-09-04 案Dで確定） ---------- */
.v2-map__wrap { background: #fff; border-radius: 22px; padding: 24px 28px 8px; margin-bottom: 40px; }
.v2-map__wrap:focus-visible { outline: 2px solid var(--v2-blue); outline-offset: 4px; }
.v2-map { display: block; width: 100%; height: auto; }
.v2-map text { font-family: var(--v2-font); font-size: 13px; fill: var(--v2-ink-2); text-anchor: middle; }
.v2-map .m-ai .t { fill: #b9a9ff; }
.v2-map .m-ai .l { fill: #8f7bff; }
.v2-map .m-ai .r { fill: #5f4fc0; }
.v2-map polygon { stroke: rgba(255,255,255,0.7); stroke-width: 0.6; }
.v2-map .m-mark circle { fill: #c8383f; stroke: #fff; stroke-width: 2.5; }
.v2-map .m-mark text { fill: #fff; font-family: var(--v2-en); font-size: 11px; font-weight: 700; letter-spacing: 0.04em; }
.v2-stall-list { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 24px 48px; }
.v2-stall-list li { display: flex; gap: 16px; align-items: flex-start; }
.v2-stall-list__no { flex: none; width: 30px; height: 30px; border-radius: 50%; background: #c8383f; /* 白文字でAA(4.5:1) */ color: #fff; font-family: var(--v2-en); font-size: 12px; font-weight: 700; display: flex; align-items: center; justify-content: center; margin-top: 4px; }
.v2-stall-list h3 { font-size: 18px; line-height: 1.5; font-weight: 700; margin-bottom: 8px; }
.v2-stall-list p { margin: 0; color: var(--v2-ink-2); font-size: 15px; line-height: 1.8; }
@media (max-width: 800px) {
  .v2-map__wrap { padding: 12px 8px 0; overflow-x: auto; }
  .v2-map { min-width: 760px; }
  .v2-stall-list { grid-template-columns: minmax(0, 1fr); }
}
/* 案D: 層 */
.v2-map .m-layer { fill: #fff; stroke: #c9d0dc; stroke-width: 1.2; }
.v2-map .m-layer__t { font-size: 13px; fill: var(--v2-ink); font-weight: 600; }
.v2-map .m-label--l { text-anchor: start; }
.v2-map .m-label--b { font-weight: 700; fill: var(--v2-ink); }
.v2-map .m-brace { fill: none; stroke: #9aa6b8; stroke-width: 1.2; }
/* ---------- 業務別の活用例: 罫線だけの行（2026-09-04 案A）。右端に下層への行き先タグ ---------- */
.v2-rows { list-style: none; margin: 8px 0 0; padding: 0; border-top: 1px solid var(--v2-ink); }
.v2-rows li { display: grid; grid-template-columns: 220px minmax(0, 1fr) minmax(0, 1.2fr) 110px; gap: 32px; align-items: start; padding: 28px 0; border-bottom: 1px solid var(--v2-line); }
.v2-rows h3 { font-size: 18px; line-height: 1.5; font-weight: 700; margin: 0; }
.v2-rows__k { display: block; margin-bottom: 4px; color: var(--v2-ink-3); font-size: 11.5px; font-weight: 700; letter-spacing: 0.12em; }
.v2-rows p { margin: 0; color: var(--v2-ink-2); font-size: 15px; line-height: 1.8; }
.v2-rows__tag { justify-self: end; display: inline-flex; align-items: center; min-height: 32px; padding: 4px 12px; border-radius: 999px; border: 1px solid var(--v2-line); color: var(--v2-ink); font-size: 12.5px; font-weight: 700; text-decoration: none; white-space: nowrap; }
.v2-rows__tag::after { content: " →"; color: var(--v2-blue); }
.v2-rows__tag:hover { border-color: var(--v2-ink); }
.v2-block--rows .v2-body--center { margin-top: 36px; }
@media (max-width: 1100px) {
  .v2-rows li { grid-template-columns: 180px minmax(0, 1fr); gap: 16px 28px; }
  .v2-rows li > div:nth-of-type(2) { grid-column: 2; }
  .v2-rows__tag { grid-column: 2; justify-self: start; }
}
@media (max-width: 800px) {
  .v2-rows li { grid-template-columns: minmax(0, 1fr); gap: 12px; padding: 22px 0; }
  .v2-rows li > div:nth-of-type(2), .v2-rows__tag { grid-column: 1; }
}
/* ---------- 支援する範囲（黒）: 8項目は番号＋1行の2列リスト、5ページは軽い5列（2026-09-04 案A） ---------- */
.v2-range--list { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0 56px; max-width: 980px; margin: 0 auto; }
.v2-range--list li { padding: 16px 0 16px 56px; border-radius: 0; background: none; border: none; border-bottom: 1px solid rgba(255,255,255,0.12); color: rgba(255,255,255,0.86); font-size: 15.5px; line-height: 1.75; }
.v2-range--list li::before { top: 17px; left: 0; font-size: 15px; color: rgba(255,255,255,0.45); letter-spacing: 0.08em; }
.v2-range--list li:nth-last-child(-n+2) { border-bottom: none; }
.v2-svc-row { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 0 28px; margin-top: 40px; border-top: 1px solid rgba(255,255,255,0.14); }
.v2-svc { display: flex; flex-direction: column; gap: 10px; padding: 26px 0 22px; color: #fff; text-decoration: none; border-top: 2px solid transparent; margin-top: -1px; transition: border-color 0.2s ease; }
.v2-svc:hover { border-top-color: #fff; }
.v2-svc strong { font-size: 16px; line-height: 1.45; font-weight: 600; }
.v2-svc p { margin: 0; color: rgba(255,255,255,0.62); font-size: 13.5px; line-height: 1.75; flex: 1; }
.v2-svc__more { color: rgba(255,255,255,0.85); font-size: 13px; font-weight: 700; }
.v2-svc:hover .v2-svc__more { color: #fff; }
@media (max-width: 1100px) {
  .v2-svc-row { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .v2-range--list { grid-template-columns: minmax(0, 1fr); }
  .v2-range--list li:nth-last-child(-n+2) { border-bottom: 1px solid rgba(255,255,255,0.12); }
  .v2-range--list li:last-child { border-bottom: none; }
}
@media (max-width: 800px) {
  .v2-svc-row { grid-template-columns: minmax(0, 1fr); gap: 0; }
  .v2-svc { padding: 18px 0; border-top: none; border-bottom: 1px solid rgba(255,255,255,0.12); }
}
/* ---------- 支援する範囲の地色: 真っ黒をやめ、FVと同じ濃紺＋上に紫の光（2026-09-04 案A） ---------- */
.v2-block--dark { position: relative; overflow: hidden; background: #0b0d14; }
.v2-block--dark::before { content: ""; position: absolute; left: 50%; top: -220px; width: 900px; height: 520px; margin-left: -450px; border-radius: 50%; background: var(--c-glow, rgba(110, 90, 255, 0.28)); -webkit-mask: radial-gradient(circle, #000, transparent 62%); mask: radial-gradient(circle, #000, transparent 62%); filter: blur(30px); pointer-events: none; transition: background-color 1.2s ease; }
/* FVの色（--c-glow）に追従 */
.v2-block--dark > .v2-wrap { position: relative; }
/* ---------- 進め方: カードをやめ、1本の線でつないだタイムライン（2026-09-04） ---------- */
.v2-steps { position: relative; gap: 24px; padding-top: 22px; }
.v2-steps::before { content: ""; position: absolute; left: 0; right: 0; top: 40px; height: 1px; background: var(--v2-line); }
.v2-steps li { position: relative; padding: 0 8px 0 0; background: none; border-radius: 0; }
.v2-steps li::before { position: relative; z-index: 1; width: 36px; height: 36px; margin-bottom: 18px; border-radius: 50%; background: #fff; border: 1px solid var(--v2-line); color: var(--v2-ink-2); font-size: 12px; display: flex; align-items: center; justify-content: center; letter-spacing: 0.06em; transition: background 0.3s ease, color 0.3s ease, border-color 0.3s ease, box-shadow 0.3s ease; }
.v2-steps li.is-done::before { color: var(--v2-ink-3); border-color: var(--v2-line); }
.v2-steps li.is-current { box-shadow: none; }
.v2-steps li.is-current::before { background: var(--v2-blue); border-color: var(--v2-blue); color: #fff; box-shadow: 0 0 0 4px rgba(28, 79, 216, 0.14); }
.v2-steps li.is-current .v2-step__head { color: var(--v2-blue-2); }
.v2-step__head { font-size: 16.5px; }
.v2-step__desc { font-size: 14px; }
@media (max-width: 1100px) {
  .v2-steps::before { display: none; }
  .v2-steps li { padding-left: 52px; }
  .v2-steps li::before { position: absolute; left: 0; top: 0; margin: 0; }
}
/* ---------- 入口: 灰地に白カード、番号＋ページ色のサムネ、入口1だけ塗りボタン ---------- */
.v2-block--gray .v2-entry { background: #fff; }
.v2-entry__top { display: flex; align-items: center; justify-content: space-between; margin-bottom: 16px; }
.v2-entry__top .v2-entry__no { margin-bottom: 0; }
.v2-entry__thumb { width: 56px; height: 56px; border-radius: 14px; background: #0f1218; display: block; overflow: hidden; }
.v2-entry__thumb svg { width: 100%; height: 100%; display: block; }
.v2-entry .v2-btn--primary { min-height: 46px; padding: 12px 22px; font-size: 14.5px; }
/* ---------- 仕上げ（2026-09-04）: CTAも濃紺＋光に、目安・初回相談の詰め ---------- */
.v2-cta { position: relative; overflow: hidden; background: #0b0d14; }
.v2-cta::before { content: ""; position: absolute; left: 50%; top: -260px; width: 900px; height: 560px; margin-left: -450px; border-radius: 50%; background: var(--c-glow, rgba(110, 90, 255, 0.28)); -webkit-mask: radial-gradient(circle, #000, transparent 62%); mask: radial-gradient(circle, #000, transparent 62%); filter: blur(30px); pointer-events: none; transition: background-color 1.2s ease; }
.v2-cta > .v2-wrap { position: relative; }
.v2-two { gap: 48px 80px; align-items: start; }
.v2-two > div:first-child { padding: 28px 28px 20px; border-radius: 18px; background: var(--v2-gray); }
.v2-two > div:first-child .v2-eyebrow { margin-bottom: 12px; }
.v2-two > div:first-child .v2-h2--small { font-size: 24px; }
.v2-footer { padding: 40px 0 36px; }
/* ---------- レビュー反映（2026-09-04） ---------- */
/* 強み: ごく薄い紫へのグラデ帯、番号つき 2×2 */
.v2-block--tint { background: linear-gradient(180deg, #fff 0%, #f4f3fb 100%); }
.v2-grid--features { gap: 40px 56px; }
.v2-feature--no { position: relative; padding-top: 6px; }
.v2-feature--no h3 { font-size: 24px; line-height: 1.4; margin-bottom: 14px; padding-top: 0; border-top: none; }
.v2-feature__no { display: block; margin-bottom: 14px; color: #b9b0ff; font-family: var(--v2-en); font-size: 48px; font-weight: 500; line-height: 1; letter-spacing: -0.02em; }
/* 進め方＋入口を1つの灰色の帯に */
.v2-block--joined-top { padding-bottom: 72px; }
.v2-block--joined-bottom { padding-top: 72px; }
.v2-wrap--divider { border-top: 1px solid #dfe3ea; padding-top: 72px; }
/* 開幕: 小さなリード文は本文の先頭（大きな3行の直後） */
.v2-body .v2-lead-sub { margin: 0 0 1em; color: var(--v2-ink-2); font-size: 16.5px; }
/* FV直下の一覧: 英字ラベルを1行に */
.v2-strip__text small { letter-spacing: 0.08em; font-size: 10.5px; white-space: nowrap; }
/* 活用例: PCでは表の見出しを上に1回、行のラベルは消す */
.v2-rows__head { display: grid; grid-template-columns: 220px minmax(0, 1fr) minmax(0, 1.2fr) 110px; gap: 32px; padding: 0 0 10px; border-bottom: none; color: var(--v2-ink-3); font-size: 11.5px; font-weight: 700; letter-spacing: 0.12em; }
.v2-rows li:not(.v2-rows__head) .v2-rows__k { display: none; }
@media (max-width: 1100px) {
  .v2-rows li.v2-rows__head { display: none; }   /* .v2-rows li の display:grid に勝たせる */
  .v2-rows li:not(.v2-rows__head) .v2-rows__k { display: block; }
}
@media (max-width: 800px) {
  .v2-feature__no { font-size: 36px; }
  .v2-feature--no h3 { font-size: 20px; }
  .v2-block--joined-top { padding-bottom: 48px; }
  .v2-block--joined-bottom { padding-top: 48px; }
  .v2-wrap--divider { padding-top: 48px; }
  .v2-strip__text small { white-space: normal; }
}
/* 進め方: 点灯ループ。番号の切り替えは少しゆっくり、見出しの色も追従 */
.v2-steps li::before { transition-duration: 0.45s; }
.v2-steps li .v2-step__head { transition: color 0.45s ease; }
.v2-steps li.is-done::before { background: #eef1f6; }
/* デモの工程名はタブ（クリックでその工程から再生） */
.v2-demo__caps li { display: block; padding: 0; }
.v2-demo__tab { display: flex; gap: 10px; align-items: baseline; width: 100%; margin: 0; padding: 12px 0 0; border: 0; border-top: 2px solid var(--v2-line); background: none; color: inherit; font: inherit; font-size: 14px; line-height: 1.5; text-align: left; cursor: pointer; transition: color 0.3s ease, border-color 0.3s ease; }
.v2-demo__tab:hover { color: var(--v2-ink); border-top-color: #b9c3d2; }
.v2-demo__tab:focus-visible { outline: 2px solid var(--v2-blue); outline-offset: 4px; border-radius: 4px; }
.v2-demo__caps li.is-on .v2-demo__tab { color: var(--v2-ink); border-top-color: var(--v2-blue); font-weight: 600; }
@media (max-width: 800px) {
  .v2-demo__caps li { padding: 0; border-left: none; }
  .v2-demo__tab { padding: 8px 0 8px 12px; border-top: none; border-left: 2px solid var(--v2-line); }
  .v2-demo__caps li.is-on .v2-demo__tab { border-left-color: var(--v2-blue); }
}
/* デモのタブ: 自動再生のメーター（上の線が左から右へ満ちる。工程の長さ = --dur） */
.v2-demo__caps li { position: relative; }
.v2-demo__caps li::after { content: ""; position: absolute; left: 0; top: 0; width: 100%; height: 2px; background: var(--v2-blue); transform: scaleX(0); transform-origin: left center; pointer-events: none; }
.v2-demo__caps li.is-on .v2-demo__tab { border-top-color: var(--v2-line); }
.v2-demo__caps li.is-on::after { animation: v2-meter var(--dur, 3000ms) linear forwards; }
.v2-demo__caps li.is-past::after { transform: scaleX(1); opacity: 0.35; }
@keyframes v2-meter { from { transform: scaleX(0); } to { transform: scaleX(1); } }
@media (max-width: 800px) {
  .v2-demo__caps li::after { width: 2px; height: 100%; transform: scaleY(0); transform-origin: center top; }
  .v2-demo__caps li.is-on .v2-demo__tab { border-left-color: var(--v2-line); }
  .v2-demo__caps li.is-past::after { transform: scaleY(1); }
 @keyframes v2-meter { from { transform: scaleY(0); } to { transform: scaleY(1); } }
}
.reduce-motion .v2-demo__caps li.is-on::after { animation: none; transform: scaleX(1); }
/* 関連: コンパクト版（見出し＋チップ＋テキストリンク1本） */
#related .v2-h2--small { margin-bottom: 18px; }
#related .v2-chips { margin-bottom: 14px; }
.v2-rel__more { margin: 0; font-size: 14.5px; }
.v2-rel__more a { color: var(--v2-ink); font-weight: 600; text-decoration: none; border-bottom: 1px solid var(--v2-ink); padding-bottom: 1px; }
.v2-rel__more a:hover { color: var(--v2-blue-2); border-color: var(--v2-blue-2); }
.v2-rel__more a.is-ext::after { content: "↗"; margin-left: 4px; font-size: 0.85em; }
/* 初回のご相談の末尾にボタン */
.v2-prep__cta { margin: 24px 0 0; }
/* FAQ: 灰色の帯に白いカード（前後の白と切り替える） */
#faq .v2-faq details { background: #fff; border: 1px solid var(--v2-line); border-radius: 14px; margin-bottom: 10px; }
#faq .v2-faq details:last-child { border-bottom: 1px solid var(--v2-line); margin-bottom: 0; }
#faq .v2-faq summary { padding: 20px 52px 20px 22px; }
#faq .v2-faq summary::after { right: 22px; top: 28px; }
#faq .v2-faq details[open] summary::after { top: 34px; }
#faq .v2-faq__a { padding: 0 22px 22px 52px; }
#related { border-top: none; }
/* ============================================================
   下層ページ（v2-sub）: ハブと同じ器に、下層の部品を足す
   ============================================================ */
/* FV: 左に文、右にオブジェクト */
.v2-hero--sub { text-align: left; }
.v2-hero__inner--sub { display: grid; grid-template-columns: minmax(0, 1.25fr) minmax(0, 1fr); gap: 48px; align-items: center; max-width: 1180px; margin: 0 auto; padding: 96px 24px 88px; }
.v2-hero--sub h1 { font-size: clamp(32px, 4.2vw, 54px); margin-bottom: 26px; }
.v2-hero__seg { display: inline; }
@media (min-width: 801px) {
  .v2-hero__seg { display: block; }
}
.v2-hero__lead p { color: rgba(255,255,255,0.72); font-size: 16.5px; line-height: 1.9; margin: 0 0 1em; max-width: 560px; }
.v2-hero--sub .v2-hero__actions { justify-content: flex-start; margin-top: 30px; }
.v2-crumb { display: flex; flex-wrap: wrap; gap: 10px; margin-bottom: 26px; color: rgba(255,255,255,0.5); font-size: 12.5px; }
.v2-crumb a { color: rgba(255,255,255,0.7); text-decoration: none; }
.v2-crumb a:hover { color: #fff; text-decoration: underline; }
.v2-crumb [aria-current] { color: rgba(255,255,255,0.85); }
.v2-eyebrow--page { color: var(--c-page); }
.v2-hero__figure { display: flex; justify-content: center; }
.v2-hero__obj { width: min(100%, 400px); height: auto; }   /* drop-shadow は毎フレーム再描画でカクつくため外した（光は ::after で代替） */
/* 下層FVの立方体（fv_cubes.js）: 空き枠の点線、点滅用の白い面 */
.v2-hero__slot { fill: none; stroke: rgba(255,255,255,0.22); stroke-width: 1; stroke-dasharray: 3 4; transition: opacity 0.4s; }
.v2-hero__slot.is-target { stroke: var(--c-page-light, rgba(255,255,255,0.9)); animation: v2-slot-blink 0.5s ease-in-out infinite; }
@keyframes v2-slot-blink { 0%, 100% { stroke-opacity: 1; } 50% { stroke-opacity: 0.25; } }
.v2-hero__blink { opacity: 0; }
.v2-hero--sub::after { left: auto; right: 12%; top: 50%; margin: -150px 0 0; }
@media (max-width: 1100px) {
  .v2-hero__inner--sub { grid-template-columns: minmax(0, 1fr); padding: 72px 24px 64px; }
  .v2-hero__figure { display: none; }
  .v2-hero--sub::after { left: 50%; right: auto; margin-left: -150px; top: 40px; }
}
/* 見出しまわり */
.v2-block__head--left { max-width: none; margin: 0 0 32px; text-align: left; }
.v2-block__head--left h2 { font-size: clamp(24px, 2.6vw, 32px); }
.v2-block__head > p:not(.v2-eyebrow) { color: var(--v2-ink-2); font-size: 16.5px; margin: 18px auto 0; }
.v2-block--intro .v2-body, .v2-block--plain .v2-body { max-width: 760px; margin: 0 auto; }
.v2-block--intro .v2-block__head { margin-bottom: 40px; }
.v2-lead-strong { font-size: 20px; line-height: 1.7; font-weight: 700; color: var(--v2-ink); margin: 1.6em 0; }
.v2-lead-strong strong { font-weight: 700; }
.v2-body ul.v2-checks { margin: 0 0 1.4em; }
.v2-sep { border: 0; border-top: 1px solid var(--v2-line); margin: 32px 0; }
.v2-block--plain { padding: 88px 0; }
/* できること: 番号つきカード */
/* 白い箱（帯の中の本文） */
.v2-box { background: #fff; border: 1px solid var(--v2-line); border-radius: 18px; padding: 36px 40px; margin-top: 32px; }
.v2-box .v2-body { max-width: 860px; margin: 0 auto; }
.v2-box .v2-body p { font-size: 16px; }
.v2-box--tint { background: linear-gradient(180deg, #fff 0%, #f4f3fb 100%); }
.v2-box--white { padding: 12px 12px 4px; }
.v2-body--light { max-width: 860px; margin: 40px auto 0; }
.v2-body--light p { color: rgba(255,255,255,0.78); }
.v2-body--light a { color: #fff; }

/* 解説図（v1の図をそのまま使う） */
.v2-fig { --ai-accent: #5b63ad; --ai-accent-soft: rgba(91, 99, 173, 0.08); --ai-accent-border: rgba(91, 99, 173, 0.35); --ai-page-soft: #f5f6fa; --ai-ink-strong: #1a1d23; --ai-ink-mute: #626d7a; --ai-line: #e1e4ea; --ai-line-soft: #eceff5; --ai-font: var(--v2-font);
  margin: 32px 0 0; padding: 32px 32px 22px; border: 1px solid var(--v2-line); border-radius: 18px; background: #fff; }
.v2-fig svg { display: block; width: 100%; height: auto; overflow: visible; }
.v2-fig figcaption { margin-top: 18px; padding-top: 14px; border-top: 1px solid var(--ai-line-soft); color: var(--ai-ink-mute); font-size: 12.5px; letter-spacing: 0.02em; }
.v2-fig:focus-visible { outline: 2px solid var(--v2-blue); outline-offset: 4px; }
.v2-fig svg text { fill: var(--ai-ink-strong); font-family: var(--ai-font); font-size: 13.5px; font-weight: 700; }
.v2-fig svg .fig-sub text, .v2-fig svg text.sub { fill: var(--ai-ink-mute); font-size: 12px; font-weight: 400; }
.v2-fig svg .fig-note text { fill: var(--ai-ink-mute); font-size: 12.5px; font-weight: 400; }
.v2-fig svg .fig-note text.muted, .v2-fig svg text.muted { fill: var(--ai-ink-mute); font-size: 11.5px; font-weight: 400; }
.v2-fig svg .fig-num text { fill: var(--ai-accent); font-size: 11.5px; font-weight: 700; letter-spacing: 0.12em; }
.v2-fig svg .fig-entry-label text { fill: var(--ai-accent); font-size: 12.5px; font-weight: 700; }
.v2-fig svg .fig-gap-mark text { fill: var(--ai-accent); font-size: 20px; font-weight: 700; }
.v2-fig svg .fig-stage rect { fill: #fff; stroke: #dfe3ec; stroke-width: 1; }
.v2-fig svg .fig-accent-box rect { fill: var(--ai-accent-soft); stroke: var(--ai-accent-border); stroke-width: 1; }
.v2-fig svg .fig-track rect { fill: var(--ai-page-soft); stroke: none; }
.v2-fig svg .fig-band rect { fill: var(--ai-accent-soft); stroke: var(--ai-accent-border); stroke-width: 1; stroke-dasharray: 3 4; }
.v2-fig svg .fig-callout rect { fill: var(--ai-page-soft); stroke: var(--ai-line-soft); }
.v2-fig svg .fig-gap rect { fill: none; stroke: var(--ai-accent-border); stroke-width: 1; stroke-dasharray: 4 5; }
.v2-fig svg .fig-arrow path { fill: none; stroke: #9aa1b4; stroke-width: 1.5; stroke-linecap: round; stroke-linejoin: round; }
.v2-fig svg .fig-entry path { fill: none; stroke: var(--ai-accent); stroke-width: 1.5; stroke-linecap: round; stroke-linejoin: round; }
.v2-fig svg .fig-brace path, .v2-fig svg .fig-band-tick path { fill: none; stroke: #cbd2e0; stroke-width: 1; stroke-dasharray: 3 4; }
.v2-fig svg .fig-ramp path { fill: none; stroke: var(--ai-line); stroke-width: 1; }
.v2-fig svg .fig-ramp path:last-child { stroke: var(--ai-accent-border); stroke-width: 1.5; }
.v2-fig svg .fig-win rect { fill: #fff; stroke: #dfe3ec; stroke-width: 1; }
.v2-fig svg .fig-winbar rect { fill: var(--ai-page-soft); stroke: none; }
.v2-fig svg .fig-windot circle { fill: #cbd2e0; }
.v2-fig svg .fig-bubble rect { fill: var(--ai-accent-soft); stroke: var(--ai-accent-border); stroke-width: 1; }
.v2-fig svg .fig-cite rect { fill: var(--ai-page-soft); stroke: var(--ai-line-soft); stroke-width: 1; }
.v2-fig svg .fig-btn rect { fill: var(--ai-accent); stroke: none; }
.v2-fig svg .fig-btn text { fill: #fff; font-size: 12.5px; font-weight: 700; }
.v2-fig svg .fig-body text { font-weight: 400; }
.v2-fig svg .fig-mark circle { fill: var(--ai-accent); }
.v2-fig svg .fig-mark-open circle { fill: #fff; stroke: #cbd2e0; stroke-width: 1.5; }
.v2-fig svg .fig-photo rect { fill: #eef0f5; stroke: none; }
.v2-fig svg .fig-bar rect { fill: var(--ai-accent); }
.v2-fig svg .fig-baseline path { fill: none; stroke: #dfe3ec; stroke-width: 1; }
.v2-fig svg .fig-stat text { font-size: 22px; font-weight: 700; fill: var(--ai-ink-strong); }
.v2-fig svg .fig-lead path { fill: none; stroke: #cbd2e0; stroke-width: 1; stroke-dasharray: 3 4; }
.v2-box--white .v2-fig { margin: 0; border: none; }
/* 活用例: 業務 ＋ いま／変わること／AIが担う・人が決める */
.v2-rows--uc li, .v2-rows--uc .v2-rows__head { grid-template-columns: 200px minmax(0, 1fr) minmax(0, 1fr) minmax(0, 1.1fr); }
.v2-rows--uc .v2-rows__c { color: var(--v2-ink-2); font-size: 14.5px; line-height: 1.8; }
.v2-rows--uc .v2-rows__t { font-size: 17px; }
.v2-rows__pair { display: block; }
.v2-rows__pair + .v2-rows__pair { margin-top: 6px; }
.v2-rows__pair b { font-weight: 700; color: var(--v2-ink); }
@media (max-width: 1100px) {
  .v2-rows--uc li { grid-template-columns: minmax(0, 1fr); }
}
/* 表 */
.v2-table { overflow-x: auto; margin: 0 0 1.6em; border: 1px solid var(--v2-line); border-radius: 12px; }
.v2-table table { border-collapse: collapse; width: 100%; min-width: 560px; font-size: 14.5px; }
.v2-table th, .v2-table td { padding: 12px 16px; border-bottom: 1px solid var(--v2-line); text-align: left; vertical-align: top; }
.v2-table th { background: var(--v2-gray); font-weight: 700; white-space: nowrap; }
.v2-table tr:last-child td { border-bottom: none; }
/* 関連ページのカード */
.v2-relpages { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; margin-bottom: 28px; }
.v2-relpage { display: flex; flex-direction: column; gap: 6px; position: relative; padding: 18px 44px 18px 20px; border: 1px solid var(--v2-line); border-radius: 14px; background: #fff; color: var(--v2-ink); text-decoration: none; transition: border-color 0.2s ease; }
.v2-relpage:hover { border-color: var(--v2-ink); }
.v2-relpage strong { font-size: 15.5px; font-weight: 700; line-height: 1.5; }
.v2-relpage span { color: var(--v2-ink-2); font-size: 13.5px; line-height: 1.7; }
.v2-relpage__more { position: absolute; right: 18px; top: 18px; color: var(--v2-ink-3) !important; font-size: 15px !important; }
.v2-rel__label { margin: 0 0 10px; color: var(--v2-ink-3); font-size: 12.5px; font-weight: 700; letter-spacing: 0.1em; }
#related .v2-rel__more { margin-top: 14px; }
@media (max-width: 800px) {
  .v2-relpages { grid-template-columns: minmax(0, 1fr); }
  .v2-hero__lead p { font-size: 15.5px; }
  .v2-box { padding: 24px 20px; }
  .v2-fig { padding: 20px 16px 14px; }
  .v2-lead-strong { font-size: 18px; }
}
.v2-sub .v2-block__head { max-width: 900px; }
.v2-sub .v2-block__head h2 { text-wrap: balance; }
.v2-block--dark .v2-block__head > p:not(.v2-eyebrow) { color: rgba(255,255,255,0.72); }
.v2-block--dark .v2-block__head > p a { color: #fff; }
@media (min-width: 801px) {
  .v2-sub .v2-block__head h2 { word-break: keep-all; overflow-wrap: anywhere; }
}
@media (min-width: 801px) {
  .v2-sub .v2-cta h2 { word-break: keep-all; overflow-wrap: anywhere; }
}
#related .v2-rel__more a + a { margin-left: 18px; }
.v2-sub .v2-block__head { max-width: 980px; }
.v2-fig + .v2-grid, .v2-fig + .v2-box { margin-top: 40px; }
.v2-steps--3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.v2-steps--4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.v2-steps--6 { grid-template-columns: repeat(6, minmax(0, 1fr)); }
.v2-sub .v2-note { max-width: 860px; margin: 36px auto 0; text-align: center; color: var(--v2-ink-2); font-size: 15.5px; }
.v2-block--gray.v2-block--plain .v2-body ul.v2-checks li { border-bottom-color: #dfe3ea; }
/* 濃紺の中の番号つき2列 */
.v2-block--dark .v2-feature--no h3 { color: #fff; }
.v2-block--dark .v2-feature__no { color: rgba(255,255,255,0.35); }
.v2-block--dark .v2-feature p, .v2-block--dark .v2-feature li { color: rgba(255,255,255,0.78); }
.v2-block--dark .v2-feature a { color: #fff; }
.v2-block--dark .v2-feature strong { color: #fff; }
.v2-block--dark .v2-feature .v2-checks li { border-bottom-color: rgba(255,255,255,0.14); }
.v2-block--dark .v2-feature .v2-checks li::before { border-color: rgba(255,255,255,0.7); }
.v2-block--dark .v2-grid--features { margin-top: 8px; }
@media (max-width: 1100px) {
  .v2-steps--3, .v2-steps--4, .v2-steps--6 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 800px) {
  .v2-steps--3, .v2-steps--4, .v2-steps--6 { grid-template-columns: minmax(0, 1fr); }
}
/* 下層FVの高さと位置を5本で揃える: H1は3行ぶん、リードは6行ぶんの高さを確保し、ボタンは常に同じ位置に */
@media (min-width: 1101px) {
  .v2-hero__inner--sub { align-items: start; padding-top: 88px; padding-bottom: 84px; }
  .v2-hero--sub h1 { min-height: calc(3 * 1.18em); margin-bottom: 22px; }
  .v2-hero__lead { min-height: 196px; }
  .v2-hero--sub .v2-hero__actions { margin-top: 18px; flex-wrap: nowrap; }
  .v2-hero--sub .v2-btn { white-space: nowrap; }
  .v2-hero__figure { align-self: center; margin-top: 60px; }
}
/* スマホ・タブレット: FVのオブジェクトをハブと同じく上に小さく置き、その下に文 */
@media (max-width: 1100px) {
  .v2-hero__inner--sub { padding-top: 40px; gap: 8px; }
  .v2-hero__figure { display: flex; order: -1; justify-content: center; margin-bottom: 6px; }
  .v2-hero__obj { width: 200px; filter: drop-shadow(0 12px 24px rgba(0,0,0,0.35)); }
  .v2-hero--sub .v2-hero__text { text-align: center; }
  .v2-crumb { justify-content: center; margin-bottom: 18px; }
  .v2-hero__lead p { margin-left: auto; margin-right: auto; }
  .v2-hero--sub .v2-hero__actions { justify-content: center; }
  .v2-hero--sub::after { top: 20px; }
}
@media (max-width: 800px) {
  .v2-hero__obj { width: 210px; }
  .v2-hero__inner--sub { padding-top: 28px; }
}
/* ---------- 下層: ページ内ナビ ---------- */
/* FV直下: このページの内容（番号＋章名を1行に） */
.v2-toc { background: #fff; border-bottom: 1px solid var(--v2-line); padding: 40px 0 36px; }
.v2-toc .v2-eyebrow--center { margin-bottom: 20px; }
.v2-toc__row { display: flex; flex-wrap: wrap; justify-content: center; gap: 8px 10px; }
.v2-toc__item { display: inline-flex; align-items: center; gap: 10px; padding: 10px 16px 10px 12px; border: 1px solid var(--v2-line); border-radius: 999px; color: var(--v2-ink); text-decoration: none; font-size: 14px; font-weight: 600; line-height: 1.3; transition: border-color 0.2s ease, background 0.2s ease; }
.v2-toc__item:hover { border-color: var(--v2-ink); background: var(--v2-gray); }
.v2-toc__no { font-family: var(--v2-en); font-size: 11.5px; font-weight: 600; letter-spacing: 0.1em; color: var(--c-page-dark, var(--v2-ink-3)); }
/* 現在地の帯: 全章を並べて、いまの章を強調 */
@media (max-width: 800px) {
  .v2-toc { padding: 28px 0 26px; }
  .v2-toc__row { justify-content: flex-start; flex-wrap: nowrap; overflow-x: auto; padding-bottom: 6px; margin: 0 -20px; padding-left: 20px; padding-right: 20px; scrollbar-width: none; }
  .v2-toc__row::-webkit-scrollbar { display: none; }
  .v2-toc__item { flex: none; padding: 8px 14px 8px 10px; font-size: 13px; }
  .v2-now__top { font-size: 12px; }
}
/* ---------- 下層「はじめに」の開幕型 ---------- */
.v2-block--opening .v2-block__head { margin-bottom: 36px; }
.v2-block--opening .v2-block__head h2 { font-size: clamp(22px, 2.2vw, 28px); color: var(--v2-ink-2); font-weight: 600; }
.v2-block--opening .v2-statement { font-size: clamp(24px, 2.6vw, 34px); line-height: 1.55; font-weight: 600; margin: 0 0 32px; text-wrap: balance; }
.v2-points { list-style: none; margin: 0 0 36px; padding: 0; display: grid; gap: 0; border-top: 1px solid var(--v2-line); }
.v2-points li { display: grid; grid-template-columns: 56px minmax(0, 1fr); align-items: baseline; gap: 12px; padding: 16px 0; border-bottom: 1px solid var(--v2-line); font-size: 17.5px; font-weight: 600; line-height: 1.6; color: var(--v2-ink); }
.v2-points__no { font-family: var(--v2-en); font-size: 22px; font-weight: 500; color: var(--c-page-dark, var(--v2-ink-3)); letter-spacing: -0.01em; }
.v2-points--cards li { align-items: start; font-weight: 400; font-size: 15.5px; color: var(--v2-ink-2); }
.v2-points--cards li strong { display: block; color: var(--v2-ink); font-size: 17.5px; font-weight: 600; margin-bottom: 6px; }
.v2-block--opening .v2-body p { font-size: 16px; }
.v2-block--opening .v2-lead-strong { font-size: 18px; }
@media (max-width: 800px) {
  .v2-points li { grid-template-columns: 40px minmax(0, 1fr); font-size: 16px; padding: 14px 0; }
  .v2-points__no { font-size: 18px; }
}
.v2-block--opening .v2-wrap--narrow { max-width: 900px; }
.v2-block--opening .v2-statement { font-size: clamp(24px, 2.4vw, 32px); }
/* ---------- 「見出し。本文」の段落を、左に見出し・右に本文の行に ---------- */
.v2-def { display: grid; grid-template-columns: 200px minmax(0, 1fr); gap: 8px 32px; padding: 20px 0; border-top: 1px solid var(--v2-line); }
.v2-def:last-child, .v2-defs .v2-def:last-child { border-bottom: 1px solid var(--v2-line); }
.v2-def + .v2-def { border-top: none; }
.v2-def strong { font-size: 16.5px; font-weight: 700; line-height: 1.6; color: var(--v2-ink); }
.v2-def p, .v2-body .v2-def p { margin: 0; font-size: 15.5px; line-height: 1.85; color: var(--v2-ink-2); }
.v2-def p strong { color: var(--v2-ink); }
.v2-defs { margin: 8px 0 1.4em; }
.v2-body > .v2-def { margin: 8px 0 1.4em; }
.v2-body > .v2-def + p, .v2-defs + p { margin-top: 1.2em; }
/* 狭い列（番号つき2列の中）では縦積み */
.v2-feature .v2-def { grid-template-columns: minmax(0, 1fr); gap: 4px; padding: 14px 0; }
.v2-feature .v2-def strong { font-size: 15.5px; }
.v2-feature .v2-def p { font-size: 15px; }
@media (max-width: 800px) {
  .v2-def { grid-template-columns: minmax(0, 1fr); gap: 6px; padding: 16px 0; }
}
/* 濃紺の帯の補足: 段落ごとの薄いカードを2列に */
.v2-body--notes { max-width: none; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px; margin-top: 40px; }
.v2-body--notes p { margin: 0; padding: 22px 24px; border-radius: 14px; background: rgba(255,255,255,0.06); border: 1px solid rgba(255,255,255,0.1); font-size: 15px; line-height: 1.85; color: rgba(255,255,255,0.8); }
.v2-body--notes p strong { color: #fff; }
@media (max-width: 800px) {
  .v2-body--notes { grid-template-columns: minmax(0, 1fr); }
}
/* ---------- 解説図を濃紺のパネルに（本文に埋もれないように）。強調色はページの色 ---------- */
.v2-fig { --ai-accent: var(--c-page, #5b63ad); --ai-accent-soft: rgba(255,255,255,0.05); --ai-accent-border: var(--c-page, #5b63ad); --ai-page-soft: rgba(255,255,255,0.06); --ai-ink-strong: rgba(255,255,255,0.94); --ai-ink-mute: rgba(255,255,255,0.6); --ai-line: rgba(255,255,255,0.28); --ai-line-soft: rgba(255,255,255,0.14);
  background: #0b0d14; border: none; border-radius: 24px; padding: 40px 44px 26px; position: relative; overflow: hidden; }
.v2-fig::before { content: ""; position: absolute; inset: 0; background: var(--c-glow, rgba(110,90,255,0.3)); -webkit-mask: radial-gradient(60% 60% at 50% 0%, #000, transparent 70%); mask: radial-gradient(60% 60% at 50% 0%, #000, transparent 70%); opacity: 0.55; pointer-events: none; }
.v2-fig svg { position: relative; }
.v2-fig figcaption { position: relative; border-top-color: rgba(255,255,255,0.14); color: rgba(255,255,255,0.6); }
.v2-fig svg .fig-stage rect, .v2-fig svg .fig-win rect { fill: rgba(255,255,255,0.05); stroke: rgba(255,255,255,0.3); }
.v2-fig svg .fig-accent-box rect, .v2-fig svg .fig-band rect, .v2-fig svg .fig-bubble rect { fill: rgba(255,255,255,0.1); stroke: var(--c-page, #5b63ad); }
.v2-fig svg .fig-track rect, .v2-fig svg .fig-callout rect, .v2-fig svg .fig-cite rect, .v2-fig svg .fig-winbar rect, .v2-fig svg .fig-photo rect { fill: rgba(255,255,255,0.07); stroke: none; }
.v2-fig svg .fig-gap rect { stroke: var(--c-page, #5b63ad); }
.v2-fig svg .fig-arrow path { stroke: rgba(255,255,255,0.5); }
.v2-fig svg .fig-brace path, .v2-fig svg .fig-band-tick path, .v2-fig svg .fig-lead path { stroke: rgba(255,255,255,0.35); }
.v2-fig svg .fig-ramp path { stroke: rgba(255,255,255,0.3); }
.v2-fig svg .fig-ramp path:last-child, .v2-fig svg .fig-entry path { stroke: var(--c-page, #5b63ad); }
.v2-fig svg .fig-baseline path { stroke: rgba(255,255,255,0.25); }
.v2-fig svg .fig-windot circle { fill: rgba(255,255,255,0.35); }
.v2-fig svg .fig-mark circle, .v2-fig svg .fig-bar rect, .v2-fig svg .fig-btn rect { fill: var(--c-page, #5b63ad); }
.v2-fig svg .fig-mark-open circle { fill: transparent; stroke: rgba(255,255,255,0.5); }
.v2-fig svg .fig-btn text { fill: #0b0d14; }
.v2-fig svg .fig-num text, .v2-fig svg .fig-entry-label text, .v2-fig svg .fig-gap-mark text { fill: var(--c-page-light, #b9b0ff); }
.v2-box--white { background: #fff; padding: 0; border: none; }
.v2-box--white .v2-fig { border-radius: 24px; }
.v2-block--dark .v2-box--white { background: transparent; }
.v2-block--dark .v2-fig { border: 1px solid rgba(255,255,255,0.14); }
@media (max-width: 800px) {
  .v2-fig { padding: 22px 16px 14px; border-radius: 16px; }
}
/* ---------- できること等の項目: 番号・見出し・本文の行（カードをやめる） ---------- */
.v2-items { list-style: none; margin: 0; padding: 0; background: #fff; border: 1px solid var(--v2-line); border-radius: 18px; overflow: hidden; }
.v2-items > li { display: grid; grid-template-columns: 64px 300px minmax(0, 1fr); gap: 8px 28px; align-items: start; padding: 26px 32px; border-top: 1px solid var(--v2-line); }
.v2-items > li:first-child { border-top: none; }
.v2-items__no { font-family: var(--v2-en); font-size: 20px; font-weight: 500; line-height: 1.3; color: var(--c-page-dark, var(--v2-ink-3)); letter-spacing: -0.01em; }
.v2-items > li > h3 { margin: 0; font-size: 17.5px; line-height: 1.55; font-weight: 700; }
.v2-items > li > p { margin: 0; color: var(--v2-ink-2); font-size: 15px; line-height: 1.85; }
.v2-block--cards-white .v2-items { background: var(--v2-gray); border-color: transparent; }
.v2-block--cards-white .v2-items > li { border-top-color: #dfe3ea; }
@media (max-width: 1100px) {
  .v2-items > li { grid-template-columns: 48px minmax(0, 1fr); }
  .v2-items > li > p, .v2-items > li > .v2-items__body { grid-column: 2; }
}
@media (max-width: 800px) {
  .v2-items > li { padding: 18px 18px; gap: 6px 14px; }
  .v2-items__no { font-size: 16px; }
  .v2-items > li > h3 { font-size: 16px; }
  .v2-items > li > p { font-size: 14.5px; }
}
/* #### の項目（決めること・論点・支援の内容・できること）も同じ行の型に。本文に箇条書きや見出し行が入ることがある */
.v2-items__body p { margin: 0 0 0.9em; color: var(--v2-ink-2); font-size: 15px; line-height: 1.85; }
.v2-items__body > :last-child { margin-bottom: 0; }
.v2-items__body .v2-checks { margin: 6px 0 10px; }
.v2-items__body .v2-checks li { font-size: 14.5px; padding: 7px 0 7px 24px; }
.v2-items__body .v2-def { grid-template-columns: minmax(0, 1fr); gap: 2px; padding: 12px 0; }
.v2-items__body .v2-def strong { font-size: 15px; }
.v2-items__body .v2-def p { font-size: 14.5px; }
.v2-block--tint .v2-items { background: rgba(255,255,255,0.7); }
.v2-block--dark .v2-items { background: rgba(255,255,255,0.05); border-color: rgba(255,255,255,0.14); }
.v2-block--dark .v2-items > li { border-top-color: rgba(255,255,255,0.12); }
.v2-block--dark .v2-items__no { color: rgba(255,255,255,0.45); }
.v2-block--dark .v2-items > li > h3 { color: #fff; }
.v2-block--dark .v2-items > li > p, .v2-block--dark .v2-items__body p, .v2-block--dark .v2-items .v2-checks li { color: rgba(255,255,255,0.78); }
.v2-block--dark .v2-items strong { color: #fff; }
.v2-block--dark .v2-items a { color: #fff; }
.v2-block--dark .v2-items .v2-checks li { border-bottom-color: rgba(255,255,255,0.12); }
.v2-block--dark .v2-items .v2-checks li::before { border-color: rgba(255,255,255,0.7); }
.v2-block--dark .v2-items .v2-def { border-color: rgba(255,255,255,0.12); }
/* 見出し → 説明 → 図 → 項目 の順。図と項目・タイムラインの間を空ける */
.v2-fig + .v2-items, .v2-fig + .v2-steps, .v2-box--white + .v2-items, .v2-box--white + .v2-range { margin-top: 28px; }
.v2-fig + .v2-steps { margin-top: 40px; }
.v2-block--dark .v2-range--list { margin-top: 12px; }
.v2-items + .v2-fig, .v2-items + .v2-box, .v2-items + .v2-body--center { margin-top: 32px; }
.v2-steps--plain .v2-step__desc { color: var(--v2-ink); font-size: 15px; }
/* 項目のあとの補足（現場データ「できること」）: 白い箱をやめ、コンパクトな行に */
.v2-after { max-width: 980px; margin: 36px auto 0; }
.v2-after .v2-body > p { font-size: 15px; color: var(--v2-ink-2); margin: 0 0 0.8em; }
.v2-after .v2-body > p:first-child { font-size: 16px; color: var(--v2-ink); font-weight: 600; margin-bottom: 14px; }
.v2-after .v2-def { grid-template-columns: 180px minmax(0, 1fr); padding: 14px 0; gap: 4px 24px; border-top-color: #dfe3ea; }
.v2-after .v2-def:last-child, .v2-after .v2-defs .v2-def:last-child { border-bottom-color: #dfe3ea; }
.v2-after .v2-def strong { font-size: 15.5px; }
.v2-after .v2-def p { font-size: 14.5px; line-height: 1.8; }
.v2-after .v2-defs { margin: 0 0 14px; }
.v2-after .v2-body > .v2-def { margin: 0 0 14px; }
.v2-after + .v2-fig { margin-top: 28px; }
@media (max-width: 800px) {
  .v2-after { margin-top: 24px; }
  .v2-after .v2-def { grid-template-columns: minmax(0, 1fr); }
}
.v2-items + .v2-fig + .v2-after { margin-top: 32px; }
.v2-after__lead { max-width: 980px; margin: 36px auto 0; font-size: 16px; font-weight: 600; color: var(--v2-ink); }
.v2-after__lead + .v2-fig { margin-top: 18px; }
.v2-after .v2-body > p:first-child { font-size: 15px; color: var(--v2-ink-2); font-weight: 400; }
/* ---------- 比較ビュー用の目印（?guide=1 のときだけ出る） ---------- */
.v2-guide { position: absolute; left: 0; top: 0; right: 0; z-index: 5; padding: 14px 28px; font-size: 52px; line-height: 1.1; font-weight: 800; color: #fff; background: #555; letter-spacing: 0.04em; opacity: 0.92; pointer-events: none; }
.v2-guide--intro, .v2-guide--opening { background: #6b7280; }
.v2-guide--can, .v2-guide--issues, .v2-guide--stall { background: #1c4fd8; }
.v2-guide--points, .v2-guide--ops { background: #7c3aed; }
.v2-guide--usecase { background: #0d9488; }
.v2-guide--verify { background: #0891b2; }
.v2-guide--range { background: #111827; border: 2px solid #fff; }
.v2-guide--strength { background: #9333ea; }
.v2-guide--flow { background: #ea580c; }
.v2-guide--entry, .v2-guide--scale, .v2-guide--prep { background: #db2777; }
.v2-guide--faq, .v2-guide--related { background: #9ca3af; }
/* 支援する範囲の箇条書き: 番号＋1行の行（項目の行と同じ型、2列） */
.v2-items--lines { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); }
.v2-items--lines > li { grid-template-columns: 56px minmax(0, 1fr); padding: 18px 28px; }
.v2-items--lines > li > h3 { font-size: 15.5px; font-weight: 600; }
.v2-items--lines > li:nth-child(2) { border-top: none; }
.v2-items--lines > li:nth-child(odd) { border-right: 1px solid rgba(255,255,255,0.12); }
@media (max-width: 800px) {
  .v2-items--lines { grid-template-columns: minmax(0, 1fr); }
  .v2-items--lines > li:nth-child(2) { border-top: 1px solid rgba(255,255,255,0.12); }
  .v2-items--lines > li:nth-child(odd) { border-right: none; }
}
.v2-fig + .v2-fig { margin-top: 20px; }

/* ---------- 社内AIチャットの動くデモ（生成AI・RAG） ---------- */
#gaAnim .a-input__box { fill: rgba(255,255,255,0.06); stroke: rgba(255,255,255,0.3); }
#gaAnim .a-input__ph { fill: rgba(255,255,255,0.35); font-size: 13px; font-weight: 400; }
#gaAnim .a-input__text { fill: rgba(255,255,255,0.94); font-size: 13.5px; font-weight: 700; }
#gaAnim.is-typing .a-input__ph, #gaAnim.is-sent .a-input__ph { opacity: 0; }
#gaAnim .a-caret { fill: var(--c-page, #8f7bff); opacity: 0; }
#gaAnim.is-typing .a-caret { opacity: 1; animation: v2-caret 0.9s steps(1) infinite; }
#gaAnim .a-caret { transform: translateX(0); }
@keyframes v2-caret { 50% { opacity: 0; } }
#gaAnim .a-q rect { fill: rgba(255,255,255,0.1); stroke: var(--c-page, #8f7bff); stroke-width: 1; }
#gaAnim .a-q text { fill: rgba(255,255,255,0.94); font-size: 13.5px; font-weight: 700; }
#gaAnim .a-q, #gaAnim .a-ans, #gaAnim .a-cite, #gaAnim .a-btn, #gaAnim .a-note, #gaAnim .a-think { opacity: 0; transition: opacity 0.5s ease, transform 0.5s ease; transform: translateY(6px); }
#gaAnim .is-on { opacity: 1; transform: translateY(0); }
#gaAnim .a-think circle { fill: rgba(255,255,255,0.7); animation: v2-think 1.2s ease-in-out infinite; }
#gaAnim .a-think circle:nth-child(3) { animation-delay: 0.2s; }
#gaAnim .a-think circle:nth-child(4) { animation-delay: 0.4s; }
@keyframes v2-think { 0%, 80%, 100% { opacity: 0.25; transform: translateY(0); } 40% { opacity: 1; transform: translateY(-3px); } }
#gaAnim .a-ans .a-line { opacity: 0; transition: opacity 0.6s ease; }
#gaAnim .a-ans.is-on .a-line:nth-child(1) { opacity: 1; transition-delay: 0.1s; }
#gaAnim .a-ans.is-on .a-line:nth-child(2) { opacity: 1; transition-delay: 0.6s; }
.reduce-motion #gaAnim .a-think { display: none; }

/* ---------- 既存システム連携の動くデモ（文章で探す） ---------- */
#siAnim .a-input__box { fill: rgba(255,255,255,0.06); stroke: rgba(255,255,255,0.3); }
#siAnim .a-input__ph { fill: rgba(255,255,255,0.35); font-size: 13px; font-weight: 400; }
#siAnim .a-input__text { fill: rgba(255,255,255,0.94); font-size: 13.5px; font-weight: 700; }
#siAnim.is-typing .a-input__ph, #siAnim.is-sent .a-input__ph { opacity: 0; }
#siAnim.is-sent .a-input__box { stroke: var(--c-page, #4f93ad); }
#siAnim .a-caret { fill: var(--c-page, #4f93ad); opacity: 0; }
#siAnim.is-typing .a-caret { opacity: 1; animation: v2-caret 0.9s steps(1) infinite; }
#siAnim .a-think, #siAnim .a-cond, #siAnim .a-rows, #siAnim .a-done, #siAnim .a-sys { opacity: 0; transition: opacity 0.5s ease, transform 0.5s ease; transform: translateY(6px); }
#siAnim .is-on { opacity: 1; transform: translateY(0); }
#siAnim .a-think circle { fill: rgba(255,255,255,0.7); animation: v2-think 1.2s ease-in-out infinite; }
#siAnim .a-think circle:nth-child(3) { animation-delay: 0.2s; }
#siAnim .a-think circle:nth-child(4) { animation-delay: 0.4s; }
#siAnim .a-row rect { fill: rgba(255,255,255,0.06); }
#siAnim .a-row text { fill: rgba(255,255,255,0.9); font-size: 12px; font-weight: 700; }
#siAnim .a-row text.sub { fill: rgba(255,255,255,0.6); font-weight: 400; font-size: 11.5px; }
#siAnim .a-row { opacity: 0; transition: opacity 0.4s ease; }
#siAnim .a-rows.is-on .a-row:nth-child(1) { opacity: 1; transition-delay: 0s; }
#siAnim .a-rows.is-on .a-row:nth-child(2) { opacity: 1; transition-delay: 0.25s; }
#siAnim .a-rows.is-on .a-row:nth-child(3) { opacity: 1; transition-delay: 0.5s; }
#siAnim .a-sys .fig-stage rect { stroke: var(--c-page, #4f93ad); stroke-dasharray: 4 4; }
.reduce-motion #siAnim .a-think { display: none; }
/* 左「いま」の検索画面（動く） */
#siAnim .l-lab { fill: rgba(255,255,255,0.55); font-size: 10.5px; font-weight: 400; }
#siAnim .l-box { fill: rgba(255,255,255,0.06); stroke: rgba(255,255,255,0.25); transition: stroke 0.2s ease; }
#siAnim .l-field.is-focus .l-box { stroke: #fff; }
#siAnim .l-val { fill: rgba(255,255,255,0.4); font-size: 11.5px; font-weight: 400; }
#siAnim .l-field.is-set .l-val { fill: rgba(255,255,255,0.92); font-weight: 700; }
#siAnim .l-arrow { fill: none; stroke: rgba(255,255,255,0.5); stroke-width: 1.2; }
#siAnim .l-search.is-press rect { fill: #fff; }
#siAnim .l-msg { opacity: 0; transition: opacity 0.3s ease; }
#siAnim .l-msg.is-on { opacity: 1; }
#siAnim .l-msg text { fill: #ff8a8a; }
#siAnim .l-dd { opacity: 0; transition: opacity 0.2s ease; pointer-events: none; }
#siAnim .l-dd.is-on { opacity: 1; }
#siAnim .l-dd__box { fill: #1a1f2b; stroke: rgba(255,255,255,0.35); }
#siAnim .l-dd__list { transition: transform 1.4s ease-in-out; }
#siAnim .l-dd__item { fill: rgba(255,255,255,0.75); font-size: 11px; font-weight: 400; }
#siAnim .l-dd__item--hit { fill: #fff; font-weight: 700; }
#siAnim .l-cursor { transition: transform 0.5s ease-in-out; }
#siAnim .l-cursor path { fill: #fff; stroke: #0b0d14; stroke-width: 1; }
.reduce-motion #siAnim .l-cursor, .reduce-motion #siAnim .l-dd { display: none; }

/* ---------- 現場データの動くデモ（点検写真の仕分け） ---------- */
#fdAnim .p-card { opacity: 0; transform: translateY(8px); transition: opacity 0.45s ease, transform 0.45s ease; }
#fdAnim .p-card.is-in { opacity: 1; transform: translateY(0); }
#fdAnim .p-card__bg { fill: rgba(255,255,255,0.05); stroke: rgba(255,255,255,0.25); transition: stroke 0.5s ease, fill 0.5s ease; }
#fdAnim .p-card__meta { fill: rgba(255,255,255,0.55); font-size: 10.5px; font-weight: 400; }
#fdAnim .p-card__tag { fill: rgba(255,255,255,0.7); font-size: 11.5px; font-weight: 700; opacity: 0; transition: opacity 0.5s ease; }
#fdAnim .p-card.is-ok, #fdAnim .p-card.is-hit { transition: opacity 0.6s ease; }
#fdAnim .p-card.is-ok { opacity: 0.42; }
#fdAnim .p-card.is-ok .p-card__tag { opacity: 1; }
#fdAnim .p-card.is-hit .p-card__bg { stroke: var(--c-page, #3fae8a); fill: rgba(255,255,255,0.1); }
#fdAnim .p-card.is-hit .p-card__tag { opacity: 1; fill: var(--c-page-light, #9fd9c3); }
#fdAnim .p-card__judge { opacity: 0; transform: translateY(4px); transition: opacity 0.4s ease, transform 0.4s ease; }
#fdAnim .p-card__judge rect { fill: var(--c-page, #3fae8a); }
#fdAnim .p-card__judge text { fill: #0b0d14; font-size: 11px; font-weight: 700; }
#fdAnim .p-card.is-judged .p-card__judge { opacity: 1; transform: translateY(0); }
#fdAnim .a-think, #fdAnim .a-done, #fdAnim .a-note { opacity: 0; transition: opacity 0.5s ease, transform 0.5s ease; transform: translateY(6px); }
#fdAnim .is-on { opacity: 1; transform: translateY(0); }
#fdAnim .a-think circle { fill: rgba(255,255,255,0.7); animation: v2-think 1.2s ease-in-out infinite; }
#fdAnim .a-think circle:nth-child(3) { animation-delay: 0.2s; }
#fdAnim .a-think circle:nth-child(4) { animation-delay: 0.4s; }
.reduce-motion #fdAnim .a-think { display: none; }

/* ---------- 定着・内製化の動くデモ（持ち主が付いていく） ---------- */
#ihAnim .o-row { opacity: 0; transform: translateY(6px); transition: opacity 0.45s ease, transform 0.45s ease; }
#ihAnim .o-row.is-on { opacity: 1; transform: translateY(0); }
#ihAnim .o-unset { transition: opacity 0.3s ease; }
#ihAnim .o-unset.is-off { opacity: 0; }
#ihAnim .o-unset text { fill: #ff8a8a; }
#ihAnim .o-owner { opacity: 0; transform: translateX(-8px); transition: opacity 0.45s ease, transform 0.45s ease; }
#ihAnim .o-owner.is-on { opacity: 1; transform: translateX(0); }
#ihAnim .o-owner rect { fill: var(--c-page, #d9a441); }
#ihAnim .o-owner--mix rect { fill: rgba(255,255,255,0.1); stroke: var(--c-page, #d9a441); stroke-dasharray: 4 3; }
#ihAnim .o-owner text { fill: #0b0d14; font-size: 12px; font-weight: 700; }
#ihAnim .o-owner--mix text { fill: #fff; }
#ihAnim .a-done, #ihAnim .a-note { opacity: 0; transition: opacity 0.5s ease, transform 0.5s ease; transform: translateY(6px); }
#ihAnim .is-on { opacity: 1; transform: translateY(0); }
#ihAnim .o-owner.is-on { transform: translateX(0); }

/* ---------- プロジェクト支援の動くデモ（途中で止まる） ---------- */
#psAnim .s-track path { stroke: var(--c-page, #9aa6b8); stroke-width: 2; stroke-dasharray: 120; stroke-dashoffset: 120; }
#psAnim .s-track.is-on path:first-child { transition: stroke-dashoffset 0.3s linear 0.3s; stroke-dashoffset: 0; }
#psAnim .s-track.is-on path:last-child { transition: stroke-dashoffset 0.8s cubic-bezier(0.2, 0.7, 0.3, 1) 1.1s; stroke-dashoffset: 0; }
#psAnim .s-dot circle { fill: var(--c-page, #9aa6b8); transform: translateX(0); }
#psAnim .s-dot.is-on circle { transition: transform 2s cubic-bezier(0.3, 0.6, 0.3, 1); transform: translateX(340px); }
#psAnim .s-done .fig-stage rect { transition: stroke 0.4s ease, fill 0.4s ease; }
#psAnim .s-done.is-on .fig-stage rect { stroke: var(--c-page, #9aa6b8); fill: rgba(255,255,255,0.1); }
#psAnim .s-stop, #psAnim .s-flag, #psAnim .s-next { opacity: 0; transition: opacity 0.45s ease, transform 0.45s ease; transform: translateY(6px); }
#psAnim .s-stop.is-on, #psAnim .s-flag.is-on, #psAnim .s-next.is-on { opacity: 1; transform: translateY(0); }
#psAnim .s-next .fig-entry path { stroke: var(--c-page-light, #cfd6e0); }
#psAnim.is-static .s-track path, #psAnim.is-static .s-dot circle { transition: none; }

/* ---------- 現場データ「決めること」の動くデモ（順に決まっていく） ---------- */
#fdDecideAnim .d-node { opacity: 0; transition: opacity 0.4s ease; }
#fdDecideAnim .d-node.is-on { opacity: 0.45; }
#fdDecideAnim .d-node.is-set { opacity: 1; }
#fdDecideAnim .d-unset { fill: rgba(255,255,255,0.5); font-size: 12px; font-weight: 400; transition: opacity 0.3s ease; }
#fdDecideAnim .d-node.is-set .d-unset { opacity: 0; }
#fdDecideAnim .d-set { opacity: 0; transition: opacity 0.4s ease 0.15s; }
#fdDecideAnim .d-node.is-set .d-set { opacity: 1; }
#fdDecideAnim .d-node .fig-cube, #fdDecideAnim .d-side, #fdDecideAnim .d-line { opacity: 0; transition: opacity 0.4s ease; }
#fdDecideAnim .d-node.is-set .fig-cube, #fdDecideAnim .d-node.is-set .d-side, #fdDecideAnim .d-node.is-set .d-line { opacity: 1; }
#fdDecideAnim .d-line rect { fill: var(--c-page-light, #9fd9c3); }
#fdDecideAnim .d-line.is-move rect { animation: v2-slide 1.5s ease-in-out; }
#fdDecideAnim .d-line.is-fixed rect { transform: translateX(-18px); }
@keyframes v2-slide { 0% { transform: translateX(0); } 35% { transform: translateX(34px); } 70% { transform: translateX(-30px); } 100% { transform: translateX(-18px); } }
#fdDecideAnim .d-arrow, #fdDecideAnim .d-loop { opacity: 0; transition: opacity 0.4s ease; }
#fdDecideAnim .d-arrow.is-on, #fdDecideAnim .d-loop.is-on { opacity: 1; }
#fdDecideAnim .d-line.is-loop rect { animation: v2-slide-loop 6s ease-in-out infinite; }
@keyframes v2-slide-loop { 0% { transform: translateX(-18px); } 30% { transform: translateX(26px); } 55% { transform: translateX(-34px); } 80% { transform: translateX(-18px); } 100% { transform: translateX(-18px); } }
/* RAGの流れ: 05 の立方体だけが、静かに上下する（マイクロ） */
#gaRag .fig-cube, #siSix .fig-cube, #fdChain .fig-cube, .fig-range .fig-cube { animation: v2-float 2.8s ease-in-out infinite; transform-box: fill-box; transform-origin: center; }
/* 画面外の図では CSS アニメーションを止める（JSが .v2-fig に is-inview を付ける。付かない環境ではそのまま動く） */
.v2-fig.is-offview * { animation-play-state: paused !important; }
@keyframes v2-float { 0%, 100% { transform: translateY(0) scale(1); filter: brightness(1); } 50% { transform: translateY(-5px) scale(1.12); filter: brightness(1.55) drop-shadow(0 0 6px rgba(255,255,255,0.35)); } }
.reduce-motion #gaRag .fig-cube, .reduce-motion #siSix .fig-cube, .reduce-motion #fdChain .fig-cube, .reduce-motion .fig-range .fig-cube { animation: none; }
#siOptions .o-dot { fill: var(--c-page-light, #fff); filter: drop-shadow(0 0 4px rgba(255,255,255,0.6)); animation: v2-oflow 4.4s ease-in-out infinite; }
#siOptions .o-glow { fill: none; stroke: var(--c-page-light, #fff); stroke-width: 1.5; opacity: 0; animation: v2-oglow 4.4s ease-in-out infinite; }
@keyframes v2-oflow { 0% { transform: translateY(0); opacity: 0; } 6% { opacity: 1; } 20% { transform: translateY(20px); } 30% { transform: translateY(20px); } 46% { transform: translateY(80px); } 56% { transform: translateY(80px); } 70% { transform: translateY(60px); opacity: 1; } 76% { transform: translateY(60px); opacity: 0; } 100% { transform: translateY(60px); opacity: 0; } }
@keyframes v2-oglow { 0%, 66% { opacity: 0; } 74% { opacity: 0.9; } 88%, 100% { opacity: 0; } }
.reduce-motion #siOptions .o-dot, .reduce-motion #siOptions .o-glow { animation: none; opacity: 0; }
#psBoundary .fig-gap-mark text { animation: v2-float 2.8s ease-in-out infinite; transform-box: fill-box; transform-origin: center; }
#psBoundary .fig-gap rect { animation: v2-gap 2.8s ease-in-out infinite; }
@keyframes v2-gap { 0%, 100% { opacity: 0.55; } 50% { opacity: 1; } }
.reduce-motion #psBoundary .fig-gap-mark text, .reduce-motion #psBoundary .fig-gap rect { animation: none; }
