/* สไตล์เว็บสาธารณะ VAVAGEMS — ฐานมาจาก mockup ที่เจ้าของอนุมัติ 2026-08-04
   (docs/DESIGN-DIRECTION.md) · ปรับโทนตามแบบ dealuxeglobal.com ที่เจ้าของชี้
   2026-08-12: พื้นงาช้างอุ่นแทนขาวล้วน · หัว/ท้ายเว็บเป็นแถบสีเข้มทึบ ·
   ปุ่มหลักสีทองตัวหนังสือเข้ม — โดยเปลี่ยนแดงเข้มของต้นแบบเป็นกรมท่าของเรา
   (แดง #5B0404 → กรมท่า #101E38) · ทอง/เขียว LINE คงเดิม */
/* เจ้าของลองพื้นงาช้างอุ่นแล้วตัดสินว่าไม่เข้า (2026-08-12) → พื้นกลับเป็นขาวแบบเดิม
   แต่**คงหัวเว็บกรมท่าเข้ม + ปุ่มทอง** ไว้ — สองอย่างนั้นเจ้าของไม่ได้ติ */
:root{
  --bg:#FDFDFC; --panel:#FFFFFF; --ink:#2A3441; --muted:#8A94A3;
  --navy:#1C3156; --navy-deep:#101E38;
  --gold:#A8894A; --gold-line:#D6C49A;
  /* ⛔⛔ **ทองสำหรับพื้นปุ่มที่ใช้ตัวหนังสือสีขาวเท่านั้น** (เจ้าของเคาะ 2026-08-31)
     ขาวบนทองปกติ #A8894A วัดได้ 3.31 ต่ำกว่าเกณฑ์ 4.5 · บนตัวนี้ได้ 4.57
     คงเฉดเดิมเป๊ะ (hue 40° · ความอิ่มสี 39%) เข้มลง 8% เท่านั้น ตาแทบไม่เห็นต่าง
     ⛔ **ห้ามเอาไปใช้กับปุ่มที่ตัวหนังสือเป็นกรมท่าเข้ม** ของพวกนั้นบนทองเดิม
        ได้ 5.01 อยู่แล้ว แต่บนตัวนี้จะเหลือ 3.63 = ทำของที่ดีอยู่แล้วพัง
     ⛔ ห้ามใช้เป็นสีเส้นขอบหรือสีตัวอักษร ใช้เป็น **พื้น** อย่างเดียว
     มีด่านเฝ้าที่ tools/check_gold_button.py */
  --gold-btn:#8C723E;
  --warm:#F7F7F5;                 /* พื้นช่วงสลับ (โทนขาว) */
  --line:#ECEDEF; --linegreen:#06C755;
  --ivory:#F3EDE2;                /* ตัวหนังสือบนพื้นเข้ม */
}
*{box-sizing:border-box;margin:0;padding:0}
/* ขนาดตัวหนังสือปรับตามแนว navratan.com (2026-08-10 เจ้าของขอ): body 16px บรรทัดกระชับ 1.7
   ให้อ่านง่ายและดู "จัดวางมาแล้ว" — คงหัวข้อ Trirong serif + น้ำเงิน/ทองเป็นเอกลักษณ์เดิม */
body{background:var(--bg);color:var(--ink);font-family:'Sarabun',sans-serif;
     font-weight:400;line-height:1.7;font-size:16px}
h1,h2,h3,.serif{font-family:'Trirong',serif}
img,video{max-width:100%}
.eyebrow{font-size:12px;letter-spacing:3.5px;color:var(--gold);text-transform:uppercase;font-weight:500}

/* ---------- แถบบนสุด ---------- */
/* แถบบนสุดถูกตัดออกทั้งแถบ 2026-08-13 (เจ้าของสั่ง) — เหตุผลและของที่ย้ายไปไหน
   จดไว้ตรงจุดที่เคยวางแถบใน base.html */
footer.site p a{color:inherit;text-decoration:none;border-bottom:1px solid rgba(214,196,154,.45)}
footer.site p a:hover{color:var(--navy)}

/* ---------- หัวเว็บ ---------- */
/* หัวเว็บไม่มีสีพื้นของตัวเอง (เจ้าของสั่ง 2026-08-13) — ใช้พื้นเดียวกับทั้งหน้า
   แยกจากเนื้อหาด้วยเส้นทองหม่นบาง 1px เส้นเดียว ไม่ตีกรอบสายตา
   ⛔ เปลี่ยนพื้นเป็นสว่างแล้วทุกชิ้นในหัวเว็บต้องพลิกสีตาม (ชื่อร้าน ชื่อรอง เมนู
      ลิงก์เล็ก กรอบภาษา ไอคอนลูกโลก ขีดสามขีด) — กฎอยู่ใน base.html
   ระยะ 34/12 มาจากรอบปรับ white space: โลโก้→เมนู 28px · เมนู→เส้นขอบ 14px */
