/* [2026-08-10] Main-Menu ไม่เคยประกาศ @font-face มาก่อน (ปุ่มทั้งหมดเป็นภาพ ไม่เคยมีตัวอักษรจริง
   บนหน้านี้จนกระทั่ง popup ยืนยันออกจากเกมด้านล่าง) → 'NotoSansThai' ที่ขอไว้ในสไตล์ popup ไม่มีไฟล์
   จริงมาโหลด ตกไปใช้ฟอนต์ระบบซึ่ง "มีหัว" (ตรงข้ามกับที่สั่ง) เอาไฟล์เดียวกับ Main-Lobby/style.css
   มาใช้ (root /FONTS/ ใช้ร่วมกันทั้งเว็บ — Main-Menu อยู่ระดับเดียวกับ Main-Lobby จึง ../FONTS/ ตรงกัน) */
/* [2026-08-11] ฟอนต์ไทยไม่มีหัว — เดิมมีแค่ ExtraBold ตัวเดียว (ครอบคลุมทุก font-weight
   ทางเทคนิคแต่หน้าตาเป็น ExtraBold เสมอ) popup ยืนยันออกจากเกมใช้จริงที่ font-weight
   600 (.menu-exit-text) และ 800 (.menu-exit-title) เติมให้ตรงน้ำหนักจริง
   path ใช้ /Create%20Room/FONTS/ (absolute) เพราะไฟล์ SemiBold/Black มีอยู่จริงเฉพาะ
   ในโฟลเดอร์นั้น — โฟลเดอร์ FONTS/ ที่ root มีแค่ Medium/ExtraBold
   ⚠️ ต้องประกาศบล็อกเหล่านี้ "ก่อน" ExtraBold(100-900) ด้านล่าง — วัดจริงพบว่าเมื่อสอง
   @font-face ประกาศ font-weight เป็น "ช่วง" ทับกัน (800-900 กับ 100-900) เบราว์เซอร์จะเลือก
   ไฟล์ที่ "ประกาศก่อน" เสมอ ไม่ใช่ไฟล์ที่ช่วงแคบกว่า/ตรงกว่า */
@font-face {
  font-family: 'NotoSansThai';
  src: url('/Create%20Room/FONTS/NotoSansThai-SemiBold.ttf') format('truetype');
  font-weight: 600;
  font-style: normal;
  font-display: swap;
}
@font-face {
  font-family: 'NotoSansThai';
  src: url('/Create%20Room/FONTS/NotoSansThai-Black.ttf') format('truetype');
  font-weight: 800 900;
  font-style: normal;
  font-display: swap;
}

@font-face {
  font-family: 'NotoSansThai';
  src: url('../FONTS/NotoSansThai-ExtraBold.ttf') format('truetype');
  font-weight: 100 900;
  font-style: normal;
  font-display: swap;
}


* { box-sizing: border-box; }

:root {
  --menu-overlay-dark: rgba(1, 6, 20, 0.52);
  --menu-overlay-edge: rgba(1, 6, 20, 0.8);
  --menu-focus: #8cefff;
}

html {
  min-height: 100%;
  -webkit-text-size-adjust: 100%;
}

body {
  margin: 0;
  min-height: 100vh;
  min-height: 100dvh;
  overflow: hidden;
  font-family: "Segoe UI", system-ui, sans-serif;
  color: #fff;
}

.menu-bg {
  position: fixed;
  inset: 0;
  z-index: 0;
  overflow: hidden;
}

.menu-bg-img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center;
}

.menu-bg::after {
  content: "";
  position: absolute;
  inset: 0;
  background:
    radial-gradient(circle at 50% 48%, rgba(0, 196, 255, 0.16), transparent 52%),
    linear-gradient(to bottom, rgba(2, 9, 28, 0.2), rgba(2, 9, 28, 0.36));
  pointer-events: none;
}

.menu-char-layer {
  position: fixed;
  inset: 0;
  z-index: 1;
  pointer-events: none;
  display: flex;
  justify-content: center;
  align-items: center;
}

.menu-char-img {
  width: 100%;
  height: 100%;
  max-height: 75vh;
  object-fit: contain;
  object-position: center;
}

.menu-vignette {
  position: fixed;
  inset: 0;
  z-index: 2;
  pointer-events: none;
  background: radial-gradient(ellipse at center, transparent 20%, var(--menu-overlay-dark) 66%, var(--menu-overlay-edge) 100%);
}

