/* =============================================================================
   tokens.css — 1 แหล่งความจริงของ design token (ชุด A)
   โหลดเป็นไฟล์แรกของ mods CSS (compile_native.mjs) → ไฟล์อื่นใช้ var() จากที่นี่
   หลักการ:
   - สีอ้าง var(--bg/--panel/--ink/--gold/…) ของเกม → light/dark สลับตาม theme เดิมอัตโนมัติ
   - ใช้ radius แค่ 4 ค่า: --r-6 / --r-8 / --r-12 / --r-pill
   - ใช้ขนาดฟอนต์แค่ 6 ค่า: --fs-11 / --fs-12 / --fs-14 / --fs-16 / --fs-18 / --fs-24
   - เป้าแตะขั้นต่ำ --tap (44px) ทั้งปุ่ม/ฟิลด์/แถว ในไดอะล็อกและแผง
   ============================================================================= */
:root {
  /* ---- สี (อ้าง token เดิมของเกม) ---- */
  --ui-bg-0: var(--bg);
  --ui-bg-1: var(--panel);
  --ui-card: color-mix(in srgb, var(--panel) 75%, var(--bg));
  --ui-raised: color-mix(in srgb, var(--panel) 88%, var(--bg));
  --ui-line-1: var(--line);
  --ui-line-2: var(--line-2);
  --ui-ink-1: var(--ink);
  --ui-ink-2: var(--ink-2);
  --ui-ink-3: #6b6580;                 /* meta เล็ก: light ต้อง ≥4.5 บน panel */
  --ui-gold: var(--gold);
  --ui-gold-ink: var(--gold-ink);
  --ui-gold-2: var(--gold-2);
  --ui-gold-soft: var(--gold-soft);
  --ui-danger-ink: var(--danger);
  --ui-ok-ink: var(--ok);
  --ui-warn-ink: var(--warn);
  --ui-backdrop: rgb(8 9 18 / .66);

  /* ---- radius: 4 ค่าเท่านั้น ---- */
  --r-6: 6px;                          /* chip / badge / tool icon */
  --r-8: 8px;                          /* ปุ่ม / ฟิลด์ / แถว / ตัวเลือก */
  --r-12: 12px;                        /* การ์ด / ไดอะล็อก */
  --r-pill: 999px;                     /* status / counter / avatar วงกลม */

  /* ---- spacing: สเกล 4px ---- */
  --sp-1: 4px;
  --sp-2: 8px;
  --sp-3: 12px;
  --sp-4: 16px;
  --sp-5: 20px;
  --sp-6: 24px;
  --gutter: 16px;

  /* ---- typography: 6 ค่าเท่านั้น (ไทยต้องการ line-height สูง — thai.css:9) ---- */
  --fs-11: .6875rem;
  --fs-12: .75rem;
  --fs-14: .875rem;
  --fs-16: 1rem;
  --fs-18: 1.125rem;
  --fs-24: 1.5rem;
  --lh-body: 1.7;
  --lh-tight: 1.35;
  --font-ui: var(--font-body, "Leelawadee UI", "Noto Sans Thai", Tahoma, system-ui, sans-serif);

  /* ---- ปุ่ม / เป้าแตะ ---- */
  --tap: 44px;
  --tap-sm: 36px;
  --btn-pad-x: var(--sp-3);
  --btn-pad-y: 7px;

  /* ---- avatar ( owner B ใช้ต่อ ) ---- */
  --avatar-xs: 24px;
  --avatar-sm: 34px;
  --avatar-md: 40px;
  --avatar-lg: 56px;
  --avatar-xl: 76px;

  /* ---- เงา ---- */
  --ui-shadow-1: 0 2px 10px rgb(0 0 0 / .12);
  --ui-shadow-2: 0 18px 48px rgb(7 5 14 / .34);

  /* ---- chevron ของ select (สีทอง) ---- */
  --ui-chevron: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1.5 6 6.5 11 1.5' fill='none' stroke='%23a47a22' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
}
@media (max-width: 500px) {
  :root { --gutter: 12px; }
}