/* ⛔ ขอบซ้าย-ขวาเป็น 0 โดยตั้งใจ — ให้ .hrow กับ nav คุมขอบในเอง (ค่าเดียวกับ .wrap)
   ถ้าใส่ padding ข้างที่นี่ด้วย ตราโล่มุมซ้ายจะเยื้องจากขอบรูปสไลด์เท่ากับค่านั้น
   (เจอจริง 2026-08-14 เยื้อง 20px พอดีกับ padding เดิม) */
header.site{background:var(--bg);border-bottom:1px solid rgba(212,175,55,.3);
       padding:34px 0 12px;text-align:center}
.brand{font-family:'Trirong',serif;font-size:32px;font-weight:500;letter-spacing:10px;
       color:var(--ivory);text-indent:10px}
.brand a{color:inherit;text-decoration:none}
.brand .gem{color:var(--gold);font-size:20px;vertical-align:middle}
.brand-sub{font-size:10.5px;letter-spacing:7px;color:var(--gold);margin-top:4px;text-indent:7px}
.brand-rule{width:56px;height:1px;background:var(--gold-line);margin:14px auto 0}
nav.site{display:flex;justify-content:center;gap:34px;margin-top:22px;flex-wrap:wrap}
nav.site a{font-size:16px;letter-spacing:.4px;color:var(--ink);font-weight:500;text-decoration:none;
      padding:12px 2px;border-bottom:2px solid transparent}
nav.site a:hover,nav.site a.on{border-color:var(--gold);color:var(--navy)}
nav.site a.line-mini{color:var(--linegreen);font-weight:600}

/* จอใหญ่ต้องไม่บีบกลาง (เจ้าของทัก 2026-08-09) — ยืดตามจอ กว้างสุด 1440px
   ขอบข้างขยายตามจอด้วย clamp กันเนื้อหาไปติดขอบบนจอกว้าง */
.wrap{max-width:1440px;margin:0 auto;padding:0 clamp(24px,3vw,48px)}
/* หน้าที่เนื้อหามีความกว้างตายตัว (หน้าสินค้า) — ปล่อยเต็ม 1440 แล้วเนื้อหากองซ้าย */
.wrap.narrow{max-width:1240px}
.crumb{font-size:12.5px;color:var(--muted);padding:22px 0 26px;letter-spacing:.3px}
.crumb a{color:var(--muted);text-decoration:none}
.crumb a:hover{color:var(--navy)}