.menu-ui {
  position: relative;
  z-index: 3;
  min-height: 100vh;
  min-height: 100dvh;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  padding:
    max(0.5rem, env(safe-area-inset-top))
    max(0.5rem, env(safe-area-inset-right))
    max(0.5rem, env(safe-area-inset-bottom))
    max(0.5rem, env(safe-area-inset-left));
}

.menu-btn-back {
  position: absolute;
  top: clamp(0.65rem, 2.2vw, 1.8rem);
  left: clamp(0.65rem, 2.2vw, 1.8rem);
  z-index: 10;
  border: none;
  background: none;
  padding: 0;
  cursor: pointer;
  transition: transform 160ms ease, filter 160ms ease;
}

.menu-btn-back-img {
  display: block;
  width: clamp(46px, 5vw, 70px);
  height: auto;
  object-fit: contain;
  filter: drop-shadow(0 0 10px rgba(0, 228, 255, 0.35));
}

.menu-logo {
  position: absolute;
  top: clamp(0.8rem, 4.5vh, 2.4rem);
  left: 50%;
  transform: translateX(-50%);
  z-index: 5;
  width: min(56vw, 640px);
  max-width: 92%;
}

.menu-logo-img {
  display: block;
  width: 100%;
  height: auto;
  object-fit: contain;
}

.menu-buttons {
  position: relative;
  z-index: 5;
  width: 100%;
  padding-inline: clamp(0.75rem, 2vw, 1.25rem);
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: clamp(10px, 1.9vh, 18px);
  margin-top: clamp(7.5rem, 18vh, 15.5rem);
}

.menu-btn-create,
.menu-btn-join,
.menu-btn-exit {
  border: none;
  background: none;
  padding: 0;
  cursor: pointer;
  width: clamp(265px, 33vw, 360px);
  max-width: 100%;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: transform 140ms ease, filter 140ms ease, opacity 140ms ease;
}

.menu-btn-exit {
  margin-top: clamp(0.9rem, 3.5vh, 2.25rem);
}

.menu-btn-create-img,
.menu-btn-join-img,
.menu-btn-exit-img {
  display: block;
  width: 100%;
  height: auto;
  object-fit: contain;
}

.menu-btn-create:hover,
.menu-btn-join:hover,
.menu-btn-exit:hover,
.menu-btn-back:hover {
  transform: translateY(-2px);
  filter: brightness(1.05);
}

.menu-btn-create:active,
.menu-btn-join:active,
.menu-btn-exit:active,
.menu-btn-back:active {
  transform: translateY(0);
}

.menu-btn-create:focus-visible,
.menu-btn-join:focus-visible,
.menu-btn-exit:focus-visible,
.menu-btn-back:focus-visible {
  outline: 2px solid var(--menu-focus);
  outline-offset: 3px;
  border-radius: 10px;
}









/* Desktop exact image size (1920x1080 target) */



* { box-sizing: border-box; }

:root {
  --menu-overlay-dark: rgba(1, 6, 20, 0.52);
  --menu-overlay-edge: rgba(1, 6, 20, 0.8);
  --menu-focus: #8cefff;
}

html {
  min-height: 100%;
  -webkit-text-size-adjust: 100%;
}

body {
  margin: 0;
  min-height: 100vh;
  min-height: 100dvh;
  overflow: hidden;
  font-family: "Segoe UI", system-ui, sans-serif;
  color: #fff;
}

/* ---- Background Layers ---- */
.menu-bg {
  position: fixed;
  inset: 0;
  z-index: 0;
  overflow: hidden;
}

.menu-bg-img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center;
}

.menu-bg::after {
  content: "";
  position: absolute;
  inset: 0;
  background:
    radial-gradient(circle at 50% 48%, rgba(0, 196, 255, 0.16), transparent 52%),
    linear-gradient(to bottom, rgba(2, 9, 28, 0.2), rgba(2, 9, 28, 0.36));
  pointer-events: none;
}

.menu-char-layer {
  position: fixed;
  inset: 0;
  z-index: 1;
  pointer-events: none;
  display: flex;
  justify-content: center;
  align-items: center;
}

.menu-char-img {
  width: 100%;
  height: 100%;
  max-height: 75vh;
  object-fit: contain;
  object-position: center;
}

.menu-vignette {
  position: fixed;
  inset: 0;
  z-index: 2;
  pointer-events: none;
  background:
    radial-gradient(ellipse at center, transparent 20%, var(--menu-overlay-dark) 66%, var(--menu-overlay-edge) 100%);
}

