/* ============================================================
   PODVAPE - ธีม ขาว · ดำ · แดง
   พื้นเว็บขาว · ตัวอักษรดำ · accent แดง · header แดง · footer ดำ
   สีทุกตัวอยู่ใน :root นี้ที่เดียว — แก้ที่นี่ = เปลี่ยนทั้งเว็บ
   (--gold เหลือไว้ใช้เฉพาะบนพื้นมืด: footer / drawer / header แดง เท่านั้น
    ห้ามใช้บนพื้นขาว เพราะทองบนขาวคอนทราสต์ไม่ผ่าน WCAG)
   ============================================================ */
:root{
  /* ===== ธีมดำ-แดง ===== พื้นดำนิวทรัล · ตัวอักษรสว่าง · accent=แดงล้วน (ไม่มีสีรอง) · header แดง */
  --bg:#0d0d0d; --bg-2:#141414; --bg-3:#181818; --bg-card:#232327;   /* การ์ดยกให้สว่างกว่าพื้น (เดิม #181818 = กลืนพื้น contrast 1.18) → ลอยเด่น มีมิติ */
  --hdr:#000000; --hdr-2:#141414;                 /* สีหัวเว็บ = ดำสนิท #000000 · ใช้ที่ .site-header + .header-nav-wrap */
  --hdr-text:#ffe6e6;                             /* เมนูบนหัวแดง = ขาวนวล (อ่านออกชัดบนแดง) */
  --hdr-hi:#ffffff;                               /* เน้น hover/active + accent โลโก้ = ขาว (ไม่มีทอง) */
  --bg-img:#242424; --border:#2b2b2b; --border-2:#3c3c3c;
  /* ชุดหน้าตาการ์ด — ใช้ร่วมกันทุกกลุ่ม (ข้อดีเว็บ / หมวดหมู่แนะนำ / สินค้า / จุดเด่น / บทความ)
     กระจกกึ่งใสให้แสง ambient แดง-ม่วงของพื้นหลังทะลุขึ้นมา = การ์ดเป็นเนื้อเดียวกับหน้าเว็บ (ไม่ใช่แผ่นเทาแปะทับ)
     แก้ 3 ค่านี้ = เปลี่ยนการ์ดทั้งเว็บพร้อมกัน */
  --card-bg:#1e1e1e; --card-bd:rgba(255,255,255,.1); --card-bd-hover:rgba(255,255,255,.22); --card-r:14px;   /* การ์ดทุกใบ = สีทึบ #1e1e1e เท่ากันหมด (เท่าการ์ดหมวดหมู่แนะนำ) */
  --hover:#1e1e1e;
  --dark:#090909; --dark-2:#262626;
  --accent:#e11d2a; --accent-3:#c1121f; --accent-ink:#ff6b6b;   /* accent หลัก=แดง · ink = ลิงก์/hover บนพื้นเข้ม */
  --accent-2:#e11d2a; --accent-2-ink:#ffffff;                   /* accent รอง = แดง (แดงล้วน ไม่มีสีรอง) */
  --arrow-bg:linear-gradient(135deg,#ff5130,var(--accent-3));   /* ปุ่มลูกศร swiper — แบนเนอร์ (.hero-arrow) กับแถวสินค้า/บทความ ใช้ค่าเดียวกัน จะได้ไม่หลุดชุดกันอีก */
  --gold:#d4af37; --gold-d:#b8860b; --gold-lt:#e6b422;          /* ทอง = accent รอง (ธีมแดง×ทอง): ไอคอนสลับ · เส้นคั่น · ลิงก์ดูทั้งหมด · ปุ่มหมวด · ป้ายขายดี */
  --price:#ffffff; --sale:#e0273a; --line:#06C755;
  --text:#ededed; --text-2:#a9a9a9; --text-3:#7c7c7c;
  --shadow:0 2px 5px rgba(0,0,0,.5),0 10px 26px rgba(0,0,0,.45);                   /* ธีมดำ: เงาต้องเป็นดำจริง+เข้ม (เดิม rgba(20,20,30,.05) จางจนมองไม่เห็นบนพื้นดำ) */
  --shadow-lg:0 8px 20px rgba(0,0,0,.5),0 24px 56px rgba(0,0,0,.55);
  --shadow-card:0 10px 26px rgba(0,0,0,.6),0 26px 54px rgba(0,0,0,.5);             /* เงาตอน hover — ยกการ์ดลอยเด่น */
}
*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}}   /* smooth ทั้งเว็บไม่เคยมีตัวกันไว้ — คนตั้งค่า "ลดการเคลื่อนไหว" (เวียนหัว/ไมเกรน) ต้องได้เลื่อนแบบตัดทันที */
/* กัน .hero-band width:100vw ดันแถบเลื่อนแนวนอน — ใส่ clip เฉพาะอุปกรณ์เมาส์ (เดสก์ท็อป มี scrollbar ถาวร แถบ 100vw เลยล้น)
   ⚠️ ห้ามใส่ที่ root แบบไม่จำกัด — overflow-x:clip/hidden ที่ html ทำ position:sticky (header) พังบนจอสัมผัส/iOS Safari
   จอสัมผัสไม่มี scrollbar ถาวร แถบ 100vw ไม่ล้นอยู่แล้ว จึงไม่ต้อง clip = sticky ไม่พัง */
@media(pointer:fine){html{overflow-x:clip}}
body{
  font-family:'Noto Sans Thai',system-ui,sans-serif;
  position:relative;
  --smk:url("../img/smoke-element-overlays-ZQPTZ2G-2.png");   /* รูปควัน (มีสิทธิ์ใช้) — ใช้ซ้ำหลายก้อนใน ::before/::after */
  /* พื้นหลังเว็บ = ดำ #111111 + ควันกระจายทั้งหน้าแบบมีมิติ (body::before = ไกล / body::after = ใกล้) */
  background:#111111;
  color:var(--text);line-height:1.6;
  -webkit-font-smoothing:antialiased;
}
/* ควันกระจายทั้งหน้า "แบบมีมิติ" — 2 ชั้น เลี่ยงลาย pattern
   ::before = ควันไกล (จาง + เบลอ + ก้อนเล็ก-กลาง) · ::after = ควันใกล้ (ชัดกว่า + ก้อนใหญ่นำ + เล็กแซม)
   ::after วาดทับ ::before = ควันใกล้ลอยหน้าควันไกล = ระยะลึก · ทั้งคู่ z-index:-1 หลังสุด ไม่บังการ์ด/ตัวอักษร
   ขนาด/ตำแหน่งจงใจไม่เท่ากัน-ไม่สมมาตร-เหลื่อมออกขอบ ให้ดูธรรมชาติ */
body::before,body::after{content:"";position:absolute;inset:0;z-index:-1;pointer-events:none}
body::before{
  opacity:.3;filter:blur(3px);
  background:
    var(--smk) no-repeat 82% 6%  / 500px auto,
    var(--smk) no-repeat 9%  41% / 430px auto,
    var(--smk) no-repeat 60% 86% / 610px auto;
}
body::after{
  opacity:.5;
  background:
    var(--smk) no-repeat -9%  15% / 820px auto,
    var(--smk) no-repeat 104% 53% / 470px auto,
    var(--smk) no-repeat 31%  73% / 1080px auto,
    var(--smk) no-repeat 93%  96% / 340px auto;
}
a{color:inherit;text-decoration:none}
/* ลิงก์ในเนื้อหา (prose) = ขีดเส้นใต้ กัน "แยกลิงก์ด้วยสีอย่างเดียว" (a11y WCAG 1.4.1) */
.home-content a,.welcome a{color:var(--accent-ink);text-decoration:underline;text-underline-offset:2px}
img{max-width:100%;display:block}
.site-main{max-width:1240px;margin:0 auto;padding:0 24px 40px}