/* ---- dark theme: token ที่ต้องสว่างขึ้นเพื่อคอนทราสต์ ---- */
@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) {
    --ui-ink-3: #9a94b4;               /* 5.56:1 บนการ์ด */
    --c-enemy: #e2604f;                /* 5.17:1 บน panel (เดิม #c02719 = 3.05:1) */
    --ui-shadow-2: 0 18px 48px rgb(0 0 0 / .5);
    --ui-chevron: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1.5 6 6.5 11 1.5' fill='none' stroke='%23e0bc64' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
  }
}
:root[data-theme="dark"] {
  --ui-ink-3: #9a94b4;
  --c-enemy: #e2604f;
  --ui-shadow-2: 0 18px 48px rgb(0 0 0 / .5);
  --ui-chevron: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1.5 6 6.5 11 1.5' fill='none' stroke='%23e0bc64' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
}
/* light: --c-enemy เดิม #f84713 บนพื้นสว่างได้ 3.0:1 → เข้มขึ้นเป็น 4.64:1 */
:root:not([data-theme="dark"]) { --c-enemy: #c2351b; }
@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) { --c-enemy: #e2604f; }
}

/* =============================== base =============================== */
/* ปุ่ม: ทรงเดียวทั้งเกม (เดิม radius 999 = pill ทุกปุ่ม แต่กระดาน override 10px) */
.btn { border-radius: var(--r-8); }
.btn.round,
.btn.icon.round { border-radius: 50%; }
.seg-btn { border-radius: var(--r-8); font-size: var(--fs-14); }
.tool { border-radius: var(--r-8); }
.chip, .tag { border-radius: var(--r-6); }
.card { border-radius: var(--r-12); }

/* checkbox/radio: เดิมใช้ accent ของเบราว์เซอร์ (ฟ้า) ในเลเจนด์ → บังคับทองทั้งเกม */
input[type="checkbox"], input[type="radio"] { accent-color: var(--ui-gold); }
.legend input[type="checkbox"], .legend input[type="radio"] { width: 20px; height: 20px; }
.legend label, .lg-row, .layer-row { min-height: var(--tap); }

/* select/input: สูงเท่ากัน + เชฟรอนทอง + ฟอนต์ 16px กัน zoom บน iOS */
#divine-desk select, #divine-desk input:not([type="checkbox"]):not([type="radio"]):not([type="range"]),
#player-tools select, #player-tools input:not([type="checkbox"]):not([type="radio"]):not([type="range"]),
.player-search select, .player-search input,
.native-map-settings select,
.veil-card select, .veil-card input:not([type="checkbox"]):not([type="radio"]):not([type="range"]) {
  box-sizing: border-box;
  min-height: var(--tap);
  width: 100%;
  max-width: 100%;
  padding: 8px 34px 8px 10px;
  border: 1px solid var(--ui-line-2);
  border-radius: var(--r-8);
  background-color: var(--ui-bg-0);
  color: var(--ui-ink-1);
  font: inherit;
  font-size: var(--fs-16);
  line-height: var(--lh-tight);
  appearance: none;
}
#divine-desk input:not([type="checkbox"]):not([type="radio"]):not([type="range"]),
#player-tools input:not([type="checkbox"]):not([type="radio"]):not([type="range"]),
.player-search input,
.veil-card input:not([type="checkbox"]):not([type="radio"]):not([type="range"]) {
  padding-right: 10px;                 /* ช่องพิมพ์ไม่ต้องเผื่อ chevron */
  background-image: none;
}
#divine-desk select, #player-tools select, .player-search select,
.native-map-settings select, .veil-card select {
  background-image: var(--ui-chevron);
  background-repeat: no-repeat;
  background-position: right 11px center;
  background-size: 11px 7px;
}
#divine-desk select:disabled, #player-tools select:disabled, .player-search select:disabled { opacity: .55; }

