/*!******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/.pnpm/next@15.5.6_@babel+core@7.28.5_react-dom@19.2.0_react@19.2.0__react@19.2.0/node_modules/next/dist/build/webpack/loaders/css-loader/src/index.js??ruleSet[1].rules[14].oneOf[5].use[2]!./node_modules/.pnpm/next@15.5.6_@babel+core@7.28.5_react-dom@19.2.0_react@19.2.0__react@19.2.0/node_modules/next/dist/build/webpack/loaders/postcss-loader/src/index.js??ruleSet[1].rules[14].oneOf[5].use[3]!./src/app/components/GameFeed.module.css ***!
  \******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
.GameFeed_root__Gwd8S {
  display: grid;
  grid-template-columns: minmax(0, 1fr); /* 左レールを廃止し1カラム化 */
  gap: 32px;
  min-height: 100vh;
  padding: 96px clamp(16px, 5vw, 48px) 128px;
  background: radial-gradient(circle at top left, rgba(91, 124, 255, 0.12), transparent 45%),
    radial-gradient(circle at bottom right, rgba(36, 200, 165, 0.1), transparent 50%),
    #05060f;
  color: #f8fafc;
}

.GameFeed_cyberTheme__tIE4K {
  background: radial-gradient(circle at top right, rgba(91, 124, 255, 0.2), transparent 55%),
    radial-gradient(circle at bottom left, rgba(255, 96, 96, 0.1), transparent 50%),
    #040414;
}

.GameFeed_leftRail__B4dVl {
  position: sticky;
  top: 72px;
  align-self: start;
  max-height: calc(100vh - 144px);
  overflow: hidden;
  border-radius: 24px;
  background: rgba(15, 23, 42, 0.55);
  border: 1px solid rgba(148, 163, 184, 0.18);
  backdrop-filter: blur(18px);
  padding: 16px 12px;
}

.GameFeed_feedContainer__LAhHd {
  position: relative;
  height: calc(100vh - 160px);
  overflow-y: auto;
  /* mandatory は激しいスナップでチラつきやすいので proximity へ */
  scroll-snap-type: y proximity;
  /* 先頭/末尾カードをスナップ可能にするための余白調整 */
  scroll-padding-top: 1px;
  scroll-padding-bottom: 1px;
  display: flex;
  flex-direction: column;
  gap: 56px;
  padding-right: 12px;
  width: 100%;
  max-width: 960px; /* フロー部分内のゲームレーンの最大幅 */
  margin-inline: auto; /* 中央寄せ */
  align-items: stretch;
  /* ビューポート基準の高さ計算用（ヘッダ類・余白の概算） */
  --feed-chrome-v: 160px; /* root 余白など */
  --caption-v: 64px;      /* タイトルバッジの概算高さ（小型化） */
}

.GameFeed_feedContainer__LAhHd::-webkit-scrollbar {
  width: 8px;
}

.GameFeed_feedContainer__LAhHd::-webkit-scrollbar-thumb {
  background: rgba(148, 163, 184, 0.25);
  border-radius: 999px;
}

.GameFeed_feedItem__lUdcC {
  /* 上端スナップに変更し、先頭カードへ遷移できない問題を解消 */
  scroll-snap-align: start;
  display: grid;
  gap: 20px;
  /* 1カード=1画面になるよう、最低高さを確保 */
  min-height: calc(100svh - var(--feed-chrome-v));
}

.GameFeed_feedItemActive__L6ctI {
  /* transform を外してレイアウト再計算由来のチラつきを抑制 */
}

.GameFeed_stage__hZzIB {
  position: relative;
  aspect-ratio: 9 / 16;
  border-radius: 32px;
  overflow: hidden;
  background: rgba(15, 23, 42, 0.7);
  border: 1px solid rgba(148, 163, 184, 0.2);
  box-shadow: 0 32px 80px rgba(15, 23, 42, 0.75);
  /* ビューポートの高さを優先して、1画面内に収まる横幅へ制限 */
  width: min(
    100%,
    calc((100svh - var(--feed-chrome-v) - var(--caption-v)) * 9 / 16)
  );
  margin-inline: auto;
  /* 再描画の最適化 */
  will-change: transform, filter;
  backface-visibility: hidden;
  transform: translateZ(0);
  contain: paint;
}

