/* ==========================================================================
   v19 (오누이 접지) — 달 · 오누이 · 책이 해상도마다 어긋나던 문제를 구조로 고친다.
   규칙 스위치는 index.html 이 세우는 data-map-v19.

   ── 무엇이 문제였나 ────────────────────────────────────────────────────
   세 요소가 서로 다른 기준으로 배치돼 있었다.
     · 달   : 폭이 min(64vw, 820px) → 화면 '폭' 기준. 이미지 비가 3072:596 로 고정이라
              높이 = 폭 ÷ 5.1544. 즉 달 표면의 높이가 vw 에 비례해 움직인다.
     · 오누이: bottom 이 2.15% → 히어로 패널 '높이'(100dvh) 기준. 폭은 px 로 clamp 되어
              구간에 따라 아예 고정되기도 한다.
     · 책   : .lp-scene 안에 있어 '오누이 슬롯' 기준.
   기준이 셋이라 뷰포트 종횡비가 바뀌는 순간 서로 다른 속도로 움직였다. 실측(1920×1080 기준):
     오누이 슬롯 폭 ÷ 달 폭   = 1366×768 에서 0.392, 3840×2160 에서 0.533  (36% 차이)
     발이 달에 잠기는 깊이 ÷ 오누이 키 = 0.257 ~ 0.393                      (53% 차이)
   그동안은 이걸 구간별 미디어쿼리로 손튜닝해 왔는데(폭 구간 20여 개 + 높이 구간 11개),
   손이 닿지 않은 구간(901~1023 가로, 901~1180 세로 등)에는 --lp-book-* / --lp-prince-* 가
   아예 없어서 그 구간만 유독 크게 어긋났다.

   ── 어떻게 고치나 ──────────────────────────────────────────────────────
   오누이·책의 크기와 위치를 '달 토큰만으로' 유도한다. 달이 커지면 같은 비율로 커지고,
   달이 내려가면 같은 만큼 내려간다. 기준이 하나가 되므로 해상도와 무관하게 붙어 있다.
   상수는 1920×1080(클라이언트 기준 구도)의 실측값에서 역산했다.

     달 폭 910px · 달 bottom -5%(= -54px) · 오누이 슬롯 폭 480px · 슬롯 bottom 15.7px
       슬롯 폭    ÷ 달 폭 = 480 / 910                       = 0.5275
       (슬롯 bottom - 달 bottom) ÷ 달 폭 = (15.7 + 54) / 910 = 0.0766
       (슬롯 right  - 달 right ) ÷ 달 폭 = (182.4 + 38.4)/910 = 0.2426
     검산: -54 + 910 × 0.0766 = 15.69px (실측 15.7px)

   ── 적용 범위 ──────────────────────────────────────────────────────────
   폭 901px 이상(모니터 구도)에만 건다. 900px 이하 폰·세로 화면은 달 크기·위치 자체가
   다른 구도(min(120vw,460px) 등)로 따로 잡혀 있어 같은 비율을 쓰면 오히려 깨진다.

   되돌리려면 index.html 의 이 파일 link 를 지우면 된다 — 원래 토큰이 그대로 살아난다.
   ========================================================================== */