/* ไดอะล็อก: เปลือกเดียวกันทุกบาน (radius 12, เงา, backdrop ทึบเท่ากัน) */
dialog::backdrop { background: var(--ui-backdrop); }
dialog[open] { border-radius: var(--r-12); box-shadow: var(--ui-shadow-2); }

/* focus ring เดียวกันทั้งเกม */
:is(dialog, .panel, .legend) :is(button, summary, input, select, a):focus-visible {
  outline: 2px solid var(--ui-gold);
  outline-offset: 2px;
}

/* ===================== คอมโพเนนต์กลาง (ใช้ต่อใน B/C) ===================== */
/* การ์ด */
.ui-card {
  display: grid;
  gap: var(--sp-2);
  padding: var(--sp-3) var(--sp-4);
  border: 1px solid var(--ui-line-1);
  border-radius: var(--r-12);
  background: var(--ui-card);
  overflow-wrap: anywhere;
}
.ui-card > header { display: flex; align-items: center; justify-content: space-between; gap: var(--sp-2); flex-wrap: wrap; }
.ui-card > header > b { font-size: var(--fs-16); font-weight: 700; }
.ui-card .ui-meta { color: var(--ui-ink-3); font-size: var(--fs-12); line-height: var(--lh-body); }

/* แถวรายการ (table/list row) — ใช้กับ avatar ได้ */
.ui-row {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto;
  align-items: center;
  gap: var(--sp-3);
  min-height: var(--tap);
  padding: var(--sp-2) var(--sp-3);
  border: 1px solid var(--ui-line-1);
  border-radius: var(--r-8);
  background: var(--ui-bg-1);
  text-align: start;
}
.ui-row:hover { border-color: var(--ui-gold); background: var(--ui-gold-soft); }
.ui-row .ui-title { font-size: var(--fs-16); font-weight: 700; }
.ui-row .ui-meta { color: var(--ui-ink-3); font-size: var(--fs-12); line-height: var(--lh-tight); }

/* สถานะ / ตัวนับ */
.ui-status {
  display: inline-flex;
  align-items: center;
  gap: var(--sp-1);
  padding: 2px var(--sp-2);
  border: 1px solid transparent;
  border-radius: var(--r-pill);
  background: var(--ui-gold-soft);
  color: var(--ui-gold-ink);
  font-size: var(--fs-11);
  line-height: var(--lh-tight);
  white-space: nowrap;
}
.ui-status[data-tone="quiet"] { border-color: var(--ui-line-1); background: var(--ui-card); color: var(--ui-ink-2); }
.ui-status[data-tone="danger"] { border-color: var(--ui-danger-ink); background: transparent; color: var(--ui-danger-ink); }
.ui-status[data-tone="ok"] { border-color: var(--ui-ok-ink); background: transparent; color: var(--ui-ok-ink); }

/* empty state: 2 แบบ — "ยังไม่มี" (data-kind=empty) / "ค้นไม่เจอ" (data-kind=miss) */
.ui-empty {
  display: grid;
  justify-items: center;
  gap: var(--sp-1);
  margin: 0;
  padding: var(--sp-4) var(--sp-3);
  border: 1px dashed var(--ui-line-2);
  border-radius: var(--r-8);
  color: var(--ui-ink-2);
  font-size: var(--fs-14);
  line-height: var(--lh-body);
  text-align: center;
}
.ui-empty::before { content: "✦"; color: var(--ui-gold-ink); font-size: var(--fs-16); line-height: 1; }
.ui-empty[data-kind="miss"]::before { content: "⌕"; }
.ui-empty .ui-empty-hint { color: var(--ui-ink-3); font-size: var(--fs-12); }

/* utility */
.ui-title { font-size: var(--fs-16); }
.ui-meta { font-size: var(--fs-12); color: var(--ui-ink-3); }
.ui-muted { color: var(--ui-ink-3); }
.ui-tap { min-height: var(--tap); }