.GameFeed_stageGlow__i5RVi {
  position: absolute;
  inset: 8% 18% 35%;
  background: radial-gradient(circle, rgba(91, 124, 255, 0.35), transparent 70%);
  filter: blur(32px);
  z-index: 1;
}

.GameFeed_stageBackdrop__DHBWu {
  position: absolute;
  inset: 0;
  background: linear-gradient(160deg, rgba(15, 23, 42, 0.9), rgba(30, 64, 175, 0.55));
  z-index: 0;
}

.GameFeed_boardGhost__Z5H1E {
  /* ブレンドは再描画が重くチラつき要因になるため無効化 */
  opacity: 0.28;
}

.GameFeed_gameFrame__tAekE {
  position: relative;
  z-index: 2;
  width: 100%;
  height: 100%;
  border: 0;
  border-radius: inherit;
  will-change: transform, opacity;
  backface-visibility: hidden;
}

/* iframe内のページが absolute fill で埋められる前提だが、
   スクロールバーや余白が出ないように iframe でも背景色を黒にしておく */
.GameFeed_gameFrame__tAekE {
  background: #000;
}

.GameFeed_titleBadge__6kF_J {
  position: relative;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 18px 42px;
  border-radius: 999px;
  border: 1px solid rgba(255, 255, 255, 0.35);
  background: var(--badge-surface, rgba(15, 23, 42, 0.6));
  box-shadow: var(--badge-shadow, 0 18px 45px rgba(15, 23, 42, 0.55));
  transform: scale(var(--badge-scale, 1)) translateZ(0);
  transition: transform 220ms ease, box-shadow 220ms ease, border-color 220ms ease;
  overflow: hidden;
  color: #f8fafc;
  backdrop-filter: blur(14px);
}

.GameFeed_titleBadge__6kF_J::before {
  content: "";
  position: absolute;
  inset: 0;
  background: radial-gradient(circle at top, var(--badge-highlight, rgba(255, 255, 255, 0.18)), transparent 80%);
  opacity: 0.8;
  pointer-events: none;
}

.GameFeed_titleBadge__6kF_J::after {
  content: "";
  position: absolute;
  inset: -25%;
  background: radial-gradient(circle, var(--badge-glow, rgba(37, 99, 235, 0.4)), transparent 60%);
  filter: blur(40px);
  opacity: calc(0.35 + 0.35 * var(--badge-active, 0));
  transform: scale(0.95 + 0.05 * var(--badge-active, 0));
  transition: opacity 260ms ease, transform 260ms ease;
}

