/* ══════════════════════════════════════════════════════════════════════
   Condo platform — public page styles.
   ค่าทั้งหมดยกมาจากแบบที่อนุมัติ (Pleno mockup) 1:1 แต่เปลี่ยนสีเป็น token
   ทำให้สลับธีมได้โดยหน้าตาโครงสร้างเหมือนเดิมทุกจุด
   ══════════════════════════════════════════════════════════════════════ */
:root{
  --primary:#8f2c26; --primary-dark:#71201b; --accent:#e8b23c;
  --bg:#faf7f2; --bg-2:#f3ede3; --surface:#fff; --surface-2:#f1eeeb;
  --ink:#2b241e; --muted:#6f665e; --muted-2:#8a8078;
  --line:#e7dfd3; --field:#ddd2c2; --pill:#f0e9de;
  --tint:#f7e7e5; --tint-ink:#8a7370; --tint-strong:#b4635c;
  --promo-bg:#8b2a24; --promo-dark:#7a231d;
  --line-btn:#37a63f; --line-btn-dark:#2f8f36;
  --maxw:480px;
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;background:var(--bg-2);color:var(--ink);
  font-family:"IBM Plex Sans Thai",system-ui,-apple-system,sans-serif;-webkit-font-smoothing:antialiased}
img{max-width:100%;display:block}
a{color:var(--primary);text-decoration:none}
a:hover{color:var(--primary-dark)}
h1,h2,h3{font-family:"Noto Serif Thai",serif;margin:0}
.serif{font-family:"Noto Serif Thai",serif}
/* ข้อความสำหรับโปรแกรมอ่านหน้าจอ/AI agent เท่านั้น — ยังอยู่ใน a11y tree แต่ตาไม่เห็น
   (ห้ามใช้ display:none หรือ visibility:hidden จะหายจาก a11y tree ไปด้วย) */
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;
  clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;border:0}
summary::-webkit-details-marker{display:none}
summary{list-style:none;cursor:pointer}
.scr{scrollbar-width:none}.scr::-webkit-scrollbar{display:none}
input,select,button,textarea{font-family:inherit}
@keyframes mq{from{transform:translateX(0)}to{transform:translateX(-50%)}}

.page{max-width:var(--maxw);margin:0 auto;background:var(--bg);position:relative;
  overflow-x:hidden;box-shadow:0 0 60px -22px rgba(0,0,0,.22)}

