  :root {
    --gold: #d4a44c;
    --gold-bright: #e8c478;
    --gold-warm: #f5d896;
    --green-jade: #7ba583;
    --bg: #0a0f0c;
    --text: rgba(245, 240, 230, 0.92);
    --text-soft: rgba(245, 240, 230, 0.6);
    --text-dim: rgba(245, 240, 230, 0.32);
    --font-jp: 'Noto Serif JP', serif;
    --font-en: 'Cinzel', serif;
    --ease-out: cubic-bezier(0.16, 1, 0.3, 1);
    --ease: cubic-bezier(0.4, 0, 0.2, 1);
  }
  * { margin: 0; padding: 0; box-sizing: border-box; }
  html, body {
    width: 100%; height: 100%;
    overflow: hidden;
    background: #000;
    color: var(--text);
    font-family: var(--font-jp);
    cursor: auto;
    user-select: none;
    -webkit-tap-highlight-color: transparent;
  }
  button { font-family: inherit; cursor: pointer; color: inherit; background: none; border: none; }

  .theater-entrance-bg {
    position: absolute;
    inset: 0;
    z-index: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    opacity: 0;
    filter: brightness(0.72) saturate(1.06) contrast(1.05);
    transform: scale(1.015);
    pointer-events: none;
    transition: opacity 1.4s var(--ease);
  }
  body:not([data-theater-entered="1"]) .theater-entrance-bg {
    opacity: 0.72;
  }
  body[data-theater-entered="1"] .theater-entrance-bg,
  body:not(.no-scene-selected) .theater-entrance-bg,
  body.rings-open .theater-entrance-bg,
  body.tag-entry-mode .theater-entrance-bg,
  body.immersed .theater-entrance-bg {
    opacity: 0;
  }
  .theater-entrance-veil {
    position: absolute;
    inset: 0;
    z-index: 0;
    pointer-events: none;
    opacity: 0;
    background:
      radial-gradient(ellipse at 50% 42%, rgba(245, 216, 150, 0.08), transparent 34%),
      linear-gradient(90deg, rgba(0,0,0,0.72), rgba(0,0,0,0.28) 50%, rgba(0,0,0,0.72)),
      linear-gradient(180deg, rgba(0,0,0,0.64), rgba(0,0,0,0.2) 48%, rgba(0,0,0,0.72));
    transition: opacity 1.4s var(--ease);
  }
  body:not([data-theater-entered="1"]) .theater-entrance-veil {
    opacity: 1;
  }
  body[data-theater-entered="1"] .theater-entrance-veil,
  body:not(.no-scene-selected) .theater-entrance-veil,
  body.rings-open .theater-entrance-veil,
  body.tag-entry-mode .theater-entrance-veil,
  body.immersed .theater-entrance-veil {
    opacity: 0;
  }
  @media (prefers-reduced-motion: reduce) {
    .theater-entrance-bg {
      display: none;
    }
  }

  body::before {
    content: '';
    position: fixed; inset: 0;
    background:
      radial-gradient(ellipse at 30% 20%, rgba(42, 74, 58, 0.15), transparent 60%),
      radial-gradient(ellipse at 70% 80%, rgba(60, 48, 32, 0.1), transparent 60%),
      #0a0f0c;
    z-index: -2;
    transition: opacity 2s var(--ease);
  }
  /* 繧ｮ繝｣繝ｩ繝ｪ繝ｼ繝｢繝ｼ繝画凾縺ｯ閭梧勹繧堤悄縺｣鮟偵↓ (諠・勹縺ｮ讌募・縺碁圀遶九▽) */
  body.gallery-mode::before {
    opacity: 0;
  }
  body::after {
    content: '';
    position: fixed; inset: 0;
    background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='240' height='240'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2'/><feColorMatrix values='0 0 0 0 0.9 0 0 0 0 0.85 0 0 0 0 0.7 0 0 0 0.8 0'/></filter><rect width='100%25' height='100%25' filter='url(%23n)'/></svg>");
    opacity: 0.03;
    mix-blend-mode: overlay;
    pointer-events: none;
    z-index: 100;
  }

  .cur {
    position: fixed;
    width: 32px; height: 32px;
    border: 1px solid rgba(212, 164, 76, 0.45);
    border-radius: 50%;
    pointer-events: none;
    z-index: 9999;
    transform: translate(-50%, -50%);
    transition: width 0.4s var(--ease-out), height 0.4s var(--ease-out), border-color 0.3s;
    mix-blend-mode: difference;
  }
  .cur.hov {
    width: 60px; height: 60px;
    border-color: rgba(232, 196, 120, 0.85);
  }
  .cur-dot {
    position: fixed;
    width: 4px; height: 4px;
    background: var(--gold-warm);
    border-radius: 50%;
    pointer-events: none;
    z-index: 9999;
    transform: translate(-50%, -50%);
    box-shadow: 0 0 14px var(--gold-warm);
  }
  body.no-scene-selected .footprint-tooltip,
  body.rings-open .cur,
  body.rings-open .cur-dot,
  body.rings-open .footprint-tooltip {
    display: none !important;
  }
  body.rings-open,
  body.rings-open *,
  body.rings-open #ringsCanvas {
    cursor: auto !important;
  }

  .scene-stage { position: fixed; inset: 0; z-index: 1; overflow: hidden; }
  .scene-layer {
    position: absolute; inset: 0;
    opacity: 0;
    transition: opacity 2.5s var(--ease);
  }
  .scene-layer.active { opacity: 1; }
  .scene-image {
    position: absolute;
    top: var(--scene-pos-y, 50%);
    left: var(--scene-pos-x, 50%);
    transform: translate(-50%, -50%) scale(1);
    width: 100%; height: 100%;
    background-size: cover;
    background-position: center;
    mask-image: radial-gradient(ellipse at center, black 52%, transparent 92%);
    -webkit-mask-image: radial-gradient(ellipse at center, black 52%, transparent 92%);
    will-change: transform, width, height;
    transition:
      width 1.2s cubic-bezier(0.4, 0, 0.2, 1),
      height 1.2s cubic-bezier(0.4, 0, 0.2, 1),
      mask-image 0.5s ease,
      -webkit-mask-image 0.5s ease;
    animation: sceneBreath 7s ease-in-out infinite;
  }
  @keyframes sceneBreath {
    0%, 100% { transform: translate(-50%, -50%) scale(1); }
    50%      { transform: translate(-50%, -50%) scale(1.028); }
  }
  /* 豐｡蜈･繝｢繝ｼ繝峨〒繝槭せ繧ｯ繧貞・髱｢縺ｫ蠎・￡繧・(諠・勹縺悟・逕ｻ髱｢縺ｫ) */
  body.immersed .scene-image {
    mask-image: radial-gradient(ellipse at center, black 100%, transparent 100%);
    -webkit-mask-image: radial-gradient(ellipse at center, black 100%, transparent 100%);
  }
  .scene-vignette {
    position: fixed; inset: 0; z-index: 3;
    pointer-events: none;
    box-shadow: inset 0 0 240px 70px rgba(5, 10, 8, 0.65);
    transition: box-shadow 0.6s ease;
  }
  /* 豐｡蜈･繝｢繝ｼ繝峨〒縺ｯ繝薙ロ繝・ヨ繧ゅ⊇縺ｼ豸医☆ */
  body.immersed .scene-vignette {
    box-shadow: inset 0 0 80px 10px rgba(5, 10, 8, 0.25);
  }

  /* 高解像度差し替え用のレイヤー */
  .scene-hires {
    position: absolute; inset: 0;
    background-size: cover;
    background-position: center;
    opacity: 0;
    transition: opacity 1.5s var(--ease);
    pointer-events: none;
    z-index: 2;
  }
  .scene-hires.active { opacity: 1; }

  #mainCanvas {
    position: fixed; inset: 0;
    z-index: 5;
    pointer-events: none;
  }

  #ringsCanvas {
    position: fixed;
    inset: 0;
    width: 100%;
    height: 100%;
    z-index: 19;
    pointer-events: none;
  }
  .rings-overlay.visible #ringsCanvas {
    pointer-events: auto;
  }

  .ui {
    position: fixed; inset: 0;
    z-index: 15;
    pointer-events: none;
    transition: opacity 1.5s var(--ease);
  }
  .ui > * { pointer-events: auto; }
  .visually-hidden {
    position: absolute !important;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
    border: 0;
  }
  body.immersed .ui > * {
    opacity: 0;
    pointer-events: none;
    filter: blur(12px);
  }
  body.immersed .ui .brand-block  { transform: translate(-30px, -20px); }
  body.immersed .ui .exit-block   { transform: translate(30px, -20px); }
  body.immersed .ui .scene-index  { transform: translate(-30px, 30px); }
  body.immersed .ui .player       { transform: translate(-50%, 40px); }
  body.immersed .ui .nav-arrows   { transform: translate(30px, 0); }

  /* ============ 没入中のUI繧｢繧､繝峨Ν隠匿 ============ */
  /* 豐｡蜈･繝｢繝ｼ繝我ｸｭ縲√・繧ｦ繧ｹ髱呎ｭ｢縺ｧ蜈ｨUI繧帝國縺吶ょ虚縺九☆と再表示 */
  body.immersed #mainCanvas,
  body.immersed #footprintCanvas,
  body.immersed .action-tower,
  body.immersed .immersive-controls,
  body.immersed .immersive-exit {
    transition: opacity 0.8s var(--ease);
  }
  body.immersed.ui-idle #mainCanvas,
  body.immersed.ui-idle #footprintCanvas,
  body.immersed.ui-idle .action-tower,
  body.immersed.ui-idle .immersive-controls,
  body.immersed.ui-idle .immersive-exit {
    opacity: 0 !important;
    pointer-events: none !important;
  }
  /* ============ 豐｡蜈･繝｢繝ｼ繝臥ｪ∝・譎・ 豬ｮ驕翫き繝ｼ繝峨・雜ｳ霍｡繧偵ョ繝輔か繝ｫ繝医〒髫縺・============ */
  /* 荳也阜隕ｳ蜆ｪ蜈医よ勹濶ｲ縺ｮ荳ｭ縺ｧ縺ｯ菴呵ｨ医↑諠・ｱ繧貞ｼ輔▲霎ｼ繧√ｋ */
  /* mainCanvas 縺ｮ邊貞ｭ舌・荳也阜隕ｳ縺ｮ荳驛ｨ縺ｪ縺ｮ縺ｧ縺・▲縺吶ｉ谿九☆ (描画ループで windows 縺ｮ縺ｿ繧ｹ繧ｭ繝・・) */
  body.immersed:not(.show-immersive-overlays):not(.ui-idle) #mainCanvas {
    opacity: 0 !important;
    pointer-events: none !important;
  }
  body.immersed:not(.show-immersive-overlays):not(.footprints-visible) #footprintCanvas {
    opacity: 0 !important;
    pointer-events: none !important;
  }

  /* 貍泌・陦ｨ遉ｺ繝医げ繝ｫ (豐｡蜈･荳ｭ縺ｮ縺ｿ蜃ｺ迴ｾ縲ＦxitImmersive 縺ｮ荳・ */
  .immersive-overlay-toggle {
    position: fixed;
    top: 24px; right: 24px;
    z-index: 27;
    transform: translateY(48px);  /* exit 縺ｮ荳九↓縺壹ｉ縺・*/
    display: none;
    align-items: center;
    gap: 8px;
    padding: 8px 14px;
    font-family: var(--font-jp);
    font-size: 10.5px;
    letter-spacing: 0.2em;
    opacity: 0;
    transition: opacity 0.8s var(--ease);
  }
  body.immersed .immersive-overlay-toggle {
    display: inline-flex;
    opacity: 1;
  }
  body.immersed.ui-idle .immersive-overlay-toggle {
    opacity: 0 !important;
    pointer-events: none !important;
  }
  @media (max-width: 720px) {
    .immersive-overlay-toggle { top: 14px; right: 14px; transform: translateY(42px); padding: 6px 10px; font-size: 10px; }
  }
  /* 繧ｫ繝ｼ繧ｽ繝ｫ繧る國縺・*/
  body.immersed.ui-idle {
    cursor: none;
  }
  body.immersed.ui-idle #cursor {
    opacity: 0;
    transition: opacity 0.8s var(--ease);
  }
  .ui .brand-block, .ui .exit-block, .ui .scene-index,
  .ui .player, .ui .nav-arrows {
    transition: opacity 1.2s var(--ease), transform 1.5s var(--ease-out), filter 1.5s;
  }

  .brand-block {
    position: absolute; top: 34px; left: 40px;
    z-index: 26;
    opacity: 0;
    animation: fadeUp 2s 0.5s var(--ease-out) forwards;
    min-width: 150px;
  }
  /* H / MIX ロゴ 竊・TOP へのリンク */
  .brand-home-link {
    display: inline-grid;
    grid-template-rows: auto auto;
    row-gap: 9px;
    align-items: start;
    text-decoration: none;
    color: inherit;
    transition: filter 0.3s var(--ease);
  }
  .brand-home-link:hover {
    filter: drop-shadow(0 0 8px rgba(245, 216, 150, 0.45)) brightness(1.15);
  }
  .brand-home-link:hover .brand {
    color: var(--gold-warm);
  }
  /* brand-legal 蜀・・ H/MIX 繝医ャ繝励Μ繝ｳ繧ｯ繧堤岼遶九◆せる */
  .brand-legal .brand-legal-home {
    color: var(--gold-warm) !important;
    font-weight: 500;
  }
  .brand-legal .brand-legal-home:hover {
    text-decoration: underline;
    text-decoration-color: var(--gold-warm);
  }
  .brand {
    font-family: var(--font-en);
    font-size: 15px; font-weight: 500;
    letter-spacing: 0.34em;
    line-height: 1.15;
    color: rgba(245, 240, 230, 0.92);
    margin-bottom: 0;
    white-space: nowrap;
    display: block;
  }
  .brand::before {
    content: '';
    display: block;
    width: 20px; height: 1px;
    background: linear-gradient(90deg, var(--green-jade), var(--gold));
    margin-bottom: 12px;
  }
  .brand-sub {
    font-family: var(--font-jp);
    font-weight: 300;
    font-size: 10px;
    letter-spacing: 0.38em;
    line-height: 1.3;
    color: var(--text-soft);
    text-indent: 0.38em;
    white-space: nowrap;
    display: block;
    margin-top: 0;
    clear: both;
  }
  body.lang-en .brand-sub {
    font-family: var(--font-en);
    font-size: 9px;
    letter-spacing: 0.24em;
    text-indent: 0.24em;
  }
  /* フッター風の法的リンク (繝悶Λ繝ｳ繝峨ヶ繝ｭ繝・け荳・ */
  .brand-legal {
    margin-top: 14px;
    display: flex;
    align-items: center;
    gap: 6px;
    font-family: var(--font-jp);
    font-size: 9px;
    letter-spacing: 0.12em;
    opacity: 0.45;
    transition: opacity 0.3s;
  }
  .brand-legal:hover { opacity: 0.85; }
  .brand-legal a {
    color: rgba(245, 240, 230, 0.7);
    text-decoration: none;
    transition: color 0.3s;
  }
  .brand-legal a:hover { color: var(--gold-warm); }
  .brand-legal .sep { color: rgba(212, 164, 76, 0.35); }
  @media (max-width: 720px) {
    .brand-legal { display: none; } /* 繝｢繝舌う繝ｫ縺ｧ縺ｯ逵∫払 */
  }
  @keyframes fadeUp {
    0% { opacity: 0; transform: translateY(12px); }
    100% { opacity: 1; transform: translateY(0); }
  }
  /* 繝励Ξ繧､繝､繝ｼ蟆ら畑繝輔ぉ繝ｼ繝峨い繝・・: translateX(-50%) 縺ｮ荳ｭ螟ｮ蟇・○繧堤ｶｭ謖・*/
  @keyframes fadeUpCentered {
    0%   { opacity: 0; transform: translate(-50%, 12px); }
    100% { opacity: 1; transform: translate(-50%, 0); }
  }

  .exit-block {
    position: absolute; top: 30px; right: 40px;
    display: flex; gap: 10px;
    opacity: 0;
    animation: fadeUp 2s 0.8s var(--ease-out) forwards;
  }
  .glass-btn {
    height: 38px;
    padding: 0 20px;
    display: inline-flex;
    align-items: center;
    gap: 8px;
    font-family: var(--font-jp);
    font-weight: 400;
    font-size: 12px;
    letter-spacing: 0.25em;
    color: var(--text-soft);
    background: linear-gradient(135deg, rgba(26, 48, 40, 0.5), rgba(20, 18, 16, 0.45));
    backdrop-filter: blur(24px) saturate(1.3);
    -webkit-backdrop-filter: blur(24px) saturate(1.3);
    border: 1px solid rgba(212, 164, 76, 0.22);
    border-radius: 999px;
    transition: all 0.35s var(--ease);
    position: relative;
    overflow: hidden;
    white-space: nowrap;
  }
  .glass-btn:hover {
    color: var(--gold-warm);
    border-color: rgba(232, 196, 120, 0.6);
    background: linear-gradient(135deg, rgba(42, 74, 58, 0.65), rgba(30, 26, 22, 0.55));
    box-shadow:
      0 0 30px rgba(212, 164, 76, 0.2),
      0 0 50px rgba(123, 165, 131, 0.15);
  }
  /* 繝帙ヰ繝ｼ譎ゅ・譁・ｭ励せ繝ｯ繝・・繧堤┌蜉ｹ蛹・(繝懊ち繝ｳ蟷・′螟牙虚縺励※ "暴れる" のを防止) */
  .glass-btn .label-hover { display: none !important; }
  .glass-btn:hover .label-normal { display: inline !important; }
  .glass-btn:hover .label-hover { display: none !important; }
  .glass-btn.icon-only { width: 38px; padding: 0; justify-content: center; }
  .glass-btn svg { width: 13px; height: 13px; fill: none; stroke: currentColor; stroke-width: 1.5; }

  .scene-index {
    position: absolute; top: 130px; left: 40px;
    opacity: 0;
    animation: fadeUp 2s 1.4s var(--ease-out) forwards;
    width: 260px;
    max-height: calc(100vh - 290px);
    max-height: calc(100dvh - 290px);  /* iOS Safari 縺ｮ蜍慕噪繝薙Η繝ｼ繝昴・繝磯ｫ伜ｯｾ蠢・*/
    overflow-y: auto;
    padding-right: 10px;
  }
  .scene-index::-webkit-scrollbar { width: 3px; }
  .scene-index::-webkit-scrollbar-track { background: transparent; }
  .scene-index::-webkit-scrollbar-thumb { background: rgba(212, 164, 76, 0.2); border-radius: 2px; }
  .scene-index-label {
    font-family: var(--font-en);
    font-size: 9px;
    letter-spacing: 0.5em;
    color: var(--gold);
    text-transform: uppercase;
    margin-bottom: 14px;
    display: flex;
    align-items: center;
    gap: 10px;
  }

  /* 蛻晏屓險ｪ蝠剰・ 繧ｷ繝ｼ繝ｳ繝｡繝九Ηーに呼吸するグロー (繧ｯ繝ｪ繝・け繧定ｪ倥≧) */
  @keyframes firstVisitBreathe {
    0%, 100% {
      box-shadow: 0 0 0 1px rgba(245, 216, 150, 0.18), 0 0 22px rgba(245, 216, 150, 0.1);
      background: rgba(255, 255, 255, 0.02);
    }
    50% {
      box-shadow: 0 0 0 1px rgba(245, 216, 150, 0.5), 0 0 36px rgba(245, 216, 150, 0.22), 0 0 60px rgba(64, 206, 180, 0.1);
      background: rgba(212, 164, 76, 0.06);
    }
  }
  body.first-visit.no-scene-selected .scene-index {
    /* fadeUp 繧剃ｸ頑嶌縺阪＠縺ｪ縺・ｈ縺・opacity 繧呈・遉ｺ */
    animation: firstVisitBreathe 2.6s ease-in-out infinite;
    opacity: 1 !important;
    border-radius: 8px;
    padding: 14px 14px 14px 14px;
    margin-left: -14px;
  }
  body.first-visit .scene-index::before {
    content: '情景を選んで、旅を始めましょう';
    display: block;
    margin-bottom: 10px;
    font-family: var(--font-jp);
    font-size: 10px;
    letter-spacing: 0.2em;
    color: var(--gold-warm);
    text-align: center;
    animation: firstVisitBreathe 2.6s ease-in-out infinite;
    opacity: 0.9;
  }
  @media (prefers-reduced-motion: reduce) {
    body.first-visit.no-scene-selected .scene-index { animation: none !important; }
  }

  /* 蠎冗ｫ縺ｫ謌ｻ繧九・繧ｿ繝ｳ (scene-index 荳・ 窶・謗ｧ縺医ａ縺ｪ繝・く繧ｹ繝医Μンク風 */
  .prologue-return-btn {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 4px 8px;
    margin-bottom: 12px;
    background: transparent;
    border: none;
    border-radius: 999px;
    color: rgba(245, 216, 150, 0.5);
    font-family: var(--font-jp);
    font-weight: 400;
    letter-spacing: 0.18em;
    cursor: pointer;
    transition: all 0.4s var(--ease);
    opacity: 0.75;
  }
  .prologue-return-btn svg {
    width: 10px; height: 10px;
    fill: none; stroke: currentColor; stroke-width: 1.4;
    stroke-linecap: round; stroke-linejoin: round;
    transition: transform 0.5s var(--ease);
  }
  .prologue-return-btn .prb-jp {
    font-size: 9.5px;
    color: rgba(245, 240, 230, 0.6);
  }
  .prologue-return-btn .prb-en {
    display: none;
  }
  .prologue-return-btn:hover {
    opacity: 1;
    color: rgba(245, 216, 150, 0.9);
  }
  .prologue-return-btn:hover .prb-jp { color: rgba(245, 240, 230, 1); }
  .prologue-return-btn:hover svg { transform: translateX(-2px); }
  .scene-index-label::before {
    content: '';
    width: 14px; height: 1px;
    background: var(--green-jade);
  }
  .scene-index-label::after {
    content: '';
    flex: 1; height: 1px;
    background: linear-gradient(90deg, rgba(212, 164, 76, 0.5), transparent);
  }
  .scene-grid {
    display: flex;
    flex-direction: column;
    gap: 6px;
  }
  .scene-item {
    padding: 10px 0;
    cursor: none;
    position: relative;
    transition: all 0.3s var(--ease);
    display: flex;
    align-items: flex-start;
    gap: 12px;
    width: 100%;
    appearance: none;
    border: 0;
    background: transparent;
    color: inherit;
    text-align: left;
    font: inherit;
  }
  .scene-item:focus-visible {
    outline: 1px solid rgba(245, 216, 150, 0.85);
    outline-offset: 4px;
  }
  .scene-item .idx {
    font-family: var(--font-en);
    font-size: 10px;
    letter-spacing: 0.2em;
    color: var(--text-dim);
    min-width: 18px;
    padding-top: 4px;
    transition: color 0.3s;
  }
  .scene-item .scene-text {
    flex: 1;
    min-width: 0;
  }
  .scene-item .scene-jp {
    font-family: var(--font-jp);
    font-weight: 500;
    font-size: 15px;
    letter-spacing: 0.25em;
    color: var(--text-soft);
    transition: color 0.3s;
    display: flex;
    align-items: baseline;
    gap: 8px;
    flex-wrap: wrap;
  }
  .scene-item .scene-jp-sub {
    font-family: var(--font-jp);
    font-weight: 300;
    font-size: 9px;
    letter-spacing: 0.2em;
    color: var(--text-dim);
    transition: color 0.3s;
  }
  .scene-item .scene-en {
    font-family: var(--font-en);
    font-style: italic;
    font-size: 9px;
    letter-spacing: 0.3em;
    color: rgba(212, 164, 76, 0.55);
    margin-top: 3px;
    transition: color 0.3s;
  }
  .scene-item::before {
    content: '';
    position: absolute;
    left: -16px;
    top: 18px;
    width: 0;
    height: 1px;
    background: linear-gradient(90deg, var(--green-jade), var(--gold-warm));
    transition: width 0.3s var(--ease);
    box-shadow: 0 0 8px var(--gold-warm);
  }
  .scene-item:hover .scene-jp { color: rgba(245, 240, 230, 0.98); }
  .scene-item:hover .scene-jp-sub { color: var(--green-jade); }
  .scene-item:hover .scene-en { color: var(--gold-warm); }
  .scene-item:hover .idx { color: var(--gold); }
  .scene-item:hover::before { width: 10px; }
  .scene-item.active .scene-jp {
    color: var(--gold-warm);
    text-shadow: 0 0 18px rgba(245, 216, 150, 0.45);
  }
  .scene-item.active .scene-jp-sub { color: var(--green-jade); }
  .scene-item.active .scene-en { color: var(--gold-warm); }
  .scene-item.active .idx { color: var(--gold); }
  .scene-item.active::before { width: 12px; }

  /* 豬ｮ驕顔ｪ薙・繝舌・譎ゅ・騾｣蜍・ 蟇ｾ蠢懊☆繧九す繝ｼ繝ｳ繧堤惓縺丞・繧峨○繧・*/
  .scene-item.highlight .scene-jp {
    color: #fff;
    text-shadow:
      0 0 20px rgba(245, 216, 150, 0.9),
      0 0 40px rgba(245, 216, 150, 0.5),
      0 0 60px rgba(123, 165, 131, 0.3);
  }
  .scene-item.highlight .scene-jp-sub { color: var(--gold-warm); }
  .scene-item.highlight .scene-en {
    color: #fff;
    text-shadow: 0 0 16px rgba(245, 216, 150, 0.8);
  }
  .scene-item.highlight .idx {
    color: var(--gold-warm);
    text-shadow: 0 0 10px rgba(245, 216, 150, 0.8);
  }
  .scene-item.highlight::before {
    width: 16px;
    background: linear-gradient(90deg, var(--gold-warm), #fff);
    box-shadow: 0 0 14px var(--gold-warm);
  }
  .scene-item .scene-jp,
  .scene-item .scene-jp-sub,
  .scene-item .scene-en,
  .scene-item .idx {
    transition: color 0.4s var(--ease), text-shadow 0.4s var(--ease);
  }

  .tag-journey-panel {
    position: absolute;
    top: clamp(122px, 15dvh, 148px);
    bottom: 108px;
    left: 32px;
    width: min(360px, calc(100vw - 64px));
    overflow: visible;
    padding: 0;
    opacity: 0;
    pointer-events: none;
    transform: translateX(-18px);
    transition: opacity 1s var(--ease), transform 1.2s var(--ease-out);
  }
  .tag-journey-panel::-webkit-scrollbar { width: 3px; }
  .tag-journey-panel::-webkit-scrollbar-track { background: transparent; }
  .tag-journey-panel::-webkit-scrollbar-thumb { background: rgba(170, 205, 255, 0.22); border-radius: 2px; }
  body.tag-journey:not(.no-scene-selected) .tag-journey-panel {
    opacity: 1;
    pointer-events: auto;
    transform: translateX(0);
  }
  body.tag-journey:not(.no-scene-selected) .scene-index {
    opacity: 0 !important;
    pointer-events: none !important;
    transform: translateX(-20px);
  }
  body.tag-journey:not(.immersed) #mainCanvas {
    opacity: 0 !important;
    pointer-events: none !important;
  }
  body.immersed .tag-journey-panel {
    opacity: 0 !important;
    pointer-events: none !important;
    transform: translateX(-30px) !important;
    filter: blur(12px);
  }
  body.immersed .tag-paths-panel {
    opacity: 0 !important;
    pointer-events: none !important;
    transform: translateX(30px) !important;
    filter: blur(12px);
  }
  body.tag-journey:not(.immersed) .player {
    opacity: 0 !important;
    pointer-events: none !important;
    animation: none !important;
  }
  body.tag-journey:not(.no-scene-selected):not(.immersed) .action-tower {
    opacity: 1 !important;
    pointer-events: auto !important;
    animation: none !important;
  }
  .tag-journey-kicker {
    font-family: var(--font-en);
    font-size: 9px;
    letter-spacing: 0.5em;
    color: rgba(170, 205, 255, 0.72);
    text-transform: uppercase;
    display: flex;
    align-items: center;
    gap: 10px;
    margin-bottom: 14px;
  }
  .tag-journey-kicker::before,
  .tag-journey-kicker::after {
    content: '';
    height: 1px;
    background: linear-gradient(90deg, rgba(170, 205, 255, 0.65), transparent);
  }
  .tag-journey-kicker::before { width: 16px; }
  .tag-journey-kicker::after { flex: 1; }
  .tag-journey-card {
    position: relative;
    overflow: hidden;
    max-height: 100%;
    display: flex;
    flex-direction: column;
    padding: 20px 18px 18px;
    border: 1px solid rgba(184, 210, 255, 0.22);
    border-radius: 7px;
    background:
      radial-gradient(circle at 18% 0%, rgba(245, 216, 150, 0.13), transparent 34%),
      radial-gradient(circle at 90% 12%, rgba(170, 205, 255, 0.12), transparent 40%),
      linear-gradient(180deg, rgba(17, 23, 31, 0.64), rgba(7, 9, 12, 0.76));
    backdrop-filter: blur(22px) saturate(1.08);
    -webkit-backdrop-filter: blur(22px) saturate(1.08);
    box-shadow: 0 26px 84px rgba(0,0,0,0.34), inset 0 1px 0 rgba(245, 240, 230, 0.05);
  }
  .tag-journey-card::before {
    content: '';
    position: absolute;
    inset: 0;
    background: var(--tag-image, none) center / cover no-repeat;
    opacity: 0.15;
    filter: saturate(0.92) contrast(1.04);
    transform: scale(1.08);
    pointer-events: none;
  }
  .tag-journey-card::after {
    content: '';
    position: absolute;
    inset: 0;
    background:
      linear-gradient(90deg, rgba(5,7,10,0.9) 0%, rgba(5,7,10,0.74) 58%, rgba(5,7,10,0.48) 100%),
      radial-gradient(ellipse at 35% 0%, rgba(245,216,150,0.1), transparent 52%);
    pointer-events: none;
  }
  .tag-journey-card > * {
    position: relative;
    z-index: 1;
  }
  .tag-journey-title {
    font-family: var(--font-jp);
    font-weight: 400;
    font-size: 30px;
    letter-spacing: 0.14em;
    color: rgba(245, 240, 230, 0.96);
    margin-bottom: 8px;
    text-shadow: 0 0 22px rgba(170, 205, 255, 0.22), 0 4px 20px rgba(0,0,0,0.9);
  }
  .tag-journey-meta {
    font-family: var(--font-jp);
    font-size: 11px;
    letter-spacing: 0.1em;
    line-height: 1.85;
    color: rgba(245, 240, 230, 0.62);
    margin-bottom: 14px;
  }
  .tag-journey-map {
    display: grid;
    grid-template-columns: auto 1fr auto 1fr auto;
    align-items: center;
    gap: 7px;
    margin: 13px 0 15px;
    color: rgba(245, 240, 230, 0.58);
    font-family: var(--font-jp);
    font-size: 9px;
    letter-spacing: 0.12em;
  }
  .tag-journey-map .dot {
    width: 7px;
    height: 7px;
    border-radius: 50%;
    background: rgba(245, 216, 150, 0.75);
    box-shadow: 0 0 12px rgba(245, 216, 150, 0.32);
  }
  .tag-journey-map .line {
    height: 1px;
    background: linear-gradient(90deg, rgba(245,216,150,0.44), rgba(170,205,255,0.12));
  }
  .tag-current-track {
    margin: 12px 0 14px;
    padding: 13px 13px 12px;
    border: 1px solid rgba(245, 216, 150, 0.18);
    border-radius: 5px;
    background: linear-gradient(135deg, rgba(245,216,150,0.08), rgba(170,205,255,0.045));
  }
  .tag-current-label {
    font-family: var(--font-en);
    font-size: 8px;
    letter-spacing: 0.34em;
    color: rgba(245, 216, 150, 0.54);
    text-transform: uppercase;
    margin-bottom: 8px;
  }
  .tag-current-title {
    font-family: var(--font-jp);
    font-size: 16px;
    line-height: 1.55;
    letter-spacing: 0.08em;
    color: rgba(255, 250, 240, 0.96);
  }
  .tag-current-en {
    margin-top: 3px;
    font-family: var(--font-en);
    font-size: 9px;
    letter-spacing: 0.22em;
    color: rgba(170, 205, 255, 0.55);
    text-transform: uppercase;
  }
  .tag-current-note {
    margin-top: 8px;
    font-family: var(--font-jp);
    font-size: 10px;
    line-height: 1.75;
    letter-spacing: 0.08em;
    color: rgba(245, 240, 230, 0.58);
  }
  .tag-player-strip {
    display: grid;
    grid-template-columns: repeat(4, 42px);
    justify-content: center;
    gap: 9px;
    margin: 4px 0 12px;
  }
  .tag-player-btn {
    width: 42px;
    height: 42px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border: 1px solid rgba(245, 216, 150, 0.22);
    border-radius: 999px;
    color: rgba(245, 240, 230, 0.78);
    background: rgba(8, 12, 16, 0.38);
    box-shadow: inset 0 1px 0 rgba(245,240,230,0.04);
    transition: color 0.25s var(--ease), border-color 0.25s var(--ease), background 0.25s var(--ease), transform 0.25s var(--ease);
  }
  .tag-player-btn:hover,
  .tag-player-btn.active {
    color: var(--gold-warm);
    border-color: rgba(245, 216, 150, 0.48);
    background: rgba(245, 216, 150, 0.08);
    transform: translateY(-1px);
  }
  .tag-player-btn.tag-play {
    color: rgba(255, 248, 230, 0.95);
    background: linear-gradient(135deg, rgba(245,216,150,0.18), rgba(170,205,255,0.06));
  }
  .tag-player-btn svg {
    width: 16px;
    height: 16px;
    fill: none;
    stroke: currentColor;
    stroke-width: 1.6;
    stroke-linecap: round;
    stroke-linejoin: round;
  }
  .tag-player-btn svg.filled,
  .tag-player-btn svg .filled,
  .tag-player-btn.active svg {
    fill: currentColor;
  }
  .tag-mini-progress {
    display: grid;
    grid-template-columns: 34px minmax(0, 1fr) 34px;
    align-items: center;
    gap: 10px;
    margin: -2px 0 10px;
  }
  .tag-mini-time {
    font-family: var(--font-en);
    font-size: 9px;
    letter-spacing: 0.08em;
    color: rgba(245, 240, 230, 0.42);
  }
  .tag-mini-time.right {
    text-align: right;
  }
  .tag-mini-seek {
    position: relative;
    height: 12px;
    border: none;
    padding: 0;
    cursor: none;
    background: transparent;
  }
  .tag-mini-seek::before {
    content: '';
    position: absolute;
    left: 0;
    right: 0;
    top: 50%;
    height: 2px;
    transform: translateY(-50%);
    border-radius: 999px;
    background: rgba(245, 240, 230, 0.13);
  }
  .tag-mini-seek-fill {
    position: absolute;
    left: 0;
    top: 50%;
    height: 2px;
    width: 0%;
    transform: translateY(-50%);
    border-radius: 999px;
    background: linear-gradient(90deg, rgba(170, 205, 255, 0.78), rgba(245, 216, 150, 0.9));
    box-shadow: 0 0 12px rgba(245, 216, 150, 0.22);
  }
  .tag-mini-link {
    display: inline-flex;
    justify-content: center;
    width: 100%;
    margin: -1px 0 12px;
    font-family: var(--font-jp);
    font-size: 10px;
    letter-spacing: 0.14em;
    color: rgba(245, 216, 150, 0.76);
    text-decoration: none;
  }
  .tag-mini-link span {
    border-bottom: 1px solid rgba(245, 216, 150, 0.28);
    padding-bottom: 2px;
  }
  .tag-mini-link:hover {
    color: #fff;
  }
  .tag-mini-link:hover span {
    border-color: rgba(245, 216, 150, 0.72);
  }
  .tag-paths-panel {
    position: absolute;
    top: clamp(170px, 23dvh, 220px);
    right: 32px;
    width: min(340px, calc(100vw - 456px));
    max-height: calc(100dvh - 300px);
    padding: 16px 16px 15px;
    border: 1px solid rgba(184, 210, 255, 0.2);
    border-radius: 7px;
    background:
      radial-gradient(circle at 100% 0%, rgba(245, 216, 150, 0.1), transparent 38%),
      linear-gradient(180deg, rgba(15, 21, 29, 0.58), rgba(6, 8, 12, 0.76));
    backdrop-filter: blur(20px) saturate(1.04);
    -webkit-backdrop-filter: blur(20px) saturate(1.04);
    box-shadow: 0 26px 84px rgba(0,0,0,0.28), inset 0 1px 0 rgba(245, 240, 230, 0.04);
    opacity: 0;
    pointer-events: none;
    transform: translateX(18px);
    transition: opacity 1s var(--ease), transform 1.2s var(--ease-out);
  }
  body.tag-journey:not(.no-scene-selected):not(.immersed) .tag-paths-panel {
    opacity: 1;
    pointer-events: auto;
    transform: translateX(0);
  }
  @media (min-width: 981px) {
    body.tag-journey:not(.no-scene-selected):not(.immersed) .tag-paths-panel {
      right: 116px;
      width: min(340px, calc(100vw - 540px));
    }
  }
  body.tag-journey:not(.no-scene-selected):not(.immersed) .action-tower {
    right: 28px;
    bottom: 68px;
    max-height: calc(100dvh - 136px);
    gap: 8px;
    padding-right: 0;
    overflow: visible;
    z-index: 24;
  }
  body.tag-journey:not(.no-scene-selected):not(.immersed) .action-btn {
    gap: 0;
  }
  body.tag-journey:not(.no-scene-selected):not(.immersed) .action-btn .action-label {
    display: none;
  }
  body.tag-journey:not(.no-scene-selected):not(.immersed) .action-btn .action-circle {
    width: 52px;
    height: 52px;
  }
  .tag-track-preview {
    flex: 1 1 auto;
    min-height: 0;
    display: flex;
    flex-direction: column;
    overflow: hidden;
    margin: 0;
    padding-top: 0;
    border-top: 0;
  }
  .tag-track-preview-head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 10px;
    margin-bottom: 8px;
    font-family: var(--font-en);
    font-size: 8px;
    letter-spacing: 0.34em;
    color: rgba(170, 205, 255, 0.55);
    text-transform: uppercase;
  }
  .tag-track-preview-head span:last-child {
    letter-spacing: 0.18em;
    color: rgba(245, 240, 230, 0.34);
    white-space: nowrap;
  }
  .tag-track-list {
    flex: 1 1 auto;
    min-height: 0;
    max-height: min(178px, 24dvh);
    overflow-y: auto;
    padding-right: 4px;
    display: flex;
    flex-direction: column;
    gap: 6px;
  }
  .tag-track-list::-webkit-scrollbar { width: 3px; }
  .tag-track-list::-webkit-scrollbar-track { background: transparent; }
  .tag-track-list::-webkit-scrollbar-thumb { background: rgba(245, 216, 150, 0.22); border-radius: 2px; }
  .tag-track-item {
    width: 100%;
    min-height: 44px;
    padding: 8px 9px;
    display: grid;
    grid-template-columns: auto 1fr auto;
    gap: 8px;
    align-items: center;
    border: 1px solid rgba(170, 205, 255, 0.09);
    border-radius: 4px;
    background: rgba(255, 255, 255, 0.025);
    text-align: left;
    color: rgba(245, 240, 230, 0.72);
    transition: color 0.25s var(--ease), background 0.25s var(--ease), border-color 0.25s var(--ease);
  }
  .tag-track-item:hover,
  .tag-track-item.active {
    color: #fff;
    border-color: rgba(170, 205, 255, 0.28);
    background: rgba(170, 205, 255, 0.07);
  }
  .tag-track-index {
    font-family: var(--font-en);
    font-size: 9px;
    letter-spacing: 0.16em;
    color: rgba(245, 216, 150, 0.42);
  }
  .tag-track-text {
    min-width: 0;
  }
  .tag-track-name {
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    font-family: var(--font-jp);
    font-size: 11px;
    letter-spacing: 0.08em;
  }
  .tag-track-sub {
    margin-top: 2px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    font-family: var(--font-en);
    font-size: 8px;
    letter-spacing: 0.14em;
    color: rgba(245, 240, 230, 0.36);
    text-transform: uppercase;
  }
  .tag-track-play {
    font-family: var(--font-en);
    font-size: 8px;
    letter-spacing: 0.18em;
    color: rgba(245, 216, 150, 0.62);
  }
  .tag-track-control-row {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 7px;
    margin-top: 9px;
  }
  .tag-track-mini-btn {
    min-height: 30px;
    padding: 0 8px;
    border: 1px solid rgba(170, 205, 255, 0.14);
    border-radius: 999px;
    background: rgba(170, 205, 255, 0.035);
    color: rgba(245, 240, 230, 0.66);
    font-family: var(--font-jp);
    font-size: 10px;
    letter-spacing: 0.12em;
    transition: color 0.25s var(--ease), background 0.25s var(--ease), border-color 0.25s var(--ease);
  }
  .tag-track-mini-btn:hover:not(:disabled) {
    color: #fff;
    border-color: rgba(170, 205, 255, 0.38);
    background: rgba(170, 205, 255, 0.08);
  }
  .tag-track-mini-btn:disabled {
    opacity: 0.32;
    cursor: default;
  }
  .tag-journey-actions {
    display: grid;
    grid-template-columns: 1fr;
    gap: 7px;
    margin: 12px 0 14px;
    z-index: 2;
  }
  .tag-journey-btn {
    min-height: 32px;
    padding: 0 12px;
    border: 1px solid rgba(170, 205, 255, 0.24);
    border-radius: 999px;
    color: rgba(245, 240, 230, 0.76);
    font-family: var(--font-jp);
    font-size: 10px;
    letter-spacing: 0.18em;
    background: rgba(12, 18, 24, 0.36);
    transition: color 0.3s var(--ease), border-color 0.3s var(--ease), background 0.3s var(--ease);
  }
  .tag-journey-btn:hover {
    color: #fff;
    border-color: rgba(170, 205, 255, 0.62);
    background: rgba(36, 52, 72, 0.48);
  }
  .tag-journey-btn.primary {
    border-color: rgba(245, 216, 150, 0.36);
    color: rgba(255, 248, 230, 0.9);
    background: linear-gradient(135deg, rgba(245,216,150,0.16), rgba(170,205,255,0.06));
  }
  @media (max-height: 900px) {
    .tag-current-note { display: none; }
    .tag-track-list { max-height: min(156px, 20dvh); }
  }
  @media (max-width: 980px) {
    .tag-paths-panel {
      top: auto;
      right: auto;
      left: 32px;
      bottom: 52px;
      width: min(360px, calc(100vw - 64px));
      max-height: 214px;
    }
    .tag-paths-panel .tag-track-list { max-height: 142px; }
    .tag-journey-panel {
      bottom: 272px;
    }
  }
  @media (max-height: 760px) {
    .tag-journey-panel {
      top: 72px;
      bottom: 104px;
      width: min(340px, calc(100vw - 56px));
    }
    .tag-journey-card { padding: 16px 15px 15px; }
    .tag-journey-kicker { margin-bottom: 9px; }
    .tag-journey-title { font-size: 25px; }
    .tag-journey-meta { margin-bottom: 8px; line-height: 1.55; }
    .tag-journey-map { display: none; }
    .tag-current-track { margin: 8px 0 10px; padding: 10px 11px; }
    .tag-current-note { display: none; }
    .tag-journey-actions { margin: 9px 0 10px; gap: 6px; }
    .tag-journey-btn { min-height: 30px; font-size: 9.5px; }
    .tag-player-strip { grid-template-columns: repeat(4, 38px); gap: 7px; margin-bottom: 9px; }
    .tag-player-btn { width: 38px; height: 38px; }
    .tag-track-list { max-height: min(132px, 22dvh); gap: 5px; }
    .tag-track-item { min-height: 38px; }
  }
  @media (max-width: 980px) and (max-height: 760px) {
    .tag-journey-panel { bottom: 244px; }
    .tag-paths-panel { bottom: 46px; max-height: 196px; }
    .tag-paths-panel .tag-track-list { max-height: 126px; }
  }

  .nav-arrows {
    position: absolute; right: 36px; top: 50%;
    transform: translateY(-50%);
    display: flex; flex-direction: column; gap: 14px;
    opacity: 0;
    animation: fadeUp 2s 1.6s var(--ease-out) forwards;
  }
  .nav-arrow {
    width: 46px; height: 46px;
    border-radius: 50%;
    background: linear-gradient(135deg, rgba(26, 48, 40, 0.5), rgba(20, 18, 16, 0.35));
    backdrop-filter: blur(20px);
    -webkit-backdrop-filter: blur(20px);
    border: 1px solid rgba(212, 164, 76, 0.18);
    display: flex; align-items: center; justify-content: center;
    color: var(--text-soft);
    transition: all 0.35s var(--ease);
  }
  .nav-arrow:hover {
    color: var(--gold-warm);
    border-color: rgba(232, 196, 120, 0.6);
    background: linear-gradient(135deg, rgba(42, 74, 58, 0.7), rgba(30, 26, 22, 0.55));
    box-shadow: 0 0 30px rgba(212, 164, 76, 0.25);
    transform: scale(1.08);
  }
  .nav-arrow svg { width: 14px; height: 14px; fill: none; stroke: currentColor; stroke-width: 1.2; }

  .scene-title {
    position: fixed; top: 42%; left: 50%;
    transform: translate(-50%, -50%);
    z-index: 20;
    text-align: center;
    pointer-events: none;
    opacity: 0;
    transition: opacity 2s var(--ease);
  }
  .scene-title.visible { opacity: 1; }
  .scene-title .title-jp {
    font-family: var(--font-jp);
    font-weight: 300;
    font-size: clamp(34px, 4.8vw, 72px);
    letter-spacing: clamp(0.12em, 0.9vw, 0.34em);
    color: #fff;
    text-indent: clamp(0.12em, 0.9vw, 0.34em);
    text-shadow:
      0 0 100px rgba(0,0,0,0.95),
      0 4px 24px rgba(0,0,0,0.7),
      0 0 60px rgba(123, 165, 131, 0.3);
    margin-bottom: 14px;
    max-width: min(86vw, 980px);
    white-space: nowrap;
    line-break: strict;
  }
  .scene-title .title-en {
    font-family: var(--font-en);
    font-size: clamp(11px, 1vw, 13px);
    letter-spacing: 0.55em;
    color: rgba(245, 216, 150, 0.9);
    text-transform: uppercase;
    display: flex; align-items: center; justify-content: center;
  }
  .scene-title .title-en::before,
  .scene-title .title-en::after {
    content: '';
    display: inline-block;
    width: 32px; height: 1px;
    background: currentColor;
    margin: 0 22px;
    opacity: 0.5;
  }

  .immersive-title {
    position: fixed; bottom: 8vh; left: 50%;
    transform: translateX(-50%) translateY(40px);
    z-index: 25;
    text-align: center;
    pointer-events: none;
    opacity: 0;
    transition: opacity 2s 1s var(--ease), transform 2s 1s var(--ease-out);
  }
  body.immersed .immersive-title {
    opacity: 1;
    transform: translateX(-50%) translateY(0);
  }
  .immersive-title .im-name {
    font-family: var(--font-jp);
    font-weight: 300;
    font-size: clamp(30px, 4.5vw, 60px);       /* 螟ｧ蟷・僑螟ｧ */
    letter-spacing: clamp(0.12em, 0.85vw, 0.34em);
    color: #fff;
    text-shadow:
      0 0 48px rgba(0,0,0,0.95),
      0 4px 20px rgba(0,0,0,0.8),
      0 0 120px rgba(245, 216, 150, 0.38),  /* 驥題牡繧ｰ繝ｭ繝ｼ蠑ｷ蛹・*/
      0 0 2px rgba(255, 255, 255, 0.5);
    animation: breathe 5s ease-in-out infinite;
    margin-bottom: 18px;
    text-indent: clamp(0.12em, 0.85vw, 0.34em);
    position: relative;
    padding: 22px 0;
    max-width: min(90vw, 1100px);
    white-space: nowrap;
    line-break: strict;
  }
  /* 譖ｲ蜷阪・荳贋ｸ九↓驥題牡縺ｮ陬・｣ｾ繝ｩ繧､繝ｳ (繧ｰ繝ｩ繝・+ 中央に菱形) */
  .immersive-title .im-name::before,
  .immersive-title .im-name::after {
    content: '';
    position: absolute;
    left: 50%;
    transform: translateX(-50%);
    width: min(180px, 34vw);
    height: 1px;
    background: linear-gradient(90deg,
      transparent 0%,
      rgba(245, 216, 150, 0.0) 10%,
      rgba(245, 216, 150, 0.65) 50%,
      rgba(245, 216, 150, 0.0) 90%,
      transparent 100%);
    box-shadow: 0 0 8px rgba(245, 216, 150, 0.35);
  }
  .immersive-title .im-name::before { top: 0; }
  .immersive-title .im-name::after  { bottom: 0; }
  /* 繝ｩ繧､繝ｳ縺ｮ荳ｭ螟ｮ縺ｫ闖ｱ蠖｢縺ｮ驥題牡繝槭・繧ｫ繝ｼ (2つ: 荳翫→荳・ */
  .immersive-title::before,
  .immersive-title::after {
    content: '◆';
    display: block;
    color: rgba(245, 216, 150, 0.85);
    font-size: 10px;
    text-shadow: 0 0 12px rgba(245, 216, 150, 0.6);
    line-height: 1;
    margin: 0 auto;
  }
  .immersive-title::before { margin-bottom: -6px; position: relative; z-index: 2; }
  .immersive-title::after  { margin-top: -6px;  position: relative; z-index: 2; }

  .immersive-title .im-composer {
    font-family: var(--font-en);
    font-size: 11px;
    letter-spacing: 0.55em;
    color: rgba(245, 216, 150, 0.85);
    text-shadow: 0 0 20px rgba(0,0,0,0.8), 0 0 30px rgba(245, 216, 150, 0.25);
    text-transform: uppercase;
    margin-top: 4px;
  }
  @keyframes breathe {
    0%, 100% { opacity: 0.9; }
    50% {
      opacity: 1;
      text-shadow:
        0 0 48px rgba(0,0,0,0.95),
        0 4px 20px rgba(0,0,0,0.7),
        0 0 140px rgba(245, 216, 150, 0.55),
        0 0 2px rgba(255, 255, 255, 0.6);
    }
  }

  .immersive-exit {
    position: fixed; top: 30px; right: 40px;
    z-index: 27;
    opacity: 0;
    pointer-events: none;
    transform: translateY(-10px);
    transition: opacity 0.8s 1.5s var(--ease), transform 0.8s 1.5s var(--ease-out);
    /* 閭梧勹繧貞ｼｷ繧√※譏弱ｋ縺・勹濶ｲ縺ｮ荳翫〒繧りｦ九∴繧九ｈ縺・↓ */
    background: linear-gradient(135deg, rgba(26, 48, 40, 0.85), rgba(13, 18, 16, 0.9)) !important;
    backdrop-filter: blur(24px) saturate(1.4);
    -webkit-backdrop-filter: blur(24px) saturate(1.4);
    border: 1px solid rgba(232, 196, 120, 0.55) !important;
    box-shadow: 0 4px 20px rgba(0,0,0,0.5), 0 0 28px rgba(245, 216, 150, 0.12) !important;
  }
  body.immersed .immersive-exit {
    opacity: 0.88;
    pointer-events: auto;
    transform: translateY(0);
  }
  body.immersed .immersive-exit:hover {
    opacity: 1;
    background: linear-gradient(135deg, rgba(42, 74, 58, 0.95), rgba(26, 22, 18, 0.95)) !important;
    border-color: var(--gold-warm) !important;
    box-shadow: 0 4px 24px rgba(0,0,0,0.6), 0 0 40px rgba(245, 216, 150, 0.35) !important;
  }
  body.immersed .immersive-exit .label-normal {
    color: #fff;
    text-shadow: 0 2px 8px rgba(0,0,0,0.8);
  }

  /* ============ 豐｡蜈･繝｢繝ｼ繝峨・繝溘ル繝槭Ν繧ｳ繝ｳ繝医Οール ============ */
  .immersive-controls {
    position: fixed;
    bottom: 60px;
    left: 50%;
    transform: translateX(-50%) translateY(20px);
    z-index: 27;
    display: flex;
    align-items: center;
    gap: 18px;
    padding: 10px 22px;
    background: linear-gradient(180deg, rgba(26, 48, 40, 0.25), rgba(13, 18, 16, 0.5));
    backdrop-filter: blur(30px) saturate(1.3);
    -webkit-backdrop-filter: blur(30px) saturate(1.3);
    border: 1px solid rgba(212, 164, 76, 0.18);
    border-radius: 999px;
    opacity: 0;
    pointer-events: none;
    transition: opacity 1.5s 3s var(--ease), transform 1.5s 3s var(--ease-out);
  }
  body.immersed .immersive-controls {
    opacity: 0.3;
    pointer-events: auto;
    transform: translateX(-50%) translateY(0);
  }
  body.immersed .immersive-controls:hover {
    opacity: 1;
  }
  .im-ctrl-btn {
    width: 34px; height: 34px;
    display: flex;
    align-items: center;
    justify-content: center;
    color: rgba(245, 240, 230, 0.7);
    border-radius: 50%;
    background: none;
    border: none;
    cursor: none;
    transition: all 0.3s;
  }
  .im-ctrl-btn:hover {
    color: var(--gold-warm);
    background: rgba(212, 164, 76, 0.1);
  }
  .im-ctrl-btn.active {
    color: var(--gold-warm);
    background: rgba(245, 216, 150, 0.12);
  }
  .im-ctrl-btn svg {
    width: 14px; height: 14px;
    fill: none;
    stroke: currentColor;
    stroke-width: 1.5;
  }
  .im-ctrl-btn svg.filled,
  .im-ctrl-btn.active svg { fill: currentColor; stroke: none; }
  .im-ctrl-btn.im-play {
    width: 46px; height: 46px;
    color: var(--gold-warm);
  }
  .im-ctrl-btn.im-play svg {
    width: 18px; height: 18px;
    fill: currentColor;
    stroke: none;
  }
  .im-ctrl-btn.im-play:hover {
    background: rgba(245, 216, 150, 0.15);
    box-shadow: 0 0 24px rgba(212, 164, 76, 0.3);
  }

  /* ============ 豐｡蜈･繝｢繝ｼ繝峨・繧ｷ繝ｼ繝ｳ繧ｿ繧､繝医Ν (諠・勹蜷・ ============
     逕ｻ髱｢荳ｭ螟ｮ縺ｫ螟ｧ縺阪￥陦ｨ遉ｺ縲り｣・｣ｾ縺ｯ譖ｲ蜷・im-name)縺ｨ諢丞峙逧・↓蟾ｮ蛻･蛹・
       譖ｲ蜷・  = 金色の水平ラインと菱形 (讓ｪ譁ｹ蜷代・陬・｣ｾ)
       諠・勹蜷・= 蜿､縺肴愕蜊ｰ鬚ｨ縺ｮ荳贋ｸ九ヶ繝ｩ繧ｱ繝・ヨ縺ｨ荳ｭ螟ｮ縺ｮ譛ｧ蜀・(邵ｦ繝ｻ雎｡蠕ｴ縺ｮ陬・｣ｾ)
  */
  .immersive-subtitle {
    position: fixed;
    top: 42%;
    left: 50%;
    transform: translate(-50%, -50%) scale(0.94);
    z-index: 28;
    text-align: center;
    pointer-events: none;
    opacity: 0;
    width: min(92vw, 980px);
    display: grid;
    justify-items: center;
    transition: opacity 1.6s var(--ease), transform 1.8s var(--ease-out);
  }
  .immersive-subtitle.visible {
    opacity: 1;
    transform: translate(-50%, -50%) scale(1);
  }
  /* Decorative title rails. Brackets looked broken around large JP tags, so keep this quiet. */
  .immersive-subtitle::before {
    content: '';
    display: block;
    width: min(180px, 42vw);
    height: 1px;
    margin-bottom: 18px;
    background: linear-gradient(90deg, transparent, rgba(123, 165, 131, 0.68), rgba(245, 216, 150, 0.46), rgba(123, 165, 131, 0.68), transparent);
    box-shadow: 0 0 18px rgba(123, 165, 131, 0.3);
  }
  .immersive-subtitle::after {
    content: '';
    display: block;
    width: min(180px, 42vw);
    height: 1px;
    margin-top: 18px;
    background: linear-gradient(90deg, transparent, rgba(123, 165, 131, 0.68), rgba(245, 216, 150, 0.46), rgba(123, 165, 131, 0.68), transparent);
    box-shadow: 0 0 18px rgba(123, 165, 131, 0.3);
  }
  .immersive-subtitle .im-sub-jp {
    font-family: var(--font-jp);
    font-weight: 300;
    font-size: clamp(46px, 7vw, 96px);
    letter-spacing: clamp(0.1em, 0.9vw, 0.24em);
    color: #fff;
    text-indent: clamp(0.1em, 0.9vw, 0.24em);
    line-height: 1.18;
    max-width: 100%;
    overflow-wrap: anywhere;
    text-shadow:
      0 0 120px rgba(0, 0, 0, 0.95),
      0 0 80px rgba(123, 165, 131, 0.5),   /* 邱代・逋ｺ蜈峨〒諠・勹繧定ｱ｡蠕ｴ (譖ｲ蜷阪・驥題牡逋ｺ蜈峨→蟾ｮ蛻･蛹・ */
      0 6px 32px rgba(0, 0, 0, 0.85);
    margin: 0 0 16px;
    animation: imSubBreathe 5.5s ease-in-out infinite;
  }
  @keyframes imSubBreathe {
    0%, 100% { text-shadow:
      0 0 120px rgba(0, 0, 0, 0.95),
      0 0 80px rgba(123, 165, 131, 0.5),
      0 6px 32px rgba(0, 0, 0, 0.85); }
    50%      { text-shadow:
      0 0 140px rgba(0, 0, 0, 0.95),
      0 0 120px rgba(123, 165, 131, 0.8),
      0 0 200px rgba(123, 165, 131, 0.25),
      0 6px 32px rgba(0, 0, 0, 0.85); }
  }
  .immersive-subtitle .im-sub-en {
    font-family: var(--font-en);
    font-style: italic;
    font-size: clamp(13px, 1.3vw, 17px);
    letter-spacing: 0.6em;
    color: rgba(123, 165, 131, 0.95);
    text-transform: uppercase;
    text-indent: 0.6em;
    margin: 0 0 10px;
    text-shadow: 0 2px 12px rgba(0,0,0,0.85), 0 0 20px rgba(123, 165, 131, 0.35);
  }
  .immersive-subtitle .im-sub-genre {
    font-family: var(--font-jp);
    font-weight: 300;
    font-size: 12px;
    letter-spacing: 0.45em;
    color: rgba(245, 216, 150, 0.75);
    text-indent: 0.45em;
    text-shadow: 0 2px 8px rgba(0,0,0,0.9);
  }

  @media (max-width: 768px) {
    .immersive-controls { bottom: 40px; gap: 12px; padding: 8px 16px; }
    .im-ctrl-btn { width: 30px; height: 30px; }
    .im-ctrl-btn.im-play { width: 40px; height: 40px; }
    .immersive-subtitle .im-sub-jp { font-size: clamp(34px, 11vw, 48px); letter-spacing: 0.16em; text-indent: 0.16em; }
    .immersive-subtitle .im-sub-en { font-size: 10px; letter-spacing: 0.4em; }
    .immersive-subtitle::before,
    .immersive-subtitle::after { width: min(140px, 44vw); }
  }

  .player {
    position: absolute; bottom: 32px;
    left: 50%; right: auto;
    transform: translate(-50%, 12px);   /* 繧｢繝九Γ蜑阪・蛻晄悄菴咲ｽｮ (-50% 荳ｭ螟ｮ蟇・○保持) */
    width: min(94vw, 720px);
    margin: 0;
    opacity: 0;
    animation: fadeUpCentered 2s 1.8s var(--ease-out) forwards;
  }
  .player-card {
    background: linear-gradient(180deg, rgba(26, 48, 40, 0.2) 0%, rgba(13, 18, 16, 0.55) 100%);
    backdrop-filter: blur(44px) saturate(1.5);
    -webkit-backdrop-filter: blur(44px) saturate(1.5);
    border: 1px solid rgba(212, 164, 76, 0.18);
    border-radius: 3px;
    padding: 20px 30px 16px;
    position: relative;
    box-shadow: 0 20px 80px rgba(0,0,0,0.6), 0 0 60px rgba(42, 74, 58, 0.15);
  }
  .player-card::before {
    content: '';
    position: absolute;
    top: -1px; left: 22%; right: 22%;
    height: 1px;
    background: linear-gradient(90deg, transparent, var(--green-jade) 20%, var(--gold-warm) 50%, var(--green-jade) 80%, transparent);
  }
  .track-info {
    display: flex; justify-content: space-between;
    align-items: baseline;
    margin-bottom: 14px;
    gap: 20px;
  }
  .track-name-group {
    min-width: 0; flex: 1;
    position: relative;
  }
  .track-name {
    font-family: var(--font-jp);
    font-weight: 500;
    font-size: 19px;
    letter-spacing: 0.15em;
    color: #fff;
    margin-bottom: 3px;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    transition: opacity 0.3s ease;
  }
  /* ロード中: 譖ｲ蜷阪ｒ蟆代＠阮・￥ + 荳九↓邏ｰ縺・ｲ陦後ヰ繝ｼ */
  body.audio-loading .track-name { opacity: 0.55; }
  body.audio-loading .track-name-group::after {
    content: '';
    position: absolute;
    left: 0; bottom: -4px;
    height: 1.5px;
    background: linear-gradient(90deg, transparent, var(--gold-warm), var(--green-jade), transparent);
    background-size: 200% 100%;
    animation: loadingBar 1.4s linear infinite;
    width: 100%;
    opacity: 0.9;
  }
  @keyframes loadingBar {
    0%   { background-position: 200% 0; }
    100% { background-position: -200% 0; }
  }
  @media (prefers-reduced-motion: reduce) {
    body.audio-loading .track-name-group::after {
      animation: none;
      background: var(--gold-warm);
      opacity: 0.6;
    }
  }
  .track-composer {
    font-family: var(--font-en);
    font-size: 10px;
    letter-spacing: 0.32em;
    color: var(--text-soft);
    text-transform: uppercase;
  }
  .track-composer-note {
    position: relative;
    overflow: hidden;
    max-height: 0;
    margin: 0;
    padding: 0 18px;
    border: 1px solid rgba(245, 216, 150, 0);
    background: rgba(245, 216, 150, 0);
    opacity: 0;
    transform: translateY(6px);
    transition: max-height 0.45s ease, margin 0.45s ease, padding 0.45s ease, opacity 0.35s ease, transform 0.35s ease, border-color 0.35s ease, background 0.35s ease;
  }
  .track-composer-note.visible {
    max-height: 140px;
    margin: 10px 0 12px;
    padding: 10px 18px 11px;
    border-color: rgba(245, 216, 150, 0.22);
    background: linear-gradient(135deg, rgba(245, 216, 150, 0.12), rgba(84, 181, 160, 0.08));
    opacity: 1;
    transform: translateY(0);
  }
  .track-composer-note__label {
    display: block;
    margin-bottom: 5px;
    font-family: var(--font-en);
    font-size: 9px;
    letter-spacing: 0.34em;
    color: var(--gold-warm);
    text-transform: uppercase;
  }
  .track-composer-note__text {
    margin: 0;
    font-family: var(--font-jp);
    font-size: 11px;
    line-height: 1.8;
    letter-spacing: 0.08em;
    color: rgba(255, 252, 238, 0.76);
  }
  .track-license {
    font-family: var(--font-jp);
    font-weight: 400;
    font-size: 10px;
    letter-spacing: 0.15em;
    color: var(--text-soft);
    text-align: right;
    line-height: 1.7;
  }
  .track-license a {
    color: var(--gold-warm);
    text-decoration: none;
    border-bottom: 1px solid rgba(245, 216, 150, 0.35);
    padding-bottom: 1px;
    transition: all 0.3s;
  }
  .track-license a:hover { border-color: var(--gold-warm); color: #fff; }

  .seekbar-wrap {
    display: flex; align-items: center; gap: 12px;
    margin-bottom: 12px;
  }
  .time-code {
    font-family: var(--font-en);
    font-size: 10px;
    letter-spacing: 0.1em;
    color: var(--text-dim);
    min-width: 34px;
  }
  .time-code.right { text-align: right; }
  .seekbar {
    flex: 1; height: 2px;
    background: rgba(245, 240, 230, 0.1);
    border-radius: 1px;
    position: relative;
    cursor: none;
    overflow: visible;
  }
  .seekbar-filled {
    position: absolute; left: 0; top: 0; bottom: 0;
    background: linear-gradient(90deg, var(--green-jade) 0%, var(--gold-warm) 100%);
    border-radius: 1px;
    width: 0%;
    box-shadow: 0 0 10px rgba(212, 164, 76, 0.5);
  }
  .seekbar-handle {
    position: absolute; top: 50%;
    width: 11px; height: 11px;
    border-radius: 50%;
    background: var(--gold-warm);
    transform: translate(-50%, -50%);
    box-shadow: 0 0 16px rgba(245, 216, 150, 0.9);
    opacity: 0;
    transition: opacity 0.3s;
    left: 0%;
  }
  .seekbar:hover .seekbar-handle { opacity: 1; }

  .controls {
    display: flex; align-items: center; justify-content: space-between;
  }
  .controls-left, .controls-right {
    display: flex; align-items: center; gap: 4px;
  }
  .controls-center {
    display: flex; align-items: center; gap: 14px;
  }
  .ctrl-btn {
    width: 36px; height: 36px;
    display: flex; align-items: center; justify-content: center;
    color: var(--text-soft);
    border-radius: 50%;
    transition: all 0.3s;
  }
  .ctrl-btn:hover {
    color: var(--gold-warm);
    background: rgba(232, 196, 120, 0.1);
  }
  .ctrl-btn.active { color: var(--gold-warm); }
  .ctrl-btn svg {
    width: 16px; height: 16px;
    fill: none; stroke: currentColor;
    stroke-width: 1.5;
    stroke-linecap: round;
    stroke-linejoin: round;
  }
  .ctrl-btn svg.filled { fill: currentColor; stroke: none; }

  /* 髻ｳ驥上さ繝ｳ繝医Οール */
  .volume-wrap {
    display: flex; align-items: center; gap: 6px;
    margin-left: 4px;
  }
  .volume-wrap .ctrl-btn { width: 32px; height: 32px; }
  .volume-slider {
    -webkit-appearance: none; appearance: none;
    width: 72px; height: 3px;
    background: rgba(245, 216, 150, 0.18);
    border-radius: 2px; outline: none;
    transition: background 0.2s;
    cursor: pointer;
  }
  .volume-slider:hover { background: rgba(245, 216, 150, 0.32); }
  .volume-slider::-webkit-slider-thumb {
    -webkit-appearance: none; appearance: none;
    width: 11px; height: 11px;
    background: var(--gold-warm);
    border-radius: 50%;
    box-shadow: 0 0 6px rgba(212, 164, 76, 0.6);
    cursor: pointer;
  }
  .volume-slider::-moz-range-thumb {
    width: 11px; height: 11px;
    background: var(--gold-warm);
    border-radius: 50%;
    border: none;
    box-shadow: 0 0 6px rgba(212, 164, 76, 0.6);
    cursor: pointer;
  }
  @media (max-width: 720px) {
    .volume-slider { width: 56px; }
  }

  .play-btn {
    width: 56px; height: 56px;
    border: 1px solid rgba(245, 216, 150, 0.6);
    background: radial-gradient(circle at center, rgba(212, 164, 76, 0.15), rgba(42, 74, 58, 0.2));
    border-radius: 50%;
    display: flex; align-items: center; justify-content: center;
    color: var(--gold-warm);
    transition: all 0.3s var(--ease);
    box-shadow: 0 0 28px rgba(212, 164, 76, 0.25), 0 0 40px rgba(123, 165, 131, 0.15);
  }
  .play-btn:hover {
    background: radial-gradient(circle at center, rgba(212, 164, 76, 0.25), rgba(42, 74, 58, 0.3));
    border-color: var(--gold-warm);
    box-shadow: 0 0 40px rgba(245, 216, 150, 0.5), 0 0 60px rgba(123, 165, 131, 0.3);
    transform: scale(1.08);
  }
  .play-btn svg { width: 20px; height: 20px; fill: currentColor; stroke: none; }

  .prologue {
    position: fixed; inset: 0; z-index: 1000;
    background:
      radial-gradient(ellipse at center, rgba(30, 50, 40, 0.42), transparent 50%),
      linear-gradient(180deg, rgba(0,0,0,0.74), rgba(5,8,7,0.48) 46%, rgba(0,0,0,0.8));
    display: flex; align-items: center; justify-content: center;
    flex-direction: column;
    transition: opacity 2.5s var(--ease);
    overflow: hidden;
  }
  .prologue > *:not(.theater-entrance-bg):not(.theater-entrance-veil) {
    position: relative;
    z-index: 1;
  }
  .prologue.done { opacity: 0; pointer-events: none; }
  body[data-theater-entered="1"] .prologue {
    display: none !important;
    pointer-events: none !important;
  }
  .theater-lang-switch {
    position: fixed;
    top: calc(8px + env(safe-area-inset-top));
    left: 0;
    right: 0;
    z-index: 20;
    display: inline-flex;
    align-items: center;
    gap: 4px;
    padding: 5px;
    border: 1px solid rgba(245, 216, 150, 0.2);
    border-radius: 999px;
    background: rgba(8, 16, 12, 0.46);
    backdrop-filter: blur(12px) saturate(1.2);
    -webkit-backdrop-filter: blur(12px) saturate(1.2);
    box-shadow: 0 12px 42px rgba(0,0,0,0.28);
    opacity: 0;
    width: max-content;
    margin: 0 auto;
    transform: none;
    animation: pMarkFade 1.5s 0.9s var(--ease-out) forwards;
  }
  .theater-lang-choice {
    min-width: 42px;
    height: 28px;
    padding: 0 12px;
    border-radius: 999px;
    font-family: var(--font-en);
    font-size: 10px;
    letter-spacing: 0.18em;
    color: rgba(245, 240, 230, 0.52);
    cursor: pointer;
    transition: color 0.3s var(--ease), background 0.3s var(--ease), box-shadow 0.3s var(--ease);
  }
  .theater-lang-choice.active {
    color: #fff;
    background: rgba(212, 164, 76, 0.22);
    box-shadow: inset 0 0 0 1px rgba(245, 216, 150, 0.34), 0 0 18px rgba(212, 164, 76, 0.16);
  }
  .theater-lang-choice:hover {
    color: rgba(245, 216, 150, 0.9);
  }
  .prologue-mark {
    width: 54px; height: 54px;
    position: relative;
    z-index: 1;
    opacity: 0;
    margin-bottom: 60px;
    animation: pMarkFade 1.5s 0.5s var(--ease-out) forwards;
    pointer-events: none;
  }
  .prologue-mark::before, .prologue-mark::after {
    content: ''; position: absolute; opacity: 0.7;
  }
  .prologue-mark::before {
    width: 100%; height: 1px; top: 50%; left: 0;
    transform: translateY(-50%);
    background: linear-gradient(90deg, var(--green-jade), var(--gold));
  }
  .prologue-mark::after {
    width: 1px; height: 100%; left: 50%; top: 0;
    transform: translateX(-50%);
    background: linear-gradient(180deg, var(--green-jade), var(--gold));
  }
  .prologue-mark .circle {
    position: absolute; inset: 0;
    border: 1px solid rgba(212, 164, 76, 0.5);
    border-radius: 50%;
    animation: pRotate 10s linear infinite;
  }
  .prologue-mark .circle2 {
    position: absolute; inset: 8px;
    border: 1px solid rgba(123, 165, 131, 0.4);
    border-radius: 50%;
    animation: pRotate 14s linear infinite reverse;
  }
  @keyframes pRotate { to { transform: rotate(360deg); } }
  @keyframes pMarkFade { to { opacity: 1; } }

  .prologue-stage {
    position: relative;
    z-index: 1;
    height: 80px;
    display: flex; align-items: center; justify-content: center;
    width: 90vw;
  }
  .prologue-line {
    position: absolute;
    font-family: var(--font-jp);
    font-weight: 300;
    font-size: clamp(16px, 1.8vw, 22px);
    letter-spacing: 0.45em;
    color: rgba(245, 240, 230, 0.92);
    text-indent: 0.45em;
    text-shadow: 0 0 30px rgba(245, 216, 150, 0.25);
    opacity: 0;
    transform: translateY(12px);
    transition: opacity 1.5s var(--ease), transform 1.5s var(--ease-out);
    white-space: nowrap;
  }
  .prologue-line.show { opacity: 1; transform: translateY(0); }
  .prologue-line.hide { opacity: 0; transform: translateY(-8px); }
  .prologue-sub {
    position: relative;
    z-index: 1;
    margin-top: 40px;
    font-family: var(--font-en);
    font-size: 10px;
    letter-spacing: 0.55em;
    color: rgba(212, 164, 76, 0.5);
    text-transform: uppercase;
    opacity: 0;
    animation: pMarkFade 2s 1s var(--ease-out) forwards;
  }
  /* 音声再生の予告 + 入場ボタン (繝励Ο繝ｭ繝ｼ繧ｰ蜀・ */
  .prologue-enter-wrap {
    margin-top: 26px;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 14px;
    opacity: 0;
    animation: pMarkFade 2s 1.8s var(--ease-out) forwards;
    position: relative;
    z-index: 1;
  }
  .prologue-audio-notice {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    font-family: var(--font-jp);
    font-size: 10.5px;
    letter-spacing: 0.3em;
    color: rgba(245, 216, 150, 0.55);
    text-shadow: 0 0 8px rgba(245, 216, 150, 0.2);
  }
  .prologue-audio-notice svg {
    flex-shrink: 0;
    color: rgba(245, 216, 150, 0.65);
    animation: audioNoticePulse 2.2s ease-in-out infinite;
  }
  @keyframes audioNoticePulse {
    0%, 100% { opacity: 0.5; transform: scale(1); }
    50%      { opacity: 1;   transform: scale(1.08); }
  }

  /* 入場ボタン (矧 縺薙・蜈医・浹縺梧ｵ√ｌ縺ｾ縺・ */
  .prologue-enter-btn {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    padding: 10px 22px;
    font-family: var(--font-jp);
    font-weight: 400;
    color: rgba(245, 216, 150, 0.72);
    background: rgba(10, 20, 14, 0.46);
    border: 1px solid rgba(245, 216, 150, 0.28);
    border-radius: 999px;
    cursor: pointer;
    transition: all 0.4s var(--ease);
    box-shadow:
      0 0 20px rgba(212, 164, 76, 0.12);
    backdrop-filter: blur(8px);
    -webkit-backdrop-filter: blur(8px);
    animation: enterBtnBreathe 3s ease-in-out infinite;
  }
  .prologue-enter-btn svg {
    flex-shrink: 0;
    color: rgba(245, 216, 150, 0.75);
    animation: audioNoticePulse 2.2s ease-in-out infinite;
  }
  .prologue-enter-btn .peb-ja {
    font-size: 11px;
    letter-spacing: 0.22em;
    text-indent: 0.22em;
  }
  .prologue-enter-btn:hover {
    border-color: rgba(245, 216, 150, 0.85);
    background: linear-gradient(135deg, rgba(212, 164, 76, 0.22), rgba(64, 206, 180, 0.12));
    box-shadow:
      0 0 28px rgba(212, 164, 76, 0.35),
      0 0 50px rgba(64, 206, 180, 0.12),
      inset 0 1px 0 rgba(255, 255, 255, 0.15);
    transform: translateY(-1px);
  }
  .prologue-enter-btn:active { transform: translateY(0); }

  /* 入場前の音量調整 (prologue-volume) */
  .prologue-volume {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 6px 14px 6px 12px;
    background: rgba(8, 16, 12, 0.42);
    border: 1px solid rgba(245, 216, 150, 0.2);
    border-radius: 999px;
    backdrop-filter: blur(8px);
    -webkit-backdrop-filter: blur(8px);
    margin-bottom: 4px;
  }
  .prologue-volume__icon {
    color: rgba(245, 216, 150, 0.55);
    flex-shrink: 0;
  }
  .prologue-volume__slider {
    -webkit-appearance: none; appearance: none;
    width: 130px;
    height: 2px;
    background: rgba(245, 216, 150, 0.28);
    border-radius: 999px;
    outline: none;
    cursor: pointer;
  }
  .prologue-volume__slider::-webkit-slider-thumb {
    -webkit-appearance: none; appearance: none;
    width: 12px; height: 12px;
    border-radius: 50%;
    background: rgba(245, 216, 150, 0.9);
    border: 1px solid rgba(255, 255, 255, 0.6);
    box-shadow: 0 0 10px rgba(245, 216, 150, 0.5);
    cursor: pointer;
    transition: transform 0.15s ease;
  }
  .prologue-volume__slider::-webkit-slider-thumb:hover { transform: scale(1.18); }
  .prologue-volume__slider::-moz-range-thumb {
    width: 12px; height: 12px;
    border-radius: 50%;
    background: rgba(245, 216, 150, 0.9);
    border: 1px solid rgba(255, 255, 255, 0.6);
    box-shadow: 0 0 10px rgba(245, 216, 150, 0.5);
    cursor: pointer;
  }
  .prologue-volume__value {
    font-family: var(--font-en);
    font-size: 10px;
    letter-spacing: 0.1em;
    color: rgba(245, 216, 150, 0.6);
    min-width: 22px;
    text-align: right;
    font-variant-numeric: tabular-nums;
  }
  @media (max-width: 768px) {
    .theater-lang-switch {
      top: calc(4px + env(safe-area-inset-top));
      left: 0;
      right: 0;
      transform: none !important;
      gap: 6px;
      padding: 6px;
      width: max-content;
      margin: 0 auto;
      z-index: 20;
    }
    .theater-lang-choice {
      min-width: 54px;
      height: 34px;
      padding: 0 14px;
      font-size: 11px;
    }
    .prologue-mark {
      width: 46px;
      height: 46px;
      margin-top: 128px;
      margin-bottom: 52px;
      opacity: 0.62;
    }
    .prologue-volume { padding: 5px 10px 5px 8px; gap: 8px; }
    .prologue-volume__slider { width: 110px; }
    .prologue-volume__value { font-size: 9px; min-width: 20px; }
  }

  /* 豐｡蜈･繝｢繝ｼ繝臥畑繝輔Ο繝ｼ繝・ぅ繝ｳ繧ｰ髻ｳ驥上さ繝ｳ繝医Οール */
  .im-volume {
    position: fixed;
    bottom: 40px;
    right: 32px;
    z-index: 30;
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 8px 14px 8px 10px;
    background: rgba(10, 20, 14, 0.5);
    border: 1px solid rgba(245, 216, 150, 0.22);
    border-radius: 999px;
    backdrop-filter: blur(10px);
    -webkit-backdrop-filter: blur(10px);
    opacity: 0;
    pointer-events: none;
    transform: translateY(8px);
    transition: opacity 0.8s var(--ease), transform 0.8s var(--ease-out);
  }
  body.immersed .im-volume {
    opacity: 1;
    pointer-events: auto;
    transform: translateY(0);
  }
  body.immersed.ui-idle .im-volume {
    opacity: 0 !important;
    pointer-events: none !important;
  }
  .im-volume__mute {
    width: 28px; height: 28px;
    border: none;
    background: transparent;
    color: rgba(245, 216, 150, 0.85);
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 0;
    transition: color 0.3s;
  }
  .im-volume__mute:hover { color: #fff; }
  .im-volume__slider {
    -webkit-appearance: none; appearance: none;
    width: 110px;
    height: 2px;
    background: rgba(245, 216, 150, 0.3);
    border-radius: 999px;
    outline: none;
    cursor: pointer;
  }
  .im-volume__slider::-webkit-slider-thumb {
    -webkit-appearance: none; appearance: none;
    width: 12px; height: 12px;
    border-radius: 50%;
    background: rgba(245, 216, 150, 0.9);
    border: 1px solid #fff;
    box-shadow: 0 0 10px rgba(245, 216, 150, 0.7);
    cursor: pointer;
  }
  .im-volume__slider::-moz-range-thumb {
    width: 12px; height: 12px;
    border-radius: 50%;
    background: rgba(245, 216, 150, 0.9);
    border: 1px solid #fff;
    box-shadow: 0 0 10px rgba(245, 216, 150, 0.7);
    cursor: pointer;
  }
  @media (max-width: 768px) {
    .im-volume { bottom: 30px; right: 16px; padding: 6px 10px 6px 8px; }
    .im-volume__slider { width: 90px; }
  }
  @keyframes enterBtnBreathe {
    0%, 100% {
      box-shadow: 0 0 18px rgba(212, 164, 76, 0.18), inset 0 1px 0 rgba(255, 255, 255, 0.08);
    }
    50% {
      box-shadow: 0 0 28px rgba(212, 164, 76, 0.35), 0 0 45px rgba(64, 206, 180, 0.1), inset 0 1px 0 rgba(255, 255, 255, 0.12);
    }
  }

  @media (prefers-reduced-motion: reduce) {
    .prologue-audio-notice svg,
    .prologue-enter-btn { animation: none; }
  }
  @media (max-width: 720px) {
    .prologue-audio-notice { font-size: 10px; letter-spacing: 0.2em; }
    .prologue-enter-btn { padding: 10px 22px; }
    .prologue-enter-btn .peb-ja { font-size: 11px; letter-spacing: 0.22em; }
  }

  .flash-overlay {
    position: fixed; inset: 0; z-index: 500;
    background: radial-gradient(ellipse at center,
      rgba(245, 216, 150, 0.0) 0%,
      rgba(245, 216, 150, 0.08) 40%,
      rgba(123, 165, 131, 0.12) 70%,
      rgba(13, 18, 16, 0.35) 100%);
    opacity: 0;
    pointer-events: none;
  }
  .flash-overlay.burst { animation: softVeil 2.4s var(--ease-out); }
  @keyframes softVeil {
    0%   { opacity: 0; }
    35%  { opacity: 0.85; }
    100% { opacity: 0; }
  }

  /* 豐｡蜈･繝｢繝ｼ繝蛾幕蟋区凾縺ｮ謾ｾ蟆・ｷ・(蜈峨・遲九′螟悶∈蠎・′繧・ */
  .veil-rays {
    position: fixed; inset: 0; z-index: 499;
    pointer-events: none;
    opacity: 0;
  }
  .veil-rays.burst {
    animation: veilRaysAnim 2.2s var(--ease-out);
  }
  @keyframes veilRaysAnim {
    0%   { opacity: 0; transform: scale(0.7); }
    30%  { opacity: 0.6; }
    100% { opacity: 0; transform: scale(1.4); }
  }

  /* ============ 譏逕ｻ逧・ｻ｢謠・ 豺ｱ縺・囓霆｢ ============ */
  .dramatic-veil {
    position: fixed;
    inset: 0;
    z-index: 9998;
    background: #000;
    opacity: 0;
    pointer-events: none;
    transition: opacity 1.5s cubic-bezier(0.4, 0, 0.2, 1);
  }
  /* Phase 1-2: 逕ｻ髱｢繧呈ｷｱ縺乗囓霆｢縺輔○繧・*/
  .dramatic-veil.dark {
    opacity: 1;
  }
  /* Phase 3: 蠕舌・↓蜈峨ｒ貍上ｉ縺・*/
  .dramatic-veil.dawning {
    opacity: 0.75;
  }
  /* Phase 4-5: 豸医∴繧・*/
  .dramatic-veil.fading {
    opacity: 0;
    transition: opacity 1.8s cubic-bezier(0.4, 0, 0.2, 1);
  }
  /* 荳ｭ螟ｮ縺ｮ蟆上＆縺ｪ蜈峨・轤ｹ (螳悟・證苓ｻ｢譎ゅ↓残る) */
  .dramatic-veil-core {
    position: absolute;
    top: 50%; left: 50%;
    width: 6px; height: 6px;
    background: radial-gradient(circle, rgba(245, 216, 150, 0.95), rgba(245, 216, 150, 0));
    transform: translate(-50%, -50%);
    opacity: 0;
    filter: blur(3px);
    transition: opacity 0.8s ease, width 1.2s ease, height 1.2s ease, filter 1.2s ease;
  }
  .dramatic-veil.dark .dramatic-veil-core {
    opacity: 0;
    width: 4px; height: 4px;
  }
  .dramatic-veil.dawning .dramatic-veil-core {
    opacity: 0.5;
    width: 480px; height: 480px;
    filter: blur(100px);
  }

  /* 豐｡蜈･蜑阪・繧ｷ繧｢繧ｿ繝ｼ逕ｻ髱｢ 窶・諠・勹逕ｻ蜒上◎縺ｮ繧ゅ・繧貞ｰ上＆縺丈ｸｭ螟ｮ縺ｫ驟咲ｽｮ縺励∵･募・繝槭せ繧ｯ縺ｧ邵√ｒ縺ｼ縺九☆ */
  body.gallery-mode .scene-image {
    /* 逕ｻ蜒剰・菴薙ｒ邵ｮ蟆・(画面の60%蟷・・0%鬮・ */
    width: 60%;
    height: 60%;
    /* 邵ｮ蟆上＠縺溽判蜒上↓繝槭せ繧ｯ繧偵°縺代※讌募・縺ｫ縺ｼ縺九☆ */
    mask-image: radial-gradient(
      ellipse 50% 50% at center,
      rgba(0,0,0,1) 0%,
      rgba(0,0,0,1) 60%,
      rgba(0,0,0,0.7) 78%,
      rgba(0,0,0,0.25) 92%,
      rgba(0,0,0,0) 100%
    );
    -webkit-mask-image: radial-gradient(
      ellipse 50% 50% at center,
      rgba(0,0,0,1) 0%,
      rgba(0,0,0,1) 60%,
      rgba(0,0,0,0.7) 78%,
      rgba(0,0,0,0.25) 92%,
      rgba(0,0,0,0) 100%
    );
  }
  body.gallery-mode .scene-vignette {
    /* 讌募・縺ｮ螟悶・螳悟・縺ｫ鮟・*/
    box-shadow: inset 0 0 200px 50px rgba(0, 0, 0, 1);
  }
  body.gallery-mode {
    background: #000;
  }

  /* ============ 譛ｪ驕ｸ謚樒憾諷・(譛蛻昴・逕ｻ髱｢縺ｧ諠・勹縺後∪縺驕ｸ縺ｰ繧後※縺・↑縺・ ============ */
  /* 繝励Ξイヤー(繝医Λ繝・け諠・ｱ繝ｻ蜀咲函繧ｳ繝ｳ繝医Οール)繧定埋縺剰ｦ九○繧・*/
  body.no-scene-selected .player,
  body.no-scene-selected .action-tower,
  body.no-scene-selected .nav-arrows,
  body.no-scene-selected #footprintCanvas {
    opacity: 0;
    pointer-events: none;
    transition: opacity 1.2s var(--ease);
  }
  body.no-scene-selected .player,
  body.no-scene-selected .action-tower {
    animation: none;
  }
  /* 景色の中へボタン: 情景選択後にだけ出す */
  body.no-scene-selected #immersiveBtn {
    opacity: 0;
    pointer-events: none;
  }
  /* シーン選択後は CTA として強く目立たせる (ゴールドの光・パルス・サイズ) */
  #immersiveBtn {
    height: 46px;
    padding: 0 26px;
    font-size: 13px;
    letter-spacing: 0.32em;
    color: var(--gold-warm);
    background: linear-gradient(135deg, rgba(212, 164, 76, 0.25), rgba(123, 165, 131, 0.18));
    border: 1px solid rgba(232, 196, 120, 0.55);
    box-shadow:
      0 0 24px rgba(212, 164, 76, 0.28),
      inset 0 0 12px rgba(245, 216, 150, 0.12);
    animation: immersiveBtnPulse 2.8s ease-in-out infinite;
  }
  #immersiveBtn:hover {
    color: var(--gold-warm);
    background: linear-gradient(135deg, rgba(232, 196, 120, 0.40), rgba(123, 165, 131, 0.30));
    border-color: rgba(245, 216, 150, 0.85);
    transform: translateY(-1px);
    box-shadow:
      0 0 36px rgba(232, 196, 120, 0.45),
      0 0 64px rgba(123, 165, 131, 0.22),
      inset 0 0 16px rgba(245, 216, 150, 0.20);
  }
  body.no-scene-selected #immersiveBtn { animation: none; }
  @keyframes immersiveBtnPulse {
    0%, 100% {
      box-shadow:
        0 0 24px rgba(212, 164, 76, 0.28),
        inset 0 0 12px rgba(245, 216, 150, 0.12);
    }
    50% {
      box-shadow:
        0 0 36px rgba(232, 196, 120, 0.50),
        0 0 60px rgba(123, 165, 131, 0.18),
        inset 0 0 18px rgba(245, 216, 150, 0.22);
    }
  }
  /* 縲梧ュ譎ｯ繧帝∈繧薙〒縺上□縺輔＞縲阪・繧ｬ繧､繝・*/
  .scene-selection-hint {
    position: fixed;
    top: 32%;
    left: 50%;
    transform: translate(-50%, -50%);
    z-index: 16;
    text-align: center;
    pointer-events: none;
    opacity: 0;
    transition: opacity 1.5s var(--ease);
  }
  body.no-scene-selected .scene-selection-hint {
    opacity: 1;
  }
  .scene-selection-hint .hint-en {
    font-family: var(--font-en);
    font-style: italic;
    font-size: 12px;
    letter-spacing: 0.6em;
    color: rgba(212, 164, 76, 0.5);
    text-transform: uppercase;
    margin-bottom: 14px;
  }
  .scene-selection-hint .hint-jp {
    font-family: var(--font-jp);
    font-weight: 300;
    font-size: clamp(26px, 3.2vw, 42px);
    letter-spacing: 0.22em;
    color: rgba(245, 240, 230, 0.92);
    text-shadow: 0 0 34px rgba(245, 216, 150, 0.34), 0 4px 24px rgba(0,0,0,0.85);
    text-indent: 0.22em;
    white-space: nowrap;
  }
  .scene-selection-hint .hint-sep {
    width: 40px;
    height: 1px;
    background: linear-gradient(90deg, transparent, rgba(212, 164, 76, 0.4), transparent);
    margin: 18px auto;
  }
  .journey-choice {
    position: fixed;
    left: 50%;
    top: 58%;
    transform: translate(-50%, -50%);
    z-index: 16;
    width: min(820px, calc(100vw - 48px));
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 18px;
    opacity: 0;
    pointer-events: none;
    transition: opacity 1.2s var(--ease), transform 1.2s var(--ease-out);
  }
  body.no-scene-selected.journey-choice-mode .journey-choice {
    opacity: 1;
    pointer-events: auto;
  }
  .journey-choice-card {
    min-height: 190px;
    padding: 26px 26px 24px;
    border: 1px solid rgba(212, 164, 76, 0.24);
    border-radius: 6px;
    background:
      radial-gradient(circle at 50% 0%, rgba(245, 216, 150, 0.12), transparent 46%),
      linear-gradient(180deg, rgba(18, 30, 25, 0.44), rgba(7, 10, 9, 0.58));
    color: rgba(245, 240, 230, 0.9);
    text-align: center;
    cursor: pointer;
    touch-action: manipulation;
    -webkit-user-select: none;
    user-select: none;
    backdrop-filter: blur(22px) saturate(1.15);
    -webkit-backdrop-filter: blur(22px) saturate(1.15);
    box-shadow: 0 24px 80px rgba(0,0,0,0.34), inset 0 0 40px rgba(245, 216, 150, 0.025);
    transition: transform 0.4s var(--ease), border-color 0.4s var(--ease), box-shadow 0.4s var(--ease), background 0.4s var(--ease);
    position: relative;
    overflow: hidden;
  }
  .journey-choice-card::before {
    content: '';
    position: absolute;
    left: 50%;
    top: 18px;
    width: 44px;
    height: 1px;
    transform: translateX(-50%);
    background: linear-gradient(90deg, transparent, rgba(245, 216, 150, 0.7), transparent);
  }
  .journey-choice-card:hover,
  .journey-choice-card:focus-visible {
    border-color: rgba(245, 216, 150, 0.72);
    transform: translateY(-4px);
    box-shadow: 0 32px 96px rgba(0,0,0,0.42), 0 0 44px rgba(212, 164, 76, 0.2);
    outline: none;
  }
  .journey-choice-card .jc-kicker {
    font-family: var(--font-en);
    font-size: 10px;
    letter-spacing: 0.52em;
    color: rgba(212, 164, 76, 0.68);
    text-transform: uppercase;
    margin-bottom: 22px;
  }
  .journey-choice-card .jc-title {
    font-family: var(--font-jp);
    font-weight: 300;
    font-size: clamp(22px, 2.6vw, 34px);
    letter-spacing: 0.16em;
    text-indent: 0.16em;
    color: #fff;
    text-shadow: 0 0 28px rgba(245, 216, 150, 0.22), 0 4px 20px rgba(0,0,0,0.9);
    margin-bottom: 16px;
  }
  .journey-choice-card .jc-desc {
    font-family: var(--font-jp);
    font-size: 12px;
    line-height: 1.9;
    letter-spacing: 0.1em;
    color: rgba(245, 240, 230, 0.58);
  }
  .journey-choice-card.tag-choice {
    background:
      radial-gradient(ellipse at center, rgba(91, 128, 178, 0.15), transparent 54%),
      linear-gradient(180deg, rgba(22, 28, 40, 0.45), rgba(7, 10, 13, 0.58));
  }
  .journey-choice-card.tag-choice .jc-kicker {
    color: rgba(170, 205, 255, 0.68);
  }
  body.no-scene-selected.journey-choice-mode .scene-index {
    opacity: 0 !important;
    pointer-events: none !important;
  }
  body.no-scene-selected:not(.journey-choice-mode) .journey-choice {
    display: none !important;
    visibility: hidden !important;
    opacity: 0 !important;
    pointer-events: none !important;
    transform: none !important;
    transition: none !important;
    z-index: -1 !important;
  }
  body.no-scene-selected:not(.journey-choice-mode) .journey-choice-card {
    display: none !important;
    visibility: hidden !important;
    opacity: 0 !important;
    pointer-events: none !important;
    transform: none !important;
    transition: none !important;
  }
  body.no-scene-selected.tag-entry-mode .journey-choice,
  body.no-scene-selected.tag-entry-mode .scene-selection-hint,
  body.no-scene-selected.tag-entry-mode .scene-index,
  body.no-scene-selected.rings-open .scene-index {
    opacity: 0 !important;
    pointer-events: none !important;
  }
  body.no-scene-selected.tag-entry-mode .rings-overlay {
    display: block;
    z-index: 2003;
  }
  body.no-scene-selected.tag-entry-mode #ringsCanvas {
    pointer-events: auto;
  }

  body.no-scene-selected:not(.journey-choice-mode) .scene-index {
    position: fixed;
    top: 58%;
    left: 50%;
    width: min(760px, calc(100vw - 48px));
    max-height: min(46vh, 420px);
    transform: translate(-50%, -50%);
    z-index: 16;
    padding: 0;
    margin: 0;
    overflow: visible;
    opacity: 1;
    animation: none;
  }
  body.first-visit.no-scene-selected .scene-index {
    padding: 0;
    margin: 0;
    border-radius: 0;
    animation: none;
    box-shadow: none;
    background: transparent;
  }
  body.first-visit .scene-index::before {
    content: none;
  }
  body.no-scene-selected .prologue-return-btn {
    display: none;
  }
  body.no-scene-selected .scene-index-label {
    justify-content: center;
    margin-bottom: 18px;
    color: rgba(245, 216, 150, 0.72);
  }
  body.no-scene-selected .scene-index-label::before,
  body.no-scene-selected .scene-index-label::after {
    flex: 0 1 110px;
  }
  body.no-scene-selected:not(.journey-choice-mode) .scene-grid {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 12px;
  }
  body.no-scene-selected:not(.journey-choice-mode) .scene-item {
    min-height: 112px;
    padding: 18px 16px 16px;
    align-items: flex-start;
    background: linear-gradient(180deg, rgba(18, 30, 25, 0.34), rgba(7, 10, 9, 0.48));
    border: 1px solid rgba(212, 164, 76, 0.22);
    border-radius: 6px;
    box-shadow: 0 20px 60px rgba(0,0,0,0.28), inset 0 0 28px rgba(245, 216, 150, 0.02);
    backdrop-filter: blur(18px) saturate(1.1);
    -webkit-backdrop-filter: blur(18px) saturate(1.1);
  }
  body.no-scene-selected .scene-item:hover {
    border-color: rgba(245, 216, 150, 0.58);
    transform: translateY(-3px);
    background: linear-gradient(180deg, rgba(32, 52, 42, 0.48), rgba(12, 18, 15, 0.58));
    box-shadow: 0 26px 76px rgba(0,0,0,0.36), 0 0 34px rgba(212, 164, 76, 0.16);
  }
  body.no-scene-selected .scene-item::before {
    left: 16px;
    top: auto;
    bottom: 12px;
  }
  body.no-scene-selected .scene-item:hover::before {
    width: 44px;
  }
  body.no-scene-selected .scene-item .idx {
    min-width: auto;
    padding-top: 0;
    color: rgba(245, 216, 150, 0.45);
  }
  body.no-scene-selected .scene-item .scene-jp {
    display: block;
    font-size: 21px;
    letter-spacing: 0.18em;
    line-height: 1.55;
  }
  body.no-scene-selected .scene-item .scene-jp-sub {
    display: block;
    margin-top: 3px;
    font-size: 10px;
    letter-spacing: 0.15em;
  }
  body.no-scene-selected .scene-item .scene-en {
    margin-top: 8px;
    font-size: 9px;
    letter-spacing: 0.22em;
    line-height: 1.5;
  }
  body.lang-en.no-scene-selected .scene-item .scene-jp {
    font-family: var(--font-en);
    font-size: clamp(16px, 1.25vw, 20px);
    letter-spacing: 0.08em;
    line-height: 1.35;
    text-indent: 0;
    color: rgba(245, 240, 230, 0.94);
  }
  body.lang-en.no-scene-selected .scene-item .scene-jp-sub {
    font-family: var(--font-jp);
    margin-top: 7px;
    font-size: 10.5px;
    letter-spacing: 0.03em;
    line-height: 1.55;
    color: rgba(245, 240, 230, 0.58);
    text-transform: none;
  }
  body.lang-en.no-scene-selected .scene-item .scene-en {
    font-family: var(--font-en);
    margin-top: 10px;
    font-size: 8px;
    letter-spacing: 0.24em;
    color: rgba(212, 164, 76, 0.64);
    text-transform: uppercase;
  }
  @media (max-width: 900px) {
    body.no-scene-selected .scene-grid {
      grid-template-columns: repeat(2, minmax(0, 1fr));
    }
    body.no-scene-selected .scene-index {
      top: 61%;
      max-height: 52vh;
      overflow-y: auto;
      padding-right: 4px;
    }
  }
  @media (max-height: 860px) and (min-width: 769px) {
    .scene-index {
      top: 104px;
      max-height: calc(100vh - 250px);
      max-height: calc(100dvh - 250px);
    }
    body.no-scene-selected .scene-selection-hint {
      top: 28%;
    }
    body.no-scene-selected .scene-index {
      top: 59%;
      max-height: 50vh;
    }
    body.no-scene-selected .scene-item {
      min-height: 94px;
      padding: 14px 14px 13px;
    }
    body.no-scene-selected .scene-item .scene-jp {
      font-size: 18px;
      line-height: 1.45;
    }
    body.no-scene-selected .scene-item .scene-en {
      margin-top: 5px;
    }
  }

  /* 豐｡蜈･荳ｭ縺ｯ逕ｻ蜒上ｒ蜈ｨ逕ｻ髱｢繝ｻ荳ｭ螟ｮ縺ｫ謌ｻ縺・*/
  body.immersed .scene-image {
    top: 50%;
    left: 50%;
    width: 100%;
    height: 100%;
    mask-image: radial-gradient(
      ellipse 120% 120% at center,
      rgba(0,0,0,1) 0%,
      rgba(0,0,0,1) 98%,
      rgba(0,0,0,0) 100%
    );
    -webkit-mask-image: radial-gradient(
      ellipse 120% 120% at center,
      rgba(0,0,0,1) 0%,
      rgba(0,0,0,1) 98%,
      rgba(0,0,0,0) 100%
    );
  }

  /* 転換中: UI縺後ｆ縺｣縺上ｊ繝輔ぉ繝ｼ繝峨い繧ｦ繝・*/
  body.transitioning-to-immersed .ui > *,
  body.transitioning-to-immersed .action-tower {
    opacity: 0.1 !important;
    filter: blur(6px);
    transition: opacity 1.4s ease, filter 1.4s ease;
    pointer-events: none !important;
  }
  body.transitioning-to-immersed .scene-vignette {
    box-shadow: inset 0 0 0 1000px rgba(0, 0, 0, 0.7) !important;
    transition: box-shadow 1.4s ease;
  }
  /* 転換中: Canvas鬘・(豬ｮ驕顔ｪ薙・邊貞ｭ舌・雜ｳ霍｡) 繧る國縺・*/
  body.transitioning-to-immersed #mainCanvas,
  body.transitioning-to-immersed #footprintCanvas,
  body.transitioning-to-immersed #sceneEffectCanvas {
    opacity: 0;
    transition: opacity 1.3s ease;
  }

  /* ============ 土星リング (タグ輪) ============ */

  /* 蜿ｳ荳九・繧｢繧ｯ繧ｷ繝ｧ繝ｳ蝪・(土星 + 縺頑ｰ励↓蜈･繧翫・2つ) */
  .action-tower {
    position: fixed;
    bottom: 130px;
    right: 36px;
    z-index: 18;
    display: flex;
    flex-direction: column;
    gap: 10px;
    align-items: flex-end;
    opacity: 0;
    animation: fadeUp 2s 2s var(--ease-out) forwards;
    max-height: calc(100vh - 280px);
    max-height: calc(100dvh - 280px);  /* iOS Safari 縺ｮ蜍慕噪繝薙Η繝ｼ繝昴・繝磯ｫ伜ｯｾ蠢・*/
    overflow: visible;
    padding: 12px 10px 8px 6px;
    /* 繧ｹ繧ｯ繝ｭ繝ｼ繝ｫ繝舌・繧呈而縺医ａ縺ｫ */
    scrollbar-width: thin;
    scrollbar-color: rgba(212, 164, 76, 0.3) transparent;
  }
  .action-tower::-webkit-scrollbar { width: 3px; }
  .action-tower::-webkit-scrollbar-track { background: transparent; }
  .action-tower::-webkit-scrollbar-thumb { background: rgba(212, 164, 76, 0.2); border-radius: 2px; }

  .action-btn {
    display: flex;
    align-items: center;
    gap: 14px;
    cursor: none;
    transition: all 0.4s var(--ease);
  }

  /* 譌・Δ繝ｼ繝画ｴｻ諤ｧ蛹・(鄒・・逶､縺ｮ繝代Νス + 繝ｩ繝吶Ν強調) */
  .action-btn.travel-active .action-circle {
    border-color: var(--gold-warm);
    box-shadow:
      0 0 30px rgba(245, 216, 150, 0.4),
      0 0 60px rgba(245, 216, 150, 0.2);
    animation: travelPulse 2.8s ease-in-out infinite;
  }
  .action-btn.travel-active .action-circle svg {
    animation: compassRotate 18s linear infinite;
  }
  .action-btn.travel-active .action-label {
    color: #fff;
    border-color: var(--gold-warm);
  }
  @keyframes travelPulse {
    0%, 100% { transform: scale(1); }
    50%      { transform: scale(1.05); }
  }
  @keyframes compassRotate {
    from { transform: rotate(0deg); }
    to   { transform: rotate(360deg); }
  }

  /* 縺ｲ縺ｨ莨代∩繧ｿ繧､繝槭・豢ｻ諤ｧ蛹・*/
  .action-btn.rest-active .action-circle {
    border-color: rgba(200, 150, 255, 0.6);
    box-shadow: 0 0 24px rgba(200, 150, 255, 0.3);
    animation: restBreathe 4s ease-in-out infinite;
  }
  @keyframes restBreathe {
    0%, 100% { opacity: 0.75; }
    50%      { opacity: 1; }
  }

  /* 縺ｲ縺ｨ莨代∩繧ｿ繧､繝槭・繝｡繝九Ηー */
  .rest-timer-menu,
  .travel-menu {
    position: fixed;
    bottom: 180px;
    right: 110px;
    z-index: 80;
    display: flex;
    flex-direction: column;
    gap: 4px;
    padding: 14px 18px;
    background: linear-gradient(180deg, rgba(26, 48, 40, 0.92), rgba(13, 18, 16, 0.95));
    backdrop-filter: blur(30px) saturate(1.4);
    -webkit-backdrop-filter: blur(30px) saturate(1.4);
    border: 1px solid rgba(212, 164, 76, 0.45);
    border-radius: 4px;
    box-shadow: 0 10px 40px rgba(0,0,0,0.6), 0 0 30px rgba(212, 164, 76, 0.15);
    opacity: 0;
    transform: translateY(10px);
    pointer-events: none;
    transition: opacity 0.4s var(--ease), transform 0.4s var(--ease-out);
    min-width: 140px;
  }
  .rest-timer-menu.visible,
  .travel-menu.visible {
    opacity: 1;
    transform: translateY(0);
    pointer-events: auto;
  }
  .rest-timer-menu-title,
  .travel-menu-title {
    font-family: var(--font-jp);
    font-size: 10px;
    letter-spacing: 0.3em;
    color: var(--gold-warm);
    text-align: center;
    padding-bottom: 10px;
    margin-bottom: 6px;
    border-bottom: 1px solid rgba(212, 164, 76, 0.15);
  }
  .rest-timer-menu button,
  .travel-menu button {
    font-family: var(--font-jp);
    font-size: 13px;
    letter-spacing: 0.3em;
    color: rgba(245, 240, 230, 0.85);
    padding: 8px 10px;
    background: transparent;
    border: none;
    border-radius: 3px;
    cursor: none;
    text-align: center;
    transition: all 0.3s;
  }
  .rest-timer-menu button:hover,
  .travel-menu button:hover {
    background: rgba(212, 164, 76, 0.12);
    color: var(--gold-warm);
  }
  .rest-timer-menu .rest-timer-cancel,
  .travel-menu .travel-menu-cancel {
    font-size: 10px;
    letter-spacing: 0.25em;
    color: rgba(245, 240, 230, 0.4);
    margin-top: 4px;
    padding-top: 10px;
    border-top: 1px solid rgba(212, 164, 76, 0.08);
  }

  /* 繧ｿ繧､繝槭・邨ゆｺ・凾縺ｮ縺雁挨繧檎判髱｢ */
  .rest-timer-farewell {
    position: fixed;
    inset: 0;
    z-index: 9997;
    background: #000;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    opacity: 0;
    transition: opacity 2.5s cubic-bezier(0.4, 0, 0.2, 1);
  }
  .rest-timer-farewell.visible { opacity: 1; }
  .rest-timer-farewell .farewell-title {
    font-family: var(--font-jp);
    font-weight: 300;
    font-size: clamp(22px, 2.8vw, 36px);
    letter-spacing: 0.4em;
    color: #fff;
    margin-bottom: 24px;
    text-shadow: 0 0 40px rgba(245, 216, 150, 0.4);
    opacity: 0;
    animation: farewellAppear 3s 1s ease-out forwards;
  }
  .rest-timer-farewell .farewell-sub {
    font-family: var(--font-en);
    font-style: italic;
    font-size: 13px;
    letter-spacing: 0.45em;
    color: rgba(212, 164, 76, 0.7);
    margin-bottom: 60px;
    opacity: 0;
    animation: farewellAppear 3s 1.8s ease-out forwards;
  }
  .rest-timer-farewell .farewell-close {
    font-family: var(--font-jp);
    font-size: 11px;
    letter-spacing: 0.35em;
    color: rgba(245, 240, 230, 0.5);
    background: none;
    border: 1px solid rgba(212, 164, 76, 0.25);
    border-radius: 3px;
    padding: 10px 24px;
    cursor: none;
    opacity: 0;
    transition: all 0.4s;
    animation: farewellAppear 2s 3s ease-out forwards;
  }
  .rest-timer-farewell .farewell-close:hover {
    color: var(--gold-warm);
    border-color: var(--gold-warm);
  }
  @keyframes farewellAppear {
    to { opacity: 1; }
  }
  .action-btn .action-label {
    font-family: var(--font-jp);
    font-weight: 500;
    font-size: 11px;
    letter-spacing: 0.3em;
    color: var(--gold-warm);
    white-space: nowrap;
    text-shadow: 0 2px 12px rgba(0,0,0,0.9), 0 0 20px rgba(0,0,0,0.7);
    padding: 6px 12px;
    background: linear-gradient(90deg, rgba(20, 18, 16, 0.55), rgba(26, 48, 40, 0.35));
    backdrop-filter: blur(16px) saturate(1.3);
    -webkit-backdrop-filter: blur(16px) saturate(1.3);
    border: 1px solid rgba(212, 164, 76, 0.2);
    border-radius: 4px;
    transition: all 0.4s var(--ease);
  }
  .action-btn .action-label-sub {
    display: block;
    font-family: var(--font-en);
    font-size: 8px;
    letter-spacing: 0.4em;
    color: rgba(212, 164, 76, 0.65);
    text-transform: uppercase;
    margin-top: 2px;
  }
  .action-btn .action-circle {
    width: 56px; height: 56px;
    border-radius: 50%;
    background: linear-gradient(135deg, rgba(26, 48, 40, 0.55), rgba(20, 18, 16, 0.45));
    backdrop-filter: blur(22px) saturate(1.3);
    -webkit-backdrop-filter: blur(22px) saturate(1.3);
    border: 1px solid rgba(212, 164, 76, 0.4);
    display: flex;
    align-items: center;
    justify-content: center;
    color: var(--gold-warm);
    transition: all 0.4s var(--ease);
    position: relative;
    box-shadow:
      0 0 20px rgba(212, 164, 76, 0.15),
      0 0 40px rgba(123, 165, 131, 0.1);
  }
  .action-btn:hover .action-circle {
    border-color: var(--gold-bright);
    background: linear-gradient(135deg, rgba(42, 74, 58, 0.75), rgba(30, 26, 22, 0.6));
    box-shadow:
      0 0 40px rgba(212, 164, 76, 0.4),
      0 0 70px rgba(123, 165, 131, 0.2);
    transform: scale(1.08);
  }
  .action-btn:hover .action-label {
    border-color: rgba(232, 196, 120, 0.5);
    background: linear-gradient(90deg, rgba(42, 74, 58, 0.7), rgba(26, 48, 40, 0.55));
    color: #fff;
  }
  .action-btn.active .action-circle {
    color: var(--gold-warm);
    border-color: var(--gold-bright);
    background: linear-gradient(135deg, rgba(42, 74, 58, 0.8), rgba(212, 164, 76, 0.2));
    box-shadow: 0 0 50px rgba(245, 216, 150, 0.55);
  }
  #journeyMenuTrigger .action-label,
  #favTrigger .action-label {
    border-color: rgba(245, 216, 150, 0.34);
    background:
      linear-gradient(90deg, rgba(36, 31, 24, 0.76), rgba(22, 42, 34, 0.66));
    color: rgba(245, 216, 150, 0.94);
    box-shadow: 0 8px 28px rgba(0,0,0,0.38), 0 0 20px rgba(212, 164, 76, 0.12);
  }
  #journeyMenuTrigger .action-circle,
  #favTrigger .action-circle {
    width: 62px;
    height: 62px;
    border-color: rgba(245, 216, 150, 0.62);
    background:
      radial-gradient(circle at center, rgba(245, 216, 150, 0.13), transparent 54%),
      linear-gradient(135deg, rgba(32, 58, 46, 0.78), rgba(28, 23, 18, 0.66));
    box-shadow:
      0 0 28px rgba(212, 164, 76, 0.28),
      0 0 58px rgba(123, 165, 131, 0.14);
  }
  .action-new-badge {
    position: absolute;
    top: -4px;
    right: -6px;
    min-width: 32px;
    height: 18px;
    padding: 0 7px;
    border-radius: 999px;
    border: 1px solid rgba(245, 216, 150, 0.72);
    background: linear-gradient(135deg, rgba(212, 164, 76, 0.96), rgba(118, 82, 28, 0.94));
    color: #090806;
    font-family: var(--font-en);
    font-size: 8px;
    font-weight: 700;
    letter-spacing: 0.12em;
    line-height: 18px;
    text-align: center;
    box-shadow: 0 0 18px rgba(245, 216, 150, 0.42);
    pointer-events: none;
  }
  .action-btn.current-favorited .action-circle {
    color: var(--gold-warm);
    border-color: rgba(245, 216, 150, 0.78);
    background: linear-gradient(135deg, rgba(42, 74, 58, 0.7), rgba(212, 164, 76, 0.24));
    box-shadow: 0 0 34px rgba(245, 216, 150, 0.34);
  }
  .action-btn .action-circle svg {
    width: 24px; height: 24px;
    fill: none;
    stroke: currentColor;
    stroke-width: 1.2;
    transition: transform 0.6s var(--ease);
  }
  .action-btn.current-favorited .action-circle svg {
    fill: currentColor;
  }
  .action-btn.active .action-circle svg.rotatable {
    transform: rotate(45deg);
  }

  /* 縺頑ｰ励↓蜈･繧翫・繝舌ャ繧ｸ (曲数) */
  .fav-badge {
    position: absolute;
    top: -4px; right: -4px;
    min-width: 20px; height: 20px;
    padding: 0 5px;
    background: var(--gold-warm);
    color: #0a0f0c;
    border-radius: 999px;
    display: flex;
    align-items: center;
    justify-content: center;
    font-family: var(--font-en);
    font-size: 10px;
    font-weight: 600;
    letter-spacing: 0.05em;
    box-shadow: 0 0 12px rgba(245, 216, 150, 0.8);
    opacity: 0;
    transform: scale(0.5);
    transition: all 0.4s var(--ease-out);
  }
  .fav-badge.visible {
    opacity: 1;
    transform: scale(1);
  }

  /* 繝ｪ繝ｳ繧ｰ繧ｪ繝ｼ繝舌・繝ｬ繧､ */
  .rings-overlay {
    position: fixed;
    inset: 0;
    z-index: 17;
    pointer-events: none;
    opacity: 0;
    transition: opacity 1.2s var(--ease);
  }
  .rings-overlay.visible {
    opacity: 1;
    pointer-events: auto;
  }
  body:not(.rings-open) .rings-overlay {
    display: none;
  }
  .exit-block,
  .action-tower {
    z-index: 120;
  }
  body:not(.no-scene-selected):not(.immersed) .exit-block,
  body:not(.no-scene-selected):not(.immersed) .action-tower {
    z-index: 2100 !important;
    pointer-events: auto !important;
  }
  body:not(.no-scene-selected):not(.immersed) .exit-block *,
  body:not(.no-scene-selected):not(.immersed) .action-tower,
  body:not(.no-scene-selected):not(.immersed) .action-tower * {
    pointer-events: auto !important;
  }
  body:not(.no-scene-selected):not(.immersed) .action-btn {
    cursor: pointer !important;
  }
  .rings-overlay::before {
    content: '';
    position: absolute;
    inset: 0;
    background:
      radial-gradient(ellipse 70% 65% at center, rgba(20, 26, 40, 0.15) 0%, rgba(5, 8, 12, 0.55) 70%);
    backdrop-filter: blur(6px) saturate(1.1);
    -webkit-backdrop-filter: blur(6px) saturate(1.1);
  }

  /* 繝ｪ繝ｳ繧ｰ螻暮幕譎・ 譎ｯ濶ｲ繝ｻ豬ｮ驕顔ｪ薙・雜ｳ霍｡縺ｫ繝悶Λ繝ｼ繧偵°縺代※螂･陦後″繧貞・縺・*/
  body.rings-open .scene-stage {
    filter: blur(10px) brightness(0.78);
    transition: filter 1.2s var(--ease);
  }
  body.rings-open #mainCanvas,
  body.rings-open #sceneEffectCanvas {
    filter: blur(8px) brightness(0.6);
    transition: filter 1.2s var(--ease);
    opacity: 0.4;
  }
  body.rings-open #footprintCanvas {
    opacity: 0.15;
    filter: blur(2px);
    transition: opacity 1.2s var(--ease), filter 1.2s var(--ease);
  }
  /* 通常のUI(繧ｷ繝ｼ繝ｳ繝｡繝九Η繝ｼ繝ｻ繝励Ξ繧､繝､繝ｼ遲・繧ょｰ代＠豐医ａ繧・*/
  body.rings-open .ui > *:not(.rings-trigger):not(.brand-block) {
    opacity: 0.35;
    filter: blur(2px);
    transition: opacity 0.8s var(--ease), filter 0.8s var(--ease);
  }
  body.rings-open .action-tower {
    opacity: 0.35;
    filter: blur(2px);
    transition: opacity 0.8s var(--ease), filter 0.8s var(--ease);
  }
  body.rings-open #nebulaCanvas {
    opacity: 1;
  }

  .rings-hint {
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    text-align: center;
    pointer-events: none;
    color: rgba(245, 240, 230, 0.25);
    opacity: 0;
    transition: opacity 0.6s 0.8s var(--ease);
  }
  .rings-overlay.visible .rings-hint { opacity: 1; }
  .rings-hint .en {
    font-family: var(--font-en);
    font-size: 9px;
    letter-spacing: 0.55em;
    color: rgba(212, 164, 76, 0.5);
    text-transform: uppercase;
    margin-bottom: 8px;
  }
  .rings-hint .jp {
    font-family: var(--font-jp);
    font-weight: 300;
    font-size: 13px;
    letter-spacing: 0.45em;
    color: rgba(245, 240, 230, 0.5);
    text-indent: 0.45em;
  }

  .rings-close-hint {
    position: absolute;
    bottom: 40px;
    left: 50%;
    transform: translateX(-50%);
    font-family: var(--font-en);
    font-size: 9px;
    letter-spacing: 0.5em;
    color: rgba(245, 240, 230, 0.35);
    text-transform: uppercase;
    opacity: 0;
    transition: opacity 0.6s 0.8s var(--ease);
    pointer-events: none;
    display: flex;
    gap: 14px;
    align-items: center;
  }
  .rings-close-hint .hint-sep {
    color: rgba(212, 164, 76, 0.3);
  }
  .rings-overlay.visible .rings-close-hint { opacity: 1; }

  .tag-selected-flash {
    position: fixed;
    top: 46%;
    left: 50%;
    transform: translate(-50%, -50%);
    z-index: 30;
    text-align: center;
    pointer-events: none;
    opacity: 0;
    transition: opacity 0.8s var(--ease);
  }
  .tag-selected-flash.visible {
    opacity: 1;
  }
  .tag-selected-flash .type-label {
    font-family: var(--font-en);
    font-size: 10px;
    letter-spacing: 0.55em;
    color: rgba(212, 164, 76, 0.8);
    text-transform: uppercase;
    margin-bottom: 14px;
  }
  .tag-selected-flash .tag-jp {
    font-family: var(--font-jp);
    font-weight: 300;
    font-size: clamp(36px, 4.5vw, 64px);
    letter-spacing: 0.45em;
    color: #fff;
    text-indent: 0.45em;
    text-shadow:
      0 0 80px rgba(0,0,0,0.95),
      0 0 50px rgba(245, 216, 150, 0.4),
      0 4px 20px rgba(0,0,0,0.7);
    margin-bottom: 10px;
  }
  .tag-selected-flash .tag-tracks {
    font-family: var(--font-en);
    font-size: 11px;
    letter-spacing: 0.4em;
    color: rgba(245, 216, 150, 0.8);
  }

  /* ============ 縺頑ｰ励↓蜈･繧翫ヱ繝阪Ν (右からスライドイン) ============ */
  .fav-panel {
    position: fixed;
    top: 0; right: 0;
    width: min(480px, 92vw);
    height: 100vh;
    height: 100dvh;  /* iOS Safari 縺ｮ蜍慕噪繝薙Η繝ｼ繝昴・繝磯ｫ伜ｯｾ蠢・*/
    z-index: 9200;
    background:
      linear-gradient(180deg,
        rgba(18, 28, 22, 0.38) 0%,
        rgba(12, 18, 14, 0.52) 100%);
    backdrop-filter: blur(28px) saturate(1.4);
    -webkit-backdrop-filter: blur(28px) saturate(1.4);
    border-left: 1px solid rgba(245, 216, 150, 0.18);
    box-shadow:
      -40px 0 100px rgba(0, 0, 0, 0.55),
      inset 1px 0 0 rgba(255, 255, 255, 0.04);
    transform: translateX(100%);
    transition: transform 0.8s var(--ease-out);
    display: flex;
    flex-direction: column;
  }
  /* 蜀・・縺ｫ縺・▲縺吶ｉ邵ｦ蜈・(繧ｬ繝ｩ繧ｹ縺ｮ蜴壹∩) */
  .fav-panel::after {
    content: '';
    position: absolute;
    inset: 0;
    background:
      radial-gradient(ellipse at 100% 30%, rgba(212, 164, 76, 0.08), transparent 55%),
      radial-gradient(ellipse at 0% 80%, rgba(64, 206, 180, 0.05), transparent 60%);
    pointer-events: none;
    z-index: -1;
  }
  .fav-panel.visible {
    transform: translateX(0);
  }
  body:has(.fav-panel.visible) .action-tower {
    z-index: 120 !important;
  }
  body.fav-panel-open .action-tower {
    z-index: 120 !important;
  }
  .fav-panel::before {
    content: '';
    position: absolute;
    top: 0; bottom: 0; left: 0;
    width: 1px;
    background: linear-gradient(180deg,
      transparent 0%,
      var(--green-jade) 25%,
      var(--gold-warm) 50%,
      var(--green-jade) 75%,
      transparent 100%);
    opacity: 0.6;
  }

  .fav-header {
    padding: 34px 32px 20px;
    border-bottom: 1px solid rgba(245, 216, 150, 0.1);
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    flex-shrink: 0;
    background: linear-gradient(180deg, rgba(255, 255, 255, 0.015), transparent);
    position: relative;
    z-index: 1;
  }
  .fav-header::after {
    content: '';
    position: absolute;
    left: 32px; right: 32px;
    bottom: -1px; height: 1px;
    background: linear-gradient(90deg,
      transparent,
      rgba(245, 216, 150, 0.35) 25%,
      rgba(64, 206, 180, 0.2) 75%,
      transparent);
  }
  .fav-header .title-group { flex: 1; min-width: 0; }
  .fav-header .fav-title {
    font-family: var(--font-jp);
    font-weight: 500;
    font-size: 20px;
    letter-spacing: 0.35em;
    color: #fff;
    margin-bottom: 6px;
    text-indent: 0.35em;
  }
  .fav-header .fav-subtitle {
    font-family: var(--font-en);
    font-size: 10px;
    letter-spacing: 0.4em;
    color: rgba(212, 164, 76, 0.75);
    text-transform: uppercase;
  }
  .fav-header .fav-subtitle .count {
    color: var(--gold-warm);
    margin-left: 6px;
  }
  .fav-close {
    width: 36px; height: 36px;
    border-radius: 50%;
    background: rgba(255, 255, 255, 0.04);
    backdrop-filter: blur(10px);
    -webkit-backdrop-filter: blur(10px);
    border: 1px solid rgba(245, 216, 150, 0.22);
    display: flex;
    align-items: center;
    justify-content: center;
    color: var(--text-soft);
    transition: all 0.3s;
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.06);
  }
  .fav-close:hover {
    color: var(--gold-warm);
    border-color: rgba(232, 196, 120, 0.6);
    background: rgba(212, 164, 76, 0.1);
    box-shadow: 0 0 14px rgba(212, 164, 76, 0.2), inset 0 1px 0 rgba(255, 255, 255, 0.1);
  }
  .fav-close svg { width: 14px; height: 14px; fill: none; stroke: currentColor; stroke-width: 1.5; }

  /* 繝・・繝ｫ繝舌・ */
  .fav-toolbar {
    padding: 16px 32px;
    display: flex;
    gap: 8px;
    flex-wrap: wrap;
    border-bottom: 1px solid rgba(245, 216, 150, 0.08);
    flex-shrink: 0;
    background: rgba(255, 255, 255, 0.015);
  }
  .fav-tool {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 7px 12px;
    font-family: var(--font-jp);
    font-weight: 400;
    font-size: 11px;
    letter-spacing: 0.2em;
    color: var(--text-soft);
    background: rgba(255, 255, 255, 0.03);
    backdrop-filter: blur(8px);
    -webkit-backdrop-filter: blur(8px);
    border: 1px solid rgba(245, 216, 150, 0.15);
    border-radius: 999px;
    transition: all 0.3s var(--ease);
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.04);
  }
  .fav-tool:hover {
    color: var(--gold-warm);
    border-color: rgba(232, 196, 120, 0.5);
    background: rgba(212, 164, 76, 0.08);
    box-shadow: 0 0 14px rgba(212, 164, 76, 0.15), inset 0 1px 0 rgba(255, 255, 255, 0.08);
  }
  .fav-tool svg {
    width: 12px; height: 12px;
    fill: none; stroke: currentColor; stroke-width: 1.6;
  }
  .fav-tool svg.filled { fill: currentColor; stroke: none; }

  /* 繝ｪ繧ｹ繝・*/
  .fav-list {
    flex: 1;
    overflow-y: auto;
    padding: 16px 20px 20px;
    display: flex;
    flex-direction: column;
    gap: 10px;
  }
  .fav-list::-webkit-scrollbar { width: 6px; }
  .fav-list::-webkit-scrollbar-track { background: transparent; }
  .fav-list::-webkit-scrollbar-thumb { background: rgba(212, 164, 76, 0.25); border-radius: 3px; }
  .fav-list::-webkit-scrollbar-thumb:hover { background: rgba(212, 164, 76, 0.45); }

  .fav-empty {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    padding: 60px 20px;
    text-align: center;
    gap: 14px;
  }
  .fav-empty .heart-icon {
    width: 48px; height: 48px;
    color: rgba(212, 164, 76, 0.35);
  }
  .fav-empty .heart-icon svg { width: 100%; height: 100%; fill: none; stroke: currentColor; stroke-width: 1.2; }
  .fav-empty .msg-jp {
    font-family: var(--font-jp);
    font-weight: 300;
    font-size: 14px;
    letter-spacing: 0.3em;
    color: rgba(245, 240, 230, 0.55);
    text-indent: 0.3em;
    line-height: 1.9;
  }
  .fav-empty .msg-en {
    font-family: var(--font-en);
    font-style: italic;
    font-size: 11px;
    letter-spacing: 0.2em;
    color: rgba(212, 164, 76, 0.5);
  }

  /* 繧ｫ繝ｼ繝・(ガラスモーフィズム) */
  .fav-card {
    display: flex;
    gap: 12px;
    padding: 12px;
    background: rgba(255, 255, 255, 0.035);
    backdrop-filter: blur(14px) saturate(1.2);
    -webkit-backdrop-filter: blur(14px) saturate(1.2);
    border: 1px solid rgba(245, 216, 150, 0.14);
    border-radius: 10px;
    position: relative;
    transition:
      border-color 0.4s var(--ease),
      background 0.4s var(--ease),
      box-shadow 0.4s var(--ease),
      transform 0.4s var(--ease);
    cursor: grab;
    box-shadow:
      0 4px 16px rgba(0, 0, 0, 0.28),
      inset 0 1px 0 rgba(255, 255, 255, 0.06);
    overflow: hidden;
  }
  /* 繧ｫ繝ｼ繝我ｸ企Κ縺ｫ阮・＞蜈峨・繝上う繝ｩ繧､繝・(繧ｬ繝ｩ繧ｹ縺ｮ蜿榊ｰ・ */
  .fav-card::before {
    content: '';
    position: absolute;
    top: 0; left: 10%; right: 10%;
    height: 1px;
    background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.16), transparent);
    pointer-events: none;
  }
  .fav-card:hover {
    border-color: rgba(245, 216, 150, 0.4);
    background: rgba(255, 255, 255, 0.06);
    box-shadow:
      0 8px 32px rgba(212, 164, 76, 0.14),
      0 0 1px rgba(245, 216, 150, 0.25),
      inset 0 1px 0 rgba(255, 255, 255, 0.1);
    transform: translateY(-1px);
  }
  .fav-card.dragging {
    opacity: 0.5;
    cursor: grabbing;
  }
  .fav-card.drag-over {
    border-color: var(--gold-warm);
    box-shadow: 0 0 20px rgba(245, 216, 150, 0.3);
  }
  .fav-card.selected {
    border-color: rgba(245, 216, 150, 0.7);
    background:
      linear-gradient(135deg, rgba(212, 164, 76, 0.14), rgba(64, 206, 180, 0.07)),
      rgba(255, 255, 255, 0.04);
    box-shadow:
      0 8px 32px rgba(212, 164, 76, 0.22),
      0 0 0 1px rgba(245, 216, 150, 0.3),
      inset 0 1px 0 rgba(255, 255, 255, 0.14);
  }
  .fav-card.selected::after {
    content: '';
    position: absolute;
    top: 10%; bottom: 10%; left: 0;
    width: 2.5px;
    background: linear-gradient(180deg, var(--gold-warm), var(--green-jade));
    border-radius: 2px;
    box-shadow: 0 0 12px rgba(245, 216, 150, 0.6);
  }
  .fav-card.playing {
    border-color: rgba(123, 165, 131, 0.55);
    background: rgba(64, 206, 180, 0.05);
    box-shadow:
      0 4px 20px rgba(64, 206, 180, 0.15),
      inset 0 1px 0 rgba(255, 255, 255, 0.08);
  }
  .fav-card.playing::before {
    content: '';
    position: absolute;
    top: 15%; left: -1px;
    width: 2.5px; height: 70%;
    background: linear-gradient(180deg, var(--green-jade), rgba(64, 206, 180, 0.5));
    border-radius: 2px;
    box-shadow: 0 0 10px var(--green-jade);
    animation: playingPulse 1.5s ease-in-out infinite;
  }
  @keyframes playingPulse {
    0%, 100% { opacity: 0.7; }
    50% { opacity: 1; }
  }

  /* 縺頑ｰ励↓蜈･繧願ｿｽ蜉逶ｴ蠕後・蜈峨お繝輔ぉ繧ｯ繝・(3遘帝俣繝代Νス) */
  .fav-card.just-added {
    border-color: rgba(245, 216, 150, 0.85) !important;
    background: rgba(245, 216, 150, 0.08) !important;
    animation: justAddedGlow 1.4s ease-in-out 2;
  }
  @keyframes justAddedGlow {
    0%, 100% {
      box-shadow:
        0 4px 16px rgba(0, 0, 0, 0.28),
        0 0 0 rgba(212, 164, 76, 0),
        inset 0 1px 0 rgba(255, 255, 255, 0.06);
    }
    50% {
      box-shadow:
        0 4px 16px rgba(0, 0, 0, 0.28),
        0 0 32px rgba(212, 164, 76, 0.7),
        0 0 64px rgba(245, 216, 150, 0.35),
        inset 0 0 20px rgba(245, 216, 150, 0.22);
    }
  }

  .fav-card .thumb {
    width: 72px; height: 48px;
    border-radius: 6px;
    background-size: cover;
    background-position: center;
    flex-shrink: 0;
    position: relative;
    overflow: hidden;
    box-shadow:
      0 2px 8px rgba(0, 0, 0, 0.35),
      inset 0 0 0 1px rgba(245, 216, 150, 0.12);
  }
  .fav-card .thumb::after {
    content: '';
    position: absolute;
    inset: 0;
    background:
      linear-gradient(135deg, transparent 50%, rgba(0, 0, 0, 0.35)),
      linear-gradient(180deg, rgba(255, 255, 255, 0.06), transparent 30%);
  }

  .fav-card .info {
    flex: 1;
    min-width: 0;
    display: flex;
    flex-direction: column;
    justify-content: center;
  }
  .fav-card .name {
    font-family: var(--font-jp);
    font-weight: 500;
    font-size: 13px;
    letter-spacing: 0.1em;
    color: #fff;
    margin-bottom: 4px;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
  }
  .fav-card .meta {
    font-family: var(--font-en);
    font-size: 9px;
    letter-spacing: 0.25em;
    color: rgba(212, 164, 76, 0.55);
    text-transform: uppercase;
  }
  .fav-card .meta .scene-tag {
    color: var(--green-jade);
  }

  .fav-card .card-actions {
    display: flex;
    align-items: center;
    gap: 2px;
  }
  .card-action {
    width: 30px; height: 30px;
    display: flex; align-items: center; justify-content: center;
    color: rgba(245, 240, 230, 0.55);
    border-radius: 50%;
    transition: all 0.3s var(--ease);
    background: transparent;
  }
  .card-action:hover {
    color: var(--gold-warm);
    background: rgba(212, 164, 76, 0.1);
    backdrop-filter: blur(4px);
    -webkit-backdrop-filter: blur(4px);
    box-shadow: inset 0 0 0 1px rgba(245, 216, 150, 0.2), 0 0 12px rgba(212, 164, 76, 0.12);
  }
  .card-action.play-action:hover { color: var(--gold-warm); }
  .card-action.delete-action:hover { color: rgba(255, 120, 120, 0.9); }
  .card-action svg {
    width: 14px; height: 14px;
    fill: none; stroke: currentColor;
    stroke-width: 1.5;
  }
  .card-action svg.filled { fill: currentColor; stroke: none; }

  .fav-card .drag-handle {
    width: 20px;
    display: flex; align-items: center; justify-content: center;
    color: rgba(212, 164, 76, 0.25);
    cursor: grab;
    transition: color 0.3s;
    flex-shrink: 0;
  }
  .fav-card:hover .drag-handle { color: rgba(212, 164, 76, 0.6); }
  .fav-card .drag-handle svg { width: 10px; height: 14px; fill: currentColor; }

  /* フッター: 驕ｸ謚槭＠縺溘ｉ蜃ｺ繧倶ｸ括アクション */
  .fav-footer {
    padding: 16px 32px 24px;
    border-top: 1px solid rgba(245, 216, 150, 0.12);
    flex-shrink: 0;
    transform: translateY(100%);
    opacity: 0;
    transition: all 0.4s var(--ease-out);
    background: linear-gradient(180deg, transparent, rgba(255, 255, 255, 0.02));
    backdrop-filter: blur(10px);
    -webkit-backdrop-filter: blur(10px);
    position: relative;
  }
  .fav-footer::before {
    content: '';
    position: absolute;
    left: 32px; right: 32px;
    top: -1px; height: 1px;
    background: linear-gradient(90deg,
      transparent,
      rgba(245, 216, 150, 0.4) 25%,
      rgba(64, 206, 180, 0.25) 75%,
      transparent);
  }
  .fav-footer.visible {
    transform: translateY(0);
    opacity: 1;
  }
  .fav-footer-info {
    font-family: var(--font-jp);
    font-size: 11px;
    letter-spacing: 0.25em;
    color: var(--gold-warm);
    margin-bottom: 12px;
    text-align: center;
  }
  .fav-footer-actions {
    display: flex;
    gap: 8px;
    justify-content: center;
  }
  .fav-action-btn {
    padding: 10px 20px;
    font-family: var(--font-jp);
    font-weight: 500;
    font-size: 11px;
    letter-spacing: 0.25em;
    color: var(--gold-warm);
    background: linear-gradient(135deg, rgba(42, 74, 58, 0.7), rgba(30, 26, 22, 0.55));
    border: 1px solid rgba(232, 196, 120, 0.4);
    border-radius: 3px;
    transition: all 0.3s;
  }
  .fav-action-btn:hover {
    border-color: var(--gold-warm);
    background: linear-gradient(135deg, rgba(42, 74, 58, 0.9), rgba(212, 164, 76, 0.15));
    box-shadow: 0 0 24px rgba(212, 164, 76, 0.3);
  }
  .fav-action-btn.primary {
    color: #0a0f0c;
    background: linear-gradient(135deg, var(--gold-warm) 0%, var(--gold) 100%);
    border-color: var(--gold-warm);
  }
  .fav-action-btn.primary:hover {
    box-shadow: 0 0 30px rgba(245, 216, 150, 0.6);
  }
  .fav-action-btn.secondary {
    color: rgba(245, 240, 230, 0.6);
  }

  /* 遒ｺ隱阪Δ繝ｼ繝ル (削除など) */
  .confirm-modal {
    position: fixed;
    inset: 0;
    z-index: 60;
    background: rgba(5, 10, 8, 0.7);
    backdrop-filter: blur(8px);
    -webkit-backdrop-filter: blur(8px);
    display: flex;
    align-items: center;
    justify-content: center;
    opacity: 0;
    pointer-events: none;
    transition: opacity 0.4s;
  }
  .confirm-modal.visible {
    opacity: 1;
    pointer-events: auto;
  }
  .confirm-box {
    background: linear-gradient(180deg, rgba(26, 48, 40, 0.85), rgba(13, 18, 16, 0.9));
    backdrop-filter: blur(30px) saturate(1.3);
    border: 1px solid rgba(212, 164, 76, 0.3);
    border-radius: 4px;
    padding: 32px;
    max-width: 380px;
    width: 90%;
    text-align: center;
    box-shadow: 0 20px 80px rgba(0,0,0,0.7);
  }
  .confirm-box .msg {
    font-family: var(--font-jp);
    font-size: 14px;
    letter-spacing: 0.2em;
    color: #fff;
    margin-bottom: 24px;
    line-height: 1.8;
  }
  .confirm-box .buttons {
    display: flex;
    gap: 10px;
    justify-content: center;
  }

  /* ============ 繝ｩ繧､繧ｻ繝ｳ繧ｹ蜿門ｾ励ぎ繧､繝・(繧ｫ繝ｼ繝牙・繝√ぉ繝・け繝懊ャ繧ｯ繧ｹ逋ｺ蜈・+ 矢印 + 繝・Ο繝・・) ============ */
  /* 蜷・き繝ｼ繝峨・驕ｸ謚槭メ繧ｧ繝・け繝懊ャ繧ｯ繧ｹ繧定ц蜍慕匱蜈・(繧ｷ繝ｼ繧ｫ繝ｼ謚陦馴｢ｨ縲・≡→翡翠) */
  @keyframes lgCheckGlow {
    0%, 100% {
      box-shadow:
        0 0 8px rgba(212, 164, 76, 0.55),
        0 0 18px rgba(64, 206, 180, 0.38),
        0 0 34px rgba(64, 206, 180, 0.18);
      background: radial-gradient(circle, rgba(245, 216, 150, 0.15), rgba(64, 206, 180, 0.08));
    }
    50% {
      box-shadow:
        0 0 14px rgba(212, 164, 76, 0.9),
        0 0 30px rgba(64, 206, 180, 0.7),
        0 0 55px rgba(64, 206, 180, 0.35),
        0 0 90px rgba(64, 206, 180, 0.12);
      background: radial-gradient(circle, rgba(245, 216, 150, 0.3), rgba(64, 206, 180, 0.18));
    }
  }
  body.license-guide-mode .fav-card .card-action[data-action="select"] {
    position: relative;
    animation: lgCheckGlow 1.6s ease-in-out infinite;
    border-radius: 6px;
    color: #f5d896 !important;
    transform: scale(1.15);
    transition: transform 0.3s;
    z-index: 2;
  }
  body.license-guide-mode .fav-card .card-action[data-action="select"] svg {
    filter: drop-shadow(0 0 3px rgba(245, 216, 150, 0.8));
  }
  /* 譌｢縺ｫ驕ｸ謚樊ｸ医∩縺ｮ蝣ｴ蜷医・逋ｺ蜈峨ｒ謚代∴縺ｦ荳ｻ蠑ｵ繧剃ｸ九￡繧・*/
  body.license-guide-mode .fav-card.selected .card-action[data-action="select"] {
    animation: none;
    background: rgba(64, 206, 180, 0.12);
    box-shadow: 0 0 10px rgba(64, 206, 180, 0.4);
    transform: scale(1);
  }

  /* 荳贋ｸ九↓大きく動く矢印 (蟇ｾ雎｡隕∫ｴ縺ｮ逵滉ｸ翫↓動的配置) */
  @keyframes lgArrowBounce {
    0%   { transform: translateY(0);    opacity: 0.9; }
    50%  { transform: translateY(16px); opacity: 1;   }
    100% { transform: translateY(0);    opacity: 0.9; }
  }
  .license-guide-arrow {
    position: fixed;
    top: 0; left: 0;           /* JS で動的配置 */
    z-index: 10000;
    width: 56px; height: 56px;
    pointer-events: none;
    opacity: 0;
    visibility: hidden;
    filter:
      drop-shadow(0 0 8px rgba(245, 216, 150, 0.75))
      drop-shadow(0 0 18px rgba(64, 206, 180, 0.55))
      drop-shadow(0 0 36px rgba(64, 206, 180, 0.25));
    transition: opacity 0.3s, top 0.45s cubic-bezier(0.22, 1, 0.36, 1), left 0.45s cubic-bezier(0.22, 1, 0.36, 1);
  }
  .license-guide-arrow.visible {
    opacity: 1;
    visibility: visible;
    animation: lgArrowBounce 1.4s ease-in-out infinite;
  }
  .license-guide-arrow svg {
    width: 100%; height: 100%;
    fill: none;
    stroke: url(#lgArrowGrad);
    stroke-width: 2.4;
    stroke-linecap: round;
    stroke-linejoin: round;
  }

  /* 譯亥・繝・Ο繝・・ (ガラスモーフィズム + 繝ｫ繝ｼ繝ｳ陬・｣ｾ + 明朝) */
  @keyframes lgTelopFloat {
    0%, 100% { transform: translate(-50%, 0); }
    50%      { transform: translate(-50%, -5px); }
  }
  @keyframes lgTelopBreathe {
    0%, 100% { opacity: 1; }
    50%      { opacity: 0.88; }
  }
  @keyframes lgTelopAppear {
    from { opacity: 0; transform: translate(-50%, 6px) scale(0.92); }
    to   { opacity: 1; transform: translate(-50%, 0)   scale(1); }
  }
  @keyframes lgTelopDisappear {
    from { opacity: 1; transform: translate(-50%, 0)   scale(1); }
    to   { opacity: 0; transform: translate(-50%, 3px) scale(0.96); }
  }
  .license-guide-telop {
    position: fixed;
    /* 位置は JS で fav panel 縺ｮ荳企Κに動的配置 (top/left) */
    top: 160px;
    left: 50%;
    transform: translate(-50%, 0);
    z-index: 10000;  /* fav panel (z:26) 縺ｮ譛前面 */
    max-width: min(400px, 88vw);
    padding: 14px 22px;
    pointer-events: none;
    opacity: 0;
    visibility: hidden;
    display: flex;
    align-items: center;
    justify-content: center;
    background: linear-gradient(135deg,
      rgba(12, 22, 32, 0.48),
      rgba(18, 36, 48, 0.55));
    backdrop-filter: blur(10px) saturate(1.1);
    -webkit-backdrop-filter: blur(10px) saturate(1.1);
    border-radius: 14px;
    border: 1px solid rgba(212, 164, 76, 0.6);
    box-shadow:
      inset 0 0 24px rgba(245, 216, 150, 0.12),
      inset 0 0 1px rgba(120, 220, 200, 0.3),
      0 10px 40px rgba(0, 0, 0, 0.4),
      0 0 30px rgba(64, 206, 180, 0.2);
    color: rgba(245, 240, 230, 0.95);
    font-family: 'Noto Serif JP', serif;
    font-weight: 400;
    letter-spacing: 0.08em;
    text-shadow: 0 0 8px rgba(245, 216, 150, 0.45), 0 0 1px rgba(255, 255, 255, 0.2);
    overflow: hidden;
    transition: opacity 0.3s;
  }
  .license-guide-telop.visible {
    opacity: 1;
    visibility: visible;
    animation:
      lgTelopAppear 400ms cubic-bezier(0.22, 1, 0.36, 1),
      lgTelopFloat 3.5s ease-in-out 400ms infinite,
      lgTelopBreathe 2s ease-in-out 400ms infinite;
  }
  .license-guide-telop.leaving {
    animation: lgTelopDisappear 300ms ease-in forwards;
  }
  .license-guide-telop .lg-text {
    position: relative;
    z-index: 2;
    font-size: 14px;
    line-height: 1.5;
  }
  .license-guide-telop .lg-runes {
    position: absolute;
    inset: 0;
    width: 100%; height: 100%;
    color: rgba(245, 216, 150, 0.5);
    opacity: 0.08;
    pointer-events: none;
    z-index: 1;
  }
  /* 蜷ｹ縺榊・縺励・蟆ｻ蟆ｾ (繝ｩ繧､繧ｻ繝ｳ繧ｹ繝懊ち繝ｳ縺ｸ蜷代￠繧・ */
  .license-guide-telop .lg-tail {
    position: absolute;
    bottom: -8px;
    right: 60px;
    width: 14px; height: 14px;
    background: linear-gradient(135deg,
      rgba(12, 22, 32, 0.48),
      rgba(18, 36, 48, 0.55));
    border-right: 1px solid rgba(212, 164, 76, 0.6);
    border-bottom: 1px solid rgba(212, 164, 76, 0.6);
    transform: rotate(45deg);
    backdrop-filter: blur(10px) saturate(1.1);
    -webkit-backdrop-filter: blur(10px) saturate(1.1);
  }
  @media (max-width: 720px) {
    .license-guide-telop {
      padding: 12px 16px;
      max-width: min(340px, 88vw);
    }
    .license-guide-telop .lg-text { font-size: 13px; letter-spacing: 0.04em; }
  }
  /* 繧｢繧ｯ繧ｻ繧ｷ繝薙Μ繝・ぅ: 蜍輔″抑制 */
  @media (prefers-reduced-motion: reduce) {
    body.license-guide-mode .fav-card .card-action[data-action="select"] {
      animation: none !important;
      box-shadow: 0 0 14px rgba(212, 164, 76, 0.6), 0 0 28px rgba(64, 206, 180, 0.4) !important;
    }
    .license-guide-telop.visible,
    .license-guide-arrow.visible {
      animation: none !important;
      opacity: 1;
    }

    /* 繧｢繝九Γーション全般の抑制 */
    *, *::before, *::after {
      animation-duration: 0.01ms !important;
      animation-iteration-count: 1 !important;
      transition-duration: 0.01ms !important;
      scroll-behavior: auto !important;
    }
    /* 呼吸・回転・脈動 等を静的に */
    .prologue-mark .circle,
    .prologue-mark .circle2,
    .scene-image,
    .fav-card.playing::before,
    .action-btn,
    .info-hero__title,
    .immersive-subtitle,
    body.rings-open .rings-gallery-layer,
    .card-action[data-action="select"] {
      animation: none !important;
    }
    /* 諠・勹蛻・崛繝ｻ豐｡蜈･縺ｮ髟ｷ譎る俣繝医Λ繝ｳ繧ｸ繧ｷ繝ｧ繝ｳ繧ら洒邵ｮ */
    body.transitioning-to-immersed .scene-stage,
    body.immersed .scene-image,
    body.immersed .scene-hires,
    .dramatic-veil {
      transition-duration: 0.15s !important;
    }
  }

  /* ============ 繝倥Ν繝励ヱ繝阪Ν (譌・・縺励♀繧・ ============ */
  .help-trigger {
    position: fixed; bottom: 24px; left: 24px;
    z-index: 30;
    width: 36px; height: 36px;
    border-radius: 50%;
    background: rgba(18, 28, 22, 0.4);
    backdrop-filter: blur(10px);
    -webkit-backdrop-filter: blur(10px);
    border: 1px solid rgba(245, 216, 150, 0.25);
    color: rgba(245, 240, 230, 0.55);
    display: flex; align-items: center; justify-content: center;
    cursor: pointer;
    transition: all 0.3s var(--ease);
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.04);
  }
  .help-trigger:hover {
    color: var(--gold-warm);
    border-color: rgba(245, 216, 150, 0.55);
    background: rgba(212, 164, 76, 0.1);
    box-shadow: 0 0 14px rgba(212, 164, 76, 0.18), inset 0 1px 0 rgba(255, 255, 255, 0.08);
  }
  .help-trigger svg { width: 16px; height: 16px; }
  body.immersed .help-trigger,
  body.rings-open .help-trigger { opacity: 0.25; pointer-events: none; }

  .video-feature-modal {
    position: fixed;
    inset: 0;
    z-index: 10000;
    display: none;
    align-items: center;
    justify-content: center;
    padding: clamp(18px, 3vw, 42px);
    background:
      radial-gradient(ellipse at 50% 42%, rgba(245, 216, 150, 0.08), transparent 34%),
      rgba(0, 0, 0, 0.92);
    backdrop-filter: blur(22px) saturate(1.05);
    -webkit-backdrop-filter: blur(22px) saturate(1.05);
  }
  .video-feature-modal.visible {
    display: flex;
    animation: modalFade 0.35s ease forwards;
  }
  .video-feature-backdrop {
    position: absolute;
    inset: 0;
    cursor: pointer;
  }
  .video-feature-box {
    position: relative;
    z-index: 1;
    width: min(1480px, calc(100vw - 42px));
    max-height: calc(100vh - 42px);
    border: 1px solid rgba(245, 216, 150, 0.28);
    border-radius: 10px;
    overflow: hidden;
    background: #030403;
    box-shadow: 0 36px 120px rgba(0,0,0,0.72), 0 0 42px rgba(212, 164, 76, 0.12);
  }
  .video-feature-close {
    position: absolute;
    top: 14px;
    right: 14px;
    z-index: 4;
    width: 38px;
    height: 38px;
    border-radius: 50%;
    border: 1px solid rgba(245, 216, 150, 0.28);
    background: rgba(0,0,0,0.42);
    color: rgba(245, 240, 230, 0.8);
    display: flex;
    align-items: center;
    justify-content: center;
  }
  .video-feature-close:hover {
    color: #fff;
    border-color: rgba(245, 216, 150, 0.62);
    background: rgba(24, 18, 10, 0.7);
  }
  .video-feature-close svg {
    width: 16px;
    height: 16px;
    fill: none;
    stroke: currentColor;
    stroke-width: 1.5;
  }
  .video-feature-thumb {
    display: block;
    position: relative;
    aspect-ratio: 16 / 9;
    overflow: hidden;
    text-decoration: none;
    color: inherit;
    background: #050807;
  }
  .video-feature-thumb img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
    filter: saturate(0.96) brightness(0.84);
    transition: transform 0.7s var(--ease), filter 0.7s var(--ease);
  }
  .video-feature-thumb:hover img {
    transform: scale(1.025);
    filter: saturate(1.04) brightness(0.95);
  }
  .video-feature-thumb::after {
    content: '';
    position: absolute;
    inset: 0;
    background:
      radial-gradient(circle at 50% 50%, transparent 0%, rgba(0,0,0,0.16) 48%, rgba(0,0,0,0.56) 100%),
      linear-gradient(180deg, rgba(0,0,0,0.08), rgba(0,0,0,0.5));
    pointer-events: none;
  }
  .video-feature-screen {
    position: relative;
    aspect-ratio: 16 / 9;
    background:
      radial-gradient(circle at 50% 50%, rgba(245,216,150,0.08), transparent 36%),
      #000;
  }
  .video-feature-screen iframe,
  .video-feature-screen video {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    border: 0;
    background: #000;
    display: block;
  }
  .video-feature-play {
    position: absolute;
    left: 50%;
    top: 50%;
    z-index: 2;
    width: 76px;
    height: 76px;
    transform: translate(-50%, -50%);
    border: 1px solid rgba(245, 216, 150, 0.7);
    border-radius: 50%;
    background: radial-gradient(circle at center, rgba(212,164,76,0.24), rgba(0,0,0,0.4));
    color: rgba(245, 216, 150, 0.95);
    display: flex;
    align-items: center;
    justify-content: center;
    box-shadow: 0 0 36px rgba(212,164,76,0.28);
  }
  .video-feature-play svg {
    width: 28px;
    height: 28px;
    margin-left: 4px;
    fill: currentColor;
  }
  .video-feature-body {
    padding: 18px 24px 20px;
    display: grid;
    grid-template-columns: 1fr auto;
    gap: 18px;
    align-items: center;
  }
  .video-feature-kicker {
    font-family: var(--font-en);
    font-size: 10px;
    letter-spacing: 0.42em;
    text-transform: uppercase;
    color: rgba(212, 164, 76, 0.66);
    margin-bottom: 8px;
  }
  .video-feature-title {
    font-family: var(--font-jp);
    font-size: clamp(20px, 2.2vw, 30px);
    font-weight: 300;
    letter-spacing: 0.18em;
    color: rgba(245, 240, 230, 0.94);
    margin-bottom: 10px;
  }
  .video-feature-desc {
    font-size: 12px;
    line-height: 1.9;
    letter-spacing: 0.08em;
    color: rgba(245, 240, 230, 0.62);
  }
  .video-feature-link {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 44px;
    padding: 0 20px;
    border-radius: 999px;
    border: 1px solid rgba(245, 216, 150, 0.42);
    background: rgba(212, 164, 76, 0.12);
    color: rgba(245, 216, 150, 0.92);
    text-decoration: none;
    font-family: var(--font-en);
    font-size: 11px;
    letter-spacing: 0.18em;
    white-space: nowrap;
  }
  .video-feature-link:hover {
    border-color: rgba(245, 216, 150, 0.82);
    background: rgba(212, 164, 76, 0.2);
    color: #fff;
  }
  @media (max-width: 760px) {
    .video-feature-modal { padding: 16px; }
    .video-feature-body {
      grid-template-columns: 1fr;
      padding: 20px;
    }
    .video-feature-link { width: 100%; }
  }

  .video-feature-teaser,
  .night-breeze-teaser {
    position: fixed;
    left: calc(50% + min(18vw, 280px));
    bottom: 24px;
    z-index: 2105;
    display: grid;
    grid-template-columns: 138px 1fr;
    gap: 16px;
    align-items: stretch;
    width: clamp(330px, 31vw, 456px);
    min-height: 112px;
    padding: 12px 16px 12px 12px;
    border: 1px solid rgba(245, 216, 150, 0.34);
    border-radius: 8px;
    background:
      linear-gradient(135deg, rgba(255,255,255,0.07), transparent 22%, transparent 78%, rgba(245,216,150,0.08)),
      rgba(5, 8, 7, 0.68);
    color: rgba(245, 240, 230, 0.9);
    box-shadow:
      0 22px 70px rgba(0,0,0,0.58),
      0 0 34px rgba(212,164,76,0.12),
      inset 0 1px 0 rgba(255,255,255,0.07);
    backdrop-filter: blur(14px) saturate(1.08);
    -webkit-backdrop-filter: blur(14px) saturate(1.08);
    cursor: pointer;
    text-decoration: none;
    opacity: 0;
    pointer-events: none;
    transform: translate(-50%, 12px);
    transition: opacity 0.7s var(--ease), transform 0.7s var(--ease-out), border-color 0.3s var(--ease), background 0.3s var(--ease);
  }
  .night-breeze-teaser {
    left: calc(50% - min(18vw, 280px));
    grid-template-columns: 1fr;
    gap: 0;
    width: clamp(420px, 38vw, 640px);
    min-height: 0;
    aspect-ratio: 16 / 9;
    padding: 0;
    overflow: hidden;
  }
  .night-breeze-teaser:visited,
  .night-breeze-teaser:focus,
  .night-breeze-teaser:hover {
    color: rgba(245, 240, 230, 0.9);
    text-decoration: none;
  }
  .video-feature-teaser::before,
  .video-feature-teaser::after,
  .night-breeze-teaser::before,
  .night-breeze-teaser::after {
    content: '';
    position: absolute;
    pointer-events: none;
  }
  .video-feature-teaser::before,
  .night-breeze-teaser::before {
    inset: 0;
    border-radius: inherit;
    background: linear-gradient(112deg, transparent 0%, rgba(255,255,255,0.09) 38%, transparent 47%);
    opacity: 0.65;
  }
  .video-feature-teaser::after,
  .night-breeze-teaser::after {
    left: 18px;
    right: 18px;
    bottom: -9px;
    height: 1px;
    background: linear-gradient(90deg, transparent, rgba(245,216,150,0.5), transparent);
    box-shadow: 0 0 18px rgba(212,164,76,0.32);
  }
  body[data-theater-entered="1"].no-scene-selected.journey-choice-mode .video-feature-teaser,
  body[data-theater-entered="1"].no-scene-selected.journey-choice-mode .night-breeze-teaser {
    opacity: 1;
    pointer-events: auto;
    transform: translate(-50%, 0);
  }
  body.rings-open .video-feature-teaser,
  body.immersed .video-feature-teaser,
  body.tag-entry-mode .video-feature-teaser,
  body:not(.no-scene-selected) .video-feature-teaser,
  body.rings-open .night-breeze-teaser,
  body.immersed .night-breeze-teaser,
  body.tag-entry-mode .night-breeze-teaser,
  body:not(.no-scene-selected) .night-breeze-teaser {
    opacity: 0;
    pointer-events: none;
  }
  .video-feature-teaser:hover,
  .night-breeze-teaser:hover {
    border-color: rgba(245, 216, 150, 0.62);
    background:
      linear-gradient(135deg, rgba(255,255,255,0.1), transparent 24%, transparent 76%, rgba(245,216,150,0.12)),
      rgba(16, 20, 16, 0.76);
    transform: translate(-50%, -2px);
  }
  .video-feature-teaser-thumb {
    position: relative;
    aspect-ratio: 16 / 9;
    border-radius: 6px;
    overflow: hidden;
    background: #050807;
    border: 1px solid rgba(245, 216, 150, 0.24);
    box-shadow: inset 0 0 18px rgba(0,0,0,0.55);
  }
  .video-feature-teaser-thumb img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
    filter: brightness(0.82) saturate(0.98);
  }
  .video-feature-teaser-thumb::after {
    content: '';
    position: absolute;
    inset: 0;
    background:
      linear-gradient(120deg, rgba(255,255,255,0.16), transparent 25%, transparent 70%, rgba(255,255,255,0.06)),
      radial-gradient(circle at 50% 50%, rgba(0,0,0,0.04), rgba(0,0,0,0.42));
    pointer-events: none;
  }
  .night-breeze-teaser .video-feature-teaser-thumb {
    width: 100%;
    height: 100%;
    aspect-ratio: auto;
    border: 0;
    border-radius: inherit;
    box-shadow: none;
  }
  .night-breeze-teaser .video-feature-teaser-thumb img {
    filter: brightness(0.9) saturate(1.04) contrast(1.04);
  }
  .night-breeze-teaser .video-feature-teaser-thumb::after {
    background:
      linear-gradient(120deg, rgba(255,255,255,0.1), transparent 22%, transparent 76%, rgba(245,216,150,0.07)),
      linear-gradient(180deg, transparent 62%, rgba(0,0,0,0.28));
  }
  .night-breeze-teaser > span:not(.video-feature-teaser-thumb) {
    position: absolute;
    right: 18px;
    bottom: 16px;
    z-index: 2;
    display: flex;
    justify-content: flex-end;
    pointer-events: none;
  }
  .night-breeze-teaser .video-feature-teaser-kicker,
  .night-breeze-teaser .video-feature-teaser-title,
  .night-breeze-teaser .video-feature-teaser-copy {
    display: none;
  }
  .night-breeze-teaser .video-feature-teaser-ticket {
    margin: 0;
    min-height: 28px;
    border-color: rgba(245,216,150,.5);
    background: rgba(3, 8, 12, .44);
    backdrop-filter: blur(10px);
    -webkit-backdrop-filter: blur(10px);
  }
  .video-feature-teaser-play {
    position: absolute;
    left: 50%;
    top: 50%;
    z-index: 1;
    width: 32px;
    height: 32px;
    transform: translate(-50%, -50%);
    border: 1px solid rgba(245, 216, 150, 0.72);
    border-radius: 50%;
    background: rgba(0,0,0,0.36);
    color: rgba(245, 216, 150, 0.95);
    display: flex;
    align-items: center;
    justify-content: center;
  }
  .video-feature-teaser-play svg {
    width: 13px;
    height: 13px;
    margin-left: 2px;
    fill: currentColor;
  }
  .video-feature-teaser-kicker {
    display: block;
    margin: 2px 0 10px;
    font-family: var(--font-en);
    font-size: 9px;
    letter-spacing: 0.36em;
    color: rgba(212, 164, 76, 0.8);
    text-transform: uppercase;
  }
  .video-feature-teaser-title {
    display: block;
    margin-bottom: 8px;
    font-size: 17px;
    letter-spacing: 0.14em;
    color: rgba(245, 240, 230, 0.94);
  }
  .video-feature-teaser-copy {
    display: block;
    font-size: 10px;
    line-height: 1.65;
    letter-spacing: 0.08em;
    color: rgba(245, 240, 230, 0.58);
  }
  .video-feature-teaser-ticket {
    display: inline-flex;
    align-items: center;
    margin-top: 10px;
    min-height: 24px;
    padding: 0 10px;
    border: 1px solid rgba(245, 216, 150, 0.28);
    border-radius: 999px;
    font-family: var(--font-en);
    font-size: 8px;
    letter-spacing: 0.24em;
    color: rgba(245, 216, 150, 0.78);
    text-transform: uppercase;
    background: rgba(212, 164, 76, 0.08);
  }
  @media (max-width: 760px) {
    .video-feature-teaser,
    .night-breeze-teaser {
      left: 50%;
      bottom: 16px;
      grid-template-columns: 82px 1fr;
      gap: 11px;
      padding-right: 12px;
      width: min(420px, calc(100vw - 28px));
      min-height: 74px;
    }
    .video-feature-teaser-title { font-size: 13px; }
    .video-feature-teaser-copy { font-size: 9px; }
    .video-feature-teaser-ticket { display: none; }
    .night-breeze-teaser {
      bottom: 104px;
      width: min(420px, calc(100vw - 28px));
      grid-template-columns: 1fr;
      padding: 0;
    }
  }

  #videoFeatureTrigger,
  #footprintTrigger,
  #footprintToggle,
  #travelToggle {
    display: none !important;
  }
  .action-tower {
    gap: 12px;
  }
  .theater-menu-modal {
    position: fixed;
    inset: 0;
    z-index: 9300;
    display: none;
    justify-content: flex-end;
    background: rgba(0,0,0,0.38);
    backdrop-filter: blur(10px);
    -webkit-backdrop-filter: blur(10px);
  }
  .theater-menu-modal.visible {
    display: flex;
    animation: modalFade 0.25s ease forwards;
  }
  .theater-menu-backdrop {
    position: absolute;
    inset: 0;
    cursor: pointer;
  }
  .theater-menu-box {
    position: relative;
    z-index: 1;
    width: min(430px, calc(100vw - 24px));
    height: calc(100vh - 32px);
    margin: 16px 16px 16px 0;
    overflow: hidden;
    display: flex;
    flex-direction: column;
    border: 1px solid rgba(245, 216, 150, 0.28);
    border-radius: 10px;
    background:
      radial-gradient(circle at 70% 10%, rgba(212,164,76,0.14), transparent 30%),
      linear-gradient(180deg, rgba(12, 18, 15, 0.94), rgba(3, 5, 5, 0.96));
    box-shadow: 0 30px 120px rgba(0,0,0,0.72), inset 0 1px 0 rgba(255,255,255,0.06);
    backdrop-filter: blur(18px) saturate(1.08);
    -webkit-backdrop-filter: blur(18px) saturate(1.08);
  }
  .theater-menu-header {
    position: relative;
    padding: 24px 24px 16px;
    border-bottom: 1px solid rgba(245, 216, 150, 0.13);
  }
  .theater-menu-kicker {
    margin-bottom: 8px;
    font-family: var(--font-en);
    font-size: 9px;
    letter-spacing: 0.42em;
    color: rgba(212, 164, 76, 0.66);
    text-transform: uppercase;
  }
  .theater-menu-title {
    font-size: 22px;
    letter-spacing: 0.18em;
    color: rgba(245, 240, 230, 0.94);
  }
  .theater-menu-sub {
    margin-top: 8px;
    font-size: 11px;
    line-height: 1.8;
    letter-spacing: 0.08em;
    color: rgba(245, 240, 230, 0.54);
  }
  .theater-menu-close {
    position: absolute;
    top: 18px;
    right: 18px;
    width: 34px;
    height: 34px;
    border-radius: 50%;
    border: 1px solid rgba(245, 216, 150, 0.22);
    color: rgba(245, 240, 230, 0.68);
    display: flex;
    align-items: center;
    justify-content: center;
  }
  .theater-menu-close:hover {
    color: #fff;
    border-color: rgba(245, 216, 150, 0.58);
    background: rgba(212, 164, 76, 0.1);
  }
  .theater-menu-close svg {
    width: 14px;
    height: 14px;
    fill: none;
    stroke: currentColor;
    stroke-width: 1.6;
  }
  .theater-menu-body {
    flex: 1;
    overflow-y: auto;
    padding: 18px 18px 24px;
  }
  .theater-menu-section {
    margin-bottom: 18px;
    padding-bottom: 16px;
    border-bottom: 1px solid rgba(245, 216, 150, 0.1);
  }
  .theater-menu-section:last-child {
    border-bottom: 0;
    margin-bottom: 0;
  }
  .theater-menu-section-title {
    margin: 0 0 10px 4px;
    font-family: var(--font-en);
    font-size: 9px;
    letter-spacing: 0.34em;
    color: rgba(212, 164, 76, 0.72);
    text-transform: uppercase;
  }
  .theater-menu-grid {
    display: grid;
    gap: 9px;
  }
  .theater-menu-grid.two {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
  .theater-menu-action,
  .theater-menu-video {
    position: relative;
    width: 100%;
    min-height: 58px;
    padding: 12px 13px;
    border: 1px solid rgba(245, 216, 150, 0.16);
    border-radius: 7px;
    background: rgba(255,255,255,0.035);
    color: rgba(245, 240, 230, 0.88);
    text-align: left;
    overflow: hidden;
    transition: border-color 0.25s ease, background 0.25s ease, transform 0.25s ease;
  }
  .theater-menu-action:hover,
  .theater-menu-video:hover {
    transform: translateY(-1px);
    border-color: rgba(245, 216, 150, 0.42);
    background: rgba(212, 164, 76, 0.09);
  }
  .theater-menu-action strong,
  .theater-menu-video strong {
    display: block;
    margin-bottom: 5px;
    font-size: 13px;
    letter-spacing: 0.12em;
    color: rgba(245, 240, 230, 0.94);
  }
  .theater-menu-action span,
  .theater-menu-video span {
    display: block;
    font-size: 9px;
    line-height: 1.55;
    letter-spacing: 0.08em;
    color: rgba(245, 240, 230, 0.52);
  }
  .theater-menu-video {
    display: grid;
    grid-template-columns: 120px 1fr;
    gap: 13px;
    align-items: center;
    min-height: 96px;
    padding: 10px 12px 10px 10px;
  }
  .theater-menu-video + .theater-menu-video {
    margin-top: 10px;
  }
  .theater-menu-video img {
    width: 100%;
    aspect-ratio: 16 / 9;
    object-fit: cover;
    display: block;
    border-radius: 5px;
    filter: brightness(0.86) saturate(0.96);
    border: 1px solid rgba(245, 216, 150, 0.18);
  }
  .theater-menu-video .now {
    display: inline-flex;
    align-items: center;
    min-height: 18px;
    margin-bottom: 6px;
    padding: 0 8px;
    border-radius: 999px;
    border: 1px solid rgba(245, 216, 150, 0.42);
    background: rgba(212, 164, 76, 0.15);
    font-family: var(--font-en);
    font-size: 8px;
    letter-spacing: 0.28em;
    color: rgba(245, 216, 150, 0.92);
    text-transform: uppercase;
  }
  body.journey-menu-open .journey-choice,
  body.journey-menu-open .journey-choice-card {
    pointer-events: none !important;
  }
  @media (max-width: 760px) {
    .theater-menu-modal { justify-content: center; align-items: flex-end; }
    .theater-menu-box {
      width: calc(100vw - 20px);
      height: min(82vh, 720px);
      margin: 0 0 10px;
    }
    .theater-menu-grid.two {
      grid-template-columns: 1fr;
    }
    .theater-menu-video {
      grid-template-columns: 94px 1fr;
    }
  }

  .help-panel {
    position: fixed; inset: 0;
    z-index: 85;
    background: rgba(5, 10, 8, 0.55);
    backdrop-filter: blur(14px);
    -webkit-backdrop-filter: blur(14px);
    display: flex; align-items: center; justify-content: center;
    padding: 24px;
    opacity: 0;
    pointer-events: none;
    transition: opacity 0.4s var(--ease);
  }
  .help-panel.visible {
    opacity: 1;
    pointer-events: auto;
  }
  .help-box {
    position: relative;
    max-width: 560px;
    max-height: 86vh;
    width: 100%;
    overflow-y: auto;
    background: linear-gradient(135deg, rgba(18, 28, 22, 0.85), rgba(12, 18, 14, 0.92));
    border: 1px solid rgba(245, 216, 150, 0.32);
    border-radius: 12px;
    padding: 36px 40px;
    box-shadow: 0 20px 80px rgba(0,0,0,0.55), 0 0 40px rgba(64, 206, 180, 0.12);
    transform: translateY(12px) scale(0.96);
    transition: transform 0.5s var(--ease-out);
  }
  .help-panel.visible .help-box { transform: translateY(0) scale(1); }
  .help-close {
    position: absolute; top: 16px; right: 16px;
    width: 32px; height: 32px; border-radius: 50%;
    background: rgba(255,255,255,0.04);
    border: 1px solid rgba(245, 216, 150, 0.2);
    color: var(--text-soft);
    display: flex; align-items: center; justify-content: center;
    cursor: pointer; transition: all 0.3s;
  }
  .help-close:hover { color: var(--gold-warm); border-color: var(--gold-warm); }
  .help-close svg { width: 12px; height: 12px; }
  .help-header {
    text-align: center;
    margin-bottom: 24px;
    padding-bottom: 18px;
    border-bottom: 1px solid rgba(245, 216, 150, 0.15);
  }
  .help-title {
    font-family: var(--font-jp);
    font-size: 18px;
    letter-spacing: 0.4em;
    color: var(--gold-warm);
    margin-bottom: 4px;
    text-indent: 0.4em;
    text-shadow: 0 0 14px rgba(245, 216, 150, 0.25);
  }
  .help-subtitle {
    font-family: var(--font-en);
    font-size: 10px;
    letter-spacing: 0.35em;
    color: rgba(212, 164, 76, 0.6);
    font-style: italic;
  }
  .help-section { margin-bottom: 22px; }
  .help-section h3 {
    font-family: var(--font-en);
    font-size: 10px;
    letter-spacing: 0.3em;
    color: var(--gold);
    text-transform: uppercase;
    margin-bottom: 10px;
  }
  .help-section p {
    font-family: var(--font-jp);
    font-size: 12px;
    line-height: 1.9;
    color: rgba(245, 240, 230, 0.82);
    letter-spacing: 0.08em;
  }
  .help-keys {
    display: grid;
    grid-template-columns: auto 1fr;
    gap: 8px 18px;
    align-items: baseline;
  }
  .help-keys dt {
    font-family: var(--font-jp);
    font-size: 11px;
    color: var(--gold-warm);
    letter-spacing: 0.08em;
    white-space: nowrap;
  }
  .help-keys dd {
    font-family: var(--font-jp);
    font-size: 12px;
    color: rgba(245, 240, 230, 0.78);
    line-height: 1.7;
    letter-spacing: 0.06em;
  }
  .help-keys kbd {
    display: inline-block;
    min-width: 24px;
    padding: 2px 6px;
    font-family: 'Courier New', monospace;
    font-size: 10px;
    color: var(--gold-warm);
    background: rgba(255, 255, 255, 0.05);
    border: 1px solid rgba(245, 216, 150, 0.3);
    border-radius: 3px;
    text-align: center;
    box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.2);
    margin-right: 3px;
  }
  @media (max-width: 720px) {
    .help-trigger { bottom: 16px; left: 16px; width: 32px; height: 32px; }
    .help-box { padding: 26px 24px; }
    .help-title { font-size: 15px; }
  }

  /* ============ 繝ｩ繧､繧ｻ繝ｳ繧ｹ逕ｳ隲九Δ繝ｼ繝ル ============ */
  .license-modal {
    position: fixed;
    inset: 0;
    z-index: 80;
    background: rgba(5, 10, 8, 0.85);
    backdrop-filter: blur(12px);
    -webkit-backdrop-filter: blur(12px);
    display: flex;
    align-items: center;
    justify-content: center;
    opacity: 0;
    pointer-events: none;
    transition: opacity 0.6s var(--ease);
  }
  .license-modal.visible {
    opacity: 1;
    pointer-events: auto;
  }
  .license-box {
    width: min(620px, 92vw);
    max-height: 88vh;
    overflow-y: auto;
    background: linear-gradient(180deg, rgba(26, 48, 40, 0.85), rgba(13, 18, 16, 0.92));
    backdrop-filter: blur(34px) saturate(1.4);
    border: 1px solid rgba(212, 164, 76, 0.3);
    border-radius: 4px;
    box-shadow: 0 30px 100px rgba(0,0,0,0.8);
    position: relative;
    transform: translateY(30px) scale(0.95);
    transition: transform 0.6s var(--ease-out);
  }
  .license-modal.visible .license-box {
    transform: translateY(0) scale(1);
  }
  .license-box::before {
    content: '';
    position: absolute;
    top: 0; left: 20%; right: 20%;
    height: 1px;
    background: linear-gradient(90deg, transparent, var(--gold-warm), transparent);
  }
  .license-header {
    padding: 36px 40px 20px;
    border-bottom: 1px solid rgba(212, 164, 76, 0.15);
  }
  .license-header .title {
    font-family: var(--font-jp);
    font-weight: 500;
    font-size: 22px;
    letter-spacing: 0.3em;
    color: #fff;
    margin-bottom: 8px;
    text-indent: 0.3em;
  }
  .license-header .subtitle {
    font-family: var(--font-en);
    font-size: 10px;
    letter-spacing: 0.4em;
    color: var(--gold-warm);
    text-transform: uppercase;
  }
  .license-close {
    position: absolute;
    top: 32px; right: 32px;
    width: 36px; height: 36px;
    border-radius: 50%;
    background: rgba(20, 18, 16, 0.5);
    border: 1px solid rgba(212, 164, 76, 0.2);
    display: flex; align-items: center; justify-content: center;
    color: var(--text-soft);
    transition: all 0.3s;
  }
  .license-close:hover {
    color: var(--gold-warm);
    border-color: rgba(232, 196, 120, 0.6);
  }
  .license-close svg { width: 14px; height: 14px; fill: none; stroke: currentColor; stroke-width: 1.5; }

  .license-body {
    padding: 28px 40px 32px;
  }
  .license-selected {
    background: rgba(42, 74, 58, 0.3);
    border: 1px solid rgba(212, 164, 76, 0.15);
    border-radius: 3px;
    padding: 16px 20px;
    margin-bottom: 24px;
    max-height: 160px;
    overflow-y: auto;
  }
  .license-selected .label {
    font-family: var(--font-en);
    font-size: 9px;
    letter-spacing: 0.4em;
    color: var(--gold-warm);
    text-transform: uppercase;
    margin-bottom: 10px;
  }
  .license-selected ul {
    list-style: none;
    padding: 0;
    margin: 0;
  }
  .license-selected li {
    display: flex;
    justify-content: space-between;
    padding: 6px 0;
    border-bottom: 1px dashed rgba(212, 164, 76, 0.1);
    font-family: var(--font-jp);
    font-size: 12px;
    color: var(--text);
  }
  .license-selected li:last-child { border-bottom: none; }
  .license-selected li .price {
    font-family: var(--font-en);
    color: var(--gold-warm);
    letter-spacing: 0.1em;
  }
  .license-total {
    display: flex;
    justify-content: space-between;
    padding: 14px 20px;
    margin-bottom: 20px;
    background: linear-gradient(90deg, rgba(212, 164, 76, 0.1), rgba(123, 165, 131, 0.08));
    border: 1px solid rgba(232, 196, 120, 0.35);
    border-radius: 3px;
    font-family: var(--font-jp);
    font-size: 14px;
    letter-spacing: 0.15em;
  }
  .license-total .amount {
    font-family: var(--font-en);
    color: var(--gold-warm);
    font-size: 18px;
    letter-spacing: 0.05em;
  }

  /* ============ 繝励Λ繝ｳ驕ｸ謚・(Single / Pack) ============ */
  .license-plans {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 10px;
    margin-bottom: 16px;
  }
  .license-plan {
    position: relative;
    padding: 14px 16px;
    background: rgba(13, 18, 16, 0.5);
    border: 1px solid rgba(212, 164, 76, 0.2);
    border-radius: 5px;
    cursor: pointer;
    transition: all 0.3s var(--ease);
  }
  .license-plan:hover {
    background: rgba(26, 48, 40, 0.5);
    border-color: rgba(212, 164, 76, 0.4);
  }
  .license-plan.active {
    background: linear-gradient(135deg, rgba(212, 164, 76, 0.15), rgba(64, 206, 180, 0.08));
    border-color: var(--gold-warm);
    box-shadow: 0 0 20px rgba(212, 164, 76, 0.18), 0 0 40px rgba(64, 206, 180, 0.08);
  }
  .license-plan input { position: absolute; opacity: 0; }
  .license-plan-title {
    font-family: var(--font-en);
    font-size: 11px;
    letter-spacing: 0.22em;
    color: var(--gold-warm);
    text-transform: uppercase;
    margin-bottom: 4px;
  }
  .license-plan-price {
    font-family: var(--font-en);
    font-size: 20px;
    color: #fff;
    letter-spacing: 0.04em;
    margin-bottom: 4px;
  }
  .license-plan-price .unit {
    font-family: var(--font-jp);
    font-size: 10px;
    color: rgba(245, 240, 230, 0.5);
    letter-spacing: 0.18em;
    margin-left: 4px;
  }
  .license-plan-desc {
    font-family: var(--font-jp);
    font-size: 10px;
    color: rgba(245, 240, 230, 0.55);
    line-height: 1.6;
    letter-spacing: 0.06em;
  }
  .license-plan-hint {
    margin-top: 4px;
    font-family: var(--font-jp);
    font-size: 9px;
    color: var(--green-jade);
    letter-spacing: 0.15em;
    opacity: 0;
    transition: opacity 0.3s;
  }
  .license-plan.active .license-plan-hint,
  .license-plan.recommended .license-plan-hint { opacity: 1; }

  /* 諠・ｱ陦ｨ遉ｺ縺ｮ縺ｿ縺ｮ繝励Λ繝ｳ (繧ｯ繝ｪ繝・け荳榊庄縲∝盾閠・畑) */
  .license-plans--info { margin-bottom: 14px; }
  .license-plan--info {
    cursor: default;
    background: rgba(255, 255, 255, 0.02);
    border-color: rgba(212, 164, 76, 0.15);
  }
  .license-plan--info:hover {
    background: rgba(255, 255, 255, 0.03);
    border-color: rgba(212, 164, 76, 0.25);
    box-shadow: none;
  }

  /* ============ 螟ｧ隕乗ｨ｡譯井ｻｶ縺ｮ豕ｨ險・============ */
  .license-large-notice {
    display: none;
    padding: 16px 18px;
    margin-bottom: 16px;
    background: linear-gradient(135deg, rgba(64, 206, 180, 0.08), rgba(212, 164, 76, 0.06));
    border: 1px solid rgba(64, 206, 180, 0.35);
    border-radius: 4px;
    font-family: var(--font-jp);
    line-height: 1.8;
    letter-spacing: 0.06em;
  }
  .license-large-notice.visible { display: block; }
  .license-large-notice strong {
    display: block;
    font-family: var(--font-en);
    font-size: 11px;
    letter-spacing: 0.22em;
    color: var(--gold-warm);
    margin-bottom: 6px;
  }
  .license-large-notice p {
    font-size: 11.5px;
    color: rgba(245, 240, 230, 0.75);
  }

  /* ============ 成功画面の詳細表示 ============ */
  .license-success-details {
    margin: 14px 0;
    padding: 12px 16px;
    background: rgba(13, 18, 16, 0.5);
    border: 1px solid rgba(212, 164, 76, 0.2);
    border-radius: 4px;
    font-family: var(--font-jp);
    font-size: 11px;
    color: rgba(245, 240, 230, 0.75);
    letter-spacing: 0.05em;
    text-align: left;
  }
  .license-success-details .kv {
    display: flex;
    justify-content: space-between;
    gap: 12px;
    padding: 4px 0;
  }
  .license-success-details .k {
    color: rgba(245, 216, 150, 0.7);
    font-family: var(--font-en);
    letter-spacing: 0.15em;
    font-size: 10px;
  }
  .license-success-details .v {
    color: #fff;
    font-family: var(--font-jp);
    text-align: right;
    word-break: break-all;
  }
  .license-success-details .v code {
    font-family: 'Courier New', monospace;
    font-size: 10px;
    color: var(--gold-warm);
  }

  /* ============ 繝ｩ繧､繧ｻ繝ｳ繧ｹ貂医∩繝槭・繧ｫ繝ｼ ============ */
  .license-selected li.already-licensed {
    opacity: 0.45;
    text-decoration: line-through;
  }
  .license-selected li.already-licensed::before {
    content: "ライセンス購入済";
    display: inline-block;
    margin-right: 6px;
    padding: 1px 6px;
    background: rgba(64, 206, 180, 0.2);
    border: 1px solid rgba(64, 206, 180, 0.4);
    border-radius: 2px;
    color: var(--green-jade);
    font-family: var(--font-jp);
    font-size: 9px;
    letter-spacing: 0.1em;
    text-decoration: none;
  }

  .license-form {
    display: flex;
    flex-direction: column;
    gap: 14px;
  }
  .license-form .field {
    display: flex;
    flex-direction: column;
    gap: 6px;
  }
  .license-form .field label {
    font-family: var(--font-jp);
    font-size: 10px;
    letter-spacing: 0.3em;
    color: rgba(212, 164, 76, 0.85);
  }
  .license-form .field label .req {
    color: rgba(255, 140, 140, 0.8);
    margin-left: 4px;
  }
  .license-form input,
  .license-form textarea,
  .license-form select {
    padding: 10px 14px;
    background: rgba(13, 18, 16, 0.5);
    border: 1px solid rgba(212, 164, 76, 0.2);
    border-radius: 3px;
    font-family: var(--font-jp);
    font-size: 13px;
    letter-spacing: 0.05em;
    color: #fff;
    outline: none;
    transition: all 0.3s;
    cursor: none;
  }
  .license-form input:focus,
  .license-form textarea:focus,
  .license-form select:focus {
    border-color: var(--gold-warm);
    background: rgba(26, 48, 40, 0.5);
    box-shadow: 0 0 20px rgba(212, 164, 76, 0.2);
  }
  .license-form textarea {
    resize: vertical;
    min-height: 80px;
    font-family: var(--font-jp);
  }
  .license-form .submit-row {
    margin-top: 14px;
    display: flex;
    gap: 10px;
    justify-content: flex-end;
  }
  .license-note {
    margin-top: 14px;
    padding: 12px 14px;
    background: rgba(20, 18, 16, 0.4);
    border-left: 2px solid var(--green-jade);
    font-family: var(--font-jp);
    font-size: 10px;
    line-height: 1.8;
    letter-spacing: 0.1em;
    color: rgba(245, 240, 230, 0.6);
    border-radius: 2px;
  }

  /* ============ 雜ｳ霍｡讖溯・ ============ */

  /* 雜ｳ霍｡繝帙ヰ繝ｼ譎ゅ・繝・・繝ｫ繝√ャ繝・*/
  .footprint-tooltip {
    position: fixed;
    z-index: 25;
    padding: 10px 14px;
    background: linear-gradient(135deg, rgba(26, 48, 40, 0.92), rgba(13, 18, 16, 0.92));
    backdrop-filter: blur(20px) saturate(1.3);
    -webkit-backdrop-filter: blur(20px) saturate(1.3);
    border: 1px solid rgba(232, 196, 120, 0.35);
    border-radius: 3px;
    pointer-events: none;
    opacity: 0;
    transform: translate(-50%, -100%) translateY(-12px);
    transition: opacity 0.4s var(--ease), transform 0.4s var(--ease);
    max-width: 320px;
    box-shadow: 0 10px 30px rgba(0,0,0,0.5), 0 0 24px rgba(212, 164, 76, 0.15);
  }
  .footprint-tooltip.visible {
    opacity: 1;
    transform: translate(-50%, -100%) translateY(-6px);
  }
  .footprint-tooltip::after {
    content: '';
    position: absolute;
    top: 100%; left: 50%;
    transform: translateX(-50%);
    border: 5px solid transparent;
    border-top-color: rgba(232, 196, 120, 0.35);
  }
  .footprint-tooltip .tt-msg {
    font-family: var(--font-jp);
    font-weight: 400;
    font-size: 13px;
    letter-spacing: 0.1em;
    color: #fff;
    line-height: 1.7;
    margin-bottom: 6px;
  }
  .footprint-tooltip .tt-meta {
    font-family: var(--font-en);
    font-size: 9px;
    letter-spacing: 0.3em;
    color: rgba(212, 164, 76, 0.75);
    text-transform: uppercase;
    display: flex;
    justify-content: space-between;
    gap: 12px;
  }
  .footprint-tooltip .tt-meta .author {
    color: var(--gold-warm);
    font-family: var(--font-jp);
    font-size: 10px;
    letter-spacing: 0.2em;
    text-transform: none;
  }
  .footprint-tooltip .tt-report {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    margin-left: 10px;
    color: rgba(255, 140, 140, 0.6);
    cursor: pointer;
    pointer-events: auto;
    font-size: 9px;
    transition: color 0.3s;
  }
  .footprint-tooltip .tt-report:hover { color: rgba(255, 140, 140, 1); }

  /* 謚慕ｨｿ繝輔か繝ｼ繝繝｢繝ｼ繝ル */
  .footprint-form-modal {
    position: fixed;
    inset: 0;
    z-index: 70;
    background: rgba(5, 10, 8, 0.72);
    backdrop-filter: blur(10px);
    -webkit-backdrop-filter: blur(10px);
    display: flex;
    align-items: center;
    justify-content: center;
    opacity: 0;
    pointer-events: none;
    transition: opacity 0.5s var(--ease);
  }
  .footprint-form-modal.visible {
    opacity: 1;
    pointer-events: auto;
  }
  .footprint-form-box {
    width: min(480px, 92vw);
    background: linear-gradient(180deg, rgba(26, 48, 40, 0.88), rgba(13, 18, 16, 0.94));
    backdrop-filter: blur(34px) saturate(1.4);
    -webkit-backdrop-filter: blur(34px) saturate(1.4);
    border: 1px solid rgba(212, 164, 76, 0.3);
    border-radius: 4px;
    box-shadow: 0 30px 100px rgba(0,0,0,0.8);
    position: relative;
    transform: translateY(30px) scale(0.95);
    transition: transform 0.6s var(--ease-out);
  }
  .footprint-form-modal.visible .footprint-form-box {
    transform: translateY(0) scale(1);
  }
  .footprint-form-box::before {
    content: '';
    position: absolute;
    top: 0; left: 20%; right: 20%;
    height: 1px;
    background: linear-gradient(90deg, transparent, var(--gold-warm), transparent);
  }
  .footprint-form-close {
    position: absolute;
    top: 20px; right: 20px;
    width: 34px; height: 34px;
    border-radius: 50%;
    background: rgba(20, 18, 16, 0.5);
    border: 1px solid rgba(212, 164, 76, 0.2);
    display: flex; align-items: center; justify-content: center;
    color: var(--text-soft);
    transition: all 0.3s;
    cursor: none;
  }
  .footprint-form-close:hover {
    color: var(--gold-warm);
    border-color: rgba(232, 196, 120, 0.6);
  }
  .footprint-form-close svg { width: 12px; height: 12px; fill: none; stroke: currentColor; stroke-width: 1.5; }

  .footprint-form-header {
    padding: 34px 36px 20px;
    border-bottom: 1px solid rgba(212, 164, 76, 0.12);
    text-align: center;
  }
  .footprint-form-header .title {
    font-family: var(--font-jp);
    font-weight: 500;
    font-size: 20px;
    letter-spacing: 0.35em;
    color: #fff;
    margin-bottom: 6px;
    text-indent: 0.35em;
  }
  .footprint-form-header .subtitle {
    font-family: var(--font-en);
    font-size: 10px;
    letter-spacing: 0.4em;
    color: var(--gold-warm);
    text-transform: uppercase;
    margin-bottom: 14px;
  }
  .footprint-form-header .scene-indicator {
    font-family: var(--font-jp);
    font-size: 12px;
    letter-spacing: 0.25em;
    color: rgba(212, 164, 76, 0.85);
  }

  .footprint-form-body {
    padding: 24px 36px 32px;
  }
  .footprint-field {
    margin-bottom: 18px;
    position: relative;
  }
  .footprint-field textarea,
  .footprint-field input[type="text"] {
    width: 100%;
    padding: 12px 14px;
    background: rgba(13, 18, 16, 0.5);
    border: 1px solid rgba(212, 164, 76, 0.22);
    border-radius: 3px;
    font-family: var(--font-jp);
    font-weight: 400;
    font-size: 14px;
    letter-spacing: 0.08em;
    color: #fff;
    outline: none;
    transition: all 0.3s;
    resize: none;
    line-height: 1.7;
    cursor: none;
  }
  .footprint-field textarea:focus,
  .footprint-field input[type="text"]:focus {
    border-color: var(--gold-warm);
    background: rgba(26, 48, 40, 0.5);
    box-shadow: 0 0 20px rgba(212, 164, 76, 0.15);
  }
  .footprint-field textarea::placeholder,
  .footprint-field input[type="text"]::placeholder {
    color: rgba(245, 240, 230, 0.3);
  }
  .footprint-char-count {
    position: absolute;
    right: 10px;
    bottom: 8px;
    font-family: var(--font-en);
    font-size: 10px;
    letter-spacing: 0.1em;
    color: rgba(212, 164, 76, 0.55);
    pointer-events: none;
  }
  .footprint-char-count.warning { color: rgba(255, 160, 120, 0.9); }
  .footprint-char-count.over { color: rgba(255, 100, 100, 1); }

  .footprint-form-note {
    padding: 10px 14px;
    background: rgba(20, 18, 16, 0.4);
    border-left: 2px solid var(--green-jade);
    font-family: var(--font-jp);
    font-size: 10px;
    line-height: 1.8;
    letter-spacing: 0.08em;
    color: rgba(245, 240, 230, 0.55);
    border-radius: 2px;
    margin-bottom: 16px;
  }
  .footprint-form-error {
    padding: 10px 14px;
    background: rgba(120, 40, 40, 0.25);
    border: 1px solid rgba(255, 120, 120, 0.35);
    border-radius: 2px;
    font-family: var(--font-jp);
    font-size: 11px;
    color: rgba(255, 180, 180, 1);
    margin-bottom: 14px;
  }
  .footprint-form-actions {
    display: flex;
    gap: 10px;
    justify-content: flex-end;
  }

  /* 謚慕ｨｿ謌仙粥繝医・繧ｹ繝・*/
  .footprint-toast {
    position: fixed;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%) scale(0.8);
    z-index: 90;
    padding: 20px 32px;
    background: linear-gradient(135deg, rgba(42, 74, 58, 0.95), rgba(26, 22, 18, 0.95));
    backdrop-filter: blur(30px) saturate(1.4);
    -webkit-backdrop-filter: blur(30px) saturate(1.4);
    border: 1px solid var(--gold-warm);
    border-radius: 3px;
    display: flex;
    align-items: center;
    gap: 14px;
    opacity: 0;
    pointer-events: none;
    transition: opacity 0.5s var(--ease), transform 0.6s var(--ease-out);
    box-shadow: 0 20px 60px rgba(0,0,0,0.7), 0 0 60px rgba(245, 216, 150, 0.35);
  }
  .footprint-toast.visible {
    opacity: 1;
    transform: translate(-50%, -50%) scale(1);
  }
  .footprint-toast .check-icon {
    width: 20px; height: 20px;
    fill: none; stroke: var(--gold-warm);
    stroke-width: 2;
  }
  .footprint-toast span {
    font-family: var(--font-jp);
    font-size: 14px;
    letter-spacing: 0.25em;
    color: #fff;
  }

  @media (max-width: 768px) {
    .footprint-form-header { padding: 26px 24px 16px; }
    .footprint-form-header .title { font-size: 17px; letter-spacing: 0.25em; }
    .footprint-form-body { padding: 20px 24px 26px; }
    .footprint-toast { padding: 16px 24px; }
    .footprint-toast span { font-size: 12px; letter-spacing: 0.2em; }
    .footprint-tooltip { max-width: 260px; }
  }
  .license-success {
    text-align: center;
    padding: 40px 20px;
    display: none;
  }
  .license-success.visible { display: block; }
  .license-success .check {
    width: 60px; height: 60px;
    margin: 0 auto 20px;
    border: 1px solid var(--gold-warm);
    border-radius: 50%;
    display: flex; align-items: center; justify-content: center;
    color: var(--gold-warm);
    animation: successPulse 2s ease-in-out infinite;
  }
  @keyframes successPulse {
    0%, 100% { box-shadow: 0 0 20px rgba(245, 216, 150, 0.3); }
    50% { box-shadow: 0 0 40px rgba(245, 216, 150, 0.6); }
  }
  .license-success .check svg { width: 24px; height: 24px; fill: none; stroke: currentColor; stroke-width: 2; }
  .license-success .msg-jp {
    font-family: var(--font-jp);
    font-size: 18px;
    letter-spacing: 0.25em;
    color: #fff;
    margin-bottom: 10px;
    text-indent: 0.25em;
  }
  .license-success .msg-en {
    font-family: var(--font-en);
    font-size: 11px;
    letter-spacing: 0.3em;
    color: var(--gold-warm);
    margin-bottom: 24px;
    text-transform: uppercase;
  }
  .license-success .detail {
    font-family: var(--font-jp);
    font-size: 12px;
    letter-spacing: 0.15em;
    color: rgba(245, 240, 230, 0.6);
    line-height: 1.9;
    margin-bottom: 24px;
  }

  @media (max-width: 768px) {
    .brand-block { top: 18px; left: 18px; }
    .brand-home-link { row-gap: 7px; }
    .brand { font-size: 11px; letter-spacing: 0.24em; line-height: 1.15; }
    .brand-sub { font-size: 8px; letter-spacing: 0.24em; line-height: 1.3; }
    .exit-block { top: 14px; right: 14px; gap: 6px; }
    .glass-btn { height: 34px; padding: 0 12px; font-size: 10px; letter-spacing: 0.15em; }
    .glass-btn.icon-only { width: 34px; }
    .scene-index { left: 14px; top: 80px; width: 200px; max-height: calc(100dvh - 260px); }
    .scene-index-label { font-size: 8px; margin-bottom: 10px; }
    .scene-grid { gap: 2px; }
    .scene-item { padding: 6px 0; gap: 10px; }
    .scene-item .scene-jp { font-size: 12px; letter-spacing: 0.2em; gap: 6px; }
    .scene-item .scene-jp-sub { font-size: 8px; letter-spacing: 0.15em; }
    .scene-item .scene-en { font-size: 8px; letter-spacing: 0.25em; }
    .scene-item .idx { font-size: 9px; min-width: 14px; padding-top: 2px; }
    .nav-arrows { right: 14px; gap: 10px; }
    .nav-arrow { width: 38px; height: 38px; }
    .scene-title .title-jp { font-size: 32px; letter-spacing: 0.3em; }
    .scene-title .title-en { font-size: 10px; }
    .player { width: calc(100% - 24px); bottom: 16px; left: 50%; right: auto; transform: translateX(-50%); }
    .player-card { padding: 14px 18px 12px; }
    .track-info { flex-direction: column; align-items: flex-start; gap: 4px; margin-bottom: 10px; }
    .track-license { text-align: left; }
    .track-name { font-size: 15px; }
    .track-composer-note.visible { max-height: 180px; padding: 9px 12px 10px; }
    .track-composer-note__text { font-size: 10px; line-height: 1.75; }
    .play-btn { width: 48px; height: 48px; }
    .play-btn svg { width: 17px; height: 17px; }
    .ctrl-btn { width: 32px; height: 32px; }
    .ctrl-btn svg { width: 14px; height: 14px; }
    .immersive-title .im-name { font-size: clamp(26px, 6vw, 36px); letter-spacing: 0.3em; padding: 14px 0; }
    .immersive-title .im-composer { font-size: 10px; letter-spacing: 0.4em; }
    .immersive-title .im-name::before,
    .immersive-title .im-name::after { width: min(140px, 50vw); }
    .prologue-line { font-size: 14px; letter-spacing: 0.3em; }
    #mainCanvas { display: none; }

    /* アクションタワー (モバイル: 讓ｪ荳ｦ縺ｳ縺ｮ蠎暮Κ繝舌・, 繝励Ξ繧､繝､繝ｼ縺ｮ荳翫↓配置) */
    .action-tower {
      bottom: 220px;  /* 繝励Ξ繧､繝ヤー荳顔ｫｯ繧医ｊ蜊∝・荳・(驥阪↑り防止) */
      right: 0; left: 0;
      flex-direction: row;
      gap: 8px;
      justify-content: center;
      align-items: center;
      padding: 0 12px;
      max-height: none;
      overflow: visible;
    }
    .action-btn .action-label { display: none; }
    .action-btn .action-circle { width: 44px; height: 44px; }  /* 謗ｨ螂ｨ繧ｿ繝・・繧ｿ繝ｼ繧ｲ繝・ヨ 44px */
    .action-btn .action-circle svg { width: 19px; height: 19px; }
    .fav-badge { min-width: 18px; height: 18px; font-size: 9px; top: -3px; right: -3px; }

    /* 繧ｷ繝ｼ繝ｳ荳覧の初回グロー padding はモバイルで控えめに */
    body.first-visit.no-scene-selected .scene-index { padding: 8px; margin-left: -8px; }
    body.first-visit .scene-index::before { font-size: 9px; }

    /* ナビ矢印 (前後情景) 繧・action-tower 縺ｨ陦晉ｪ√＠縺ｪ縺・ｽ咲ｽｮ縺ｸ */
    .nav-arrows { bottom: 240px; top: auto; transform: none; flex-direction: row; }

    /* 繝倥Ν繝励ヨ繝ｪ繧ｬ繝ｼ縺ｯ蟾ｦ荳九ｈ繧翫ヱ繝阪Ν終端 (player 繧医ｊ荳・ 逶ｸ蠖薙↓ */
    .help-trigger { bottom: 16px; left: 16px; width: 30px; height: 30px; opacity: 0.6; }
    .help-trigger svg { width: 14px; height: 14px; }

    /* 繝励Ξ繧､繝､繝ｼ繧ｳ繝ｳ繝医Οールボタン大きめ (繧ｿ繝・・縺励ｄ縺吶￥) */
    .ctrl-btn { width: 38px; height: 38px; }
    .volume-wrap .ctrl-btn { width: 34px; height: 34px; }

    /* 繝励Ξイヤーの seekbar 謚ｼ荳句沺繧貞ｺ・￥ */
    .seekbar { height: 12px; padding: 4px 0; }

    /* 蠎冗ｫ縺ｮ譯亥・ "click anywhere to skip" 繧偵ち繝・メ譁・ｨに */
    .prologue div[style*="click anywhere"]::before {
      content: "tap anywhere to skip";
      display: block;
    }
    .prologue div[style*="click anywhere"] { font-size: 0; }
    .prologue div[style*="click anywhere"]::before { font-size: 9px; letter-spacing: 0.45em; color: rgba(245, 240, 230, 0.25); text-transform: uppercase; }

    /* 諠・勹繧ｿ繧､繝医Ν陦ｨ遉ｺ縺ｯ逕ｻ髱｢縺ｮ荳企Κに (繝励Ξ繧､繝､繝ｼ縺ｨ縺九・繧峨↑縺・ */
    .scene-title { top: 18vh; }
  }

  /* ============ 蟆丞梛逕ｻ髱｢縺ｮ譖ｴ縺ｪ繧矩←豁｣蛹・(480px莉･荳・ ============ */
  @media (max-width: 480px) {
    .scene-index { width: 44vw; top: 70px; }
    .action-tower { bottom: 170px; gap: 6px; padding: 0 8px; }
    .action-btn .action-circle { width: 40px; height: 40px; }
    .action-btn .action-circle svg { width: 17px; height: 17px; }
    .nav-arrows { bottom: 224px; }
    .help-trigger { bottom: 12px; }
  }

  /* ============ 繧ｿ繝・メ繝・ヰ繧､繧ｹ蜷代￠隱ｿ謨ｴ (hover/pointer無効) ============ */
  @media (hover: none) and (pointer: coarse) {
    /* 繧ｫ繧ｹ繧ｿ繝繧ｫ繝ｼ繧ｽ繝ｫ繧貞ｮ悟・縺ｫ辟｡蜉ｹ蛹・竊・繝阪う繝・ぅ繝悶き繝ｼ繧ｽ繝ｫ縺ｫ謌ｻ縺・*/
    html, body, button, a, * { cursor: auto !important; }
    #cur, #curDot { display: none !important; }
    /* 繝帙ヰ繝ｼ蟆ら畑縺ｮ繝ｩ繝吶Ν蛻・崛縺ｯ蟶ｸ譎ゅ碁壼ｸｸ繝ｩ繝吶Ν」を表示 */
    .immersive-exit .label-normal { opacity: 1 !important; }
    .immersive-exit .label-hover { display: none !important; }
    .glass-btn .label-hover { display: none !important; }
    .glass-btn .label-normal { opacity: 1 !important; }
    /* 繝代ヵ繧ｩ繝ｼ繝槭Φス: 豬ｮ驕翫き繝ｼ繝峨ｒ遒ｺ螳溘↓辟｡蜉ｹ蛹・(CSS髱櫁｡ｨ遉ｺ縺ｮ縺ｿ縺縺ｨ謠冗判縺ｯ襍ｰ繧・ */
    #mainCanvas { display: none !important; }
  }

    .tag-selected-flash .tag-jp { font-size: 28px; letter-spacing: 0.3em; }

    /* 縺頑ｰ励↓蜈･繧翫ヱ繝阪Ν (モバイルでも上限 400px 縺ｧ蝗ｺ螳壹・00vw 縺ｫ縺励↑縺・ */
    .fav-panel { width: min(400px, 92vw); max-width: 92vw; }
    .fav-header { padding: 22px 18px 14px; }
    .fav-header .fav-title { font-size: 16px; letter-spacing: 0.25em; }
    .fav-toolbar { padding: 10px 14px; }
    .fav-tool { padding: 6px 9px; font-size: 10px; letter-spacing: 0.15em; }
    .fav-list { padding: 10px 12px 14px; }
    .fav-card { padding: 10px; gap: 8px; }
    .fav-card .thumb { width: 56px; height: 38px; }
    .fav-card .name { font-size: 12px; }
    .fav-card .meta { font-size: 8px; }
    .fav-footer { padding: 12px 14px 16px; }
    .fav-footer-actions { flex-direction: column; }
    .fav-footer-actions .fav-action-btn { width: 100%; }

    /* 繝ｩ繧､繧ｻ繝ｳ繧ｹ繝｢繝ｼ繝ル */
    .license-header { padding: 24px 20px 14px; }
    .license-header .title { font-size: 17px; letter-spacing: 0.22em; }
    .license-body { padding: 18px 20px 22px; }
  }

  /* First-visit theater composition: keep this late so mobile rules cannot pull the scene list back left. */
  body.no-scene-selected .scene-index {
    position: fixed !important;
    left: 50% !important;
    top: 58% !important;
    width: min(760px, calc(100vw - 48px)) !important;
    max-height: min(48vh, 440px) !important;
    transform: translate(-50%, -50%) !important;
    margin: 0 !important;
    padding: 0 !important;
    overflow-y: auto !important;
    animation: none !important;
  }
  body.no-scene-selected .scene-grid {
    display: grid !important;
    grid-template-columns: repeat(4, minmax(0, 1fr)) !important;
    gap: 12px !important;
  }
  body.no-scene-selected .scene-item {
    padding: 18px 16px 16px !important;
    cursor: pointer !important;
  }
  body.no-scene-selected,
  body.no-scene-selected * {
    cursor: auto !important;
  }
  body.no-scene-selected button,
  body.no-scene-selected a,
  body.no-scene-selected .scene-item,
  body.no-scene-selected .journey-choice-card,
  body.no-scene-selected .video-feature-teaser {
    cursor: pointer !important;
  }
  body.no-scene-selected .cur,
  body.no-scene-selected .cur-dot {
    display: none !important;
  }
  body.no-scene-selected .action-tower,
  body.no-scene-selected .player,
  body.no-scene-selected #footprintCanvas,
  body.no-scene-selected #immersiveBtn {
    opacity: 0 !important;
    pointer-events: none !important;
  }
  body.no-scene-selected .scene-selection-hint {
    top: 32% !important;
    z-index: 16 !important;
  }
  body.no-scene-selected.journey-choice-mode .journey-choice {
    opacity: 1 !important;
    pointer-events: auto !important;
  }
  body.no-scene-selected.journey-choice-mode .scene-index {
    opacity: 0 !important;
    pointer-events: none !important;
  }
  body.no-scene-selected:not(.journey-choice-mode) .journey-choice,
  body.no-scene-selected:not(.journey-choice-mode) .journey-choice-card {
    display: none !important;
    visibility: hidden !important;
    opacity: 0 !important;
    pointer-events: none !important;
    transform: none !important;
    transition: none !important;
    z-index: -1 !important;
  }
  @media (max-width: 768px) {
    body.no-scene-selected .scene-selection-hint {
      top: 28% !important;
    }
    body.no-scene-selected .scene-selection-hint .hint-jp {
      font-size: clamp(22px, 6vw, 30px) !important;
      letter-spacing: 0.08em !important;
      text-indent: 0.08em !important;
    }
    body.no-scene-selected .journey-choice {
      top: 60% !important;
      width: min(560px, calc(100vw - 32px)) !important;
      grid-template-columns: 1fr !important;
      gap: 12px !important;
    }
    body.no-scene-selected .journey-choice-card {
      min-height: 128px !important;
      padding: 20px 18px 18px !important;
    }
    body.no-scene-selected .journey-choice-card .jc-title {
      font-size: 22px !important;
    }
    body.no-scene-selected .journey-choice-card .jc-desc {
      font-size: 11px !important;
      line-height: 1.75 !important;
    }
    body.no-scene-selected:not(.journey-choice-mode) .scene-index {
      top: 61% !important;
      width: min(560px, calc(100vw - 32px)) !important;
      max-height: 54vh !important;
    }
    body.no-scene-selected:not(.journey-choice-mode) .scene-grid {
      grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
      gap: 10px !important;
    }
    body.no-scene-selected:not(.journey-choice-mode) .scene-item {
      min-height: 92px !important;
      padding: 13px 12px 12px !important;
    }
    body.no-scene-selected .scene-item .scene-jp {
      font-size: 18px !important;
      letter-spacing: 0.12em !important;
    }
    body:not(.no-scene-selected) .action-tower {
      bottom: 246px !important;
    }
  }
  /* Split entrance: two full-stage doors, inspired by a theater foyer rather than cards. */
  body.no-scene-selected.journey-choice-mode .scene-selection-hint {
    opacity: 0 !important;
  }
  body:not(.no-scene-selected) .cur,
  body:not(.no-scene-selected) .cur-dot {
    display: none !important;
  }
  body:not(.no-scene-selected),
  body:not(.no-scene-selected) * {
    cursor: auto !important;
  }
  body:not(.no-scene-selected) button,
  body:not(.no-scene-selected) a,
  body:not(.no-scene-selected) [role="button"],
  body:not(.no-scene-selected) .scene-item,
  body:not(.no-scene-selected) .action-btn,
  body:not(.no-scene-selected) .rings-overlay.visible #ringsCanvas {
    cursor: pointer !important;
  }
  .action-tower > #videoFeatureTrigger,
  .action-tower > #footprintTrigger,
  .action-tower > #footprintToggle,
  .action-tower > #travelToggle {
    display: none !important;
  }
  body.no-scene-selected.journey-choice-mode .journey-choice {
    position: fixed !important;
    inset: 0 !important;
    left: 0 !important;
    top: 0 !important;
    width: 100vw !important;
    height: 100vh !important;
    height: 100dvh !important;
    transform: none !important;
    display: block !important;
    opacity: 1 !important;
    pointer-events: auto !important;
    z-index: 80 !important;
    overflow: hidden !important;
  }
  body.no-scene-selected.journey-choice-mode .journey-choice::before {
    content: '';
    position: absolute;
    inset: -10% 48% -10% 48%;
    z-index: 3;
    background:
      linear-gradient(105deg,
        transparent 0%,
        rgba(245, 240, 230, 0.08) 46%,
        rgba(245, 216, 150, 0.22) 50%,
        rgba(245, 240, 230, 0.06) 54%,
        transparent 100%);
    transform: skewX(-13deg);
    pointer-events: none;
  }
  body.no-scene-selected.journey-choice-mode .journey-choice-card {
    position: absolute !important;
    top: 0 !important;
    bottom: 0 !important;
    width: 64vw !important;
    min-height: 0 !important;
    padding: 0 !important;
    border: 0 !important;
    border-radius: 0 !important;
    box-shadow: none !important;
    backdrop-filter: none !important;
    -webkit-backdrop-filter: none !important;
    display: flex !important;
    flex-direction: column !important;
    align-items: center !important;
    justify-content: center !important;
    overflow: hidden !important;
    pointer-events: auto !important;
    cursor: pointer !important;
    touch-action: manipulation !important;
    transition: filter 0.45s var(--ease), transform 0.45s var(--ease), opacity 0.45s var(--ease) !important;
  }
  body[data-theater-entered="1"].no-scene-selected.journey-choice-mode .journey-choice {
    z-index: 2001 !important;
  }
  body[data-theater-entered="1"].no-scene-selected.journey-choice-mode .journey-choice-card {
    z-index: 2002 !important;
  }
  body:not([data-theater-entered="1"]) .brand-block,
  body:not([data-theater-entered="1"]) .action-tower,
  body:not([data-theater-entered="1"]) .scene-selection-hint,
  body:not([data-theater-entered="1"]) .journey-choice,
  body:not([data-theater-entered="1"]) .video-feature-teaser,
  body:not([data-theater-entered="1"]) .scene-index,
  body:not([data-theater-entered="1"]) .player,
  body:not([data-theater-entered="1"]) .help-trigger,
  body:not([data-theater-entered="1"]) #mainCanvas,
  body:not([data-theater-entered="1"]) #footprintCanvas {
    opacity: 0 !important;
    visibility: hidden !important;
    pointer-events: none !important;
  }
  body:not([data-theater-entered="1"]) .journey-choice,
  body:not([data-theater-entered="1"]) .journey-choice-card,
  body.video-feature-open .journey-choice,
  body.video-feature-open .journey-choice-card {
    pointer-events: none !important;
  }
  body.video-feature-open .video-feature-modal,
  body.video-feature-open .video-feature-modal * {
    pointer-events: auto !important;
  }
  body.no-scene-selected.journey-choice-mode .journey-choice-card.scene-choice {
    left: 0 !important;
    clip-path: polygon(0 0, 100% 0, 68% 100%, 0% 100%);
    background:
      radial-gradient(circle at 30% 50%, rgba(245, 216, 150, 0.08), transparent 28%),
      linear-gradient(108deg, rgba(46, 48, 43, 0.46) 0%, rgba(15, 13, 13, 0.64) 63%, rgba(5, 6, 6, 0.82) 100%),
      url('japanese_mid.webp') center / cover no-repeat;
    background-blend-mode: screen, normal, normal;
  }
  body.no-scene-selected.journey-choice-mode .journey-choice-card.tag-choice {
    right: 0 !important;
    clip-path: polygon(32% 0, 100% 0, 100% 100%, 0 100%);
    background:
      radial-gradient(circle at 70% 50%, rgba(150, 190, 255, 0.08), transparent 29%),
      linear-gradient(108deg, rgba(5, 6, 8, 0.82) 0%, rgba(22, 22, 26, 0.62) 42%, rgba(50, 52, 56, 0.36) 100%),
      url('night_mid.webp') center / cover no-repeat;
    background-blend-mode: screen, normal, normal;
  }
  body.no-scene-selected.journey-choice-mode .journey-choice-card::before {
    content: '';
    position: absolute;
    inset: 0;
    z-index: 0;
    width: auto;
    height: auto;
    transform: none;
    background:
      linear-gradient(90deg, rgba(255,255,255,0.05), transparent 18%, transparent 82%, rgba(255,255,255,0.025)),
      radial-gradient(ellipse at center, transparent 0%, rgba(0,0,0,0.18) 72%, rgba(0,0,0,0.38) 100%);
    pointer-events: none;
  }
  body.no-scene-selected.journey-choice-mode .journey-choice-card > * {
    position: relative;
    z-index: 1;
  }
  body.no-scene-selected.journey-choice-mode .scene-choice > * {
    transform: translateX(-8vw);
  }
  body.no-scene-selected.journey-choice-mode .tag-choice > * {
    transform: translateX(8vw);
  }
  body.no-scene-selected.journey-choice-mode .journey-choice-card:hover,
  body.no-scene-selected.journey-choice-mode .journey-choice-card:focus-visible {
    filter: brightness(1.13) saturate(1.08);
    transform: scale(1.012);
    outline: none;
  }
  body.no-scene-selected.journey-choice-mode .journey-choice-card .jc-kicker {
    display: inline-flex;
    min-width: 180px;
    min-height: 42px;
    align-items: center;
    justify-content: center;
    margin: 0 0 26px;
    padding: 0 22px;
    border: 1px solid rgba(245, 240, 230, 0.82);
    background: rgba(245, 240, 230, 0.92);
    color: #111;
    font-family: var(--font-en);
    font-style: normal;
    font-size: 17px;
    letter-spacing: 0.16em;
    text-transform: uppercase;
    box-shadow: 0 18px 50px rgba(0,0,0,0.42);
  }
  body.no-scene-selected.journey-choice-mode .journey-choice-card .jc-title {
    margin: 0 0 28px;
    color: rgba(245, 240, 230, 0.92);
    font-size: clamp(28px, 3vw, 46px);
    letter-spacing: 0.1em;
    text-indent: 0.1em;
    text-shadow: 0 3px 22px rgba(0,0,0,0.8), 0 0 26px rgba(245,216,150,0.18);
  }
  body.no-scene-selected.journey-choice-mode .journey-choice-card .jc-title::after {
    content: '';
    display: block;
    width: 86px;
    height: 1px;
    margin: 30px auto 0;
    background: rgba(245, 240, 230, 0.68);
    box-shadow: 0 0 12px rgba(245, 216, 150, 0.18);
  }
  body.no-scene-selected.journey-choice-mode .journey-choice-card .jc-desc {
    max-width: 330px;
    color: rgba(245, 240, 230, 0.76);
    font-size: 15px;
    font-weight: 600;
    line-height: 2;
    letter-spacing: 0.12em;
    text-shadow: 0 2px 16px rgba(0,0,0,0.9);
  }
  @media (max-width: 768px) {
    body.no-scene-selected.journey-choice-mode .journey-choice {
      display: grid !important;
      grid-template-rows: repeat(2, 1fr) !important;
    }
    body.no-scene-selected.journey-choice-mode .journey-choice::before {
      inset: 48% -10% 48% -10%;
      transform: skewY(-7deg);
    }
    body.no-scene-selected.journey-choice-mode .journey-choice-card {
      position: relative !important;
      inset: auto !important;
      width: 100vw !important;
      clip-path: none !important;
    }
    body.no-scene-selected.journey-choice-mode .scene-choice > *,
    body.no-scene-selected.journey-choice-mode .tag-choice > * {
      transform: none;
    }
    body.no-scene-selected.journey-choice-mode .journey-choice-card .jc-title {
      font-size: 24px !important;
      margin-bottom: 18px;
    }
    body.no-scene-selected.journey-choice-mode .journey-choice-card .jc-desc {
      font-size: 12px !important;
      line-height: 1.8 !important;
      max-width: 280px;
    }
  }
  /* Safari / low-power fallback: reduce GPU-heavy glass and blur work. */
  html.safari-perf * {
    backdrop-filter: none !important;
    -webkit-backdrop-filter: none !important;
  }
  html.safari-perf,
  html.safari-perf body,
  html.safari-perf * {
    cursor: auto !important;
  }
  html.safari-perf button,
  html.safari-perf a,
  html.safari-perf .journey-choice-card {
    cursor: pointer !important;
  }
  html.safari-perf #cur,
  html.safari-perf #curDot {
    display: none !important;
  }
  html.safari-perf body.immersed .ui > *,
  html.safari-perf body.rings-open .scene-stage,
  html.safari-perf body.rings-open #mainCanvas,
  html.safari-perf body.rings-open #sceneEffectCanvas,
  html.safari-perf body.rings-open #footprintCanvas,
  html.safari-perf body.rings-open .ui > *:not(.rings-trigger):not(.brand),
  html.safari-perf body.rings-open .action-tower {
    filter: none !important;
  }
  html.safari-perf body.no-scene-selected.journey-choice-mode .journey-choice-card:hover,
  html.safari-perf body.no-scene-selected.journey-choice-mode .journey-choice-card:focus-visible {
    filter: none !important;
    transform: none !important;
  }
  html.safari-perf .scene-image,
  html.safari-perf .scene-hires,
  html.safari-perf .journey-choice-card,
  html.safari-perf .player,
  html.safari-perf .scene-item {
    transition-duration: 0.35s !important;
  }
