/* ============================================================
   hakoniwa casino — card table (L1 / カジノ・カードゲーム共通)
   フェルト卓・座席・カード意匠・結果メッセージ。
   ルーレット/ホイール等 カードを使わないツールは読み込まなくてよい。
   前提: tokens.css → base.css を先に読み込むこと。
   ============================================================ */
:root {
  --felt:      #70C1B3;
  --felt-2:    #5bb0a1;
  --card-bg:   #ffffff;
  --card-ink:  #2c2d2b;
}

.table { margin-top: 2px; }

.felt {
  position: relative;
  border-radius: 26px 26px 90px 90px / 26px 26px 50px 50px;
  background: radial-gradient(120% 100% at 50% 0%, var(--felt) 0%, var(--felt-2) 82%);
  border: 1px solid rgba(80, 81, 79, 0.12);
  box-shadow: var(--shadow), inset 0 1px 0 rgba(255, 255, 255, 0.35);
  padding: 16px 12px 22px;
  min-height: 40dvh;
  display: flex; flex-direction: column; justify-content: space-between;
}
.felt::before {
  content: ''; position: absolute; inset: 9px;
  border: 1px solid rgba(255, 255, 255, 0.3); border-radius: 20px 20px 80px 80px / 20px 20px 44px 44px;
  pointer-events: none;
}
.seat { text-align: center; z-index: 1; }
.seat-label { font-family: 'Cinzel', serif; font-size: 0.62rem; letter-spacing: 0.22em; color: rgba(34, 60, 54, 0.7); margin: 6px 0; }
.seat-label .hv {
  display: inline-block; margin-left: 6px; padding: 0 7px; border-radius: 8px;
  font-family: 'JetBrains Mono', monospace; letter-spacing: 0;
  background: rgba(255, 255, 255, 0.85); color: var(--c-dark);
}

/* ---------- cards ---------- */
.cards, .player-hands { display: flex; gap: 6px; justify-content: center; flex-wrap: wrap; min-height: 92px; align-items: center; }
.player-hands { gap: 14px; }
.hand { display: flex; gap: 6px; padding: 6px; border-radius: 14px; transition: 0.2s; }
.hand { flex-direction: column; align-items: center; }
.hand .hand-row { display: flex; gap: 6px; }
.hand.active { background: rgba(255, 255, 255, 0.3); box-shadow: 0 0 0 2px var(--c-blue); }
.hand-label { font-family: 'JetBrains Mono', monospace; font-size: 0.56rem; letter-spacing: 0.1em; color: rgba(40, 56, 52, 0.7); width: 100%; text-align: center; margin-bottom: 3px; }
.hand.active .hand-label { color: var(--c-blue); font-weight: 700; }
.hand-meta { font-family: 'JetBrains Mono', monospace; font-size: 0.6rem; color: rgba(40, 56, 52, 0.8); text-align: center; width: 100%; margin-top: 2px; }

.card {
  width: 58px; height: 84px; border-radius: 9px;
  background: var(--card-bg); color: var(--card-ink);
  box-shadow: 0 6px 14px -8px rgba(20, 30, 28, 0.55), inset 0 0 0 1px rgba(0, 0, 0, 0.05);
  position: relative; flex: 0 0 auto;
  font-family: 'JetBrains Mono', monospace;
}
/* only freshly-dealt cards animate (added via JS), so existing cards don't
   re-animate on every re-render. JS sets a per-deal stagger via delay. */
.card.deal-in { animation: dealIn 0.42s cubic-bezier(0.2, 0.74, 0.24, 1) both; }
@keyframes dealIn {
  0%   { opacity: 0; transform: translate(46px, -58px) rotate(13deg) scale(0.8); }
  60%  { opacity: 1; }
  100% { opacity: 1; transform: translate(0, 0) rotate(0) scale(1); }
}
.card.flip-in { animation: flipIn 0.4s ease both; }
@keyframes flipIn { 0% { transform: rotateY(90deg) scale(0.96); } 100% { transform: rotateY(0) scale(1); } }
.card .corner { position: absolute; font-weight: 600; line-height: 1; }
.card .tl { top: 6px; left: 7px; text-align: center; }
.card .br { bottom: 6px; right: 7px; transform: rotate(180deg); text-align: center; }
.card .rank { font-size: 0.92rem; display: block; }
.card .suit { font-size: 0.78rem; display: block; }
.card .pip { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; font-size: 1.7rem; opacity: 0.92; }
.card.red { color: var(--c-red); }
.card.back {
  background: var(--c-blue);
  background-image: repeating-linear-gradient(45deg, rgba(255,255,255,0.12) 0 6px, rgba(255,255,255,0) 6px 12px);
  box-shadow: 0 6px 14px -8px rgba(20, 30, 28, 0.55), inset 0 0 0 2px rgba(255,255,255,0.5), inset 0 0 0 5px var(--c-blue);
}
.card.back::after { content: '♦'; position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; color: rgba(255, 255, 255, 0.85); font-size: 1.6rem; }

/* ---------- result message ---------- */
.message { text-align: center; margin: 12px 4px 4px; min-height: 1.4em; font-size: 1.12rem; color: var(--ink); letter-spacing: 0.02em; }
.message.win { color: var(--win); }
.message.lose { color: var(--lose); }