/* ---- UI Layer ---- */
.menu-ui {
  position: relative;
  z-index: 3;
  min-height: 100vh;
  min-height: 100dvh;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  padding:
    max(0.5rem, env(safe-area-inset-top))
    max(0.5rem, env(safe-area-inset-right))
    max(0.5rem, env(safe-area-inset-bottom))
    max(0.5rem, env(safe-area-inset-left));
}

/* ---- Back button ---- */
.menu-btn-back {
  position: absolute;
  top: clamp(0.65rem, 2.2vw, 1.8rem);
  left: clamp(0.65rem, 2.2vw, 1.8rem);
  z-index: 10;
  border: none;
  background: none;
  padding: 0;
  cursor: pointer;
  transition: transform 160ms ease, filter 160ms ease;
}

.menu-btn-back-img {
  display: block;
  width: clamp(46px, 5vw, 70px);
  height: auto;
  object-fit: contain;
  filter: drop-shadow(0 0 10px rgba(0, 228, 255, 0.35));
}

/* ---- Logo ---- */
.menu-logo {
  position: absolute;
  top: clamp(0.8rem, 4.5vh, 2.4rem);
  left: 50%;
  transform: translateX(-50%);
  z-index: 5;
  width: min(56vw, 640px);
  max-width: 92%;
}

.menu-logo-img {
  display: block;
  width: 100%;
  height: auto;
  object-fit: contain;
}

/* ---- Main buttons ---- */
.menu-buttons {
  position: relative;
  z-index: 5;
  width: 100%;
  padding-inline: clamp(0.75rem, 2vw, 1.25rem);
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: clamp(10px, 1.9vh, 18px);
  margin-top: clamp(7.5rem, 18vh, 15.5rem);
}

.menu-btn-create,
.menu-btn-join,
.menu-btn-exit {
  border: none;
  background: none;
  padding: 0;
  cursor: pointer;
  width: clamp(265px, 33vw, 360px);
  max-width: 100%;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: transform 140ms ease, filter 140ms ease, opacity 140ms ease;
}

.menu-btn-exit {
  margin-top: clamp(0.9rem, 3.5vh, 2.25rem);
}

.menu-btn-create-img,
.menu-btn-join-img,
.menu-btn-exit-img {
  display: block;
  width: 100%;
  height: auto;
  object-fit: contain;
}

.menu-btn-create:hover,
.menu-btn-join:hover,
.menu-btn-exit:hover,
.menu-btn-back:hover {
  transform: translateY(-2px);
  filter: brightness(1.05);
}

.menu-btn-create:active,
.menu-btn-join:active,
.menu-btn-exit:active,
.menu-btn-back:active {
  transform: translateY(0);
}

.menu-btn-create:focus-visible,
.menu-btn-join:focus-visible,
.menu-btn-exit:focus-visible,
.menu-btn-back:focus-visible {
  outline: 2px solid var(--menu-focus);
  outline-offset: 3px;
  border-radius: 10px;
}

/* ---- Tablet ---- */


/* ---- Phone portrait ---- */


/* ---- Phone landscape ---- */


/* ---- Very short landscape ---- */




/* ---- Desktop only tuning (1920x1080 target) ---- */

* { box-sizing: border-box; }

html {
  min-height: 100%;
  -webkit-text-size-adjust: 100%;
}

body {
  margin: 0;
  height: 100vh;
  height: 100dvh;
  overflow: hidden;
  font-family: 'Segoe UI', system-ui, sans-serif;
  color: #fff;
}

/* ---- เธเธทเนเธเธซเธฅเธฑเธ ---- */
.menu-bg {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  z-index: 0;
  overflow: hidden;
}

.menu-bg-img {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center;
}

/* ---- เธ•เธฑเธงเธฅเธฐเธเธฃ (เน€เธซเธกเธทเธญเธ Login) ---- */
.menu-char-layer {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  z-index: 1;
  pointer-events: none;
  display: flex;
  justify-content: center;
  align-items: center;
}

.menu-char-img {
  width: 100%;
  height: 100%;
  max-height: 72vh;
  object-fit: contain;
  object-position: center;
}

/* ---- Vignette fade เธชเธตเธ”เธณ ---- */
.menu-vignette {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  z-index: 2;
  pointer-events: none;
  background: radial-gradient(ellipse at center, transparent 0%, transparent 30%, rgba(0, 0, 0, 0.3) 50%, rgba(0, 0, 0, 0.6) 70%, rgba(0, 0, 0, 0.85) 85%, rgba(0, 0, 0, 0.95) 100%);
}

/* ---- เธเธฑเนเธ UI เธ—เธฑเนเธเธซเธกเธ” ---- */
.menu-ui {
  position: relative;
  z-index: 3;
  height: 100vh;
  height: 100dvh;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  padding: env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left);
  overflow: hidden;
}

