/* ==========================================================================
   Thirdkey - ワンスクリーン設計(ページャー)
   各ページを「スクリーン」(画面1枚分 = 100vh)単位に分割し、スクロールでは
   なくホイール/矢印キー/タッチスワイプ/ドットナビゲーションで画面を
   切り替える、スライド資料のような見せ方にするための土台。
   ========================================================================== */

html.screens-html, body.screens-body {
  height: 100%;
  overflow: hidden;
  overscroll-behavior: none;
}

.screens-viewport {
  position: fixed;
  inset: 0;
  overflow: hidden;
}

.screens {
  height: 100vh;
  height: 100dvh;
  width: 100%;
  transition: transform 0.85s var(--ease-precise);
  will-change: transform;
}

.screen {
  height: 100vh;
  height: 100dvh;
  width: 100%;
  display: flex;
  align-items: center;
  position: relative;
  overflow: hidden;
  padding-top: var(--header-h);
  box-sizing: border-box;
}

.screen-inner {
  width: 100%;
  max-height: calc(100vh - var(--header-h));
  max-height: calc(100dvh - var(--header-h));
  overflow-y: auto;
  scrollbar-width: thin;
  scrollbar-color: var(--color-accent-dim) rgba(255, 255, 255, 0.04);
  /* .screen-inner はデフォルトで position:static のため、position:absolute の
     .hero-tiles(動画背景+巨大透かし文字)より重ね順で下に描画されてしまい、
     動画がフェードインするにつれて見出し等が隠れて「消える」ように見えて
     いた。position を持たせて .hero-tiles より確実に手前へ出す。 */
  position: relative;
  z-index: 3;
}
.screen-inner::-webkit-scrollbar { width: 6px; }
.screen-inner::-webkit-scrollbar-track { background: rgba(255, 255, 255, 0.04); border-radius: 999px; }
.screen-inner::-webkit-scrollbar-thumb {
  background: var(--color-accent-dim);
  border-radius: 999px;
  transition: background 0.2s ease;
}
.screen-inner::-webkit-scrollbar-thumb:hover { background: var(--color-accent); }

/* 右側(コンテンツ)がまだ下にスクロールできることを示す、下端のフェード
   (実際にオーバーフローしている場合のみ .is-scrollable が付与される) */
