/* ScrambleDeck デッキ構築画面スタイル。
   カードの見た目(.card と .layer-*)は battle.css を流用し、ここでは画面レイアウトと
   デッキ画面固有の部品(バッジ・デッキ一覧・色ドット)だけを定義する。
   battle.css の body(flex中央寄せ)を打ち消すため .deck-page で上書きする。 */

body.deck-page {
  display: block;                 /* battle.css の flex中央寄せを解除し、通常の縦フローに戻す */
  min-height: 100vh;
  padding: 0;
  color: var(--text-light);
}

/* ── 上部バー ───────────────────────────────────────────────────────── */
.deck-topbar {
  position: sticky;               /* スクロールしても上に貼り付く */
  top: 0;
  z-index: 20;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: clamp(8px, 2vw, 16px) clamp(12px, 3vw, 28px);
  background: rgba(0, 0, 0, 0.6);
  backdrop-filter: blur(4px);
}
.deck-title {
  margin: 0;
  font-size: clamp(16px, 3vw, 24px);
}
.deck-back {
  color: var(--text-light);
  text-decoration: none;
  font-size: clamp(13px, 2.4vw, 18px);
  padding: 6px 10px;
  border-radius: 8px;
  background: rgba(255, 255, 255, 0.12);
}
.deck-back:hover { background: rgba(255, 255, 255, 0.25); }

.deck-save-btn {
  padding: clamp(8px, 1.6vh, 12px) clamp(16px, 3vw, 26px);
  border: none;
  border-radius: 10px;
  background: var(--mine-color);
  color: var(--text-light);
  font-size: clamp(14px, 2.4vw, 18px);
  font-weight: bold;
  cursor: pointer;
}
.deck-save-btn:hover:not(:disabled) { background: #2f8fe6; }
.deck-save-btn:disabled { opacity: 0.4; cursor: not-allowed; }

/* ── 全体レイアウト：カード一覧(左) ＋ デッキ(右) ───────────────────────
   広い画面は横並び、狭い画面(モバイル)は縦積みに切り替える。 */
.deck-layout {
  display: flex;
  align-items: flex-start;
  gap: clamp(12px, 2vw, 28px);
  padding: clamp(12px, 2.5vw, 28px);
}
.deck-pool { flex: 1 1 auto; min-width: 0; }
.deck-current {
  flex: 0 0 auto;
  width: clamp(200px, 26vw, 300px);
  position: sticky;               /* デッキ内容はスクロールに追従して見えたまま */
  top: clamp(56px, 10vh, 88px);
  background: rgba(0, 0, 0, 0.45);
  border-radius: 12px;
  padding: clamp(12px, 1.6vw, 18px);
}
@media (max-width: 720px) {
  .deck-layout { flex-direction: column; }
  .deck-current { width: 100%; position: static; order: -1; } /* モバイルはデッキを上に */
}

.deck-section-title {
  margin: 0 0 12px;
  font-size: clamp(14px, 2.4vw, 18px);
  opacity: 0.85;
}

/* ── カード一覧グリッド ─────────────────────────────────────────────── */
.deck-pool-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(clamp(96px, 12vw, 130px), 1fr));
  gap: clamp(8px, 1.4vw, 16px);
}
/* 一覧内のカードは掴む対象ではないのでクリック用カーソルにする（battle.css は grab）。 */
.deck-pool-grid .card { cursor: pointer; width: 100%; }

/* これ以上追加できないカードは暗くして押せないと分かるようにする（クリックは canAdd で弾く）。 */
.pool-card.maxed { filter: brightness(0.45); }
.pool-card.maxed:hover { transform: none; filter: brightness(0.45); }

/* 採用枚数バッジ：カード右上に丸で重ねる。 */
.card-count-badge {
  position: absolute;
  top: 4%;
  right: 6%;
  min-width: 1.8em;
  height: 1.8em;
  padding: 0 0.3em;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 999px;
  background: var(--mine-color);
  color: var(--text-light);
  font-size: 8cqw;                /* カード幅連動（battle.css の .card と同じ container 内） */
  font-weight: bold;
  box-shadow: 0 1px 4px rgba(0, 0, 0, 0.6);
  pointer-events: none;
}

/* ── デッキ一覧のホバー簡易プレビュー ───────────────────────────────── */
/* 位置は deck.js が left/top を直接書き込む。カーソルの下に入って mouseout を誘発しないよう
   pointer-events は無効にしておく。 */
.deck-hover-preview {
  position: fixed;
  z-index: 50;
  width: clamp(140px, 16vw, 200px);
  pointer-events: none;
  filter: drop-shadow(0 8px 24px rgba(0, 0, 0, 0.7));
}
.deck-hover-preview .card { width: 100%; }
/* battle.css の .hidden は要素ごとの個別定義しか無いため、この要素用にここで定義する。 */
.deck-hover-preview.hidden { display: none; }

/* ── デッキの切替・名前 ─────────────────────────────────────────────── */
/* セレクタが余白を全部取り、＋/🗑 は固定幅で右に並ぶ。 */
.deck-picker {
  display: flex;
  gap: 6px;
  margin-bottom: 8px;
}
.deck-select {
  flex: 1 1 auto;
  min-width: 0;                   /* flex内でセレクタが縮めるようにする（長いデッキ名で溢れさせない） */
  padding: 6px 8px;
  border-radius: 8px;
  border: 1px solid rgba(255, 255, 255, 0.25);
  background: rgba(0, 0, 0, 0.5);
  color: var(--text-light);
  font-size: clamp(12px, 2vw, 15px);
}
.deck-icon-btn {
  flex: 0 0 auto;
  width: 2.2em;
  border-radius: 8px;
  border: 1px solid rgba(255, 255, 255, 0.25);
  background: rgba(255, 255, 255, 0.08);
  color: var(--text-light);
  font-size: clamp(12px, 2vw, 15px);
  cursor: pointer;
}
.deck-icon-btn:hover { background: rgba(255, 255, 255, 0.18); }