/* ---- เธเธธเนเธกเธขเนเธญเธเธเธฅเธฑเธ เธกเธธเธกเธเนเธฒเธขเธเธ ---- */
.menu-btn-back {
  position: absolute;
  top: clamp(0.5rem, 2vw, 2rem);
  left: clamp(0.5rem, 2vw, 2rem);
  padding: 0;
  border: none;
  background: none;
  cursor: pointer;
  z-index: 10;
}

.menu-btn-back-img {
  display: block;
  width: clamp(64px, 6vw, 96px);
  height: auto;
  object-fit: contain;
}

/* ---- Logo เธเธฅเธฒเธเธเธ ---- */
.menu-logo {
  position: absolute;
  top: clamp(1rem, 6vh, 5rem);
  left: 50%;
  transform: translateX(-50%);
  z-index: 5;
  width: clamp(360px, 55vw, 1060px);
  max-width: 90%;
}

.menu-logo-img {
  display: block;
  width: 100%;
  height: auto;
  object-fit: contain;
}

/* ---- เธเธธเนเธกเธซเธฅเธฑเธ 3 เธเธธเนเธกเธเธฅเธฒเธ ---- */
.menu-buttons {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: flex-end;
  gap: 0;
  z-index: 5;
  margin-top: auto;
  margin-bottom: 0;
  background-color: unset;
  background: unset;
  width: 100%;
  padding: 0 clamp(1rem, 4vw, 2rem);
  padding-top: 0;
  padding-bottom: 100px;
}

.menu-btn-create,
.menu-btn-join,
.menu-btn-exit {
  padding: 0;
  border: none;
  background: none;
  cursor: pointer;
  width: clamp(380px, 34vw, 520px);
  max-width: 100%;
  transition: transform 0.15s, opacity 0.15s;
  display: flex;
  justify-content: center;
  align-items: center;
}

.menu-btn-exit {
  margin-top: clamp(0.5rem, 2vh, 2rem);
}

.menu-btn-create:hover,
.menu-btn-join:hover,
.menu-btn-exit:hover {
  transform: scale(1.05);
  opacity: 0.9;
}

.menu-btn-create:active,
.menu-btn-join:active,
.menu-btn-exit:active {
  transform: scale(0.98);
}

.menu-btn-create-img,
.menu-btn-join-img,
.menu-btn-exit-img {
  display: block;
  width: 100%;
  height: auto;
  object-fit: contain;
}

/* ==================================================
   Unified UI scale lock โ€” เน€เธเธเธฒเธฐเธเธญเนเธซเธเนเน€เธ—เนเธฒเธเธฑเนเธ
   (เธญเธญเธเนเธเธเธ•เธฒเธขเธ•เธฑเธงเธ—เธตเน 1920x1080 เนเธฅเนเธงเธขเนเธญเธ”เนเธงเธข --mm-scale)
   เธเธญเน€เธฅเนเธ/เนเธเธงเธเธญเธเธกเธทเธญเธ–เธทเธญ เธเธฐเนเธกเนเนเธเน scale lock เนเธ•เนเนเธเน
   media query reflow เธ”เนเธฒเธเธฅเนเธฒเธเนเธ—เธ
   ================================================== */
.menu-ui {
  --mm-scale: 1;
}

@media (min-width: 1025px) and (min-height: 621px) {
  .menu-btn-back {
    top: calc(20px * var(--mm-scale)) !important;
    left: calc(20px * var(--mm-scale)) !important;
  }

  .menu-btn-back-img {
    width: calc(96px * var(--mm-scale)) !important;
  }

  .menu-logo {
    top: calc(52px * var(--mm-scale)) !important;
    width: calc(1060px * var(--mm-scale)) !important;
    max-width: none !important;
  }

  .menu-buttons {
    margin-top: calc(320px * var(--mm-scale)) !important;
    padding-bottom: calc(100px * var(--mm-scale)) !important;
    gap: calc(14px * var(--mm-scale)) !important;
  }

  .menu-btn-create,
  .menu-btn-join,
  .menu-btn-exit {
    width: calc(520px * var(--mm-scale)) !important;
  }

  .menu-btn-exit {
    margin-top: calc(16px * var(--mm-scale)) !important;
  }
}