/* ---------- HEADER (ดำ · ตัวอักษรแดง · ตัดกับพื้นเทา #EBEBEB) ---------- */
.site-header{position:sticky;top:0;z-index:50;background:var(--hdr);box-shadow:0 2px 14px rgba(0,0,0,.4)}   /* หัวเว็บ = ดำสนิท */
.header-top{display:grid;grid-template-columns:1fr minmax(0,560px) 1fr;align-items:center;gap:16px;max-width:1240px;margin:0 auto;padding:13px 24px}
.logo{font-size:21px;font-weight:700;color:#fff;display:flex;align-items:center;gap:6px;white-space:nowrap;justify-self:start;min-width:0;max-width:100%}
.logo i{color:var(--hdr-hi)}
.logo span{color:var(--hdr-hi)}   /* ครึ่งหลังของชื่อร้าน = แดง (ใช้ตอนไม่ได้อัปโลโก้เป็นรูป) */
.logo img{width:auto;height:auto;max-width:100%;display:block}
.search-box{position:relative;justify-self:center;width:100%;display:flex;align-items:center;gap:9px;background:#e9e9ed;border:1.5px solid #e9e9ed;border-radius:22px;padding:9px 18px;color:#8a8a92;transition:box-shadow .15s}   /* ช่องค้นหา = ขาวทึบ ตัดกับหัวแดง · position:relative = จุดยึดของ .sg-panel (ต้องอยู่ในกฎ base ไม่ใช่ท้ายไฟล์ ไม่งั้นจะไปทับ position:absolute ของโหมดค้นหามือถือ <=600px) */
.search-box>i{color:var(--accent);font-size:18px;flex:0 0 auto}
.search-box:focus-within{box-shadow:0 0 0 4px rgba(255,255,255,.4)}
.search-box input{flex:1;border:0;background:transparent;color:#1f1f23;font:inherit;outline:none}
.search-box input::placeholder{color:#9a9aa2}

/* รายการสินค้าแนะนำใต้ช่องค้นหา (typeahead) — DOM สร้างโดย assets/js/main.js · ข้อมูลจาก /suggest.php
   พื้นขาวให้ต่อเนื่องเป็นเนื้อเดียวกับช่องค้นหา (ทั้งเว็บเป็นธีมมืด แต่ช่องค้นหาเป็นขาวทึบอยู่แล้ว) */
.sg-panel{position:absolute;top:calc(100% + 8px);left:0;right:0;z-index:70;background:#fff;border-radius:14px;box-shadow:0 14px 38px rgba(0,0,0,.45);overflow:hidden;display:none}
.sg-panel.open{display:block}
.sg-item{display:flex;align-items:center;gap:11px;padding:9px 13px;color:#1f1f23}
.sg-item+.sg-item{border-top:1px solid #ededf0}
.sg-item:hover,.sg-item.is-active{background:#f4f4f6}   /* is-active = ตัวที่เลือกด้วยลูกศรคีย์บอร์ด ใช้พื้นเดียวกับ hover จะได้ไม่เห็นไฮไลต์ 2 อันพร้อมกัน */
.sg-thumb{width:42px;height:42px;flex:0 0 auto;border-radius:8px;object-fit:cover;background:#f1f1f4}
.sg-ph{display:flex;align-items:center;justify-content:center;color:#c4c4cc;font-size:20px}   /* สินค้าไม่มีรูป = ไอคอนแทน (ไม่ปล่อย img src ว่าง จะขึ้นไอคอนรูปแตกของเบราว์เซอร์) */
.sg-txt{flex:1;min-width:0}
.sg-name{font-size:13.5px;line-height:1.35;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.sg-name b{font-weight:700;color:var(--accent-3)}   /* ตัวหนาแดง = ช่วงที่ตรงกับคำที่พิมพ์ ให้เห็นว่าทำไมสินค้านี้ถึงโผล่มา */
.sg-price{flex:0 0 auto;text-align:right;font-size:13px;font-weight:700;white-space:nowrap}
.sg-old{display:block;font-size:11px;font-weight:400;color:#9a9aa2;text-decoration:line-through}
.sg-out{color:#9a9aa2;font-weight:400;font-size:11.5px}
.sg-all{display:block;padding:9px 13px;text-align:center;font-size:12.5px;font-weight:700;color:var(--accent-3);background:#fafafb;border-top:1px solid #ededf0}
.sg-all:hover,.sg-all.is-active{background:#f0f0f3}
.sg-empty{padding:14px 13px;text-align:center;font-size:13px;color:#8a8a92}
.btn-line-sm{display:inline-flex;align-items:center;gap:5px;background:var(--accent-3);color:#fff;font-size:14px;font-weight:700;padding:8px 14px;border-radius:8px;white-space:nowrap}
.header-contacts{justify-self:end;display:flex;gap:8px;align-items:center;min-width:0}
.header-contacts .btn-line-sm{background:var(--line);color:#fff;box-shadow:0 2px 10px rgba(6,199,85,.4);text-shadow:0 1px 2px rgba(0,0,0,.35)}   /* ปุ่ม LINE บนหัวแดง = เขียวแบรนด์ LINE (ขาวบนเขียวไม่ถึง AA แต่เป็นสีแบรนด์ทางการ — เงาตัวอักษรช่วยให้ชัด) */
.header-nav-wrap{background:var(--hdr);border-top:1px solid rgba(255,255,255,.1)}   /* แถบเมนู = #010B13 เท่าแถบบน (เส้นขาวจางคั่น) */
.header-nav{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;max-width:1240px;margin:0 auto;padding:8px 24px;background:transparent;border-top:0}
.cat-dropdown{justify-self:start}
.nav-spacer{justify-self:end}

/* ---------- หมวดหมู่ mega-menu ---------- */
.cat-dropdown{position:relative}
.cat-toggle{display:inline-flex;align-items:center;gap:8px;background:linear-gradient(135deg,#7c1e5a,#e11d2a);color:#fff;border:0;font:inherit;font-size:14px;font-weight:700;padding:9px 16px;border-radius:8px;cursor:pointer;white-space:nowrap}   /* ปุ่มหมวดหมู่ = สีเดียวกับปุ่ม "ช้อปเลย" (ม่วง→แดง) */
.cat-toggle>i:first-child{color:inherit}   /* ไอคอนเมนู = เข้มตามตัวหนังสือ */
.cat-toggle .ti-chevron-down{transition:transform .2s}
.cat-toggle[aria-expanded="true"] .ti-chevron-down{transform:rotate(180deg)}
.cat-menu{position:absolute;top:calc(100% + 8px);left:0;background:#1c1c22;border:1px solid var(--border);border-radius:12px;z-index:60;padding:8px;box-shadow:var(--shadow-lg);width:268px}   /* dropdown เข้ม (เข้าธีมดำ) — สว่างกว่าพื้นนิด + ขอบ ให้แยกจากพื้น */
.cat-list{list-style:none}
.cat-li{position:relative}
.cat-parent{display:flex;align-items:center;gap:10px;padding:9px 11px;border-radius:8px;font-size:14px;font-weight:600;color:var(--text)}
.cat-parent>i:first-child{color:var(--accent);font-size:18px;flex:0 0 auto}
.cat-parent>span{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cat-parent:hover{background:var(--hover);color:var(--accent-ink)}
.cat-caret{flex:0 0 auto;font-size:15px;color:var(--text-3);transition:transform .15s}
.cat-flyout{position:absolute;top:-1px;left:100%;min-width:230px;max-width:320px;background:#1c1c22;border:1px solid var(--border);border-radius:12px;box-shadow:var(--shadow-lg);padding:8px;display:none;z-index:61}
.cat-li.has-kids:hover>.cat-flyout,.cat-li.has-kids:focus-within>.cat-flyout{display:block}
.cat-flyhead{display:block;font-size:13px;font-weight:700;color:var(--accent-ink);padding:7px 10px;border-radius:8px;margin-bottom:4px;border-bottom:1px solid var(--border)}
.cat-flyhead:hover{background:var(--hover)}
.cat-sublink{display:block;font-size:13px;color:var(--text-2);padding:6px 10px;border-radius:8px}
.cat-sublink:hover{color:var(--accent-ink);background:var(--hover)}
.nav-links{justify-self:center;display:flex;gap:26px;font-size:14px}
.nav-links a{color:#fff;padding:4px 0;font-weight:600}   /* เมนูปกติ = ขาว (อ่านง่ายบนพื้นดำ) */
.nav-links a.active,.nav-links a:hover{color:#ff2d2d;border-bottom:2px solid #ff2d2d}   /* ตัวที่อยู่/ชี้ = แดงสด เด่นตัดกับขาว */

/* ---------- HERO SLIDER (ดำ) ---------- */
/* กรอบ 2:1 เท่ากันทุกจอ = สัดส่วนรูปต้นทาง (1920x960) เป๊ะ → รูปโชว์เต็มใบทุก responsive ไม่ตัดสักพิกเซล
   จึงไม่ต้องมี safe zone / เว้นขอบ / กฎห้ามวางตรงไหนในรูปเลย — ออกแบบเต็ม 1920x960 ได้ทั้งใบ
   ที่มาของ 2:1: กรอบมือถือคือ 347x174 (ความสูง 174 ที่ผู้ใช้โอเคแล้ว) = สัดส่วน 2:1 พอดี
   รูปจึงต้องเป็น 2:1 มือถือถึงจะเต็ม แล้วคอมที่ใช้รูปเดียวกันเต็มด้วยจึงได้ 1192/2 = 596 (เลขบังคับ)
   min-height:auto (ไม่ใช่ค่าคงที่) — เดิม 160px ทำให้จอแคบกรอบเตี้ยกว่าสัดส่วน แล้ว cover ไปตัดข้างรูป */
/* โซนพื้นหลัง section แบนเนอร์ = ขาว เต็มความกว้างจอ แยกจากพื้นเทาของหน้า (#EBEBEB) — แบนราบ ไม่มีกรอบ/เงา
   width:100vw + left:50% + margin-left:-50vw = พาดเต็มจอทั้งที่อยู่ในคอลัมน์ .site-main (max 1240) */
.hero-band{background:transparent;width:100vw;position:relative;left:50%;margin-left:-50vw;padding:28px 24px}   /* โปร่ง = ใช้พื้นเดียวกับทั้งเพจ (สีเดียวกับด้านล่างเป๊ะ ไม่มีควัน) */
.hero-band .hero-slider{max-width:1192px;margin:0 auto;box-shadow:0 12px 32px rgba(0,0,0,.5)}   /* แบนเนอร์ + เงานุ่ม */
.hero-slider{position:relative;margin:16px 0;border-radius:14px;overflow:hidden;width:100%;aspect-ratio:2/1;min-height:auto;background:linear-gradient(135deg,#2c2c33,#16161a)}   /* width:100% กัน aspect-ratio ดันกว้างทะลุจอมือถือ */
.hero-slide{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;padding:30px;text-align:center;background-size:cover;background-position:center;background-image:var(--hero-d)}
.hero-slide h2{font-size:28px;font-weight:700;color:#fff;text-shadow:0 1px 12px rgba(0,0,0,.4)}
.hero-slide p{color:rgba(255,255,255,.9);font-size:15px}
.hero-btn{display:inline-block;margin-top:6px;background:linear-gradient(135deg,#ff5130,#e11d2a);color:#fff;font-weight:600;padding:10px 24px;border-radius:8px}
.hero-arrow{position:absolute;top:50%;transform:translateY(-50%);z-index:10;background:var(--arrow-bg);border:0;color:#fff;width:38px;height:38px;border-radius:50%;cursor:pointer;font-size:20px;display:flex;align-items:center;justify-content:center}
.hero-arrow.prev{left:12px}.hero-arrow.next{right:12px}
.hero-slider .swiper-pagination{z-index:10}
.hero-slider .swiper-pagination-bullet{width:24px;height:24px;margin:0 1px;background:transparent;opacity:1;position:relative}   /* พื้นที่แตะ 24×24 (WCAG touch target) — จุดจริงเล็กกว่า วาดด้วย ::after */
.hero-slider .swiper-pagination-bullet::after{content:"";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:9px;height:9px;border-radius:50%;background:rgba(255,255,255,.7);box-shadow:0 1px 3px rgba(0,0,0,.7);transition:width .2s,background .2s}   /* จุดขาว + เงาดำ = เห็นชัดทุกพื้นหลัง */
.hero-slider .swiper-pagination-bullet-active{background:transparent}
.hero-slider .swiper-pagination-bullet-active::after{width:22px;border-radius:5px;background:#ff2d2d;box-shadow:0 1px 4px rgba(0,0,0,.75)}   /* active = แดงสด ทรงยาว (pill) */

/* ---------- WELCOME / FEATURES ---------- */
.welcome{padding:14px 4px}
.welcome h1{font-size:26px;font-weight:700;color:var(--text);line-height:1.3;margin-bottom:8px}
/* H1 หน้าแรก = gradient แดง-ส้ม เฟดเคลื่อนไหว (1 ใน 2 หัวข้อที่ให้วิ่ง) · @supports กันเบราว์เซอร์เก่าตัวหนังสือหาย */
@supports ((-webkit-background-clip:text) or (background-clip:text)){
  .welcome h1{background-image:linear-gradient(45deg,#ff6b6b,#e11d2a,#ff8c42,#ff6b6b);background-size:200% auto;-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;color:transparent;animation:gradientShift 3.5s ease-in-out infinite}
}
.welcome p{color:var(--text-2);font-size:14px}
.features{display:grid;grid-template-columns:repeat(4,1fr);grid-auto-rows:1fr;gap:10px;margin:14px 0}   /* auto-rows:1fr = ทุกการ์ดสูงเท่ากันหมด แม้ข้อความยาวไม่เท่ากัน */
.feature{display:flex;align-items:center;gap:12px;background:var(--card-bg);border:1px solid var(--card-bd);border-radius:var(--card-r);padding:14px 16px;box-shadow:var(--shadow)}   /* ขาว+เงา = ลอยจากพื้น (เดิม bg-3 บนพื้นเทา แยกไม่ออก) */
.feature i{font-size:30px;color:var(--accent);flex:0 0 auto}
.ft-text{display:flex;flex-direction:column;min-width:0}
.ft-title{font-size:14px;font-weight:700;color:var(--text);line-height:1.3}
.ft-sub{font-size:12px;color:var(--text-2);line-height:1.35}   /* text-3 บนการ์ดจุดเด่นได้ 4.31:1 ไม่ถึง AA (4.5) */

/* section "ทำไมต้องบุหรี่ไฟฟ้า" (whyvape) — หัวข้อกลาง + เส้นใต้ + การ์ดกริดไอคอน */
.why-section{text-align:center;margin:34px 0}
.why-title{font-size:26px;font-weight:700;color:var(--text);line-height:1.3}
/* หัวข้อไล่ขาว→ทอง (ธีมแดง×ทอง) — @supports กันเบราว์เซอร์เก่าเห็นตัวหนังสือหาย */
@supports ((-webkit-background-clip:text) or (background-clip:text)){
  .why-title{background-image:linear-gradient(45deg,#ff6b6b,#e11d2a,#ff8c42,#ff6b6b);background-size:200% auto;-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;color:transparent;animation:gradientShift 3.5s ease-in-out infinite}
}
.why-sub{color:var(--text-2);font-size:15px;margin-top:8px}
.why-divider{width:60px;height:3px;border-radius:3px;background:linear-gradient(90deg,var(--accent),var(--gold));margin:14px auto 26px}   /* เส้นคั่นไล่แดง→ทอง (ธีมแดง×ทอง) */
.why-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:18px}   /* 4 คอลัมน์เต็มจอ (แบบ podmt) · 4 ใบ = 1 แถวพอดี · การ์ดแคบ ~283px = ทรงตั้ง */
.why-card{background:var(--card-bg);border:1px solid var(--card-bd);border-radius:var(--card-r);padding:30px 26px;min-height:300px;text-align:left;transition:transform .15s,box-shadow .15s}   /* กล่องกึ่งใส (สูตร podmt) · ทรงตั้ง · ชิดซ้าย */
.why-card:hover{transform:translateY(-4px);box-shadow:var(--shadow-card)}
.why-ic{font-size:46px;line-height:1;color:var(--accent);display:inline-block;margin-bottom:14px}
.why-h{font-size:17px;font-weight:700;color:var(--text);margin-bottom:8px;overflow-wrap:anywhere}   /* wrap คำ/ลิงก์ยาว กันทะลุกรอบ */
.why-p{font-size:13.5px;color:var(--text-2);line-height:1.7;margin:0;overflow-wrap:anywhere}   /* เต็มความกว้างการ์ด + wrap คำยาว */
@media(max-width:980px){.why-grid{grid-template-columns:repeat(2,1fr)}}   /* จอกลาง: 4→2 คอลัมน์ (2+2 พอดี) */
@media(max-width:520px){.why-grid{grid-template-columns:1fr}.why-title{font-size:21px}.why-section{margin:24px 0}
  /* มือถือ = การ์ดเต็มความกว้าง ข้อความสั้น → ปลด min-height 300px (ของทรงตั้งเดสก์ท็อป) ไม่งั้นเหลือที่ว่างครึ่งการ์ด */
  .why-card{min-height:0;padding:20px 18px}
  .why-ic{font-size:36px;margin-bottom:10px}}

/* การ์ดหมวดหมู่โปรโม (category_promo widget) */
/* การ์ดหมวดหมู่แนะนำ — ตารางธรรมดา เลิกใช้ swiper แล้ว (เห็นครบทุกใบ ไม่ต้องปัด)
   เดสก์ท็อป 3 คอลัมน์ (6 หมวด = 2 แถว) · มือถือ 2 คอลัมน์ (= 3 แถว) */
.promo-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin-bottom:10px}
/* การ์ดหมวดหมู่แนะนำ — รูปสินค้า (PNG โปร่ง) ลอยบนพื้นไล่เฉด · ข้อความอยู่ซ้าย
   ชั้นล่าง = gradient, ชั้นบน = รูปสินค้า (โปร่งตรงไหน gradient ทะลุขึ้นมา) */
.promo-card{position:relative;display:flex;flex-direction:column;justify-content:center;gap:5px;min-height:215px;padding:22px 26px;background:var(--promo-img,none) 92% center/auto 78% no-repeat;background-color:#1e1e1e;border:1px solid var(--card-bd);border-radius:var(--card-r);overflow:hidden;box-shadow:var(--shadow);transition:transform .15s,box-shadow .15s}   /* solid #1e1e1e (background-color รับ gradient ไม่ได้ + มีรูปสินค้าทับอยู่แล้ว) */
.promo-card::after{content:"";position:absolute;inset:0;z-index:0;background:linear-gradient(90deg,rgba(12,12,13,.5) 26%,rgba(12,12,13,.2) 60%,rgba(12,12,13,0) 86%);pointer-events:none}  /* เฉดดำฝั่งซ้ายกันตัวอักษรจมรูป — เบาลงจาก .95 เพราะรูปย่อไปมุมขวาแล้ว ไม่ทับข้อความ · ถ้าทึบเท่าเดิมการ์ดนี้จะดูเข้มกว่าการ์ดกระจกใบอื่น */
.promo-card:hover{transform:translateY(-3px);box-shadow:var(--shadow-card)}
.promo-text{position:relative;display:flex;flex-direction:column;gap:5px;max-width:60%;z-index:1}
/* การ์ดที่ยังไม่ได้ใส่รูป: โชว์ไอคอนหมวดจางๆ ฝั่งขวาแทนพื้นว่าง */
.promo-card.no-img .promo-text{max-width:72%}
.promo-fallback{position:absolute;right:22px;top:50%;transform:translateY(-50%);z-index:0;font-size:96px;line-height:1;color:color-mix(in srgb,var(--accent) 42%,transparent);pointer-events:none}   /* แดงจางบนดำ (เดิมพิงก์สว่าง = เข้าธีมขาว) */
.promo-name{font-size:20px;font-weight:700;color:var(--text);line-height:1.2}
.promo-tag{font-size:13px;color:var(--text-2)}
.promo-btn{align-self:flex-start;margin-top:10px;background:linear-gradient(135deg,#7c1e5a,#e11d2a);color:#fff;font-size:14px;font-weight:700;padding:7px 16px;border-radius:20px}   /* ม่วง→แดง เข้ากับแสง ambient ม่วงของพื้นหลัง · ตัวอักษรขาวผ่าน AA ทั้งสองปลาย (ม่วง 9.4:1 · แดง 4.8:1) — ห้ามเปลี่ยนปลายเป็นทองสว่าง (#d4af37) เหลือ 2.1:1 อ่านไม่ออก */

/* ---- มือถือ: การ์ดเหลือ 2 คอลัมน์ (~ครึ่งจอ) → ย่อทั้งชุด + ดันรูปไปมุมขวาล่างให้ข้อความได้เต็มความกว้าง
        บล็อกนี้ต้องอยู่ "หลัง" กฎหลักด้านบนเสมอ — specificity เท่ากัน ถ้าวางก่อนจะโดนกฎหลักทับกลับทั้งหมด ---- */
@media(max-width:600px){
  .promo-grid{grid-template-columns:repeat(2,1fr);gap:10px}
  .promo-card{min-height:140px;padding:14px 13px;background-position:96% 92%;background-size:auto 46%}
  .promo-text{max-width:100%}
  .promo-name{font-size:15px;line-height:1.25}
  .promo-tag{font-size:11px}
  .promo-btn{font-size:12px;padding:5px 12px;margin-top:8px}
}

/* ---------- SECTION TITLE ---------- */
.section-title{text-align:left;color:var(--text);font-size:20px;font-weight:700;margin:24px 0 14px}
/* หัวข้อ section = ตัวอักษร gradient แดง "นิ่ง" (ไม่วิ่ง) · @supports กันเบราว์เซอร์เก่าเห็นตัวหนังสือหาย
   เฉพาะ H1 (.welcome h1) กับหัวข้อ widget (.why-title) เท่านั้นที่ให้เฟดเคลื่อนไหว */
@supports ((-webkit-background-clip:text) or (background-clip:text)){
  .section-title{background-image:linear-gradient(90deg,#f12121 0%,#cb8b69 100%);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;color:transparent}
}
@keyframes gradientShift{0%,100%{background-position:0% center}50%{background-position:100% center}}
@media(prefers-reduced-motion:reduce){.why-title,.welcome h1{animation:none}}   /* คนตั้งค่า "ลดการเคลื่อนไหว" = ไม่วิ่ง (WCAG) */
.row-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:24px 0 14px}
.row-head .section-title{margin:0}
.row-more-link{color:var(--gold);font-size:13px;font-weight:500;white-space:nowrap;flex-shrink:0;transition:color .15s;padding:8px 0 8px 10px;margin:-8px 0 -8px -10px}   /* ทอง (ธีมแดง×ทอง) + ขยายพื้นที่แตะเป็น ~37px โดยไม่ขยับเลย์เอาต์ */
.row-more-link:hover{text-decoration:underline}

/* ---------- PRODUCT GRID + CARD ---------- */
/* ธีมขาว: แถวสินค้าไม่ต้องเป็น "เกาะขาว" อีกแล้ว (พื้นเว็บขาวอยู่แล้ว) — ปล่อยโปร่ง ไม่มีกล่อง/เงา/ขอบไล่สี */
.product-row{position:relative;margin:0 0 22px}
.product-row .row-head,.product-row>.section-title{margin-top:16px}
.product-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:12px}
.product-grid.wide{grid-template-columns:repeat(5,1fr)}
.product-card{background:var(--card-bg);border:1px solid var(--card-bd);border-radius:var(--card-r);overflow:hidden;box-shadow:var(--shadow);transition:transform .15s,border-color .15s,box-shadow .15s;display:flex;flex-direction:column}
.product-card:hover{transform:translateY(-3px);border-color:var(--card-bd-hover);box-shadow:var(--shadow-card)}
.pc-image{position:relative;aspect-ratio:1/1;flex-shrink:0;background:var(--bg-img);display:flex;align-items:center;justify-content:center;overflow:hidden;box-shadow:inset 0 -22px 28px -24px rgba(20,20,30,.12)}   /* เงาในบางๆ ก้นกรอบ = สินค้าดูวางอยู่ในกรอบ มีมิติ */
.pc-image img{width:100%;height:100%;object-fit:cover}
.pc-placeholder{font-size:40px;color:#c7c7d0}
.pc-badge{position:absolute;top:8px;left:8px;background:linear-gradient(135deg,#ff4d4d,#e11d2a);color:#fff;font-size:12px;font-weight:700;padding:3px 9px;border-radius:6px;box-shadow:0 3px 9px rgba(225,29,42,.45)}   /* ลด% = แดงไล่เฉด + เรืองแสงแดง */
.pc-badge.big{font-size:14px;padding:3px 10px}
.pc-out{position:absolute;inset:0;background:rgba(18,18,22,.62);display:flex;align-items:center;justify-content:center;color:#fff;font-size:13px;font-weight:500}   /* .55 ให้ 4.47:1 ไม่ถึง AA บนรูปพื้นสว่าง */
.pc-out.big{font-size:18px}
.pc-body{padding:9px 10px;flex:1;display:flex;flex-direction:column}
.pc-body .pc-price{margin-top:auto}
.pc-name{font-size:14px;font-weight:600;color:#f4f4f6;line-height:1.4;margin-bottom:6px;height:40px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.pc-now{color:#fff;font-weight:800;font-size:19px;letter-spacing:.3px}
.pc-old{color:var(--text-3);text-decoration:line-through;font-size:12px;margin-left:5px}
.pc-flag{position:absolute;top:8px;right:8px;font-size:11px;font-weight:700;padding:3px 9px;border-radius:6px;z-index:2;box-shadow:0 3px 9px rgba(0,0,0,.35);letter-spacing:.2px}
.pc-flag.new{background:linear-gradient(135deg,#2dd36f,#12803a);color:#fff;box-shadow:0 3px 11px rgba(34,197,94,.5)}       /* ใหม่ = เขียวไล่เฉด + เรืองแสงเขียว (ลอยเด่น) */
.pc-flag.best{background:linear-gradient(135deg,#f2d24e,#d4af37);color:#241a00;box-shadow:0 3px 11px rgba(212,175,55,.5)}  /* ขายดี = ทองไล่เฉด + เรืองแสงทอง */

/* ตัวกรอง (หน้าหมวดหมู่) */
.filter-bar{display:flex;flex-wrap:wrap;gap:14px;align-items:flex-end;background:var(--card-bg);border:1px solid var(--card-bd);border-radius:var(--card-r);padding:14px 18px;margin:14px 0}
.filter-bar .fg{display:flex;flex-direction:column;gap:5px}
.filter-bar .fg label{font-size:12px;color:var(--text-3)}
.filter-bar input,.filter-bar select{background:var(--bg-card);border:1px solid var(--border);border-radius:8px;color:var(--text);padding:9px 11px;font:inherit;font-size:13px;outline:none}
.filter-bar input{width:110px}
.filter-bar input:focus,.filter-bar select:focus{border-color:var(--accent)}
.filter-bar .btn-filter{background:var(--accent-3);color:#fff;border:0;border-radius:8px;padding:10px 20px;font:inherit;font-weight:700;cursor:pointer}
.filter-bar .clear{color:var(--text-3);font-size:12px;align-self:center;text-decoration:underline}

/* ---------- ARTICLE GRID ---------- */
.article-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}
.article-card{background:var(--card-bg);border:1px solid var(--card-bd);border-radius:var(--card-r);overflow:hidden;box-shadow:var(--shadow);display:flex;flex-direction:column}
.article-card:hover{border-color:var(--card-bd-hover)}
.ac-image{aspect-ratio:16/9;flex-shrink:0;background:var(--bg-img);display:flex;align-items:center;justify-content:center;overflow:hidden}
.ac-body{flex:1}
.ac-image img{width:100%;height:100%;object-fit:cover}
.ac-image i{font-size:34px;color:#c7c7d0}
.ac-body{padding:12px}
.ac-cat{display:inline-block;background:var(--accent);color:#fff;font-size:11px;font-weight:700;padding:3px 10px;border-radius:10px;margin-bottom:6px}
.ac-title{font-size:14px;font-weight:500;line-height:1.4;margin:0 0 5px}   /* เป็น h2/h3 แล้ว — ล็อก margin ไม่ให้ค่า default ของหัวข้อดันระยะ (หน้าตาเท่าเดิมทุกประการ) */
.ac-excerpt{font-size:12px;color:var(--text-2)}   /* text-3 บนการ์ดมืดได้ 4.3:1 ไม่ถึง AA */

/* ---------- FAQ ---------- */
.faq-list{display:flex;flex-direction:column;gap:8px}   /* เต็มความกว้างตรงแนวหัวข้อ (เดิมลอยกลาง 760px ไม่ตรงกับหัวข้อซ้าย) */
.faq-item{background:var(--bg-3);border:1px solid var(--border);border-radius:10px;padding:0}
.faq-item summary{padding:14px 18px;font-size:14px;font-weight:600;cursor:pointer;list-style:none;display:flex;justify-content:space-between;align-items:center;gap:12px}
.faq-item summary::after{content:'\ea5f';font-family:'tabler-icons';color:var(--text-3);flex:0 0 auto}
.faq-item[open] summary::after{transform:rotate(180deg)}
.faq-item[open] summary{color:var(--accent)}
.faq-answer{padding:0 18px 15px;color:var(--text-2);font-size:13.5px;line-height:1.7}

/* ---------- PAGE HEAD / BREADCRUMB ---------- */
.page-head{padding:18px 0 6px}
.page-head.center{text-align:center;padding:50px 0}
.page-head h1{font-size:22px;font-weight:700}
.breadcrumb{font-size:12px;color:var(--text-3);margin-bottom:8px}
.breadcrumb a{color:var(--accent-ink)}
.pd-crumb{margin:16px 0 2px}   /* breadcrumb บนสุดหน้าสินค้า — เว้นจากแถบเมนูด้านบน */
.muted{color:var(--text-3);font-size:13px}
.sub-chips{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}
.sub-chips a{background:var(--bg-3);border:1px solid var(--border);padding:6px 14px;border-radius:20px;font-size:13px;color:var(--text-2)}
.sub-chips a:hover{border-color:var(--accent);color:var(--accent-ink)}

/* ---------- หน้ารวมแบรนด์ (สินค้าตามแบรนด์) ---------- */
.brand-grid{display:grid;grid-template-columns:repeat(6,1fr);gap:14px;margin-top:18px}
/* การ์ดแบรนด์: โครงเดียวกันทุกใบ — โลโก้/ชื่ออยู่กลาง · จำนวนสินค้าเป็น badge มุมบนขวา */
.brand-card{position:relative;display:flex;align-items:center;justify-content:center;text-align:center;
  background:var(--bg-card);border:1px solid var(--border);border-radius:14px;padding:22px 16px;aspect-ratio:1;overflow:hidden;
  box-shadow:var(--shadow);transition:border-color .15s,box-shadow .15s,transform .15s}
.brand-card:hover{border-color:var(--accent);box-shadow:var(--shadow-card);transform:translateY(-2px)}
.brand-card .bc-name{font-size:20px;font-weight:700;color:var(--text);letter-spacing:.3px;line-height:1.25}
.brand-card .bc-count{position:absolute;top:9px;right:9px;z-index:2;font-size:11px;font-weight:500;color:var(--text-3);
  background:var(--bg-3);padding:2px 9px;border-radius:12px;line-height:1.6}
/* มีรูป: รูปเต็มการ์ดขอบถึงขอบ (object-fit:cover) · ซูมเล็กน้อยเมื่อ hover */
.brand-card.has-img{padding:0}
.brand-card.has-img .bc-logo{position:absolute;inset:0;width:100%;height:100%}
.brand-card.has-img .bc-logo img{width:100%;height:100%;object-fit:cover;transition:transform .3s}
.brand-card.has-img:hover .bc-logo img{transform:scale(1.05)}
.brand-card.has-img .bc-count{background:rgba(255,255,255,.92);color:#181818;box-shadow:0 1px 3px rgba(20,20,30,.18)}   /* ป้ายขาวทับรูปแบรนด์ → ตัวอักษรต้องเข้มคงที่ (var(--text-2) เทาอ่อน = อ่านไม่ออกบนพื้นขาว) */
@media(max-width:1100px){.brand-grid{grid-template-columns:repeat(4,1fr)}}
@media(max-width:720px){.brand-grid{grid-template-columns:repeat(3,1fr)}}
@media(max-width:460px){.brand-grid{grid-template-columns:repeat(2,1fr)}}
.empty{text-align:center;padding:50px 0;color:var(--text-3)}
.pagination{display:flex;flex-wrap:wrap;justify-content:center;gap:6px;margin:24px 0}   /* wrap = กันแถวเลขหน้ายาวเกินจอมือถือแล้ว scroll แนวนอน */
.pagination a{padding:7px 12px;border:1px solid var(--border);border-radius:8px;font-size:13px;color:var(--text-2)}
.pagination a.active{background:var(--dark-2);color:#fff;border-color:var(--dark-2)}

/* ---------- PRODUCT DETAIL ---------- */
.product-detail{display:grid;grid-template-columns:1fr 1fr;gap:30px;padding:20px 0}   /* แบ่ง 50/50 — ซ้าย = รูป · ขวา = ชื่อ/ราคา/คุณสมบัติ/ปุ่มสั่งซื้อ */
.pd-main{position:relative;aspect-ratio:1;background:var(--bg-img);border-radius:12px;display:flex;align-items:center;justify-content:center;overflow:hidden}
.pd-main img{width:100%;height:100%;object-fit:cover}
.pd-thumbs{display:flex;gap:8px;margin-top:10px;overflow-x:auto;flex-wrap:nowrap;padding-bottom:4px}
.pd-thumb{width:64px;height:64px;flex:0 0 auto;border-radius:8px;object-fit:cover;cursor:pointer;border:2px solid transparent;transition:border-color .15s}
.pd-thumb:hover,.pd-thumb.active{border-color:var(--accent)}
.pd-info h1{font-size:22px;font-weight:700;margin:6px 0 6px}
.pd-brand{font-size:13px;color:var(--text-2);margin-bottom:12px}
.pd-brand a{color:var(--accent-ink);font-weight:600}
.pd-brand a:hover{text-decoration:underline}
.pd-price{display:flex;align-items:baseline;gap:10px;margin-bottom:16px}
.pd-now{font-size:26px;font-weight:700;color:var(--price)}
.pd-old{color:var(--text-3);text-decoration:line-through}
.pd-save{background:var(--sale);color:#fff;font-size:12px;padding:2px 8px;border-radius:5px}
.pd-label{font-size:13px;font-weight:500;display:block;margin-bottom:7px}.pd-status{font-size:13px;margin-bottom:16px}
.pd-status.in{color:var(--line)}.pd-status.out{color:#ff4d5e}   /* in=#147a54 เขียวเข้มจมพื้นดำ→เขียวสว่างธีม · out: var(--sale) ได้ 4.18:1 ไม่ถึง AA → แดงสว่างขึ้น (ไม่แตะ token --sale ที่ใช้เป็นพื้น badge อื่น) */
.pd-spec{width:100%;border-collapse:collapse;margin:18px 0;font-size:13px}
.pd-spec th,.pd-spec td{text-align:left;padding:9px 12px;border-bottom:1px solid var(--border)}
.pd-spec th{color:var(--text-3);font-weight:400;width:40%}
/* รายละเอียดสินค้า (สั้น) — ในคอลัมน์ขวา เหนือปุ่มสั่งซื้อ */
.pd-shortdesc{margin:2px 0 16px;color:var(--text-2);font-size:14px;line-height:1.75}
.pd-sec-head{font-size:14px;font-weight:700;color:var(--text);margin:0 0 6px}

/* เกี่ยวกับสินค้า — อยู่ใต้ section รูป+ข้อมูล เต็มความกว้าง (ไม่อยู่ในคอลัมน์ขวาแล้ว) */
.pd-desc{margin:26px 0 0;padding-top:22px;border-top:1px solid var(--border);color:var(--text-2);font-size:14px}
.pd-desc h2{font-size:17px;margin:0 0 10px;color:var(--text)}
/* "เกี่ยวกับสินค้า" — ย่อไว้ก่อน + ปุ่มอ่านเพิ่มเติม (คลาส .clamped/.open ใส่โดย main.js)
   ย่อด้วย max-height ไม่ใช่ display:none — เนื้อหาอยู่ใน DOM ครบเสมอ Google จึงเก็บได้เต็ม ไม่นับเป็นเนื้อหาซ่อน
   ปุ่มใช้คลาส .hc-toggle ร่วมกับกล่องเนื้อหาหน้าแรก = หน้าตา/พฤติกรรมปุ่มตรงกันทั้งเว็บ แก้ที่เดียว */
.pd-about.clamped .pd-about-body{max-height:260px;overflow:hidden;position:relative}
.pd-about.clamped .pd-about-body::after{content:"";position:absolute;left:0;right:0;bottom:0;height:90px;
  background:linear-gradient(180deg,transparent,#151016 92%);pointer-events:none}   /* เฟดเข้าโทนพื้นหน้าเว็บ บอกว่ายังมีต่อ (สีเดียวกับที่กล่องหน้าแรกใช้) */
.pd-about.open .hc-toggle i{transform:rotate(180deg)}

/* ---------- ปุ่มไลน์ / Telegram ---------- */
.btn-line{display:inline-flex;align-items:center;gap:6px;background:var(--line);color:#fff;font-weight:700;text-shadow:0 1px 2px rgba(0,0,0,.3);padding:10px 18px;border-radius:8px}
.btn-line.big{width:100%;justify-content:center;font-size:16px;padding:14px;margin:6px 0}
.btn-tg{display:inline-flex;align-items:center;gap:6px;background:#229ed9;color:#fff;font-weight:700;text-shadow:0 1px 2px rgba(0,0,0,.3);padding:10px 18px;border-radius:8px}
.btn-tg.big{width:100%;justify-content:center;font-size:16px;padding:14px;margin:6px 0}

/* ---------- ARTICLE DETAIL ---------- */
.article-detail{max-width:1240px;margin:0 auto;padding:24px 0}
.article-detail.solo{max-width:900px}
.article-head{margin-bottom:12px}
.article-cover{width:100%;border-radius:16px;margin:0 0 14px;box-shadow:0 8px 30px rgba(0,0,0,.08)}
.article-detail h1{font-size:clamp(26px,4.5vw,34px);font-weight:800;line-height:1.22;margin:0 0 18px;color:var(--text)}
.article-meta{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin:0 0 6px}
.article-meta .muted{margin:0;display:inline-flex;align-items:center;gap:5px;line-height:1}
.article-meta .ac-cat{margin:0;font-size:12px;line-height:1}
.article-content{color:var(--text-2);font-size:16.5px;line-height:1.85}
.article-content h2{color:var(--text);font-size:clamp(20px,3vw,24px);font-weight:700;line-height:1.3;margin:30px 0 10px}
.article-content p{margin-bottom:16px}
.article-content ul,.article-content ol{margin:0 0 16px 22px}
.article-content li{margin-bottom:6px}
.article-content img{display:block;max-width:100%;height:auto;margin:20px auto;border-radius:14px;box-shadow:0 6px 24px rgba(0,0,0,.10)}
.article-content a{color:var(--accent-ink);text-decoration:underline;text-underline-offset:2px;font-weight:500}
.article-content h3{color:var(--text);font-size:20px;font-weight:700;margin:24px 0 8px}
.article-content h4,.article-content h5{color:var(--text);font-weight:600;margin:18px 0 6px}
.article-content blockquote{margin:14px 0;padding:9px 16px;border-left:3px solid var(--accent);background:var(--bg-3);border-radius:0 8px 8px 0;color:var(--text-2)}
.article-content hr{border:0;border-top:1px solid var(--border-2);margin:22px 0}
.article-content figure{margin:14px 0}.article-content figure img{margin:0}
.article-content figcaption{font-size:13px;color:var(--text-3);text-align:center;margin-top:6px}
.article-content table{border-collapse:collapse;width:100%;margin:14px 0;font-size:14px}
.article-content th,.article-content td{border:1px solid var(--border-2);padding:8px 11px;text-align:left}
.article-content th{background:var(--bg-3);font-weight:600;color:var(--text)}
.article-content pre{background:#1e1b2e;color:#e6e1f5;padding:14px 16px;border-radius:8px;overflow:auto;margin:14px 0;font-size:13.5px;line-height:1.5}
.article-content :not(pre)>code{background:var(--bg-3);padding:2px 6px;border-radius:4px;font-size:.92em;color:var(--accent-ink)}
.article-content mark{background:#fff3a3;padding:0 2px;border-radius:2px}
/* ===== layout หน้าบทความ: header เต็มกว้าง + [เนื้อหา | aside สินค้าแนะนำ] ===== */
.article-layout{display:flex;gap:32px;align-items:flex-start}
.article-main{flex:1;min-width:0}
.article-aside{width:300px;flex-shrink:0;position:sticky;top:138px}
.aside-box{background:var(--card-bg);border:1px solid var(--card-bd);border-radius:var(--card-r);padding:14px 16px;box-shadow:var(--shadow)}
.aside-title{font-size:15px;font-weight:700;color:var(--text);display:flex;align-items:center;gap:6px;margin-bottom:6px;padding-bottom:11px;border-bottom:1px solid var(--border)}
.aside-title i{color:var(--accent)}
.aside-prod{display:flex;gap:11px;align-items:center;padding:9px 0;border-bottom:1px solid var(--bg-3)}
.aside-prod:last-of-type{border-bottom:0}
.aside-prod .ap-name{transition:color .15s}
.aside-prod:hover .ap-name{color:var(--accent-ink)}
.ap-img{width:60px;height:60px;flex-shrink:0;border-radius:10px;overflow:hidden;background:var(--bg-img);display:flex;align-items:center;justify-content:center}
.ap-img img{width:100%;height:100%;object-fit:cover}
.ap-img i{color:#c7c7d0;font-size:22px}
.ap-body{min-width:0;flex:1}
.ap-name{font-size:13px;font-weight:500;line-height:1.35;color:var(--text-2);margin-bottom:4px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.ap-price{font-size:14.5px;font-weight:700;color:var(--price)}
.aside-more{display:block;text-align:center;font-size:13px;font-weight:600;color:var(--accent-ink);margin-top:10px;padding-top:11px;border-top:1px solid var(--border)}
@media(max-width:920px){
  .article-detail{max-width:900px}
  .article-layout{flex-direction:column}
  .article-aside{width:100%;position:static;margin-top:8px}
}
.related-products,.related-articles{margin:34px 0 10px}
.related-articles .article-grid{margin-top:2px}

/* ---------- FOOTER (ดำ) ---------- */
.site-footer{background:var(--dark-2);margin-top:40px;padding:34px 24px 16px}
.footer-inner{max-width:1240px;margin:0 auto;display:grid;grid-template-columns:1.4fr 1fr 1fr 1.2fr;gap:28px;align-items:start}
.footer-brand{font-weight:700;font-size:17px;color:#fff;margin-bottom:8px}
.footer-blurb{color:#8e8e99;font-size:12.5px;line-height:1.7;margin-bottom:10px;max-width:30ch}
.footer-col{font-size:13px;color:#b6b6bf}
.footer-col a{display:block;color:#9a9aa3;margin-top:2px;padding:3px 0;transition:color .12s}   /* padding แทน margin บางส่วน = พื้นที่แตะ ~27px (เดิม 21px ชิดกัน) */
.footer-col a:hover{color:#ff6b6b}   /* hover = แดงสว่าง (เดิมทอง) */
.footer-head{color:#f0f0f0;font-weight:700;margin-bottom:8px}   /* หัวข้อ footer = ขาว (เดิมทอง) */
.footer-contacts{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px}
/* ⚠ .footer-col a (บรรทัดบน) = display:block + padding:3px 0 และ specificity สูงกว่า .btn-line/.btn-tg
   → ในบริบท footer ปุ่มจะถูกทับจนแบน ไอคอนหลุดกึ่งกลาง ต้องคืนค่าด้วย selector 2 คลาส (0,2,0 ชนะ 0,1,1) */
.footer-contacts .btn-line,.footer-contacts .btn-tg{
  display:inline-flex;align-items:center;justify-content:center;gap:7px;
  padding:10px 18px;line-height:1.2;color:#fff;margin-top:0}
/* .footer-col a:hover = แดง (0,2,1) ทับปุ่มจนตัวอักษรบนพื้นเขียว/ฟ้าเป็นแดงตอนชี้ — ต้อง (0,3,0) ถึงจะคุมอยู่ */
.footer-contacts .btn-line:hover,.footer-contacts .btn-tg:hover{color:#fff}
/* ไอคอนแบรนด์ในปุ่มติดต่อ — เดิมไม่ได้สั่งขนาด เลยผันตาม font-size ที่สืบทอดมา (footer เล็กกว่าหน้าสินค้า ไอคอนเลยหด)
   + glyph สองตัวน้ำหนักภาพไม่เท่ากัน: bubble ของ LINE ทึบเต็มกรอบ · plane ของ Telegram เฉียงโปร่งดูเล็กกว่า → ชดเชยให้ใหญ่ขึ้น 1px จะดูสมดุลกว่า */
.btn-line i,.btn-tg i,.btn-line-sm i{font-size:18px;line-height:1;flex:0 0 auto}   /* กัน .footer-col a (เทา) มาทับ = ตัวอักษร/ไอคอนขาวชัด */
.footer-foot{max-width:1240px;margin:26px auto 0;padding-top:14px;border-top:1px solid rgba(255,255,255,.08);
  display:flex;align-items:center;justify-content:space-between;gap:8px;flex-wrap:wrap}
.copyright{color:#8f8f9a;font-size:11.5px;margin:0}   /* เดิม #76767f ได้ 4.2:1 ไม่ถึง AA */
.footer-age{color:#8f8f9a;font-size:11.5px;margin:0;display:flex;align-items:center;gap:5px}
.footer-age i{font-size:13px;color:#e0a020}   /* อำพันเข้ม #9a6a10 จมพื้นดำ footer · ใช้อำพันสว่างขึ้น (โทนเตือน 20+) */
@media(max-width:900px){.site-footer{padding:30px 20px 16px}.footer-inner{grid-template-columns:1fr 1fr;gap:26px 22px}}
/* มือถือ: แบรนด์+ติดต่อ เต็มกว้าง · เมนู+หมวดหมู่ เรียงคู่ 2 คอลัมน์ · เว้นล่างพ้นปุ่มลอย */
@media(max-width:520px){
  .site-footer{padding:28px 18px 26px}
  .footer-inner{grid-template-columns:1fr 1fr;gap:22px 16px}
  .footer-about,.footer-contact-col{grid-column:1 / -1}
  .footer-blurb{max-width:none}
  .footer-contacts{margin-top:12px}
  .footer-foot{flex-direction:column;text-align:center;gap:6px;margin-top:18px}
}

/* ---------- ปุ่มไลน์ลอย ---------- */
.contact-floats{position:fixed;right:18px;bottom:18px;z-index:40;display:flex;flex-direction:column;gap:12px}
.contact-float{width:54px;height:54px;border-radius:50%;display:flex;align-items:center;justify-content:center;color:#fff;font-size:28px;transition:transform .15s,box-shadow .15s}
.contact-float:hover{transform:scale(1.08)}
.contact-float.line{background:var(--line);box-shadow:0 6px 18px rgba(6,199,85,.32)}
.contact-float.tg{background:#229ed9;box-shadow:0 6px 18px rgba(34,158,217,.32)}
.contact-float img{width:100%;height:100%;border-radius:50%;object-fit:cover;display:block}   /* ไอคอน LINE/Telegram เป็นรูปวงกลมเต็มปุ่ม (พื้นสีข้างล่างช่วยอุดขอบ) */

/* ---------- ขัดเกลา: hover / transition / empty state ---------- */
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
.btn-line,.btn-line-sm{transition:filter .15s,transform .15s,box-shadow .15s}
.btn-line:hover{filter:brightness(1.05);box-shadow:0 4px 14px rgba(6,199,85,.3)}
.btn-line.big:hover{transform:translateY(-1px)}
.btn-line-sm:hover{filter:brightness(1.06)}
.hero-btn{transition:filter .15s,transform .15s,box-shadow .15s}
.hero-btn:hover{filter:brightness(1.06);transform:translateY(-1px);box-shadow:0 6px 16px rgba(245,130,31,.35)}
.cat-toggle,.btn-filter{transition:filter .15s}
.cat-toggle:hover,.btn-filter:hover{filter:brightness(1.06)}
.hero-arrow{transition:filter .15s}
.hero-arrow:hover{filter:brightness(1.08)}
.pagination a{transition:border-color .15s,color .15s}
.pagination a:hover{border-color:var(--accent);color:var(--accent-ink)}
.sub-chips a{transition:border-color .15s,color .15s}
.article-card{transition:transform .15s,border-color .15s,box-shadow .15s}
.article-card:hover{transform:translateY(-3px);box-shadow:var(--shadow-card)}
.ac-title{transition:color .15s}
.article-card:hover .ac-title{color:var(--accent-ink)}
.nav-links a{border-bottom:2px solid transparent;transition:color .15s,border-color .15s}
/* (เอาเส้นขีดใต้หัวข้อ section ออกตามที่ผู้ใช้ขอ) */
.product-swiper,.article-swiper{position:relative;padding-bottom:16px}
.product-swiper .swiper-slide,.article-swiper .swiper-slide{height:auto;padding-bottom:2px}
.product-swiper .swiper-slide .product-card,.article-swiper .swiper-slide .article-card{height:100%}
.product-swiper .swiper-button-next,.product-swiper .swiper-button-prev,
.article-swiper .swiper-button-next,.article-swiper .swiper-button-prev{color:#fff;background:var(--arrow-bg);width:36px;height:36px;border-radius:50%;border:0;box-shadow:0 2px 10px rgba(0,0,0,.4);transition:filter .15s}   /* สีชุดเดียวกับลูกศรแบนเนอร์ · ตัด border ทิ้ง (แบนเนอร์ก็ border:0 — ขอบเทาคาดรอบปุ่มสีสดจะดูแปลก) · เงายังเก็บไว้ เพราะปุ่มนี้ลอยทับการ์ดสินค้า ไม่ใช่ทับรูปแบนเนอร์ */
.product-swiper .swiper-button-next::after,.product-swiper .swiper-button-prev::after,
.article-swiper .swiper-button-next::after,.article-swiper .swiper-button-prev::after{font-size:15px;font-weight:700}
.product-swiper .swiper-button-next:hover,.product-swiper .swiper-button-prev:hover,
.article-swiper .swiper-button-next:hover,.article-swiper .swiper-button-prev:hover{filter:brightness(1.08)}   /* hover เท่ากับ .hero-arrow:hover — สีเหมือนกันแล้วก็ควรตอบสนองเหมือนกัน */
.product-swiper .swiper-button-disabled,.article-swiper .swiper-button-disabled{opacity:.4}
.faq-item summary{transition:color .15s}
.faq-item summary:hover{color:var(--accent)}
.faq-item summary::after{transition:transform .2s}
/* empty state: สินค้า/บทความที่ไม่มีรูป */
.pc-image{background:radial-gradient(circle at 50% 38%,#20202a,#16161b)}
.pc-image img{background:var(--bg-img)}
.pc-placeholder{font-size:46px;color:#cccdd6;opacity:.9}
.ac-image{background:radial-gradient(circle at 50% 40%,#20202a,#16161b)}

/* ---------- มือถือ ---------- */
@media(max-width:900px){
  .product-grid,.product-grid.wide{grid-template-columns:repeat(3,1fr)}
  .article-grid{grid-template-columns:repeat(2,1fr)}
  .product-detail{grid-template-columns:1fr;gap:18px}
  .features{grid-template-columns:repeat(2,1fr)}
}
/* จอกลาง (แท็บเล็ต) — ที่ไม่พอให้เมนูอยู่กลางแบบ 3 คอลัมน์ ปุ่มหมวดหมู่จะตกบรรทัด
   จึงสลับเป็นเลย์เอาต์ ปุ่มซ้าย + ลิงก์เลื่อนแนวนอน แบบเดียวกับมือถือ ตั้งแต่ 960px ลงมา */
@media(max-width:960px){
  .header-nav{display:grid;grid-template-columns:auto 1fr;gap:12px;align-items:center}
  .cat-dropdown{justify-self:start}
  .nav-spacer{display:none}
  .nav-links{justify-self:stretch;display:flex;gap:18px;overflow-x:auto;white-space:nowrap;-webkit-overflow-scrolling:touch;scrollbar-width:none}
  .nav-links::-webkit-scrollbar{display:none}
  .nav-links a{padding:8px 0;flex:0 0 auto}
}
@media(max-width:600px){
  .header-top{display:flex;flex-wrap:wrap;padding:8px 14px;gap:10px 12px}   /* กระชับ: เดิม padding 11 + gap 16 ทำ header กินจอ 23% */
  .logo{width:auto}
  .logo img{max-height:36px!important}   /* ทับ inline style จาก setting logo_height (ใช้กับเดสก์ท็อป) — มือถือขอเตี้ยลง */
  .search-box{order:3;max-width:none;width:100%}
  .header-nav{padding:6px 14px}
  /* (กฎ accordion ของ .cat-menu มือถือถูกถอด — <=600 ใช้ drawer #mDrawer แทน, .header-nav-wrap ถูกซ่อนทั้งก้อน
     ส่วน toggle .cat-li.open ใน main.js ยังใช้กับ dropdown ช่วง 601-760/จอสัมผัส ห้ามลบ) */
  .site-main{padding:0 14px 40px}
  .hero-band{padding:14px}   /* จอเล็ก: padding ข้างเท่า .site-main (14px) ให้แบนเนอร์กว้างเท่า content อื่น */
  .product-grid,.product-grid.wide{grid-template-columns:repeat(2,1fr)}
  .article-grid{grid-template-columns:1fr}
  .hero-slide{padding:14px 16px}
  .hero-slide h2{font-size:18px}
  .hero-slide p{font-size:13px}
  .welcome h1{font-size:21px}
  .pagination a,.sub-chips a{min-height:40px;display:inline-flex;align-items:center}
}

/* ============================================================
   ✦ ธีม ขาว-ดำ-แดง — ส่วนที่ต้องทับกฎเดิม
   หลัก: พื้นขาว การ์ดขาวมีขอบบาง · header แดง · footer ดำ · accent แดง
   ทองใช้ได้เฉพาะบนพื้นมืด (footer/drawer) — บนพื้นขาวใช้แดงแทนเสมอ
   ============================================================ */
/* หัวเว็บ = ดำ · ตัวอักษรแดง (สีจริงอยู่ที่ --hdr / --hdr-2 / --hdr-text ใน :root)
   ช่องค้นหา = input โปร่งเข้มบนหัวดำ (กฎ base .search-box จัดการ — ธีมดำ) */

/* การ์ด = ขาว ขอบบาง เงานุ่ม (ตัดกับพื้นขาวด้วยขอบ ไม่ใช่สีพื้น) */
.product-card,.article-card,.feature,.faq-item{
  background:var(--card-bg);                /* ชุดการ์ดกลาง (:root --card-*) — บล็อกนี้อยู่ท้ายไฟล์จึงเป็นตัวตัดสินจริง ต้องใช้ token ด้วย ไม่งั้นทับกฎด้านบนกลับเป็นพื้นทึบ */
  border:1px solid var(--card-bd);
  box-shadow:var(--shadow)}
/* hover: การ์ดยกลอย + เงาชัดขึ้น (คงขอบเดิม ไม่ทำรูปซีด ตามที่เคยไม่ชอบ) */
.product-card,.article-card{transition:transform .2s ease,box-shadow .2s ease}
.product-card:hover,.article-card:hover{
  transform:translateY(-4px);
  border-color:var(--card-bd-hover);   /* hover = rim สว่างขึ้น เข้าชุดกับขอบการ์ดกลาง */
  box-shadow:var(--shadow-card)}
.article-card:hover .ac-title{color:var(--accent)}
/* swiper เป็น overflow:hidden ชิดหัวการ์ดพอดี → hover ยกแล้วหัว/เงาบนโดนตัด — เผื่อหัว 10px แบบเลย์เอาต์ไม่ขยับ */
.product-swiper,.article-swiper,.promo-swiper{padding-top:10px;margin-top:-10px}
.promo-card:hover{box-shadow:var(--shadow-card)}

/* ทองบนพื้นขาวอ่านไม่ออก (คอนทราสต์ ~2:1) → ใช้แดงแทนทุกจุดที่อยู่บนพื้นขาว */
.row-more-link,.article-row .row-more-link{color:var(--gold)}
.faq-item summary:hover,.faq-item[open] summary{color:var(--accent)}
.hc-body a{color:var(--accent-ink)}   /* --accent-3 (#c1121f) บนการ์ดดำได้แค่ 2.85:1 · ink คือโทนลิงก์บนพื้นเข้ม (ตรงกับ breadcrumb/pd-brand/article-content) */
.hc-toggle:hover{border-color:var(--accent);background:rgba(225,29,42,.06)}

/* footer = ดำ (ตัวแปรในนี้ยัง re-declare เป็นชุดมืด ทองจึงยังใช้ได้) */
/* footer: เส้นคั่นบนแบบไล่สี จางที่ขอบซ้าย-ขวา เข้มช่วงกลาง (แดง→ทอง)
   ปลายโปร่งใสทั้งสองข้าง = เส้นไม่ตัดจอเป็นท่อนแข็ง ดูลอยขึ้น โดยเฉพาะบนจอกว้าง
   ใช้ background-image เป็นแถบ 2px เกาะขอบบน แทน border-image — คุมความหนา/ตำแหน่งได้ตรงกว่า และไม่ชนกับ background-color */
.site-footer{
  background-color:var(--dark);
  background-image:linear-gradient(90deg,transparent 0%,#e11d2a 30%,#d4af37 70%,transparent 100%);
  background-size:100% 1px;
  background-position:top;
  background-repeat:no-repeat;
  border-top:0}

/* บล็อกเนื้อหา SEO หน้าแรก (case 'content')
   2 โหมด (main.js เลือกให้ตามขนาดจอ · เนื้อหาอยู่ใน DOM ครบทั้ง 2 โหมด = SEO ไม่เสีย):
   - เดสก์ท็อป  -> .hc-wrap.is-scroll = กล่องสูงจำกัด เลื่อนอ่านข้างใน
   - มือถือ/จอเตี้ย -> .home-content.clamped = ย่อ + ปุ่ม "อ่านเพิ่มเติม" */
.home-content{margin:22px 0 26px;scroll-margin-top:96px}   /* ไม่มีกรอบ/พื้น/ขอบ = แสดงเนื้อหาปกติ เหลือแค่ scroll ให้เลื่อน · เดิม: กล่องกึ่งใส bg rgba(255,255,255,.035)+border */
.home-content>.section-title{margin:6px 0 14px}
/* ตัวห่อ "ไม่เลื่อน" = ที่เกาะของเงาโหมดกล่อง (ห้ามใส่ max-width — แถบเลื่อนจะไปโผล่กลางการ์ด ไม่ชิดขอบ) */
.hc-wrap{position:relative}
.hc-body{color:var(--text-2);font-size:15px;line-height:1.8;overflow-wrap:anywhere}
.hc-body h2,.hc-body h3,.hc-body h4{color:var(--text);font-weight:700;line-height:1.35;margin:24px 0 9px}
.hc-body h2{font-size:19px}.hc-body h3{font-size:18px}.hc-body h4{font-size:15.5px}
.hc-body p{margin:0 0 13px}
.hc-body ul,.hc-body ol{margin:2px 0 16px;padding-left:22px}
.hc-body li{margin:6px 0}
.hc-body strong,.hc-body b{color:var(--text)}
/* หัวข้อตัวแรกในเนื้อหาไม่ต้องเว้นบน — การ์ด/กล่องมี padding ของตัวเองแล้ว (ไม่งั้นหัวข้อลอยห่างขอบ 40px) */
.hc-body>:first-child{margin-top:0}
/* TinyMCE แปะตารางมาพร้อม style="width:600px" ได้ (pv_safe_style อนุญาต width) → ให้ล้นในกล่องตัวเอง ไม่ดันทั้งหน้าให้เลื่อนแนวนอน */
.hc-body table,.hc-body pre{display:block;max-width:100%;overflow-x:auto}

/* ---- โหมดกล่องเลื่อน (เดสก์ท็อป) — JS ใส่ .is-scroll พร้อม tabindex/role/aria เสมอในฟังก์ชันเดียวกัน
        ห้ามแยก max-height ออกมาเป็นกฎลอยๆ: กล่องจะเลื่อนได้ทั้งที่ยังไม่มี tabindex = คีย์บอร์ดเข้าไม่ถึงเนื้อหา (WCAG 2.1.1) ---- */
.hc-wrap.is-scroll .hc-body{
  max-height:min(30em,62vh);
  max-height:min(30em,62svh);   /* 30em = 450px ≈ 16 บรรทัด · ใช้ em ไม่ใช่ px เพื่อให้ซูมตัวอักษรแล้วยังได้บรรทัดเท่าเดิม (WCAG 1.4.4)
                                   svh = ความสูงจอตอนแถบ URL โผล่ (vh คิดจากตอนแถบซ่อน = กล่องสูงเกินที่เห็นจริง) · บรรทัด vh ข้างบนคือ fallback ห้ามลบ */
  overflow-y:auto;
  overscroll-behavior-y:auto;   /* ห้ามเปลี่ยนเป็น contain — contain = เลื่อนสุดกล่องแล้วหน้าไม่เลื่อนต่อ = สร้างกับดักขึ้นมาเอง */
  scrollbar-width:thin;scrollbar-color:rgba(225,29,42,.55) transparent;   /* แถบเลื่อนสีแดง เข้าธีม (Firefox) — thin ไม่มีปุ่มลูกศรอยู่แล้ว */
  background:var(--card-bg);   /* ใช้ชุดการ์ดกลาง (:root --card-*) เหมือนการ์ดอื่นทั้งเว็บ */
  padding:16px 18px 16px 20px;   /* บน-ล่างเท่ากัน · ขวา 18px กันตัวหนังสือชนแถบเลื่อน · ซ้าย 20px ให้ตัวหนังสือมีขอบหายใจ */
  scroll-padding:16px 0;
  border:1px solid var(--card-bd);border-radius:var(--card-r)}   /* ขอบ+มุมโค้งเดียวกับการ์ดอื่น · เดิมเป็นวงแหวน gradient แดง→ทอง (mask ที่ ::before) ซึ่งเป็นกล่องเดียวในเว็บที่ต่างจากชาวบ้าน */
/* แถบเลื่อนแดง (Chrome/Safari — scrollbar-color ยังไม่รองรับ) */
.hc-wrap.is-scroll .hc-body::-webkit-scrollbar{width:8px}
.hc-wrap.is-scroll .hc-body::-webkit-scrollbar-button{display:none;width:0;height:0}   /* เอาปุ่มลูกศรบน/ล่างออก (ไม่งั้น Windows Chromium ขึ้นลูกศร default) */
.hc-wrap.is-scroll .hc-body::-webkit-scrollbar-track{background:transparent}
.hc-wrap.is-scroll .hc-body::-webkit-scrollbar-thumb{background:rgba(225,29,42,.55);border-radius:8px}   /* แดง เข้าธีม เห็นชัดแต่ไม่ชนขอบ */
.hc-wrap.is-scroll .hc-body::-webkit-scrollbar-thumb:hover{background:rgba(225,29,42,.78)}
/* กล่องเลื่อน = BFC ใหม่ margin ตัวสุดท้ายไม่ยุบออก -> บวกทับ padding ล่าง ทำให้ระยะบน-ล่างไม่เท่ากัน */
.hc-wrap.is-scroll .hc-body>:last-child{margin-bottom:0}
/* เงา "ยังมีต่อ" ต้องเกาะตัวห่อ ห้ามย้ายกลับไปเป็น .hc-body::after:
   abspos ในกล่อง scroll เกาะ padding box ซึ่งตรึงไว้ที่ scrollTop 0 → ตอนบนสุดดูถูกต้องเป๊ะ แต่พอเลื่อนลงเงาจะลอยขึ้นแล้วหลุดหายไปข้างบน
   (โหมด .clamped ข้างล่างรอดเพราะใช้ overflow:hidden → scrollTop ค้างที่ 0 ตลอด) */
.hc-wrap.is-scroll::after{content:"";position:absolute;left:1px;right:1px;bottom:1px;height:48px;
  background:linear-gradient(180deg,transparent,#151016 92%);pointer-events:none;opacity:1;transition:opacity .12s;
  border-radius:0 0 13px 13px}   /* inset 1px + โค้งมุมล่างตาม --card-r (14px) ลบขอบ 1px = 13px · เงาไม่โผล่ทับกรอบ/มุมโค้ง */
/* เลื่อนถึงล่างสุดแล้วเงาต้องหาย (JS ใส่ .at-end) — ไม่งั้นต้องดัน padding-bottom หนีเงา แล้วได้รูโบ๋ 70px ใต้บรรทัดสุดท้ายแทน */
.hc-wrap.is-scroll.at-end::after{opacity:0}
.hc-wrap.is-scroll .hc-body:focus-visible{outline:2px solid var(--accent);outline-offset:2px}   /* offset ดันวงโฟกัสออกนอกตัวห่อ เงาจึงทับไม่ได้ */

/* ---- โหมดย่อ + ปุ่ม (มือถือ/จอเตี้ย) — จอสัมผัสไม่เอากล่องเลื่อน: เนื้อ ~2000px ในกล่อง ~350px = ปัดซ้ำ ~6 รอบกว่าจะพ้น
        (เบราว์เซอร์ล็อกนิ้วไว้กับตัวที่เริ่มปัด) แล้ว faq/บทความอยู่ใต้บล็อกนี้พอดี ---- */
.home-content.clamped .hc-body{max-height:250px;overflow:hidden;position:relative}
.home-content.clamped .hc-body::after{content:"";position:absolute;left:0;right:0;bottom:0;height:90px;
  background:linear-gradient(180deg,transparent,#151016 92%);pointer-events:none}   /* เฟดเข้าโทนกล่องกึ่งใส (โทนเดียวกับการ์ด) */
.hc-toggle{display:block;margin:12px auto 0;background:none;border:1px solid var(--border-2);color:var(--text);
  font:inherit;font-size:13.5px;font-weight:600;padding:8px 22px;border-radius:20px;cursor:pointer;transition:border-color .15s,background .15s}
/* ต้องมีบรรทัดนี้: display:block ข้างบนเป็น author style ซึ่งชนะ [hidden]{display:none} ของเบราว์เซอร์เสมอ
   -> ถ้าไม่มี attribute hidden จะไม่มีผลเลย ปุ่มโผล่ตลอดแม้ JS สั่งซ่อน (บั๊กนี้มีมาแต่เดิม) */
.hc-toggle[hidden]{display:none}
.hc-toggle i{font-size:14px;vertical-align:-2px;transition:transform .2s}
.home-content.open .hc-toggle i{transform:rotate(180deg)}
@media(max-width:600px){
  /* .home-content ไม่มีกรอบ/พื้นแล้ว → padding เดิมกินความกว้างเปล่าๆ เพราะซ้อนกับ padding ของ .hc-body + container */
  .home-content{padding:0}
  .hc-wrap.is-scroll .hc-body{padding:14px 14px 14px 16px}
}
@media(forced-colors:active){.hc-wrap.is-scroll::after,.home-content.clamped .hc-body::after,.pd-about.clamped .pd-about-body::after{display:none}}   /* โหมดคอนทราสต์สูงทิ้ง gradient → เหลือแถบทึบพาดตัวหนังสือ */
@media print{   /* พิมพ์ = เอาเนื้อหาเต็ม ไม่เอากล่อง/ปุ่ม */
  .hc-wrap.is-scroll .hc-body{max-height:none;overflow:visible;border:0;padding-bottom:0}
  .home-content.clamped .hc-body{max-height:none;overflow:visible}
  .hc-wrap.is-scroll::after,.home-content.clamped .hc-body::after,.hc-toggle{display:none}
}

/* ==== มือถือ: ปรับตามหลักสากล (WCAG touch target / จอสัมผัส) ==== */
.search-box{cursor:text}
@media(max-width:760px){
  /* จุดเลื่อนแบนเนอร์: พื้นที่แตะ 24px จัดการที่ .hero-slider (::after) แล้ว — ไม่ต้อง override ขนาดที่นี่ (กันไปทับ 24px) */
  /* จอสัมผัสใช้ปัดเลื่อนการ์ดอยู่แล้ว — ซ่อนลูกศรที่เล็ก (36px) และบังการ์ด */
  .product-swiper .swiper-button-prev,.product-swiper .swiper-button-next,
  .article-swiper .swiper-button-prev,.article-swiper .swiper-button-next{display:none}
  /* แบนเนอร์ก็เช่นกัน: ลูกศรแดง 38px ใหญ่เทียบแบนเนอร์เตี้ย — มีปัด + จุด + เลื่อนเองอยู่แล้ว */
  .hero-arrow{display:none}
}

/* ==== มือถือ (<=600): header ชั้นเดียว [เมนู | โลโก้ | ค้นหา] + drawer ==== */
.m-icon-btn,.m-backdrop,.m-drawer{display:none}
@media(max-width:600px){
  .m-icon-btn{display:flex;align-items:center;justify-content:center;width:44px;height:44px;border:0;border-radius:11px;background:rgba(0,0,0,.22);color:#fff;font-size:21px;cursor:pointer;padding:0}
  .header-top{display:grid;grid-template-columns:44px 1fr 44px;align-items:center;gap:10px;padding:8px 12px}
  .header-top .logo{justify-self:center!important;margin:0}
  .header-top .search-box,.header-contacts{display:none}
  .header-nav-wrap{display:none}
  /* กดไอคอนค้นหา → กล่องพิมพ์กางใต้ header */
  body.m-search-open .header-top .search-box{display:flex;position:absolute;top:calc(100% + 8px);left:10px;right:10px;width:auto;justify-self:stretch;z-index:60;box-shadow:0 12px 32px rgba(0,0,0,.5)}   /* justify-self:stretch — base เป็น center จะหด abspos item ในกริดเหลือแค่ intrinsic */
  /* drawer เลื่อนจากซ้าย (เหนือ header z50 / ปุ่มลอย z40) */
  .m-backdrop{display:block;position:fixed;inset:0;background:rgba(0,0,0,.55);z-index:90}
  .m-backdrop[hidden]{display:none}
  /* drawer = พื้นมืดบนธีมขาว → re-declare ตัวแปรข้อความกลับเป็นชุดสว่างทั้งก้อน
     (ไม่งั้นลูกๆ ที่ใช้ var(--text) จะได้สีดำ = ดำบนดำ มองไม่เห็น) */
  .m-drawer{--text:#ebebf1;--text-2:#b9b9c5;--text-3:#90909c;--border:#2c2a35;
    display:flex;flex-direction:column;position:fixed;top:0;left:0;bottom:0;width:min(84vw,320px);z-index:95;
    background:linear-gradient(180deg,#1f1d27,#141318);border-right:1px solid rgba(255,255,255,.08);
    transform:translateX(-103%);visibility:hidden;transition:transform .25s ease,visibility .25s;overflow:hidden}   /* visibility:hidden = drawer ปิดต้องหลุดจาก tab order/screen reader (transform อย่างเดียวไม่ตัด) · overflow:hidden ที่ตัวนอก เพราะย้ายการสกรอลล์ไปที่ .m-drawer-body แทน ปุ่มท้ายจะได้ไม่เลื่อนหนี */
  /* หัว/ท้ายอยู่กับที่ ตรงกลางสกรอลล์ — จอ 667px (iPhone SE/8) เนื้อหาล้นแน่ ถ้าปล่อยให้ทั้งก้อนสกรอลล์ ปุ่มติดต่อจะจมอยู่ล่างสุดจนไม่มีใครเห็น */
  .m-drawer-body{flex:1 1 auto;overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;padding-bottom:8px}
  .m-drawer-foot{flex:0 0 auto;padding:10px 12px;padding-bottom:calc(10px + env(safe-area-inset-bottom));border-top:1px solid rgba(255,255,255,.08);background:#141318}   /* safe-area = กันปุ่มโดนแถบขีดล่างของ iPhone ทับ */
  .m-drawer-cta{display:flex;align-items:center;justify-content:center;gap:8px;background:var(--line);color:#fff;font-weight:700;font-size:15px;padding:13px;border-radius:11px;box-shadow:0 3px 12px rgba(6,199,85,.32)}
  .m-drawer-cta i{font-size:20px;flex:0 0 auto}
  body.m-drawer-open .m-drawer{transform:none;visibility:visible}
  /* position:fixed + top ติดลบ (ตั้งใน JS) = ล็อกสกรอลจริงบน iOS Safari (overflow:hidden เดี่ยวๆ iOS ไม่เคารพ) */
  body.m-drawer-open{position:fixed;left:0;right:0;width:100%;overflow:hidden}
  .m-drawer-head{display:flex;align-items:center;justify-content:space-between;padding:12px 12px 12px 18px;border-bottom:1px solid rgba(255,255,255,.08);color:#fff;font-weight:700;font-size:16px}
  .m-drawer-close{width:44px;height:44px;border:0;background:none;color:#fff;font-size:21px;cursor:pointer;border-radius:10px}
  .m-drawer-nav{display:flex;flex-direction:column;padding:8px 8px 0}
  .m-drawer-nav a{display:flex;align-items:center;gap:11px;color:var(--text);padding:11px 12px;border-radius:9px;font-weight:500}
  /* ไอคอนกว้างคงที่ 22px = ตัวหนังสือทุกบรรทัดเริ่มตรงแนวเดียวกัน ต่อให้ไอคอนกว้างไม่เท่ากัน */
  .m-drawer-nav a i{font-size:19px;width:22px;text-align:center;flex:0 0 auto;color:var(--text-3)}
  .m-drawer-nav a.active{color:#ff6b6b;background:rgba(255,255,255,.06)}   /* active = แดงสว่าง (เดิมทอง) */
  .m-drawer-nav a.active i{color:#ff6b6b}
  /* หัวกลุ่ม — เส้นลากต่อท้ายช่วยตัดสายตาเป็นช่วงๆ ชัดกว่าตัวหนังสือลอยเดี่ยวๆ */
  .m-drawer-sub{display:flex;align-items:center;gap:9px;color:var(--text-3);font-size:11.5px;font-weight:700;letter-spacing:.04em;margin:15px 20px 3px}
  .m-drawer-sub::after{content:"";flex:1;border-top:1px solid rgba(255,255,255,.09)}
  .m-drawer-cats{display:flex;flex-direction:column;padding:0 8px}
  .m-cat{display:grid;grid-template-columns:1fr auto;align-items:center}
  /* เยื้องซ้าย 45px ให้ชื่อหมวดตรงแนวตัวหนังสือของกลุ่มที่มีไอคอน (12 padding + 22 ไอคอน + 11 gap)
     หมวดหมู่ไม่ใส่ไอคอนเพราะชื่อหมวดสื่อความหมายชัดอยู่แล้ว แต่ถ้าไม่เยื้องจะเห็นเป็นขั้นบันไดไม่ตรงแนวกัน */
  .m-cat-link{color:var(--text);padding:11px 12px 11px 45px;border-radius:9px;display:flex;align-items:center;gap:8px;min-width:0}
  .m-cat-toggle{width:44px;height:44px;border:0;background:none;color:var(--text-2);font-size:16px;cursor:pointer;border-radius:9px}
  .m-cat-toggle i{transition:transform .2s;display:inline-block}
  .m-cat.open .m-cat-toggle i{transform:rotate(180deg)}
  .m-cat-kids{grid-column:1 / -1;display:flex;flex-direction:column;border-left:2px solid rgba(255,255,255,.1);margin:0 0 6px 16px;padding-left:4px}
  .m-cat-kids a{color:var(--text-2);padding:9px 12px;border-radius:8px}
  .m-cat-kids[hidden]{display:none}
  /* กรอบ 2:1 มาจากกฎ base แล้ว (เท่ากันทุกจอ = รูปเต็มใบ ไม่ตัด) — ที่นี่แค่บีบ margin ให้พอดีจอเล็ก
     ถ้ามีรูปมือถือแยก (ตัวเลือกเสริม ต้อง 2:1 เช่น 1080x540) ก็สลับมาใช้ที่นี่ ไม่มีก็ตกไปใช้รูปหลัก (ตั้งจาก PHP) */
  .hero-slider{margin:12px 0 14px}
  .hero-slide{background-image:var(--hero-m)}
}

/* จอแคบ (<=480): คง 2x2 ไว้ (ผู้ใช้ขอ) — บีบไอคอน/ช่องไฟ/ขอบใน คืนความกว้างให้ข้อความ ตัดบรรทัดน้อยลง
   ความสูงเท่ากันทุกใบมาจาก grid-auto-rows:1fr ที่กฎหลักแล้ว */
@media(max-width:480px){
  .features{gap:8px}
  .feature{padding:12px 11px;gap:9px}
  .feature i{font-size:24px}
  .ft-title{font-size:13.5px}
  .ft-sub{font-size:11.5px}
}
