/* Base body styles for Domain page (manga / anime / movie / game / drama).
   All design tokens are sourced from tokens.css (canonical source-of-truth).
   Load order: tokens.css → base.css → page-specific css */

/* ⚠ webfont (Noto Sans JP / JetBrains Mono) の Google Fonts `@import` はここに在ったが、`_headers` の CSP
   (`style-src 'self' 'unsafe-inline'` / `font-src 'self'`) が導入 (#300) されて以来ブロックされ続け、
   1 度も効いていなかった (console の CSP violation + 無駄な request だけが残る)。owner 裁定 2026-09-20 =
   (a) 撤去して宣言を実態に合わせる。書体の stack は `tokens.css` の `--t-font-*` が正で、webfont を
   配るかは別裁定 (`tokens.css` の body 節の注記)。 */

* { margin: 0; padding: 0; }

/* ⚠ `font-family` はここに持たない — 本文書体の単一経路は `tokens.css` の `html, body`
   (C-2 根治・owner 裁定 2026-09-04)。この file を link するのは配信 35 面のうち domain map の
   9 面だけなので、ここに置くと残り 26 面へ届かない。 */
body {
  background: var(--t-bg);
  color: var(--t-fg);
  min-height: 100vh;
  min-height: 100dvh;
  transition: background var(--t-trans-slow), color var(--t-trans-slow);
}

/* Domain stage: viewport-sized container for plot + sidebar.
   Phase 2 Overhaul: body scrolls, footer revealed below stage. */
.domain-stage {
  height: 100vh;
  height: 100dvh;
  display: flex;
  flex-direction: column;
  flex-shrink: 0;
}

/* Domain footer wrap: spacing so footer text 沈 above the fixed view-selector */
.domain-footer-wrap {
  padding-bottom: calc(54px + env(safe-area-inset-bottom, 0));
}