/* ==================================================
   RESPONSIVE REFLOW (เธเธญเน€เธฅเนเธ / เนเธเธงเธเธญเธเธกเธทเธญเธ–เธทเธญ)
   เธซเธฅเธฑเธเธเธฒเธฃ: เนเธฅเนเธเนเธญเธญเธเธเธฒเธ position:absolute เธกเธฒเธญเธขเธนเนเนเธ
   flex flow เธเธญเธ .menu-ui เธเธฃเธดเธ เน เธ—เธณเนเธซเนเนเธฅเนเธเนเธเธฑเธเธเธธเนเธก
   เนเธกเนเธกเธตเธ—เธฒเธเธ—เธฑเธเธเธฑเธ เนเธฅเธฐเนเธกเนเธฅเนเธเธเธญเนเธเนเธเธงเธเธญเธเน€เธ•เธตเนเธข
   ================================================== */

/* เธเธฑเธเน€เธฅเธทเนเธญเธเนเธเธงเธเธญเธ/เนเธเธงเธ•เธฑเนเธเธ—เธธเธเธเธฃเธ“เธต (เนเธเธงเน€เธ”เธตเธขเธงเธเธฑเธเธซเธเนเธฒ Create Room) */
html,
body {
  height: 100%;
  overflow: hidden;
  overflow-x: hidden;
}

body {
  min-height: 100dvh;
  max-height: 100dvh;
}

/* เน€เธเนเธฒเธชเธฑเธกเธเธฑเธชเธเธธเนเธกเธขเนเธญเธเธเธฅเธฑเธ เธญเธขเนเธฒเธเธเนเธญเธข 44x44 */
.menu-btn-back {
  min-width: 44px;
  min-height: 44px;
  display: flex;
  align-items: center;
  justify-content: center;
}

/* เธญเธธเธเธเธฃเธ“เนเธชเธฑเธกเธเธฑเธช: เธ•เธฑเธ” hover transform เธ—เธดเนเธ เน€เธซเธฅเธทเธญ feedback เธ•เธญเธเธเธ” */
@media (hover: none) {
  .menu-btn-create:hover,
  .menu-btn-join:hover,
  .menu-btn-exit:hover,
  .menu-btn-back:hover {
    transform: none;
    filter: none;
    opacity: 1;
  }
}

/* --------------------------------------------------
   Portrait โ€” เธกเธทเธญเธ–เธทเธญ / เนเธ—เนเธเน€เธฅเนเธ•เนเธเธงเธ•เธฑเนเธ (<= 1024px)
   -------------------------------------------------- */
@media (max-width: 1024px) and (orientation: portrait) {
  body {
    overflow: hidden;
  }

  .menu-char-img {
    max-height: 68dvh;
  }

  .menu-ui {
    height: 100vh;
    height: 100dvh;
    justify-content: center;
    gap: clamp(10px, 2.4vh, 28px);
    padding:
      max(8px, env(safe-area-inset-top))
      max(12px, env(safe-area-inset-right))
      max(12px, env(safe-area-inset-bottom))
      max(12px, env(safe-area-inset-left));
    overflow: hidden;
  }

  /* เนเธฅเนเธเนเน€เธเนเธฒ flow เธเธฃเธดเธ เนเธกเนเธฅเธญเธขเธ—เธฑเธเธเธธเนเธก */
  .menu-logo {
    position: static;
    top: auto;
    left: auto;
    transform: none;
    margin: 0 auto;
    width: clamp(200px, 78vw, 480px);
    max-width: 100%;
  }

  .menu-buttons {
    margin-top: 0;
    margin-bottom: 0;
    padding: 0 clamp(0.5rem, 3vw, 1.25rem);
    padding-bottom: 0;
    justify-content: center;
    gap: clamp(8px, 1.6vh, 18px);
  }

  .menu-btn-create,
  .menu-btn-join,
  .menu-btn-exit {
    width: clamp(200px, 72vw, 380px);
    min-height: 44px;
  }

  .menu-btn-exit {
    margin-top: clamp(8px, 1.6vh, 18px);
  }

  .menu-btn-back {
    top: max(0.4rem, env(safe-area-inset-top));
    left: max(0.4rem, env(safe-area-inset-left));
  }

  .menu-btn-back-img {
    width: clamp(34px, 8vw, 52px);
  }
}

@media (max-width: 480px) and (orientation: portrait) {
  .menu-btn-back-img {
    width: clamp(30px, 9vw, 44px);
  }

  .menu-logo {
    width: clamp(190px, 82vw, 400px);
  }

  .menu-btn-create,
  .menu-btn-join,
  .menu-btn-exit {
    width: clamp(190px, 80vw, 340px);
  }
}