.GameFeed_titleBadgeText__h9Lbc {
  position: relative;
  z-index: 2;
  font-weight: 700;
  letter-spacing: 0.04em;
  background: var(--badge-text-gradient, linear-gradient(90deg, #fff 0%, #93c5fd 50%, #60a5fa 100%));
  -webkit-background-clip: text;
  background-clip: text;
  color: transparent;
  text-shadow: var(--badge-text-shadow, 0 6px 18px rgba(37, 99, 235, 0.3));
}

.GameFeed_titleBadgeOrb__V3BR8 {
  position: absolute;
  width: var(--orb-size);
  height: var(--orb-size);
  border-radius: 999px;
  background: var(--orb-color);
  filter: blur(10px);
  opacity: 0.65;
  mix-blend-mode: screen;
  z-index: 1;
  transform: translate(var(--orb-x), var(--orb-y));
  animation: GameFeed_orb-float__CmbMH var(--orb-duration) ease-in-out infinite;
  animation-delay: var(--orb-delay);
  animation-play-state: var(--badge-motion-state, running);
}

.GameFeed_badgeOverlay__dbNC_ {
  position: absolute;
  top: 22px;
  left: 50%;
  transform: translateX(-50%);
  z-index: 5;
  pointer-events: none;
}

@keyframes GameFeed_orb-float__CmbMH {
  0% {
    transform: translate(var(--orb-x), var(--orb-y));
  }
  50% {
    transform: translate(calc(var(--orb-x) + var(--orb-shift-x)), calc(var(--orb-y) + var(--orb-shift-y)));
  }
  100% {
    transform: translate(calc(var(--orb-x) + var(--orb-shift-x-end)), calc(var(--orb-y) + var(--orb-shift-y-end)));
  }
}

@media (max-width: 1200px) {
  .GameFeed_root__Gwd8S {
    grid-template-columns: minmax(0, 1fr);
    padding: 96px clamp(12px, 4vw, 36px) 112px;
  }
}

@media (max-width: 768px) {
  .GameFeed_feedContainer__LAhHd {
    height: calc(100vh - 200px);
    gap: 40px;
    --feed-chrome-v: 200px;
    --caption-v: 56px;
  }

  .GameFeed_stage__hZzIB {
    border-radius: 24px;
  }

  .GameFeed_openButton__zKKjs {
    width: 100%;
    text-align: center;
  }
}

.GameFeed_cardbattleContainer__sjd_m {
  position: relative;
  width: min(100%, 960px);
  margin: 0 auto;
  aspect-ratio: 16 / 9;
  background: #0f172a;
  border-radius: 20px;
  overflow: hidden;
  border: 1px solid rgba(148, 163, 184, 0.3);
}

.GameFeed_cardbattleContainerFull__SZuIF {
  position: relative;
  width: 100%;
  height: 100%;
  background: #0f172a;
  overflow: hidden;
}

.GameFeed_cardbattleCanvasHolder__fY5ru {
  position: absolute;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
}

.GameFeed_cardbattleOverlayRoot__VVTxo {
  position: absolute;
  inset: 0;
  pointer-events: none;
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  padding: 16px 20px;
  color: #e2e8f0;
}

.GameFeed_cardbattleStatusBox__4xU5t {
  align-self: center;
  text-align: center;
  max-width: 520px;
  padding: 12px 16px;
  background: rgba(15, 23, 42, 0.6);
  border-radius: 16px;
  backdrop-filter: blur(6px);
  pointer-events: auto;
}

.GameFeed_cardbattleLogBox__hMoNo {
  margin-top: 8px;
  font-size: 14px;
  white-space: pre-line;
  opacity: 0.85;
}

.GameFeed_cardbattleErrorText__bK4To {
  margin-top: 8px;
  font-size: 14px;
}

.GameFeed_cardbattleCardsOverlay__0_Bz4 {
  display: flex;
  flex-direction: column;
  gap: 16px;
}

.GameFeed_cardbattleRow__bnUGb {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 12px;
}

.GameFeed_cardbattleCardBase__kRqhV {
  border-radius: 16px;
  padding: 12px;
  min-height: 96px;
  display: grid;
  align-content: space-between;
  background: rgba(8, 47, 73, 0.6);
  border: 1px solid rgba(148, 163, 184, 0.4);
}

.GameFeed_cardbattleEnemyCard__N8XKA {
  background: rgba(124, 45, 18, 0.55);
}

.GameFeed_cardbattleCardSelected__i_C0V {
  border: 2px solid rgba(250, 204, 21, 0.9);
}

.GameFeed_cardbattleCardHeader__uK8nj {
  font-weight: 700;
}

.GameFeed_cardbattleHpLine__mxWfT {
  display: flex;
  justify-content: space-between;
  font-size: 14px;
  font-weight: 600;
}

.GameFeed_cardbattleCardDetail__MYfw2 {
  font-size: 13px;
  opacity: 0.85;
}

.GameFeed_cardbattleRestart__JaZcs {
  pointer-events: auto;
  align-self: center;
  margin-top: 16px;
  padding: 10px 18px;
  border-radius: 999px;
  border: 1px solid rgba(226, 232, 240, 0.5);
  background: rgba(15, 23, 42, 0.7);
  color: #f8fafc;
  font-weight: 600;
}