/* ---------- หน้าแรก ---------- */
.hero{text-align:center;padding:66px 0 46px}
.hero h1{font-size:32px;font-weight:500;color:var(--navy);margin:14px 0 14px}
.hero p{color:#59617a;max-width:56ch;margin:0 auto}
/* ระยะระหว่างส่วนเป็นค่ายืดตามจอ (เจ้าของทัก 2026-08-14 ว่าช่องว่างบนมือถือเยอะเกิน)
   เดิมตายตัว 48/26 ทุกจอ — บนเดสก์ท็อปพอดี แต่บนมือถือกลายเป็นแถบขาวใหญ่สองแถบ
   เพราะเนื้อหารอบ ๆ เล็กลงหมดแต่ช่องว่างเท่าเดิม
   ⛔ ระยะ "เหนือหัวข้อ" ต้องมากกว่า "ใต้หัวข้อ" เสมอ หัวข้อเป็นของสิ่งที่อยู่ใต้มัน
      ถ้าเท่ากันจะอ่านไม่ออกว่าหัวข้อคุมส่วนไหน */
.section-head{text-align:center;margin:clamp(26px,4vw,52px) 0 clamp(14px,2vw,26px)}
.section-head h2{font-size:26px;font-weight:500;color:var(--navy)}

.cats{display:flex;flex-wrap:wrap;justify-content:center;gap:10px;margin:20px 0 8px}
.cats a{border:1px solid var(--line);padding:8px 16px;border-radius:20px;font-size:14px;
        color:var(--ink);text-decoration:none;background:var(--panel)}
.cats a:hover,.cats a.on{border-color:var(--gold-line);color:var(--navy)}
.cats a small{color:var(--muted)}

/* ---------- กริดสินค้า ---------- */
.grid{display:grid;grid-template-columns:repeat(4,1fr);gap:22px;margin:8px 0 30px}
@media(min-width:1280px){.grid{grid-template-columns:repeat(5,1fr)}}
@media(max-width:920px){.grid{grid-template-columns:repeat(3,1fr)}}
@media(max-width:680px){.grid{grid-template-columns:repeat(2,1fr)}}
.card{background:var(--panel);border:1px solid var(--line);text-decoration:none;color:var(--ink);
      display:flex;flex-direction:column}
.card:hover{border-color:var(--gold-line)}
.card .ph{position:relative;aspect-ratio:1;background:#F4F5F3;overflow:hidden}
.card .ph img{width:100%;height:100%;object-fit:cover;display:block}
.card .vid{position:absolute;right:8px;top:8px;background:rgba(16,30,56,.78);color:#fff;
           font-size:11px;padding:2px 9px;border-radius:10px;letter-spacing:.5px}
.card .body{padding:13px 15px 15px}
.card .name{font-size:14.5px;line-height:1.5;height:3em;overflow:hidden;color:var(--ink)}
/* กะรัตเด่นไม่แพ้ชื่อพลอย + SKU ต่อท้ายบรรทัดเดียว ประหยัดพื้นที่ (เจ้าของสั่ง 2026-08-10) */
.card .cmeta{margin-top:6px;line-height:1.4}
.card .cmeta .carat{font-size:15px;font-weight:600;color:var(--ink)}
.card .cmeta .sku{font-size:12.5px;color:var(--muted);margin-left:8px}
/* ป้ายรายละเอียดบนการ์ด — "ไม่เผา" กับ "สีพิเศษตามใบเซอร์" (เจ้าของเสนอ 2026-08-24)
   ⛔ ต้องอ่านออกว่าเป็น "ข้อเท็จจริงของเม็ดนี้" ไม่ใช่ป้ายโปรโมชั่น
      จึงใช้เส้นขอบบาง พื้นอ่อน ไม่ใช้สีแดง/ส้มแบบป้ายลดราคา
   ⛔ ไม่จองที่ว่างไว้ตอนไม่มีป้าย (ไม่ใช้ min-height) เพราะเม็ดส่วนใหญ่ไม่มีป้าย
      ถ้าจองไว้ การ์ดทั้งหน้าจะสูงขึ้นฟรี ๆ */
/* ⛔ วางบน **มุมล่างซ้ายของรูป** ไม่ใช่ในบล็อกข้อความ — เหตุผลอยู่ใน _gemcard.html
   มุมบนซ้ายเป็นปุ่มหัวใจ มุมบนขวาเป็นป้ายวีดีโอ ล่างซ้ายจึงเป็นที่เดียวที่ว่างจริง */
.card .cbadges{position:absolute;left:8px;bottom:8px;right:8px;
               display:flex;flex-wrap:wrap;gap:4px;pointer-events:none}
/* ⛔ หน้าตาป้ายเป็นของกลาง — ใช้ทั้งการ์ดหน้ารายการ (.card) และแถว
   'เพิ่งเข้ามาใหม่' หน้าแรก (.hev-badges) · แก้ที่นี่ที่เดียวเปลี่ยนทั้งเว็บ
   ส่วน **ตำแหน่งวาง** แยกกัน เพราะกล่องรูปคนละแบบ */
.cbadge{font-size:11.5px;line-height:1.65;padding:1px 8px;border-radius:11px;
              background:rgba(255,255,255,.93);white-space:nowrap;
              border:1px solid rgba(255,255,255,.5);
              box-shadow:0 1px 3px rgba(16,30,56,.18)}
/* ไม่เผา = ข้อมูลที่ลูกค้าสายพลอยธรรมชาติมองหาก่อนอย่างอื่น ให้เด่นกว่าอีกใบเล็กน้อย */
.cb-unheated{color:#24603C;font-weight:600}
/* สีพิเศษ = คำของแลป ไม่ใช่ของร้าน → ใช้สีทองแบรนด์ให้รู้ว่าเป็นของพิเศษจริง */
.cb-special_color{color:#8A6D2F;font-weight:600}
/* มีใบเซอร์ = บอกว่า "มีเอกสาร" ไม่ได้บอกว่าเอกสารเขียนว่าอะไร
   จึงเบากว่าอีกสองใบโดยตั้งใจ ไม่แย่งสายตาป้ายที่บอกเนื้อหาจริง */
.cb-cert{color:var(--navy);font-weight:500}
/* ไฮไลต์: แหล่งที่มา (เขียวมรกต) · วาไรตี้ Golden Star (ทองเข้ม) — เจ้าของสั่ง 9 ก.ย. */
.cb-origin{color:#0e7a56;font-weight:600}
.cb-star{color:#9a7513;font-weight:600}
/* ป้ายใบเซอร์: เดสก์ท็อป = ป้ายแยกใบ (.cbdg-d) · มือถือ = ยุบเข้าไปต่อท้ายป้ายสี (.cbdg-m)
   เจ้าของเลือก 2026-09-09 — จอ ≤680px การ์ดเหลือ 2 คอลัมน์ ป้ายสองใบแยกจะตกบรรทัด
   ⛔ เม็ดที่มีสีพิเศษต้องเห็น "มีใบเซอร์" เสมอ (เจ้าของสั่ง 24 ส.ค.) ห้ามยุบซ่อน */
.cbdg-m{display:none}
@media(max-width:680px){.cbdg-d{display:none}.cbdg-m{display:inline}}
@media(max-width:520px){.cbadge{font-size:11px;padding:1px 7px}}
/* ขนาด มม. + ป้ายใบรายงาน — ขึ้นเฉพาะหน้าที่ส่งค่า wd_mm มา (ตอนนี้คือหน้าแต่งงาน)
   ⛔ ป้ายใบรายงานเป็นของ "รายเม็ด" ทั้งร้านมีจริงแค่ 508 จาก 4,698 เม็ด
      ห้ามย้ายไปเขียนเป็นข้อความประจำหน้าไม่ว่ากรณีใด */
.card .cmm{margin-top:4px;font-size:12.5px;color:var(--muted);line-height:1.5}
.card .cmm .ccert{color:var(--gold-deep,#93773E)}
.card .price{font-family:'Trirong',serif;font-size:19px;font-weight:600;color:var(--navy);margin-top:7px}
.card .price .was{font-family:'Sarabun',sans-serif;font-size:12.5px;font-weight:400;
                  color:var(--muted);text-decoration:line-through;margin-left:8px}

/* ---------- ค้นหา + แบ่งหน้า ---------- */
.toolbar{display:flex;gap:10px;flex-wrap:wrap;align-items:center;margin:6px 0 20px}
.toolbar input[type=text]{flex:1;min-width:220px;border:1px solid var(--line);padding:11px 14px;
       font-size:15px;font-family:inherit;background:var(--panel)}
/* ⛔ ต้อง :not(.advlink) — ปุ่ม "ค้นหาแบบละเอียด" ในหน้า /gems เป็น <button> เหมือนกัน
   กฎ hover เดิมสั่ง color:#fff ซึ่งชนะกฎสีปกติของ .advlink (กฎ hover มีน้ำหนักมากกว่า)
   ผลคือเอาเมาส์ไปวางแล้วตัวหนังสือกลายเป็นขาวบนพื้นครีม หายไปทั้งปุ่ม (เจ้าของเจอ 2026-08-13) */
.toolbar button:not(.advlink){background:var(--gold);color:var(--navy-deep);border:0;padding:11px 22px;
       font-size:14.5px;font-weight:600;font-family:inherit;cursor:pointer;letter-spacing:.4px}
.toolbar button:not(.advlink):hover{background:#93773E;color:#fff}
/* ลิงก์ค้นหาแบบละเอียดข้างปุ่มค้นหา — เป็นทางเลือกรอง จึงเป็นกรอบโปร่งไม่ใช่ปุ่มทึบ
   สูงเท่าปุ่มค้นหาพอดี (11px + 1px ขอบ) ไม่งั้นแถวจะเบี้ยว */
.toolbar .advlink{display:inline-flex;align-items:center;gap:7px;padding:10px 16px;
       border:1px solid var(--gold-line);color:var(--navy);text-decoration:none;
       font-size:14px;letter-spacing:.3px;white-space:nowrap;background:var(--panel);
       font-family:inherit;cursor:pointer}
/* ประกาศ color ซ้ำตรงนี้ด้วย เป็นสายรัดเส้นที่สอง — เผื่อวันหน้ามีใครเพิ่มกฎ hover
   ให้ปุ่มในแถบนี้อีก ปุ่มนี้จะไม่หายไปเงียบ ๆ เหมือนรอบที่แล้ว */
.toolbar .advlink:hover{border-color:var(--gold);background:#FBF8F1;color:var(--navy)}
/* ป้ายเลขบอกว่ามีตัวกรองค้างอยู่กี่อัน — ต้องเห็นตอนแผงพับแล้ว ไม่งั้นลูกค้าไม่รู้ว่า
   ที่ผลลัพธ์น้อยเพราะยังกรองค้างไว้ (กติกาข้อ 4: ข้อมูลผิดเงียบ ๆ แย่กว่าข้อมูลหาย) */
.toolbar .advbadge{display:inline-flex;align-items:center;justify-content:center;
       min-width:19px;height:19px;padding:0 5px;border-radius:10px;background:var(--gold-btn);
       color:#fff;font-size:12px;font-weight:600;line-height:1}
/* ปุ่มตอนแผงกางอยู่ — ให้ดูเป็นปุ่มที่ "กดค้าง" ไว้ ไม่งั้นกดแล้วไม่รู้ว่าตัวเองกดอะไร */
.toolbar .advlink[aria-expanded="true"]{background:#FBF8F1;border-color:var(--gold)}

/* ---------- แผงค้นหาแบบละเอียด (_advform.html) ----------
   ⛔ ย้ายมาจาก gems.html เมื่อ 2026-08-14 — หน้าแรกใช้แผงเดียวกันแล้ว
   ถ้าย้ายกลับไปไว้ในหน้าใดหน้าหนึ่ง อีกหน้าจะกลายเป็นแผงเปล่าไม่มีสไตล์ */
.adv{margin:0 0 16px}
.adv summary{cursor:pointer;font-size:14.5px;color:var(--navy);letter-spacing:.4px;
       padding:9px 0;list-style:none;display:inline-flex;align-items:center;gap:6px;user-select:none}
.adv summary::-webkit-details-marker{display:none}
.adv summary em{font-style:normal;color:var(--gold);font-size:13px}
.adv[open] summary{border-bottom:0}
/* มี JS = ใช้ปุ่มบนแถบค้นหาแทน ซ่อนหัวข้อของ <details> ทิ้ง
   ⛔ ต้องซ่อนด้วยคลาส .js ที่สคริปต์ใส่ให้ ไม่ใช่ซ่อนตรง ๆ — เบราว์เซอร์ที่ปิด JS
   ปุ่มบนแถบจะกดไม่ได้ ต้องเหลือหัวข้อนี้ไว้ให้กางแผงได้อยู่ */
.js .adv > summary{display:none}
.js .adv{margin-top:-4px}
.advgrid{display:flex;gap:18px 26px;flex-wrap:wrap;align-items:end;
       border:1px solid var(--line);background:var(--panel);padding:18px 22px;margin-top:4px}
.advgrid label{display:flex;flex-direction:column;gap:7px;font-size:13px;color:var(--muted)}
.advgrid select,.advgrid input{border:1px solid var(--line);background:#fff;color:var(--ink);
       font-family:inherit;font-size:15px;padding:8px 10px;border-radius:0;min-width:120px}
.advgrid input[type=number]{width:96px;min-width:0}
.advgrid .pair{display:flex;gap:6px;align-items:center}
.advbtn{display:flex;gap:14px;align-items:center}
.advbtn button{background:var(--gold);color:var(--navy-deep);border:0;padding:9px 22px;
       font-size:14.5px;font-weight:600;font-family:inherit;cursor:pointer;letter-spacing:.3px}
.advbtn button:hover{background:#93773E;color:#fff}
.advbtn .clear{font-size:13.5px;color:var(--muted)}
@media(max-width:680px){.advgrid{gap:12px 16px;padding:14px 16px}
  .advgrid select{min-width:100px}.advgrid input[type=number]{width:84px}}
.toolbar label{font-size:14px;color:var(--muted);display:flex;align-items:center;gap:6px}
.count{font-size:13.5px;color:var(--muted);margin:0 0 14px}
.pager{display:flex;justify-content:center;gap:8px;margin:10px 0 40px;flex-wrap:wrap}
.pager a,.pager span{border:1px solid var(--line);padding:7px 14px;font-size:14px;
       text-decoration:none;color:var(--ink);background:var(--panel)}
.pager span.cur{background:var(--navy);color:#fff;border-color:var(--navy)}
.pager a:hover{border-color:var(--gold-line)}
/* pager บน — กระชับ ให้ลูกค้าเห็นว่ามีหลายหน้าก่อนเลื่อน (เจ้าของสั่ง 2026-09-09) */
.pager.top{margin:2px 0 16px}
.pager.top .pgof{border:none;background:none;color:var(--muted);padding:7px 4px}
/* ช่องพิมพ์เลขหน้าไปเร็ว ๆ (เจ้าของขอ 2026-08-10) */
.pager .jump{display:flex;align-items:center;gap:7px;font-size:14px;color:var(--muted);margin-left:6px}
.pager .jump input{width:64px;border:1px solid var(--line);padding:7px 8px;font-size:14px;
  font-family:inherit;text-align:center;background:var(--panel);color:var(--ink)}
.pager .jump button{border:1px solid var(--navy);background:var(--navy);color:#fff;padding:7px 15px;
  font-size:14px;font-family:inherit;cursor:pointer}
.pager .jump button:hover{filter:brightness(1.08)}

/* ---------- หน้าสินค้า ---------- */
/* รูปพลอยต้องไม่ใหญ่จนกลบข้อมูล (เจ้าของชี้ 2026-08-10 เทียบกับ navratan)
   คุมด้วยความกว้างจริงเป็นพิกเซล ไม่ใช่สัดส่วน — จอ 24" สัดส่วนเดิมทำให้รูป
   โตขึ้นเรื่อย ๆ ตามจอ แต่ข้อมูลข้าง ๆ เท่าเดิม */
.product{display:grid;grid-template-columns:minmax(0,420px) minmax(0,1fr);gap:46px;
  align-items:start}
@media(max-width:840px){.product{grid-template-columns:1fr;gap:26px}
  .media{max-width:420px;margin:0 auto}}
.frame{background:#fff;border:1px solid var(--line);padding:8px}
.frame video,.frame img.main{width:100%;display:block;background:#000}
.frame img.main{background:#F4F5F3}
/* ⛔ กรอบภาพหลักต้อง **ขนาดคงที่** ไม่ยืดหดตามสัดส่วนรูป (เจ้าของสั่ง 2 ก.ย. 2026
   พร้อมชี้เว็บเก่าเป็นตัวอย่าง) รูปพลอยเป็นจัตุรัส 1440x1440 แต่ใบเซอร์เป็น
   2206x1557 กรอบจึงหดจาก 420 เหลือ 302 px แล้วทุกอย่างใต้กรอบกระโดดตาม
   วิธีของเว็บเก่าคือกรอบคงที่แล้วเว้นขอบให้รูปที่สัดส่วนไม่ตรง
   ⛔ ต้องเจาะจงที่ #stage เท่านั้น — .frame ใช้กับรูปย่อด้วย ถ้าใส่กว้าง ๆ
      แถวรูปย่อจะกลายเป็นจัตุรัสตามไปทั้งแถว */
#stage{aspect-ratio:1/1}
#stage img.main,#stage video{height:100%;object-fit:contain}
/* รูปย่อเป็นแถวเล็ก ๆ ขนาดคงที่ ไม่ยืดตามความกว้าง — แบบเดียวกับ navratan
   ใส่กี่รูปก็ไม่ดันให้แต่ละใบใหญ่ขึ้น เกินก็ขึ้นบรรทัดใหม่ */
/* แถบรูปย่อ — ตกบรรทัดได้ ให้เห็นทุกใบพร้อมกัน
   ทำได้เพราะรูปย่อเป็นไฟล์ webp จริงแล้ว (~17 KB) ไม่ใช่ไฟล์ต้นฉบับ 423 KB
   เม็ดที่มีรูปมากสุดในร้าน 48 ใบ = ~800 KB ซึ่งรับได้
   ⛔ ถ้าวันไหนปิดสวิตช์ VAVA_MEDIA_THUMBS ต้องกลับมาใช้แถวเลื่อนแนวนอน
   (overflow-x:auto แทน flex-wrap) ไม่งั้นหน้าเดียวโหลด 16 MB */
/* เม็ดที่มีรูปเยอะ (สูงสุดในร้าน 48 ใบ) แถบจะสูง 7-8 แถว = สูงกว่ารูปใหญ่
   จำกัดไว้ 3 แถวแล้วเลื่อนดูต่อในกล่อง ไม่ให้ดันเนื้อหาข้างล่างหายไปจากจอ */
.thumbs{display:flex;flex-wrap:wrap;gap:8px;margin-top:8px;
  max-height:224px;overflow-y:auto;overscroll-behavior:contain}
.thumbs .frame{padding:3px;cursor:pointer;width:60px;flex:0 0 auto}
.thumbs img{width:100%;aspect-ratio:1;object-fit:cover;display:block}
.thumbs .frame{position:relative}
.thumbs .frame:hover,.thumbs .frame.on{border-color:var(--gold-line)}
.thumbs .frame.on{box-shadow:0 0 0 1px var(--gold-line)}
.thumbs .pv{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;
  color:#fff;font-size:15px;text-shadow:0 1px 5px rgba(0,0,0,.65);pointer-events:none}
/* ปุ่มเลื่อนรูป — ไม่มีพื้นสีขาว (เจ้าของสั่ง 2026-08-10) ให้เห็นรูปเต็ม ๆ
   ตัวลูกศรใช้เงาดำแทนพื้น เพราะรูปพลอยมีทั้งฉากสว่างและมืด ลูกศรขาวล้วนจะจมหายบนฉากสว่าง */
.stage{position:relative}
.gnav{position:absolute;top:50%;transform:translateY(-50%);width:40px;height:56px;
  border:0;background:none;color:#fff;font-size:34px;line-height:1;cursor:pointer;
  font-family:inherit;padding:0;display:flex;align-items:center;justify-content:center;
  text-shadow:0 1px 7px rgba(0,0,0,.8),0 0 2px rgba(0,0,0,.6);opacity:.85;
  transition:opacity .15s,color .15s}
.gnav:hover{opacity:1;color:var(--gold)}
.gnav.prev{left:2px}
.gnav.next{right:2px}
@media(max-width:560px){.gnav{width:34px;height:46px;font-size:28px}}
/* กดรูปหลักแล้วขยายเต็มจอ — บอกด้วยรูปเมาส์ว่ากดได้ */
.stage .frame img.main{cursor:zoom-in}

/* ---------- ดูรูปเต็มจอ ---------- */
.lbox{position:fixed;inset:0;z-index:200;background:rgba(12,18,32,.94);
  display:flex;align-items:center;justify-content:center}
.lbox[hidden]{display:none}
.lb-stage{max-width:94vw;max-height:92vh;display:flex;align-items:center;justify-content:center}
.lb-stage img,.lb-stage video{max-width:94vw;max-height:92vh;width:auto;height:auto;display:block}
.lbox button{position:absolute;border:0;background:none;color:#fff;cursor:pointer;
  font-family:inherit;padding:0;line-height:1;opacity:.8;transition:opacity .15s,color .15s;
  text-shadow:0 1px 8px rgba(0,0,0,.9)}
.lbox button:hover{opacity:1;color:var(--gold)}
.lb-close{top:14px;right:20px;font-size:26px;width:44px;height:44px}
.lb-prev,.lb-next{top:50%;transform:translateY(-50%);font-size:52px;width:64px;height:88px}
.lb-prev{left:8px}
.lb-next{right:8px}
.lb-count{position:absolute;left:20px;bottom:18px;color:#fff;opacity:.75;font-size:13px;
  letter-spacing:1px;background:rgba(0,0,0,.35);padding:4px 12px;border-radius:14px}
@media(max-width:560px){
  .lb-prev,.lb-next{font-size:38px;width:46px;height:70px}
  .lb-prev{left:0}.lb-next{right:0}
  .lb-close{top:8px;right:8px;font-size:22px}
  .lb-count{left:12px;bottom:12px;font-size:12px}
}
.cap{font-size:12px;color:var(--muted);margin-top:10px;text-align:center;letter-spacing:.3px}

.info h1{font-size:26px;font-weight:500;line-height:1.35;color:var(--navy);margin:6px 0 2px}
.info .sub{color:var(--muted);font-size:13.5px;letter-spacing:.5px}
.avail{margin:10px 0 2px;font-size:13px;color:var(--ink)}
/* ป้ายบอกรายละเอียดบนหน้าสินค้า — ชุดเดียวกับการ์ด แต่วาง inline ใต้ชื่อ
   ตัวใหญ่กว่าบนการ์ดนิดหน่อยเพราะที่นี่มีที่ว่างและเป็นจุดที่คนอ่านสเปกจริง */
.pbadges{display:flex;flex-wrap:wrap;gap:7px;margin:11px 0 2px}
.pbadge{font-size:13px;line-height:1.7;padding:2px 12px;border-radius:13px;
        border:1px solid var(--line);white-space:nowrap;font-weight:500}
.pbadge.pb-unheated{border-color:#BFD8C6;background:#F2F8F4;color:#24603C}
.pbadge.pb-special_color{border-color:var(--gold-line);background:#FBF7EF;color:#8A6D2F}
.pbadge.pb-cert{border-color:#CBD5E4;background:#F5F8FC;color:var(--navy)}
.pbadge.pb-origin{border-color:#BFE3D2;background:#F1F9F5;color:#0e7a56}
.pbadge.pb-star{border-color:#E9DCA9;background:#FBF7EA;color:#9a7513}
.avail i{display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--gold);
         margin-right:7px;vertical-align:1px;font-style:normal}
.price-box{margin:4px 0 14px;border-bottom:1px solid var(--line);padding-bottom:14px}
.price-box .now{font-family:'Trirong',serif;font-size:32px;font-weight:600;color:var(--navy)}
.price-box .was{color:var(--muted);text-decoration:line-through;margin-left:12px;font-size:14.5px}

/* ตารางสเปกมี 13 แถว — ช่องไฟแถวละ 11px ทำให้ต้องเลื่อนจอดูให้ครบ (เจ้าของชี้) */
/* จำกัดความกว้าง ไม่งั้นบนจอ 1440 ตารางกว้าง 870px แล้วป้ายกับค่าห่างกันคนละฟาก
   จนสายตาโยงไม่ติดว่าแถวไหนคู่กับอะไร */
table.spec{width:100%;border-collapse:collapse;font-size:14px;line-height:1.5}
table.spec td{padding:6px 4px;border-bottom:1px solid var(--line);vertical-align:top}
table.spec tr:last-child td{border-bottom:none}
table.spec td:first-child{color:var(--muted);width:36%;font-weight:400}
.honest{border-left:2px solid var(--gold);padding:6px 0 6px 16px;font-size:13.5px;
        color:#6b6248;margin:18px 0;font-style:italic}
.care{border-left:2px solid #B0413E;padding:6px 0 6px 16px;font-size:13.5px;
      color:#7a4a48;margin:18px 0;line-height:1.75}
.care b{color:#6b3a38}
.care ul{margin:8px 0 0 18px;padding:0}
.care li{margin-bottom:5px}
.care .src{font-size:11.5px;color:var(--muted);margin-top:10px}
.care .src a{color:var(--muted)}
.care .src a:hover{color:var(--navy)}

.cta-line{display:block;text-align:center;background:var(--linegreen);color:#fff;
  font-weight:600;font-size:16.5px;letter-spacing:.4px;text-decoration:none;
  padding:16px;border-radius:6px;margin-top:20px}
.cta-line:hover{filter:brightness(1.05)}
.cta-sub{text-align:center;font-size:12.5px;color:var(--muted);margin-top:10px;letter-spacing:.3px}

/* ---------- แถบเชื่อใจ ---------- */
.trust{display:flex;justify-content:center;gap:26px;flex-wrap:wrap;align-items:center;
       margin:64px 0;color:var(--ink);font-size:14px;letter-spacing:.4px}
.trust em{color:var(--gold-line);font-style:normal;font-size:11px}

footer.site{background:var(--navy-deep);color:#8FA0BC;margin-top:40px;padding:44px 20px 38px;
       text-align:center;font-size:13.5px;letter-spacing:.4px}
footer.site .brand{color:#E7ECF4;font-size:22px;letter-spacing:8px;text-indent:8px;font-weight:400}
/* ตราเพชรของโลโก้เดิม — สูงเท่าตัวอักษรพอดี ไม่ให้ดันบรรทัดสูงขึ้น
   ⛔ ไฟล์เก็บไว้ 78px สูงกว่าที่แสดง 3 เท่า เผื่อจอละเอียด · 4 KB */
footer.site .brand .gem{width:auto;height:26px;vertical-align:-5px;margin:0 2px}
footer.site .rule{width:44px;height:1px;background:#3A4C6E;margin:16px auto}
footer.site p{max-width:60ch;margin:0 auto}
/* เมนูท้ายเว็บ — รับของที่ย้ายลงมาจากแถวเมนูบน 2026-08-14
   ⛔ ห้ามใช้กฎ footer.site p a (ชี้แล้วเป็นสีกรมท่า = กรมท่าบนกรมท่า อ่านไม่ออก) */
footer.site .fnav{display:flex;flex-wrap:wrap;justify-content:center;
       gap:8px 26px;max-width:820px;margin:0 auto 20px}
footer.site .fnav a{color:#C6D2E6;text-decoration:none;font-size:14px;letter-spacing:.4px;
       padding-bottom:3px;border-bottom:1px solid transparent}
footer.site .fnav a:hover{color:#fff;border-color:var(--gold)}
/* จอที่มีแถวเมนูจริง (901px ขึ้นไป) ไม่ต้องมีลิงก์ชุดนี้บนหัวเว็บอีก มันอยู่ท้ายเว็บแล้ว
   ⛔ จอแคบกว่านี้ห้ามซ่อน — <nav> ก้อนเดียวกันคือลิ้นชักมือถือ */
@media (min-width:901px){nav.site a.navmob{display:none}}