/* placeholder ภาพ (ตอนยังไม่ใส่รูปจริง) */
.slot{background:repeating-linear-gradient(125deg,#ded5c6 0 10px,#e8e0d2 10px 20px)}
.ph{display:flex;align-items:center;justify-content:center;text-align:center;
  font:500 10px/1.7 ui-monospace,Menlo,monospace;letter-spacing:.1em;text-transform:uppercase;color:#9b8f7e}

/* ── HERO ─────────────────────────────────────────────────────────── */
.hero{position:relative;height:580px;display:flex;flex-direction:column;align-items:center;
  justify-content:flex-end;padding:0 22px 40px;text-align:center;color:#fff}
.hero .bg{position:absolute;inset:0;background-size:cover;background-position:center;
  background-color:#6f6156;background-image:repeating-linear-gradient(122deg,#6f6156 0 11px,#7a6b5e 11px 22px)}
.hero .scrim{position:absolute;inset:0;
  background:linear-gradient(to top,rgba(35,25,20,.9) 0%,rgba(35,25,20,.35) 48%,rgba(35,25,20,.12) 100%)}
.hero .in{position:relative;display:flex;flex-direction:column;align-items:center;gap:11px}
.hero .logo{font-family:"Noto Serif Thai",serif;font-weight:600;font-size:44px;line-height:1}
/* เป็น <h1> แล้ว (เพื่อ AI agent/เสิร์ช) — ทับกฎ h1 ที่บังคับ serif ไว้ ให้หน้าตาเหมือนเดิมเป๊ะ */
.hero .t{font-family:inherit;font-size:17px;font-weight:600}
.hero .s{font-size:13px;line-height:1.6;color:rgba(255,255,255,.82)}
.hero .link-u{font-size:13px;color:#fff;text-decoration:underline;text-underline-offset:4px}

/* ── ปุ่ม ─────────────────────────────────────────────────────────── */
.btn-line{display:inline-flex;align-items:center;justify-content:center;height:44px;padding:0 24px;
  border:none;border-radius:22px;background:var(--line-btn);color:#fff;font-size:14px;font-weight:600;cursor:pointer}
.btn-line:hover{background:var(--line-btn-dark);color:#fff}
.btn{display:inline-flex;align-items:center;justify-content:center;height:52px;padding:0 22px;border:none;
  border-radius:14px;background:var(--primary);color:#fff;font-size:15px;font-weight:600;cursor:pointer}
.btn:hover{background:var(--primary-dark);color:#fff}
.btn.w{width:100%}
.btn.ghost{background:var(--surface);border:1px solid var(--field);color:var(--ink)}
.btn.ghost:hover{background:var(--bg-2);color:var(--ink)}
.btn.txt{background:none;color:var(--muted-2);height:38px;font-size:13px;font-weight:400}
.btn.txt:hover{background:none;color:var(--ink)}

/* ── SECTION NAV (sticky) ─────────────────────────────────────────── */
.nav{position:sticky;top:0;z-index:30;display:flex;gap:4px;padding:11px 16px;overflow-x:auto;
  background:rgba(250,247,242,.94);backdrop-filter:blur(12px);border-bottom:1px solid var(--line)}
.nav a{flex:none;font-size:12.5px;font-weight:600;color:var(--ink);padding:7px 12px;border-radius:999px;background:var(--pill)}
.nav a:hover{filter:brightness(.95);color:var(--ink)}

/* ── BREADCRUMB ───────────────────────────────────────────────────── */
/* เป็น <nav><ol><li> แล้ว (เพื่อ AI agent) — จัดวางเหมือนเดิมทุกประการ */
.crumb{padding:9px 16px;background:var(--bg-2);
  border-bottom:1px solid var(--line);font-size:10.5px;color:var(--muted-2);white-space:nowrap;overflow:hidden}
.crumb ol{display:flex;align-items:center;gap:6px;margin:0;padding:0;list-style:none}
.crumb li{display:flex;align-items:center;gap:6px}
.crumb b{color:var(--ink);font-weight:600}

section{scroll-margin-top:52px}
.h2{font-family:"Noto Serif Thai",serif;font-weight:600;font-size:25px;color:var(--ink);text-align:center;margin:0 0 20px}

/* ── REGISTER ─────────────────────────────────────────────────────── */
.register{padding:32px 20px 34px;background:var(--primary);color:#fff}
.register .h2{color:#fff;font-size:24px;margin-bottom:24px}
.steps{display:flex;flex-direction:column;gap:12px;margin-bottom:22px}
.step-row{display:flex;align-items:center;gap:13px}
.step-n{flex:none;width:42px;height:42px;border-radius:50%;border:1px solid rgba(255,255,255,.45);
  display:flex;align-items:center;justify-content:center;font-family:"Noto Serif Thai",serif;font-weight:600;font-size:16px}
.step-n.on{background:#fff;color:var(--primary);border:none;font-weight:700}
.step-tx{font-size:13px;line-height:1.5}
.step-tx span{color:rgba(255,255,255,.65)}
.fcard{padding:22px 20px 20px;border-radius:18px;background:var(--bg);color:var(--ink);
  box-shadow:0 20px 40px -24px rgba(40,10,8,.6)}
.social{display:flex;flex-direction:column;gap:9px;margin-bottom:16px}
.social .btn-line{height:46px;border-radius:12px;width:100%}
.social .pair{display:flex;gap:9px}
.social .pair button{flex:1;height:44px;border:1px solid var(--field);border-radius:12px;background:#fff;
  font-size:13px;font-weight:600;color:var(--ink);cursor:pointer}
.social .pair button:hover{background:var(--bg-2)}
.or{display:flex;align-items:center;gap:10px}
.or i{flex:1;height:1px;background:var(--line)}
.or span{font-size:11px;color:var(--muted-2)}
.fstep{display:flex;flex-direction:column;gap:12px}
.flabel{display:flex;flex-direction:column;gap:6px}
.flabel>span{font-size:12px;color:var(--muted)}
.inp{height:48px;width:100%;padding:0 14px;border:1px solid var(--field);border-radius:12px;
  background:#fff;font-size:14px;color:var(--ink)}
.ftitle{font-size:13px;font-weight:700;color:var(--primary)}
.gtitle{font-size:12px;font-weight:600;color:var(--muted)}
.chips{display:flex;gap:7px;flex-wrap:wrap}
.chip{padding:11px 14px;border:1px solid var(--field);border-radius:999px;background:var(--bg);
  color:var(--muted);font-size:12.5px;font-weight:600;cursor:pointer}
.chip.sq{flex:1;padding:13px 4px;border-radius:12px;text-align:center}
.chip.on{background:var(--primary);color:#fff}
.consent{padding:13px 14px;border-radius:12px;background:var(--bg-2);font-size:11px;line-height:1.6;color:var(--muted)}
.done{display:flex;flex-direction:column;align-items:center;gap:10px;padding:12px 0 4px;text-align:center}
.done .tick{width:52px;height:52px;border-radius:50%;background:var(--primary);color:#fff;
  display:flex;align-items:center;justify-content:center;font-size:24px}
.done .t{font-family:"Noto Serif Thai",serif;font-weight:600;font-size:19px}
.done .s{font-size:13px;line-height:1.65;color:var(--muted)}

/* ── ฟอร์มลงทะเบียน (แบบใหม่ หน้าเดียว) ───────────────────────────── */
.rform{padding:22px 20px 24px;border-radius:18px;background:var(--surface);color:var(--ink);
  box-shadow:0 20px 40px -26px rgba(40,25,20,.45)}
.rf-head{display:flex;align-items:center;gap:12px;margin-bottom:20px}
.rf-ico{flex:none;width:42px;height:42px;border-radius:12px;background:var(--surface-2);color:var(--primary);
  display:flex;align-items:center;justify-content:center}
.rf-ico .fi{width:22px;height:22px}
.rf-title{font-family:"Noto Serif Thai",serif;font-weight:600;font-size:20px;color:var(--ink)}
.rf-field{margin-bottom:14px}
.rf-field>label{display:block;font-size:12.5px;font-weight:700;color:var(--ink);margin-bottom:6px}
.rf-field>label i{color:#d33;font-style:normal}
.rf-opt{font-weight:400;color:var(--muted-2)}
.rf-input{position:relative;display:flex;align-items:center}
.rf-input .fi{position:absolute;left:12px;width:18px;height:18px;color:var(--muted-2);pointer-events:none}
.rf-input input{width:100%;height:50px;padding:0 14px 0 38px;border:1px solid transparent;border-radius:11px;
  background:var(--surface-2);font-size:14px;color:var(--ink)}
.rf-input input::placeholder{color:var(--muted-2)}
.rf-input input:focus{outline:none;border-color:var(--primary);background:#fff}
.rf-2col{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.rf-chips{display:flex;flex-wrap:wrap;gap:8px}
.rf-chip{padding:10px 14px;border:1px solid var(--line);border-radius:9px;background:var(--surface);
  font-size:12.5px;font-weight:600;color:var(--ink);cursor:pointer}
.rf-chip:hover{background:var(--bg-2)}
.rf-chip.on{background:var(--primary);border-color:var(--primary);color:#fff}
.rf-consent{display:flex;align-items:flex-start;gap:10px;padding:13px 14px;border-radius:11px;
  background:var(--surface-2);font-size:11.5px;line-height:1.65;color:var(--muted);cursor:pointer;margin-top:4px}
.rf-consent input{flex:none;width:17px;height:17px;margin-top:1px;accent-color:var(--primary)}
.rf-consent a{font-weight:700;text-decoration:underline}
.rf-err{margin:5px 0 0;font-size:11.5px;color:#d33;display:none}
.rf-err.show{display:block}
.rf-field.bad .rf-input input{border-color:#d33;background:#fff5f5}
.rf-submit{display:flex;align-items:center;justify-content:center;gap:10px;width:100%;height:54px;margin-top:16px;
  border:none;border-radius:13px;background:linear-gradient(135deg,var(--primary),var(--primary-dark));
  color:#fff;font-size:16px;font-weight:700;cursor:pointer;box-shadow:0 12px 26px -14px rgba(0,0,0,.5)}
.rf-submit:hover{filter:brightness(1.06)}
.rf-submit:disabled{opacity:.6;cursor:not-allowed}
.rf-submit .ar{font-size:17px}
/* [hidden] ต้องชนะเสมอ — ไม่งั้น display: ใน class จะทับจนซ่อนไม่ติด */
[hidden]{display:none !important}
.rf-done{display:flex;flex-direction:column;align-items:center;gap:9px;padding:22px 0 6px;text-align:center}
.rf-done .tick{width:54px;height:54px;border-radius:50%;background:var(--primary);color:#fff;
  display:flex;align-items:center;justify-content:center;font-size:25px}
.rf-done .t{font-family:"Noto Serif Thai",serif;font-weight:600;font-size:19px}
.rf-done .s{font-size:13px;line-height:1.65;color:var(--muted)}
/* คงเบอร์+อีเมลไว้แถวเดียวกันบนมือถือทั่วไป (375px) จะแตกบรรทัดเฉพาะจอเล็กมาก */
@media(max-width:329px){.rf-2col{grid-template-columns:1fr}}

/* ── PROMO ────────────────────────────────────────────────────────── */
.promo{background:var(--promo-bg);color:#fff}
.mq{position:relative;height:78px;background:var(--promo-dark);overflow:hidden}
.mq .track{position:absolute;left:-6%;right:-6%;top:22px;padding:7px 0;background:#f7f1e6;
  transform:rotate(-2deg);overflow:hidden;white-space:nowrap}
.mq .run{display:flex;gap:16px;width:max-content;animation:mq 20s linear infinite;
  font:800 14px/1.2 "IBM Plex Sans Thai",sans-serif;letter-spacing:.05em;color:#141210}
.mq .run i{color:var(--primary);font-style:normal}
.promo-deco{position:relative;padding:26px 20px 30px;
  background-image:radial-gradient(circle at 10px 10px,rgba(255,255,255,.05) 4px,transparent 5px);background-size:36px 36px}
.promo-deco .d{position:absolute}
.d-bag{left:14px;top:6px;width:48px;height:48px;border-radius:50%;background:var(--accent);
  display:flex;align-items:center;justify-content:center;font-size:22px;box-shadow:0 8px 18px -8px rgba(20,5,4,.55)}
.d-p1{right:16px;top:12px;padding:7px 12px;border-radius:5px;background:#fff;color:var(--ink);
  font-size:14px;font-weight:800;transform:rotate(20deg);box-shadow:0 10px 20px -12px rgba(20,5,4,.6)}
.d-p2{left:8px;bottom:120px;padding:9px 16px;border-radius:5px;background:#fff;color:var(--ink);
  font-size:18px;font-weight:800;transform:rotate(-24deg);box-shadow:0 12px 22px -12px rgba(20,5,4,.6)}
.d-p3{right:10px;bottom:150px;width:36px;height:36px;border-radius:50%;background:var(--accent);
  color:var(--promo-dark);display:flex;align-items:center;justify-content:center;font-size:17px;font-weight:800}
.d-s1{left:26px;top:130px;font-size:16px;opacity:.9}
.d-s2{right:24px;bottom:80px;font-size:13px;opacity:.8}
.promo-card{position:relative;padding:26px 22px 22px;border-radius:22px;background:#fff;color:var(--ink);
  text-align:center;box-shadow:0 26px 50px -26px rgba(30,8,6,.7)}
/* เป็น <h2> แล้ว — ทับกฎ h2 ที่บังคับ serif ไว้ ให้หน้าตาเหมือนเดิมเป๊ะ */
.promo-card .pt{font-family:inherit;font-size:15px;font-weight:700;color:#1f5b55;margin-bottom:18px}
.promo-body{display:flex;flex-direction:column;gap:18px;font-size:13.5px;line-height:1.85}
.promo-hr{height:1px;margin:22px 0 14px;background:var(--line)}
.terms-btn{display:flex;align-items:center;gap:6px;margin:0 auto 14px;border:none;background:none;
  font-size:13px;color:var(--muted);cursor:pointer}
.terms-btn:hover{color:var(--primary)}
.promo-cta{display:flex;align-items:center;justify-content:center;height:50px;border-radius:25px;
  background:var(--primary);color:#fff;font-size:15px;font-weight:600}
.promo-cta:hover{background:var(--primary-dark);color:#fff}
.promo-more{padding:22px 20px 28px;background:var(--promo-dark)}
.promo-more .t{font-size:15px;font-weight:700;margin-bottom:12px}
.promo-kv{height:180px;border-radius:14px;overflow:hidden;cursor:pointer;
  background:repeating-linear-gradient(135deg,rgba(255,255,255,.12) 0 10px,rgba(255,255,255,.2) 10px 20px)}
.promo-kv .ph{height:100%;color:rgba(255,255,255,.75)}
/* การ์ดที่กดได้แต่ไม่ใช่ <button> จริง ต้องเห็นขอบโฟกัสตอนไล่ด้วย Tab */
[data-sheet][role="button"]:focus-visible{outline:3px solid var(--primary);outline-offset:3px}

/* ── PROJECT INFO ─────────────────────────────────────────────────── */
.wrap{padding:32px 20px;background:var(--bg)}
.wrap-facil{padding:30px 20px 34px}
/* ตัวเลขใหญ่ทุกกล่องในหมวด "ข้อมูลโครงการ" ใช้ขนาดเดียวกันหมด
   (ราคาเริ่มต้น · พื้นที่โครงการ · จำนวนแปลง · ที่จอดรถ · ประเภทบ้าน · พื้นที่ใช้สอย)
   คุมจากตัวแปรเดียวจึงเท่ากันเสมอทุกขนาดจอ ไม่มีทางหลุดเป็นคนละขนาดอีก
   เพดานล่าง 18px คือขนาดที่คำไทยยาวสุด ("บ้านเดี่ยว") ยังไม่ล้นกล่องบนจอ 320px */
#info{--num:clamp(18px,5.5vw,30px)}
.info-2{display:grid;grid-template-columns:1fr 1fr;gap:12px;padding:20px;border-radius:20px;background:var(--tint)}
/* โครงการที่มีราคาเดียว: ถ้าปล่อยเป็น 2 ช่องตายตัว ข้อความจะไปกองอยู่ครึ่งซ้าย
   เหลือครึ่งขวาว่างเปล่า — ให้กินเต็มกล่องไปเลยจะได้อยู่กลางจริง */
.info-2 > div:only-child{grid-column:1 / -1}
.info-2 .k{font-size:12px;color:var(--tint-ink)}
.info-2 .v{font-family:"Noto Serif Thai",serif;font-weight:700;font-size:var(--num);line-height:1.25;
  color:var(--primary)}
/* เดิมกล่องนี้มีภาพผังโครงการวางทับมุมขวา — เอาออกแล้ว เหลือแค่ตัวเลขล้วน
   จึงไม่ต้องมีความสูงขั้นต่ำเผื่อภาพอีก ปล่อยให้สูงตามเนื้อหาแล้วจัดกลาง */
.info-wide{padding:20px;border-radius:20px;background:var(--tint);text-align:center}
.info-wide .k{font-size:12px;color:var(--tint-ink);margin-bottom:6px}
.info-wide .v{font-family:"Noto Serif Thai",serif;font-weight:700;font-size:var(--num);line-height:1.25;
  color:var(--ink)}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.stat{display:flex;flex-direction:column;justify-content:center;gap:6px;min-height:132px;padding:18px;
  border-radius:20px;background:var(--surface-2)}
.stat .k{font-size:12px;color:var(--muted-2)}
.stat .v{font-family:"Noto Serif Thai",serif;font-weight:700;font-size:var(--num);line-height:1.25;color:var(--ink)}
/* .sm ถูกใส่ให้ค่าที่ยาวเกิน 12 ตัวอักษร — เดิมย่อฟอนต์ลงจนดูไม่เป็นชุดเดียวกัน
   ตอนนี้ทุกตัวเลขใช้ --num เท่ากันหมด ค่าที่ยาวแค่ตกบรรทัดแทนการย่อ */
.stat .v.sm{font-family:"Noto Serif Thai",serif;font-size:var(--num);line-height:1.25}
.stat.pri{background:var(--tint-strong);color:#fff}
.stat.pri .k{color:rgba(255,255,255,.85)}.stat.pri .v{color:#fff}
.stat.tint{background:var(--tint)}.stat.tint .k{color:var(--tint-ink)}
.bro{display:flex;flex-direction:column;align-items:center;gap:12px;padding-top:8px}
.bro-card{position:relative;width:190px;border-radius:18px;overflow:hidden;background:var(--primary);
  cursor:pointer;box-shadow:0 14px 28px -18px rgba(60,15,12,.6)}
.bro-card .hd{padding:14px 12px 12px;text-align:center;color:#fff}
.bro-card .hd .n{font-family:"Noto Serif Thai",serif;font-weight:600;font-size:19px;line-height:1}
.bro-card .hd .s{font-size:10.5px;opacity:.85;margin-top:2px}
.bro-card .img{height:210px}
.bro-card .pill{position:absolute;left:50%;bottom:80px;transform:translateX(-50%);padding:9px 22px;
  border-radius:999px;background:rgba(255,255,255,.9);color:var(--ink);font-size:12.5px;font-weight:600;white-space:nowrap}
.bro-btns{display:flex;gap:10px}
.bro-btns button,.bro-btns a{display:flex;align-items:center;justify-content:center;
  width:44px;height:44px;border:1px solid var(--line);border-radius:14px;background:#fff;
  color:var(--muted);cursor:pointer;text-decoration:none;
  box-shadow:0 1px 2px rgba(60,45,30,.06)}
.bro-btns .ico{color:currentColor}
/* hover = โทนแบรนด์เต็มใบ ให้รู้ว่ากดได้ ไม่ใช่แค่หรี่สีลงเฉย ๆ */
.bro-btns button:hover,.bro-btns a:hover{background:var(--primary);border-color:var(--primary);
  color:#fff;box-shadow:0 8px 16px -8px rgba(60,15,12,.55)}
.bro-btns button:focus-visible,.bro-btns a:focus-visible{outline:2px solid var(--primary);outline-offset:2px}
a.bro-card{color:inherit;text-decoration:none;display:block}

/* ── LOCATION ─────────────────────────────────────────────────────── */
.loc{padding:32px 0 30px;background:var(--bg-2);border-top:1px solid var(--line)}
.loc .head{padding:0 20px;text-align:center}
.eyebrow{font:600 10.5px/1 ui-monospace,Menlo,monospace;letter-spacing:.16em;text-transform:uppercase;
  color:var(--muted-2);margin-bottom:8px}
.loc .addr{margin:0 0 14px;font-size:12.5px;line-height:1.7;color:var(--muted)}
.map-tabs{display:flex;gap:8px;justify-content:center;margin-bottom:14px}
.map-tabs button{flex:1;height:40px;border:1px solid var(--field);border-radius:11px;background:var(--bg);
  color:var(--muted);font-size:12.5px;font-weight:600;cursor:pointer}
.map-tabs button.on{background:var(--primary);color:#fff;border-color:var(--primary)}
.map{position:relative;height:250px;background:repeating-linear-gradient(45deg,#e2dac9 0 10px,#eae3d5 10px 20px)}
.map iframe{border:0;width:100%;height:100%;display:block}
.map .pin{position:absolute;left:50%;top:50%;transform:translate(-50%,-100%);
  display:flex;flex-direction:column;align-items:center;gap:5px}
.map .pin .lbl{padding:7px 13px;border-radius:999px;background:var(--primary);color:#fff;font-size:11.5px;
  font-weight:700;white-space:nowrap;box-shadow:0 8px 18px -8px rgba(90,20,15,.7)}
.map .pin .stem{width:1px;height:14px;background:var(--primary)}
.map .pin .dot{width:10px;height:10px;border-radius:50%;background:var(--primary);border:2px solid #fff}
.map .open{position:absolute;right:14px;top:14px;height:38px;padding:0 15px;border:none;border-radius:10px;
  background:var(--primary);color:#fff;font-size:12px;font-weight:600;cursor:pointer}
.loc-list{display:flex;flex-direction:column;gap:12px;padding:16px 20px 0}
.loc-card{border-radius:20px;overflow:hidden;background:var(--primary);color:#fff}
.loc-card .hd{display:flex;align-items:center;gap:14px;padding:16px 18px;background:rgba(255,255,255,.09)}
.loc-card .badge{flex:none;width:52px;height:52px;border-radius:50%;background:#fff;color:var(--primary);
  display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:800;text-align:center;line-height:1.1}
.loc-card .d{font-family:"Noto Serif Thai",serif;font-weight:700;font-size:20px;line-height:1.2}
.loc-card .n{font-size:12.5px;color:rgba(255,255,255,.75)}
.loc-card .bd{padding:14px 18px 16px}
.loc-card .bt{display:flex;align-items:center;justify-content:space-between;font-size:14px;font-weight:700;margin-bottom:10px}
.loc-card .rows{display:flex;flex-direction:column;gap:9px;font-size:12.5px}
.loc-card .row{display:flex;justify-content:space-between;gap:10px}
.loc-card .row span{color:rgba(255,255,255,.85)}
.loc-card .row b{flex:none}

/* ── FACILITIES ───────────────────────────────────────────────────── */
.fac{padding:12px;border-radius:22px;background:var(--surface-2)}
.fac .media{position:relative;height:250px;border-radius:16px;overflow:hidden}
.fac .media img{width:100%;height:100%;object-fit:cover}
.fac .lead{display:flex;align-items:flex-start;gap:12px;padding:14px 12px 12px}
.fac .icon{flex:none;width:56px;height:56px;border-radius:14px;background:var(--primary);color:#fff;
  display:flex;align-items:center;justify-content:center;font:600 9px/1.3 ui-monospace,Menlo,monospace;text-align:center}
.fac .lead .t{font-size:13px;font-weight:700;letter-spacing:.02em;color:var(--ink)}
.fac .lead .b{font-size:12px;line-height:1.6;color:var(--muted);margin-top:3px}
.fac .picks{display:flex;flex-direction:column;gap:8px}
.fac .pick{display:flex;align-items:center;gap:12px;padding:10px;border:none;border-radius:14px;
  background:var(--bg);text-align:left;cursor:pointer}
.fac .pick i{flex:none;width:44px;height:44px;border-radius:11px;background:#fff;color:var(--primary);
  display:flex;align-items:center;justify-content:center;font:600 8px/1.2 ui-monospace,Menlo,monospace;font-style:normal}
.fac .pick span{font-size:12.5px;font-weight:700;letter-spacing:.02em;color:var(--muted)}
.fac .pick.on{background:var(--primary)}
.fac .pick.on span{color:#fff}

/* ── PLANS ────────────────────────────────────────────────────────── */
.plans{padding:30px 20px 34px;background:var(--bg-2)}
.usel{width:100%;height:50px;padding:0 14px;margin-bottom:14px;border:1px solid var(--field);
  border-radius:14px;background:#fff;font-size:14.5px;font-weight:600;color:var(--ink)}
/* บนมือถือปล่อยให้ความสูงเดินตามสัดส่วนรูปจริง — เดิมล็อกไว้ 230px แล้วใช้
   object-fit:contain รูป 4:3 เลยถูกย่อจนเหลือแถบว่างสองข้าง ไม่เต็มความกว้าง
   (max-height กันไว้เผื่อรูปแนวตั้งจัด ๆ ที่จะสูงจนกินทั้งหน้าจอ) */
.plan-img{position:relative;border-radius:18px;overflow:hidden}
.plan-img img{display:block;width:100%;height:auto;max-height:80vh;object-fit:contain;background:var(--surface)}
.plan-img .ph{min-height:230px}
.plan-img .zoom,.map-pane .zoom,.fac .media .zoom{position:absolute;right:12px;top:12px;width:38px;height:38px;
  border:none;border-radius:50%;background:rgba(255,255,255,.92);font-size:15px;color:var(--ink);cursor:pointer;z-index:2}
.map-pane .zoom,.fac .media .zoom{box-shadow:0 2px 10px -4px rgba(0,0,0,.5)}
.plan-img .zoom:focus-visible,.map-pane .zoom:focus-visible,.fac .media .zoom:focus-visible{
  outline:3px solid var(--primary);outline-offset:2px}
.plan-card{margin-top:-14px;padding:20px;border-radius:18px;background:#fff;position:relative;
  box-shadow:0 14px 30px -22px rgba(60,45,30,.5)}
.plan-card .ft{font-size:12.5px;font-weight:700;letter-spacing:.06em;color:var(--ink)}
.plan-card .sub{font-size:12.5px;color:var(--muted-2);margin-bottom:16px}
.spec{display:grid;grid-template-columns:1fr 1fr;gap:16px 12px;margin-bottom:16px}
.spec .n{font-size:16px;font-weight:700;color:var(--ink)}
.spec .u{font-size:11.5px;color:var(--muted-2)}
.price-row{display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin-top:16px;
  padding-top:14px;border-top:1px solid var(--line)}
.price-row .k{font-size:12.5px;color:var(--muted-2)}
.price-row .v{font-family:"Noto Serif Thai",serif;font-weight:700;font-size:20px;color:var(--primary)}
.plan-card .cta{display:flex;align-items:center;justify-content:center;height:48px;margin-top:12px;
  border-radius:13px;background:var(--primary);color:#fff;font-size:14px;font-weight:600}
.plan-card .cta:hover{background:var(--primary-dark);color:#fff}
/* จำนวนรูปต่อแบบห้องไม่ตายตัว — น้อยก็ยืดเต็มแถว มากก็เลื่อนแนวนอนแทนที่จะบีบจนจิ๋ว
   ซ่อนแถบเลื่อนไว้ (รูปที่ถูกตัดครึ่งบอกอยู่แล้วว่าปัดต่อได้) และต้องระบุ
   overflow-y ให้ชัด — ถ้าสั่งแค่ overflow-x เบราว์เซอร์จะเปลี่ยนแกน y เป็น auto
   ให้เอง แล้วโผล่แถบเลื่อนแนวตั้งมาอีกอันตอนรูปขยายตอน hover */
.thumbs{display:flex;gap:9px;margin-top:14px;overflow-x:auto;overflow-y:hidden;
  scrollbar-width:none;-ms-overflow-style:none}
.thumbs::-webkit-scrollbar{display:none}
.thumbs[hidden]{display:none}
.thumbs button{flex:1 0 96px;padding:0;border:2px solid var(--line);border-radius:14px;background:#fff;
  overflow:hidden;cursor:pointer}
.thumbs button.on{border-color:var(--primary)}
.thumbs .im{position:relative;display:flex;align-items:center;justify-content:center;height:66px;
  background:repeating-linear-gradient(125deg,#ded5c6 0 8px,#e8e0d2 8px 16px);
  font:500 8px/1.4 ui-monospace,Menlo,monospace;text-transform:uppercase;color:#9b8f7e}
.thumbs .im img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.thumbs .bdg{position:absolute;left:0;top:0;display:none;padding:4px 9px;border-radius:0 0 10px 0;
  background:var(--primary);color:#fff;font-family:"IBM Plex Sans Thai",sans-serif;font-size:10px;font-weight:600;z-index:2}
.thumbs button.on .bdg{display:block}
.thumbs .cap{display:block;padding:8px 4px;font-size:11.5px;font-weight:700;color:var(--ink)}

/* ── FAQ ──────────────────────────────────────────────────────────── */
.faq{padding:32px 20px 34px;background:var(--bg)}
.faq .h2{text-align:left;font-size:24px;margin-bottom:16px}
.faq details{padding:15px 16px;border:1px solid var(--line);border-radius:14px;background:#fff;margin-bottom:9px}
.faq summary{display:flex;justify-content:space-between;gap:12px;font-size:13.5px;font-weight:600;color:var(--ink)}
.faq summary i{color:var(--primary);font-style:normal}
.faq .a{padding-top:11px;font-size:12.5px;line-height:1.75;color:var(--muted)}

/* ── FOOTER ───────────────────────────────────────────────────────── */
.foot{padding:30px 20px 165px;background:var(--bg-2);border-top:1px solid var(--line);color:var(--ink)}
.foot .rows{display:flex;flex-direction:column;gap:14px}
.foot .t{font-size:13px;font-weight:700;color:var(--ink)}
.foot .addr{font-size:12px;line-height:1.8;color:var(--muted)}
.foot .tel{display:flex;align-items:center;gap:10px}
.foot .tel b{font-family:"Noto Serif Thai",serif;font-weight:700;font-size:22px;color:var(--primary)}
.foot .tel span{font-size:11.5px;color:var(--muted-2)}
.foot .btn-line{align-self:flex-start;height:42px;border-radius:11px;padding:0 20px;font-size:13px}
.foot .legal{display:flex;flex-wrap:wrap;gap:14px;padding-top:16px;border-top:1px solid var(--line);font-size:11.5px}
.foot .legal a{color:var(--muted-2)}
.foot .dis{font-size:10px;line-height:1.7;color:var(--muted-2);opacity:.85}

/* ── TOPBAR ลอยด้านบน (ซ่อนเมื่อ scroll ลง / โผล่เมื่อ scroll ขึ้น) ── */
.topbar{position:fixed;top:10px;left:50%;z-index:65;width:calc(100% - 20px);max-width:calc(var(--maxw) - 20px);
  display:flex;align-items:center;gap:8px;padding:7px 8px 7px 12px;border-radius:999px;background:#fff;
  box-shadow:0 12px 30px -12px rgba(30,20,15,.45),0 2px 6px -2px rgba(30,20,15,.15);
  transform:translateX(-50%);transition:transform .28s ease,opacity .22s ease}
.topbar.hide{transform:translateX(-50%) translateY(-160%);opacity:0;pointer-events:none}
.tb-menu{flex:none;width:34px;height:34px;border:none;background:none;display:flex;flex-direction:column;
  justify-content:center;gap:4px;padding:0 6px;cursor:pointer}
.tb-menu span{display:block;height:2px;border-radius:2px;background:var(--ink)}
.tb-menu span:nth-child(2){width:80%}
.tb-label{flex:1;min-width:0;font-size:14px;font-weight:600;color:var(--ink);white-space:nowrap;
  overflow:hidden;text-overflow:ellipsis}
.tb-actions{display:flex;align-items:center;gap:6px;flex:none}
.topbar .tb-line{display:inline-flex;align-items:center;gap:5px;height:34px;padding:0 13px;border-radius:999px;
  background:var(--line-btn);color:#fff;font-size:12.5px;font-weight:600;white-space:nowrap}
.topbar .tb-line:hover{background:var(--line-btn-dark);color:#fff}
.topbar .tb-line .ic{font-size:12px;line-height:1}
.topbar .tb-reg{display:inline-flex;align-items:center;height:34px;padding:0 14px;border-radius:999px;
  background:var(--primary);color:#fff;font-size:12.5px;font-weight:600;white-space:nowrap}
.topbar .tb-reg:hover{background:var(--primary-dark);color:#fff}
.tb-toggle{flex:none;width:30px;height:30px;border:none;border-radius:50%;background:none;color:var(--muted);
  display:flex;align-items:center;justify-content:center;cursor:pointer;transition:transform .25s ease}
.tb-toggle:hover{background:var(--bg-2)}
.topbar.open .tb-toggle{transform:rotate(180deg)}

/* แผงเมนูลัดในหน้า (กางจากปุ่ม ⌄) */
.topbar{flex-direction:column;align-items:stretch;padding:0;overflow:hidden;border-radius:999px}
.tb-row{display:flex;align-items:center;gap:8px;padding:7px 8px 7px 12px}
.tb-panel{display:none;flex-direction:column;padding:4px 6px 10px;border-top:1px solid var(--line)}
.topbar.open{border-radius:22px}
.topbar.open .tb-panel{display:flex}
.tb-panel a{padding:9px 14px;border-radius:10px;font-size:14px;font-weight:600;color:var(--ink)}
.tb-panel a:hover{background:var(--bg-2);color:var(--ink)}
.tb-panel a.on{color:var(--primary)}

/* ── DRAWER เมนูเต็มจอ (ปุ่ม ☰) ────────────────────────────────────── */
/* เมนู ☰ ต้องอยู่ในกรอบเดียวกับ .page ไม่ใช่กินเต็มจอบนเดสก์ท็อป */
.drawer{position:fixed;inset:0;z-index:90;background:rgba(28,22,18,.38);display:none;overflow-y:auto}
.drawer.open{display:block}
.dw-inner{max-width:var(--maxw);min-height:100%;margin:0 auto;background:#fff;
  box-shadow:0 0 60px -22px rgba(0,0,0,.45);padding:18px 24px 40px;display:flex;flex-direction:column}
.dw-close{align-self:flex-start;display:flex;align-items:center;gap:10px;margin-bottom:26px;padding:6px 0;
  border:none;background:none;font-size:14px;font-weight:600;color:var(--ink);cursor:pointer}
.dw-close .x{font-size:18px;font-weight:400}
.dw-main{display:flex;flex-direction:column;gap:18px;margin-bottom:28px}
.dw-main a{font-size:19px;font-weight:700;color:var(--ink)}
.dw-main a:hover{color:var(--primary)}
.dw-sub{display:flex;flex-direction:column;gap:13px;margin-bottom:28px}
.dw-sub a{font-size:13px;color:var(--muted)}
.dw-sub a:hover{color:var(--primary)}
.dw-brand{display:flex;align-items:center;gap:9px;margin-bottom:20px}
.dw-brand img{height:26px;width:auto}
.dw-brand .mark{display:inline-flex;align-items:center;justify-content:center;min-width:28px;height:26px;padding:0 6px;
  border-radius:4px;background:var(--primary);color:#fff;font-size:13px;font-weight:800}
.dw-brand .bt{font-size:13.5px;font-weight:700;color:var(--ink)}
.dw-tel{align-self:flex-start;display:inline-flex;align-items:center;gap:8px;padding:10px 20px;border-radius:999px;
  border:1px solid var(--line);background:#fff;font-size:15px;font-weight:700;color:var(--ink)}
.dw-tel .ic{color:var(--primary)}
.dw-tel:hover{background:var(--bg-2);color:var(--ink)}
body.no-scroll{overflow:hidden}

/* ── QUICKBAR ปุ่มด่วนด้านล่าง ─────────────────────────────────────── */
/* แถบปุ่มด่วน — "แถวเดียว" ทุกจอตั้งแต่ 320px ขึ้นไป
   ขนาดทุกชิ้นผูกกับ vw ผ่าน clamp() จึงหด-พองตามจอเองโดยไม่ต้องมี breakpoint
   (ค่ากลางคือค่าที่ยืดหยุ่น ค่าแรก/ค่าท้ายคือเพดานล่าง-บนกันเล็กหรือใหญ่เกินไป) */
.quickbar{--qb-size:clamp(32px,calc(24px + 2.4vw),44px);
  --qb-pad:clamp(9px,calc(0.5px + 2.65vw),22px);
  --qb-font:clamp(11.5px,calc(10.3px + 0.4vw),14px);
  --qb-gap:clamp(4px,calc(0.8px + 1.05vw),10px);
  position:fixed;left:50%;transform:translateX(-50%);bottom:0;z-index:55;width:100%;max-width:var(--maxw);
  padding:10px clamp(8px,2.6vw,14px) 14px;background:linear-gradient(to top,var(--bg) 62%,rgba(250,247,242,0));
  border-top:1px solid var(--line);
  display:flex;align-items:center;justify-content:center;gap:var(--qb-gap)}
.quickbar .qrow{display:flex;align-items:center;gap:var(--qb-gap);flex:none;min-width:0}
.quickbar .qb{flex:none;width:var(--qb-size);height:var(--qb-size);border:1px solid var(--line);border-radius:50%;
  background:#fff;display:flex;align-items:center;justify-content:center;font-size:18px;cursor:pointer;line-height:1}
.quickbar .qb:hover{background:var(--bg-2)}
.quickbar .qb.line{background:var(--line-btn);border-color:var(--line-btn)}
.quickbar .qb.calc{background:var(--primary);border-color:var(--primary)}
.quickbar .qreg{flex:none;display:flex;align-items:center;justify-content:center;
  height:var(--qb-size);padding:0 var(--qb-pad);border-radius:999px;white-space:nowrap;
  background:var(--primary);color:#fff;font-size:var(--qb-font);font-weight:600}
.quickbar .qreg:hover{background:var(--primary-dark);color:#fff}
.quickbar .qask{flex:none;display:flex;align-items:center;justify-content:center;gap:calc(var(--qb-gap) * .7);
  height:var(--qb-size);padding:0 var(--qb-pad);border-radius:999px;white-space:nowrap;
  background:var(--primary-dark);color:#fff;font-size:var(--qb-font);font-weight:600}
.quickbar .qask:hover{filter:brightness(1.08);color:#fff}
.quickbar .qask .sp{font-size:calc(var(--qb-font) * .9)}

/* ── ปุ่มลอยด้านข้าง + แถบล่างแบบเดิม ─────────────────────────────── */
.fab{position:fixed;right:14px;bottom:96px;z-index:60;display:flex;flex-direction:column;gap:10px}
.fab a,.fab button{width:52px;height:52px;border-radius:50%;border:none;display:flex;align-items:center;
  justify-content:center;font-size:12px;font-weight:700;cursor:pointer;color:#fff;
  box-shadow:0 10px 24px -8px rgba(0,0,0,.4)}
.fab .f-line{background:var(--line-btn)}
.fab .f-reg{background:var(--primary)}
.fab .f-menu{background:var(--ink)}
.bottombar{position:fixed;left:50%;transform:translateX(-50%);bottom:0;width:100%;max-width:var(--maxw);
  z-index:55;display:flex;align-items:center;gap:9px;padding:12px 16px 22px;
  background:linear-gradient(to top,var(--bg) 55%,rgba(250,247,242,0));border-top:1px solid var(--line)}
.bottombar .pw{display:flex;flex-direction:column;gap:1px;min-width:0}
.bottombar .k{font-size:10px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted-2);
  font-family:ui-monospace,Menlo,monospace}
.bottombar .v{font-size:15px;font-weight:700;color:var(--ink);white-space:nowrap}
.bottombar .cta{flex:1;display:flex;align-items:center;justify-content:center;height:48px;border-radius:13px;
  background:var(--primary);color:#fff;font-size:14.5px;font-weight:600}
.bottombar .cta:hover{background:var(--primary-dark);color:#fff}
.bottombar .lb{flex:none;width:48px;height:48px;border:1px solid #cfe3cf;border-radius:13px;background:#eff7ef;
  display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:700;color:#2f6b3a;cursor:pointer}

/* ── AI ถาม-ตอบ ───────────────────────────────────────────────────── */
.aichat{position:fixed;inset:0;z-index:85;display:none;align-items:flex-end;justify-content:center;
  background:rgba(30,20,16,.55);backdrop-filter:blur(2px)}
.aichat.open{display:flex}
.ac-panel{width:100%;max-width:var(--maxw);max-height:86vh;display:flex;flex-direction:column;
  border-radius:22px 22px 0 0;background:var(--bg);overflow:hidden}
.ac-head{display:flex;align-items:center;gap:10px;padding:14px 16px;background:var(--primary);color:#fff}
.ac-head .ac-ico{width:30px;height:30px;border-radius:50%;background:rgba(255,255,255,.2);
  display:flex;align-items:center;justify-content:center;font-size:14px}
.ac-head .ac-t{flex:1;font-size:15px;font-weight:700}
.ac-x{width:30px;height:30px;border:none;border-radius:50%;background:rgba(255,255,255,.15);
  color:#fff;font-size:14px;cursor:pointer}
.ac-x:hover{background:rgba(255,255,255,.28)}
.ac-body{flex:1;overflow-y:auto;padding:16px;display:flex;flex-direction:column;gap:10px}
.ac-msg{max-width:88%;padding:11px 14px;border-radius:14px;font-size:13.5px;line-height:1.65;white-space:pre-wrap}
.ac-msg.bot{align-self:flex-start;background:var(--surface);color:var(--ink);border:1px solid var(--line)}
.ac-msg.me{align-self:flex-end;background:var(--primary);color:#fff}
.ac-msg.err{align-self:flex-start;background:#fdecea;color:#a5342c;border:1px solid #f3c9c4}
.ac-typing{align-self:flex-start;display:flex;gap:4px;padding:13px 15px;border-radius:14px;
  background:var(--surface);border:1px solid var(--line)}
.ac-typing i{width:6px;height:6px;border-radius:50%;background:var(--muted-2);animation:acb 1.2s infinite}
.ac-typing i:nth-child(2){animation-delay:.15s}.ac-typing i:nth-child(3){animation-delay:.3s}
@keyframes acb{0%,60%,100%{opacity:.25;transform:translateY(0)}30%{opacity:1;transform:translateY(-3px)}}
.ac-sugg{display:flex;flex-wrap:wrap;gap:7px;margin-top:2px}
.ac-sugg button{padding:8px 13px;border:1px solid var(--field);border-radius:999px;background:var(--surface);
  font-size:12.5px;font-weight:600;color:var(--primary);cursor:pointer}
.ac-sugg button:hover{background:var(--bg-2)}
.ac-foot{display:flex;gap:8px;padding:12px 14px;border-top:1px solid var(--line);background:var(--surface)}
.ac-input{flex:1;height:46px;padding:0 14px;border:1px solid var(--field);border-radius:23px;
  background:var(--bg);font-size:14px;color:var(--ink)}
.ac-input:focus{outline:none;border-color:var(--primary)}
.ac-send{flex:none;width:46px;height:46px;border:none;border-radius:50%;background:var(--primary);
  color:#fff;font-size:15px;cursor:pointer}
.ac-send:hover{background:var(--primary-dark)}
.ac-send:disabled{opacity:.5;cursor:not-allowed}
.ac-note{padding:0 16px 12px;background:var(--surface);font-size:10.5px;line-height:1.6;color:var(--muted-2)}

/* ── Bottom sheet + popup ─────────────────────────────────────────── */
.sheet{position:fixed;inset:0;z-index:70;display:none;align-items:flex-end;background:rgba(30,20,16,.55);
  backdrop-filter:blur(2px)}
.sheet.open{display:flex}
.sheet .inner{width:100%;max-width:var(--maxw);margin:0 auto;padding:22px 20px 26px;
  border-radius:24px 24px 0 0;background:var(--bg)}
.sheet .grab{width:36px;height:4px;margin:0 auto 16px;border-radius:2px;background:var(--field)}
.sheet .t{font-family:"Noto Serif Thai",serif;font-weight:600;font-size:20px;color:var(--ink);margin-bottom:6px}
.sheet .b{font-size:13px;line-height:1.7;color:var(--muted);margin-bottom:16px}
/* ลิงก์ในเงื่อนไขมักยาวกว่าความกว้างจอ — ต้องตัดบรรทัดได้ ไม่งั้นดันหน้าจนล้น */
.sheet .b a{color:var(--primary);text-decoration:underline;overflow-wrap:anywhere}
.sheet .m{min-height:130px;border-radius:14px;
  background:repeating-linear-gradient(135deg,#e2dac9 0 10px,#eae3d5 10px 20px)}
.sheet .m-img{display:block;width:100%;border-radius:14px}
.sheet .m-img.qr{max-width:200px;margin:0 auto;border-radius:12px}
#sheetMedia[hidden]{display:none}
.sheet .close{width:100%;height:50px;margin-top:16px;border:none;border-radius:14px;background:var(--ink);
  color:#fff;font-size:14.5px;font-weight:600;cursor:pointer}
.popup{position:fixed;inset:0;z-index:80;display:none;align-items:center;justify-content:center;padding:20px;
  background:rgba(20,14,10,.6)}
.popup.open{display:flex}
.popup .box{width:100%;max-width:380px;background:var(--surface);border-radius:20px;overflow:hidden;
  position:relative;box-shadow:0 30px 60px -20px rgba(0,0,0,.5)}
.popup .x{position:absolute;right:10px;top:10px;width:32px;height:32px;border:none;border-radius:50%;
  background:rgba(0,0,0,.35);color:#fff;font-size:16px;cursor:pointer;z-index:2}
/* รูปในป๊อปอัปต้องย่อให้พอดีกล่อง — ไม่มีบรรทัดนี้ รูปจะแสดงขนาดจริง
   แล้วโดน overflow:hidden ของ .box ตัดขอบทิ้ง (เห็นแค่มุมซ้ายบน) */
.popup .box img{display:block;width:100%;height:auto}
.popup .body{padding:22px}
.popup .body .t{font-family:"Noto Serif Thai",serif;font-weight:600;font-size:20px;margin-bottom:8px}
.popup .body .b{font-size:13px;line-height:1.7;color:var(--muted);margin-bottom:14px}

@media(min-width:520px){ .fab{right:calc(50% - var(--maxw)/2 + 14px)} }

/* ── การ์ดยืนยันหลังลงทะเบียน (popup) ──────────────────────────────── */
.rf-modal{position:fixed;inset:0;z-index:120;display:flex;align-items:center;justify-content:center;
  padding:24px;background:rgba(28,22,18,.55);backdrop-filter:blur(2px);animation:rfFade .18s ease}
.rf-modal[hidden]{display:none}
.rf-modal-card{width:100%;max-width:340px;background:#fff;border-radius:20px;padding:30px 26px 24px;
  text-align:center;box-shadow:0 30px 60px -22px rgba(0,0,0,.5);animation:rfPop .22s cubic-bezier(.2,.9,.3,1.3)}
.rf-modal-tick{width:60px;height:60px;margin:0 auto 16px;border-radius:50%;background:var(--primary,#8f2c26);
  color:#fff;display:flex;align-items:center;justify-content:center;font-size:30px;line-height:1}
.rf-modal-t{font-size:19px;font-weight:700;color:var(--ink,#241f1a);margin-bottom:7px}
.rf-modal-s{font-size:14px;line-height:1.65;color:var(--muted,#7c7268)}
.rf-modal-btn{margin-top:20px;width:100%;padding:12px;border:none;border-radius:11px;
  background:var(--primary,#8f2c26);color:#fff;font-family:inherit;font-size:15px;font-weight:600;cursor:pointer}
.rf-modal-btn:hover{filter:brightness(.92)}
@keyframes rfFade{from{opacity:0}to{opacity:1}}
@keyframes rfPop{from{opacity:0;transform:translateY(14px) scale(.96)}to{opacity:1;transform:none}}

/* ── ไอคอนโซเชียลท้ายเว็บ ─────────────────────────────────────────── */
.socials{display:flex;flex-wrap:wrap;justify-content:center;gap:10px;margin:4px 0 2px}
.socials .soc{display:flex;align-items:center;justify-content:center;width:38px;height:38px;
  border-radius:50%;background:var(--surface-2);color:var(--muted);transition:background .15s,color .15s}
.socials .soc:hover{background:var(--primary);color:#fff}
.socials .soc-line:hover{background:var(--line-btn)}
.socials .soc-facebook:hover{background:#1877f2}
.socials .soc-youtube:hover{background:#f00}
.socials .soc-instagram:hover{background:linear-gradient(45deg,#f09433,#dc2743,#bc1888)}
.socials .soc-tiktok:hover,.socials .soc-x:hover{background:#111}

/* ── ปุ่มสลับภาษา (ในแถบลอยบน) ────────────────────────────────────── */
.topbar .tb-lang{flex:none;display:inline-flex;align-items:center;justify-content:center;height:30px;
  padding:0 9px;border:1px solid var(--line);border-radius:999px;background:var(--surface);
  font-size:11.5px;font-weight:700;color:var(--muted);letter-spacing:.03em}
.topbar .tb-lang:hover{background:var(--bg-2);color:var(--ink)}
/* บนจอแคบ ป้ายหัวข้อยุบก่อน — ถ้าแคบมากซ่อนไปเลย ดีกว่าโชว์ตัวอักษรเดียว */
@media (max-width:400px){
  .topbar:has(.tb-lang) .tb-label{display:none}
}

/* ── สลับ Google Maps / Graphic Map ───────────────────────────────── */
.map-pane{position:absolute;inset:0;display:none}
.map-pane.on{display:block}
.map-pane img{width:100%;height:100%;object-fit:contain;background:var(--bg-2)}

/* ══════════════════════════════════════════════════════════════════════
   TABLET / DESKTOP
   หน้านี้ออกแบบมาสำหรับมือถือก่อน (mobile-first) — ส่วนล่างนี้ขยายเลย์เอาต์
   ตามความกว้างจริงของหน้าจอ ไม่มีปุ่มสลับ ไม่มี state ไม่มี URL แยก
   จึงเหลือ URL เดียวต่อโครงการ ดีต่อ SEO และการแชร์ลิงก์
   หมายเหตุ: --maxw (480px) ยังใช้กับ overlay ที่ควรแคบเสมอ
   (แผ่นเลื่อนล่างจอ / กล่องแชท / เมนู ☰) จึงไม่แตะค่านั้น
   ══════════════════════════════════════════════════════════════════════ */

/* ── TABLET ≥ 768px ─────────────────────────────────────────────────── */
@media (min-width:768px){
  .page{max-width:760px}
  .topbar{max-width:740px}
  .quickbar{max-width:740px}

  .hero{height:620px;padding-bottom:52px}
  .hero .logo{font-size:54px}
  .hero .t{font-size:20px}
  .hero .s{font-size:14.5px}

  .h2{font-size:28px}
  .nav{justify-content:center}
  .crumb{justify-content:center;font-size:11.5px}

  /* การ์ดที่เคยเรียงลงล่าง → เรียงข้างกัน */
  .loc-list{display:grid;grid-template-columns:1fr 1fr;align-items:start}
  .fac .picks{display:grid;grid-template-columns:1fr 1fr}
  .map{height:340px}
  .foot .rows{align-items:center;text-align:center}
  .foot .legal{justify-content:center}
}

/* ── DESKTOP ≥ 1024px ───────────────────────────────────────────────── */
@media (min-width:1024px){
  body{background:var(--bg)}
  /* เต็มความกว้างจอบนเดสก์ท็อป — จอ Full HD เป็นมาตรฐานแล้ว การบีบเป็นกรอบ
     กลางจอทำให้เหลือขอบว่างข้างละ ~300px โดยไม่ได้อะไรกลับมา
     (พื้นหลังของแต่ละ section จึงกินเต็มจอ ส่วนตัวอักษรยังถูกคุมความกว้างไว้
      ด้วย padding-inline ด้านล่าง เพราะบรรทัดยาวเกินไปอ่านยาก) */
  .page{max-width:none;box-shadow:none}
  .topbar{max-width:1160px}

  /* คอลัมน์เนื้อหากลางจอ: ใช้ padding ของ section เอง จึงไม่ต้องเพิ่ม
     wrapper ในทุกเทมเพลต และพื้นหลังยังเต็มความกว้างเหมือนเดิม */
  .page > section,
  .page > footer{padding-inline:max(28px, calc((100% - 1240px) / 2))}

  .hero{height:660px}
  .hero .logo{font-size:64px}
  .hero .t{font-size:22px}
  .hero .s{font-size:15px;line-height:1.75}

  .h2{font-size:32px;margin-bottom:26px}
  .faq .h2{font-size:30px}

  /* ฟอร์มลงทะเบียน: ไม่ปล่อยให้ยืดเต็มจอ อ่านยากและกรอกยาก */
  .register .fcard,.rform{max-width:660px;margin-inline:auto}
  .rf-2col{gap:14px}

  .promo-card{max-width:760px;margin-inline:auto}
  .promo-kv{max-width:760px;margin-inline:auto;height:280px}
  .promo-more .t{text-align:center}

  .info-2{padding:26px}
  .info-wide{padding:26px}
  .grid2{grid-template-columns:repeat(4,1fr)}
  .stat{min-height:150px}
  /* ขนาดตัวเลขไม่ต้องกำหนดซ้ำที่นี่แล้ว — คุมจาก --num ที่ #info ที่เดียว
     ทุกกล่องจึงเท่ากันเสมอ ไม่ว่าจะแก้ breakpoint ไหนในอนาคต */

  /* โบรชัวร์: การ์ดกับปุ่มวางแนวนอน ใช้พื้นที่กว้างให้เป็นประโยชน์ */
  .bro{align-items:center;justify-content:center;gap:26px}

  .loc-list{grid-template-columns:repeat(4,1fr);padding-inline:0}
  .loc .head{padding-inline:0}
  .map{height:420px}

  /* สิ่งอำนวยความสะดวก: ภาพซ้าย รายการขวา */
  .fac{display:grid;grid-template-columns:1.35fr 1fr;gap:16px;padding:16px;align-items:start}
  .fac .media{grid-row:1/3;height:100%;min-height:330px}
  .fac .lead{padding:4px 0 0}
  .fac .picks{gap:9px}

  /* แบบแปลน: ภาพซ้าย รายละเอียด+ชั้นขวา (จัดด้วย grid บน section เอง
     จึงไม่ต้องเพิ่ม wrapper ในเทมเพลต) */
  .plans{display:grid;grid-template-columns:1.15fr 1fr;gap:0 22px;align-items:start}
  .plans .h2,.plans .usel{grid-column:1/-1}
  .plans .usel{max-width:340px}
  /* จอกว้างมีคอลัมน์สูงคงที่อยู่แล้ว ให้รูปยืดเต็มคอลัมน์เหมือนเดิม */
  .plans .plan-img{grid-column:1;grid-row:3/5;height:100%;min-height:420px}
  .plans .plan-img img{height:100%;max-height:none}
  .plans .plan-card{grid-column:2;grid-row:3;margin-top:0}
  .plans .thumbs{grid-column:2;grid-row:4}

  /* FAQ สองคอลัมน์ — รายการยาวบนจอกว้างต้องเลื่อนน้อยลง */
  .faq{display:grid;grid-template-columns:1fr 1fr;gap:10px;align-items:start}
  .faq .h2{grid-column:1/-1}
  .faq details{margin-bottom:0}

  .foot{padding-bottom:150px}
  .foot .rows{max-width:620px;margin-inline:auto}

  /* บนเดสก์ท็อปแถบไม่ต้องกว้างเต็ม ให้ลอยกลางเป็นเม็ดยา
     ความกว้างไม่ล็อกตายตัว — หดพองตามจำนวนปุ่มที่เปิดใช้ในหลังบ้าน
     (การจัดเป็นแถวเดียวอยู่ในกฎหลักด้านบนแล้ว ใช้ร่วมกันทุกจอ) */
  .quickbar{width:auto;max-width:calc(100% - 40px);bottom:16px;
    padding:8px 10px;border-radius:999px;
    background:var(--bg);border:1px solid var(--line);
    box-shadow:0 18px 40px -18px rgba(0,0,0,.45)}

  /* กล่องแชท AI: จอกว้างวางมุมขวาล่าง ไม่บังเนื้อหา */
  .aichat{align-items:flex-end;justify-content:flex-end;padding:0 24px 24px}
  .ac-panel{max-width:420px;max-height:70vh;border-radius:20px}
}

/* ── จอกว้างมาก ─────────────────────────────────────────────────────── */
@media (min-width:1440px){
  .page{max-width:none}
  .topbar{max-width:1360px}
  .page > section,
  .page > footer{padding-inline:max(32px, calc((100% - 1440px) / 2))}
  .hero{height:720px}
}

/* ── Full HD ขึ้นไป ─────────────────────────────────────────────────── */
/* หยุดขยายที่ 1600px — กว้างกว่านี้บรรทัดจะยาวจนตาต้องกวาดไกลเกินไป
   (พื้นหลัง/รูป/แผนที่ยังเต็มจอเหมือนเดิม จำกัดเฉพาะคอลัมน์ตัวอักษร) */
@media (min-width:1920px){
  .topbar{max-width:1500px}
  .page > section,
  .page > footer{padding-inline:max(40px, calc((100% - 1440px) / 2))}
}

/* ── แก้กล่องที่ "แบน" เมื่อกว้างขึ้น ───────────────────────────────── */
/* กล่องพวกนี้ตั้งความสูงตายตัวไว้ พอความกว้างเพิ่มจาก 1140 → 1440
   สัดส่วนเลยแบนลงจนดูเหมือนแถบยาว ๆ ต้องเพิ่มความสูงตามให้สมดุล */
@media (min-width:1440px){
  .map{height:520px}                       /* 3.4:1 → 2.8:1 ดูเป็นแผนที่จริง */
  .fac .media{min-height:420px}            /* รูปสิ่งอำนวยฯ ไม่แบนเป็นแถบ */

  /* ข้อความสั้น ๆ ในกล่องกว้าง 1440px ถ้าชิดซ้ายไว้ ที่ว่างจะไปกองอยู่ทางขวา
     ดูเหมือนลืมจัดหน้า — จัดกลางแล้วช่องว่างกระจายสองข้างเท่ากัน ดูตั้งใจ */
  .info-2 > div{align-items:center;text-align:center}
}

/* ══════════════════════════════════════════════════════════════════════
   MICRO-INTERACTIONS (เมาส์ชี้)
   ครอบด้วย (hover:hover) เสมอ — บนมือถือ :hover จะ "ค้าง" หลังแตะ
   ══════════════════════════════════════════════════════════════════════ */
@media (hover:hover) and (pointer:fine){
  /* ทุกเอฟเฟกต์ใช้ transform / opacity เท่านั้น (GPU จัดการได้ ไม่คำนวณเลย์เอาต์ใหม่)
     และ "ไม่ขยับหนีเมาส์" — ใช้ scale แทน translate เพราะการเลื่อนขึ้นทำให้
     เคอร์เซอร์ที่อยู่ริมขอบหลุดออก แล้วสลับ hover เข้า-ออกรัวจนสั่น */

  /* ── การ์ด ─────────────────────────────────────────────────────── */
  .stat,.loc-card,.faq details,.bro-card,.info-2,.info-wide{
    transition:transform .22s ease-out, box-shadow .22s ease-out, border-color .22s ease-out;
  }
  .stat:hover,.loc-card:hover,.bro-card:hover,.info-2:hover,.info-wide:hover{
    transform:scale(1.015);
    box-shadow:0 10px 22px -14px rgba(30,20,15,.45);
  }
  .faq details:hover{border-color:var(--field)}
  .faq details[open]{border-color:var(--primary)}

  /* ── รูปภาพ (กรอบอยู่กับที่ ซูมเฉพาะรูปข้างใน) ─────────────────── */
  .fac .media img,.plan-img img,.promo-kv img,.bro-card .img img{
    transition:transform .35s ease-out;
  }
  .fac:hover .media img,.plan-img:hover img,.promo-kv:hover img,
  .bro-card:hover .img img{transform:scale(1.04)}

  /* ── ปุ่ม ──────────────────────────────────────────────────────── */
  .btn,.btn-line,.rf-submit,.promo-cta,.qreg,.qask,.tb-reg,.tb-line,
  .rf-modal-btn,.plan-card .cta{transition:transform .16s ease-out, box-shadow .16s ease-out}
  .btn:hover,.btn-line:hover,.rf-submit:hover,.promo-cta:hover,
  .qreg:hover,.qask:hover,.tb-reg:hover,.tb-line:hover,
  .rf-modal-btn:hover,.plan-card .cta:hover{
    transform:scale(1.02);
    box-shadow:0 8px 16px -10px rgba(0,0,0,.55);
  }
  .btn:active,.btn-line:active,.rf-submit:active,.promo-cta:active,
  .qreg:active,.qask:active,.rf-modal-btn:active,.plan-card .cta:active{
    transform:scale(.985);box-shadow:none;transition-duration:.08s;
  }

  /* แสงวิ่งผ่านปุ่มหลัก — เลื่อนด้วย transform ไม่ใช่ left (left คำนวณเลย์เอาต์ทุกเฟรม) */
  .rf-submit,.promo-cta{position:relative;overflow:hidden}
  .rf-submit::after,.promo-cta::after{
    content:'';position:absolute;top:0;left:0;width:45%;height:100%;pointer-events:none;
    background:linear-gradient(100deg,transparent,rgba(255,255,255,.3),transparent);
    transform:translateX(-160%) skewX(-18deg);
    transition:transform .5s ease-out;
  }
  .rf-submit:hover::after,.promo-cta:hover::after{transform:translateX(340%) skewX(-18deg)}

  /* ── ชิป / เม็ดยา / ปุ่มเล็ก ────────────────────────────────────── */
  .rf-chip,.chip,.nav a,.thumbs button,.bro-btns a,.bro-btns button,
  .quickbar .qb,.topbar .tb-lang,.map-tabs button{
    transition:transform .16s ease-out, background .16s ease-out,
               color .16s ease-out, border-color .16s ease-out;
  }
  .rf-chip:hover,.chip:hover,.nav a:hover,.topbar .tb-lang:hover,.map-tabs button:hover{transform:scale(1.04)}
  /* ไม่ใช้ scale กับรูปย่อ — แถบนี้ซ่อน overflow ไว้ ขยายแล้วขอบบน-ล่างจะโดนตัด */
  .thumbs button:hover{border-color:var(--primary)}
  .bro-btns a:hover,.bro-btns button:hover{transform:scale(1.12)}
  .quickbar .qb:hover{transform:scale(1.1)}

  /* ── ตัวเลือกสิ่งอำนวยความสะดวก ────────────────────────────────── */
  .fac .pick{transition:background .16s ease-out, transform .16s ease-out}
  .fac .pick:hover{background:var(--pill);transform:scale(1.01)}

  /* ── ไอคอนโซเชียล (ไม่ใส่ background ในลิสต์ transition
        เพราะบางอันเปลี่ยนเป็น gradient ซึ่งไล่สีต่อกันไม่ได้ จะกระตุก) ─ */
  .socials .soc{transition:transform .18s ease-out, color .18s ease-out}
  .socials .soc:hover{transform:scale(1.14)}

  /* ── ลิงก์ท้ายเว็บ: เส้นใต้วิ่งออกจากซ้าย ────────────────────── */
  .foot .legal a{position:relative}
  .foot .legal a::after{
    content:'';position:absolute;left:0;bottom:-3px;width:100%;height:1px;
    background:currentColor;transform:scaleX(0);transform-origin:left;
    transition:transform .2s ease-out;
  }
  .foot .legal a:hover::after{transform:scaleX(1)}

  /* ── เมนูเต็มจอ: บรรทัดห่างกันมาก เลื่อนได้ไม่สั่น ──────────────── */
  .dw-main a,.dw-sub a{display:inline-block;transition:transform .18s ease-out, color .18s ease-out}
  .dw-main a:hover,.dw-sub a:hover{transform:translateX(5px)}
}

/* เครื่องหมาย + ใน FAQ หมุนเป็น × ตอนกางคำตอบ (ทำงานทุกอุปกรณ์) */
.faq summary i{display:inline-block;transition:transform .25s cubic-bezier(.2,.7,.3,1)}
.faq details[open] summary i{transform:rotate(45deg)}

/* เคารพการตั้งค่า "ลดการเคลื่อนไหว" ของระบบปฏิบัติการ */
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{
    animation-duration:.01ms !important;animation-iteration-count:1 !important;
    transition-duration:.01ms !important;scroll-behavior:auto !important;
  }
}

/* ── กล่องดูรูปเต็ม (lightbox) ────────────────────────────────────── */
.lbox{position:fixed;inset:0;z-index:95;display:flex;align-items:center;justify-content:center;
  gap:8px;padding:56px 16px 24px;background:rgba(18,13,10,.92);animation:rfFade .18s ease}
.lbox[hidden]{display:none}
.lb-fig{margin:0;max-width:100%;max-height:100%;display:flex;flex-direction:column;
  align-items:center;gap:12px;animation:lbPop .24s cubic-bezier(.2,.9,.3,1.2)}
.lb-fig img{max-width:100%;max-height:calc(100vh - 140px);width:auto;height:auto;
  border-radius:12px;box-shadow:0 30px 70px -24px rgba(0,0,0,.8);background:#fff}
.lb-cap{font-size:13px;letter-spacing:.02em;color:rgba(255,255,255,.86);text-align:center}
.lb-cap[hidden]{display:none}
.lb-x{position:absolute;right:14px;top:14px;width:40px;height:40px;border:none;border-radius:50%;
  background:rgba(255,255,255,.14);color:#fff;font-size:16px;cursor:pointer}
.lb-nav{flex:none;width:44px;height:44px;border:none;border-radius:50%;
  background:rgba(255,255,255,.14);color:#fff;font-size:26px;line-height:1;cursor:pointer}
.lb-nav[hidden]{display:none}
.lb-x:hover,.lb-nav:hover{background:rgba(255,255,255,.28)}
@keyframes lbPop{from{opacity:0;transform:scale(.96)}to{opacity:1;transform:none}}

/* บอกให้รู้ว่ารูปคลิกดูเต็มได้ */
[data-zoom]{cursor:zoom-in}
@media (max-width:520px){
  .lbox{padding:52px 8px 16px;gap:2px}
  .lb-nav{width:36px;height:36px;font-size:22px}
}
body.lbox-open .topbar,body.lbox-open .quickbar,body.lbox-open .fab,body.lbox-open .bottombar{
  opacity:0;pointer-events:none}

/* ── ไอคอนจากชุดในระบบ ────────────────────────────────────────────── */
.ico{display:block;flex:none}
.fac .icon .ico,.fac .pick i .ico{display:block}
.loc-card .badge.has-ico{color:var(--primary)}
.plan-card .spec .sh{display:flex;align-items:center;gap:7px}
.plan-card .spec .sh .ico{color:var(--primary);opacity:.85}

/* ── โลโก้ LINE อย่างเป็นทางการ ────────────────────────────────────── */
.line-logo{flex:none;display:block}
/* บนปุ่มเขียว: ใช้แบบขาว ตัวอักษรเป็นสีปุ่มจึงกลืนเป็นชิ้นเดียว */
.btn-line .line-logo,.topbar .tb-line .line-logo,.quickbar .qb.line .line-logo,
.fab .f-line .line-logo{color:#fff}
.btn-line{gap:9px}
.topbar .tb-line{gap:6px}
/* ในแถวโซเชียล ใช้ไอคอนสีเต็มใบ จึงไม่ต้องมีพื้นวงกลมซ้อน */
.socials .soc-line{background:none}
.socials .soc-line:hover{background:none;filter:brightness(1.05)}

/* ── ไอคอนในปุ่มด่วน (แทนอีโมจิเดิม) ──────────────────────────────── */
.quickbar .qb{color:var(--ink)}
.quickbar .qb.calc,.quickbar .qb.line{color:#fff}
.quickbar .qb.map{color:var(--primary)}
.quickbar .qb .ico{margin:0 auto}

/* ── หน้ารวมโครงการ (หน้าแรก + หน้าแยกตามประเภท) ──────────────────── */
body.listing{background:var(--bg-2)}
.ls-top{display:flex;align-items:center;padding:14px 20px;background:#fff;border-bottom:1px solid var(--line)}
.ls-brand{display:flex;align-items:center;gap:8px;font-family:"Noto Serif Thai",serif;font-weight:700;
  font-size:17px;color:var(--ink);text-decoration:none}
.ls-brand img{height:32px;width:auto;object-fit:contain}
.ls-wrap{padding:26px 20px 40px;max-width:1080px;margin:0 auto}
.ls-h1{margin:0 0 6px;font-family:"Noto Serif Thai",serif;font-size:26px;line-height:1.25;color:var(--ink)}
.ls-lead{margin:0 0 18px;font-size:13.5px;line-height:1.7;color:var(--muted)}

/* แถบเลือกประเภท — เลื่อนแนวนอนบนมือถือ ไม่ตัดคำ */
.ls-tabs{display:flex;gap:8px;overflow-x:auto;padding-bottom:6px;margin-bottom:20px;
  -webkit-overflow-scrolling:touch;scrollbar-width:none}
.ls-tabs::-webkit-scrollbar{display:none}
.ls-tabs a{flex:none;display:inline-flex;align-items:center;gap:6px;padding:9px 15px;border-radius:999px;
  border:1px solid var(--line);background:#fff;font-size:13px;font-weight:600;color:var(--muted);text-decoration:none;
  white-space:nowrap}
.ls-tabs a.on{background:var(--primary);border-color:var(--primary);color:#fff}
.ls-tabs a i{font-style:normal;font-size:11px;opacity:.75}

.ls-grid{display:grid;grid-template-columns:1fr;gap:16px}
.ls-empty{padding:40px 20px;text-align:center;color:var(--muted);background:#fff;border-radius:16px}
.ls-empty .btn{margin-top:14px}
.ls-foot{display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;
  padding:18px 20px 30px;max-width:1080px;margin:0 auto;font-size:12px;color:var(--muted-2)}
.ls-foot a{color:var(--muted-2)}

/* ── การ์ดโครงการ ─────────────────────────────────────────────────── */
.pcard{display:block;background:#fff;border-radius:18px;overflow:hidden;text-decoration:none;color:var(--ink);
  box-shadow:0 14px 30px -24px rgba(60,45,30,.5)}
.pc-img{position:relative;height:190px}
.pc-img img{width:100%;height:100%;object-fit:cover;display:block}
.pc-tag{position:absolute;left:12px;top:12px;padding:5px 11px;border-radius:999px;
  background:rgba(255,255,255,.94);font-size:11.5px;font-weight:600;color:var(--ink)}
.pc-body{padding:14px 16px 16px}
.pc-name{font-family:"Noto Serif Thai",serif;font-weight:700;font-size:17px;line-height:1.3;color:var(--ink)}
.pc-loc{display:flex;align-items:center;gap:5px;margin-top:5px;font-size:12.5px;color:var(--muted)}
.pc-loc .ico{color:var(--primary);flex:none}
.pc-specs{margin-top:7px;font-size:12.5px;line-height:1.6;color:var(--muted-2)}
.pc-foot{display:flex;align-items:baseline;justify-content:space-between;gap:10px;margin-top:12px;
  padding-top:12px;border-top:1px solid var(--line)}
.pc-price{font-family:"Noto Serif Thai",serif;font-weight:700;font-size:17px;color:var(--primary)}
.pc-price.muted{font-size:14px;color:var(--muted-2)}
.pc-cta{font-size:12.5px;font-weight:600;color:var(--muted)}

@media (min-width:768px){
  .ls-wrap{padding:34px 28px 48px}
  .ls-h1{font-size:32px}
  .ls-grid{grid-template-columns:repeat(2,1fr);gap:20px}
  .pc-img{height:210px}
}
@media (min-width:1024px){
  .ls-wrap{max-width:1280px}
  .ls-grid{grid-template-columns:repeat(3,1fr)}
}
@media (min-width:1440px){
  .ls-wrap{max-width:1560px}
  .ls-grid{grid-template-columns:repeat(4,1fr)}
  .pc-img{height:230px}
}
@media (min-width:1920px){
  .ls-wrap{max-width:1760px}
}
@media (hover:hover) and (pointer:fine){
  /* ใช้ scale ไม่ใช่ translateY — การ์ดที่เลื่อนหนีเมาส์จะสลับ hover เข้า-ออกรัวจนสั่น */
  .pcard{transition:transform .16s ease-out, box-shadow .16s ease-out}
  .pcard:hover{transform:scale(1.015);box-shadow:0 20px 36px -24px rgba(60,45,30,.62)}
  .pcard:hover .pc-cta{color:var(--primary)}
  .ls-tabs a{transition:background .16s ease-out, color .16s ease-out, border-color .16s ease-out}
  .ls-tabs a:not(.on):hover{border-color:var(--primary);color:var(--primary)}
}

/* ── บล็อกวิดีโอ (YouTube + Shorts) ────────────────────────────────── */
/* มือถือ: เรียงลงทีละส่วน · เดสก์ท็อป: ซ้ายคลิปหลัก+ข้อความ / ขวา Shorts
   การ์ดข้อความยืดเองให้ก้นเสมอกับ Shorts ด้วย grid ไม่ต้องคำนวณความสูง */
.vgrid{display:grid;gap:16px;grid-template-areas:"main" "short" "note"}
.vmain{grid-area:main;display:flex;flex-direction:column;gap:10px;min-width:0}
.vshorts{grid-area:short;min-width:0}
.vnote{grid-area:note}

/* กรอบวิดีโอ — สัดส่วนคงที่ ไม่ต้องรอรูปโหลดจึงไม่มีหน้ากระตุก (CLS) */
.vstage{position:relative;border-radius:16px;overflow:hidden;background:#000}
.vplay{display:block;position:relative;width:100%;padding:0;border:none;
  background:#000;cursor:pointer;overflow:hidden;border-radius:16px}
.vplay.r16x9{aspect-ratio:16/9}
.vplay.r9x16{aspect-ratio:9/16}
.vplay img{width:100%;height:100%;object-fit:cover;display:block}
.vplay .vbtn{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);
  display:grid;place-items:center;pointer-events:none;
  filter:drop-shadow(0 4px 14px rgba(0,0,0,.45))}
.vplay:focus-visible{outline:3px solid var(--primary);outline-offset:3px}
/* iframe ที่ถูกสร้างตอนกด — ทับเต็มกรอบเดิมพอดี */
.vstage iframe,.vshort iframe{position:absolute;inset:0;width:100%;height:100%;border:0}
.vshort{position:relative;border-radius:16px;overflow:hidden;background:#000}
.vcap{display:block;margin-top:7px;font-size:12.5px;line-height:1.5;color:var(--muted)}

/* Shorts หลายคลิป → เลื่อนแนวนอนแบบ TikTok */
.vshorts.many{display:flex;gap:12px;overflow-x:auto;scroll-snap-type:x mandatory;
  -webkit-overflow-scrolling:touch;scrollbar-width:none;padding-bottom:4px}
.vshorts.many::-webkit-scrollbar{display:none}
.vshorts.many .vshort{flex:0 0 62%;scroll-snap-align:center}

/* ภาพย่อสลับคลิปหลัก — แพตเทิร์นเดียวกับบล็อกแบบแปลน */
/* จำกัดความกว้างภาพย่อไว้ ไม่งั้นถ้ามี 2 คลิป แต่ละใบจะยืดเป็น 326px
   สูง 184px กินที่จนการ์ดข้อความเหลือนิดเดียว */
.vthumbs{display:flex;gap:9px;overflow-x:auto;scrollbar-width:none;padding-bottom:2px}
.vthumbs::-webkit-scrollbar{display:none}
.vthumbs button{flex:0 0 118px;padding:0;border:2px solid var(--line);border-radius:11px;
  background:#000;overflow:hidden;cursor:pointer;aspect-ratio:16/9}
.vthumbs button.on{border-color:var(--primary)}
.vthumbs img{width:100%;height:100%;object-fit:cover;display:block}

.vnote{padding:20px;border-radius:18px;background:var(--tint);display:flex;
  flex-direction:column;justify-content:center;gap:8px}
.vnote h3{margin:0;font-family:"Noto Serif Thai",serif;font-weight:700;
  font-size:19px;color:var(--ink)}
.vnote p{margin:0;font-size:13.5px;line-height:1.85;color:var(--tint-ink)}

@media (min-width:1024px){
  /* ซ้าย 62% ขวา 38% ตามสัดส่วนที่ออกแบบไว้
     จำกัดกว้าง 1100px แม้บนจอ 1920 — ถ้าปล่อยเต็ม 1440 คลิป 16:9 จะสูงจน
     เหลือที่ให้การ์ดข้อความแค่ ~24px เขียนอะไรไม่ได้เลย */
  .video-wrap .vgrid{max-width:1100px;margin-inline:auto;gap:20px;
    grid-template-columns:1fr 38%;
    grid-template-areas:"main  short"
                        "note  short"}
  .video-wrap .vgrid.no-short{grid-template-columns:1fr;
    grid-template-areas:"main" "note"}

  /* ── มีแต่ Shorts ไม่มีคลิปแนวนอน ──────────────────────────────── */
  /* ถ้าใช้โครงเดิม คอลัมน์ซ้ายจะว่างเป็นรูโหว่ และ Shorts หลายคลิปจะต่อกันลงมา
     เป็นคอลัมน์สูงหลักพัน px — Shorts จึงต้องกลายเป็นตัวเอก เรียงเป็นแถวแทน */
  .video-wrap .vgrid.no-main{grid-template-columns:1fr;
    grid-template-areas:"short" "note"}
  .video-wrap .vgrid.no-main .vshorts{display:flex;flex-direction:row;flex-wrap:wrap;
    justify-content:center;gap:18px;overflow:visible}
  .video-wrap .vgrid.no-main .vshort{flex:0 0 296px}

  /* Shorts คลิปเดียว: วางการ์ดข้อความไว้ข้าง ๆ ไม่ให้เหลือที่ว่างโล่งข้างเดียว */
  .video-wrap .vgrid.no-main.s1{grid-template-columns:1fr 34%;
    grid-template-areas:"note short"}
  .video-wrap .vgrid.no-main.s1 .vshorts{display:block}
  .video-wrap .vgrid.no-main.s1 .vshort{flex:none}

  /* Shorts คลิปเดียวและไม่มีข้อความ → จัดกลาง ไม่ต้องแบ่งคอลัมน์ */
  .video-wrap .vgrid.no-main.s1.no-note{grid-template-columns:1fr;
    grid-template-areas:"short";justify-items:center}
  .video-wrap .vgrid.no-main.s1.no-note .vshort{width:360px}
  .vnote{padding:26px 28px}
  .vnote h3{font-size:21px}
  .vnote p{font-size:14px}
  /* Shorts หลายคลิปบนเดสก์ท็อป: เรียงลงในคอลัมน์ขวา ไม่ต้องเลื่อนแนวนอน */
  .vshorts.many{flex-direction:column;overflow:visible}
  .vshorts.many .vshort{flex:none}
}
@media (hover:hover) and (pointer:fine){
  .vplay{transition:transform .18s ease-out}
  .vplay:hover{transform:scale(1.01)}
  .vplay .vbtn{transition:transform .18s ease-out}
  .vplay:hover .vbtn{transform:translate(-50%,-50%) scale(1.08)}
  .vthumbs button{transition:border-color .16s ease-out}
  .vthumbs button:hover{border-color:var(--primary)}
}

/* ── ปุ่มโทร (click to call) ───────────────────────────────────────────
   วางได้ 4 จุด: แถบบน / hero / แถบปุ่มด่วนล่าง / ท้ายเว็บ
   ทุกจุดใช้ href="tel:" ล้วน ๆ ไม่มี JS มาคั่น กดแล้วเครื่องโทรออกทันที */

/* hero + ท้ายเว็บ — ต้องกว้างเท่าปุ่ม Add LINE เป๊ะ จึงบังคับกว้าง 100% ของกล่อง */
.hero-cta,.foot-cta{display:flex;flex-direction:column;gap:9px;width:100%;max-width:300px;margin-top:4px}
.foot-cta{align-self:flex-start}
.hero-cta .btn-line,.hero-cta .btn-call,
.foot-cta .btn-line,.foot-cta .btn-call{width:100%}
.btn-call{display:inline-flex;align-items:center;justify-content:center;gap:9px;height:44px;padding:0 24px;
  border:none;border-radius:22px;background:var(--primary);color:#fff;font-size:14px;font-weight:600;cursor:pointer}
.btn-call:hover{background:var(--primary-dark);color:#fff}
.btn-call .ico{flex:none}

/* แถบบน — มีปุ่มโทรแล้ว Add LINE เหลือแค่ไอคอนวงกลม ไม่งั้นสามปุ่มเรียงกันล้นจอแคบ
   ข้อความยังอยู่ใน DOM (.sr-only) โปรแกรมอ่านหน้าจอกับ AI agent จึงยังรู้ว่าปุ่มนี้คืออะไร */
.topbar.has-call .tb-line{width:34px;padding:0;justify-content:center;gap:0}
.topbar.has-call .tb-line .lb{position:absolute;width:1px;height:1px;padding:0;margin:-1px;
  overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;border:0}
.topbar .tb-call{flex:none;display:inline-flex;align-items:center;justify-content:center;
  width:34px;height:34px;border-radius:50%;background:var(--primary);color:#fff}
.topbar .tb-call:hover{background:var(--primary-dark);color:#fff}

/* แถบปุ่มด่วนล่าง — วงกลมขนาดเดียวกับปุ่มอื่น ขนาดผูก vw อยู่แล้วจึงหดตามจอเอง */
.quickbar .qb.call{background:var(--primary);border-color:var(--primary);color:#fff}
.quickbar .qb.call:hover{background:var(--primary-dark)}

/* เบอร์ในท้ายเว็บ — กดโทรได้ แต่หน้าตาเหมือนเดิมทุกอย่าง */
.foot .tel .num{font-family:"Noto Serif Thai",serif;font-weight:700;font-size:22px;color:var(--primary)}
.foot .tel .num:hover{color:var(--primary-dark);text-decoration:underline}
/* ปุ่มในท้ายเว็บเตี้ยกว่าและมุมโค้งน้อยกว่าของ hero — ปุ่มโทรต้องตามให้เหมือนกัน
   ไม่งั้นสองปุ่มที่วางติดกันจะสูงไม่เท่ากันจนดูเหมือนคนละชุด */
.foot .btn-call{height:42px;border-radius:11px;padding:0 20px;font-size:13px}
/* จอกว้างขึ้นมีที่พอ — วางสองปุ่มเรียงข้างกันตามที่ขอ */
@media (min-width:480px){
  .foot-cta{flex-direction:row;flex-wrap:wrap;max-width:none}
  .foot-cta .btn-line,.foot-cta .btn-call{width:auto}
}
/* จอกว้าง footer จัดกึ่งกลาง — ปุ่มต้องตามไปด้วย ไม่งั้นลอยไปชิดซ้ายอยู่อันเดียว */
@media (min-width:768px){
  .foot .rows .foot-cta{align-self:center;justify-content:center}
}

/* ── Hero: รูปแยกเดสก์ท็อป / มือถือ-แท็บเล็ต ──────────────────────────
   สลับด้วย media query ไม่ใช่ JS — เบราว์เซอร์จึงเลือกได้ตั้งแต่ก่อนวาดหน้า
   และโหลดแค่ใบเดียว (url() ที่อยู่ใน var() ซึ่งไม่ถูกหยิบไปใช้ ไม่ถูกดาวน์โหลด)

   จุดตัดที่ 1024px ให้ตรงกับที่ layout เปลี่ยนทรง: ต่ำกว่านี้ hero เป็นกรอบ
   แนวตั้ง (กว้างสุด 760 × สูง 620) ตั้งแต่ 1024 ขึ้นไปกินเต็มจอเป็นแนวนอนยาว
   ค่าสำรองใน var() คือลายทางเดิม ใช้ตอนยังไม่ได้อัปรูป */
.hero .bg{background-image:var(--hero-m, repeating-linear-gradient(122deg,#6f6156 0 11px,#7a6b5e 11px 22px))}
@media (min-width:1024px){
  .hero .bg{background-image:var(--hero-d, repeating-linear-gradient(122deg,#6f6156 0 11px,#7a6b5e 11px 22px))}
}
