:root {
  --bg: #f3f0e6;
  --panel: rgba(255,255,255,.9);
  --ink: #18221d;
  --muted: #6e7771;
  --green: #0f6b4f;
  --green-dark: #084b38;
  --green-felt: #0c674c;
  --gold: #d5b35d;
  --border: rgba(22, 57, 45, .12);
  --shadow: 0 18px 50px rgba(26, 52, 42, .12);
}
* { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; }
body {
  margin: 0;
  min-height: 100vh;
  font-family: -apple-system, BlinkMacSystemFont, "PingFang TC", "Noto Sans TC", "Microsoft JhengHei", sans-serif;
  color: var(--ink);
  background:
    radial-gradient(circle at 10% 5%, rgba(213,179,93,.18), transparent 25%),
    linear-gradient(180deg, #f8f5ec 0%, var(--bg) 100%);
}
button, input { font: inherit; }
button { -webkit-tap-highlight-color: transparent; }
.app-shell { width: min(1120px, 100%); margin: 0 auto; padding: 28px 18px calc(28px + env(safe-area-inset-bottom)); }
.topbar { display: flex; align-items: flex-start; justify-content: space-between; gap: 16px; margin-bottom: 18px; }
.eyebrow { margin: 0 0 5px; font-size: 11px; letter-spacing: .16em; font-weight: 800; color: var(--green); }
h1 { margin: 0; font-size: clamp(30px, 6vw, 48px); line-height: 1.05; letter-spacing: -.04em; }
.sub { margin: 9px 0 0; color: var(--muted); font-size: 14px; }
.save-status { flex: 0 0 auto; padding: 8px 11px; border-radius: 999px; background: rgba(15,107,79,.09); color: var(--green); font-size: 12px; font-weight: 800; }
.panel { background: var(--panel); border: 1px solid var(--border); box-shadow: var(--shadow); border-radius: 22px; backdrop-filter: blur(12px); }
.table-name-panel { padding: 16px 18px; margin-bottom: 18px; display:flex; align-items:end; justify-content:space-between; gap:18px; }
.table-name-field { flex:1 1 420px; min-width:0; display:grid; gap:8px; }
.table-name-panel label { font-size: 13px; font-weight: 800; color: var(--green-dark); }
.money-settings { flex:0 0 auto; display:flex; align-items:center; gap:12px; }
.money-field { display:flex; align-items:center; gap:6px; white-space:nowrap; }
.money-field input { width:92px; border:1px solid rgba(14, 62, 47, .14); outline:none; background:#fff; color:var(--ink); border-radius:12px; padding:12px 10px; font-size:17px; font-weight:900; text-align:right; font-variant-numeric:tabular-nums; }
.money-field input:focus { border-color:rgba(15,107,79,.55); box-shadow:0 0 0 4px rgba(15,107,79,.09); }
.currency { color:var(--muted); font-size:12px; font-weight:900; }
.table-name-panel input, .name-field input {
  width: 100%; border: 1px solid rgba(14, 62, 47, .14); outline: none; background: #fff; color: var(--ink); transition: .18s ease;
}
.table-name-panel input { border-radius: 14px; padding: 13px 14px; font-size: 17px; font-weight: 700; }
.table-name-panel input:focus, .name-field input:focus { border-color: rgba(15,107,79,.55); box-shadow: 0 0 0 4px rgba(15,107,79,.09); }

.mahjong-table {
  position: relative;
  min-height: 720px;
  padding: 22px;
  border-radius: 34px;
  overflow: hidden;
  background:
    linear-gradient(135deg, rgba(255,255,255,.05), transparent 40%),
    var(--green-felt);
  box-shadow: inset 0 0 0 10px #59432c, inset 0 0 0 14px #99734d, 0 28px 60px rgba(34, 54, 46, .18);
  display: grid;
  grid-template-columns: 1fr 1fr;
  grid-template-areas: "east south" "west north";
  column-gap: 110px;
  row-gap: 110px;
}
.mahjong-table::before { content:""; position:absolute; inset:14px; border:1px solid rgba(255,255,255,.12); border-radius:22px; pointer-events:none; }
.felt-mark { position: absolute; z-index: 0; color: rgba(255,255,255,.045); font-size: 200px; font-weight: 900; line-height: 1; user-select: none; }
.felt-mark-top { top: -25px; left: -5px; }
.felt-mark-bottom { right: -5px; bottom: -45px; }
.center-logo { position:absolute; z-index:3; pointer-events:none; left:50%; top:50%; transform:translate(-50%,-50%); width:94px; height:94px; border:1px solid rgba(255,255,255,.12); border-radius:50%; background:rgba(5,57,41,.62); box-shadow: 0 16px 32px rgba(0,0,0,.18), inset 0 0 0 8px rgba(255,255,255,.025); display:flex; flex-direction:column; align-items:center; justify-content:center; color:white; }
.center-logo span { font-size:21px; font-weight:900; letter-spacing:.12em; margin-left:.12em; }
.center-logo small { margin-top:3px; font-size:10px; opacity:.68; letter-spacing:.12em; }
.player-card { z-index:2; position:relative; align-self:stretch; display:flex; min-width:0; background:rgba(255,255,255,.96); border:1px solid rgba(255,255,255,.5); border-radius:24px; box-shadow:0 16px 30px rgba(0,0,0,.14); overflow:hidden; }
.player-east { grid-area:east; }
.player-south { grid-area:south; }
.player-west { grid-area:west; }
.player-north { grid-area:north; }
.seat-badge { flex:0 0 58px; background:#f4ead0; color:#644d1f; display:flex; align-items:center; justify-content:center; font-family: serif; font-size:36px; font-weight:900; border-right:1px solid rgba(100,77,31,.12); }
.player-body { flex:1; min-width:0; padding:16px; display:flex; flex-direction:column; justify-content:center; gap:14px; }
.name-field { display:grid; gap:6px; color:var(--muted); font-size:12px; font-weight:800; }
.name-field input { border-radius:12px; padding:11px 12px; font-size:16px; font-weight:800; }
.score-row { display:flex; align-items:center; justify-content:space-between; gap:10px; }
.score-label { min-width:34px; font-size:14px; font-weight:900; color:var(--green-dark); }
.stepper { display:grid; grid-template-columns:42px minmax(48px, 60px) 42px; align-items:center; border:1px solid rgba(15,107,79,.14); background:#f6faf8; border-radius:14px; overflow:hidden; }
.step-btn { width:42px; height:42px; border:0; background:#fff; color:var(--green); font-size:23px; font-weight:800; cursor:pointer; }
.step-btn:active { transform:scale(.94); background:#edf7f2; }
.stepper output { text-align:center; font-variant-numeric:tabular-nums; font-size:20px; font-weight:900; color:var(--ink); }
.actions { margin-top:18px; padding:16px 18px; display:flex; align-items:center; justify-content:space-between; gap:16px; }
.actions strong { display:block; font-size:15px; }
.actions p { margin:3px 0 0; font-size:12px; color:var(--muted); }
.reset-btn { flex:0 0 auto; border:0; border-radius:14px; padding:12px 18px; background:#262d29; color:white; font-weight:900; cursor:pointer; }
.reset-btn:active { transform:translateY(1px); }
footer { display:flex; justify-content:center; gap:7px; margin-top:18px; color:#818982; font-size:11px; }
.confirm-dialog { width:min(390px, calc(100% - 30px)); border:0; border-radius:24px; padding:0; box-shadow:0 28px 80px rgba(0,0,0,.28); }
.confirm-dialog::backdrop { background:rgba(11, 30, 23, .5); backdrop-filter:blur(4px); }
.confirm-dialog form { padding:24px; text-align:center; }
.dialog-icon { width:52px; height:52px; margin:0 auto 12px; border-radius:50%; background:#f3eee4; display:grid; place-items:center; font-size:26px; }
.confirm-dialog h2 { margin:0 0 8px; font-size:22px; }
.confirm-dialog p { margin:0; color:var(--muted); line-height:1.65; font-size:13px; }
.dialog-actions { display:grid; grid-template-columns:1fr 1fr; gap:10px; margin-top:20px; }
.dialog-actions button { border:0; border-radius:13px; padding:12px 14px; font-weight:900; cursor:pointer; }
.dialog-secondary { background:#edf0ee; color:#3c4540; }
.dialog-danger { background:#b63832; color:white; }

@media (max-width: 760px) {
  .app-shell { padding:18px 12px calc(24px + env(safe-area-inset-bottom)); }
  .topbar { align-items:flex-end; }
  .sub { max-width:255px; }
  .save-status { font-size:10px; padding:7px 9px; }
  .table-name-panel { align-items:stretch; flex-direction:column; gap:12px; }
  .money-settings { width:100%; display:grid; grid-template-columns:1fr 1fr; gap:10px; }
  .money-field { display:grid; grid-template-columns:auto 1fr auto; gap:6px; align-items:center; }
  .money-field input { width:100%; min-width:0; }
  .mahjong-table { min-height:auto; padding:16px; border-radius:28px; grid-template-columns:1fr; grid-template-areas:"east" "south" "west" "north"; column-gap:12px; row-gap:12px; box-shadow:inset 0 0 0 7px #59432c, inset 0 0 0 10px #99734d, 0 20px 45px rgba(34,54,46,.18); }
  .center-logo { display:none; }
  .felt-mark { font-size:150px; }
  .player-card { min-height:148px; border-radius:19px; }
  .seat-badge { flex-basis:52px; font-size:32px; }
  .player-body { padding:13px; gap:11px; }
  .name-field { grid-template-columns:34px 1fr; align-items:center; gap:8px; }
  .name-field input { padding:9px 11px; }
  .stepper { grid-template-columns:40px 52px 40px; }
  .step-btn { width:40px; height:40px; }
  .actions { align-items:stretch; flex-direction:column; }
  .reset-btn { width:100%; padding:13px; }
}

@media (max-width: 380px) {
  .topbar { display:block; }
  .save-status { display:inline-block; margin-top:10px; }
  .score-row { gap:7px; }
  .stepper { grid-template-columns:38px 48px 38px; }
  .step-btn { width:38px; }
}

/* v4: 姓名右側正負選擇 */
.name-row {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: end;
  gap: 9px;
  min-width: 0;
}
.name-row .name-field { min-width: 0; }
.sign-toggle {
  display: grid;
  grid-template-columns: 42px 42px;
  align-items: stretch;
  border: 1px solid rgba(15,107,79,.16);
  border-radius: 12px;
  overflow: hidden;
  background: #f6faf8;
}
.sign-btn {
  width: 42px;
  height: 42px;
  border: 0;
  background: #fff;
  color: #77817b;
  font-size: 21px;
  line-height: 1;
  font-weight: 900;
  cursor: pointer;
}
.sign-btn + .sign-btn { border-left: 1px solid rgba(15,107,79,.12); }
.sign-btn.active {
  background: var(--green);
  color: #fff;
}
.sign-btn:active { transform: scale(.95); }
.sign-btn:focus-visible {
  position: relative;
  z-index: 1;
  outline: 3px solid rgba(15,107,79,.22);
  outline-offset: -3px;
}

@media (max-width: 760px) {
  .name-row { grid-template-columns: minmax(0, 1fr) auto; align-items: center; gap: 8px; }
  .name-row .name-field { grid-template-columns: 34px minmax(0, 1fr); }
  .sign-toggle { grid-template-columns: 40px 40px; }
  .sign-btn { width: 40px; height: 40px; }
}

@media (max-width: 380px) {
  .sign-toggle { grid-template-columns: 38px 38px; }
  .sign-btn { width: 38px; height: 38px; }
}

/* v5: 修正窄螢幕牌桌設定區被 flex-basis 撐高造成大量空白 */
@media (max-width: 760px) {
  .table-name-panel {
    padding: 14px 15px;
    gap: 10px;
  }
  .table-name-field {
    flex: none;
    width: 100%;
    min-height: 0;
    grid-template-rows: auto auto;
    align-content: start;
    gap: 7px;
  }
  .table-name-field input {
    height: 48px;
    min-height: 48px;
    padding: 10px 12px;
  }
  .money-settings {
    margin-top: 0;
  }
  .money-field input {
    height: 46px;
    min-height: 46px;
    padding-top: 9px;
    padding-bottom: 9px;
  }
}

/* v6: 玩家金額加總與正負切換色彩 */
.total-row {
  display:flex;
  align-items:baseline;
  justify-content:flex-end;
  gap:10px;
  margin-top:-2px;
  padding-top:10px;
  border-top:1px dashed rgba(15,107,79,.15);
}
.total-label {
  font-size:12px;
  font-weight:800;
  color:var(--muted);
}
.player-total {
  min-width:112px;
  text-align:right;
  font-size:20px;
  line-height:1.1;
  font-weight:950;
  letter-spacing:-.02em;
  color:var(--green-dark);
  font-variant-numeric:tabular-nums;
}
.player-total.negative { color:#b63832; }

/* ＋／－未選取皆白底；選＋變綠、選－變紅。 */
.sign-btn[data-sign="+"] { background:#fff; color:var(--green); }
.sign-btn[data-sign="-"] { background:#fff; color:#9f2f2a; }
.sign-btn[data-sign="+"].active { background:var(--green); color:#fff; }
.sign-btn[data-sign="-"].active { background:#c63f38; color:#fff; }

@media (max-width:760px) {
  .total-row { padding-top:8px; }
  .player-total { font-size:19px; min-width:104px; }
}


/* v8: 移除姓名右側正負切換，改成加總狀態燈 */
.name-row {
  display: block;
  min-width: 0;
}
.name-row .name-field {
  min-width: 0;
  display: grid;
  gap: 6px;
}
.total-row {
  align-items: center;
  gap: 8px;
}
.total-light {
  width: 12px;
  height: 12px;
  border-radius: 999px;
  background: #c8cfca;
  box-shadow: 0 0 0 3px rgba(0,0,0,.03);
  flex: 0 0 auto;
}
.total-light.positive {
  background: #1f9d68;
  box-shadow: 0 0 0 3px rgba(31,157,104,.14), 0 0 10px rgba(31,157,104,.45);
}
.total-light.negative {
  background: #d14137;
  box-shadow: 0 0 0 3px rgba(209,65,55,.14), 0 0 10px rgba(209,65,55,.38);
}
@media (max-width: 760px) {
  .name-row { display:block; }
  .name-row .name-field { grid-template-columns: 34px minmax(0, 1fr); }
}


/* v9: 副標文字手機版不換行 */
.sub {
  white-space: nowrap;
}
@media (max-width: 760px) {
  .sub {
    max-width: none;
    white-space: nowrap;
    font-size: 13px;
  }
}