/* --------------------------------------------------
   Mobile Landscape โ€” layout เธซเธฅเธฑเธเนเธเธงเธเธญเธเธกเธทเธญเธ–เธทเธญ
   (<= 932px เธเธงเนเธฒเธ)
   เธซเธกเธฒเธขเน€เธซเธ•เธธ: เธเธเธฒเธ”เธ—เธตเนเธญเธดเธ vh เธเธฐเธเธฃเธฐเธเธฒเธจเธเนเธณเธ”เนเธงเธข dvh เธ•เนเธญเธ—เนเธฒเธข
   เน€เธเธฃเธฒเธงเนเน€เธเธญเธฃเนเน€เธเนเธฒเธ—เธตเนเนเธกเนเธฃเธนเนเธเธฑเธ dvh เธเธฐเธเนเธฒเธกเธเธฃเธฃเธ—เธฑเธ”เธซเธฅเธฑเธเนเธฅเธฐเนเธเน vh เนเธ—เธ
   -------------------------------------------------- */
/* ==============================================================================
   LANDSCAPE — ระบบต่อเนื่อง (แทนบันได 5 ชั้นเดิม)  [2026-08-04]
   ------------------------------------------------------------------------------
   ของเดิม: 932px → 620px → 400px → 360px → (933-1024px) รวม 5 บล็อก แต่ละบล็อก
   เขียน clamp() ของตัวเองที่พื้น/เพดานไม่ตรงกัน ⇒ จอที่คร่อมเส้นเห็นขนาดกระโดด
   วัดจริงก่อนแก้ (กวาด 560→960px ที่อัตราส่วน 2.17):
     ปุ่มเมนู   45,47,50,53,56,59, [68], 71, [80], 83, 87 px  ← กระโดด 2 จุด
                17%…18.3%…19.7% ของจอ
     ปุ่ม back  44,44,44,44,44,44,45,45, [55], 55, 55 px
                17.1% → 11.5% → 13.4% ของจอ  (แกว่ง 49%)
   จุดกระโดดตรงกับเส้น max-height:360px และ max-height:400px เป๊ะ

   ของใหม่: บล็อกเดียว ทุกขนาดเป็นฟังก์ชัน monotone ของแกนสั้น (dvh)
     · clamp()/min() ที่ซ้อนกันยังคง monotone ⇒ จอโตขึ้นค่าไม่มีวันลด และไม่มีขั้น
     · พื้นของทุก clamp คำนวณจาก "เป้าสัมผัส 44px" ย้อนกลับด้วยสัดส่วนภาพจริง
         btn-create-room 454x154 · btn-join 453x153 · btn-exit-game 454x155
         สัดส่วนสูงสุด 453/153 = 2.961 ⇒ กว้าง 131px จึงได้สูง 44.2px (ผ่านทุกปุ่ม)
         btn-back 112x139 ⇒ กว้าง 36px ได้สูง 44.7px
     · เงื่อนไข media = ส่วนเติมเต็มของบล็อกเดสก์ท็อป (min-width:1025 และ min-height:621)
       พอดี ⇒ เดสก์ท็อปยังใช้ scale-lock เดิมไม่ถูกแตะ
   ============================================================================== */
@media (orientation: landscape) and (max-width: 1024px),
       (orientation: landscape) and (max-height: 620px) {
  body {
    overflow: hidden;
  }

  /* ยึดพื้นหลังเต็ม visual viewport ของมือถือแนวนอน ป้องกันแถบว่างด้านข้าง */
  .menu-bg {
    width: 100vw;
    width: 100dvw;
    min-width: 100%;
    height: 100vh;
    height: 100dvh;
    height: 100svh;
  }

  .menu-bg-img {
    width: 100%;
    min-width: 100%;
    height: 100%;
    min-height: 100%;
    object-fit: cover;
    transform: scale(1.06);
    transform-origin: center center;
  }

  .menu-char-img {
    max-height: 100dvh;
  }

  .menu-ui {
    height: 100vh;
    height: 100dvh;
    min-height: 0;
    max-height: 100dvh;
    justify-content: center;
    gap: var(--jd-gap);
    padding: var(--jd-safe-t) var(--jd-safe-r) var(--jd-safe-b) var(--jd-safe-l);
    overflow: hidden;
  }

  .menu-btn-back {
    position: absolute;
    top: var(--jd-safe-t);
    left: var(--jd-safe-l);
    min-width: var(--jd-tap);
    min-height: var(--jd-tap);
  }

  /* 36px * 139/112 = 44.7px สูง — พื้นเป้าสัมผัสยังมาจาก min-height ของปุ่มอีกชั้น */
  .menu-btn-back-img {
    width: clamp(36px, 11dvh, 56px);
  }

  .menu-logo {
    position: static;
    top: auto;
    left: auto;
    transform: none;
    margin: 0 auto;
    /* min(...,36vw) กันโลโก้ล้นด้านกว้างบนจอเตี้ยแต่แคบ — min ของสองฟังก์ชันเพิ่ม ยังเพิ่ม */
    width: min(clamp(132px, 46dvh, 340px), 36vw);
    max-width: 92%;
  }

  .menu-buttons {
    margin-top: 0;
    margin-bottom: 0;
    padding: 0 var(--jd-edge);
    padding-bottom: 0;
    justify-content: center;
    gap: var(--jd-gap-xs);
  }

  /* 131px / 2.961 = 44.2px สูง = พื้นเป้าสัมผัสพอดีที่จอเตี้ยสุด (568x320) */
  .menu-btn-create,
  .menu-btn-join,
  .menu-btn-exit {
    width: min(clamp(131px, 41dvh, 300px), 34vw);
    min-height: var(--jd-tap);
  }

  .menu-btn-exit {
    margin-top: var(--jd-gap-xs);
  }
}