.deck-name-input {
  width: 100%;
  box-sizing: border-box;
  margin-bottom: 10px;
  padding: 6px 8px;
  border-radius: 8px;
  border: 1px solid rgba(255, 255, 255, 0.25);
  background: rgba(0, 0, 0, 0.5);
  color: var(--text-light);
  font-size: clamp(12px, 2vw, 15px);
}

/* ── デッキ内容パネル ───────────────────────────────────────────────── */
.deck-counter {
  display: flex;
  align-items: baseline;
  gap: 4px;
  margin-bottom: 8px;
}
.deck-counter-value { font-size: clamp(20px, 3.6vw, 30px); font-weight: 900; }
/* 12枚に満たない＝保存はできるが対戦には使えない。数字を警告色にして知らせる。 */
.deck-counter-value.short { color: #ffcf6a; }
.deck-counter-max   { font-size: clamp(12px, 2vw, 15px); opacity: 0.7; }

.deck-colors {
  display: flex;
  align-items: center;
  gap: 6px;
  margin-bottom: 8px;
  min-height: 20px;
}
.deck-color-dot {
  width: 16px;
  height: 16px;
  border-radius: 50%;
  border: 1px solid rgba(255, 255, 255, 0.5);
}
.dot-green { background: var(--mana-green); }
.dot-white { background: var(--mana-white); }
.dot-red   { background: var(--mana-red); }
.dot-blue  { background: var(--mine-color); }
.dot-black { background: #444; }
.deck-color-count { font-size: 13px; opacity: 0.75; margin-left: 4px; }
.deck-color-count.over { color: #ff8a8a; opacity: 1; font-weight: bold; }


/* 採用カード一覧：1行1種類、枚数付き。クリックで1枚戻す。 */
.deck-list {
  display: flex;
  flex-direction: column;
  gap: 4px;
  max-height: 50vh;
  overflow-y: auto;
}
.deck-empty { opacity: 0.6; font-size: 13px; text-align: center; padding: 12px 0; }
.deck-row {
  display: flex;
  align-items: center;
  gap: 8px;
  width: 100%;
  padding: 6px 8px;
  border: none;
  border-radius: 8px;
  background: rgba(255, 255, 255, 0.08);
  color: var(--text-light);
  font-size: clamp(12px, 2vw, 15px);
  cursor: pointer;
  text-align: left;
}
.deck-row:hover { background: rgba(255, 80, 80, 0.25); } /* 戻す操作＝赤系でホバー */
.deck-row-cost {
  flex: 0 0 auto;
  min-width: 1.6em;
  text-align: center;
  font-weight: bold;
  opacity: 0.8;
}
.deck-row-name  { flex: 1 1 auto; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.deck-row-count { flex: 0 0 auto; font-weight: bold; }

/* ── トースト通知 ─────────────────────────────────────────────── */
/* 保存など操作が効いたことを画面中央で数秒だけ大きく知らせる。既定は非表示（透明＋やや縮小）で、
   .toast--show が付いた時だけふわっと現れる。translate(-50%,-50%) が画面中央寄せの基準。 */
.toast {
  position: fixed;
  left: 50%;
  top: 50%;
  transform: translate(-50%, -50%) scale(0.9);
  padding: clamp(12px, 2.4vh, 22px) clamp(20px, 5vw, 40px);
  border-radius: 14px;
  background: rgba(20, 20, 24, 0.92);
  color: var(--text-light);
  font-size: clamp(15px, 3vw, 22px);
  font-weight: bold;
  box-shadow: 0 8px 28px rgba(0, 0, 0, 0.5);
  pointer-events: none;
  opacity: 0;
  transition: opacity 0.2s ease, transform 0.2s ease;
  z-index: 1000;
}
.toast--show {
  opacity: 1;
  transform: translate(-50%, -50%) scale(1);
}

/* ── デッキ削除の確認ダイアログ ───────────────────────────────────────
   ブラウザ標準のconfirm()の代わりに画面中央へ出す。battle.cssの発動確認ダイアログと
   同じ「opacity+pointer-events」で隠す方式に揃える。 */
.deck-confirm-overlay {
  position: fixed;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  background: rgba(0, 0, 0, 0.72);
  z-index: 1100; /* トースト(1000)より前面 */
  opacity: 1;
  transition: opacity 0.15s ease;
}
.deck-confirm-overlay.hidden {
  opacity: 0;
  pointer-events: none;
}
.deck-confirm-box {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: clamp(14px, 3vh, 24px);
  padding: clamp(18px, 3.5vh, 30px) clamp(22px, 5vw, 40px);
  background: rgba(20, 20, 24, 0.94);
  border: 2px solid #ffd700;
  border-radius: 12px;
  box-shadow: 0 8px 28px rgba(0, 0, 0, 0.5);
  max-width: min(90vw, 420px);
}
.deck-confirm-message {
  margin: 0;
  color: var(--text-light);
  font-weight: bold;
  font-size: clamp(15px, 2.2vw, 20px);
  text-align: center;
  line-height: 1.5;
}
.deck-confirm-buttons {
  display: flex;
  gap: clamp(12px, 2.5vw, 22px);
}
.deck-confirm-btn {
  padding: 0.6em 1.6em;
  font-size: clamp(14px, 1.6vw, 18px);
  font-weight: bold;
  border: none;
  border-radius: 6px;
  cursor: pointer;
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.4);
}
.deck-confirm-cancel { background: #ffffff; color: #222; }
.deck-confirm-ok { background: #d63a4a; color: #fff; } /* 破壊的操作なので赤 */