.screen-inner.is-scrollable {
  -webkit-mask-image: linear-gradient(180deg, #000 0%, #000 88%, transparent 100%);
  mask-image: linear-gradient(180deg, #000 0%, #000 88%, transparent 100%);
}

/* 通常スクロール前提で作られていた大きな上下 padding は、.screen 自体が
   ヘッダー分のオフセットと縦中央寄せを担うため、ワンスクリーン時は打ち消す
   ========================================================================== */
.screen .philosophy,
.screen .contact-layout {
  padding-top: 0;
  padding-bottom: 0;
}

.screen.services-section,
.screen.vision-section,
.screen.strengths,
.screen.works-preview,
.screen.cta-banner {
  padding-top: var(--header-h);
  padding-bottom: 0;
}

.screen.page-hero { padding-top: calc(var(--header-h) + 6px); padding-bottom: 12px; }

/* パフォーマンス: 画面切り替え時、いま表示していない .screen は
   translateYで画面外に押し出されているだけで実際にはDOM上に存在し続ける
   ため、そこにある無限ループのCSSアニメーション(ヒーロー文字の演出・
   マーキー等)を止めないとスクロール中もGPU/CPUを使い続けて重くなる。
   .is-active が付いていない画面ではこれらを一時停止する
   (動画の再生/一時停止はjs/screens.jsが担当)。 */
.screen:not(.is-active) .hero-label-text,
.screen:not(.is-active) .hero-label-text::after,
.screen:not(.is-active) .ch,
.screen:not(.is-active) .marquee-track,
.screen:not(.is-active) .stat-live-dot,
.screen:not(.is-active) .dot-grid,
.screen:not(.is-active) .dot-grid::before,
.screen:not(.is-active) .dot-grid::after {
  animation-play-state: paused !important;
}

/* 安全策: .vision-quote-stage(見出し・ノイズ演出)は本来 .is-active な
   画面でのみ、それぞれのCSSアニメーションを通じて徐々に見えるはずだが、
   画面切り替えの過渡状態などで .is-active の付け外しとアニメーションの
   再生タイミングがずれた場合に備え、非アクティブな画面ではアニメーションの
   状態に関わらず必ず非表示になるよう、visibility を直接強制しておく
   (display:noneではなくvisibilityにするのは、レイアウト計算自体は
   維持しつつ見た目だけ確実に消すため)。 */
.screen:not(.is-active) .vision-quote-stage {
  visibility: hidden !important;
}

/* CTA+フッター画面: CTA見出しは残りスペースの中で画面中央に、
   フッターは高さを抑えて下部に固定表示する */
.screen.cta-banner {
  flex-direction: column;
  align-items: stretch;
}

.screen.cta-banner .cta-main {
  flex: 1;
  width: 100%;
  display: flex;
  align-items: center;
  justify-content: center;
  min-height: 0;
}

.screen.cta-banner .site-footer-strip {
  width: 100%;
  flex: 0 0 auto;
  border-top: 1px solid var(--color-border);
  padding: 16px 0;
}

.screen .marquee {
  position: static;
  margin-top: 20px;
}

/* Works一覧・チームなど密度の高い画面は、カード自体を少しコンパクトに */
.screen .works-grid { gap: 20px; }
.screen .team-card .team-bio { font-size: 13.5px; line-height: 1.75; }

/* ドットナビゲーション
   ========================================================================== */
.screen-nav {
  position: fixed;
  right: 26px;
  top: 50%;
  transform: translateY(-50%);
  z-index: 600;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 13px;
}

.screen-dot {
  width: 7px;
  height: 7px;
  border-radius: 50%;
  border: 1px solid var(--color-border);
  background: transparent;
  padding: 0;
  cursor: pointer;
  transition: background 0.3s ease, border-color 0.3s ease, transform 0.3s ease;
}

.screen-dot:hover { border-color: var(--color-accent); }

.screen-dot.active {
  background: var(--color-accent);
  border-color: var(--color-accent);
  transform: scale(1.4);
}

/* 現在位置(01 / 07)の表示 */
.screen-count {
  position: fixed;
  left: 26px;
  bottom: 22px;
  z-index: 600;
  font-family: var(--font-mono);
  font-size: 11px;
  color: var(--color-text-dim);
  letter-spacing: 0.08em;
  display: flex;
  align-items: center;
  gap: 8px;
}

.screen-count strong { color: var(--color-text); }

/* 下スクロール誘導の矢印(最終スクリーン以外に表示) */
.screen-next-hint {
  position: fixed;
  left: 50%;
  bottom: 22px;
  transform: translateX(-50%);
  z-index: 600;
  width: 34px;
  height: 34px;
  border-radius: 50%;
  border: 1px solid var(--color-border);
  background: rgba(255, 255, 255, 0.03);
  color: var(--color-text-dim);
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  transition: border-color 0.25s ease, color 0.25s ease, transform 0.25s ease;
  animation: screenHintBounce 2.2s ease-in-out infinite;
}

.screen-next-hint:hover { border-color: var(--color-accent); color: var(--color-accent); }
.screen-next-hint.is-hidden { opacity: 0; pointer-events: none; }

@keyframes screenHintBounce {
  0%, 100% { transform: translateX(-50%) translateY(0); }
  50% { transform: translateX(-50%) translateY(6px); }
}

@media (max-width: 780px) {
  .screen-nav { right: 14px; gap: 10px; }
  .screen-count { left: 14px; bottom: 14px; }
  .screen-next-hint { bottom: 14px; }
}

@media (prefers-reduced-motion: reduce) {
  .screens { transition: none; }
  .screen-next-hint { animation: none; }
}