/* ===== [2026-08-10] popup ยืนยันออกจากเกม — ใช้ภาพชุดใหม่ (popup-delete/btn-exit-game/btn-delete-cancel)
   [2026-08-10 รอบ 2] เดิมลองยัดภาพเข้า SweetAlert2 (jdConfirm) ด้วย customClass ผลออกมาไม่สวย —
   ปุ่ม/พื้นหลังเด้งกลับไปใช้สไตล์เดิมของ jd-swal.css เป็นระยะเพราะ jd-swal.css โหลดทีหลัง
   Main-Menu/style.css ใน <head> พอ specificity เท่ากัน (1 class ต่อฝั่ง) กฎที่โหลดทีหลังชนะแม้มี
   !important ทั้งคู่ ต้องไล่ปะ compound selector ทีละจุดไม่จบสักที — เจ้าของงานเห็นแล้วบอก "ยังไม่สวย"
   จึงเปลี่ยนแนวทาง: อ้างอิงฟีเจอร์ popup ลบห้อง (room-lobby close-room-overlay) ที่ทำแบบ hand-built
   div + <img> ตรง ๆ ไม่ผ่าน SweetAlert2 เลย — คุมเลย์เอาต์ได้เต็มที่ ไม่มีของเดิมมาชนกลางทาง
   (พิสูจน์แล้วว่า popup-delete.png กับ btn-delete-cancel.png เป็นไฟล์เดียวกันกับที่ room-lobby ใช้
   เป๊ะ — inset 15/8/9/8% ที่ room-lobby วัดไว้แล้วใช้ได้เลย ไม่ต้องวัดพิกเซลใหม่)
   ปุ่ม "ยกเลิก"/"ออกจากเกม" อยู่แถวเดียวกัน (flex-direction: row) + ขยายใหญ่กว่า del-room เดิม
   ตามที่สั่ง · หัวข้อ/ข้อความเป็นตัวอักษรจริง (ไม่มีภาพ delete-txt.png ของฝั่งนี้) ขนาดใหญ่ขึ้น
   ไม่มีไอคอนเตือน (!) ตามที่สั่งไว้ตั้งแต่รอบแรก (ไม่ใช้ SweetAlert2 เลยไม่มีไอคอนมาให้ต้องซ่อนด้วยซ้ำ) */
.menu-exit-overlay {
  position: fixed;
  inset: 0;
  z-index: 10080;
  display: flex;
  align-items: center;
  justify-content: center;
  padding:
    max(12px, env(safe-area-inset-top))
    max(12px, env(safe-area-inset-right))
    max(12px, env(safe-area-inset-bottom))
    max(12px, env(safe-area-inset-left));
}
.menu-exit-overlay.is-hidden { display: none !important; }
.menu-exit-backdrop {
  position: absolute;
  inset: 0;
  /* [2026-08-10] เดิมก็อปค่าจาก room-lobby close-room-backdrop (0.72 + blur 4px) ตรง ๆ แต่หน้านี้
     ปุ่ม "ออกจากเกม" จริงของเมนูอยู่ตรงกลางจอพอดีใต้กล่อง blur เท่านั้นไม่พอจะกลบตัวอักษรหนา ๆ ทะลุ
     ขึ้นมาซ้อนกับข้อความในป็อปอัป (อ่านสับสน) → ทึบขึ้น + เบลอมากขึ้นเฉพาะหน้านี้ */
  background: rgba(0, 0, 0, 0.88);
  backdrop-filter: blur(9px);
  -webkit-backdrop-filter: blur(9px);
}
.menu-exit-dialog {
  position: relative;
  z-index: 1;
  box-sizing: border-box;
  width: min(760px, calc(100vw - 40px), calc((100dvh - 40px) * (889 / 473)));
  aspect-ratio: 889 / 473;
  max-height: calc(100dvh - 40px);
  background: url('IMAGE/popup-delete.png') center / 100% 100% no-repeat;
}
/* กล่องเนื้อหาต้อง absolute ใน dialog (แบบเดียวกับ room-lobby close-room-body) — ถ้าใช้ padding %
   ที่ตัว dialog เปอร์เซ็นต์จะอิงความกว้างของ overlay (containing block) ไม่ใช่ของ popup เอง = เพี้ยน
   ตามขนาดจอ */