@media (min-width: 901px) {
  /* [data-map-variant] 를 함께 적어 v13·v14 의 같은 특정도(0,2,2) 규칙보다 확실히 이긴다.
     !important 는 쓰지 않는다 */
  html[data-map-v19][data-map-variant] body.theme-sian3-lp {
    /* 달 높이 — 이미지 비 3072:596. 아래 식과 주석에서 기준이 되는 값 */
    --lp-planet-h: calc(var(--lp-planet-w) / 5.1544);

    /* 오누이 슬롯: 크기·가로·세로 전부 달에서 유도한다 */
    --lp-scene-w: calc(var(--lp-planet-w) * 0.5275);
    --lp-scene-h: calc(var(--lp-scene-w) * 0.95);
    --lp-scene-right: calc(var(--lp-planet-right) + var(--lp-planet-w) * 0.2426);
    --lp-scene-bottom: calc(var(--lp-planet-bottom) + var(--lp-planet-w) * 0.0766);

    /* 슬롯 안에서의 오누이·책 자리는 기준 구도(1920×1080) 값으로 고정한다.
       슬롯 자체가 이제 달을 따라가므로, 구간별로 이 값들을 흔들면 다시 어긋난다.
       (기존 미디어쿼리들이 구간마다 다른 값을 넣고 있어서 여기서 되돌려 놓는다) */
    --lp-prince-w: 84%;
    --lp-prince-right: 9%;
    --lp-prince-bottom: -4%;
    --lp-book-w: 29.5%;
    --lp-book-left: -6%;
    --lp-book-bottom: 6.5%;
  }

  /* 일부 구간은 토큰이 아니라 규칙으로 직접 값을 박아 두었다
     (index.html 의 1800+/2200+/2800+ · 높이 조건 블록, ≤640px 블록).
     그 규칙들은 토큰을 거치지 않으므로 여기서 다시 토큰을 보게 만든다 */
  html[data-map-v19] body.theme-sian3-lp .lp-prince--video,
  html[data-map-v19] body.theme-sian3-lp .korea-onui-world .lp-prince--video {
    width: var(--lp-prince-w);
    right: var(--lp-prince-right);
    bottom: var(--lp-prince-bottom);
  }
  html[data-map-v19] body.theme-sian3-lp .lp-book,
  html[data-map-v19] body.theme-sian3-lp .korea-onui-world .lp-book {
    width: var(--lp-book-w);
    left: var(--lp-book-left);
    bottom: var(--lp-book-bottom);
  }
}

/* ==========================================================================
   v19 — 지도는 폭죽과 함께 한 번 번쩍이고 사라진다 (LP_V19_CONFIG.landMode: 'splash')

   그전에는 별자리가 다 이어진 뒤 지도가 천천히 떠올라 한참 머물렀다. 클라이언트가
   그 시간을 없애고 "폭죽 터질 때 스플래시처럼 보였다 사라지게" 해 달라고 해서,
   등장 구간을 통째로 지우고 수렴(is-scene-05)의 번쩍임 하나로 대신한다.

   시·도 경로(SVG)는 아예 건드리지 않는다 — 경로별 SVG 속성 트윈은 예전 실제 크롬 트레이스에서
   지도 그리기·소멸 구간이 16~22fps 로 떨어진 원인으로 지목된 항목이다. 대신 도시 불빛 <img> 의
   opacity 만 움직인다. 그 요소는 이미 will-change: opacity 가 걸려 있어
   (css/lp-korea-map-v12.css) 컴포지터에서 처리된다.
   (소멸 구간의 blur(0.4px) 는 범인이 아니다 — 실제 크롬에서 한 번, 짝지어 교대 측정으로 한 번,
    두 차례 무효과로 확인됐다. 다시 의심하지 말 것)

   되돌리려면 LP_V19_CONFIG.landMode 를 'rise' 나 'draw' 로 두고 이 블록을 지우면 된다.
   ========================================================================== */

/* 1) 예열 제거 — 홀드 구간에 지도가 미리 배어나오지 않는다.
      v12 의 cityLightsPreglow(0.42) 와 v15 의 cityLightsPreglowV15(0.38) 를 둘 다 덮는다.
      이 파일이 둘보다 뒤에 실리므로 같은 특정도에서도 이긴다 (!important 불필요) */
html[data-map-v19] .korea-story-map-wrap.is-constellation-hold .korea-citylights {
  animation: none;
  opacity: 0.001;
}

/* 2) 스플래시 — 0 에서 시작해 폭죽에 맞춰 최고로 올랐다가 그대로 꺼진다.
      v12 원본은 예열값 0.42 에서 시작했는데, 예열을 없앴으므로 0.001 부터 올린다.
      22% ≈ 0.32초: 골드별이 태어나는 순간(mergeAt)보다 아주 살짝 앞서 정점을 지나게 둔다 */
html[data-map-v19] .korea-story-map-wrap.is-scene-05 .korea-citylights {
  animation: v19CityLightsSplash 1.45s ease-in-out forwards;
}
@keyframes v19CityLightsSplash {
  0%   { opacity: 0.001; }
  22%  { opacity: 1; }
  55%  { opacity: 0.82; }
  100% { opacity: 0.001; }
}