.menu-exit-body {
  position: absolute;
  top: 15%;
  right: 8%;
  bottom: 9%;
  left: 8%;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: clamp(10px, 4.5%, 24px);
  min-height: 0;
  text-align: center;
}
.menu-exit-title {
  /* [2026-08-10] ต้องเป็นฟอนต์ "ไม่มีหัว" — ตัดตัวเลือกสำรอง 'Kanit'/'Sarabun' ออก ("มีหัว" ทั้งคู่)
     ไม่งั้นถ้าเครื่องไหนมีฟอนต์ชื่อนี้ติดตั้งไว้จริง จะแซง NotoSansThai ทันทีโดยไม่ตั้งใจ */
  font-family: 'NotoSansThai', sans-serif;
  font-weight: 800;
  font-size: clamp(1.5rem, 4vw, 2.3rem);
  color: #7feeff;
  text-shadow: 0 0 16px rgba(34, 211, 238, 0.55);
  line-height: 1.15;
  margin: 0;
}
.menu-exit-text {
  /* [2026-08-10] เดิม inherit ตั้งใจจะรับต่อจาก .menu-exit-title แต่ inherit สืบทอดจาก parent DOM
     (.menu-exit-body) ไม่ใช่ sibling — .menu-exit-body ไม่ได้ตั้ง font-family เอง เลยไหลต่อไปถึง
     body {font-family:"Segoe UI"...} ที่ "มีหัว" ต้องระบุ NotoSansThai ตรง ๆ ที่นี่ด้วย */
  font-family: 'NotoSansThai', sans-serif;
  font-weight: 600;
  font-size: clamp(1.05rem, 2.3vw, 1.5rem);
  color: #e6f7ff;
  line-height: 1.35;
  margin: 0;
}
.menu-exit-actions {
  flex: 0 0 auto;
  display: flex;
  flex-direction: row;
  align-items: center;
  justify-content: center;
  flex-wrap: nowrap;
  gap: 6%;
  width: 100%;
  margin-top: clamp(4px, 1%, 10px);
}
.menu-exit-btn {
  flex: 0 1 auto;
  width: clamp(190px, 44%, 320px);
  max-width: 46%;
  padding: 0;
  border: none;
  border-radius: 0;
  background: transparent;
  box-shadow: none;
  cursor: pointer;
  -webkit-tap-highlight-color: transparent;
  transition: transform 0.12s ease, filter 0.12s ease;
}
.menu-exit-btn img {
  width: 100%;
  height: auto;
  object-fit: contain;
  display: block;
}
.menu-exit-btn:hover { transform: scale(1.04); filter: brightness(1.08); }
.menu-exit-btn:active { transform: scale(0.97); }
.menu-exit-btn:focus-visible {
  outline: 2px solid #7feeff;
  outline-offset: 3px;
}
/* จอแคบ (มือถือแนวตั้ง) — ปุ่มคู่ต้องอยู่บรรทัดเดียวกันโดยไม่ล้น และยังสูง ≥44px (แนวเดียวกับ
   room-lobby close-room-overlay ที่ breakpoint เดียวกัน) */
@media (max-width: 560px) {
  .menu-exit-body {
    top: 14%;
    right: 6%;
    bottom: 8%;
    left: 6%;
    gap: clamp(8px, 3.5%, 18px);
  }
  .menu-exit-actions { gap: 4%; }
  .menu-exit-btn { width: clamp(150px, 47%, 320px); }
  .menu-exit-title { font-size: clamp(1.25rem, 6.5vw, 1.9rem); }
  .menu-exit-text { font-size: clamp(0.95rem, 4.4vw, 1.2rem); }
}
